diff options
| author | Mike Vink <ivi@vinkies.net> | 2025-05-29 16:29:27 +0200 |
|---|---|---|
| committer | Mike Vink <ivi@vinkies.net> | 2025-05-30 09:48:22 +0200 |
| commit | 1f7447307a7f8f0db4c10272d3778cca1ad4a620 (patch) | |
| tree | a42351ed2d38f36456e7075c06a5f28ede07db21 /vendor/gen/https | |
| parent | 215fa9977743dbeef78e0f15bb0b642bffd7a0ac (diff) | |
vendor
Diffstat (limited to 'vendor/gen/https')
476 files changed, 52614 insertions, 0 deletions
diff --git a/vendor/gen/https/deno.land/03169f9846c51b5b3d43a8ebf91c47c38526c0e378672be639bb0f701097f433.js b/vendor/gen/https/deno.land/03169f9846c51b5b3d43a8ebf91c47c38526c0e378672be639bb0f701097f433.js new file mode 100644 index 0000000..c4debba --- /dev/null +++ b/vendor/gen/https/deno.land/03169f9846c51b5b3d43a8ebf91c47c38526c0e378672be639bb0f701097f433.js @@ -0,0 +1,8 @@ +import { StringType } from "./string.ts"; +/** String type with auto completion of sibling command names. */ export class CommandType extends StringType { + /** Complete sub-command names of global parent command. */ complete(_cmd, parent) { + return parent?.getCommands(false).map((cmd)=>cmd.getName()) || []; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC90eXBlcy9jb21tYW5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29tbWFuZCB9IGZyb20gXCIuLi9jb21tYW5kLnRzXCI7XG5pbXBvcnQgeyBTdHJpbmdUeXBlIH0gZnJvbSBcIi4vc3RyaW5nLnRzXCI7XG5cbi8qKiBTdHJpbmcgdHlwZSB3aXRoIGF1dG8gY29tcGxldGlvbiBvZiBzaWJsaW5nIGNvbW1hbmQgbmFtZXMuICovXG5leHBvcnQgY2xhc3MgQ29tbWFuZFR5cGUgZXh0ZW5kcyBTdHJpbmdUeXBlIHtcbiAgLyoqIENvbXBsZXRlIHN1Yi1jb21tYW5kIG5hbWVzIG9mIGdsb2JhbCBwYXJlbnQgY29tbWFuZC4gKi9cbiAgcHVibGljIGNvbXBsZXRlKF9jbWQ6IENvbW1hbmQsIHBhcmVudD86IENvbW1hbmQpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHBhcmVudD8uZ2V0Q29tbWFuZHMoZmFsc2UpXG4gICAgICAubWFwKChjbWQ6IENvbW1hbmQpID0+IGNtZC5nZXROYW1lKCkpIHx8IFtdO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBUyxVQUFVLFFBQVEsY0FBYztBQUV6QywrREFBK0QsR0FDL0QsT0FBTyxNQUFNLG9CQUFvQjtFQUMvQix5REFBeUQsR0FDekQsQUFBTyxTQUFTLElBQWEsRUFBRSxNQUFnQixFQUFZO0lBQ3pELE9BQU8sUUFBUSxZQUFZLE9BQ3hCLElBQUksQ0FBQyxNQUFpQixJQUFJLE9BQU8sT0FBTyxFQUFFO0VBQy9DO0FBQ0YifQ== +// denoCacheMetadata=4688067432176511820,9811945471896507560
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/038fa7d3b945e542996e23f44b29047c0e19756bb2246623a6af949769ba1fbe.js b/vendor/gen/https/deno.land/038fa7d3b945e542996e23f44b29047c0e19756bb2246623a6af949769ba1fbe.js new file mode 100644 index 0000000..334076c --- /dev/null +++ b/vendor/gen/https/deno.land/038fa7d3b945e542996e23f44b29047c0e19756bb2246623a6af949769ba1fbe.js @@ -0,0 +1,140 @@ +export default function analyze(source, visitor) { + const length = source.length; + const statuses = []; + let index = 0; + while(index < length){ + const char = source.charAt(index++); + switch(char){ + // Detect start brackets + case "{": + { + const status = statuses[0]; + if (status === "literal" && source.charAt(index - 2) === "$") { + statuses.unshift("bracket"); + } else if (status !== "comment" && status !== "single-quote" && status !== "double-quote" && status !== "literal" && status !== "regex" && status !== "line-comment") { + if (statuses.length === 0 && visitor("open-bracket", index) === false) { + return; + } + statuses.unshift("bracket"); + } + break; + } + // Detect end brackets + case "}": + { + const status = statuses[0]; + if (status === "bracket") { + statuses.shift(); + if (statuses.length === 0 && visitor("close", index) === false) { + return; + } + } + break; + } + // Detect double quotes + case '"': + { + const status = statuses[0]; + if (status === "double-quote") { + statuses.shift(); + } else if (status !== "comment" && status !== "single-quote" && status !== "literal" && status !== "regex" && status !== "line-comment") { + statuses.unshift("double-quote"); + } + break; + } + // Detect single quotes + case "'": + { + const status = statuses[0]; + if (status === "single-quote") { + statuses.shift(); + } else if (status !== "comment" && status !== "double-quote" && status !== "literal" && status !== "regex" && status !== "line-comment") { + statuses.unshift("single-quote"); + } + break; + } + // Detect literals + case "`": + { + const status = statuses[0]; + if (status === "literal") { + statuses.shift(); + } else if (status !== "comment" && status !== "double-quote" && status !== "single-quote" && status !== "regex" && status !== "line-comment") { + statuses.unshift("literal"); + } + break; + } + // Detect comments and regex + case "/": + { + const status = statuses[0]; + if (status === "single-quote" || status === "double-quote" || status === "literal" || status === "line-comment") { + break; + } + // We are in a comment: close or ignore + if (status === "comment") { + if (source.charAt(index - 2) === "*") { + statuses.shift(); + } + break; + } + // We are in a regex: close or ignore + if (status === "regex") { + if (source.charAt(index - 2) !== "\\") { + statuses.shift(); + } + break; + } + // Start a new comment + if (source.charAt(index) === "*") { + statuses.unshift("comment"); + break; + } + // Start a new line comment + if (source.charAt(index - 2) === "/") { + statuses.unshift("line-comment"); + break; + } + // Start a new regex + const prev = prevChar(source, index - 1); + if (prev === "(" || prev === "=" || prev === ":" || prev === ",") { + statuses.unshift("regex"); + } + break; + } + // Detect end of line comments + case "\n": + { + const status = statuses[0]; + if (status === "line-comment") { + statuses.shift(); + } + break; + } + // Detect filters + case "|": + { + const status = statuses[0]; + if (status === "bracket" && source.charAt(index) === ">" && visitor("new-filter", index + 1) === false) { + return; + } + break; + } + } + } + if (statuses.length > 0) { + visitor("unclosed", index); + } +} +// Get the previous character in a string ignoring spaces, line breaks and tabs +function prevChar(source, index) { + while(index > 0){ + const char = source.charAt(--index); + if (char !== " " && char !== "\n" && char !== "\r" && char !== "\t") { + return char; + } + } + return ""; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9zcmMvanMudHMiXSwic291cmNlc0NvbnRlbnQiOlsidHlwZSBicmVha3BvaW50cyA9XG4gIHwgXCJuZXctZmlsdGVyXCJcbiAgfCBcIm9wZW4tYnJhY2tldFwiXG4gIHwgXCJjbG9zZVwiXG4gIHwgXCJ1bmNsb3NlZFwiO1xuXG50eXBlIHN0YXR1cyA9XG4gIHwgXCJzaW5nbGUtcXVvdGVcIlxuICB8IFwiZG91YmxlLXF1b3RlXCJcbiAgfCBcInJlZ2V4XCJcbiAgfCBcImxpdGVyYWxcIlxuICB8IFwiYnJhY2tldFwiXG4gIHwgXCJjb21tZW50XCJcbiAgfCBcImxpbmUtY29tbWVudFwiO1xuXG50eXBlIFZpc2l0b3IgPSAodHlwZTogYnJlYWtwb2ludHMsIGluZGV4OiBudW1iZXIpID0+IGZhbHNlIHwgdm9pZDtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYW5hbHl6ZShzb3VyY2U6IHN0cmluZywgdmlzaXRvcjogVmlzaXRvcikge1xuICBjb25zdCBsZW5ndGggPSBzb3VyY2UubGVuZ3RoO1xuICBjb25zdCBzdGF0dXNlczogc3RhdHVzW10gPSBbXTtcbiAgbGV0IGluZGV4ID0gMDtcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjb25zdCBjaGFyID0gc291cmNlLmNoYXJBdChpbmRleCsrKTtcblxuICAgIHN3aXRjaCAoY2hhcikge1xuICAgICAgLy8gRGV0ZWN0IHN0YXJ0IGJyYWNrZXRzXG4gICAgICBjYXNlIFwie1wiOiB7XG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IHN0YXR1c2VzWzBdO1xuXG4gICAgICAgIGlmIChzdGF0dXMgPT09IFwibGl0ZXJhbFwiICYmIHNvdXJjZS5jaGFyQXQoaW5kZXggLSAyKSA9PT0gXCIkXCIpIHtcbiAgICAgICAgICBzdGF0dXNlcy51bnNoaWZ0KFwiYnJhY2tldFwiKTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICBzdGF0dXMgIT09IFwiY29tbWVudFwiICYmIHN0YXR1cyAhPT0gXCJzaW5nbGUtcXVvdGVcIiAmJlxuICAgICAgICAgIHN0YXR1cyAhPT0gXCJkb3VibGUtcXVvdGVcIiAmJiBzdGF0dXMgIT09IFwibGl0ZXJhbFwiICYmXG4gICAgICAgICAgc3RhdHVzICE9PSBcInJlZ2V4XCIgJiYgc3RhdHVzICE9PSBcImxpbmUtY29tbWVudFwiXG4gICAgICAgICkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHN0YXR1c2VzLmxlbmd0aCA9PT0gMCAmJiB2aXNpdG9yKFwib3Blbi1icmFja2V0XCIsIGluZGV4KSA9PT0gZmFsc2VcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3RhdHVzZXMudW5zaGlmdChcImJyYWNrZXRcIik7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIERldGVjdCBlbmQgYnJhY2tldHNcbiAgICAgIGNhc2UgXCJ9XCI6IHtcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gc3RhdHVzZXNbMF07XG5cbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gXCJicmFja2V0XCIpIHtcbiAgICAgICAgICBzdGF0dXNlcy5zaGlmdCgpO1xuXG4gICAgICAgICAgaWYgKHN0YXR1c2VzLmxlbmd0aCA9PT0gMCAmJiB2aXNpdG9yKFwiY2xvc2VcIiwgaW5kZXgpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gRGV0ZWN0IGRvdWJsZSBxdW90ZXNcbiAgICAgIGNhc2UgJ1wiJzoge1xuICAgICAgICBjb25zdCBzdGF0dXMgPSBzdGF0dXNlc1swXTtcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gXCJkb3VibGUtcXVvdGVcIikge1xuICAgICAgICAgIHN0YXR1c2VzLnNoaWZ0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgc3RhdHVzICE9PSBcImNvbW1lbnRcIiAmJlxuICAgICAgICAgIHN0YXR1cyAhPT0gXCJzaW5nbGUtcXVvdGVcIiAmJlxuICAgICAgICAgIHN0YXR1cyAhPT0gXCJsaXRlcmFsXCIgJiZcbiAgICAgICAgICBzdGF0dXMgIT09IFwicmVnZXhcIiAmJlxuICAgICAgICAgIHN0YXR1cyAhPT0gXCJsaW5lLWNvbW1lbnRcIlxuICAgICAgICApIHtcbiAgICAgICAgICBzdGF0dXNlcy51bnNoaWZ0KFwiZG91YmxlLXF1b3RlXCIpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBEZXRlY3Qgc2luZ2xlIHF1b3Rlc1xuICAgICAgY2FzZSBcIidcIjoge1xuICAgICAgICBjb25zdCBzdGF0dXMgPSBzdGF0dXNlc1swXTtcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gXCJzaW5nbGUtcXVvdGVcIikge1xuICAgICAgICAgIHN0YXR1c2VzLnNoaWZ0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgc3RhdHVzICE9PSBcImNvbW1lbnRcIiAmJlxuICAgICAgICAgIHN0YXR1cyAhPT0gXCJkb3VibGUtcXVvdGVcIiAmJlxuICAgICAgICAgIHN0YXR1cyAhPT0gXCJsaXRlcmFsXCIgJiZcbiAgICAgICAgICBzdGF0dXMgIT09IFwicmVnZXhcIiAmJlxuICAgICAgICAgIHN0YXR1cyAhPT0gXCJsaW5lLWNvbW1lbnRcIlxuICAgICAgICApIHtcbiAgICAgICAgICBzdGF0dXNlcy51bnNoaWZ0KFwic2luZ2xlLXF1b3RlXCIpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBEZXRlY3QgbGl0ZXJhbHNcbiAgICAgIGNhc2UgXCJgXCI6IHtcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gc3RhdHVzZXNbMF07XG4gICAgICAgIGlmIChzdGF0dXMgPT09IFwibGl0ZXJhbFwiKSB7XG4gICAgICAgICAgc3RhdHVzZXMuc2hpZnQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICBzdGF0dXMgIT09IFwiY29tbWVudFwiICYmXG4gICAgICAgICAgc3RhdHVzICE9PSBcImRvdWJsZS1xdW90ZVwiICYmXG4gICAgICAgICAgc3RhdHVzICE9PSBcInNpbmdsZS1xdW90ZVwiICYmXG4gICAgICAgICAgc3RhdHVzICE9PSBcInJlZ2V4XCIgJiZcbiAgICAgICAgICBzdGF0dXMgIT09IFwibGluZS1jb21tZW50XCJcbiAgICAgICAgKSB7XG4gICAgICAgICAgc3RhdHVzZXMudW5zaGlmdChcImxpdGVyYWxcIik7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIERldGVjdCBjb21tZW50cyBhbmQgcmVnZXhcbiAgICAgIGNhc2UgXCIvXCI6IHtcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gc3RhdHVzZXNbMF07XG4gICAgICAgIGlmIChcbiAgICAgICAgICBzdGF0dXMgPT09IFwic2luZ2xlLXF1b3RlXCIgfHwgc3RhdHVzID09PSBcImRvdWJsZS1xdW90ZVwiIHx8XG4gICAgICAgICAgc3RhdHVzID09PSBcImxpdGVyYWxcIiB8fCBzdGF0dXMgPT09IFwibGluZS1jb21tZW50XCJcbiAgICAgICAgKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXZSBhcmUgaW4gYSBjb21tZW50OiBjbG9zZSBvciBpZ25vcmVcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gXCJjb21tZW50XCIpIHtcbiAgICAgICAgICBpZiAoc291cmNlLmNoYXJBdChpbmRleCAtIDIpID09PSBcIipcIikge1xuICAgICAgICAgICAgc3RhdHVzZXMuc2hpZnQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXZSBhcmUgaW4gYSByZWdleDogY2xvc2Ugb3IgaWdub3JlXG4gICAgICAgIGlmIChzdGF0dXMgPT09IFwicmVnZXhcIikge1xuICAgICAgICAgIGlmIChzb3VyY2UuY2hhckF0KGluZGV4IC0gMikgIT09IFwiXFxcXFwiKSB7XG4gICAgICAgICAgICBzdGF0dXNlcy5zaGlmdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN0YXJ0IGEgbmV3IGNvbW1lbnRcbiAgICAgICAgaWYgKHNvdXJjZS5jaGFyQXQoaW5kZXgpID09PSBcIipcIikge1xuICAgICAgICAgIHN0YXR1c2VzLnVuc2hpZnQoXCJjb21tZW50XCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RhcnQgYSBuZXcgbGluZSBjb21tZW50XG4gICAgICAgIGlmIChzb3VyY2UuY2hhckF0KGluZGV4IC0gMikgPT09IFwiL1wiKSB7XG4gICAgICAgICAgc3RhdHVzZXMudW5zaGlmdChcImxpbmUtY29tbWVudFwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN0YXJ0IGEgbmV3IHJlZ2V4XG4gICAgICAgIGNvbnN0IHByZXYgPSBwcmV2Q2hhcihzb3VyY2UsIGluZGV4IC0gMSk7XG4gICAgICAgIGlmIChwcmV2ID09PSBcIihcIiB8fCBwcmV2ID09PSBcIj1cIiB8fCBwcmV2ID09PSBcIjpcIiB8fCBwcmV2ID09PSBcIixcIikge1xuICAgICAgICAgIHN0YXR1c2VzLnVuc2hpZnQoXCJyZWdleFwiKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gRGV0ZWN0IGVuZCBvZiBsaW5lIGNvbW1lbnRzXG4gICAgICBjYXNlIFwiXFxuXCI6IHtcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gc3RhdHVzZXNbMF07XG4gICAgICAgIGlmIChzdGF0dXMgPT09IFwibGluZS1jb21tZW50XCIpIHtcbiAgICAgICAgICBzdGF0dXNlcy5zaGlmdCgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBEZXRlY3QgZmlsdGVyc1xuICAgICAgY2FzZSBcInxcIjoge1xuICAgICAgICBjb25zdCBzdGF0dXMgPSBzdGF0dXNlc1swXTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHN0YXR1cyA9PT0gXCJicmFja2V0XCIgJiYgc291cmNlLmNoYXJBdChpbmRleCkgPT09IFwiPlwiICYmXG4gICAgICAgICAgdmlzaXRvcihcIm5ldy1maWx0ZXJcIiwgaW5kZXggKyAxKSA9PT0gZmFsc2VcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdGF0dXNlcy5sZW5ndGggPiAwKSB7XG4gICAgdmlzaXRvcihcInVuY2xvc2VkXCIsIGluZGV4KTtcbiAgfVxufVxuXG4vLyBHZXQgdGhlIHByZXZpb3VzIGNoYXJhY3RlciBpbiBhIHN0cmluZyBpZ25vcmluZyBzcGFjZXMsIGxpbmUgYnJlYWtzIGFuZCB0YWJzXG5mdW5jdGlvbiBwcmV2Q2hhcihzb3VyY2U6IHN0cmluZywgaW5kZXg6IG51bWJlcikge1xuICB3aGlsZSAoaW5kZXggPiAwKSB7XG4gICAgY29uc3QgY2hhciA9IHNvdXJjZS5jaGFyQXQoLS1pbmRleCk7XG4gICAgaWYgKGNoYXIgIT09IFwiIFwiICYmIGNoYXIgIT09IFwiXFxuXCIgJiYgY2hhciAhPT0gXCJcXHJcIiAmJiBjaGFyICE9PSBcIlxcdFwiKSB7XG4gICAgICByZXR1cm4gY2hhcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFwiXCI7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUJBLGVBQWUsU0FBUyxRQUFRLE1BQWMsRUFBRSxPQUFnQjtFQUM5RCxNQUFNLFNBQVMsT0FBTyxNQUFNO0VBQzVCLE1BQU0sV0FBcUIsRUFBRTtFQUM3QixJQUFJLFFBQVE7RUFFWixNQUFPLFFBQVEsT0FBUTtJQUNy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 +// denoCacheMetadata=13743754940318670184,14976623851099149579
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/0e9edfbf05b0c1ceedbe773bc87b513107294e0810cfaedc7d0236e924d599a2.js b/vendor/gen/https/deno.land/0e9edfbf05b0c1ceedbe773bc87b513107294e0810cfaedc7d0236e924d599a2.js new file mode 100644 index 0000000..dcb0841 --- /dev/null +++ b/vendor/gen/https/deno.land/0e9edfbf05b0c1ceedbe773bc87b513107294e0810cfaedc7d0236e924d599a2.js @@ -0,0 +1,12 @@ +/** + * A plugin to add a search helper to the data + * Installed by default + * @see https://lume.land/plugins/search/ + */ export function search() { + return (site)=>{ + site.data("search", site.search); + }; +} +export default search; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvcGx1Z2lucy9zZWFyY2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgU2l0ZSBmcm9tIFwiLi4vY29yZS9zaXRlLnRzXCI7XG5pbXBvcnQgdHlwZSBTZWFyY2hlciBmcm9tIFwiLi4vY29yZS9zZWFyY2hlci50c1wiO1xuXG4vKipcbiAqIEEgcGx1Z2luIHRvIGFkZCBhIHNlYXJjaCBoZWxwZXIgdG8gdGhlIGRhdGFcbiAqIEluc3RhbGxlZCBieSBkZWZhdWx0XG4gKiBAc2VlIGh0dHBzOi8vbHVtZS5sYW5kL3BsdWdpbnMvc2VhcmNoL1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2VhcmNoKCkge1xuICByZXR1cm4gKHNpdGU6IFNpdGUpID0+IHtcbiAgICBzaXRlLmRhdGEoXCJzZWFyY2hcIiwgc2l0ZS5zZWFyY2gpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBzZWFyY2g7XG5cbi8qKiBFeHRlbmRzIERhdGEgaW50ZXJmYWNlICovXG5kZWNsYXJlIGdsb2JhbCB7XG4gIG5hbWVzcGFjZSBMdW1lIHtcbiAgICBleHBvcnQgaW50ZXJmYWNlIERhdGEge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgc2VhcmNoZXIgaGVscGVyXG4gICAgICAgKiBAc2VlIGh0dHBzOi8vbHVtZS5sYW5kL3BsdWdpbnMvc2VhcmNoL1xuICAgICAgICovXG4gICAgICBzZWFyY2g6IFNlYXJjaGVyO1xuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBOzs7O0NBSUMsR0FDRCxPQUFPLFNBQVM7RUFDZCxPQUFPLENBQUM7SUFDTixLQUFLLElBQUksQ0FBQyxVQUFVLEtBQUssTUFBTTtFQUNqQztBQUNGO0FBRUEsZUFBZSxPQUFPIn0= +// denoCacheMetadata=16801648713670826467,2576736340305366551
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/0eff7d41d121028e0827789106fecfd7747a49a75f592c9f3763f85e2b0c07e9.js b/vendor/gen/https/deno.land/0eff7d41d121028e0827789106fecfd7747a49a75f592c9f3763f85e2b0c07e9.js new file mode 100644 index 0000000..5048ae3 --- /dev/null +++ b/vendor/gen/https/deno.land/0eff7d41d121028e0827789106fecfd7747a49a75f592c9f3763f85e2b0c07e9.js @@ -0,0 +1,5 @@ +export * from "./cell.ts"; +export * from "./row.ts"; +export * from "./table.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvdGFibGUvbW9kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NlbGwudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Jvdy50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGFibGUudHNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFlBQVk7QUFDMUIsY0FBYyxXQUFXO0FBQ3pCLGNBQWMsYUFBYSJ9 +// denoCacheMetadata=10722799848786018650,17577046021429910119
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/0ff350ac6da1547191afc3438561d2b27a4614f7eeb0be9bd37aa60034cf66b4.js b/vendor/gen/https/deno.land/0ff350ac6da1547191afc3438561d2b27a4614f7eeb0be9bd37aa60034cf66b4.js new file mode 100644 index 0000000..55a4619 --- /dev/null +++ b/vendor/gen/https/deno.land/0ff350ac6da1547191afc3438561d2b27a4614f7eeb0be9bd37aa60034cf66b4.js @@ -0,0 +1,20 @@ +// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +/** + * All internal non-test code, that is files that do not have `test` or `bench` in the name, must use the assertion functions within `_utils/asserts.ts` and not `testing/asserts.ts`. This is to create a separation of concerns between internal and testing assertions. + */ export class DenoStdInternalError extends Error { + constructor(message){ + super(message); + this.name = "DenoStdInternalError"; + } +} +/** Make an assertion, if not `true`, then throw. */ export function assert(expr, msg = "") { + if (!expr) { + throw new DenoStdInternalError(msg); + } +} +/** Use this to assert unreachable code. */ export function unreachable() { + throw new DenoStdInternalError("unreachable"); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE3MC4wL191dGlsL2Fzc2VydHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyMiB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuLyoqXG4gKiBBbGwgaW50ZXJuYWwgbm9uLXRlc3QgY29kZSwgdGhhdCBpcyBmaWxlcyB0aGF0IGRvIG5vdCBoYXZlIGB0ZXN0YCBvciBgYmVuY2hgIGluIHRoZSBuYW1lLCBtdXN0IHVzZSB0aGUgYXNzZXJ0aW9uIGZ1bmN0aW9ucyB3aXRoaW4gYF91dGlscy9hc3NlcnRzLnRzYCBhbmQgbm90IGB0ZXN0aW5nL2Fzc2VydHMudHNgLiBUaGlzIGlzIHRvIGNyZWF0ZSBhIHNlcGFyYXRpb24gb2YgY29uY2VybnMgYmV0d2VlbiBpbnRlcm5hbCBhbmQgdGVzdGluZyBhc3NlcnRpb25zLlxuICovXG5cbmV4cG9ydCBjbGFzcyBEZW5vU3RkSW50ZXJuYWxFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gXCJEZW5vU3RkSW50ZXJuYWxFcnJvclwiO1xuICB9XG59XG5cbi8qKiBNYWtlIGFuIGFzc2VydGlvbiwgaWYgbm90IGB0cnVlYCwgdGhlbiB0aHJvdy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnQoZXhwcjogdW5rbm93biwgbXNnID0gXCJcIik6IGFzc2VydHMgZXhwciB7XG4gIGlmICghZXhwcikge1xuICAgIHRocm93IG5ldyBEZW5vU3RkSW50ZXJuYWxFcnJvcihtc2cpO1xuICB9XG59XG5cbi8qKiBVc2UgdGhpcyB0byBhc3NlcnQgdW5yZWFjaGFibGUgY29kZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bnJlYWNoYWJsZSgpOiBuZXZlciB7XG4gIHRocm93IG5ldyBEZW5vU3RkSW50ZXJuYWxFcnJvcihcInVucmVhY2hhYmxlXCIpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxxQ0FBcUM7QUFFckM7O0NBRUMsR0FFRCxPQUFPLE1BQU0sNkJBQTZCO0VBQ3hDLFlBQVksT0FBZSxDQUFFO0lBQzNCLEtBQUssQ0FBQztJQUNOLElBQUksQ0FBQyxJQUFJLEdBQUc7RUFDZDtBQUNGO0FBRUEsa0RBQWtELEdBQ2xELE9BQU8sU0FBUyxPQUFPLElBQWEsRUFBRSxNQUFNLEVBQUU7RUFDNUMsSUFBSSxDQUFDLE1BQU07SUFDVCxNQUFNLElBQUkscUJBQXFCO0VBQ2pDO0FBQ0Y7QUFFQSx5Q0FBeUMsR0FDekMsT0FBTyxTQUFTO0VBQ2QsTUFBTSxJQUFJLHFCQUFxQjtBQUNqQyJ9 +// denoCacheMetadata=861895762102166337,10984339633016137749
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/10f0c558d34276481bd8b14a6f4fdcaffa6d3b008c9876752f47796195886710.js b/vendor/gen/https/deno.land/10f0c558d34276481bd8b14a6f4fdcaffa6d3b008c9876752f47796195886710.js new file mode 100644 index 0000000..0a9349e --- /dev/null +++ b/vendor/gen/https/deno.land/10f0c558d34276481bd8b14a6f4fdcaffa6d3b008c9876752f47796195886710.js @@ -0,0 +1,34 @@ +const ssxElement = Symbol.for("ssx.element"); +const objectConstructor = {}.constructor; +/** Check if the argument passed is a plain object */ export function isPlainObject(obj) { + return typeof obj === "object" && obj !== null && obj.constructor === objectConstructor && // @ts-ignore: Check if the argument passed is a SSX element + obj[ssxElement] !== true && // @ts-ignore: Check if the argument passed is a Page.data object + obj !== obj.page?.data; +} +/** + * Merge two objects recursively. + * It's used to merge user options with default options. + */ export function merge(defaults, user) { + const merged = { + ...defaults + }; + if (!user) { + return merged; + } + for (const [key, value] of Object.entries(user)){ + if (value === undefined) { + continue; + } + // @ts-ignore: No index signature with a parameter of type 'string' was found on type 'unknown' + if (isPlainObject(merged[key]) && isPlainObject(value)) { + // @ts-ignore: Type 'string' cannot be used to index type 'Type' + merged[key] = merge(merged[key], value); + continue; + } + // @ts-ignore: Type 'string' cannot be used to index type 'Type' + merged[key] = value; + } + return merged; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS91dGlscy9vYmplY3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgc3N4RWxlbWVudCA9IFN5bWJvbC5mb3IoXCJzc3guZWxlbWVudFwiKTtcbmNvbnN0IG9iamVjdENvbnN0cnVjdG9yID0ge30uY29uc3RydWN0b3I7XG5cbi8qKiBUeXBlU2NyaXB0IGhlbHBlciB0byBjcmVhdGUgb3B0aW9uYWwgcHJvcGVydGllcyByZWN1cnNpdmVseSAqL1xuZXhwb3J0IHR5cGUgRGVlcFBhcnRpYWw8VD4gPSBUIGV4dGVuZHMgb2JqZWN0ID8ge1xuICAgIFtQIGluIGtleW9mIFRdPzogRGVlcFBhcnRpYWw8VFtQXT47XG4gIH1cbiAgOiBUO1xuXG4vKiogQ2hlY2sgaWYgdGhlIGFyZ3VtZW50IHBhc3NlZCBpcyBhIHBsYWluIG9iamVjdCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qob2JqOiB1bmtub3duKTogb2JqIGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHR5cGVvZiBvYmogPT09IFwib2JqZWN0XCIgJiYgb2JqICE9PSBudWxsICYmXG4gICAgb2JqLmNvbnN0cnVjdG9yID09PSBvYmplY3RDb25zdHJ1Y3RvciAmJlxuICAgIC8vIEB0cy1pZ25vcmU6IENoZWNrIGlmIHRoZSBhcmd1bWVudCBwYXNzZWQgaXMgYSBTU1ggZWxlbWVudFxuICAgIG9ialtzc3hFbGVtZW50XSAhPT0gdHJ1ZSAmJlxuICAgIC8vIEB0cy1pZ25vcmU6IENoZWNrIGlmIHRoZSBhcmd1bWVudCBwYXNzZWQgaXMgYSBQYWdlLmRhdGEgb2JqZWN0XG4gICAgb2JqICE9PSBvYmoucGFnZT8uZGF0YTtcbn1cblxuLyoqXG4gKiBNZXJnZSB0d28gb2JqZWN0cyByZWN1cnNpdmVseS5cbiAqIEl0J3MgdXNlZCB0byBtZXJnZSB1c2VyIG9wdGlvbnMgd2l0aCBkZWZhdWx0IG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZTxUeXBlPihcbiAgZGVmYXVsdHM6IFR5cGUsXG4gIHVzZXI/OiBUeXBlLFxuKTogUmVxdWlyZWQ8VHlwZT4ge1xuICBjb25zdCBtZXJnZWQgPSB7IC4uLmRlZmF1bHRzIH07XG5cbiAgaWYgKCF1c2VyKSB7XG4gICAgcmV0dXJuIG1lcmdlZCBhcyB1bmtub3duIGFzIFJlcXVpcmVkPFR5cGU+O1xuICB9XG5cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModXNlcikpIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZTogTm8gaW5kZXggc2lnbmF0dXJlIHdpdGggYSBwYXJhbWV0ZXIgb2YgdHlwZSAnc3RyaW5nJyB3YXMgZm91bmQgb24gdHlwZSAndW5rbm93bidcbiAgICBpZiAoaXNQbGFpbk9iamVjdChtZXJnZWRba2V5XSkgJiYgaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmU6IFR5cGUgJ3N0cmluZycgY2Fubm90IGJlIHVzZWQgdG8gaW5kZXggdHlwZSAnVHlwZSdcbiAgICAgIG1lcmdlZFtrZXldID0gbWVyZ2UobWVyZ2VkW2tleV0sIHZhbHVlKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmU6IFR5cGUgJ3N0cmluZycgY2Fubm90IGJlIHVzZWQgdG8gaW5kZXggdHlwZSAnVHlwZSdcbiAgICBtZXJnZWRba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIG1lcmdlZCBhcyB1bmtub3duIGFzIFJlcXVpcmVkPFR5cGU+O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sYUFBYSxPQUFPLEdBQUcsQ0FBQztBQUM5QixNQUFNLG9CQUFvQixDQUFDLEVBQUUsV0FBVztBQVF4QyxtREFBbUQsR0FDbkQsT0FBTyxTQUFTLGNBQWMsR0FBWTtFQUN4QyxPQUFPLE9BQU8sUUFBUSxZQUFZLFFBQVEsUUFDeEMsSUFBSSxXQUFXLEtBQUsscUJBQ3BCLDREQUE0RDtFQUM1RCxHQUFHLENBQUMsV0FBVyxLQUFLLFFBQ3BCLGlFQUFpRTtFQUNqRSxRQUFRLElBQUksSUFBSSxFQUFFO0FBQ3RCO0FBRUE7OztDQUdDLEdBQ0QsT0FBTyxTQUFTLE1BQ2QsUUFBYyxFQUNkLElBQVc7RUFFWCxNQUFNLFNBQVM7SUFBRSxHQUFHLFFBQVE7RUFBQztFQUU3QixJQUFJLENBQUMsTUFBTTtJQUNULE9BQU87RUFDVDtFQUVBLEtBQUssTUFBTSxDQUFDLEtBQUssTUFBTSxJQUFJLE9BQU8sT0FBTyxDQUFDLE1BQU87SUFDL0MsSUFBSSxVQUFVLFdBQVc7TUFDdkI7SUFDRjtJQUVBLCtGQUErRjtJQUMvRixJQUFJLGNBQWMsTUFBTSxDQUFDLElBQUksS0FBSyxjQUFjLFFBQVE7TUFDdEQsZ0VBQWdFO01BQ2hFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxFQUFFO01BQ2pDO0lBQ0Y7SUFFQSxnRUFBZ0U7SUFDaEUsTUFBTSxDQUFDLElBQUksR0FBRztFQUNoQjtFQUVBLE9BQU87QUFDVCJ9 +// denoCacheMetadata=18063696159046291710,9600638505032324490
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/1178b982861aaff8dbf2f91525b694abb5964d2d3c1c58d8ccdc2611ed3773d0.js b/vendor/gen/https/deno.land/1178b982861aaff8dbf2f91525b694abb5964d2d3c1c58d8ccdc2611ed3773d0.js new file mode 100644 index 0000000..81635fe --- /dev/null +++ b/vendor/gen/https/deno.land/1178b982861aaff8dbf2f91525b694abb5964d2d3c1c58d8ccdc2611ed3773d0.js @@ -0,0 +1,64 @@ +import * as ansiEscapes from "./ansi_escapes.ts"; +import { getCursorPosition } from "./cursor_position.ts"; +/** + * Chainable ansi escape sequences. + * If invoked as method, a new Tty instance will be returned. + * ``` + * tty.cursorTo(0, 0).eraseScreen(); + * ``` + */ export const tty = factory(); +function factory(options) { + let result = ""; + let stack = []; + const stdout = options?.stdout ?? Deno.stdout; + const stdin = options?.stdin ?? Deno.stdin; + const tty = function(...args) { + if (this) { + update(args); + stdout.writeSync(new TextEncoder().encode(result)); + return this; + } + return factory(args[0] ?? options); + }; + tty.text = function(text) { + stack.push([ + text, + [] + ]); + update(); + stdout.writeSync(new TextEncoder().encode(result)); + return this; + }; + tty.getCursorPosition = ()=>getCursorPosition({ + stdout, + stdin + }); + const methodList = Object.entries(ansiEscapes); + for (const [name, method] of methodList){ + if (name === "cursorPosition") { + continue; + } + Object.defineProperty(tty, name, { + get () { + stack.push([ + method, + [] + ]); + return this; + } + }); + } + return tty; + function update(args) { + if (!stack.length) { + return; + } + if (args) { + stack[stack.length - 1][1] = args; + } + result = stack.reduce((prev, [cur, args])=>prev + (typeof cur === "string" ? cur : cur.call(tty, ...args)), ""); + stack = []; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvYW5zaS90dHkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYW5zaUVzY2FwZXMgZnJvbSBcIi4vYW5zaV9lc2NhcGVzLnRzXCI7XG5pbXBvcnQgdHlwZSB7IENoYWluIH0gZnJvbSBcIi4vY2hhaW4udHNcIjtcbmltcG9ydCB7IEN1cnNvciwgZ2V0Q3Vyc29yUG9zaXRpb24gfSBmcm9tIFwiLi9jdXJzb3JfcG9zaXRpb24udHNcIjtcblxuLyoqIENyZWF0ZSBuZXcgYEFuc2lgIGluc3RhbmNlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBUdHlPcHRpb25zIHtcbiAgc3Rkb3V0PzogRGVuby5Xcml0ZXJTeW5jO1xuICBzdGRpbj86IERlbm8uUmVhZGVyU3luYyAmIHsgcmlkOiBudW1iZXIgfTtcbn1cblxudHlwZSBFeGVjdXRvciA9ICh0aGlzOiBUdHlDaGFpbiwgLi4uYXJnczogQXJncykgPT4gc3RyaW5nO1xudHlwZSBBcmdzID0gQXJyYXk8dW5rbm93bj47XG50eXBlIFByb3BlcnR5ID0gc3RyaW5nIHwgRXhlY3V0b3I7XG50eXBlIFByb3BlcnR5TmFtZXMgPSBrZXlvZiBDaGFpbjxUdHlDaGFpbj47XG5cbi8qKiBBbnNpIGluc3RhbmNlIHJldHVybmVkIGJ5IGFsbCBhbnNpIGVzY2FwZSBwcm9wZXJ0aWVzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBUdHlDaGFpbiBleHRlbmRzIEV4Y2x1ZGU8Q2hhaW48VHR5Q2hhaW4+LCBcImN1cnNvclBvc2l0aW9uXCI+IHtcbiAgLyoqIFdyaXRlIGFuc2kgZXNjYXBlIHNlcXVlbmNlLiAqL1xuICAoKTogdm9pZDtcbiAgLyoqIEdldCBjdXJyZW50IGN1cnNvciBwb3NpdGlvbi4gKi9cbiAgZ2V0Q3Vyc29yUG9zaXRpb24oKTogQ3Vyc29yO1xufVxuXG4vKiogQ3JlYXRlIG5ldyBgVHR5YCBpbnN0YW5jZS4gKi9cbmV4cG9ydCB0eXBlIFR0eUZhY3RvcnkgPSAob3B0aW9ucz86IFR0eU9wdGlvbnMpID0+IFR0eTtcblxuLyoqXG4gKiBDaGFpbmFibGUgYW5zaSBlc2NhcGUgc2VxdWVuY2VzLlxuICogSWYgaW52b2tlZCBhcyBtZXRob2QsIGEgbmV3IFR0eSBpbnN0YW5jZSB3aWxsIGJlIHJldHVybmVkLlxuICovXG5leHBvcnQgdHlwZSBUdHkgPSBUdHlGYWN0b3J5ICYgVHR5Q2hhaW47XG5cbi8qKlxuICogQ2hhaW5hYmxlIGFuc2kgZXNjYXBlIHNlcXVlbmNlcy5cbiAqIElmIGludm9rZWQgYXMgbWV0aG9kLCBhIG5ldyBUdHkgaW5zdGFuY2Ugd2lsbCBiZSByZXR1cm5lZC5cbiAqIGBgYFxuICogdHR5LmN1cnNvclRvKDAsIDApLmVyYXNlU2NyZWVuKCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IHR0eTogVHR5ID0gZmFjdG9yeSgpO1xuXG5mdW5jdGlvbiBmYWN0b3J5KG9wdGlvbnM/OiBUdHlPcHRpb25zKTogVHR5IHtcbiAgbGV0IHJlc3VsdCA9IFwiXCI7XG4gIGxldCBzdGFjazogQXJyYXk8W1Byb3BlcnR5LCBBcmdzXT4gPSBbXTtcbiAgY29uc3Qgc3Rkb3V0OiBEZW5vLldyaXRlclN5bmMgPSBvcHRpb25zPy5zdGRvdXQgPz8gRGVuby5zdGRvdXQ7XG4gIGNvbnN0IHN0ZGluOiBEZW5vLlJlYWRlclN5bmMgJiB7IHJpZDogbnVtYmVyIH0gPSBvcHRpb25zPy5zdGRpbiA/PyBEZW5vLnN0ZGluO1xuXG4gIGNvbnN0IHR0eTogVHR5ID0gZnVuY3Rpb24gKFxuICAgIHRoaXM6IFR0eUNoYWluIHwgdW5kZWZpbmVkLFxuICAgIC4uLmFyZ3M6IEFyZ3MgfCBbVHR5T3B0aW9uc11cbiAgKTogVHR5Q2hhaW4ge1xuICAgIGlmICh0aGlzKSB7XG4gICAgICB1cGRhdGUoYXJncyk7XG4gICAgICBzdGRvdXQud3JpdGVTeW5jKG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShyZXN1bHQpKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICByZXR1cm4gZmFjdG9yeShhcmdzWzBdIGFzIFR0eU9wdGlvbnMgPz8gb3B0aW9ucyk7XG4gIH0gYXMgVHR5O1xuXG4gIHR0eS50ZXh0ID0gZnVuY3Rpb24gKHRleHQ6IHN0cmluZyk6IFR0eUNoYWluIHtcbiAgICBzdGFjay5wdXNoKFt0ZXh0LCBbXV0pO1xuICAgIHVwZGF0ZSgpO1xuICAgIHN0ZG91dC53cml0ZVN5bmMobmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHJlc3VsdCkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIHR0eS5nZXRDdXJzb3JQb3NpdGlvbiA9ICgpOiBDdXJzb3IgPT4gZ2V0Q3Vyc29yUG9zaXRpb24oeyBzdGRvdXQsIHN0ZGluIH0pO1xuXG4gIGNvbnN0IG1ldGhvZExpc3Q6IEFycmF5PFtQcm9wZXJ0eU5hbWVzLCBQcm9wZXJ0eV0+ID0gT2JqZWN0LmVudHJpZXMoXG4gICAgYW5zaUVzY2FwZXMsXG4gICkgYXMgQXJyYXk8W1Byb3BlcnR5TmFtZXMsIFByb3BlcnR5XT47XG5cbiAgZm9yIChjb25zdCBbbmFtZSwgbWV0aG9kXSBvZiBtZXRob2RMaXN0KSB7XG4gICAgaWYgKG5hbWUgPT09IFwiY3Vyc29yUG9zaXRpb25cIikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0dHksIG5hbWUsIHtcbiAgICAgIGdldCh0aGlzOiBUdHlDaGFpbikge1xuICAgICAgICBzdGFjay5wdXNoKFttZXRob2QsIFtdXSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0dHk7XG5cbiAgZnVuY3Rpb24gdXBkYXRlKGFyZ3M/OiBBcmdzKSB7XG4gICAgaWYgKCFzdGFjay5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFyZ3MpIHtcbiAgICAgIHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdWzFdID0gYXJncztcbiAgICB9XG4gICAgcmVzdWx0ID0gc3RhY2sucmVkdWNlKFxuICAgICAgKHByZXY6IHN0cmluZywgW2N1ciwgYXJnc106IFtQcm9wZXJ0eSwgQXJnc10pID0+XG4gICAgICAgIHByZXYgKyAodHlwZW9mIGN1ciA9PT0gXCJzdHJpbmdcIiA/IGN1ciA6IGN1ci5jYWxsKHR0eSwgLi4uYXJncykpLFxuICAgICAgXCJcIixcbiAgICApO1xuICAgIHN0YWNrID0gW107XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLGlCQUFpQixvQkFBb0I7QUFFakQsU0FBaUIsaUJBQWlCLFFBQVEsdUJBQXVCO0FBOEJqRTs7Ozs7O0NBTUMsR0FDRCxPQUFPLE1BQU0sTUFBVyxVQUFVO0FBRWxDLFNBQVMsUUFBUSxPQUFvQjtFQUNuQyxJQUFJLFNBQVM7RUFDYixJQUFJLFFBQWlDLEVBQUU7RUFDdkMsTUFBTSxTQUEwQixTQUFTLFVBQVUsS0FBSyxNQUFNO0VBQzlELE1BQU0sUUFBMkMsU0FBUyxTQUFTLEtBQUssS0FBSztFQUU3RSxNQUFNLE1BQVcsU0FFZixHQUFHLElBQXlCO0lBRTVCLElBQUksSUFBSSxFQUFFO01BQ1IsT0FBTztNQUNQLE9BQU8sU0FBUyxDQUFDLElBQUksY0FBYyxNQUFNLENBQUM7TUFDMUMsT0FBTyxJQUFJO0lBQ2I7SUFDQSxPQUFPLFFBQVEsSUFBSSxDQUFDLEVBQUUsSUFBa0I7RUFDMUM7RUFFQSxJQUFJLElBQUksR0FBRyxTQUFVLElBQVk7SUFDL0IsTUFBTSxJQUFJLENBQUM7TUFBQztNQUFNLEVBQUU7S0FBQztJQUNyQjtJQUNBLE9BQU8sU0FBUyxDQUFDLElBQUksY0FBYyxNQUFNLENBQUM7SUFDMUMsT0FBTyxJQUFJO0VBQ2I7RUFFQSxJQUFJLGlCQUFpQixHQUFHLElBQWMsa0JBQWtCO01BQUU7TUFBUTtJQUFNO0VBRXhFLE1BQU0sYUFBK0MsT0FBTyxPQUFPLENBQ2pFO0VBR0YsS0FBSyxNQUFNLENBQUMsTUFBTSxPQUFPLElBQUksV0FBWTtJQUN2QyxJQUFJLFNBQVMsa0JBQWtCO01BQzdCO0lBQ0Y7SUFDQSxPQUFPLGNBQWMsQ0FBQyxLQUFLLE1BQU07TUFDL0I7UUFDRSxNQUFNLElBQUksQ0FBQztVQUFDO1VBQVEsRUFBRTtTQUFDO1FBQ3ZCLE9BQU8sSUFBSTtNQUNiO0lBQ0Y7RUFDRjtFQUVBLE9BQU87RUFFUCxTQUFTLE9BQU8sSUFBVztJQUN6QixJQUFJLENBQUMsTUFBTSxNQUFNLEVBQUU7TUFDakI7SUFDRjtJQUNBLElBQUksTUFBTTtNQUNSLEtBQUssQ0FBQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHO0lBQy9CO0lBQ0EsU0FBUyxNQUFNLE1BQU0sQ0FDbkIsQ0FBQyxNQUFjLENBQUMsS0FBSyxLQUF1QixHQUMxQyxPQUFPLENBQUMsT0FBTyxRQUFRLFdBQVcsTUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssR0FDaEU7SUFFRixRQUFRLEVBQUU7RUFDWjtBQUNGIn0= +// denoCacheMetadata=13769434344427767206,6359390300626044585
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/11bd02bbc70e81aa9d1bfd7ef5e029fca6be91c5c0d08cd4600539a45c89dd71.js b/vendor/gen/https/deno.land/11bd02bbc70e81aa9d1bfd7ef5e029fca6be91c5c0d08cd4600539a45c89dd71.js new file mode 100644 index 0000000..856f18b --- /dev/null +++ b/vendor/gen/https/deno.land/11bd02bbc70e81aa9d1bfd7ef5e029fca6be91c5c0d08cd4600539a45c89dd71.js @@ -0,0 +1,9 @@ +import { string } from "../../flags/types/string.ts"; +import { Type } from "../type.ts"; +/** String type. Allows any value. */ export class StringType extends Type { + /** Complete string type. */ parse(type) { + return string(type); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC90eXBlcy9zdHJpbmcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3RyaW5nIH0gZnJvbSBcIi4uLy4uL2ZsYWdzL3R5cGVzL3N0cmluZy50c1wiO1xuaW1wb3J0IHsgVHlwZSB9IGZyb20gXCIuLi90eXBlLnRzXCI7XG5pbXBvcnQgdHlwZSB7IEFyZ3VtZW50VmFsdWUgfSBmcm9tIFwiLi4vdHlwZXMudHNcIjtcblxuLyoqIFN0cmluZyB0eXBlLiBBbGxvd3MgYW55IHZhbHVlLiAqL1xuZXhwb3J0IGNsYXNzIFN0cmluZ1R5cGUgZXh0ZW5kcyBUeXBlPHN0cmluZz4ge1xuICAvKiogQ29tcGxldGUgc3RyaW5nIHR5cGUuICovXG4gIHB1YmxpYyBwYXJzZSh0eXBlOiBBcmd1bWVudFZhbHVlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3RyaW5nKHR5cGUpO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxNQUFNLFFBQVEsOEJBQThCO0FBQ3JELFNBQVMsSUFBSSxRQUFRLGFBQWE7QUFHbEMsbUNBQW1DLEdBQ25DLE9BQU8sTUFBTSxtQkFBbUI7RUFDOUIsMEJBQTBCLEdBQzFCLEFBQU8sTUFBTSxJQUFtQixFQUFVO0lBQ3hDLE9BQU8sT0FBTztFQUNoQjtBQUNGIn0= +// denoCacheMetadata=2377750236260082203,14401060473031173160
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/11d8d1c1ca991e6fea8175d2a82192fc662842142d60613e729b753652696aea.js b/vendor/gen/https/deno.land/11d8d1c1ca991e6fea8175d2a82192fc662842142d60613e729b753652696aea.js new file mode 100644 index 0000000..d571f48 --- /dev/null +++ b/vendor/gen/https/deno.land/11d8d1c1ca991e6fea8175d2a82192fc662842142d60613e729b753652696aea.js @@ -0,0 +1,72 @@ +import { log } from "./utils/log.ts"; +/** + * Script runner to store and run commands or execute functions + * It can execute the scripts and functions in parallel or sequentially + */ export default class Scripts { + /** The current working directory */ cwd; + /** All registered scripts and functions */ scripts = new Map(); + constructor(options = {}){ + this.cwd = options.cwd || Deno.cwd(); + } + /** Register one or more scripts under a specific name */ set(name, ...scripts) { + this.scripts.set(name, scripts); + } + /** Run one or more commands */ async run(...names) { + for (const name of names){ + const success = await this.#run(name); + if (!success) { + return false; + } + } + return true; + } + /** Run an individual script or function */ async #run(name) { + if (typeof name === "string" && this.scripts.has(name)) { + log.info(`[script] ${name}`); + const command = this.scripts.get(name); + return this.run(...command); + } + if (Array.isArray(name)) { + const results = await Promise.all(name.map((n)=>this.#run(n))); + return results.every((success)=>success); + } + if (typeof name === "function") { + return this.#runFunction(name); + } + return this.#runScript(name); + } + /** Run a function */ async #runFunction(fn) { + if (fn.name) { + log.info(`[script] ${fn.name}()`); + } + const result = await fn(); + return result !== false; + } + /** Run a shell command */ async #runScript(script) { + log.info(`[script] ${script}`); + const args = shArgs(script); + const cmd = args.shift(); + const command = new Deno.Command(cmd, { + args, + stdout: "inherit", + stderr: "inherit", + cwd: this.cwd + }); + const output = await command.output(); + return output.success; + } +} +/** Returns the shell arguments for the current platform */ function shArgs(script) { + return Deno.build.os === "windows" ? [ + "PowerShell.exe", + "-Command", + script + ] : [ + "/usr/bin/env", + "bash", + "-c", + script + ]; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS9zY3JpcHRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvZyB9IGZyb20gXCIuL3V0aWxzL2xvZy50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbnMge1xuICAvKiogVGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgKi9cbiAgY3dkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNjcmlwdCBydW5uZXIgdG8gc3RvcmUgYW5kIHJ1biBjb21tYW5kcyBvciBleGVjdXRlIGZ1bmN0aW9uc1xuICogSXQgY2FuIGV4ZWN1dGUgdGhlIHNjcmlwdHMgYW5kIGZ1bmN0aW9ucyBpbiBwYXJhbGxlbCBvciBzZXF1ZW50aWFsbHlcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2NyaXB0cyB7XG4gIC8qKiBUaGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSAqL1xuICBjd2Q6IHN0cmluZztcblxuICAvKiogQWxsIHJlZ2lzdGVyZWQgc2NyaXB0cyBhbmQgZnVuY3Rpb25zICovXG4gIHNjcmlwdHMgPSBuZXcgTWFwPHN0cmluZywgU2NyaXB0T3JGdW5jdGlvbltdPigpO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9wdGlvbnMgPSB7fSkge1xuICAgIHRoaXMuY3dkID0gb3B0aW9ucy5jd2QgfHwgRGVuby5jd2QoKTtcbiAgfVxuXG4gIC8qKiBSZWdpc3RlciBvbmUgb3IgbW9yZSBzY3JpcHRzIHVuZGVyIGEgc3BlY2lmaWMgbmFtZSAqL1xuICBzZXQobmFtZTogc3RyaW5nLCAuLi5zY3JpcHRzOiBTY3JpcHRPckZ1bmN0aW9uW10pOiB2b2lkIHtcbiAgICB0aGlzLnNjcmlwdHMuc2V0KG5hbWUsIHNjcmlwdHMpO1xuICB9XG5cbiAgLyoqIFJ1biBvbmUgb3IgbW9yZSBjb21tYW5kcyAqL1xuICBhc3luYyBydW4oXG4gICAgLi4ubmFtZXM6IFNjcmlwdE9yRnVuY3Rpb25bXVxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgbmFtZXMpIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCB0aGlzLiNydW4obmFtZSk7XG5cbiAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiogUnVuIGFuIGluZGl2aWR1YWwgc2NyaXB0IG9yIGZ1bmN0aW9uICovXG4gIGFzeW5jICNydW4obmFtZTogU2NyaXB0T3JGdW5jdGlvbik6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIGlmICh0eXBlb2YgbmFtZSA9PT0gXCJzdHJpbmdcIiAmJiB0aGlzLnNjcmlwdHMuaGFzKG5hbWUpKSB7XG4gICAgICBsb2cuaW5mbyhgW3NjcmlwdF0gJHtuYW1lfWApO1xuICAgICAgY29uc3QgY29tbWFuZCA9IHRoaXMuc2NyaXB0cy5nZXQobmFtZSkhO1xuICAgICAgcmV0dXJuIHRoaXMucnVuKC4uLmNvbW1hbmQpO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KG5hbWUpKSB7XG4gICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIG5hbWUubWFwKChuKSA9PiB0aGlzLiNydW4obikpLFxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXN1bHRzLmV2ZXJ5KChzdWNjZXNzKSA9PiBzdWNjZXNzKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG5hbWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIHRoaXMuI3J1bkZ1bmN0aW9uKG5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLiNydW5TY3JpcHQobmFtZSk7XG4gIH1cblxuICAvKiogUnVuIGEgZnVuY3Rpb24gKi9cbiAgYXN5bmMgI3J1bkZ1bmN0aW9uKGZuOiAoKSA9PiB1bmtub3duKSB7XG4gICAgaWYgKGZuLm5hbWUpIHtcbiAgICAgIGxvZy5pbmZvKGBbc2NyaXB0XSAke2ZuLm5hbWV9KClgKTtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZm4oKTtcbiAgICByZXR1cm4gcmVzdWx0ICE9PSBmYWxzZTtcbiAgfVxuXG4gIC8qKiBSdW4gYSBzaGVsbCBjb21tYW5kICovXG4gIGFzeW5jICNydW5TY3JpcHQoc2NyaXB0OiBzdHJpbmcpIHtcbiAgICBsb2cuaW5mbyhgW3NjcmlwdF0gJHtzY3JpcHR9YCk7XG5cbiAgICBjb25zdCBhcmdzID0gc2hBcmdzKHNjcmlwdCk7XG4gICAgY29uc3QgY21kID0gYXJncy5zaGlmdCgpITtcblxuICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgRGVuby5Db21tYW5kKGNtZCwge1xuICAgICAgYXJncyxcbiAgICAgIHN0ZG91dDogXCJpbmhlcml0XCIsXG4gICAgICBzdGRlcnI6IFwiaW5oZXJpdFwiLFxuICAgICAgY3dkOiB0aGlzLmN3ZCxcbiAgICB9KTtcblxuICAgIGNvbnN0IG91dHB1dCA9IGF3YWl0IGNvbW1hbmQub3V0cHV0KCk7XG4gICAgcmV0dXJuIG91dHB1dC5zdWNjZXNzO1xuICB9XG59XG5cbi8qKiBSZXR1cm5zIHRoZSBzaGVsbCBhcmd1bWVudHMgZm9yIHRoZSBjdXJyZW50IHBsYXRmb3JtICovXG5mdW5jdGlvbiBzaEFyZ3Moc2NyaXB0OiBzdHJpbmcpIHtcbiAgcmV0dXJuIERlbm8uYnVpbGQub3MgPT09IFwid2luZG93c1wiXG4gICAgPyBbXCJQb3dlclNoZWxsLmV4ZVwiLCBcIi1Db21tYW5kXCIsIHNjcmlwdF1cbiAgICA6IFtcIi91c3IvYmluL2VudlwiLCBcImJhc2hcIiwgXCItY1wiLCBzY3JpcHRdO1xufVxuXG4vKiogQSBzY3JpcHQgb3IgZnVuY3Rpb24gKi9cbmV4cG9ydCB0eXBlIFNjcmlwdE9yRnVuY3Rpb24gPSBzdHJpbmcgfCAoKCkgPT4gdW5rbm93bikgfCBTY3JpcHRPckZ1bmN0aW9uW107XG4iXSwibmFtZXMiOltdLCJtYXBwaW5n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 +// denoCacheMetadata=17080815661023851789,14652836808927501812
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/122ba645fcf60323afcb1a9c26faff8d78590b795fd06a6ba53216601c54ecad.js b/vendor/gen/https/deno.land/122ba645fcf60323afcb1a9c26faff8d78590b795fd06a6ba53216601c54ecad.js new file mode 100644 index 0000000..9f961e1 --- /dev/null +++ b/vendor/gen/https/deno.land/122ba645fcf60323afcb1a9c26faff8d78590b795fd06a6ba53216601c54ecad.js @@ -0,0 +1,26 @@ +import Site from "./core/site.ts"; +import url from "./plugins/url.ts"; +import json from "./plugins/json.ts"; +import markdown from "./plugins/markdown.ts"; +import modules from "./plugins/modules.ts"; +import vento from "./plugins/vento.ts"; +import search from "./plugins/search.ts"; +import paginate from "./plugins/paginate.ts"; +import toml from "./plugins/toml.ts"; +import yaml from "./plugins/yaml.ts"; +import { getOptionsFromCli } from "./core/utils/cli_options.ts"; +export default function lume(options = {}, pluginOptions = {}, cliOptions = true) { + if (cliOptions) { + getOptionsFromCli(options); + } + const site = new Site(options); + // Ignore some files by the watcher + site.options.watcher.ignore.push("/deno.lock"); + site.options.watcher.ignore.push("/node_modules/.deno"); + site.options.watcher.ignore.push("/.git"); + site.options.watcher.ignore.push("/_cache"); + site.options.watcher.ignore.push((path)=>path.endsWith("/.DS_Store")); + return site.ignore("node_modules").ignore("import_map.json").ignore("deno.json").ignore("deno.jsonc").ignore("deno.lock").ignore((path)=>path.endsWith(".d.ts")).mergeKey("tags", "stringArray").use(url()).use(json(pluginOptions.json)).use(markdown(pluginOptions.markdown)).use(modules(pluginOptions.modules)).use(vento(pluginOptions.vento)).use(paginate(pluginOptions.paginate)).use(search()).use(toml(pluginOptions.toml)).use(yaml(pluginOptions.yaml)); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvbW9kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTaXRlIGZyb20gXCIuL2NvcmUvc2l0ZS50c1wiO1xuaW1wb3J0IHVybCBmcm9tIFwiLi9wbHVnaW5zL3VybC50c1wiO1xuaW1wb3J0IGpzb24sIHsgT3B0aW9ucyBhcyBKc29uT3B0aW9ucyB9IGZyb20gXCIuL3BsdWdpbnMvanNvbi50c1wiO1xuaW1wb3J0IG1hcmtkb3duLCB7IE9wdGlvbnMgYXMgTWFya2Rvd25PcHRpb25zIH0gZnJvbSBcIi4vcGx1Z2lucy9tYXJrZG93bi50c1wiO1xuaW1wb3J0IG1vZHVsZXMsIHsgT3B0aW9ucyBhcyBNb2R1bGVzT3B0aW9ucyB9IGZyb20gXCIuL3BsdWdpbnMvbW9kdWxlcy50c1wiO1xuaW1wb3J0IHZlbnRvLCB7IE9wdGlvbnMgYXMgVmVudG9PcHRpb25zIH0gZnJvbSBcIi4vcGx1Z2lucy92ZW50by50c1wiO1xuaW1wb3J0IHNlYXJjaCBmcm9tIFwiLi9wbHVnaW5zL3NlYXJjaC50c1wiO1xuaW1wb3J0IHBhZ2luYXRlLCB7IE9wdGlvbnMgYXMgUGFnaW5hdGVPcHRpb25zIH0gZnJvbSBcIi4vcGx1Z2lucy9wYWdpbmF0ZS50c1wiO1xuaW1wb3J0IHRvbWwsIHsgT3B0aW9ucyBhcyBUb21sT3B0aW9ucyB9IGZyb20gXCIuL3BsdWdpbnMvdG9tbC50c1wiO1xuaW1wb3J0IHlhbWwsIHsgT3B0aW9ucyBhcyBZYW1sT3B0aW9ucyB9IGZyb20gXCIuL3BsdWdpbnMveWFtbC50c1wiO1xuaW1wb3J0IHsgZ2V0T3B0aW9uc0Zyb21DbGkgfSBmcm9tIFwiLi9jb3JlL3V0aWxzL2NsaV9vcHRpb25zLnRzXCI7XG5cbmltcG9ydCB0eXBlIHsgRGVlcFBhcnRpYWwgfSBmcm9tIFwiLi9jb3JlL3V0aWxzL29iamVjdC50c1wiO1xuaW1wb3J0IHR5cGUgeyBTaXRlT3B0aW9ucyB9IGZyb20gXCIuL2NvcmUvc2l0ZS50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbk9wdGlvbnMge1xuICBqc29uPzogSnNvbk9wdGlvbnM7XG4gIG1hcmtkb3duPzogTWFya2Rvd25PcHRpb25zO1xuICBtb2R1bGVzPzogTW9kdWxlc09wdGlvbnM7XG4gIHZlbnRvPzogVmVudG9PcHRpb25zO1xuICBwYWdpbmF0ZT86IFBhZ2luYXRlT3B0aW9ucztcbiAgdG9tbD86IFRvbWxPcHRpb25zO1xuICB5YW1sPzogWWFtbE9wdGlvbnM7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGx1bWUoXG4gIG9wdGlvbnM6IERlZXBQYXJ0aWFsPFNpdGVPcHRpb25zPiA9IHt9LFxuICBwbHVnaW5PcHRpb25zOiBQbHVnaW5PcHRpb25zID0ge30sXG4gIGNsaU9wdGlvbnMgPSB0cnVlLFxuKTogU2l0ZSB7XG4gIGlmIChjbGlPcHRpb25zKSB7XG4gICAgZ2V0T3B0aW9uc0Zyb21DbGkob3B0aW9ucyk7XG4gIH1cblxuICBjb25zdCBzaXRlID0gbmV3IFNpdGUob3B0aW9ucyBhcyBQYXJ0aWFsPFNpdGVPcHRpb25zPik7XG5cbiAgLy8gSWdub3JlIHNvbWUgZmlsZXMgYnkgdGhlIHdhdGNoZXJcbiAgc2l0ZS5vcHRpb25zLndhdGNoZXIuaWdub3JlLnB1c2goXCIvZGVuby5sb2NrXCIpO1xuICBzaXRlLm9wdGlvbnMud2F0Y2hlci5pZ25vcmUucHVzaChcIi9ub2RlX21vZHVsZXMvLmRlbm9cIik7XG4gIHNpdGUub3B0aW9ucy53YXRjaGVyLmlnbm9yZS5wdXNoKFwiLy5naXRcIik7XG4gIHNpdGUub3B0aW9ucy53YXRjaGVyLmlnbm9yZS5wdXNoKFwiL19jYWNoZVwiKTtcbiAgc2l0ZS5vcHRpb25zLndhdGNoZXIuaWdub3JlLnB1c2goKHBhdGgpID0+IHBhdGguZW5kc1dpdGgoXCIvLkRTX1N0b3JlXCIpKTtcblxuICByZXR1cm4gc2l0ZVxuICAgIC5pZ25vcmUoXCJub2RlX21vZHVsZXNcIilcbiAgICAuaWdub3JlKFwiaW1wb3J0X21hcC5qc29uXCIpXG4gICAgLmlnbm9yZShcImRlbm8uanNvblwiKVxuICAgIC5pZ25vcmUoXCJkZW5vLmpzb25jXCIpXG4gICAgLmlnbm9yZShcImRlbm8ubG9ja1wiKVxuICAgIC5pZ25vcmUoKHBhdGgpID0+IHBhdGguZW5kc1dpdGgoXCIuZC50c1wiKSlcbiAgICAubWVyZ2VLZXkoXCJ0YWdzXCIsIFwic3RyaW5nQXJyYXlcIilcbiAgICAudXNlKHVybCgpKVxuICAgIC51c2UoanNvbihwbHVnaW5PcHRpb25zLmpzb24pKVxuICAgIC51c2UobWFya2Rvd24ocGx1Z2luT3B0aW9ucy5tYXJrZG93bikpXG4gICAgLnVzZShtb2R1bGVzKHBsdWdpbk9wdGlvbnMubW9kdWxlcykpXG4gICAgLnVzZSh2ZW50byhwbHVnaW5PcHRpb25zLnZlbnRvKSlcbiAgICAudXNlKHBhZ2luYXRlKHBsdWdpbk9wdGlvbnMucGFnaW5hdGUpKVxuICAgIC51c2Uoc2VhcmNoKCkpXG4gICAgLnVzZSh0b21sKHBsdWdpbk9wdGlvbnMudG9tbCkpXG4gICAgLnVzZSh5YW1sKHBsdWdpbk9wdGlvbnMueWFtbCkpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sVUFBVSxpQkFBaUI7QUFDbEMsT0FBTyxTQUFTLG1CQUFtQjtBQUNuQyxPQUFPLFVBQXNDLG9CQUFvQjtBQUNqRSxPQUFPLGNBQThDLHdCQUF3QjtBQUM3RSxPQUFPLGFBQTRDLHVCQUF1QjtBQUMxRSxPQUFPLFdBQXdDLHFCQUFxQjtBQUNwRSxPQUFPLFlBQVksc0JBQXNCO0FBQ3pDLE9BQU8sY0FBOEMsd0JBQXdCO0FBQzdFLE9BQU8sVUFBc0Msb0JBQW9CO0FBQ2pFLE9BQU8sVUFBc0Msb0JBQW9CO0FBQ2pFLFNBQVMsaUJBQWlCLFFBQVEsOEJBQThCO0FBZWhFLGVBQWUsU0FBUyxLQUN0QixVQUFvQyxDQUFDLENBQUMsRUFDdEMsZ0JBQStCLENBQUMsQ0FBQyxFQUNqQyxhQUFhLElBQUk7RUFFakIsSUFBSSxZQUFZO0lBQ2Qsa0JBQWtCO0VBQ3BCO0VBRUEsTUFBTSxPQUFPLElBQUksS0FBSztFQUV0QixtQ0FBbUM7RUFDbkMsS0FBSyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7RUFDakMsS0FBSyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7RUFDakMsS0FBSyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7RUFDakMsS0FBSyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7RUFDakMsS0FBSyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFTLEtBQUssUUFBUSxDQUFDO0VBRXpELE9BQU8sS0FDSixNQUFNLENBQUMsZ0JBQ1AsTUFBTSxDQUFDLG1CQUNQLE1BQU0sQ0FBQyxhQUNQLE1BQU0sQ0FBQyxjQUNQLE1BQU0sQ0FBQyxhQUNQLE1BQU0sQ0FBQyxDQUFDLE9BQVMsS0FBSyxRQUFRLENBQUMsVUFDL0IsUUFBUSxDQUFDLFFBQVEsZUFDakIsR0FBRyxDQUFDLE9BQ0osR0FBRyxDQUFDLEtBQUssY0FBYyxJQUFJLEdBQzNCLEdBQUcsQ0FBQyxTQUFTLGNBQWMsUUFBUSxHQUNuQyxHQUFHLENBQUMsUUFBUSxjQUFjLE9BQU8sR0FDakMsR0FBRyxDQUFDLE1BQU0sY0FBYyxLQUFLLEdBQzdCLEdBQUcsQ0FBQyxTQUFTLGNBQWMsUUFBUSxHQUNuQyxHQUFHLENBQUMsVUFDSixHQUFHLENBQUMsS0FBSyxjQUFjLElBQUksR0FDM0IsR0FBRyxDQUFDLEtBQUssY0FBYyxJQUFJO0FBQ2hDIn0= +// denoCacheMetadata=9242829105867286239,18287443376734203278
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/140822725cd5bead60b2a9d3b8d43c48d8a4154f19d7f8f93dfb4bab6fe205f5.js b/vendor/gen/https/deno.land/140822725cd5bead60b2a9d3b8d43c48d8a4154f19d7f8f93dfb4bab6fe205f5.js new file mode 100644 index 0000000..501d732 --- /dev/null +++ b/vendor/gen/https/deno.land/140822725cd5bead60b2a9d3b8d43c48d8a4154f19d7f8f93dfb4bab6fe205f5.js @@ -0,0 +1,63 @@ +import { parse, parseFrag } from "./parser.ts"; +import { CTOR_KEY } from "./constructor-lock.ts"; +import { Comment, NodeType, Text } from "./dom/node.ts"; +import { DocumentType } from "./dom/document.ts"; +import { DocumentFragment } from "./dom/document-fragment.ts"; +import { HTMLTemplateElement } from "./dom/elements/html-template-element.ts"; +import { Element } from "./dom/element.ts"; +export function nodesFromString(html) { + const parsed = JSON.parse(parse(html)); + const node = nodeFromArray(parsed, null); + return node; +} +export function fragmentNodesFromString(html, contextLocalName) { + const parsed = JSON.parse(parseFrag(html, contextLocalName)); + const node = nodeFromArray(parsed, null); + return node; +} +function nodeFromArray(data, parentNode) { + // For reference only: + // type node = [NodeType, nodeName, attributes, node[]] + // | [NodeType, characterData] + // <template> element gets special treatment, until + // we implement all the HTML elements + if (data[1] === "template") { + const content = nodeFromArray(data[3], null); + const contentFrag = new DocumentFragment(); + const fragMutator = contentFrag._getChildNodesMutator(); + for (const child of content.childNodes){ + fragMutator.push(child); + child._setParent(contentFrag); + } + return new HTMLTemplateElement(parentNode, data[2], CTOR_KEY, contentFrag); + } + const elm = new Element(data[1], parentNode, data[2], CTOR_KEY); + const childNodes = elm._getChildNodesMutator(); + let childNode; + for (const child of data.slice(3)){ + switch(child[0]){ + case NodeType.TEXT_NODE: + childNode = new Text(child[1]); + childNode.parentNode = elm; + childNodes.push(childNode); + break; + case NodeType.COMMENT_NODE: + childNode = new Comment(child[1]); + childNode.parentNode = elm; + childNodes.push(childNode); + break; + case NodeType.DOCUMENT_NODE: + case NodeType.ELEMENT_NODE: + nodeFromArray(child, elm); + break; + case NodeType.DOCUMENT_TYPE_NODE: + childNode = new DocumentType(child[1], child[2], child[3], CTOR_KEY); + childNode.parentNode = elm; + childNodes.push(childNode); + break; + } + } + return elm; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvZGVub19kb21AdjAuMS40OS9zcmMvZGVzZXJpYWxpemUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGFyc2UsIHBhcnNlRnJhZyB9IGZyb20gXCIuL3BhcnNlci50c1wiO1xuaW1wb3J0IHsgQ1RPUl9LRVkgfSBmcm9tIFwiLi9jb25zdHJ1Y3Rvci1sb2NrLnRzXCI7XG5pbXBvcnQgeyBDb21tZW50LCBOb2RlLCBOb2RlVHlwZSwgVGV4dCB9IGZyb20gXCIuL2RvbS9ub2RlLnRzXCI7XG5pbXBvcnQgeyBEb2N1bWVudFR5cGUgfSBmcm9tIFwiLi9kb20vZG9jdW1lbnQudHNcIjtcbmltcG9ydCB7IERvY3VtZW50RnJhZ21lbnQgfSBmcm9tIFwiLi9kb20vZG9jdW1lbnQtZnJhZ21lbnQudHNcIjtcbmltcG9ydCB7IEhUTUxUZW1wbGF0ZUVsZW1lbnQgfSBmcm9tIFwiLi9kb20vZWxlbWVudHMvaHRtbC10ZW1wbGF0ZS1lbGVtZW50LnRzXCI7XG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIi4vZG9tL2VsZW1lbnQudHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGVzRnJvbVN0cmluZyhodG1sOiBzdHJpbmcpOiBOb2RlIHtcbiAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShwYXJzZShodG1sKSk7XG4gIGNvbnN0IG5vZGUgPSBub2RlRnJvbUFycmF5KHBhcnNlZCwgbnVsbCk7XG5cbiAgcmV0dXJuIG5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFnbWVudE5vZGVzRnJvbVN0cmluZyhcbiAgaHRtbDogc3RyaW5nLFxuICBjb250ZXh0TG9jYWxOYW1lOiBzdHJpbmcsXG4pOiBOb2RlIHtcbiAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShwYXJzZUZyYWcoaHRtbCwgY29udGV4dExvY2FsTmFtZSkpO1xuICBjb25zdCBub2RlID0gbm9kZUZyb21BcnJheShwYXJzZWQsIG51bGwpO1xuXG4gIHJldHVybiBub2RlO1xufVxuXG5mdW5jdGlvbiBub2RlRnJvbUFycmF5KGRhdGE6IGFueSwgcGFyZW50Tm9kZTogTm9kZSB8IG51bGwpOiBOb2RlIHtcbiAgLy8gRm9yIHJlZmVyZW5jZSBvbmx5OlxuICAvLyB0eXBlIG5vZGUgPSBbTm9kZVR5cGUsIG5vZGVOYW1lLCBhdHRyaWJ1dGVzLCBub2RlW11dXG4gIC8vICAgICAgICAgICAgIHwgW05vZGVUeXBlLCBjaGFyYWN0ZXJEYXRhXVxuXG4gIC8vIDx0ZW1wbGF0ZT4gZWxlbWVudCBnZXRzIHNwZWNpYWwgdHJlYXRtZW50LCB1bnRpbFxuICAvLyB3ZSBpbXBsZW1lbnQgYWxsIHRoZSBIVE1MIGVsZW1lbnRzXG4gIGlmIChkYXRhWzFdID09PSBcInRlbXBsYXRlXCIpIHtcbiAgICBjb25zdCBjb250ZW50ID0gbm9kZUZyb21BcnJheShkYXRhWzNdLCBudWxsKTtcbiAgICBjb25zdCBjb250ZW50RnJhZyA9IG5ldyBEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgY29uc3QgZnJhZ011dGF0b3IgPSBjb250ZW50RnJhZy5fZ2V0Q2hpbGROb2Rlc011dGF0b3IoKTtcblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY29udGVudC5jaGlsZE5vZGVzKSB7XG4gICAgICBmcmFnTXV0YXRvci5wdXNoKGNoaWxkKTtcbiAgICAgIGNoaWxkLl9zZXRQYXJlbnQoY29udGVudEZyYWcpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSFRNTFRlbXBsYXRlRWxlbWVudChcbiAgICAgIHBhcmVudE5vZGUsXG4gICAgICBkYXRhWzJdLFxuICAgICAgQ1RPUl9LRVksXG4gICAgICBjb250ZW50RnJhZyxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgZWxtID0gbmV3IEVsZW1lbnQoZGF0YVsxXSwgcGFyZW50Tm9kZSwgZGF0YVsyXSwgQ1RPUl9LRVkpO1xuICBjb25zdCBjaGlsZE5vZGVzID0gZWxtLl9nZXRDaGlsZE5vZGVzTXV0YXRvcigpO1xuICBsZXQgY2hpbGROb2RlOiBOb2RlO1xuXG4gIGZvciAoY29uc3QgY2hpbGQgb2YgZGF0YS5zbGljZSgzKSkge1xuICAgIHN3aXRjaCAoY2hpbGRbMF0pIHtcbiAgICAgIGNhc2UgTm9kZVR5cGUuVEVYVF9OT0RFOlxuICAgICAgICBjaGlsZE5vZGUgPSBuZXcgVGV4dChjaGlsZFsxXSk7XG4gICAgICAgIGNoaWxkTm9kZS5wYXJlbnROb2RlID0gPEVsZW1lbnQ+IGVsbTtcbiAgICAgICAgY2hpbGROb2Rlcy5wdXNoKGNoaWxkTm9kZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIE5vZGVUeXBlLkNPTU1FTlRfTk9ERTpcbiAgICAgICAgY2hpbGROb2RlID0gbmV3IENvbW1lbnQoY2hpbGRbMV0pO1xuICAgICAgICBjaGlsZE5vZGUucGFyZW50Tm9kZSA9IDxFbGVtZW50PiBlbG07XG4gICAgICAgIGNoaWxkTm9kZXMucHVzaChjaGlsZE5vZGUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBOb2RlVHlwZS5ET0NVTUVOVF9OT0RFOlxuICAgICAgY2FzZSBOb2RlVHlwZS5FTEVNRU5UX05PREU6XG4gICAgICAgIG5vZGVGcm9tQXJyYXkoY2hpbGQsIGVsbSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIE5vZGVUeXBlLkRPQ1VNRU5UX1RZUEVfTk9ERTpcbiAgICAgICAgY2hpbGROb2RlID0gbmV3IERvY3VtZW50VHlwZShjaGlsZFsxXSwgY2hpbGRbMl0sIGNoaWxkWzNdLCBDVE9SX0tFWSk7XG4gICAgICAgIGNoaWxkTm9kZS5wYXJlbnROb2RlID0gPEVsZW1lbnQ+IGVsbTtcbiAgICAgICAgY2hpbGROb2Rlcy5wdXNoKGNoaWxkTm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlbG07XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxLQUFLLEVBQUUsU0FBUyxRQUFRLGNBQWM7QUFDL0MsU0FBUyxRQUFRLFFBQVEsd0JBQXdCO0FBQ2pELFNBQVMsT0FBTyxFQUFRLFFBQVEsRUFBRSxJQUFJLFFBQVEsZ0JBQWdCO0FBQzlELFNBQVMsWUFBWSxRQUFRLG9CQUFvQjtBQUNqRCxTQUFTLGdCQUFnQixRQUFRLDZCQUE2QjtBQUM5RCxTQUFTLG1CQUFtQixRQUFRLDBDQUEwQztBQUM5RSxTQUFTLE9BQU8sUUFBUSxtQkFBbUI7QUFFM0MsT0FBTyxTQUFTLGdCQUFnQixJQUFZO0VBQzFDLE1BQU0sU0FBUyxLQUFLLEtBQUssQ0FBQyxNQUFNO0VBQ2hDLE1BQU0sT0FBTyxjQUFjLFFBQVE7RUFFbkMsT0FBTztBQUNUO0FBRUEsT0FBTyxTQUFTLHdCQUNkLElBQVksRUFDWixnQkFBd0I7RUFFeEIsTUFBTSxTQUFTLEtBQUssS0FBSyxDQUFDLFVBQVUsTUFBTTtFQUMxQyxNQUFNLE9BQU8sY0FBYyxRQUFRO0VBRW5DLE9BQU87QUFDVDtBQUVBLFNBQVMsY0FBYyxJQUFTLEVBQUUsVUFBdUI7RUFDdkQsc0JBQXNCO0VBQ3RCLHVEQUF1RDtFQUN2RCwwQ0FBMEM7RUFFMUMsbURBQW1EO0VBQ25ELHFDQUFxQztFQUNyQyxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssWUFBWTtJQUMxQixNQUFNLFVBQVUsY0FBYyxJQUFJLENBQUMsRUFBRSxFQUFFO0lBQ3ZDLE1BQU0sY0FBYyxJQUFJO0lBQ3hCLE1BQU0sY0FBYyxZQUFZLHFCQUFxQjtJQUVyRCxLQUFLLE1BQU0sU0FBUyxRQUFRLFVBQVUsQ0FBRTtNQUN0QyxZQUFZLElBQUksQ0FBQztNQUNqQixNQUFNLFVBQVUsQ0FBQztJQUNuQjtJQUVBLE9BQU8sSUFBSSxvQkFDVCxZQUNBLElBQUksQ0FBQyxFQUFFLEVBQ1AsVUFDQTtFQUVKO0VBRUEsTUFBTSxNQUFNLElBQUksUUFBUSxJQUFJLENBQUMsRUFBRSxFQUFFLFlBQVksSUFBSSxDQUFDLEVBQUUsRUFBRTtFQUN0RCxNQUFNLGFBQWEsSUFBSSxxQkFBcUI7RUFDNUMsSUFBSTtFQUVKLEtBQUssTUFBTSxTQUFTLEtBQUssS0FBSyxDQUFDLEdBQUk7SUFDakMsT0FBUSxLQUFLLENBQUMsRUFBRTtNQUNkLEtBQUssU0FBUyxTQUFTO1FBQ3JCLFlBQVksSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO1FBQzdCLFVBQVUsVUFBVSxHQUFhO1FBQ2pDLFdBQVcsSUFBSSxDQUFDO1FBQ2hCO01BRUYsS0FBSyxTQUFTLFlBQVk7UUFDeEIsWUFBWSxJQUFJLFFBQVEsS0FBSyxDQUFDLEVBQUU7UUFDaEMsVUFBVSxVQUFVLEdBQWE7UUFDakMsV0FBVyxJQUFJLENBQUM7UUFDaEI7TUFFRixLQUFLLFNBQVMsYUFBYTtNQUMzQixLQUFLLFNBQVMsWUFBWTtRQUN4QixjQUFjLE9BQU87UUFDckI7TUFFRixLQUFLLFNBQVMsa0JBQWtCO1FBQzlCLFlBQVksSUFBSSxhQUFhLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1FBQzNELFVBQVUsVUFBVSxHQUFhO1FBQ2pDLFdBQVcsSUFBSSxDQUFDO1FBQ2hCO0lBQ0o7RUFDRjtFQUVBLE9BQU87QUFDVCJ9 +// denoCacheMetadata=14175222346964603523,8709987795125251490
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/14863e3b2b9ebce9db02ba80f01114277213f612399d0e198773bda87cacf032.js b/vendor/gen/https/deno.land/14863e3b2b9ebce9db02ba80f01114277213f612399d0e198773bda87cacf032.js new file mode 100644 index 0000000..5a2cbc6 --- /dev/null +++ b/vendor/gen/https/deno.land/14863e3b2b9ebce9db02ba80f01114277213f612399d0e198773bda87cacf032.js @@ -0,0 +1,72 @@ +import { GenericPrompt } from "./_generic_prompt.ts"; +import { brightBlue, underline, yellow } from "./deps.ts"; +import { Figures } from "./figures.ts"; +import { GenericInput } from "./_generic_input.ts"; +/** Secret prompt representation. */ export class Secret extends GenericInput { + /** Execute the prompt and show cursor on end. */ static prompt(options) { + if (typeof options === "string") { + options = { + message: options + }; + } + return new this({ + pointer: brightBlue(Figures.POINTER_SMALL), + prefix: yellow("? "), + indent: " ", + label: "Password", + hidden: false, + minLength: 0, + maxLength: Infinity, + ...options + }).prompt(); + } + /** + * Inject prompt value. Can be used for unit tests or pre selections. + * @param value Input value. + */ static inject(value) { + GenericPrompt.inject(value); + } + input() { + return underline(this.settings.hidden ? "" : "*".repeat(this.inputValue.length)); + } + /** Read user input. */ read() { + if (this.settings.hidden) { + this.tty.cursorHide(); + } + return super.read(); + } + /** + * Validate input value. + * @param value User input value. + * @return True on success, false or error message on error. + */ validate(value) { + if (typeof value !== "string") { + return false; + } + if (value.length < this.settings.minLength) { + return `${this.settings.label} must be longer than ${this.settings.minLength} but has a length of ${value.length}.`; + } + if (value.length > this.settings.maxLength) { + return `${this.settings.label} can't be longer than ${this.settings.maxLength} but has a length of ${value.length}.`; + } + return true; + } + /** + * Map input value to output value. + * @param value Input value. + * @return Output value. + */ transform(value) { + return value; + } + /** + * Format output value. + * @param value Output value. + */ format(value) { + return this.settings.hidden ? "*".repeat(8) : "*".repeat(value.length); + } + /** Get input input. */ getValue() { + return this.inputValue; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvcHJvbXB0L3NlY3JldC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW5lcmljUHJvbXB0IH0gZnJvbSBcIi4vX2dlbmVyaWNfcHJvbXB0LnRzXCI7XG5pbXBvcnQgeyBicmlnaHRCbHVlLCB1bmRlcmxpbmUsIHllbGxvdyB9IGZyb20gXCIuL2RlcHMudHNcIjtcbmltcG9ydCB7IEZpZ3VyZXMgfSBmcm9tIFwiLi9maWd1cmVzLnRzXCI7XG5pbXBvcnQge1xuICBHZW5lcmljSW5wdXQsXG4gIEdlbmVyaWNJbnB1dEtleXMsXG4gIEdlbmVyaWNJbnB1dFByb21wdE9wdGlvbnMsXG4gIEdlbmVyaWNJbnB1dFByb21wdFNldHRpbmdzLFxufSBmcm9tIFwiLi9fZ2VuZXJpY19pbnB1dC50c1wiO1xuXG4vKiogU2VjcmV0IGtleSBvcHRpb25zLiAqL1xuZXhwb3J0IHR5cGUgU2VjcmV0S2V5cyA9IEdlbmVyaWNJbnB1dEtleXM7XG5cbi8qKiBTZWNyZXQgcHJvbXB0IG9wdGlvbnMuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3JldE9wdGlvbnNcbiAgZXh0ZW5kcyBHZW5lcmljSW5wdXRQcm9tcHRPcHRpb25zPHN0cmluZywgc3RyaW5nPiB7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBtaW5MZW5ndGg/OiBudW1iZXI7XG4gIG1heExlbmd0aD86IG51bWJlcjtcbiAga2V5cz86IFNlY3JldEtleXM7XG59XG5cbi8qKiBTZWNyZXQgcHJvbXB0IHNldHRpbmdzLiAqL1xuaW50ZXJmYWNlIFNlY3JldFNldHRpbmdzIGV4dGVuZHMgR2VuZXJpY0lucHV0UHJvbXB0U2V0dGluZ3M8c3RyaW5nLCBzdHJpbmc+IHtcbiAgbGFiZWw6IHN0cmluZztcbiAgaGlkZGVuOiBib29sZWFuO1xuICBtaW5MZW5ndGg6IG51bWJlcjtcbiAgbWF4TGVuZ3RoOiBudW1iZXI7XG4gIGtleXM/OiBTZWNyZXRLZXlzO1xufVxuXG4vKiogU2VjcmV0IHByb21wdCByZXByZXNlbnRhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBTZWNyZXQgZXh0ZW5kcyBHZW5lcmljSW5wdXQ8c3RyaW5nLCBzdHJpbmcsIFNlY3JldFNldHRpbmdzPiB7XG4gIC8qKiBFeGVjdXRlIHRoZSBwcm9tcHQgYW5kIHNob3cgY3Vyc29yIG9uIGVuZC4gKi9cbiAgcHVibGljIHN0YXRpYyBwcm9tcHQob3B0aW9uczogc3RyaW5nIHwgU2VjcmV0T3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBvcHRpb25zID0geyBtZXNzYWdlOiBvcHRpb25zIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyB0aGlzKHtcbiAgICAgIHBvaW50ZXI6IGJyaWdodEJsdWUoRmlndXJlcy5QT0lOVEVSX1NNQUxMKSxcbiAgICAgIHByZWZpeDogeWVsbG93KFwiPyBcIiksXG4gICAgICBpbmRlbnQ6IFwiIFwiLFxuICAgICAgbGFiZWw6IFwiUGFzc3dvcmRcIixcbiAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICBtaW5MZW5ndGg6IDAsXG4gICAgICBtYXhMZW5ndGg6IEluZmluaXR5LFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KS5wcm9tcHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmplY3QgcHJvbXB0IHZhbHVlLiBDYW4gYmUgdXNlZCBmb3IgdW5pdCB0ZXN0cyBvciBwcmUgc2VsZWN0aW9ucy5cbiAgICogQHBhcmFtIHZhbHVlIElucHV0IHZhbHVlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpbmplY3QodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIEdlbmVyaWNQcm9tcHQuaW5qZWN0KHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnB1dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB1bmRlcmxpbmUoXG4gICAgICB0aGlzLnNldHRpbmdzLmhpZGRlbiA/IFwiXCIgOiBcIipcIi5yZXBlYXQodGhpcy5pbnB1dFZhbHVlLmxlbmd0aCksXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBSZWFkIHVzZXIgaW5wdXQuICovXG4gIHByb3RlY3RlZCByZWFkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLnNldHRpbmdzLmhpZGRlbikge1xuICAgICAgdGhpcy50dHkuY3Vyc29ySGlkZSgpO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIucmVhZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGlucHV0IHZhbHVlLlxuICAgKiBAcGFyYW0gdmFsdWUgVXNlciBpbnB1dCB2YWx1ZS5cbiAgICogQHJldHVybiBUcnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9yIGVycm9yIG1lc3NhZ2Ugb24gZXJyb3IuXG4gICAqL1xuICBwcm90ZWN0ZWQgdmFsaWRhdGUodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4gfCBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLmxlbmd0aCA8IHRoaXMuc2V0dGluZ3MubWluTGVuZ3RoKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5zZXR0aW5ncy5sYWJlbH0gbXVzdCBiZSBsb25nZXIgdGhhbiAke3RoaXMuc2V0dGluZ3MubWluTGVuZ3RofSBidXQgaGFzIGEgbGVuZ3RoIG9mICR7dmFsdWUubGVuZ3RofS5gO1xuICAgIH1cbiAgICBpZiAodmFsdWUubGVuZ3RoID4gdGhpcy5zZXR0aW5ncy5tYXhMZW5ndGgpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLnNldHRpbmdzLmxhYmVsfSBjYW4ndCBiZSBsb25nZXIgdGhhbiAke3RoaXMuc2V0dGluZ3MubWF4TGVuZ3RofSBidXQgaGFzIGEgbGVuZ3RoIG9mICR7dmFsdWUubGVuZ3RofS5gO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXAgaW5wdXQgdmFsdWUgdG8gb3V0cHV0IHZhbHVlLlxuICAgKiBAcGFyYW0gdmFsdWUgSW5wdXQgdmFsdWUuXG4gICAqIEByZXR1cm4gT3V0cHV0IHZhbHVlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0IG91dHB1dCB2YWx1ZS5cbiAgICogQHBhcmFtIHZhbHVlIE91dHB1dCB2YWx1ZS5cbiAgICovXG4gIHByb3RlY3RlZCBmb3JtYXQodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3MuaGlkZGVuID8gXCIqXCIucmVwZWF0KDgpIDogXCIqXCIucmVwZWF0KHZhbHVlLmxlbmd0aCk7XG4gIH1cblxuICAvKiogR2V0IGlucHV0IGlucHV0LiAqL1xuICBwcm90ZWN0ZWQgZ2V0VmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dFZhbHVlO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxhQUFhLFFBQVEsdUJBQXVCO0FBQ3JELFNBQVMsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsWUFBWTtBQUMxRCxTQUFTLE9BQU8sUUFBUSxlQUFlO0FBQ3ZDLFNBQ0UsWUFBWSxRQUlQLHNCQUFzQjtBQXdCN0Isa0NBQWtDLEdBQ2xDLE9BQU8sTUFBTSxlQUFlO0VBQzFCLCtDQUErQyxHQUMvQyxPQUFjLE9BQU8sT0FBK0IsRUFBbUI7SUFDckUsSUFBSSxPQUFPLFlBQVksVUFBVTtNQUMvQixVQUFVO1FBQUUsU0FBUztNQUFRO0lBQy9CO0lBRUEsT0FBTyxJQUFJLElBQUksQ0FBQztNQUNkLFNBQVMsV0FBVyxRQUFRLGFBQWE7TUFDekMsUUFBUSxPQUFPO01BQ2YsUUFBUTtNQUNSLE9BQU87TUFDUCxRQUFRO01BQ1IsV0FBVztNQUNYLFdBQVc7TUFDWCxHQUFHLE9BQU87SUFDWixHQUFHLE1BQU07RUFDWDtFQUVBOzs7R0FHQyxHQUNELE9BQWMsT0FBTyxLQUFhLEVBQVE7SUFDeEMsY0FBYyxNQUFNLENBQUM7RUFDdkI7RUFFVSxRQUFnQjtJQUN4QixPQUFPLFVBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsS0FBSyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU07RUFFakU7RUFFQSxxQkFBcUIsR0FDckIsQUFBVSxPQUF5QjtJQUNqQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO01BQ3hCLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVTtJQUNyQjtJQUNBLE9BQU8sS0FBSyxDQUFDO0VBQ2Y7RUFFQTs7OztHQUlDLEdBQ0QsQUFBVSxTQUFTLEtBQWEsRUFBb0I7SUFDbEQsSUFBSSxPQUFPLFVBQVUsVUFBVTtNQUM3QixPQUFPO0lBQ1Q7SUFDQSxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFO01BQzFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckg7SUFDQSxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFO01BQzFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDdEg7SUFDQSxPQUFPO0VBQ1Q7RUFFQTs7OztHQUlDLEdBQ0QsQUFBVSxVQUFVLEtBQWEsRUFBc0I7SUFDckQsT0FBTztFQUNUO0VBRUE7OztHQUdDLEdBQ0QsQUFBVSxPQUFPLEtBQWEsRUFBVTtJQUN0QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsTUFBTSxNQUFNO0VBQ3ZFO0VBRUEscUJBQXFCLEdBQ3JCLEFBQVUsV0FBbUI7SUFDM0IsT0FBTyxJQUFJLENBQUMsVUFBVTtFQUN4QjtBQUNGIn0= +// denoCacheMetadata=5105239299619113651,16748191054060486251
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/15a8f8fb8e6473afdb506294ce0868e983280c6427db20b73301a375fed03774.js b/vendor/gen/https/deno.land/15a8f8fb8e6473afdb506294ce0868e983280c6427db20b73301a375fed03774.js new file mode 100644 index 0000000..8a15d33 --- /dev/null +++ b/vendor/gen/https/deno.land/15a8f8fb8e6473afdb506294ce0868e983280c6427db20b73301a375fed03774.js @@ -0,0 +1,42 @@ +export default function() { + return (env)=>{ + env.tags.push(functionTag); + }; +} +function functionTag(env, code, _output, tokens) { + if (!code.match(/(export\s+)?(async\s+)?function\s/)) { + return; + } + const match = code.match(/^(export\s+)?(async\s+)?function\s+(\w+)\s*(\([^)]+\))?$/); + if (!match) { + throw new Error(`Invalid function: ${code}`); + } + const [_, exp, as, name, args] = match; + const compiled = []; + compiled.push(`${as || ""} function ${name} ${args || "()"} {`); + compiled.push(`let __output = "";`); + if (exp) { + compiled.push(...env.compileTokens(tokens, "__output", [ + "/export" + ])); + if (tokens.length && (tokens[0][0] !== "tag" || tokens[0][1] !== "/export")) { + throw new Error(`Missing closing tag for export function tag: ${code}`); + } + } else { + compiled.push(...env.compileTokens(tokens, "__output", [ + "/function" + ])); + if (tokens.length && (tokens[0][0] !== "tag" || tokens[0][1] !== "/function")) { + throw new Error(`Missing closing tag for function tag: ${code}`); + } + } + tokens.shift(); + compiled.push(`return __output;`); + compiled.push(`}`); + if (exp) { + compiled.push(`__exports["${name}"] = ${name}`); + } + return compiled.join("\n"); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9wbHVnaW5zL2Z1bmN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVG9rZW4gfSBmcm9tIFwiLi4vc3JjL3Rva2VuaXplci50c1wiO1xuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudCwgUGx1Z2luIH0gZnJvbSBcIi4uL3NyYy9lbnZpcm9ubWVudC50c1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKTogUGx1Z2luIHtcbiAgcmV0dXJuIChlbnY6IEVudmlyb25tZW50KSA9PiB7XG4gICAgZW52LnRhZ3MucHVzaChmdW5jdGlvblRhZyk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGZ1bmN0aW9uVGFnKFxuICBlbnY6IEVudmlyb25tZW50LFxuICBjb2RlOiBzdHJpbmcsXG4gIF9vdXRwdXQ6IHN0cmluZyxcbiAgdG9rZW5zOiBUb2tlbltdLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFjb2RlLm1hdGNoKC8oZXhwb3J0XFxzKyk/KGFzeW5jXFxzKyk/ZnVuY3Rpb25cXHMvKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG1hdGNoID0gY29kZS5tYXRjaChcbiAgICAvXihleHBvcnRcXHMrKT8oYXN5bmNcXHMrKT9mdW5jdGlvblxccysoXFx3KylcXHMqKFxcKFteKV0rXFwpKT8kLyxcbiAgKTtcblxuICBpZiAoIW1hdGNoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGZ1bmN0aW9uOiAke2NvZGV9YCk7XG4gIH1cblxuICBjb25zdCBbXywgZXhwLCBhcywgbmFtZSwgYXJnc10gPSBtYXRjaDtcblxuICBjb25zdCBjb21waWxlZDogc3RyaW5nW10gPSBbXTtcbiAgY29tcGlsZWQucHVzaChgJHthcyB8fCBcIlwifSBmdW5jdGlvbiAke25hbWV9ICR7YXJncyB8fCBcIigpXCJ9IHtgKTtcbiAgY29tcGlsZWQucHVzaChgbGV0IF9fb3V0cHV0ID0gXCJcIjtgKTtcblxuICBpZiAoZXhwKSB7XG4gICAgY29tcGlsZWQucHVzaCguLi5lbnYuY29tcGlsZVRva2Vucyh0b2tlbnMsIFwiX19vdXRwdXRcIiwgW1wiL2V4cG9ydFwiXSkpO1xuXG4gICAgaWYgKFxuICAgICAgdG9rZW5zLmxlbmd0aCAmJiAodG9rZW5zWzBdWzBdICE9PSBcInRhZ1wiIHx8IHRva2Vuc1swXVsxXSAhPT0gXCIvZXhwb3J0XCIpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgY2xvc2luZyB0YWcgZm9yIGV4cG9ydCBmdW5jdGlvbiB0YWc6ICR7Y29kZX1gKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29tcGlsZWQucHVzaCguLi5lbnYuY29tcGlsZVRva2Vucyh0b2tlbnMsIFwiX19vdXRwdXRcIiwgW1wiL2Z1bmN0aW9uXCJdKSk7XG5cbiAgICBpZiAoXG4gICAgICB0b2tlbnMubGVuZ3RoICYmICh0b2tlbnNbMF1bMF0gIT09IFwidGFnXCIgfHwgdG9rZW5zWzBdWzFdICE9PSBcIi9mdW5jdGlvblwiKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGNsb3NpbmcgdGFnIGZvciBmdW5jdGlvbiB0YWc6ICR7Y29kZX1gKTtcbiAgICB9XG4gIH1cblxuICB0b2tlbnMuc2hpZnQoKTtcblxuICBjb21waWxlZC5wdXNoKGByZXR1cm4gX19vdXRwdXQ7YCk7XG4gIGNvbXBpbGVkLnB1c2goYH1gKTtcblxuICBpZiAoZXhwKSB7XG4gICAgY29tcGlsZWQucHVzaChgX19leHBvcnRzW1wiJHtuYW1lfVwiXSA9ICR7bmFtZX1gKTtcbiAgfVxuXG4gIHJldHVybiBjb21waWxlZC5qb2luKFwiXFxuXCIpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLGVBQWU7RUFDYixPQUFPLENBQUM7SUFDTixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7RUFDaEI7QUFDRjtBQUVBLFNBQVMsWUFDUCxHQUFnQixFQUNoQixJQUFZLEVBQ1osT0FBZSxFQUNmLE1BQWU7RUFFZixJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsc0NBQXNDO0lBQ3BEO0VBQ0Y7RUFFQSxNQUFNLFFBQVEsS0FBSyxLQUFLLENBQ3RCO0VBR0YsSUFBSSxDQUFDLE9BQU87SUFDVixNQUFNLElBQUksTUFBTSxDQUFDLGtCQUFrQixFQUFFLE1BQU07RUFDN0M7RUFFQSxNQUFNLENBQUMsR0FBRyxLQUFLLElBQUksTUFBTSxLQUFLLEdBQUc7RUFFakMsTUFBTSxXQUFxQixFQUFFO0VBQzdCLFNBQVMsSUFBSSxDQUFDLEdBQUcsTUFBTSxHQUFHLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxRQUFRLEtBQUssRUFBRSxDQUFDO0VBQzlELFNBQVMsSUFBSSxDQUFDLENBQUMsa0JBQWtCLENBQUM7RUFFbEMsSUFBSSxLQUFLO0lBQ1AsU0FBUyxJQUFJLElBQUksSUFBSSxhQUFhLENBQUMsUUFBUSxZQUFZO01BQUM7S0FBVTtJQUVsRSxJQUNFLE9BQU8sTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssU0FBUyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxTQUFTLEdBQ3RFO01BQ0EsTUFBTSxJQUFJLE1BQU0sQ0FBQyw2Q0FBNkMsRUFBRSxNQUFNO0lBQ3hFO0VBQ0YsT0FBTztJQUNMLFNBQVMsSUFBSSxJQUFJLElBQUksYUFBYSxDQUFDLFFBQVEsWUFBWTtNQUFDO0tBQVk7SUFFcEUsSUFDRSxPQUFPLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLFNBQVMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssV0FBVyxHQUN4RTtNQUNBLE1BQU0sSUFBSSxNQUFNLENBQUMsc0NBQXNDLEVBQUUsTUFBTTtJQUNqRTtFQUNGO0VBRUEsT0FBTyxLQUFLO0VBRVosU0FBUyxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztFQUNoQyxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUVqQixJQUFJLEtBQUs7SUFDUCxTQUFTLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLEtBQUssRUFBRSxNQUFNO0VBQ2hEO0VBRUEsT0FBTyxTQUFTLElBQUksQ0FBQztBQUN2QiJ9 +// denoCacheMetadata=155647414038084898,14581215213938652872
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/164198804ee6fd3a1b8eadd17caf07b9b37735aeeab7d0d37d418ef0e0bab6aa.js b/vendor/gen/https/deno.land/164198804ee6fd3a1b8eadd17caf07b9b37735aeeab7d0d37d418ef0e0bab6aa.js new file mode 100644 index 0000000..37b136b --- /dev/null +++ b/vendor/gen/https/deno.land/164198804ee6fd3a1b8eadd17caf07b9b37735aeeab7d0d37d418ef0e0bab6aa.js @@ -0,0 +1,20 @@ +import { env } from "./env.ts"; +const tokens = new Map(); +const denoAuthTokens = env("DENO_AUTH_TOKENS"); +if (denoAuthTokens) { + const authTokens = denoAuthTokens.split(";"); + for (const token of authTokens){ + const [credentials, host] = token.split("@"); + if (credentials.includes(":")) { + // Basic Auth + const encodedCredentials = btoa(credentials); + tokens.set(host, `Basic ${encodedCredentials}`); + } else { + // Bearer Token + tokens.set(host, `Bearer ${credentials}`); + } + } +} +export { tokens }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS91dGlscy90b2tlbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZW52IH0gZnJvbSBcIi4vZW52LnRzXCI7XG5cbmNvbnN0IHRva2VucyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5jb25zdCBkZW5vQXV0aFRva2VucyA9IGVudjxzdHJpbmc+KFwiREVOT19BVVRIX1RPS0VOU1wiKTtcbmlmIChkZW5vQXV0aFRva2Vucykge1xuICBjb25zdCBhdXRoVG9rZW5zID0gZGVub0F1dGhUb2tlbnMuc3BsaXQoXCI7XCIpO1xuICBmb3IgKGNvbnN0IHRva2VuIG9mIGF1dGhUb2tlbnMpIHtcbiAgICBjb25zdCBbY3JlZGVudGlhbHMsIGhvc3RdID0gdG9rZW4uc3BsaXQoXCJAXCIpO1xuICAgIGlmIChjcmVkZW50aWFscy5pbmNsdWRlcyhcIjpcIikpIHtcbiAgICAgIC8vIEJhc2ljIEF1dGhcbiAgICAgIGNvbnN0IGVuY29kZWRDcmVkZW50aWFscyA9IGJ0b2EoY3JlZGVudGlhbHMpO1xuICAgICAgdG9rZW5zLnNldChob3N0LCBgQmFzaWMgJHtlbmNvZGVkQ3JlZGVudGlhbHN9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEJlYXJlciBUb2tlblxuICAgICAgdG9rZW5zLnNldChob3N0LCBgQmVhcmVyICR7Y3JlZGVudGlhbHN9YCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB7IHRva2VucyB9O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsR0FBRyxRQUFRLFdBQVc7QUFFL0IsTUFBTSxTQUFTLElBQUk7QUFDbkIsTUFBTSxpQkFBaUIsSUFBWTtBQUNuQyxJQUFJLGdCQUFnQjtFQUNsQixNQUFNLGFBQWEsZUFBZSxLQUFLLENBQUM7RUFDeEMsS0FBSyxNQUFNLFNBQVMsV0FBWTtJQUM5QixNQUFNLENBQUMsYUFBYSxLQUFLLEdBQUcsTUFBTSxLQUFLLENBQUM7SUFDeEMsSUFBSSxZQUFZLFFBQVEsQ0FBQyxNQUFNO01BQzdCLGFBQWE7TUFDYixNQUFNLHFCQUFxQixLQUFLO01BQ2hDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsb0JBQW9CO0lBQ2hELE9BQU87TUFDTCxlQUFlO01BQ2YsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxhQUFhO0lBQzFDO0VBQ0Y7QUFDRjtBQUVBLFNBQVMsTUFBTSxHQUFHIn0= +// denoCacheMetadata=8669114297459462885,17655648918300477460
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/17eee7a04f7e632433840cbea3e2ed1f30c66687b7b96c2c9508c10c08be78ea.js b/vendor/gen/https/deno.land/17eee7a04f7e632433840cbea3e2ed1f30c66687b7b96c2c9508c10c08be78ea.js new file mode 100644 index 0000000..a405b26 --- /dev/null +++ b/vendor/gen/https/deno.land/17eee7a04f7e632433840cbea3e2ed1f30c66687b7b96c2c9508c10c08be78ea.js @@ -0,0 +1,69 @@ +import { posix } from "../../deps/path.ts"; +import { getExtension, normalizePath } from "./path.ts"; +/** Returns a function to filter the 404 page */ export function filter404page(page404) { + const url404 = page404 ? normalizePath(page404) : undefined; + return url404 ? (data)=>data.url !== url404 : ()=>true; +} +/** Returns the final part of a url */ export function getBasename(url) { + if (url === "/") { + return ""; + } + if (url.endsWith("/")) { + return posix.basename(url); + } + return posix.basename(url, getExtension(url)); +} +/** Returns the final URL assigned to a page */ export function getPageUrl(page, prettyUrls, parentPath, destination) { + const data = page.data; + let { url } = data; + if (url === false) { + return false; + } + if (typeof url === "function") { + page.data.url = getDefaultUrl(page.data.basename, parentPath, prettyUrls); + url = url(page); + } + if (url === false) { + return false; + } + if (typeof url === "string") { + // Relative URL + if (url.startsWith("./") || url.startsWith("../")) { + return normalizeUrl(posix.join(parentPath, url)); + } + if (url.startsWith("/")) { + return normalizeUrl(url); + } + throw new Error(`The url variable for the page ${page.sourcePath} (${url}) must start with "/", "./" or "../" `); + } + // If the user has provided a value which hasn't yielded a string then it is an invalid url. + if (url !== undefined) { + throw new Error(`The url variable for the page ${page.sourcePath} is not correct. If specified, it should either be a string, or a function which returns a string. The provided url is of type: ${typeof url}.`); + } + if (typeof destination === "string") { + return normalizeUrl(destination); + } + const defaultUrl = getDefaultUrl(String(page.data.basename), parentPath, prettyUrls); + return destination ? destination(defaultUrl) : defaultUrl; +} +/** Returns the default URL for a page */ function getDefaultUrl(basename, parentPath, prettyUrls) { + // Calculate the URL from the path + const url = posix.join(parentPath, basename); + // Pretty URLs affects to all pages but 404 + if (prettyUrls && url !== "/404") { + if (posix.basename(url) === "index") { + return posix.join(posix.dirname(url), "/"); + } + return posix.join(url, "/"); + } + return `${url}.html`; +} +/** Remove the /index.html part if exist and replace spaces */ function normalizeUrl(url) { + url = encodeURI(url); + if (url.endsWith("/index.html")) { + return url.slice(0, -10); + } + return url; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS91dGlscy9wYWdlX3VybC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwb3NpeCB9IGZyb20gXCIuLi8uLi9kZXBzL3BhdGgudHNcIjtcbmltcG9ydCB7IGdldEV4dGVuc2lvbiwgbm9ybWFsaXplUGF0aCB9IGZyb20gXCIuL3BhdGgudHNcIjtcblxuaW1wb3J0IHR5cGUgeyBEZXN0aW5hdGlvbiB9IGZyb20gXCIuLi9zb3VyY2UudHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YSwgUGFnZSwgUmF3RGF0YSB9IGZyb20gXCIuLi9maWxlLnRzXCI7XG5cbi8qKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gZmlsdGVyIHRoZSA0MDQgcGFnZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcjQwNHBhZ2UocGFnZTQwND86IHN0cmluZyk6IChwYWdlOiBEYXRhKSA9PiBib29sZWFuIHtcbiAgY29uc3QgdXJsNDA0ID0gcGFnZTQwNCA/IG5vcm1hbGl6ZVBhdGgocGFnZTQwNCkgOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHVybDQwNCA/IChkYXRhOiBEYXRhKSA9PiBkYXRhLnVybCAhPT0gdXJsNDA0IDogKCkgPT4gdHJ1ZTtcbn1cblxuLyoqIFJldHVybnMgdGhlIGZpbmFsIHBhcnQgb2YgYSB1cmwgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCYXNlbmFtZSh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICh1cmwgPT09IFwiL1wiKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBpZiAodXJsLmVuZHNXaXRoKFwiL1wiKSkge1xuICAgIHJldHVybiBwb3NpeC5iYXNlbmFtZSh1cmwpO1xuICB9XG5cbiAgcmV0dXJuIHBvc2l4LmJhc2VuYW1lKHVybCwgZ2V0RXh0ZW5zaW9uKHVybCkpO1xufVxuXG4vKiogUmV0dXJucyB0aGUgZmluYWwgVVJMIGFzc2lnbmVkIHRvIGEgcGFnZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhZ2VVcmwoXG4gIHBhZ2U6IFBhZ2UsXG4gIHByZXR0eVVybHM6IGJvb2xlYW4sXG4gIHBhcmVudFBhdGg6IHN0cmluZyxcbiAgZGVzdGluYXRpb24/OiBEZXN0aW5hdGlvbiB8IHN0cmluZyxcbik6IHN0cmluZyB8IGZhbHNlIHtcbiAgY29uc3QgZGF0YSA9IHBhZ2UuZGF0YSBhcyBSYXdEYXRhO1xuICBsZXQgeyB1cmwgfSA9IGRhdGE7XG5cbiAgaWYgKHVybCA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodHlwZW9mIHVybCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcGFnZS5kYXRhLnVybCA9IGdldERlZmF1bHRVcmwocGFnZS5kYXRhLmJhc2VuYW1lLCBwYXJlbnRQYXRoLCBwcmV0dHlVcmxzKTtcbiAgICB1cmwgPSB1cmwocGFnZSk7XG4gIH1cblxuICBpZiAodXJsID09PSBmYWxzZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdXJsID09PSBcInN0cmluZ1wiKSB7XG4gICAgLy8gUmVsYXRpdmUgVVJMXG4gICAgaWYgKHVybC5zdGFydHNXaXRoKFwiLi9cIikgfHwgdXJsLnN0YXJ0c1dpdGgoXCIuLi9cIikpIHtcbiAgICAgIHJldHVybiBub3JtYWxpemVVcmwocG9zaXguam9pbihwYXJlbnRQYXRoLCB1cmwpKTtcbiAgICB9XG5cbiAgICBpZiAodXJsLnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG4gICAgICByZXR1cm4gbm9ybWFsaXplVXJsKHVybCk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFRoZSB1cmwgdmFyaWFibGUgZm9yIHRoZSBwYWdlICR7cGFnZS5zb3VyY2VQYXRofSAoJHt1cmx9KSBtdXN0IHN0YXJ0IHdpdGggXCIvXCIsIFwiLi9cIiBvciBcIi4uL1wiIGAsXG4gICAgKTtcbiAgfVxuXG4gIC8vIElmIHRoZSB1c2VyIGhhcyBwcm92aWRlZCBhIHZhbHVlIHdoaWNoIGhhc24ndCB5aWVsZGVkIGEgc3RyaW5nIHRoZW4gaXQgaXMgYW4gaW52YWxpZCB1cmwuXG4gIGlmICh1cmwgIT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBUaGUgdXJsIHZhcmlhYmxlIGZvciB0aGUgcGFnZSAke3BhZ2Uuc291cmNlUGF0aH0gaXMgbm90IGNvcnJlY3QuIElmIHNwZWNpZmllZCwgaXQgc2hvdWxkIGVpdGhlciBiZSBhIHN0cmluZywgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGEgc3RyaW5nLiBUaGUgcHJvdmlkZWQgdXJsIGlzIG9mIHR5cGU6ICR7dHlwZW9mIHVybH0uYCxcbiAgICApO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBkZXN0aW5hdGlvbiA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBub3JtYWxpemVVcmwoZGVzdGluYXRpb24pO1xuICB9XG5cbiAgY29uc3QgZGVmYXVsdFVybCA9IGdldERlZmF1bHRVcmwoXG4gICAgU3RyaW5nKHBhZ2UuZGF0YS5iYXNlbmFtZSksXG4gICAgcGFyZW50UGF0aCxcbiAgICBwcmV0dHlVcmxzLFxuICApO1xuICByZXR1cm4gZGVzdGluYXRpb24gPyBkZXN0aW5hdGlvbihkZWZhdWx0VXJsKSA6IGRlZmF1bHRVcmw7XG59XG5cbi8qKiBSZXR1cm5zIHRoZSBkZWZhdWx0IFVSTCBmb3IgYSBwYWdlICovXG5mdW5jdGlvbiBnZXREZWZhdWx0VXJsKFxuICBiYXNlbmFtZTogc3RyaW5nLFxuICBwYXJlbnRQYXRoOiBzdHJpbmcsXG4gIHByZXR0eVVybHM6IGJvb2xlYW4sXG4pOiBzdHJpbmcge1xuICAvLyBDYWxjdWxhdGUgdGhlIFVSTCBmcm9tIHRoZSBwYXRoXG4gIGNvbnN0IHVybCA9IHBvc2l4LmpvaW4ocGFyZW50UGF0aCwgYmFzZW5hbWUpO1xuXG4gIC8vIFByZXR0eSBVUkxzIGFmZmVjdHMgdG8gYWxsIHBhZ2VzIGJ1dCA0MDRcbiAgaWYgKHByZXR0eVVybHMgJiYgdXJsICE9PSBcIi80MDRcIikge1xuICAgIGlmIChwb3NpeC5iYXNlbmFtZSh1cmwpID09PSBcImluZGV4XCIpIHtcbiAgICAgIHJldHVybiBwb3NpeC5qb2luKHBvc2l4LmRpcm5hbWUodXJsKSwgXCIvXCIpO1xuICAgIH1cbiAgICByZXR1cm4gcG9zaXguam9pbih1cmwsIFwiL1wiKTtcbiAgfVxuXG4gIHJldHVybiBgJHt1cmx9Lmh0bWxgO1xufVxuXG4vKiogUmVtb3ZlIHRoZSAvaW5kZXguaHRtbCBwYXJ0IGlmIGV4aXN0IGFuZCByZXBsYWNlIHNwYWNlcyAqL1xuZnVuY3Rpb24gbm9ybWFsaXplVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgdXJsID0gZW5jb2RlVVJJKHVybCk7XG5cbiAgaWYgKHVybC5lbmRzV2l0aChcIi9pbmRleC5odG1sXCIpKSB7XG4gICAgcmV0dXJuIHVybC5zbGljZSgwLCAtMTApO1xuICB9XG5cbiAgcmV0dXJuIHVybDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLEtBQUssUUFBUSxxQkFBcUI7QUFDM0MsU0FBUyxZQUFZLEVBQUUsYUFBYSxRQUFRLFlBQVk7QUFLeEQsOENBQThDLEdBQzlDLE9BQU8sU0FBUyxjQUFjLE9BQWdCO0VBQzVDLE1BQU0sU0FBUyxVQUFVLGNBQWMsV0FBVztFQUVsRCxPQUFPLFNBQVMsQ0FBQyxPQUFlLEtBQUssR0FBRyxLQUFLLFNBQVMsSUFBTTtBQUM5RDtBQUVBLG9DQUFvQyxHQUNwQyxPQUFPLFNBQVMsWUFBWSxHQUFXO0VBQ3JDLElBQUksUUFBUSxLQUFLO0lBQ2YsT0FBTztFQUNUO0VBRUEsSUFBSSxJQUFJLFFBQVEsQ0FBQyxNQUFNO0lBQ3JCLE9BQU8sTUFBTSxRQUFRLENBQUM7RUFDeEI7RUFFQSxPQUFPLE1BQU0sUUFBUSxDQUFDLEtBQUssYUFBYTtBQUMxQztBQUVBLDZDQUE2QyxHQUM3QyxPQUFPLFNBQVMsV0FDZCxJQUFVLEVBQ1YsVUFBbUIsRUFDbkIsVUFBa0IsRUFDbEIsV0FBa0M7RUFFbEMsTUFBTSxPQUFPLEtBQUssSUFBSTtFQUN0QixJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUc7RUFFZCxJQUFJLFFBQVEsT0FBTztJQUNqQixPQUFPO0VBQ1Q7RUFFQSxJQUFJLE9BQU8sUUFBUSxZQUFZO0lBQzdCLEtBQUssSUFBSSxDQUFDLEdBQUcsR0FBRyxjQUFjLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRSxZQUFZO0lBQzlELE1BQU0sSUFBSTtFQUNaO0VBRUEsSUFBSSxRQUFRLE9BQU87SUFDakIsT0FBTztFQUNUO0VBRUEsSUFBSSxPQUFPLFFBQVEsVUFBVTtJQUMzQixlQUFlO0lBQ2YsSUFBSSxJQUFJLFVBQVUsQ0FBQyxTQUFTLElBQUksVUFBVSxDQUFDLFFBQVE7TUFDakQsT0FBTyxhQUFhLE1BQU0sSUFBSSxDQUFDLFlBQVk7SUFDN0M7SUFFQSxJQUFJLElBQUksVUFBVSxDQUFDLE1BQU07TUFDdkIsT0FBTyxhQUFhO0lBQ3RCO0lBRUEsTUFBTSxJQUFJLE1BQ1IsQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLFVBQVUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxxQ0FBcUMsQ0FBQztFQUVuRztFQUVBLDRGQUE0RjtFQUM1RixJQUFJLFFBQVEsV0FBVztJQUNyQixNQUFNLElBQUksTUFDUixDQUFDLDhCQUE4QixFQUFFLEtBQUssVUFBVSxDQUFDLGdJQUFnSSxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUM7RUFFcE07RUFFQSxJQUFJLE9BQU8sZ0JBQWdCLFVBQVU7SUFDbkMsT0FBTyxhQUFhO0VBQ3RCO0VBRUEsTUFBTSxhQUFhLGNBQ2pCLE9BQU8sS0FBSyxJQUFJLENBQUMsUUFBUSxHQUN6QixZQUNBO0VBRUYsT0FBTyxjQUFjLFlBQVksY0FBYztBQUNqRDtBQUVBLHVDQUF1QyxHQUN2QyxTQUFTLGNBQ1AsUUFBZ0IsRUFDaEIsVUFBa0IsRUFDbEIsVUFBbUI7RUFFbkIsa0NBQWtDO0VBQ2xDLE1BQU0sTUFBTSxNQUFNLElBQUksQ0FBQyxZQUFZO0VBRW5DLDJDQUEyQztFQUMzQyxJQUFJLGNBQWMsUUFBUSxRQUFRO0lBQ2hDLElBQUksTUFBTSxRQUFRLENBQUMsU0FBUyxTQUFTO01BQ25DLE9BQU8sTUFBTSxJQUFJLENBQUMsTUFBTSxPQUFPLENBQUMsTUFBTTtJQUN4QztJQUNBLE9BQU8sTUFBTSxJQUFJLENBQUMsS0FBSztFQUN6QjtFQUVBLE9BQU8sR0FBRyxJQUFJLEtBQUssQ0FBQztBQUN0QjtBQUVBLDREQUE0RCxHQUM1RCxTQUFTLGFBQWEsR0FBVztFQUMvQixNQUFNLFVBQVU7RUFFaEIsSUFBSSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0I7SUFDL0IsT0FBTyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUM7RUFDdkI7RUFFQSxPQUFPO0FBQ1QifQ== +// denoCacheMetadata=9955320969880172011,3535195372225597886
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/17fe72dfaa9d1191231a593f549925f2bbf57f9dc3a4f5bbc09916b5ec8f8e36.js b/vendor/gen/https/deno.land/17fe72dfaa9d1191231a593f549925f2bbf57f9dc3a4f5bbc09916b5ec8f8e36.js new file mode 100644 index 0000000..f205c12 --- /dev/null +++ b/vendor/gen/https/deno.land/17fe72dfaa9d1191231a593f549925f2bbf57f9dc3a4f5bbc09916b5ec8f8e36.js @@ -0,0 +1,25 @@ +import { Type } from "../type.ts"; +import { InvalidTypeError } from "../../flags/_errors.ts"; +/** Enum type. Allows only provided values. */ export class EnumType extends Type { + allowedValues; + constructor(values){ + super(); + this.allowedValues = Array.isArray(values) ? values : Object.values(values); + } + parse(type) { + for (const value of this.allowedValues){ + if (value.toString() === type.value) { + return value; + } + } + throw new InvalidTypeError(type, this.allowedValues.slice()); + } + values() { + return this.allowedValues.slice(); + } + complete() { + return this.values(); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC90eXBlcy9lbnVtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tIFwiLi4vdHlwZS50c1wiO1xuaW1wb3J0IHR5cGUgeyBBcmd1bWVudFZhbHVlIH0gZnJvbSBcIi4uL3R5cGVzLnRzXCI7XG5pbXBvcnQgeyBJbnZhbGlkVHlwZUVycm9yIH0gZnJvbSBcIi4uLy4uL2ZsYWdzL19lcnJvcnMudHNcIjtcblxuLyoqIEVudW0gdHlwZS4gQWxsb3dzIG9ubHkgcHJvdmlkZWQgdmFsdWVzLiAqL1xuZXhwb3J0IGNsYXNzIEVudW1UeXBlPFRWYWx1ZSBleHRlbmRzIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+XG4gIGV4dGVuZHMgVHlwZTxUVmFsdWU+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBhbGxvd2VkVmFsdWVzOiBSZWFkb25seUFycmF5PFRWYWx1ZT47XG5cbiAgY29uc3RydWN0b3IodmFsdWVzOiBSZWFkb25seUFycmF5PFRWYWx1ZT4gfCBSZWNvcmQ8c3RyaW5nLCBUVmFsdWU+KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFsbG93ZWRWYWx1ZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlcykgPyB2YWx1ZXMgOiBPYmplY3QudmFsdWVzKHZhbHVlcyk7XG4gIH1cblxuICBwdWJsaWMgcGFyc2UodHlwZTogQXJndW1lbnRWYWx1ZSk6IFRWYWx1ZSB7XG4gICAgZm9yIChjb25zdCB2YWx1ZSBvZiB0aGlzLmFsbG93ZWRWYWx1ZXMpIHtcbiAgICAgIGlmICh2YWx1ZS50b1N0cmluZygpID09PSB0eXBlLnZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgSW52YWxpZFR5cGVFcnJvcih0eXBlLCB0aGlzLmFsbG93ZWRWYWx1ZXMuc2xpY2UoKSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgdmFsdWVzKCk6IEFycmF5PFRWYWx1ZT4ge1xuICAgIHJldHVybiB0aGlzLmFsbG93ZWRWYWx1ZXMuc2xpY2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb21wbGV0ZSgpOiBBcnJheTxUVmFsdWU+IHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMoKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsSUFBSSxRQUFRLGFBQWE7QUFFbEMsU0FBUyxnQkFBZ0IsUUFBUSx5QkFBeUI7QUFFMUQsNENBQTRDLEdBQzVDLE9BQU8sTUFBTSxpQkFDSDtFQUNTLGNBQXFDO0VBRXRELFlBQVksTUFBc0QsQ0FBRTtJQUNsRSxLQUFLO0lBQ0wsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxVQUFVLFNBQVMsT0FBTyxNQUFNLENBQUM7RUFDdEU7RUFFTyxNQUFNLElBQW1CLEVBQVU7SUFDeEMsS0FBSyxNQUFNLFNBQVMsSUFBSSxDQUFDLGFBQWEsQ0FBRTtNQUN0QyxJQUFJLE1BQU0sUUFBUSxPQUFPLEtBQUssS0FBSyxFQUFFO1FBQ25DLE9BQU87TUFDVDtJQUNGO0lBRUEsTUFBTSxJQUFJLGlCQUFpQixNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSztFQUMzRDtFQUVnQixTQUF3QjtJQUN0QyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSztFQUNqQztFQUVnQixXQUEwQjtJQUN4QyxPQUFPLElBQUksQ0FBQyxNQUFNO0VBQ3BCO0FBQ0YifQ== +// denoCacheMetadata=7392067051627461164,13160157504860024976
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/18e400968e65abc09c92e8e9b2fc538d234085ece6db8db98e7d18e2c627af63.js b/vendor/gen/https/deno.land/18e400968e65abc09c92e8e9b2fc538d234085ece6db8db98e7d18e2c627af63.js new file mode 100644 index 0000000..c2be92d --- /dev/null +++ b/vendor/gen/https/deno.land/18e400968e65abc09c92e8e9b2fc538d234085ece6db8db98e7d18e2c627af63.js @@ -0,0 +1,44 @@ +export const defaultTags = [ + ">", + "#", + "set", + "/set", + "if", + "/if", + "else", + "for", + "/for", + "function", + "async", + "/function", + "export", + "/export", + "import" +]; +export default function(options = { + tags: defaultTags +}) { + return (env)=>{ + env.tokenPreprocessors.push((_, tokens)=>autoTrim(tokens, options)); + }; +} +export function autoTrim(tokens, options) { + for(let i = 0; i < tokens.length; i++){ + const previous = tokens[i - 1]; + const token = tokens[i]; + const next = tokens[i + 1]; + const [type, code] = token; + if (type === "tag" && options.tags.find((tag)=>code.startsWith(tag))) { + // Remove leading horizontal space + previous[1] = previous[1].replace(/[ \t]*$/, ""); + // Remove trailing horizontal space + newline + if (next) { + next[1] = next[1].replace(/^[ \t]*(?:\r\n|\n)/, ""); + } + } else if (type === "comment") { + previous[1] = previous[1].replace(/(?:\r\n|\n)[ \t]*$/, ""); + } + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9wbHVnaW5zL2F1dG9fdHJpbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFRva2VuIH0gZnJvbSBcIi4uL3NyYy90b2tlbml6ZXIudHNcIjtcbmltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnQsIFBsdWdpbiB9IGZyb20gXCIuLi9zcmMvZW52aXJvbm1lbnQudHNcIjtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRUYWdzID0gW1xuICBcIj5cIixcbiAgXCIjXCIsXG4gIFwic2V0XCIsXG4gIFwiL3NldFwiLFxuICBcImlmXCIsXG4gIFwiL2lmXCIsXG4gIFwiZWxzZVwiLFxuICBcImZvclwiLFxuICBcIi9mb3JcIixcbiAgXCJmdW5jdGlvblwiLFxuICBcImFzeW5jXCIsXG4gIFwiL2Z1bmN0aW9uXCIsXG4gIFwiZXhwb3J0XCIsXG4gIFwiL2V4cG9ydFwiLFxuICBcImltcG9ydFwiLFxuXTtcblxuZXhwb3J0IHR5cGUgQXV0b1RyaW1PcHRpb25zID0geyB0YWdzOiBzdHJpbmdbXSB9O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoXG4gIG9wdGlvbnM6IEF1dG9UcmltT3B0aW9ucyA9IHsgdGFnczogZGVmYXVsdFRhZ3MgfSxcbik6IFBsdWdpbiB7XG4gIHJldHVybiAoZW52OiBFbnZpcm9ubWVudCkgPT4ge1xuICAgIGVudi50b2tlblByZXByb2Nlc3NvcnMucHVzaCgoXywgdG9rZW5zKSA9PiBhdXRvVHJpbSh0b2tlbnMsIG9wdGlvbnMpKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF1dG9UcmltKHRva2VuczogVG9rZW5bXSwgb3B0aW9uczogQXV0b1RyaW1PcHRpb25zKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgcHJldmlvdXMgPSB0b2tlbnNbaSAtIDFdO1xuICAgIGNvbnN0IHRva2VuID0gdG9rZW5zW2ldO1xuICAgIGNvbnN0IG5leHQgPSB0b2tlbnNbaSArIDFdO1xuXG4gICAgY29uc3QgW3R5cGUsIGNvZGVdID0gdG9rZW47XG5cbiAgICBpZiAodHlwZSA9PT0gXCJ0YWdcIiAmJiBvcHRpb25zLnRhZ3MuZmluZCgodGFnKSA9PiBjb2RlLnN0YXJ0c1dpdGgodGFnKSkpIHtcbiAgICAgIC8vIFJlbW92ZSBsZWFkaW5nIGhvcml6b250YWwgc3BhY2VcbiAgICAgIHByZXZpb3VzWzFdID0gcHJldmlvdXNbMV0ucmVwbGFjZSgvWyBcXHRdKiQvLCBcIlwiKTtcblxuICAgICAgLy8gUmVtb3ZlIHRyYWlsaW5nIGhvcml6b250YWwgc3BhY2UgKyBuZXdsaW5lXG4gICAgICBpZiAobmV4dCkge1xuICAgICAgICBuZXh0WzFdID0gbmV4dFsxXS5yZXBsYWNlKC9eWyBcXHRdKig/OlxcclxcbnxcXG4pLywgXCJcIik7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSBcImNvbW1lbnRcIikge1xuICAgICAgcHJldmlvdXNbMV0gPSBwcmV2aW91c1sxXS5yZXBsYWNlKC8oPzpcXHJcXG58XFxuKVsgXFx0XSokLywgXCJcIik7XG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxNQUFNLGNBQWM7RUFDekI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0NBQ0QsQ0FBQztBQUlGLGVBQWUsU0FDYixVQUEyQjtFQUFFLE1BQU07QUFBWSxDQUFDO0VBRWhELE9BQU8sQ0FBQztJQUNOLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxTQUFXLFNBQVMsUUFBUTtFQUM5RDtBQUNGO0FBRUEsT0FBTyxTQUFTLFNBQVMsTUFBZSxFQUFFLE9BQXdCO0VBQ2hFLElBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxPQUFPLE1BQU0sRUFBRSxJQUFLO0lBQ3RDLE1BQU0sV0FBVyxNQUFNLENBQUMsSUFBSSxFQUFFO0lBQzlCLE1BQU0sUUFBUSxNQUFNLENBQUMsRUFBRTtJQUN2QixNQUFNLE9BQU8sTUFBTSxDQUFDLElBQUksRUFBRTtJQUUxQixNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUc7SUFFckIsSUFBSSxTQUFTLFNBQVMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBUSxLQUFLLFVBQVUsQ0FBQyxPQUFPO01BQ3RFLGtDQUFrQztNQUNsQyxRQUFRLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVc7TUFFN0MsNkNBQTZDO01BQzdDLElBQUksTUFBTTtRQUNSLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsc0JBQXNCO01BQ2xEO0lBQ0YsT0FBTyxJQUFJLFNBQVMsV0FBVztNQUM3QixRQUFRLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLHNCQUFzQjtJQUMxRDtFQUNGO0FBQ0YifQ== +// denoCacheMetadata=165110764992329799,15214479482713827501
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/1cf158f4e836587419b228a6946abc0a57c1d72ba3cea0824c8654aa850e77f0.js b/vendor/gen/https/deno.land/1cf158f4e836587419b228a6946abc0a57c1d72ba3cea0824c8654aa850e77f0.js new file mode 100644 index 0000000..627744b --- /dev/null +++ b/vendor/gen/https/deno.land/1cf158f4e836587419b228a6946abc0a57c1d72ba3cea0824c8654aa850e77f0.js @@ -0,0 +1,3 @@ +export * from "jsr:@std/encoding@1.0.10/hex"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvZGVwcy9oZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcImpzcjpAc3RkL2VuY29kaW5nQDEuMC4xMC9oZXhcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQiJ9 +// denoCacheMetadata=13673458684599664053,4886244127072814137
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/1d586a2a460fc0ce582837f8f789bbf6031ac1ad0b1e56eb8cb0e5e3ffeaea43.js b/vendor/gen/https/deno.land/1d586a2a460fc0ce582837f8f789bbf6031ac1ad0b1e56eb8cb0e5e3ffeaea43.js new file mode 100644 index 0000000..c9c3d45 --- /dev/null +++ b/vendor/gen/https/deno.land/1d586a2a460fc0ce582837f8f789bbf6031ac1ad0b1e56eb8cb0e5e3ffeaea43.js @@ -0,0 +1,15 @@ +export default function() { + return (env)=>{ + env.tags.push(echoTag); + }; +} +function echoTag(env, code, output, tokens) { + if (!code.startsWith("echo ")) { + return; + } + const value = code.replace(/^echo\s+/, ""); + const val = env.compileFilters(tokens, value, env.options.autoescape); + return `${output} += ${val};`; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9wbHVnaW5zL2VjaG8udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBUb2tlbiB9IGZyb20gXCIuLi9zcmMvdG9rZW5pemVyLnRzXCI7XG5pbXBvcnQgdHlwZSB7IEVudmlyb25tZW50LCBQbHVnaW4gfSBmcm9tIFwiLi4vc3JjL2Vudmlyb25tZW50LnRzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpOiBQbHVnaW4ge1xuICByZXR1cm4gKGVudjogRW52aXJvbm1lbnQpID0+IHtcbiAgICBlbnYudGFncy5wdXNoKGVjaG9UYWcpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBlY2hvVGFnKFxuICBlbnY6IEVudmlyb25tZW50LFxuICBjb2RlOiBzdHJpbmcsXG4gIG91dHB1dDogc3RyaW5nLFxuICB0b2tlbnM6IFRva2VuW10sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIWNvZGUuc3RhcnRzV2l0aChcImVjaG8gXCIpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgdmFsdWUgPSBjb2RlLnJlcGxhY2UoL15lY2hvXFxzKy8sIFwiXCIpO1xuICBjb25zdCB2YWwgPSBlbnYuY29tcGlsZUZpbHRlcnModG9rZW5zLCB2YWx1ZSwgZW52Lm9wdGlvbnMuYXV0b2VzY2FwZSk7XG5cbiAgcmV0dXJuIGAke291dHB1dH0gKz0gJHt2YWx9O2A7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsZUFBZTtFQUNiLE9BQU8sQ0FBQztJQUNOLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztFQUNoQjtBQUNGO0FBRUEsU0FBUyxRQUNQLEdBQWdCLEVBQ2hCLElBQVksRUFDWixNQUFjLEVBQ2QsTUFBZTtFQUVmLElBQUksQ0FBQyxLQUFLLFVBQVUsQ0FBQyxVQUFVO0lBQzdCO0VBQ0Y7RUFFQSxNQUFNLFFBQVEsS0FBSyxPQUFPLENBQUMsWUFBWTtFQUN2QyxNQUFNLE1BQU0sSUFBSSxjQUFjLENBQUMsUUFBUSxPQUFPLElBQUksT0FBTyxDQUFDLFVBQVU7RUFFcEUsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQy9CIn0= +// denoCacheMetadata=15920853362610332307,17055562486665830648
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/1d6daf5bf2fec45795de5bad68fbda4684c225707be41cbcb7c028fb3c168fa7.js b/vendor/gen/https/deno.land/1d6daf5bf2fec45795de5bad68fbda4684c225707be41cbcb7c028fb3c168fa7.js new file mode 100644 index 0000000..d0f2040 --- /dev/null +++ b/vendor/gen/https/deno.land/1d6daf5bf2fec45795de5bad68fbda4684c225707be41cbcb7c028fb3c168fa7.js @@ -0,0 +1,6 @@ +/** + * Symbols for using getElementsByTagName/ClassName on document-fragment + */ export const customByTagNameSym = Symbol(); +export const customByClassNameSym = Symbol(); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvZGVub19kb21AdjAuMS40OS9zcmMvZG9tL3NlbGVjdG9ycy9jdXN0b20tYXBpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3ltYm9scyBmb3IgdXNpbmcgZ2V0RWxlbWVudHNCeVRhZ05hbWUvQ2xhc3NOYW1lIG9uIGRvY3VtZW50LWZyYWdtZW50XG4gKi9cblxuZXhwb3J0IGNvbnN0IGN1c3RvbUJ5VGFnTmFtZVN5bSA9IFN5bWJvbCgpO1xuZXhwb3J0IGNvbnN0IGN1c3RvbUJ5Q2xhc3NOYW1lU3ltID0gU3ltYm9sKCk7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0NBRUMsR0FFRCxPQUFPLE1BQU0scUJBQXFCLFNBQVM7QUFDM0MsT0FBTyxNQUFNLHVCQUF1QixTQUFTIn0= +// denoCacheMetadata=903247193570706155,11963794454161240192
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/1e9ee246e74ed6bac55a3441b5778f2b5f332cae5eef297d4c4bdced80851920.js b/vendor/gen/https/deno.land/1e9ee246e74ed6bac55a3441b5778f2b5f332cae5eef297d4c4bdced80851920.js new file mode 100644 index 0000000..457e74e --- /dev/null +++ b/vendor/gen/https/deno.land/1e9ee246e74ed6bac55a3441b5778f2b5f332cae5eef297d4c4bdced80851920.js @@ -0,0 +1,115 @@ +import { didYouMeanOption, didYouMeanType, getFlag } from "./_utils.ts"; +export class FlagsError extends Error { + constructor(message){ + super(message); + Object.setPrototypeOf(this, FlagsError.prototype); + } +} +export class UnknownRequiredOptionError extends FlagsError { + constructor(option, options){ + super(`Unknown required option "${getFlag(option)}".${didYouMeanOption(option, options)}`); + Object.setPrototypeOf(this, UnknownRequiredOptionError.prototype); + } +} +export class UnknownConflictingOptionError extends FlagsError { + constructor(option, options){ + super(`Unknown conflicting option "${getFlag(option)}".${didYouMeanOption(option, options)}`); + Object.setPrototypeOf(this, UnknownConflictingOptionError.prototype); + } +} +export class UnknownTypeError extends FlagsError { + constructor(type, types){ + super(`Unknown type "${type}".${didYouMeanType(type, types)}`); + Object.setPrototypeOf(this, UnknownTypeError.prototype); + } +} +/* Validation errors. */ /** + * A validation error is thrown when the command is wrongly used by the user. + * For example: If the user passes some invalid options or arguments to the + * command. + */ export class ValidationError extends FlagsError { + constructor(message){ + super(message); + Object.setPrototypeOf(this, ValidationError.prototype); + } +} +export class DuplicateOptionError extends ValidationError { + constructor(name){ + super(`Option "${getFlag(name).replace(/^--no-/, "--")}" can only occur once, but was found several times.`); + Object.setPrototypeOf(this, DuplicateOptionError.prototype); + } +} +export class InvalidOptionError extends ValidationError { + constructor(option, options){ + super(`Invalid option "${getFlag(option)}".${didYouMeanOption(option, options)}`); + Object.setPrototypeOf(this, InvalidOptionError.prototype); + } +} +export class UnknownOptionError extends ValidationError { + constructor(option, options){ + super(`Unknown option "${getFlag(option)}".${didYouMeanOption(option, options)}`); + Object.setPrototypeOf(this, UnknownOptionError.prototype); + } +} +export class MissingOptionValueError extends ValidationError { + constructor(option){ + super(`Missing value for option "${getFlag(option)}".`); + Object.setPrototypeOf(this, MissingOptionValueError.prototype); + } +} +export class InvalidOptionValueError extends ValidationError { + constructor(option, expected, value){ + super(`Option "${getFlag(option)}" must be of type "${expected}", but got "${value}".`); + Object.setPrototypeOf(this, InvalidOptionValueError.prototype); + } +} +export class UnexpectedOptionValueError extends ValidationError { + constructor(option, value){ + super(`Option "${getFlag(option)}" doesn't take a value, but got "${value}".`); + Object.setPrototypeOf(this, InvalidOptionValueError.prototype); + } +} +export class OptionNotCombinableError extends ValidationError { + constructor(option){ + super(`Option "${getFlag(option)}" cannot be combined with other options.`); + Object.setPrototypeOf(this, OptionNotCombinableError.prototype); + } +} +export class ConflictingOptionError extends ValidationError { + constructor(option, conflictingOption){ + super(`Option "${getFlag(option)}" conflicts with option "${getFlag(conflictingOption)}".`); + Object.setPrototypeOf(this, ConflictingOptionError.prototype); + } +} +export class DependingOptionError extends ValidationError { + constructor(option, dependingOption){ + super(`Option "${getFlag(option)}" depends on option "${getFlag(dependingOption)}".`); + Object.setPrototypeOf(this, DependingOptionError.prototype); + } +} +export class MissingRequiredOptionError extends ValidationError { + constructor(option){ + super(`Missing required option "${getFlag(option)}".`); + Object.setPrototypeOf(this, MissingRequiredOptionError.prototype); + } +} +export class UnexpectedRequiredArgumentError extends ValidationError { + constructor(arg){ + super(`An required argument cannot follow an optional argument, but "${arg}" is defined as required.`); + Object.setPrototypeOf(this, UnexpectedRequiredArgumentError.prototype); + } +} +export class UnexpectedArgumentAfterVariadicArgumentError extends ValidationError { + constructor(arg){ + super(`An argument cannot follow an variadic argument, but got "${arg}".`); + Object.setPrototypeOf(this, UnexpectedArgumentAfterVariadicArgumentError.prototype); + } +} +export class InvalidTypeError extends ValidationError { + constructor({ label, name, value, type }, expected){ + super(`${label} "${name}" must be of type "${type}", but got "${value}".` + (expected ? ` Expected values: ${expected.map((value)=>`"${value}"`).join(", ")}` : "")); + Object.setPrototypeOf(this, MissingOptionValueError.prototype); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvZmxhZ3MvX2Vycm9ycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaWRZb3VNZWFuT3B0aW9uLCBkaWRZb3VNZWFuVHlwZSwgZ2V0RmxhZyB9IGZyb20gXCIuL191dGlscy50c1wiO1xuaW1wb3J0IHR5cGUgeyBBcmd1bWVudFZhbHVlLCBGbGFnT3B0aW9ucyB9IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5cbmV4cG9ydCBjbGFzcyBGbGFnc0Vycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgRmxhZ3NFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVbmtub3duUmVxdWlyZWRPcHRpb25FcnJvciBleHRlbmRzIEZsYWdzRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihvcHRpb246IHN0cmluZywgb3B0aW9uczogQXJyYXk8RmxhZ09wdGlvbnM+KSB7XG4gICAgc3VwZXIoXG4gICAgICBgVW5rbm93biByZXF1aXJlZCBvcHRpb24gXCIke2dldEZsYWcob3B0aW9uKX1cIi4ke1xuICAgICAgICBkaWRZb3VNZWFuT3B0aW9uKG9wdGlvbiwgb3B0aW9ucylcbiAgICAgIH1gLFxuICAgICk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIFVua25vd25SZXF1aXJlZE9wdGlvbkVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVua25vd25Db25mbGljdGluZ09wdGlvbkVycm9yIGV4dGVuZHMgRmxhZ3NFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbjogc3RyaW5nLCBvcHRpb25zOiBBcnJheTxGbGFnT3B0aW9ucz4pIHtcbiAgICBzdXBlcihcbiAgICAgIGBVbmtub3duIGNvbmZsaWN0aW5nIG9wdGlvbiBcIiR7Z2V0RmxhZyhvcHRpb24pfVwiLiR7XG4gICAgICAgIGRpZFlvdU1lYW5PcHRpb24ob3B0aW9uLCBvcHRpb25zKVxuICAgICAgfWAsXG4gICAgKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgVW5rbm93bkNvbmZsaWN0aW5nT3B0aW9uRXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVW5rbm93blR5cGVFcnJvciBleHRlbmRzIEZsYWdzRXJyb3Ige1xuICBjb25zdHJ1Y3Rvcih0eXBlOiBzdHJpbmcsIHR5cGVzOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgc3VwZXIoYFVua25vd24gdHlwZSBcIiR7dHlwZX1cIi4ke2RpZFlvdU1lYW5UeXBlKHR5cGUsIHR5cGVzKX1gKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgVW5rbm93blR5cGVFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbi8qIFZhbGlkYXRpb24gZXJyb3JzLiAqL1xuXG4vKipcbiAqIEEgdmFsaWRhdGlvbiBlcnJvciBpcyB0aHJvd24gd2hlbiB0aGUgY29tbWFuZCBpcyB3cm9uZ2x5IHVzZWQgYnkgdGhlIHVzZXIuXG4gKiBGb3IgZXhhbXBsZTogSWYgdGhlIHVzZXIgcGFzc2VzIHNvbWUgaW52YWxpZCBvcHRpb25zIG9yIGFyZ3VtZW50cyB0byB0aGVcbiAqIGNvbW1hbmQuXG4gKi9cbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBGbGFnc0Vycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIFZhbGlkYXRpb25FcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEdXBsaWNhdGVPcHRpb25FcnJvciBleHRlbmRzIFZhbGlkYXRpb25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKFxuICAgICAgYE9wdGlvbiBcIiR7XG4gICAgICAgIGdldEZsYWcobmFtZSkucmVwbGFjZSgvXi0tbm8tLywgXCItLVwiKVxuICAgICAgfVwiIGNhbiBvbmx5IG9jY3VyIG9uY2UsIGJ1dCB3YXMgZm91bmQgc2V2ZXJhbCB0aW1lcy5gLFxuICAgICk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIER1cGxpY2F0ZU9wdGlvbkVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRPcHRpb25FcnJvciBleHRlbmRzIFZhbGlkYXRpb25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbjogc3RyaW5nLCBvcHRpb25zOiBBcnJheTxGbGFnT3B0aW9ucz4pIHtcbiAgICBzdXBlcihcbiAgICAgIGBJbnZhbGlkIG9wdGlvbiBcIiR7Z2V0RmxhZyhvcHRpb24pfVwiLiR7XG4gICAgICAgIGRpZFlvdU1lYW5PcHRpb24ob3B0aW9uLCBvcHRpb25zKVxuICAgICAgfWAsXG4gICAgKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgSW52YWxpZE9wdGlvbkVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVua25vd25PcHRpb25FcnJvciBleHRlbmRzIFZhbGlkYXRpb25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbjogc3RyaW5nLCBvcHRpb25zOiBBcnJheTxGbGFnT3B0aW9ucz4pIHtcbiAgICBzdXBlcihcbiAgICAgIGBVbmtub3duIG9wdGlvbiBcIiR7Z2V0RmxhZyhvcHRpb24pfVwiLiR7XG4gICAgICAgIGRpZFlvdU1lYW5PcHRpb24ob3B0aW9uLCBvcHRpb25zKVxuICAgICAgfWAsXG4gICAgKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgVW5rbm93bk9wdGlvbkVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1pc3NpbmdPcHRpb25WYWx1ZUVycm9yIGV4dGVuZHMgVmFsaWRhdGlvbkVycm9yIHtcbiAgY29uc3RydWN0b3Iob3B0aW9uOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgTWlzc2luZyB2YWx1ZSBmb3Igb3B0aW9uIFwiJHtnZXRGbGFnKG9wdGlvbil9XCIuYCk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIE1pc3NpbmdPcHRpb25WYWx1ZUVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRPcHRpb25WYWx1ZUVycm9yIGV4dGVuZHMgVmFsaWRhdGlvbkVycm9yIHtcbiAgY29uc3RydWN0b3Iob3B0aW9uOiBzdHJpbmcsIGV4cGVjdGVkOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihcbiAgICAgIGBPcHRpb24gXCIke1xuICAgICAgICBnZXRGbGFnKG9wdGlvbilcbiAgICAgIH1cIiBtdXN0IGJlIG9mIHR5cGUgXCIke2V4cGVjdGVkfVwiLCBidXQgZ290IFwiJHt2YWx1ZX1cIi5gLFxuICAgICk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIEludmFsaWRPcHRpb25WYWx1ZUVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVuZXhwZWN0ZWRPcHRpb25WYWx1ZUVycm9yIGV4dGVuZHMgVmFsaWRhdGlvbkVycm9yIHtcbiAgY29uc3RydWN0b3Iob3B0aW9uOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihcbiAgICAgIGBPcHRpb24gXCIke2dldEZsYWcob3B0aW9uKX1cIiBkb2Vzbid0IHRha2UgYSB2YWx1ZSwgYnV0IGdvdCBcIiR7dmFsdWV9XCIuYCxcbiAgICApO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBJbnZhbGlkT3B0aW9uVmFsdWVFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcHRpb25Ob3RDb21iaW5hYmxlRXJyb3IgZXh0ZW5kcyBWYWxpZGF0aW9uRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihvcHRpb246IHN0cmluZykge1xuICAgIHN1cGVyKGBPcHRpb24gXCIke2dldEZsYWcob3B0aW9uKX1cIiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciBvcHRpb25zLmApO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBPcHRpb25Ob3RDb21iaW5hYmxlRXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29uZmxpY3RpbmdPcHRpb25FcnJvciBleHRlbmRzIFZhbGlkYXRpb25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbjogc3RyaW5nLCBjb25mbGljdGluZ09wdGlvbjogc3RyaW5nKSB7XG4gICAgc3VwZXIoXG4gICAgICBgT3B0aW9uIFwiJHtnZXRGbGFnKG9wdGlvbil9XCIgY29uZmxpY3RzIHdpdGggb3B0aW9uIFwiJHtcbiAgICAgICAgZ2V0RmxhZyhjb25mbGljdGluZ09wdGlvbilcbiAgICAgIH1cIi5gLFxuICAgICk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIENvbmZsaWN0aW5nT3B0aW9uRXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGVwZW5kaW5nT3B0aW9uRXJyb3IgZXh0ZW5kcyBWYWxpZGF0aW9uRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihvcHRpb246IHN0cmluZywgZGVwZW5kaW5nT3B0aW9uOiBzdHJpbmcpIHtcbiAgICBzdXBlcihcbiAgICAgIGBPcHRpb24gXCIke2dldEZsYWcob3B0aW9uKX1cIiBkZXBlbmRzIG9uIG9wdGlvbiBcIiR7XG4gICAgICAgIGdldEZsYWcoZGVwZW5kaW5nT3B0aW9uKVxuICAgICAgfVwiLmAsXG4gICAgKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgRGVwZW5kaW5nT3B0aW9uRXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTWlzc2luZ1JlcXVpcmVkT3B0aW9uRXJyb3IgZXh0ZW5kcyBWYWxpZGF0aW9uRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihvcHRpb246IHN0cmluZykge1xuICAgIHN1cGVyKGBNaXNzaW5nIHJlcXVpcmVkIG9wdGlvbiBcIiR7Z2V0RmxhZyhvcHRpb24pfVwiLmApO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBNaXNzaW5nUmVxdWlyZWRPcHRpb25FcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVbmV4cGVjdGVkUmVxdWlyZWRBcmd1bWVudEVycm9yIGV4dGVuZHMgVmFsaWRhdGlvbkVycm9yIHtcbiAgY29uc3RydWN0b3IoYXJnOiBzdHJpbmcpIHtcbiAgICBzdXBlcihcbiAgICAgIGBBbiByZXF1aXJlZCBhcmd1bWVudCBjYW5ub3QgZm9sbG93IGFuIG9wdGlvbmFsIGFyZ3VtZW50LCBidXQgXCIke2FyZ31cIiAgaXMgZGVmaW5lZCBhcyByZXF1aXJlZC5gLFxuICAgICk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKFxuICAgICAgdGhpcyxcbiAgICAgIFVuZXhwZWN0ZWRSZXF1aXJlZEFyZ3VtZW50RXJyb3IucHJvdG90eXBlLFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVuZXhwZWN0ZWRBcmd1bWVudEFmdGVyVmFyaWFkaWNBcmd1bWVudEVycm9yXG4gIGV4dGVuZHMgVmFsaWRhdGlvbkVycm9yIHtcbiAgY29uc3RydWN0b3IoYXJnOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgQW4gYXJndW1lbnQgY2Fubm90IGZvbGxvdyBhbiB2YXJpYWRpYyBhcmd1bWVudCwgYnV0IGdvdCBcIiR7YXJnfVwiLmApO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihcbiAgICAgIHRoaXMsXG4gICAgICBVbmV4cGVjdGVkQXJndW1lbnRBZnRlclZhcmlhZGljQXJndW1lbnRFcnJvci5wcm90b3R5cGUsXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52YWxpZFR5cGVFcnJvciBleHRlbmRzIFZhbGlkYXRpb25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHsgbGFiZWwsIG5hbWUsIHZhbHVlLCB0eXBlIH06IEFyZ3VtZW50VmFsdWUsXG4gICAgZXhwZWN0ZWQ/OiBBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPixcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBgJHtsYWJlbH0gXCIke25hbWV9XCIgbXVzdCBiZSBvZiB0eXBlIFwiJHt0eXBlfVwiLCBidXQgZ290IFwiJHt2YWx1ZX1cIi5gICsgKFxuICAgICAgICBleHBlY3RlZFxuICAgICAgICAgID8gYCBFeHBlY3RlZCB2YWx1ZXM6ICR7XG4gICAgICAgICAgICBleHBlY3RlZC5tYXAoKHZhbHVlKSA9PiBgXCIke3ZhbHVlfVwiYCkuam9pbihcIiwgXCIpXG4gICAgICAgICAgfWBcbiAgICAgICAgICA6IFwiXCJcbiAgICAgICksXG4gICAgKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgTWlzc2luZ09wdGlvblZhbHVlRXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE9BQU8sUUFBUSxjQUFjO0FBR3hFLE9BQU8sTUFBTSxtQkFBbUI7RUFDOUIsWUFBWSxPQUFlLENBQUU7SUFDM0IsS0FBSyxDQUFDO0lBQ04sT0FBTyxjQUFjLENBQUMsSUFBSSxFQUFFLFdBQVcsU0FBUztFQUNsRDtBQUNGO0FBRUEsT0FBTyxNQUFNLG1DQUFtQztFQUM5QyxZQUFZLE1BQWMsRUFBRSxPQUEyQixDQUFFO0lBQ3ZELEtBQUssQ0FDSCxDQUFDLHlCQUF5QixFQUFFLFFBQVEsUUFBUSxFQUFFLEVBQzVDLGlCQUFpQixRQUFRLFVBQ3pCO0lBRUosT0FBTyxjQUFjLENBQUMsSUFBSSxFQUFFLDJCQUEyQixTQUFTO0VBQ2xFO0FBQ0Y7QUFFQSxPQUFPLE1BQU0sc0NBQXNDO0VBQ2pELFlB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 +// denoCacheMetadata=3478134091247672263,15991104039683507109
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/20bde93de9c94dedce9e9d77dcf3928866101dd1ee74aaf0af7561b5004b92f7.js b/vendor/gen/https/deno.land/20bde93de9c94dedce9e9d77dcf3928866101dd1ee74aaf0af7561b5004b92f7.js new file mode 100644 index 0000000..78b6857 --- /dev/null +++ b/vendor/gen/https/deno.land/20bde93de9c94dedce9e9d77dcf3928866101dd1ee74aaf0af7561b5004b92f7.js @@ -0,0 +1,103 @@ +import { UnexpectedArgumentAfterVariadicArgumentError, UnexpectedRequiredArgumentError } from "../flags/_errors.ts"; +import { didYouMean } from "../flags/_utils.ts"; +import { OptionType } from "../flags/deprecated.ts"; +export function didYouMeanCommand(command, commands, excludes = []) { + const commandNames = commands.map((command)=>command.getName()).filter((command)=>!excludes.includes(command)); + return didYouMean(" Did you mean command", command, commandNames); +} +const ARGUMENT_REGEX = /^[<\[].+[\]>]$/; +const ARGUMENT_DETAILS_REGEX = /[<\[:>\]]/; +/** + * Split options and arguments. + * @param args Arguments definition: `--color, -c <color1:string> <color2:string>` + * + * For example: `-c, --color <color1:string> <color2:string>` + * + * Will result in: + * ``` + * { + * flags: [ "-c", "--color" ], + * typeDefinition: "<color1:string> <color2:string>" + * } + * ``` + */ export function splitArguments(args) { + const parts = args.trim().split(/[, =] */g); + const typeParts = []; + while(parts[parts.length - 1] && ARGUMENT_REGEX.test(parts[parts.length - 1])){ + typeParts.unshift(parts.pop()); + } + const typeDefinition = typeParts.join(" "); + return { + flags: parts, + typeDefinition, + equalsSign: args.includes("=") + }; +} +export function parseArgumentsDefinition(argsDefinition, validate = true, all) { + const argumentDetails = []; + let hasOptional = false; + let hasVariadic = false; + const parts = argsDefinition.split(/ +/); + for (const arg of parts){ + if (validate && hasVariadic) { + throw new UnexpectedArgumentAfterVariadicArgumentError(arg); + } + const parts = arg.split(ARGUMENT_DETAILS_REGEX); + if (!parts[1]) { + if (all) { + argumentDetails.push(parts[0]); + } + continue; + } + const type = parts[2] || OptionType.STRING; + const details = { + optionalValue: arg[0] === "[", + requiredValue: arg[0] === "<", + name: parts[1], + action: parts[3] || type, + variadic: false, + list: type ? arg.indexOf(type + "[]") !== -1 : false, + type + }; + if (validate && !details.optionalValue && hasOptional) { + throw new UnexpectedRequiredArgumentError(details.name); + } + if (arg[0] === "[") { + hasOptional = true; + } + if (details.name.length > 3) { + const istVariadicLeft = details.name.slice(0, 3) === "..."; + const istVariadicRight = details.name.slice(-3) === "..."; + hasVariadic = details.variadic = istVariadicLeft || istVariadicRight; + if (istVariadicLeft) { + details.name = details.name.slice(3); + } else if (istVariadicRight) { + details.name = details.name.slice(0, -3); + } + } + argumentDetails.push(details); + } + return argumentDetails; +} +export function dedent(str) { + const lines = str.split(/\r?\n|\r/g); + let text = ""; + let indent = 0; + for (const line of lines){ + if (text || line.trim()) { + if (!text) { + text = line.trimStart(); + indent = line.length - text.length; + } else { + text += line.slice(indent); + } + text += "\n"; + } + } + return text.trimEnd(); +} +export function getDescription(description, short) { + return short ? description.trim().split("\n", 1)[0].trim() : dedent(description); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC9fdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgVW5leHBlY3RlZEFyZ3VtZW50QWZ0ZXJWYXJpYWRpY0FyZ3VtZW50RXJyb3IsXG4gIFVuZXhwZWN0ZWRSZXF1aXJlZEFyZ3VtZW50RXJyb3IsXG59IGZyb20gXCIuLi9mbGFncy9fZXJyb3JzLnRzXCI7XG5pbXBvcnQgeyBkaWRZb3VNZWFuIH0gZnJvbSBcIi4uL2ZsYWdzL191dGlscy50c1wiO1xuaW1wb3J0IHsgT3B0aW9uVHlwZSB9IGZyb20gXCIuLi9mbGFncy9kZXByZWNhdGVkLnRzXCI7XG5pbXBvcnQgdHlwZSB7IENvbW1hbmQgfSBmcm9tIFwiLi9jb21tYW5kLnRzXCI7XG5pbXBvcnQgdHlwZSB7IEFyZ3VtZW50IH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZFlvdU1lYW5Db21tYW5kKFxuICBjb21tYW5kOiBzdHJpbmcsXG4gIGNvbW1hbmRzOiBBcnJheTxDb21tYW5kPixcbiAgZXhjbHVkZXM6IEFycmF5PHN0cmluZz4gPSBbXSxcbik6IHN0cmluZyB7XG4gIGNvbnN0IGNvbW1hbmROYW1lcyA9IGNvbW1hbmRzXG4gICAgLm1hcCgoY29tbWFuZCkgPT4gY29tbWFuZC5nZXROYW1lKCkpXG4gICAgLmZpbHRlcigoY29tbWFuZCkgPT4gIWV4Y2x1ZGVzLmluY2x1ZGVzKGNvbW1hbmQpKTtcbiAgcmV0dXJuIGRpZFlvdU1lYW4oXCIgRGlkIHlvdSBtZWFuIGNvbW1hbmRcIiwgY29tbWFuZCwgY29tbWFuZE5hbWVzKTtcbn1cblxuY29uc3QgQVJHVU1FTlRfUkVHRVggPSAvXls8XFxbXS4rW1xcXT5dJC87XG5jb25zdCBBUkdVTUVOVF9ERVRBSUxTX1JFR0VYID0gL1s8XFxbOj5cXF1dLztcblxuaW50ZXJmYWNlIFNwbGl0QXJndW1lbnRzUmVzdWx0IHtcbiAgZmxhZ3M6IHN0cmluZ1tdO1xuICB0eXBlRGVmaW5pdGlvbjogc3RyaW5nO1xuICBlcXVhbHNTaWduOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFNwbGl0IG9wdGlvbnMgYW5kIGFyZ3VtZW50cy5cbiAqIEBwYXJhbSBhcmdzIEFyZ3VtZW50cyBkZWZpbml0aW9uOiBgLS1jb2xvciwgLWMgPGNvbG9yMTpzdHJpbmc+IDxjb2xvcjI6c3RyaW5nPmBcbiAqXG4gKiBGb3IgZXhhbXBsZTogYC1jLCAtLWNvbG9yIDxjb2xvcjE6c3RyaW5nPiA8Y29sb3IyOnN0cmluZz5gXG4gKlxuICogV2lsbCByZXN1bHQgaW46XG4gKiBgYGBcbiAqIHtcbiAqICAgZmxhZ3M6IFsgXCItY1wiLCBcIi0tY29sb3JcIiBdLFxuICogICB0eXBlRGVmaW5pdGlvbjogXCI8Y29sb3IxOnN0cmluZz4gPGNvbG9yMjpzdHJpbmc+XCJcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRBcmd1bWVudHMoXG4gIGFyZ3M6IHN0cmluZyxcbik6IFNwbGl0QXJndW1lbnRzUmVzdWx0IHtcbiAgY29uc3QgcGFydHMgPSBhcmdzLnRyaW0oKS5zcGxpdCgvWywgPV0gKi9nKTtcbiAgY29uc3QgdHlwZVBhcnRzID0gW107XG5cbiAgd2hpbGUgKFxuICAgIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdICYmXG4gICAgQVJHVU1FTlRfUkVHRVgudGVzdChwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXSlcbiAgKSB7XG4gICAgdHlwZVBhcnRzLnVuc2hpZnQocGFydHMucG9wKCkpO1xuICB9XG5cbiAgY29uc3QgdHlwZURlZmluaXRpb246IHN0cmluZyA9IHR5cGVQYXJ0cy5qb2luKFwiIFwiKTtcblxuICByZXR1cm4geyBmbGFnczogcGFydHMsIHR5cGVEZWZpbml0aW9uLCBlcXVhbHNTaWduOiBhcmdzLmluY2x1ZGVzKFwiPVwiKSB9O1xufVxuXG4vKipcbiAqIFBhcnNlIGFyZ3VtZW50cyBzdHJpbmcuXG4gKiBAcGFyYW0gYXJnc0RlZmluaXRpb24gQXJndW1lbnRzIGRlZmluaXRpb246IGA8Y29sb3IxOnN0cmluZz4gPGNvbG9yMjpzdHJpbmc+YFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VBcmd1bWVudHNEZWZpbml0aW9uPFQgZXh0ZW5kcyBib29sZWFuPihcbiAgYXJnc0RlZmluaXRpb246IHN0cmluZyxcbiAgdmFsaWRhdGU6IGJvb2xlYW4sXG4gIGFsbDogdHJ1ZSxcbik6IEFycmF5PEFyZ3VtZW50IHwgc3RyaW5nPjtcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFyZ3VtZW50c0RlZmluaXRpb248VCBleHRlbmRzIGJvb2xlYW4+KFxuICBhcmdzRGVmaW5pdGlvbjogc3RyaW5nLFxuICB2YWxpZGF0ZT86IGJvb2xlYW4sXG4gIGFsbD86IGZhbHNlLFxuKTogQXJyYXk8QXJndW1lbnQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQXJndW1lbnRzRGVmaW5pdGlvbjxUIGV4dGVuZHMgYm9vbGVhbj4oXG4gIGFyZ3NEZWZpbml0aW9uOiBzdHJpbmcsXG4gIHZhbGlkYXRlID0gdHJ1ZSxcbiAgYWxsPzogVCxcbik6IFQgZXh0ZW5kcyB0cnVlID8gQXJyYXk8QXJndW1lbnQgfCBzdHJpbmc+IDogQXJyYXk8QXJndW1lbnQ+IHtcbiAgY29uc3QgYXJndW1lbnREZXRhaWxzOiBBcnJheTxBcmd1bWVudCB8IHN0cmluZz4gPSBbXTtcblxuICBsZXQgaGFzT3B0aW9uYWwgPSBmYWxzZTtcbiAgbGV0IGhhc1ZhcmlhZGljID0gZmFsc2U7XG4gIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IGFyZ3NEZWZpbml0aW9uLnNwbGl0KC8gKy8pO1xuXG4gIGZvciAoY29uc3QgYXJnIG9mIHBhcnRzKSB7XG4gICAgaWYgKHZhbGlkYXRlICYmIGhhc1ZhcmlhZGljKSB7XG4gICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZEFyZ3VtZW50QWZ0ZXJWYXJpYWRpY0FyZ3VtZW50RXJyb3IoYXJnKTtcbiAgICB9XG4gICAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gYXJnLnNwbGl0KEFSR1VNRU5UX0RFVEFJTFNfUkVHRVgpO1xuXG4gICAgaWYgKCFwYXJ0c1sxXSkge1xuICAgICAgaWYgKGFsbCkge1xuICAgICAgICBhcmd1bWVudERldGFpbHMucHVzaChwYXJ0c1swXSk7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgdHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gcGFydHNbMl0gfHwgT3B0aW9uVHlwZS5TVFJJTkc7XG5cbiAgICBjb25zdCBkZXRhaWxzOiBBcmd1bWVudCA9IHtcbiAgICAgIG9wdGlvbmFsVmFsdWU6IGFyZ1swXSA9PT0gXCJbXCIsXG4gICAgICByZXF1aXJlZFZhbHVlOiBhcmdbMF0gPT09IFwiPFwiLFxuICAgICAgbmFtZTogcGFydHNbMV0sXG4gICAgICBhY3Rpb246IHBhcnRzWzNdIHx8IHR5cGUsXG4gICAgICB2YXJpYWRpYzogZmFsc2UsXG4gICAgICBsaXN0OiB0eXBlID8gYXJnLmluZGV4T2YodHlwZSArIFwiW11cIikgIT09IC0xIDogZmFsc2UsXG4gICAgICB0eXBlLFxuICAgIH07XG5cbiAgICBpZiAodmFsaWRhdGUgJiYgIWRldGFpbHMub3B0aW9uYWxWYWx1ZSAmJiBoYXNPcHRpb25hbCkge1xuICAgICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRSZXF1aXJlZEFyZ3VtZW50RXJyb3IoZGV0YWlscy5uYW1lKTtcbiAgICB9XG5cbiAgICBpZiAoYXJnWzBdID09PSBcIltcIikge1xuICAgICAgaGFzT3B0aW9uYWwgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChkZXRhaWxzLm5hbWUubGVuZ3RoID4gMykge1xuICAgICAgY29uc3QgaXN0VmFyaWFkaWNMZWZ0ID0gZGV0YWlscy5uYW1lLnNsaWNlKDAsIDMpID09PSBcIi4uLlwiO1xuICAgICAgY29uc3QgaXN0VmFyaWFkaWNSaWdodCA9IGRldGFpbHMubmFtZS5zbGljZSgtMykgPT09IFwiLi4uXCI7XG5cbiAgICAgIGhhc1ZhcmlhZGljID0gZGV0YWlscy52YXJpYWRpYyA9IGlzdFZhcmlhZGljTGVmdCB8fCBpc3RWYXJpYWRpY1JpZ2h0O1xuXG4gICAgICBpZiAoaXN0VmFyaWFkaWNMZWZ0KSB7XG4gICAgICAgIGRldGFpbHMubmFtZSA9IGRldGFpbHMubmFtZS5zbGljZSgzKTtcbiAgICAgIH0gZWxzZSBpZiAoaXN0VmFyaWFkaWNSaWdodCkge1xuICAgICAgICBkZXRhaWxzLm5hbWUgPSBkZXRhaWxzLm5hbWUuc2xpY2UoMCwgLTMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGFyZ3VtZW50RGV0YWlscy5wdXNoKGRldGFpbHMpO1xuICB9XG5cbiAgcmV0dXJuIGFyZ3VtZW50RGV0YWlscyBhcyAoXG4gICAgVCBleHRlbmRzIHRydWUgPyBBcnJheTxBcmd1bWVudCB8IHN0cmluZz4gOiBBcnJheTxBcmd1bWVudD5cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZGVudChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzID0gc3RyLnNwbGl0KC9cXHI/XFxufFxcci9nKTtcbiAgbGV0IHRleHQgPSBcIlwiO1xuICBsZXQgaW5kZW50ID0gMDtcblxuICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICBpZiAodGV4dCB8fCBsaW5lLnRyaW0oKSkge1xuICAgICAgaWYgKCF0ZXh0KSB7XG4gICAgICAgIHRleHQgPSBsaW5lLnRyaW1TdGFydCgpO1xuICAgICAgICBpbmRlbnQgPSBsaW5lLmxlbmd0aCAtIHRleHQubGVuZ3RoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGV4dCArPSBsaW5lLnNsaWNlKGluZGVudCk7XG4gICAgICB9XG4gICAgICB0ZXh0ICs9IFwiXFxuXCI7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRleHQudHJpbUVuZCgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVzY3JpcHRpb24oXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmcsXG4gIHNob3J0PzogYm9vbGVhbixcbik6IHN0cmluZyB7XG4gIHJldHVybiBzaG9ydFxuICAgID8gZGVzY3JpcHRpb24udHJpbSgpLnNwbGl0KFwiXFxuXCIsIDEpWzBdLnRyaW0oKVxuICAgIDogZGVkZW50KGRlc2NyaXB0aW9uKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUNFLDRDQUE0QyxFQUM1QywrQkFBK0IsUUFDMUIsc0JBQXNCO0FBQzdCLFNBQVMsVUFBVSxRQUFRLHFCQUFxQjtBQUNoRCxTQUFTLFVBQVUsUUFBUSx5QkFBeUI7QUFJcEQsT0FBTyxTQUFTLGtCQUNkLE9BQWUsRUFDZixRQUF3QixFQUN4QixXQUEwQixFQUFFO0VBRTVCLE1BQU0sZUFBZSxTQUNsQixHQUFHLENBQUMsQ0FBQyxVQUFZLFFBQVEsT0FBTyxJQUNoQyxNQUFNLENBQUMsQ0FBQyxVQUFZLENBQUMsU0FBUyxRQUFRLENBQUM7RUFDMUMsT0FBTyxXQUFXLHlCQUF5QixTQUFTO0FBQ3REO0FBRUEsTUFBTSxpQkFBaUI7QUFDdkIsTUFBTSx5QkFBeUI7QUFRL0I7Ozs7Ozs7Ozs7Ozs7Q0FhQyxHQUNELE9BQU8sU0FBUyxlQUNkLElBQVk7RUFFWixNQUFNLFFBQVEsS0FBSyxJQUFJLEdBQUcsS0FBSyxDQUFDO0VBQ2hDLE1BQU0sWUFBWSxFQUFFO0VBRXBCLE1BQ0UsS0FBSyxDQUFDLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFDdkIsZUFBZSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sTUFBTSxHQUFHLEVBQUUsRUFDM0M7SUFDQSxVQUFVLE9BQU8sQ0FBQyxNQUFNLEdBQUc7RUFDN0I7RUFFQSxNQUFNLGlCQUF5QixVQUFVLElBQUksQ0FBQztFQUU5QyxPQUFPO0lBQUUsT0FBTztJQUFPO0lBQWdCLFlBQVksS0FBSyxRQUFRLENBQUM7RUFBSztBQUN4RTtBQWdCQSxPQUFPLFNBQVMseUJBQ2QsY0FBc0IsRUFDdEIsV0FBVyxJQUFJLEVBQ2YsR0FBTztFQUVQLE1BQU0sa0JBQTRDLEVBQUU7RUFFcEQsSUFBSSxjQUFjO0VBQ2xCLElBQUksY0FBYztFQUNsQixNQUFNLFFBQWtCLGVBQWUsS0FBSyxDQUFDO0VBRTdDLEtBQUssTUFBTSxPQUFPLE1BQU87SUFDdkIsSUFBSSxZQUFZLGFBQWE7TUFDM0IsTUFBTSxJQUFJLDZDQUE2QztJQUN6RDtJQUNBLE1BQU0sUUFBa0IsSUFBSSxLQUFLLENBQUM7SUFFbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUU7TUFDYixJQUFJLEtBQUs7UUFDUCxnQkFBZ0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO01BQy9CO01BQ0E7SUFDRjtJQUNBLE1BQU0sT0FBMkIsS0FBSyxDQUFDLEVBQUUsSUFBSSxXQUFXLE1BQU07SUFFOUQsTUFBTSxVQUFvQjtNQUN4QixlQUFlLEdBQUcsQ0FBQyxFQUFFLEtBQUs7TUFDMUIsZUFBZSxHQUFHLENBQUMsRUFBRSxLQUFLO01BQzFCLE1BQU0sS0FBSyxDQUFDLEVBQUU7TUFDZCxRQUFRLEtBQUssQ0FBQyxFQUFFLElBQUk7TUFDcEIsVUFBVTtNQUNWLE1BQU0sT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLFVBQVUsQ0FBQyxJQUFJO01BQy9DO0lBQ0Y7SUFFQSxJQUFJLFlBQVksQ0FBQyxRQUFRLGFBQWEsSUFBSSxhQUFhO01BQ3JELE1BQU0sSUFBSSxnQ0FBZ0MsUUFBUSxJQUFJO0lBQ3hEO0lBRUEsSUFBSSxHQUFHLENBQUMsRUFBRSxLQUFLLEtBQUs7TUFDbEIsY0FBYztJQUNoQjtJQUVBLElBQUksUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUc7TUFDM0IsTUFBTSxrQkFBa0IsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTztNQUNyRCxNQUFNLG1CQUFtQixRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPO01BRXBELGNBQWMsUUFBUSxRQUFRLEdBQUcsbUJBQW1CO01BRXBELElBQUksaUJBQWlCO1FBQ25CLFFBQVEsSUFBSSxHQUFHLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQztNQUNwQyxPQUFPLElBQUksa0JBQWtCO1FBQzNCLFFBQVEsSUFBSSxHQUFHLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7TUFDeEM7SUFDRjtJQUVBLGdCQUFnQixJQUFJLENBQUM7RUFDdkI7RUFFQSxPQUFPO0FBR1Q7QUFFQSxPQUFPLFNBQVMsT0FBTyxHQUFXO0VBQ2hDLE1BQU0sUUFBUSxJQUFJLEtBQUssQ0FBQztFQUN4QixJQUFJLE9BQU87RUFDWCxJQUFJLFNBQVM7RUFFYixLQUFLLE1BQU0sUUFBUSxNQUFPO0lBQ3hCLElBQUksUUFBUSxLQUFLLElBQUksSUFBSTtNQUN2QixJQUFJLENBQUMsTUFBTTtRQUNULE9BQU8sS0FBSyxTQUFTO1FBQ3JCLFNBQVMsS0FBSyxNQUFNLEdBQUcsS0FBSyxNQUFNO01BQ3BDLE9BQU87UUFDTCxRQUFRLEtBQUssS0FBSyxDQUFDO01BQ3JCO01BQ0EsUUFBUTtJQUNWO0VBQ0Y7RUFFQSxPQUFPLEtBQUssT0FBTztBQUNyQjtBQUVBLE9BQU8sU0FBUyxlQUNkLFdBQW1CLEVBQ25CLEtBQWU7RUFFZixPQUFPLFFBQ0gsWUFBWSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQ3pDLE9BQU87QUFDYiJ9 +// denoCacheMetadata=4878635437097228381,7006901384097774764
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/20c89930f0236478b4864cc94b867208d4f0b3ed08ca929b6f406ba570b71130.js b/vendor/gen/https/deno.land/20c89930f0236478b4864cc94b867208d4f0b3ed08ca929b6f406ba570b71130.js new file mode 100644 index 0000000..c72f1fc --- /dev/null +++ b/vendor/gen/https/deno.land/20c89930f0236478b4864cc94b867208d4f0b3ed08ca929b6f406ba570b71130.js @@ -0,0 +1,131 @@ +import { posix } from "../deps/path.ts"; +import { documentToString, stringToDocument } from "./utils/dom.ts"; +import binaryLoader from "./loaders/binary.ts"; +import { decodeURIComponentSafe } from "./utils/path.ts"; +const decoder = new TextDecoder(); +const encoder = new TextEncoder(); +/** A page of the site */ export class Page { + /** The src info */ src; + /** Used to save the page data */ data = {}; + /** Whether this page comes from a copied file with site.copy() */ isCopy = false; + /** The page content (string or Uint8Array) */ #content; + /** The parsed HTML (only for HTML documents) */ #document; + /** Convenient way to create a page dynamically */ static create(data, src) { + let { url, ...rest } = data; + const basename = posix.basename(url).replace(/\.[\w.]+$/, ""); + const page = new Page(src); + if (url.endsWith("/index.html")) { + url = url.slice(0, -10); + } + page.data = { + ...rest, + url, + page, + basename + }; + page.content = data.content; + return page; + } + constructor(src){ + this.src = { + path: "", + ext: "", + ...src + }; + } + /** Duplicate this page. */ duplicate(index, data) { + const page = new Page({ + ...this.src + }); + if (index !== undefined) { + page.src.path += `[${index}]`; + } + data.page = page; + page.data = data; + return page; + } + /** Returns the output path of this page */ get outputPath() { + const url = this.data.url; + const outputPath = url.endsWith("/") ? url + "index.html" : url; + return decodeURIComponentSafe(outputPath); + } + /** Returns the source path of this page */ get sourcePath() { + if (!this.src.path) { + return "(generated)"; + } + return this.src.path + this.src.ext; + } + /** The content of this page */ set content(content) { + this.#document = undefined; + this.#content = content instanceof Uint8Array ? content : content && content.toString(); + } + get content() { + if (this.#document) { + this.#content = documentToString(this.#document); + this.#document = undefined; + } + return this.#content; + } + /** The content of this page as text */ get text() { + return this.content instanceof Uint8Array ? decoder.decode(this.content) : this.content ?? ""; + } + set text(text) { + this.content = text; + } + /** The content of this page as bytes */ get bytes() { + return this.content instanceof Uint8Array ? this.content : encoder.encode(this.content || ""); + } + set bytes(bytes) { + this.content = bytes; + } + /** The parsed HTML code from the content */ set document(document) { + this.#content = undefined; + this.#document = document; + } + get document() { + if (!this.#document) { + this.#document = stringToDocument(this.text); + } + return this.#document; + } +} +export class StaticFile { + /** The src info */ src; + /** Used to save the contextual data */ data = {}; + /** Whether this file must be copied with site.copy() */ isCopy = false; + static create(data, src) { + const file = new StaticFile(src); + file.data = { + ...data + }; + return file; + } + constructor(src){ + this.src = src; + } + async toPage() { + const { content } = await this.src.entry.getContent(binaryLoader); + const page = Page.create(this.data, this.src); + page.content = content; + page.isCopy = this.isCopy; + return page; + } + /** Returns the output path of this page */ get outputPath() { + return decodeURIComponentSafe(this.data.url); + } + /** Returns the source path of this page */ get sourcePath() { + if (!this.src.path) { + return "(generated)"; + } + return this.src.path + this.src.ext; + } +} +/** Promote files to pages */ export async function filesToPages(files, pages, filter) { + const toRemove = files.filter(filter); + for (const file of toRemove){ + pages.push(await file.toPage()); + files.splice(files.indexOf(file), 1); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS9maWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBvc2l4IH0gZnJvbSBcIi4uL2RlcHMvcGF0aC50c1wiO1xuaW1wb3J0IHsgZG9jdW1lbnRUb1N0cmluZywgc3RyaW5nVG9Eb2N1bWVudCB9IGZyb20gXCIuL3V0aWxzL2RvbS50c1wiO1xuaW1wb3J0IGJpbmFyeUxvYWRlciBmcm9tIFwiLi9sb2FkZXJzL2JpbmFyeS50c1wiO1xuaW1wb3J0IHsgZGVjb2RlVVJJQ29tcG9uZW50U2FmZSB9IGZyb20gXCIuL3V0aWxzL3BhdGgudHNcIjtcblxuaW1wb3J0IHR5cGUgeyBNZXJnZVN0cmF0ZWd5IH0gZnJvbSBcIi4vdXRpbHMvbWVyZ2VfZGF0YS50c1wiO1xuaW1wb3J0IHR5cGUgeyBQcm94eUNvbXBvbmVudHMgfSBmcm9tIFwiLi9jb21wb25lbnRzLnRzXCI7XG5pbXBvcnQgdHlwZSB7IEVudHJ5IH0gZnJvbSBcIi4vZnMudHNcIjtcblxuY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpO1xuY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuXG4vKiogQSBwYWdlIG9mIHRoZSBzaXRlICovXG5leHBvcnQgY2xhc3MgUGFnZTxEIGV4dGVuZHMgRGF0YSA9IERhdGE+IHtcbiAgLyoqIFRoZSBzcmMgaW5mbyAqL1xuICBzcmM6IFNyYztcblxuICAvKiogVXNlZCB0byBzYXZlIHRoZSBwYWdlIGRhdGEgKi9cbiAgZGF0YTogRCA9IHt9IGFzIEQ7XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyBwYWdlIGNvbWVzIGZyb20gYSBjb3BpZWQgZmlsZSB3aXRoIHNpdGUuY29weSgpICovXG4gIGlzQ29weSA9IGZhbHNlO1xuXG4gIC8qKiBUaGUgcGFnZSBjb250ZW50IChzdHJpbmcgb3IgVWludDhBcnJheSkgKi9cbiAgI2NvbnRlbnQ/OiBDb250ZW50O1xuXG4gIC8qKiBUaGUgcGFyc2VkIEhUTUwgKG9ubHkgZm9yIEhUTUwgZG9jdW1lbnRzKSAqL1xuICAjZG9jdW1lbnQ/OiBEb2N1bWVudDtcblxuICAvKiogQ29udmVuaWVudCB3YXkgdG8gY3JlYXRlIGEgcGFnZSBkeW5hbWljYWxseSAqL1xuICBzdGF0aWMgY3JlYXRlKFxuICAgIGRhdGE6IFBhcnRpYWw8RGF0YT4gJiB7IHVybDogc3RyaW5nIH0sXG4gICAgc3JjPzogUGFydGlhbDxTcmM+LFxuICApOiBQYWdlIHtcbiAgICBsZXQgeyB1cmwsIC4uLnJlc3QgfSA9IGRhdGE7XG4gICAgY29uc3QgYmFzZW5hbWUgPSBwb3NpeC5iYXNlbmFtZSh1cmwpLnJlcGxhY2UoL1xcLltcXHcuXSskLywgXCJcIik7XG4gICAgY29uc3QgcGFnZSA9IG5ldyBQYWdlKHNyYyk7XG5cbiAgICBpZiAodXJsLmVuZHNXaXRoKFwiL2luZGV4Lmh0bWxcIikpIHtcbiAgICAgIHVybCA9IHVybC5zbGljZSgwLCAtMTApO1xuICAgIH1cblxuICAgIHBhZ2UuZGF0YSA9IHsgLi4ucmVzdCwgdXJsLCBwYWdlLCBiYXNlbmFtZSB9IGFzIERhdGE7XG4gICAgcGFnZS5jb250ZW50ID0gZGF0YS5jb250ZW50IGFzIENvbnRlbnQgfCB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gcGFnZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNyYz86IFBhcnRpYWw8U3JjPikge1xuICAgIHRoaXMuc3JjID0geyBwYXRoOiBcIlwiLCBleHQ6IFwiXCIsIC4uLnNyYyB9O1xuICB9XG5cbiAgLyoqIER1cGxpY2F0ZSB0aGlzIHBhZ2UuICovXG4gIGR1cGxpY2F0ZShpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkLCBkYXRhOiBEKTogUGFnZTxEPiB7XG4gICAgY29uc3QgcGFnZSA9IG5ldyBQYWdlPEQ+KHsgLi4udGhpcy5zcmMgfSk7XG5cbiAgICBpZiAoaW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgcGFnZS5zcmMucGF0aCArPSBgWyR7aW5kZXh9XWA7XG4gICAgfVxuXG4gICAgZGF0YS5wYWdlID0gcGFnZTtcbiAgICBwYWdlLmRhdGEgPSBkYXRhO1xuXG4gICAgcmV0dXJuIHBhZ2U7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgb3V0cHV0IHBhdGggb2YgdGhpcyBwYWdlICovXG4gIGdldCBvdXRwdXRQYXRoKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5kYXRhLnVybDtcbiAgICBjb25zdCBvdXRwdXRQYXRoID0gdXJsLmVuZHNXaXRoKFwiL1wiKSA/IHVybCArIFwiaW5kZXguaHRtbFwiIDogdXJsO1xuICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnRTYWZlKG91dHB1dFBhdGgpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIHNvdXJjZSBwYXRoIG9mIHRoaXMgcGFnZSAqL1xuICBnZXQgc291cmNlUGF0aCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5zcmMucGF0aCkge1xuICAgICAgcmV0dXJuIFwiKGdlbmVyYXRlZClcIjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zcmMucGF0aCArIHRoaXMuc3JjLmV4dDtcbiAgfVxuXG4gIC8qKiBUaGUgY29udGVudCBvZiB0aGlzIHBhZ2UgKi9cbiAgc2V0IGNvbnRlbnQoY29udGVudDogQ29udGVudCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI2RvY3VtZW50ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuI2NvbnRlbnQgPSBjb250ZW50IGluc3RhbmNlb2YgVWludDhBcnJheVxuICAgICAgPyBjb250ZW50XG4gICAgICA6IGNvbnRlbnQgJiYgY29udGVudC50b1N0cmluZygpO1xuICB9XG5cbiAgZ2V0IGNvbnRlbnQoKTogQ29udGVudCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuI2RvY3VtZW50KSB7XG4gICAgICB0aGlzLiNjb250ZW50ID0gZG9jdW1lbnRUb1N0cmluZyh0aGlzLiNkb2N1bWVudCk7XG4gICAgICB0aGlzLiNkb2N1bWVudCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy4jY29udGVudDtcbiAgfVxuXG4gIC8qKiBUaGUgY29udGVudCBvZiB0aGlzIHBhZ2UgYXMgdGV4dCAqL1xuICBnZXQgdGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbnRlbnQgaW5zdGFuY2VvZiBVaW50OEFycmF5XG4gICAgICA/IGRlY29kZXIuZGVjb2RlKHRoaXMuY29udGVudClcbiAgICAgIDogdGhpcy5jb250ZW50ID8/IFwiXCI7XG4gIH1cblxuICBzZXQgdGV4dCh0ZXh0OiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbnRlbnQgPSB0ZXh0O1xuICB9XG5cbiAgLyoqIFRoZSBjb250ZW50IG9mIHRoaXMgcGFnZSBhcyBieXRlcyAqL1xuICBnZXQgYnl0ZXMoKTogVWludDhBcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXlcbiAgICAgID8gdGhpcy5jb250ZW50XG4gICAgICA6IGVuY29kZXIuZW5jb2RlKHRoaXMuY29udGVudCB8fCBcIlwiKTtcbiAgfVxuXG4gIHNldCBieXRlcyhieXRlczogVWludDhBcnJheSkge1xuICAgIHRoaXMuY29udGVudCA9IGJ5dGVzO1xuICB9XG5cbiAgLyoqIFRoZSBwYXJzZWQgSFRNTCBjb2RlIGZyb20gdGhlIGNvbnRlbnQgKi9cbiAgc2V0IGRvY3VtZW50KGRvY3VtZW50OiBEb2N1bWVudCkge1xuICAgIHRoaXMuI2NvbnRlbnQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy4jZG9jdW1lbnQgPSBkb2N1bWVudDtcbiAgfVxuXG4gIGdldCBkb2N1bWVudCgpOiBEb2N1bWVudCB7XG4gICAgaWYgKCF0aGlzLiNkb2N1bWVudCkge1xuICAgICAgdGhpcy4jZG9jdW1lbnQgPSBzdHJpbmdUb0RvY3VtZW50KHRoaXMudGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuI2RvY3VtZW50O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTdGF0aWNGaWxlPEQgZXh0ZW5kcyBEYXRhID0gRGF0YT4ge1xuICAvKiogVGhlIHNyYyBpbmZvICovXG4gIHNyYzogUmVxdWlyZWQ8U3JjPjtcblxuICAvKiogVXNlZCB0byBzYXZlIHRoZSBjb250ZXh0dWFsIGRhdGEgKi9cbiAgZGF0YTogRCA9IHt9IGFzIEQ7XG5cbiAgLyoqIFdoZXRoZXIgdGhpcyBmaWxlIG11c3QgYmUgY29waWVkIHdpdGggc2l0ZS5jb3B5KCkgKi9cbiAgaXNDb3B5ID0gZmFsc2U7XG5cbiAgc3RhdGljIGNyZWF0ZShcbiAgICBkYXRhOiBQYXJ0aWFsPERhdGE+ICYgeyB1cmw6IHN0cmluZyB9LFxuICAgIHNyYzogUmVxdWlyZWQ8U3JjPixcbiAgKTogU3RhdGljRmlsZSB7XG4gICAgY29uc3QgZmlsZSA9IG5ldyBTdGF0aWNGaWxlKHNyYyk7XG4gICAgZmlsZS5kYXRhID0geyAuLi5kYXRhIH0gYXMgRGF0YTtcbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNyYzogUmVxdWlyZWQ8U3JjPikge1xuICAgIHRoaXMuc3JjID0gc3JjO1xuICB9XG5cbiAgYXN5bmMgdG9QYWdlKCk6IFByb21pc2U8UGFnZT4ge1xuICAgIGNvbnN0IHsgY29udGVudCB9ID0gYXdhaXQgdGhpcy5zcmMuZW50cnkuZ2V0Q29udGVudChiaW5hcnlMb2FkZXIpO1xuICAgIGNvbnN0IHBhZ2UgPSBQYWdlLmNyZWF0ZSh0aGlzLmRhdGEsIHRoaXMuc3JjKTtcbiAgICBwYWdlLmNvbnRlbnQgPSBjb250ZW50IGFzIFVpbnQ4QXJyYXk7XG4gICAgcGFnZS5pc0NvcHkgPSB0aGlzLmlzQ29weTtcbiAgICByZXR1cm4gcGFnZTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSBvdXRwdXQgcGF0aCBvZiB0aGlzIHBhZ2UgKi9cbiAgZ2V0IG91dHB1dFBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50U2FmZSh0aGlzLmRhdGEudXJsKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSBzb3VyY2UgcGF0aCBvZiB0aGlzIHBhZ2UgKi9cbiAgZ2V0IHNvdXJjZVBhdGgoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuc3JjLnBhdGgpIHtcbiAgICAgIHJldHVybiBcIihnZW5lcmF0ZWQpXCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3JjLnBhdGggKyB0aGlzLnNyYy5leHQ7XG4gIH1cbn1cblxuLyoqIFRoZSAuc3JjIHByb3BlcnR5IGZvciBhIFBhZ2Ugb3IgU3RhdGljRmlsZSAqL1xuZXhwb3J0IGludGVyZmFjZSBTcmMge1xuICAvKiogVGhlIHBhdGggdG8gdGhlIGZpbGUgKHdpdGhvdXQgZXh0ZW5zaW9uKSAqL1xuICBwYXRoOiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBleHRlbnNpb24gb2YgdGhlIGZpbGUgKi9cbiAgZXh0OiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBvcmlnaW5hbCBlbnRyeSBpbnN0YW5jZSAqL1xuICBlbnRyeT86IEVudHJ5O1xufVxuXG4vKiogVGhlIC5jb250ZW50IHByb3BlcnR5IGZvciBhIFBhZ2UgKi9cbmV4cG9ydCB0eXBlIENvbnRlbnQgPSBVaW50OEFycmF5IHwgc3RyaW5nO1xuXG4vKiogVGhlIGRhdGEgb2YgYSBwYWdlIGRlY2xhcmVkIGluaXRpYWxseSAqL1xuZXhwb3J0IGludGVyZmFjZSBSYXdEYXRhIHtcbiAgLyoqIExpc3Qgb2YgdGFncyBhc3NpZ25lZCB0byBhIHBhZ2Ugb3IgZm9sZGVyICovXG4gIHRhZ3M/OiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICAvKiogVGhlIHVybCBvZiBhIHBhZ2UgKi9cbiAgdXJsPzogc3RyaW5nIHwgZmFsc2UgfCAoKHBhZ2U6IFBhZ2UpID0+IHN0cmluZyB8IGZhbHNlKTtcblxuICAvKiogVGhlIGJhc2VuYW1lIG9mIGEgcGFnZSAqL1xuICBiYXNlbmFtZT86IHN0cmluZztcblxuICAvKiogTWFyayB0aGUgcGFnZSBhcyBhIGRyYWZ0ICovXG4gIGRyYWZ0PzogYm9vbGVhbjtcblxuICAvKiogVGhlIGRhdGUgY3JlYXRpb24gb2YgdGhlIHBhZ2UgKi9cbiAgZGF0ZT86IERhdGUgfCBzdHJpbmcgfCBudW1iZXI7XG5cbiAgLyoqIFRvIGNvbmZpZ3VyZSB0aGUgcmVuZGVyaW5nIG9yZGVyIG9mIGEgcGFnZSAqL1xuICByZW5kZXJPcmRlcj86IG51bWJlcjtcblxuICAvKiogVGhlIHJhdyBjb250ZW50IG9mIGEgcGFnZSAqL1xuICBjb250ZW50PzogdW5rbm93bjtcblxuICAvKiogVGhlIGxheW91dCB1c2VkIHRvIHJlbmRlciBhIHBhZ2UgKi9cbiAgbGF5b3V0Pzogc3RyaW5nO1xuXG4gIC8qKiBUbyBjb25maWd1cmUgYSBkaWZmZXJlbnQgdGVtcGxhdGUgZW5naW5lKHMpIHRvIHJlbmRlciBhIHBhZ2UgKi9cbiAgdGVtcGxhdGVFbmdpbmU/OiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICAvKiogVG8gY29uZmlndXJlIGhvdyBzb21lIGRhdGEga2V5cyB3aWxsIGJlIG1lcmdlZCB3aXRoIHRoZSBwYXJlbnQgKi9cbiAgbWVyZ2VkS2V5cz86IFJlY29yZDxzdHJpbmcsIE1lcmdlU3RyYXRlZ3k+O1xuXG4gIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG4gIFtpbmRleDogc3RyaW5nXTogYW55O1xufVxuXG4vKiogVGhlIGRhdGEgb2YgYSBwYWdlL2ZvbGRlciBvbmNlIGxvYWRlZCBhbmQgcHJvY2Vzc2VkICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGEgZXh0ZW5kcyBSYXdEYXRhIHtcbiAgLyoqIFRoZSB0aXRsZSBvZiB0aGUgcGFnZSAqL1xuICB0aXRsZT86IHN0cmluZztcblxuICAvKiogVGhlIHR5cGUgb2YgdGhlIHBhZ2UgKHVzZWQgdG8gZ3JvdXAgcGFnZXMgaW4gY29sbGVjdGlvbnMpICovXG4gIHR5cGU/OiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBpZCBvZiB0aGUgcGFnZSAodXNlZCB0byBpZGVudGlmeSBhIHBhZ2UgaW4gYSBjb2xsZWN0aW9uKSAqL1xuICBpZD86IHN0cmluZyB8IG51bWJlcjtcblxuICAvKiogTGlzdCBvZiB0YWdzIGFzc2lnbmVkIHRvIGEgcGFnZSBvciBmb2xkZXIgKi9cbiAgdGFnczogc3RyaW5nW107XG5cbiAgLyoqIFRoZSB1cmwgb2YgYSBwYWdlICovXG4gIHVybDogc3RyaW5nO1xuXG4gIC8qKiBUaGUgYmFzZW5hbWUgb2YgdGhlIHBhZ2UgKi9cbiAgYmFzZW5hbWU6IHN0cmluZztcblxuICAvKiogVGhlIGRhdGUgY3JlYXRpb24gb2YgdGhlIHBhZ2UgKi9cbiAgZGF0ZTogRGF0ZTtcblxuICAvKipcbiAgICogVGhlIGF2YWlsYWJsZSBjb21wb25lbnRzXG4gICAqIEBzZWUgaHR0cHM6Ly9sdW1lLmxhbmQvZG9jcy9jb3JlL2NvbXBvbmVudHMvXG4gICAqL1xuICBjb21wOiBQcm94eUNvbXBvbmVudHM7XG5cbiAgLyoqIFRoZSBwYWdlIHJlZmVyZW5jZSAqL1xuICBwYWdlOiBQYWdlO1xuXG4gIC8qKiBUaGUgbGFuZ3VhZ2Ugb2YgdGhlIHBhZ2UgKi9cbiAgbGFuZz86IHN0cmluZztcblxuICAvKipcbiAgICogVW5tYXRjaGVkIExhbmd1YWdlIFVSTFxuICAgKiBUaGUgdXJsIGZvciB3aGVuIHRoZSB1c2VyJ3MgbGFuZ3VhZ2UgZG9lc24ndCBtYXRjaCB3aXRoIGFueSBvZiB0aGUgc2l0ZSdzIGF2YWlsYWJsZSBsYW5ndWFnZXMuXG4gICAqXG4gICAqIFZhbGlkIHZhbHVlcyBhcmU6XG4gICAqIC0gRXh0ZXJuYWwgVVJMIHN0cmluZyAoaHR0cCwgaHR0cHMpLCB3aGljaCBpcyBsYW5ndWFnZSBzZWxlY3RvciBwYWdlXG4gICAqIC0gU291cmNlIHBhdGggc3RyaW5nICgvKSwgd2hpY2ggaXMgbGFuZ3VhZ2Ugc2VsZWN0b3IgcGFnZVxuICAgKiAtIExhbmd1YWdlIGNvZGUgKGVuLCBnbCwgdmkpLCB3aGljaCBpcyBmYWxsYmFjayBsYW5ndWFnZSBwYWdlXG4gICAqXG4gICAqIFRoaXMgb3B0aW9uIGlzIG1hZGUgZm9yIHgtZGVmYXVsdCBmZWF0dXJlLlxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3NlYXJjaC9kb2NzL3NwZWNpYWx0eS9pbnRlcm5hdGlvbmFsL2xvY2FsaXplZC12ZXJzaW9ucyN4ZGVmYXVsdFxuICAgKi9cbiAgdW5tYXRjaGVkTGFuZ1VybD86IHN0cmluZztcblxuICAvKipcbiAgICogQWx0ZXJuYXRlIHBhZ2VzIChmb3IgbGFuZ3VhZ2VzKVxuICAgKiBAc2VlIGh0dHBzOi8vbHVtZS5sYW5kL3BsdWdpbnMvbXVsdGlsYW5ndWFnZS9cbiAgICovXG4gIGFsdGVybmF0ZXM/OiBEYXRhW107XG59XG5cbi8qKiBQcm9tb3RlIGZpbGVzIHRvIHBhZ2VzICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmlsZXNUb1BhZ2VzKFxuICBmaWxlczogU3RhdGljRmlsZVtdLFxuICBwYWdlczogUGFnZVtdLFxuICBmaWx0ZXI6IChmaWxlOiBTdGF0aWNGaWxlKSA9PiBib29sZWFuLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHRvUmVtb3ZlOiBTdGF0aWNGaWxlW10gPSBmaWxlcy5maWx0ZXIoZmlsdGVyKTtcblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgdG9SZW1vdmUpIHtcbiAgICBwYWdlcy5wdXNoKGF3YWl0IGZpbGUudG9QYWdlKCkpO1xuICAgIGZpbGVzLnNwbGljZShmaWxlcy5pbmRleE9mKGZpbGUpLCAxKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsS0FBSyxRQUFRLGtCQUFrQjtBQUN4QyxTQUFTLGdCQUFnQixFQUFFLGdCQUFnQixRQUFRLGlCQUFpQjtBQUNwRSxPQUFPLGtCQUFrQixzQkFBc0I7QUFDL0MsU0FBUyxzQkFBc0IsUUFBUSxrQkFBa0I7QUFNekQsTUFBTSxVQUFVLElBQUk7QUFDcEIsTUFBTSxVQUFVLElBQUk7QUFFcEIsdUJBQXVCLEdBQ3ZCLE9BQU8sTUFBTTtFQUNYLGlCQUFpQixHQUNqQixJQUFTO0VBRVQsK0JBQStCLEdBQy9CLE9B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 +// denoCacheMetadata=5509241674532620869,18181009048375279284
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/213144b2acfdc2c06a74aec338fe2c8e9540600388d4fd2d9fc43d626e93bd03.js b/vendor/gen/https/deno.land/213144b2acfdc2c06a74aec338fe2c8e9540600388d4fd2d9fc43d626e93bd03.js new file mode 100644 index 0000000..1d10934 --- /dev/null +++ b/vendor/gen/https/deno.land/213144b2acfdc2c06a74aec338fe2c8e9540600388d4fd2d9fc43d626e93bd03.js @@ -0,0 +1,68 @@ +import { brightBlue, underline, yellow } from "./deps.ts"; +import { Figures } from "./figures.ts"; +import { GenericList } from "./_generic_list.ts"; +import { GenericPrompt } from "./_generic_prompt.ts"; +/** Select prompt representation. */ export class Select extends GenericList { + listIndex = this.getListIndex(this.settings.default); + /** + * Inject prompt value. Can be used for unit tests or pre selections. + * @param value Input value. + */ static inject(value) { + GenericPrompt.inject(value); + } + /** Execute the prompt and show cursor on end. */ static prompt(options) { + return new this({ + pointer: brightBlue(Figures.POINTER_SMALL), + prefix: yellow("? "), + indent: " ", + listPointer: brightBlue(Figures.POINTER), + maxRows: 10, + searchLabel: brightBlue(Figures.SEARCH), + ...options, + options: Select.mapOptions(options) + }).prompt(); + } + static mapOptions(options) { + return options.options.map((item)=>typeof item === "string" ? { + value: item + } : item).map((item)=>this.mapOption(item)); + } + input() { + return underline(brightBlue(this.inputValue)); + } + /** + * Render select option. + * @param item Select option settings. + * @param isSelected Set to true if option is selected. + */ getListItem(item, isSelected) { + let line = this.settings.indent; + line += isSelected ? `${this.settings.listPointer} ` : " "; + line += `${isSelected && !item.disabled ? this.highlight(item.name, (val)=>val) : this.highlight(item.name)}`; + return line; + } + /** Get value of selected option. */ getValue() { + return this.options[this.listIndex]?.value ?? this.settings.default; + } + /** + * Validate input value. + * @param value User input value. + * @return True on success, false or error message on error. + */ validate(value) { + return typeof value === "string" && value.length > 0 && this.options.findIndex((option)=>option.value === value) !== -1; + } + /** + * Map input value to output value. + * @param value Input value. + * @return Output value. + */ transform(value) { + return value.trim(); + } + /** + * Format output value. + * @param value Output value. + */ format(value) { + return this.getOptionByValue(value)?.name ?? value; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvcHJvbXB0L3NlbGVjdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBicmlnaHRCbHVlLCB1bmRlcmxpbmUsIHllbGxvdyB9IGZyb20gXCIuL2RlcHMudHNcIjtcbmltcG9ydCB7IEZpZ3VyZXMgfSBmcm9tIFwiLi9maWd1cmVzLnRzXCI7XG5pbXBvcnQge1xuICBHZW5lcmljTGlzdCxcbiAgR2VuZXJpY0xpc3RLZXlzLFxuICBHZW5lcmljTGlzdE9wdGlvbixcbiAgR2VuZXJpY0xpc3RPcHRpb25zLFxuICBHZW5lcmljTGlzdE9wdGlvblNldHRpbmdzLFxuICBHZW5lcmljTGlzdFNldHRpbmdzLFxufSBmcm9tIFwiLi9fZ2VuZXJpY19saXN0LnRzXCI7XG5pbXBvcnQgeyBHZW5lcmljUHJvbXB0IH0gZnJvbSBcIi4vX2dlbmVyaWNfcHJvbXB0LnRzXCI7XG5cbi8qKiBTZWxlY3Qga2V5IG9wdGlvbnMuICovXG5leHBvcnQgdHlwZSBTZWxlY3RLZXlzID0gR2VuZXJpY0xpc3RLZXlzO1xuXG4vKiogU2VsZWN0IG9wdGlvbiBvcHRpb25zLiAqL1xuZXhwb3J0IHR5cGUgU2VsZWN0T3B0aW9uID0gR2VuZXJpY0xpc3RPcHRpb247XG5cbi8qKiBTZWxlY3Qgb3B0aW9uIHNldHRpbmdzLiAqL1xuZXhwb3J0IHR5cGUgU2VsZWN0T3B0aW9uU2V0dGluZ3MgPSBHZW5lcmljTGlzdE9wdGlvblNldHRpbmdzO1xuXG4vKiogU2VsZWN0IG9wdGlvbnMgdHlwZS4gKi9cbmV4cG9ydCB0eXBlIFNlbGVjdFZhbHVlT3B0aW9ucyA9IChzdHJpbmcgfCBTZWxlY3RPcHRpb24pW107XG4vKiogU2VsZWN0IG9wdGlvbiBzZXR0aW5ncyB0eXBlLiAqL1xuZXhwb3J0IHR5cGUgU2VsZWN0VmFsdWVTZXR0aW5ncyA9IFNlbGVjdE9wdGlvblNldHRpbmdzW107XG5cbi8qKiBTZWxlY3QgcHJvbXB0IG9wdGlvbnMuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdE9wdGlvbnMgZXh0ZW5kcyBHZW5lcmljTGlzdE9wdGlvbnM8c3RyaW5nLCBzdHJpbmc+IHtcbiAgb3B0aW9uczogU2VsZWN0VmFsdWVPcHRpb25zO1xuICBrZXlzPzogU2VsZWN0S2V5cztcbn1cblxuLyoqIFNlbGVjdCBwcm9tcHQgc2V0dGluZ3MuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdFNldHRpbmdzIGV4dGVuZHMgR2VuZXJpY0xpc3RTZXR0aW5nczxzdHJpbmcsIHN0cmluZz4ge1xuICBvcHRpb25zOiBTZWxlY3RWYWx1ZVNldHRpbmdzO1xuICBrZXlzPzogU2VsZWN0S2V5cztcbn1cblxuLyoqIFNlbGVjdCBwcm9tcHQgcmVwcmVzZW50YXRpb24uICovXG5leHBvcnQgY2xhc3MgU2VsZWN0PFRTZXR0aW5ncyBleHRlbmRzIFNlbGVjdFNldHRpbmdzID0gU2VsZWN0U2V0dGluZ3M+XG4gIGV4dGVuZHMgR2VuZXJpY0xpc3Q8c3RyaW5nLCBzdHJpbmcsIFRTZXR0aW5ncz4ge1xuICBwcm90ZWN0ZWQgbGlzdEluZGV4OiBudW1iZXIgPSB0aGlzLmdldExpc3RJbmRleCh0aGlzLnNldHRpbmdzLmRlZmF1bHQpO1xuXG4gIC8qKlxuICAgKiBJbmplY3QgcHJvbXB0IHZhbHVlLiBDYW4gYmUgdXNlZCBmb3IgdW5pdCB0ZXN0cyBvciBwcmUgc2VsZWN0aW9ucy5cbiAgICogQHBhcmFtIHZhbHVlIElucHV0IHZhbHVlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpbmplY3QodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIEdlbmVyaWNQcm9tcHQuaW5qZWN0KHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBFeGVjdXRlIHRoZSBwcm9tcHQgYW5kIHNob3cgY3Vyc29yIG9uIGVuZC4gKi9cbiAgcHVibGljIHN0YXRpYyBwcm9tcHQob3B0aW9uczogU2VsZWN0T3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKHtcbiAgICAgIHBvaW50ZXI6IGJyaWdodEJsdWUoRmlndXJlcy5QT0lOVEVSX1NNQUxMKSxcbiAgICAgIHByZWZpeDogeWVsbG93KFwiPyBcIiksXG4gICAgICBpbmRlbnQ6IFwiIFwiLFxuICAgICAgbGlzdFBvaW50ZXI6IGJyaWdodEJsdWUoRmlndXJlcy5QT0lOVEVSKSxcbiAgICAgIG1heFJvd3M6IDEwLFxuICAgICAgc2VhcmNoTGFiZWw6IGJyaWdodEJsdWUoRmlndXJlcy5TRUFSQ0gpLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG9wdGlvbnM6IFNlbGVjdC5tYXBPcHRpb25zKG9wdGlvbnMpLFxuICAgIH0pLnByb21wdCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0YXRpYyBtYXBPcHRpb25zKG9wdGlvbnM6IFNlbGVjdE9wdGlvbnMpOiBTZWxlY3RWYWx1ZVNldHRpbmdzIHtcbiAgICByZXR1cm4gb3B0aW9ucy5vcHRpb25zXG4gICAgICAubWFwKChpdGVtOiBzdHJpbmcgfCBTZWxlY3RPcHRpb24pID0+XG4gICAgICAgIHR5cGVvZiBpdGVtID09PSBcInN0cmluZ1wiID8geyB2YWx1ZTogaXRlbSB9IDogaXRlbVxuICAgICAgKVxuICAgICAgLm1hcCgoaXRlbSkgPT4gdGhpcy5tYXBPcHRpb24oaXRlbSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlucHV0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHVuZGVybGluZShicmlnaHRCbHVlKHRoaXMuaW5wdXRWYWx1ZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciBzZWxlY3Qgb3B0aW9uLlxuICAgKiBAcGFyYW0gaXRlbSAgICAgICAgU2VsZWN0IG9wdGlvbiBzZXR0aW5ncy5cbiAgICogQHBhcmFtIGlzU2VsZWN0ZWQgIFNldCB0byB0cnVlIGlmIG9wdGlvbiBpcyBzZWxlY3RlZC5cbiAgICovXG4gIHByb3RlY3RlZCBnZXRMaXN0SXRlbShcbiAgICBpdGVtOiBTZWxlY3RPcHRpb25TZXR0aW5ncyxcbiAgICBpc1NlbGVjdGVkPzogYm9vbGVhbixcbiAgKTogc3RyaW5nIHtcbiAgICBsZXQgbGluZSA9IHRoaXMuc2V0dGluZ3MuaW5kZW50O1xuICAgIGxpbmUgKz0gaXNTZWxlY3RlZCA/IGAke3RoaXMuc2V0dGluZ3MubGlzdFBvaW50ZXJ9IGAgOiBcIiAgXCI7XG4gICAgbGluZSArPSBgJHtcbiAgICAgIGlzU2VsZWN0ZWQgJiYgIWl0ZW0uZGlzYWJsZWRcbiAgICAgICAgPyB0aGlzLmhpZ2hsaWdodChpdGVtLm5hbWUsICh2YWwpID0+IHZhbClcbiAgICAgICAgOiB0aGlzLmhpZ2hsaWdodChpdGVtLm5hbWUpXG4gICAgfWA7XG4gICAgcmV0dXJuIGxpbmU7XG4gIH1cblxuICAvKiogR2V0IHZhbHVlIG9mIHNlbGVjdGVkIG9wdGlvbi4gKi9cbiAgcHJvdGVjdGVkIGdldFZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uc1t0aGlzLmxpc3RJbmRleF0/LnZhbHVlID8/IHRoaXMuc2V0dGluZ3MuZGVmYXVsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBpbnB1dCB2YWx1ZS5cbiAgICogQHBhcmFtIHZhbHVlIFVzZXIgaW5wdXQgdmFsdWUuXG4gICAqIEByZXR1cm4gVHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvciBlcnJvciBtZXNzYWdlIG9uIGVycm9yLlxuICAgKi9cbiAgcHJvdGVjdGVkIHZhbGlkYXRlKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHwgc3RyaW5nIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmXG4gICAgICB2YWx1ZS5sZW5ndGggPiAwICYmXG4gICAgICB0aGlzLm9wdGlvbnMuZmluZEluZGV4KChvcHRpb246IFNlbGVjdE9wdGlvblNldHRpbmdzKSA9PlxuICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gdmFsdWVcbiAgICAgICAgKSAhPT0gLTE7XG4gIH1cblxuICAvKipcbiAgICogTWFwIGlucHV0IHZhbHVlIHRvIG91dHB1dCB2YWx1ZS5cbiAgICogQHBhcmFtIHZhbHVlIElucHV0IHZhbHVlLlxuICAgKiBAcmV0dXJuIE91dHB1dCB2YWx1ZS5cbiAgICovXG4gIHByb3RlY3RlZCB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlLnRyaW0oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXQgb3V0cHV0IHZhbHVlLlxuICAgKiBAcGFyYW0gdmFsdWUgT3V0cHV0IHZhbHVlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGZvcm1hdCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25CeVZhbHVlKHZhbHVlKT8ubmFtZSA/PyB2YWx1ZTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsWUFBWTtBQUMxRCxTQUFTLE9BQU8sUUFBUSxlQUFlO0FBQ3ZDLFNBQ0UsV0FBVyxRQU1OLHFCQUFxQjtBQUM1QixTQUFTLGFBQWEsUUFBUSx1QkFBdUI7QUE0QnJELGtDQUFrQyxHQUNsQyxPQUFPLE1BQU0sZUFDSDtFQUNFLFlBQW9CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUU7RUFFdkU7OztHQUdDLEdBQ0QsT0FBYyxPQUFPLEtBQWEsRUFBUTtJQUN4QyxjQUFjLE1BQU0sQ0FBQztFQUN2QjtFQUVBLCtDQUErQyxHQUMvQyxPQUFjLE9BQU8sT0FBc0IsRUFBbUI7SUFDNUQsT0FBTyxJQUFJLElBQUksQ0FBQztNQUNkLFNBQVMsV0FBVyxRQUFRLGFBQWE7TUFDekMsUUFBUSxPQUFPO01BQ2YsUUFBUTtNQUNSLGFBQWEsV0FBVyxRQUFRLE9BQU87TUFDdkMsU0FBUztNQUNULGFBQWEsV0FBVyxRQUFRLE1BQU07TUFDdEMsR0FBRyxPQUFPO01BQ1YsU0FBUyxPQUFPLFVBQVUsQ0FBQztJQUM3QixHQUFHLE1BQU07RUFDWDtFQUVBLE9BQWlCLFdBQVcsT0FBc0IsRUFBdUI7SUFDdkUsT0FBTyxRQUFRLE9BQU8sQ0FDbkIsR0FBRyxDQUFDLENBQUMsT0FDSixPQUFPLFNBQVMsV0FBVztRQUFFLE9BQU87TUFBSyxJQUFJLE1BRTlDLEdBQUcsQ0FBQyxDQUFDLE9BQVMsSUFBSSxDQUFDLFNBQVMsQ0FBQztFQUNsQztFQUVVLFFBQWdCO0lBQ3hCLE9BQU8sVUFBVSxXQUFXLElBQUksQ0FBQyxVQUFVO0VBQzdDO0VBRUE7Ozs7R0FJQyxHQUNELEFBQVUsWUFDUixJQUEwQixFQUMxQixVQUFvQixFQUNaO0lBQ1IsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTTtJQUMvQixRQUFRLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRztJQUN2RCxRQUFRLEdBQ04sY0FBYyxDQUFDLEtBQUssUUFBUSxHQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsTUFBUSxPQUNuQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxHQUM1QjtJQUNGLE9BQU87RUFDVDtFQUVBLGtDQUFrQyxHQUNsQyxBQUFVLFdBQW1CO0lBQzNCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsU0FBUyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU87RUFDckU7RUFFQTs7OztHQUlDLEdBQ0QsQUFBVSxTQUFTLEtBQWEsRUFBb0I7SUFDbEQsT0FBTyxPQUFPLFVBQVUsWUFDdEIsTUFBTSxNQUFNLEdBQUcsS0FDZixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQ3BCLE9BQU8sS0FBSyxLQUFLLFdBQ2IsQ0FBQztFQUNiO0VBRUE7Ozs7R0FJQyxHQUNELEFBQVUsVUFBVSxLQUFhLEVBQVU7SUFDekMsT0FBTyxNQUFNLElBQUk7RUFDbkI7RUFFQTs7O0dBR0MsR0FDRCxBQUFVLE9BQU8sS0FBYSxFQUFVO0lBQ3RDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsUUFBUTtFQUMvQztBQUNGIn0= +// denoCacheMetadata=6923234602173307256,8501236648406337255
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/2183e4f87bc58e6ff69a485d6ae4191d0390bed46c11cc4f6f77f2f10228e346.js b/vendor/gen/https/deno.land/2183e4f87bc58e6ff69a485d6ae4191d0390bed46c11cc4f6f77f2f10228e346.js new file mode 100644 index 0000000..60938d0 --- /dev/null +++ b/vendor/gen/https/deno.land/2183e4f87bc58e6ff69a485d6ae4191d0390bed46c11cc4f6f77f2f10228e346.js @@ -0,0 +1,101 @@ +import { distance } from "../_utils/distance.ts"; +/** Convert param case string to camel case. */ export function paramCaseToCamelCase(str) { + return str.replace(/-([a-z])/g, (g)=>g[1].toUpperCase()); +} +/** Convert underscore case string to camel case. */ export function underscoreToCamelCase(str) { + return str.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase().replace(/_([a-z])/g, (g)=>g[1].toUpperCase()); +} +/** + * Find option by flag, name or alias. + * + * @param flags Source options array. + * @param name Name of the option. + */ export function getOption(flags, name) { + while(name[0] === "-"){ + name = name.slice(1); + } + for (const flag of flags){ + if (isOption(flag, name)) { + return flag; + } + } + return; +} +export function didYouMeanOption(option, options) { + const optionNames = options.map((option)=>[ + option.name, + ...option.aliases ?? [] + ]).flat().map((option)=>getFlag(option)); + return didYouMean(" Did you mean option", getFlag(option), optionNames); +} +export function didYouMeanType(type, types) { + return didYouMean(" Did you mean type", type, types); +} +export function didYouMean(message, type, types) { + const match = closest(type, types); + return match ? `${message} "${match}"?` : ""; +} +export function getFlag(name) { + if (name.startsWith("-")) { + return name; + } + if (name.length > 1) { + return `--${name}`; + } + return `-${name}`; +} +/** + * Check if option has name or alias. + * + * @param option The option to check. + * @param name The option name or alias. + */ function isOption(option, name) { + return option.name === name || option.aliases && option.aliases.indexOf(name) !== -1; +} +export function matchWildCardOptions(name, flags) { + for (const option of flags){ + if (option.name.indexOf("*") === -1) { + continue; + } + let matched = matchWildCardOption(name, option); + if (matched) { + matched = { + ...matched, + name + }; + flags.push(matched); + return matched; + } + } +} +function matchWildCardOption(name, option) { + const parts = option.name.split("."); + const parts2 = name.split("."); + if (parts.length !== parts2.length) { + return false; + } + const count = Math.max(parts.length, parts2.length); + for(let i = 0; i < count; i++){ + if (parts[i] !== parts2[i] && parts[i] !== "*") { + return false; + } + } + return option; +} +function closest(str, arr) { + let minDistance = Infinity; + let minIndex = 0; + for(let i = 0; i < arr.length; i++){ + const dist = distance(str, arr[i]); + if (dist < minDistance) { + minDistance = dist; + minIndex = i; + } + } + return arr[minIndex]; +} +export function getDefaultValue(option) { + return typeof option.default === "function" ? option.default() : option.default; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvZmxhZ3MvX3V0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmxhZ09wdGlvbnMgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuaW1wb3J0IHsgZGlzdGFuY2UgfSBmcm9tIFwiLi4vX3V0aWxzL2Rpc3RhbmNlLnRzXCI7XG5cbi8qKiBDb252ZXJ0IHBhcmFtIGNhc2Ugc3RyaW5nIHRvIGNhbWVsIGNhc2UuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1DYXNlVG9DYW1lbENhc2Uoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoXG4gICAgLy0oW2Etel0pL2csXG4gICAgKGcpID0+IGdbMV0udG9VcHBlckNhc2UoKSxcbiAgKTtcbn1cblxuLyoqIENvbnZlcnQgdW5kZXJzY29yZSBjYXNlIHN0cmluZyB0byBjYW1lbCBjYXNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuZGVyc2NvcmVUb0NhbWVsQ2FzZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdHJcbiAgICAucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywgXCIkMV8kMlwiKVxuICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgLnJlcGxhY2UoXG4gICAgICAvXyhbYS16XSkvZyxcbiAgICAgIChnKSA9PiBnWzFdLnRvVXBwZXJDYXNlKCksXG4gICAgKTtcbn1cblxuLyoqXG4gKiBGaW5kIG9wdGlvbiBieSBmbGFnLCBuYW1lIG9yIGFsaWFzLlxuICpcbiAqIEBwYXJhbSBmbGFncyBTb3VyY2Ugb3B0aW9ucyBhcnJheS5cbiAqIEBwYXJhbSBuYW1lICBOYW1lIG9mIHRoZSBvcHRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPcHRpb248TyBleHRlbmRzIEZsYWdPcHRpb25zPihcbiAgZmxhZ3M6IEFycmF5PE8+LFxuICBuYW1lOiBzdHJpbmcsXG4pOiBPIHwgdW5kZWZpbmVkIHtcbiAgd2hpbGUgKG5hbWVbMF0gPT09IFwiLVwiKSB7XG4gICAgbmFtZSA9IG5hbWUuc2xpY2UoMSk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGZsYWcgb2YgZmxhZ3MpIHtcbiAgICBpZiAoaXNPcHRpb24oZmxhZywgbmFtZSkpIHtcbiAgICAgIHJldHVybiBmbGFnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZFlvdU1lYW5PcHRpb24oXG4gIG9wdGlvbjogc3RyaW5nLFxuICBvcHRpb25zOiBBcnJheTxGbGFnT3B0aW9ucz4sXG4pOiBzdHJpbmcge1xuICBjb25zdCBvcHRpb25OYW1lcyA9IG9wdGlvbnNcbiAgICAubWFwKChvcHRpb24pID0+IFtvcHRpb24ubmFtZSwgLi4uKG9wdGlvbi5hbGlhc2VzID8/IFtdKV0pXG4gICAgLmZsYXQoKVxuICAgIC5tYXAoKG9wdGlvbikgPT4gZ2V0RmxhZyhvcHRpb24pKTtcbiAgcmV0dXJuIGRpZFlvdU1lYW4oXCIgRGlkIHlvdSBtZWFuIG9wdGlvblwiLCBnZXRGbGFnKG9wdGlvbiksIG9wdGlvbk5hbWVzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZFlvdU1lYW5UeXBlKHR5cGU6IHN0cmluZywgdHlwZXM6IEFycmF5PHN0cmluZz4pOiBzdHJpbmcge1xuICByZXR1cm4gZGlkWW91TWVhbihcIiBEaWQgeW91IG1lYW4gdHlwZVwiLCB0eXBlLCB0eXBlcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWRZb3VNZWFuKFxuICBtZXNzYWdlOiBzdHJpbmcsXG4gIHR5cGU6IHN0cmluZyxcbiAgdHlwZXM6IEFycmF5PHN0cmluZz4sXG4pOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaDogc3RyaW5nIHwgdW5kZWZpbmVkID0gY2xvc2VzdCh0eXBlLCB0eXBlcyk7XG4gIHJldHVybiBtYXRjaCA/IGAke21lc3NhZ2V9IFwiJHttYXRjaH1cIj9gIDogXCJcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZsYWcobmFtZTogc3RyaW5nKSB7XG4gIGlmIChuYW1lLnN0YXJ0c1dpdGgoXCItXCIpKSB7XG4gICAgcmV0dXJuIG5hbWU7XG4gIH1cbiAgaWYgKG5hbWUubGVuZ3RoID4gMSkge1xuICAgIHJldHVybiBgLS0ke25hbWV9YDtcbiAgfVxuICByZXR1cm4gYC0ke25hbWV9YDtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBvcHRpb24gaGFzIG5hbWUgb3IgYWxpYXMuXG4gKlxuICogQHBhcmFtIG9wdGlvbiAgICBUaGUgb3B0aW9uIHRvIGNoZWNrLlxuICogQHBhcmFtIG5hbWUgICAgICBUaGUgb3B0aW9uIG5hbWUgb3IgYWxpYXMuXG4gKi9cbmZ1bmN0aW9uIGlzT3B0aW9uKG9wdGlvbjogRmxhZ09wdGlvbnMsIG5hbWU6IHN0cmluZykge1xuICByZXR1cm4gb3B0aW9uLm5hbWUgPT09IG5hbWUgfHxcbiAgICAob3B0aW9uLmFsaWFzZXMgJiYgb3B0aW9uLmFsaWFzZXMuaW5kZXhPZihuYW1lKSAhPT0gLTEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hXaWxkQ2FyZE9wdGlvbnMoXG4gIG5hbWU6IHN0cmluZyxcbiAgZmxhZ3M6IEFycmF5PEZsYWdPcHRpb25zPixcbik6IEZsYWdPcHRpb25zIHwgdW5kZWZpbmVkIHtcbiAgZm9yIChjb25zdCBvcHRpb24gb2YgZmxhZ3MpIHtcbiAgICBpZiAob3B0aW9uLm5hbWUuaW5kZXhPZihcIipcIikgPT09IC0xKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgbGV0IG1hdGNoZWQgPSBtYXRjaFdpbGRDYXJkT3B0aW9uKG5hbWUsIG9wdGlvbik7XG4gICAgaWYgKG1hdGNoZWQpIHtcbiAgICAgIG1hdGNoZWQgPSB7IC4uLm1hdGNoZWQsIG5hbWUgfTtcbiAgICAgIGZsYWdzLnB1c2gobWF0Y2hlZCk7XG4gICAgICByZXR1cm4gbWF0Y2hlZDtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF0Y2hXaWxkQ2FyZE9wdGlvbihcbiAgbmFtZTogc3RyaW5nLFxuICBvcHRpb246IEZsYWdPcHRpb25zLFxuKTogRmxhZ09wdGlvbnMgfCBmYWxzZSB7XG4gIGNvbnN0IHBhcnRzID0gb3B0aW9uLm5hbWUuc3BsaXQoXCIuXCIpO1xuICBjb25zdCBwYXJ0czIgPSBuYW1lLnNwbGl0KFwiLlwiKTtcbiAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gcGFydHMyLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBjb3VudCA9IE1hdGgubWF4KHBhcnRzLmxlbmd0aCwgcGFydHMyLmxlbmd0aCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgIGlmIChwYXJ0c1tpXSAhPT0gcGFydHMyW2ldICYmIHBhcnRzW2ldICE9PSBcIipcIikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3B0aW9uO1xufVxuXG5mdW5jdGlvbiBjbG9zZXN0KHN0cjogc3RyaW5nLCBhcnI6IHN0cmluZ1tdKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgbGV0IG1pbkRpc3RhbmNlID0gSW5maW5pdHk7XG4gIGxldCBtaW5JbmRleCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgZGlzdCA9IGRpc3RhbmNlKHN0ciwgYXJyW2ldKTtcbiAgICBpZiAoZGlzdCA8IG1pbkRpc3RhbmNlKSB7XG4gICAgICBtaW5EaXN0YW5jZSA9IGRpc3Q7XG4gICAgICBtaW5JbmRleCA9IGk7XG4gICAgfVxuICB9XG4gIHJldHVybiBhcnJbbWluSW5kZXhdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdFZhbHVlKG9wdGlvbjogRmxhZ09wdGlvbnMpOiB1bmtub3duIHtcbiAgcmV0dXJuIHR5cGVvZiBvcHRpb24uZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiXG4gICAgPyBvcHRpb24uZGVmYXVsdCgpXG4gICAgOiBvcHRpb24uZGVmYXVsdDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxTQUFTLFFBQVEsUUFBUSx3QkFBd0I7QUFFakQsNkNBQTZDLEdBQzdDLE9BQU8sU0FBUyxxQkFBcUIsR0FBVztFQUM5QyxPQUFPLElBQUksT0FBTyxDQUNoQixhQUNBLENBQUMsSUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLFdBQVc7QUFFM0I7QUFFQSxrREFBa0QsR0FDbEQsT0FBTyxTQUFTLHNCQUFzQixHQUFXO0VBQy9DLE9BQU8sSUFDSixPQUFPLENBQUMsbUJBQW1CLFNBQzNCLFdBQVcsR0FDWCxPQUFPLENBQ04sYUFDQSxDQUFDLElBQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXO0FBRTdCO0FBRUE7Ozs7O0NBS0MsR0FDRCxPQUFPLFNBQVMsVUFDZCxLQUFlLEVBQ2YsSUFBWTtFQUVaLE1BQU8sSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFLO0lBQ3RCLE9BQU8sS0FBSyxLQUFLLENBQUM7RUFDcEI7RUFFQSxLQUFLLE1BQU0sUUFBUSxNQUFPO0lBQ3hCLElBQUksU0FBUyxNQUFNLE9BQU87TUFDeEIsT0FBTztJQUNUO0VBQ0Y7RUFFQTtBQUNGO0FBRUEsT0FBTyxTQUFTLGlCQUNkLE1BQWMsRUFDZCxPQUEyQjtFQUUzQixNQUFNLGNBQWMsUUFDakIsR0FBRyxDQUFDLENBQUMsU0FBVztNQUFDLE9BQU8sSUFBSTtTQUFNLE9BQU8sT0FBTyxJQUFJLEVBQUU7S0FBRSxFQUN4RCxJQUFJLEdBQ0osR0FBRyxDQUFDLENBQUMsU0FBVyxRQUFRO0VBQzNCLE9BQU8sV0FBVyx3QkFBd0IsUUFBUSxTQUFTO0FBQzdEO0FBRUEsT0FBTyxTQUFTLGVBQWUsSUFBWSxFQUFFLEtBQW9CO0VBQy9ELE9BQU8sV0FBVyxzQkFBc0IsTUFBTTtBQUNoRDtBQUVBLE9BQU8sU0FBUyxXQUNkLE9BQWUsRUFDZixJQUFZLEVBQ1osS0FBb0I7RUFFcEIsTUFBTSxRQUE0QixRQUFRLE1BQU07RUFDaEQsT0FBTyxRQUFRLEdBQUcsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRztBQUM1QztBQUVBLE9BQU8sU0FBUyxRQUFRLElBQVk7RUFDbEMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxNQUFNO0lBQ3hCLE9BQU87RUFDVDtFQUNBLElBQUksS0FBSyxNQUFNLEdBQUcsR0FBRztJQUNuQixPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU07RUFDcEI7RUFDQSxPQUFPLENBQUMsQ0FBQyxFQUFFLE1BQU07QUFDbkI7QUFFQTs7Ozs7Q0FLQyxHQUNELFNBQVMsU0FBUyxNQUFtQixFQUFFLElBQVk7RUFDakQsT0FBTyxPQUFPLElBQUksS0FBSyxRQUNwQixPQUFPLE9BQU8sSUFBSSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO0FBQ3pEO0FBRUEsT0FBTyxTQUFTLHFCQUNkLElBQVksRUFDWixLQUF5QjtFQUV6QixLQUFLLE1BQU0sVUFBVSxNQUFPO0lBQzFCLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHO01BQ25DO0lBQ0Y7SUFDQSxJQUFJLFVBQVUsb0JBQW9CLE1BQU07SUFDeEMsSUFBSSxTQUFTO01BQ1gsVUFBVTtRQUFFLEdBQUcsT0FBTztRQUFFO01BQUs7TUFDN0IsTUFBTSxJQUFJLENBQUM7TUFDWCxPQUFPO0lBQ1Q7RUFDRjtBQUNGO0FBRUEsU0FBUyxvQkFDUCxJQUFZLEVBQ1osTUFBbUI7RUFFbkIsTUFBTSxRQUFRLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztFQUNoQyxNQUFNLFNBQVMsS0FBSyxLQUFLLENBQUM7RUFDMUIsSUFBSSxNQUFNLE1BQU0sS0FBSyxPQUFPLE1BQU0sRUFBRTtJQUNsQyxPQUFPO0VBQ1Q7RUFDQSxNQUFNLFFBQVEsS0FBSyxHQUFHLENBQUMsTUFBTSxNQUFNLEVBQUUsT0FBTyxNQUFNO0VBQ2xELElBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxPQUFPLElBQUs7SUFDOUIsSUFBSSxLQUFLLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLEVBQUUsS0FBSyxLQUFLO01BQzlDLE9BQU87SUFDVDtFQUNGO0VBQ0EsT0FBTztBQUNUO0FBRUEsU0FBUyxRQUFRLEdBQVcsRUFBRSxHQUFhO0VBQ3pDLElBQUksY0FBYztFQUNsQixJQUFJLFdBQVc7RUFDZixJQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxNQUFNLEVBQUUsSUFBSztJQUNuQyxNQUFNLE9BQU8sU0FBUyxLQUFLLEdBQUcsQ0FBQyxFQUFFO0lBQ2pDLElBQUksT0FBTyxhQUFhO01BQ3RCLGNBQWM7TUFDZCxXQUFXO0lBQ2I7RUFDRjtFQUNBLE9BQU8sR0FBRyxDQUFDLFNBQVM7QUFDdEI7QUFFQSxPQUFPLFNBQVMsZ0JBQWdCLE1BQW1CO0VBQ2pELE9BQU8sT0FBTyxPQUFPLE9BQU8sS0FBSyxhQUM3QixPQUFPLE9BQU8sS0FDZCxPQUFPLE9BQU87QUFDcEIifQ== +// denoCacheMetadata=3181218620809262683,8000131780211385183
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/23a0985510d7072cd1e6c4bfcb34fb4c8dc4914695738e8b6e76f3a782bf18fc.js b/vendor/gen/https/deno.land/23a0985510d7072cd1e6c4bfcb34fb4c8dc4914695738e8b6e76f3a782bf18fc.js new file mode 100644 index 0000000..bf1f022 --- /dev/null +++ b/vendor/gen/https/deno.land/23a0985510d7072cd1e6c4bfcb34fb4c8dc4914695738e8b6e76f3a782bf18fc.js @@ -0,0 +1,27 @@ +import jsonLoader from "../core/loaders/json.ts"; +import { merge } from "../core/utils/object.ts"; +// Default options +export const defaults = { + extensions: [ + ".json", + ".jsonc" + ], + pageSubExtension: ".page" +}; +/** + * A plugin to load JSON files as data and pages + * Installed by default + * @see https://lume.land/plugins/json/ + */ export function json(userOptions) { + const options = merge(defaults, userOptions); + return (site)=>{ + site.loadData(options.extensions, jsonLoader); + site.loadPages(options.extensions, { + pageSubExtension: options.pageSubExtension, + loader: jsonLoader + }); + }; +} +export default json; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvcGx1Z2lucy9qc29uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBqc29uTG9hZGVyIGZyb20gXCIuLi9jb3JlL2xvYWRlcnMvanNvbi50c1wiO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tIFwiLi4vY29yZS91dGlscy9vYmplY3QudHNcIjtcblxuaW1wb3J0IHR5cGUgU2l0ZSBmcm9tIFwiLi4vY29yZS9zaXRlLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIC8qKiBGaWxlIGV4dGVuc2lvbnMgdG8gbG9hZCAqL1xuICBleHRlbnNpb25zPzogc3RyaW5nW107XG5cbiAgLyoqIE9wdGlvbmFsIHN1Yi1leHRlbnNpb24gZm9yIHBhZ2UgZmlsZXMgKi9cbiAgcGFnZVN1YkV4dGVuc2lvbj86IHN0cmluZztcbn1cblxuLy8gRGVmYXVsdCBvcHRpb25zXG5leHBvcnQgY29uc3QgZGVmYXVsdHM6IE9wdGlvbnMgPSB7XG4gIGV4dGVuc2lvbnM6IFtcIi5qc29uXCIsIFwiLmpzb25jXCJdLFxuICBwYWdlU3ViRXh0ZW5zaW9uOiBcIi5wYWdlXCIsXG59O1xuXG4vKipcbiAqIEEgcGx1Z2luIHRvIGxvYWQgSlNPTiBmaWxlcyBhcyBkYXRhIGFuZCBwYWdlc1xuICogSW5zdGFsbGVkIGJ5IGRlZmF1bHRcbiAqIEBzZWUgaHR0cHM6Ly9sdW1lLmxhbmQvcGx1Z2lucy9qc29uL1xuICovXG5leHBvcnQgZnVuY3Rpb24ganNvbih1c2VyT3B0aW9ucz86IE9wdGlvbnMpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IG1lcmdlKGRlZmF1bHRzLCB1c2VyT3B0aW9ucyk7XG5cbiAgcmV0dXJuIChzaXRlOiBTaXRlKSA9PiB7XG4gICAgc2l0ZS5sb2FkRGF0YShvcHRpb25zLmV4dGVuc2lvbnMsIGpzb25Mb2FkZXIpO1xuICAgIHNpdGUubG9hZFBhZ2VzKG9wdGlvbnMuZXh0ZW5zaW9ucywge1xuICAgICAgcGFnZVN1YkV4dGVuc2lvbjogb3B0aW9ucy5wYWdlU3ViRXh0ZW5zaW9uLFxuICAgICAgbG9hZGVyOiBqc29uTG9hZGVyLFxuICAgIH0pO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBqc29uO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sZ0JBQWdCLDBCQUEwQjtBQUNqRCxTQUFTLEtBQUssUUFBUSwwQkFBMEI7QUFZaEQsa0JBQWtCO0FBQ2xCLE9BQU8sTUFBTSxXQUFvQjtFQUMvQixZQUFZO0lBQUM7SUFBUztHQUFTO0VBQy9CLGtCQUFrQjtBQUNwQixFQUFFO0FBRUY7Ozs7Q0FJQyxHQUNELE9BQU8sU0FBUyxLQUFLLFdBQXFCO0VBQ3hDLE1BQU0sVUFBVSxNQUFNLFVBQVU7RUFFaEMsT0FBTyxDQUFDO0lBQ04sS0FBSyxRQUFRLENBQUMsUUFBUSxVQUFVLEVBQUU7SUFDbEMsS0FBSyxTQUFTLENBQUMsUUFBUSxVQUFVLEVBQUU7TUFDakMsa0JBQWtCLFFBQVEsZ0JBQWdCO01BQzFDLFFBQVE7SUFDVjtFQUNGO0FBQ0Y7QUFFQSxlQUFlLEtBQUsifQ== +// denoCacheMetadata=2000558100036652362,1393168950696169082
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/2490f5351f6789a193b1c2a8fbdd4765bfe1012a77c578ba34bd51a23a8c9a54.js b/vendor/gen/https/deno.land/2490f5351f6789a193b1c2a8fbdd4765bfe1012a77c578ba34bd51a23a8c9a54.js new file mode 100644 index 0000000..5b4f36f --- /dev/null +++ b/vendor/gen/https/deno.land/2490f5351f6789a193b1c2a8fbdd4765bfe1012a77c578ba34bd51a23a8c9a54.js @@ -0,0 +1,52 @@ +import loader from "../core/loaders/module.ts"; +import { merge } from "../core/utils/object.ts"; +// Default options +export const defaults = { + extensions: [ + ".js", + ".ts" + ], + pageSubExtension: ".page" +}; +/** Template engine to render js/ts files */ export class ModuleEngine { + helpers = {}; + includes; + constructor(includes){ + this.includes = includes; + } + deleteCache() {} + async render(content, data) { + return typeof content === "function" ? await content(data, this.helpers) : content; + } + addHelper(name, fn) { + this.helpers[name] = fn; + } +} +/** + * A plugin to load js/ts files as data and pages + * Installed by default + * @see https://lume.land/plugins/modules/ + */ export function modules(userOptions) { + return (site)=>{ + const options = merge({ + ...defaults, + includes: site.options.includes + }, userOptions); + const engine = new ModuleEngine(options.includes); + // Ignore includes folder + if (options.includes) { + site.ignore(options.includes); + } + // Load the _data files + site.loadData(options.extensions, loader); + // Load the pages and register the engine + site.loadPages(options.extensions, { + loader, + engine, + pageSubExtension: options.pageSubExtension + }); + }; +} +export default modules; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvcGx1Z2lucy9tb2R1bGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2FkZXIgZnJvbSBcIi4uL2NvcmUvbG9hZGVycy9tb2R1bGUudHNcIjtcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSBcIi4uL2NvcmUvdXRpbHMvb2JqZWN0LnRzXCI7XG5cbmltcG9ydCB0eXBlIFNpdGUgZnJvbSBcIi4uL2NvcmUvc2l0ZS50c1wiO1xuaW1wb3J0IHR5cGUgeyBFbmdpbmUsIEhlbHBlciB9IGZyb20gXCIuLi9jb3JlL3JlbmRlcmVyLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIC8qKiBGaWxlIGV4dGVuc2lvbnMgdG8gbG9hZCAqL1xuICBleHRlbnNpb25zPzogc3RyaW5nW107XG5cbiAgLyoqIE9wdGlvbmFsIHN1Yi1leHRlbnNpb24gZm9yIHBhZ2UgZmlsZXMgKi9cbiAgcGFnZVN1YkV4dGVuc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIGluY2x1ZGVzIHBhdGhcbiAgICogQGRlZmF1bHQgYHNpdGUub3B0aW9ucy5pbmNsdWRlc2BcbiAgICovXG4gIGluY2x1ZGVzPzogc3RyaW5nO1xufVxuXG4vLyBEZWZhdWx0IG9wdGlvbnNcbmV4cG9ydCBjb25zdCBkZWZhdWx0czogT3B0aW9ucyA9IHtcbiAgZXh0ZW5zaW9uczogW1wiLmpzXCIsIFwiLnRzXCJdLFxuICBwYWdlU3ViRXh0ZW5zaW9uOiBcIi5wYWdlXCIsXG59O1xuXG4vKiogVGVtcGxhdGUgZW5naW5lIHRvIHJlbmRlciBqcy90cyBmaWxlcyAqL1xuZXhwb3J0IGNsYXNzIE1vZHVsZUVuZ2luZSBpbXBsZW1lbnRzIEVuZ2luZSB7XG4gIGhlbHBlcnM6IFJlY29yZDxzdHJpbmcsIEhlbHBlcj4gPSB7fTtcbiAgaW5jbHVkZXM6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihpbmNsdWRlczogc3RyaW5nKSB7XG4gICAgdGhpcy5pbmNsdWRlcyA9IGluY2x1ZGVzO1xuICB9XG5cbiAgZGVsZXRlQ2FjaGUoKSB7fVxuXG4gIGFzeW5jIHJlbmRlcihcbiAgICBjb250ZW50OiB1bmtub3duLFxuICAgIGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICApOiBQcm9taXNlPHVua25vd24+IHtcbiAgICByZXR1cm4gdHlwZW9mIGNvbnRlbnQgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgPyBhd2FpdCBjb250ZW50KGRhdGEsIHRoaXMuaGVscGVycylcbiAgICAgIDogY29udGVudDtcbiAgfVxuXG4gIGFkZEhlbHBlcihuYW1lOiBzdHJpbmcsIGZuOiBIZWxwZXIpIHtcbiAgICB0aGlzLmhlbHBlcnNbbmFtZV0gPSBmbjtcbiAgfVxufVxuXG4vKipcbiAqIEEgcGx1Z2luIHRvIGxvYWQganMvdHMgZmlsZXMgYXMgZGF0YSBhbmQgcGFnZXNcbiAqIEluc3RhbGxlZCBieSBkZWZhdWx0XG4gKiBAc2VlIGh0dHBzOi8vbHVtZS5sYW5kL3BsdWdpbnMvbW9kdWxlcy9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vZHVsZXModXNlck9wdGlvbnM/OiBPcHRpb25zKSB7XG4gIHJldHVybiAoc2l0ZTogU2l0ZSkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBtZXJnZShcbiAgICAgIHsgLi4uZGVmYXVsdHMsIGluY2x1ZGVzOiBzaXRlLm9wdGlvbnMuaW5jbHVkZXMgfSxcbiAgICAgIHVzZXJPcHRpb25zLFxuICAgICk7XG5cbiAgICBjb25zdCBlbmdpbmUgPSBuZXcgTW9kdWxlRW5naW5lKG9wdGlvbnMuaW5jbHVkZXMpO1xuXG4gICAgLy8gSWdub3JlIGluY2x1ZGVzIGZvbGRlclxuICAgIGlmIChvcHRpb25zLmluY2x1ZGVzKSB7XG4gICAgICBzaXRlLmlnbm9yZShvcHRpb25zLmluY2x1ZGVzKTtcbiAgICB9XG5cbiAgICAvLyBMb2FkIHRoZSBfZGF0YSBmaWxlc1xuICAgIHNpdGUubG9hZERhdGEob3B0aW9ucy5leHRlbnNpb25zLCBsb2FkZXIpO1xuXG4gICAgLy8gTG9hZCB0aGUgcGFnZXMgYW5kIHJlZ2lzdGVyIHRoZSBlbmdpbmVcbiAgICBzaXRlLmxvYWRQYWdlcyhvcHRpb25zLmV4dGVuc2lvbnMsIHtcbiAgICAgIGxvYWRlcixcbiAgICAgIGVuZ2luZSxcbiAgICAgIHBhZ2VTdWJFeHRlbnNpb246IG9wdGlvbnMucGFnZVN1YkV4dGVuc2lvbixcbiAgICB9KTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbW9kdWxlcztcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFlBQVksNEJBQTRCO0FBQy9DLFNBQVMsS0FBSyxRQUFRLDBCQUEwQjtBQW1CaEQsa0JBQWtCO0FBQ2xCLE9BQU8sTUFBTSxXQUFvQjtFQUMvQixZQUFZO0lBQUM7SUFBTztHQUFNO0VBQzFCLGtCQUFrQjtBQUNwQixFQUFFO0FBRUYsMENBQTBDLEdBQzFDLE9BQU8sTUFBTTtFQUNYLFVBQWtDLENBQUMsRUFBRTtFQUNyQyxTQUFpQjtFQUVqQixZQUFZLFFBQWdCLENBQUU7SUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRztFQUNsQjtFQUVBLGNBQWMsQ0FBQztFQUVmLE1BQU0sT0FDSixPQUFnQixFQUNoQixJQUE2QixFQUNYO0lBQ2xCLE9BQU8sT0FBTyxZQUFZLGFBQ3RCLE1BQU0sUUFBUSxNQUFNLElBQUksQ0FBQyxPQUFPLElBQ2hDO0VBQ047RUFFQSxVQUFVLElBQVksRUFBRSxFQUFVLEVBQUU7SUFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUc7RUFDdkI7QUFDRjtBQUVBOzs7O0NBSUMsR0FDRCxPQUFPLFNBQVMsUUFBUSxXQUFxQjtFQUMzQyxPQUFPLENBQUM7SUFDTixNQUFNLFVBQVUsTUFDZDtNQUFFLEdBQUcsUUFBUTtNQUFFLFVBQVUsS0FBSyxPQUFPLENBQUMsUUFBUTtJQUFDLEdBQy9DO0lBR0YsTUFBTSxTQUFTLElBQUksYUFBYSxRQUFRLFFBQVE7SUFFaEQseUJBQXlCO0lBQ3pCLElBQUksUUFBUSxRQUFRLEVBQUU7TUFDcEIsS0FBSyxNQUFNLENBQUMsUUFBUSxRQUFRO0lBQzlCO0lBRUEsdUJBQXVCO0lBQ3ZCLEtBQUssUUFBUSxDQUFDLFFBQVEsVUFBVSxFQUFFO0lBRWxDLHlDQUF5QztJQUN6QyxLQUFLLFNBQVMsQ0FBQyxRQUFRLFVBQVUsRUFBRTtNQUNqQztNQUNBO01BQ0Esa0JBQWtCLFFBQVEsZ0JBQWdCO0lBQzVDO0VBQ0Y7QUFDRjtBQUVBLGVBQWUsUUFBUSJ9 +// denoCacheMetadata=3926903311864228544,12364142428343781007
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/24e417d1fe867af5b0963ef39b9e36a92606dd20e47fa41b2647ea9a8bdff88f.js b/vendor/gen/https/deno.land/24e417d1fe867af5b0963ef39b9e36a92606dd20e47fa41b2647ea9a8bdff88f.js new file mode 100644 index 0000000..2d1f5c9 --- /dev/null +++ b/vendor/gen/https/deno.land/24e417d1fe867af5b0963ef39b9e36a92606dd20e47fa41b2647ea9a8bdff88f.js @@ -0,0 +1,304 @@ +import { getFlag } from "../../flags/_utils.ts"; +import { Table } from "../../table/table.ts"; +import { dedent, getDescription, parseArgumentsDefinition } from "../_utils.ts"; +import { bold, brightBlue, brightMagenta, dim, getColorEnabled, green, italic, red, setColorEnabled, yellow } from "../deps.ts"; +import { Type } from "../type.ts"; +/** Help text generator. */ export class HelpGenerator { + cmd; + indent; + options; + /** Generate help text for given command. */ static generate(cmd, options) { + return new HelpGenerator(cmd, options).generate(); + } + constructor(cmd, options = {}){ + this.cmd = cmd; + this.indent = 2; + this.options = { + types: false, + hints: true, + colors: true, + long: false, + ...options + }; + } + generate() { + const areColorsEnabled = getColorEnabled(); + setColorEnabled(this.options.colors); + const result = this.generateHeader() + this.generateMeta() + this.generateDescription() + this.generateOptions() + this.generateCommands() + this.generateEnvironmentVariables() + this.generateExamples(); + setColorEnabled(areColorsEnabled); + return result; + } + generateHeader() { + const usage = this.cmd.getUsage(); + const rows = [ + [ + bold("Usage:"), + brightMagenta(this.cmd.getPath() + (usage ? " " + highlightArguments(usage, this.options.types) : "")) + ] + ]; + const version = this.cmd.getVersion(); + if (version) { + rows.push([ + bold("Version:"), + yellow(`${this.cmd.getVersion()}`) + ]); + } + return "\n" + Table.from(rows).indent(this.indent).padding(1).toString() + "\n"; + } + generateMeta() { + const meta = Object.entries(this.cmd.getMeta()); + if (!meta.length) { + return ""; + } + const rows = []; + for (const [name, value] of meta){ + rows.push([ + bold(`${name}: `) + value + ]); + } + return "\n" + Table.from(rows).indent(this.indent).padding(1).toString() + "\n"; + } + generateDescription() { + if (!this.cmd.getDescription()) { + return ""; + } + return this.label("Description") + Table.from([ + [ + dedent(this.cmd.getDescription()) + ] + ]).indent(this.indent * 2).maxColWidth(140).padding(1).toString() + "\n"; + } + generateOptions() { + const options = this.cmd.getOptions(false); + if (!options.length) { + return ""; + } + let groups = []; + const hasGroups = options.some((option)=>option.groupName); + if (hasGroups) { + for (const option of options){ + let group = groups.find((group)=>group.name === option.groupName); + if (!group) { + group = { + name: option.groupName, + options: [] + }; + groups.push(group); + } + group.options.push(option); + } + } else { + groups = [ + { + name: "Options", + options + } + ]; + } + let result = ""; + for (const group of groups){ + result += this.generateOptionGroup(group); + } + return result; + } + generateOptionGroup(group) { + if (!group.options.length) { + return ""; + } + const hasTypeDefinitions = !!group.options.find((option)=>!!option.typeDefinition); + if (hasTypeDefinitions) { + return this.label(group.name ?? "Options") + Table.from([ + ...group.options.map((option)=>[ + option.flags.map((flag)=>brightBlue(flag)).join(", "), + highlightArguments(option.typeDefinition || "", this.options.types), + red(bold("-")), + getDescription(option.description, !this.options.long), + this.generateHints(option) + ]) + ]).padding([ + 2, + 2, + 1, + 2 + ]).indent(this.indent * 2).maxColWidth([ + 60, + 60, + 1, + 80, + 60 + ]).toString() + "\n"; + } + return this.label(group.name ?? "Options") + Table.from([ + ...group.options.map((option)=>[ + option.flags.map((flag)=>brightBlue(flag)).join(", "), + red(bold("-")), + getDescription(option.description, !this.options.long), + this.generateHints(option) + ]) + ]).indent(this.indent * 2).maxColWidth([ + 60, + 1, + 80, + 60 + ]).padding([ + 2, + 1, + 2 + ]).toString() + "\n"; + } + generateCommands() { + const commands = this.cmd.getCommands(false); + if (!commands.length) { + return ""; + } + const hasTypeDefinitions = !!commands.find((command)=>!!command.getArgsDefinition()); + if (hasTypeDefinitions) { + return this.label("Commands") + Table.from([ + ...commands.map((command)=>[ + [ + command.getName(), + ...command.getAliases() + ].map((name)=>brightBlue(name)).join(", "), + highlightArguments(command.getArgsDefinition() || "", this.options.types), + red(bold("-")), + command.getShortDescription() + ]) + ]).indent(this.indent * 2).maxColWidth([ + 60, + 60, + 1, + 80 + ]).padding([ + 2, + 2, + 1, + 2 + ]).toString() + "\n"; + } + return this.label("Commands") + Table.from([ + ...commands.map((command)=>[ + [ + command.getName(), + ...command.getAliases() + ].map((name)=>brightBlue(name)).join(", "), + red(bold("-")), + command.getShortDescription() + ]) + ]).maxColWidth([ + 60, + 1, + 80 + ]).padding([ + 2, + 1, + 2 + ]).indent(this.indent * 2).toString() + "\n"; + } + generateEnvironmentVariables() { + const envVars = this.cmd.getEnvVars(false); + if (!envVars.length) { + return ""; + } + return this.label("Environment variables") + Table.from([ + ...envVars.map((envVar)=>[ + envVar.names.map((name)=>brightBlue(name)).join(", "), + highlightArgumentDetails(envVar.details, this.options.types), + red(bold("-")), + this.options.long ? dedent(envVar.description) : envVar.description.trim().split("\n", 1)[0], + envVar.required ? `(${yellow(`required`)})` : "" + ]) + ]).padding([ + 2, + 2, + 1, + 2 + ]).indent(this.indent * 2).maxColWidth([ + 60, + 60, + 1, + 80, + 10 + ]).toString() + "\n"; + } + generateExamples() { + const examples = this.cmd.getExamples(); + if (!examples.length) { + return ""; + } + return this.label("Examples") + Table.from(examples.map((example)=>[ + dim(bold(`${capitalize(example.name)}:`)), + dedent(example.description) + ])).padding(1).indent(this.indent * 2).maxColWidth(150).toString() + "\n"; + } + generateHints(option) { + if (!this.options.hints) { + return ""; + } + const hints = []; + option.required && hints.push(yellow(`required`)); + typeof option.default !== "undefined" && hints.push(bold(`Default: `) + inspect(option.default, this.options.colors)); + option.depends?.length && hints.push(yellow(bold(`Depends: `)) + italic(option.depends.map(getFlag).join(", "))); + option.conflicts?.length && hints.push(red(bold(`Conflicts: `)) + italic(option.conflicts.map(getFlag).join(", "))); + const type = this.cmd.getType(option.args[0]?.type)?.handler; + if (type instanceof Type) { + const possibleValues = type.values?.(this.cmd, this.cmd.getParent()); + if (possibleValues?.length) { + hints.push(bold(`Values: `) + possibleValues.map((value)=>inspect(value, this.options.colors)).join(", ")); + } + } + if (hints.length) { + return `(${hints.join(", ")})`; + } + return ""; + } + label(label) { + return "\n" + " ".repeat(this.indent) + bold(`${label}:`) + "\n\n"; + } +} +function capitalize(string) { + return (string?.charAt(0).toUpperCase() + string.slice(1)) ?? ""; +} +function inspect(value, colors) { + return Deno.inspect(value, // deno < 1.4.3 doesn't support the colors property. + { + depth: 1, + colors, + trailingComma: false + }); +} +/** + * Colorize arguments string. + * @param argsDefinition Arguments definition: `<color1:string> <color2:string>` + * @param types Show types. + */ function highlightArguments(argsDefinition, types = true) { + if (!argsDefinition) { + return ""; + } + return parseArgumentsDefinition(argsDefinition, false, true).map((arg)=>typeof arg === "string" ? arg : highlightArgumentDetails(arg, types)).join(" "); +} +/** + * Colorize argument string. + * @param arg Argument details. + * @param types Show types. + */ function highlightArgumentDetails(arg, types = true) { + let str = ""; + str += yellow(arg.optionalValue ? "[" : "<"); + let name = ""; + name += arg.name; + if (arg.variadic) { + name += "..."; + } + name = brightMagenta(name); + str += name; + if (types) { + str += yellow(":"); + str += red(arg.type); + if (arg.list) { + str += green("[]"); + } + } + str += yellow(arg.optionalValue ? "]" : ">"); + return str; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC9oZWxwL19oZWxwX2dlbmVyYXRvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRGbGFnIH0gZnJvbSBcIi4uLy4uL2ZsYWdzL191dGlscy50c1wiO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwiLi4vLi4vdGFibGUvdGFibGUudHNcIjtcbmltcG9ydCB7IGRlZGVudCwgZ2V0RGVzY3JpcHRpb24sIHBhcnNlQXJndW1lbnRzRGVmaW5pdGlvbiB9IGZyb20gXCIuLi9fdXRpbHMudHNcIjtcbmltcG9ydCB0eXBlIHsgQ29tbWFuZCB9IGZyb20gXCIuLi9jb21tYW5kLnRzXCI7XG5pbXBvcnQge1xuICBib2xkLFxuICBicmlnaHRCbHVlLFxuICBicmlnaHRNYWdlbnRhLFxuICBkaW0sXG4gIGdldENvbG9yRW5hYmxlZCxcbiAgZ3JlZW4sXG4gIGl0YWxpYyxcbiAgcmVkLFxuICBzZXRDb2xvckVuYWJsZWQsXG4gIHllbGxvdyxcbn0gZnJvbSBcIi4uL2RlcHMudHNcIjtcbmltcG9ydCB7IFR5cGUgfSBmcm9tIFwiLi4vdHlwZS50c1wiO1xuaW1wb3J0IHR5cGUgeyBBcmd1bWVudCwgRW52VmFyLCBFeGFtcGxlLCBPcHRpb24gfSBmcm9tIFwiLi4vdHlwZXMudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBIZWxwT3B0aW9ucyB7XG4gIHR5cGVzPzogYm9vbGVhbjtcbiAgaGludHM/OiBib29sZWFuO1xuICBjb2xvcnM/OiBib29sZWFuO1xuICBsb25nPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIE9wdGlvbkdyb3VwIHtcbiAgbmFtZT86IHN0cmluZztcbiAgb3B0aW9uczogQXJyYXk8T3B0aW9uPjtcbn1cblxuLyoqIEhlbHAgdGV4dCBnZW5lcmF0b3IuICovXG5leHBvcnQgY2xhc3MgSGVscEdlbmVyYXRvciB7XG4gIHByaXZhdGUgaW5kZW50ID0gMjtcbiAgcHJpdmF0ZSBvcHRpb25zOiBSZXF1aXJlZDxIZWxwT3B0aW9ucz47XG5cbiAgLyoqIEdlbmVyYXRlIGhlbHAgdGV4dCBmb3IgZ2l2ZW4gY29tbWFuZC4gKi9cbiAgcHVibGljIHN0YXRpYyBnZW5lcmF0ZShjbWQ6IENvbW1hbmQsIG9wdGlvbnM/OiBIZWxwT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBIZWxwR2VuZXJhdG9yKGNtZCwgb3B0aW9ucykuZ2VuZXJhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjbWQ6IENvbW1hbmQsXG4gICAgb3B0aW9uczogSGVscE9wdGlvbnMgPSB7fSxcbiAgKSB7XG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgdHlwZXM6IGZhbHNlLFxuICAgICAgaGludHM6IHRydWUsXG4gICAgICBjb2xvcnM6IHRydWUsXG4gICAgICBsb25nOiBmYWxzZSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBhcmVDb2xvcnNFbmFibGVkID0gZ2V0Q29sb3JFbmFibGVkKCk7XG4gICAgc2V0Q29sb3JFbmFibGVkKHRoaXMub3B0aW9ucy5jb2xvcnMpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZW5lcmF0ZUhlYWRlcigpICtcbiAgICAgIHRoaXMuZ2VuZXJhdGVNZXRhKCkgK1xuICAgICAgdGhpcy5nZW5lcmF0ZURlc2NyaXB0aW9uKCkgK1xuICAgICAgdGhpcy5nZW5lcmF0ZU9wdGlvbnMoKSArXG4gICAgICB0aGlzLmdlbmVyYXRlQ29tbWFuZHMoKSArXG4gICAgICB0aGlzLmdlbmVyYXRlRW52aXJvbm1lbnRWYXJpYWJsZXMoKSArXG4gICAgICB0aGlzLmdlbmVyYXRlRXhhbXBsZXMoKTtcblxuICAgIHNldENvbG9yRW5hYmxlZChhcmVDb2xvcnNFbmFibGVkKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlSGVhZGVyKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdXNhZ2UgPSB0aGlzLmNtZC5nZXRVc2FnZSgpO1xuICAgIGNvbnN0IHJvd3MgPSBbXG4gICAgICBbXG4gICAgICAgIGJvbGQoXCJVc2FnZTpcIiksXG4gICAgICAgIGJyaWdodE1hZ2VudGEoXG4gICAgICAgICAgdGhpcy5jbWQuZ2V0UGF0aCgpICtcbiAgICAgICAgICAgICh1c2FnZSA/IFwiIFwiICsgaGlnaGxpZ2h0QXJndW1lbnRzKHVzYWdlLCB0aGlzLm9wdGlvbnMudHlwZXMpIDogXCJcIiksXG4gICAgICAgICksXG4gICAgICBdLFxuICAgIF07XG4gICAgY29uc3QgdmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jbWQuZ2V0VmVyc2lvbigpO1xuICAgIGlmICh2ZXJzaW9uKSB7XG4gICAgICByb3dzLnB1c2goW2JvbGQoXCJWZXJzaW9uOlwiKSwgeWVsbG93KGAke3RoaXMuY21kLmdldFZlcnNpb24oKX1gKV0pO1xuICAgIH1cbiAgICByZXR1cm4gXCJcXG5cIiArXG4gICAgICBUYWJsZS5mcm9tKHJvd3MpXG4gICAgICAgIC5pbmRlbnQodGhpcy5pbmRlbnQpXG4gICAgICAgIC5wYWRkaW5nKDEpXG4gICAgICAgIC50b1N0cmluZygpICtcbiAgICAgIFwiXFxuXCI7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlTWV0YSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1ldGEgPSBPYmplY3QuZW50cmllcyh0aGlzLmNtZC5nZXRNZXRhKCkpO1xuICAgIGlmICghbWV0YS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIGNvbnN0IHJvd3MgPSBbXTtcbiAgICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgbWV0YSkge1xuICAgICAgcm93cy5wdXNoKFtib2xkKGAke25hbWV9OiBgKSArIHZhbHVlXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXFxuXCIgK1xuICAgICAgVGFibGUuZnJvbShyb3dzKVxuICAgICAgICAuaW5kZW50KHRoaXMuaW5kZW50KVxuICAgICAgICAucGFkZGluZygxKVxuICAgICAgICAudG9TdHJpbmcoKSArXG4gICAgICBcIlxcblwiO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZURlc2NyaXB0aW9uKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmNtZC5nZXREZXNjcmlwdGlvbigpKSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubGFiZWwoXCJEZXNjcmlwdGlvblwiKSArXG4gICAgICBUYWJsZS5mcm9tKFtcbiAgICAgICAgW2RlZGVudCh0aGlzLmNtZC5nZXREZXNjcmlwdGlvbigpKV0sXG4gICAgICBdKVxuICAgICAgICAuaW5kZW50KHRoaXMuaW5kZW50ICogMilcbiAgICAgICAgLm1heENvbFdpZHRoKDE0MClcbiAgICAgICAgLnBhZGRpbmcoMSlcbiAgICAgICAgLnRvU3RyaW5nKCkgK1xuICAgICAgXCJcXG5cIjtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVPcHRpb25zKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuY21kLmdldE9wdGlvbnMoZmFsc2UpO1xuICAgIGlmICghb3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIGxldCBncm91cHM6IEFycmF5PE9wdGlvbkdyb3VwPiA9IFtdO1xuICAgIGNvbnN0IGhhc0dyb3VwcyA9IG9wdGlvbnMuc29tZSgob3B0aW9uKSA9PiBvcHRpb24uZ3JvdXBOYW1lKTtcbiAgICBpZiAoaGFzR3JvdXBzKSB7XG4gICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zKSB7XG4gICAgICAgIGxldCBncm91cCA9IGdyb3Vwcy5maW5kKChncm91cCkgPT4gZ3JvdXAubmFtZSA9PT0gb3B0aW9uLmdyb3VwTmFtZSk7XG4gICAgICAgIGlmICghZ3JvdXApIHtcbiAgICAgICAgICBncm91cCA9IHtcbiAgICAgICAgICAgIG5hbWU6IG9wdGlvbi5ncm91cE5hbWUsXG4gICAgICAgICAgICBvcHRpb25zOiBbXSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGdyb3Vwcy5wdXNoKGdyb3VwKTtcbiAgICAgICAgfVxuICAgICAgICBncm91cC5vcHRpb25zLnB1c2gob3B0aW9uKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZ3JvdXBzID0gW3tcbiAgICAgICAgbmFtZTogXCJPcHRpb25zXCIsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICB9XTtcbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIGdyb3Vwcykge1xuICAgICAgcmVzdWx0ICs9IHRoaXMuZ2VuZXJhdGVPcHRpb25Hcm91cChncm91cCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVPcHRpb25Hcm91cChncm91cDogT3B0aW9uR3JvdXApOiBzdHJpbmcge1xuICAgIGlmICghZ3JvdXAub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgICBjb25zdCBoYXNUeXBlRGVmaW5pdGlvbnMgPSAhIWdyb3VwLm9wdGlvbnMuZmluZCgob3B0aW9uKSA9PlxuICAgICAgISFvcHRpb24udHlwZURlZmluaXRpb25cbiAgICApO1xuXG4gICAgaWYgKGhhc1R5cGVEZWZpbml0aW9ucykge1xuICAgICAgcmV0dXJuIHRoaXMubGFiZWwoZ3JvdXAubmFtZSA/PyBcIk9wdGlvbnNcIikgK1xuICAgICAgICBUYWJsZS5mcm9tKFtcbiAgICAgICAgICAuLi5ncm91cC5vcHRpb25zLm1hcCgob3B0aW9uOiBPcHRpb24pID0+IFtcbiAgICAgICAgICAgIG9wdGlvbi5mbGFncy5tYXAoKGZsYWcpID0+IGJyaWdodEJsdWUoZmxhZykpLmpvaW4oXCIsIFwiKSxcbiAgICAgICAgICAgIGhpZ2hsaWdodEFyZ3VtZW50cyhcbiAgICAgICAgICAgICAgb3B0aW9uLnR5cGVEZWZpbml0aW9uIHx8IFwiXCIsXG4gICAgICAgICAgICAgIHRoaXMub3B0aW9ucy50eXBlcyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICByZWQoYm9sZChcIi1cIikpLFxuICAgICAgICAgICAgZ2V0RGVzY3JpcHRpb24ob3B0aW9uLmRlc2NyaXB0aW9uLCAhdGhpcy5vcHRpb25zLmxvbmcpLFxuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUhpbnRzKG9wdGlvbiksXG4gICAgICAgICAgXSksXG4gICAgICAgIF0pXG4gICAgICAgICAgLnBhZGRpbmcoWzIsIDIsIDEsIDJdKVxuICAgICAgICAgIC5pbmRlbnQodGhpcy5pbmRlbnQgKiAyKVxuICAgICAgICAgIC5tYXhDb2xXaWR0aChbNjAsIDYwLCAxLCA4MCwgNjBdKVxuICAgICAgICAgIC50b1N0cmluZygpICtcbiAgICAgICAgXCJcXG5cIjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5sYWJlbChncm91cC5uYW1lID8/IFwiT3B0aW9uc1wiKSArXG4gICAgICBUYWJsZS5mcm9tKFtcbiAgICAgICAgLi4uZ3JvdXAub3B0aW9ucy5tYXAoKG9wdGlvbjogT3B0aW9uKSA9PiBbXG4gICAgICAgICAgb3B0aW9uLmZsYWdzLm1hcCgoZmxhZykgPT4gYnJpZ2h0Qmx1ZShmbGFnKSkuam9pbihcIiwgXCIpLFxuICAgICAgICAgIHJlZChib2xkKFwiLVwiKSksXG4gICAgICAgICAgZ2V0RGVzY3JpcHRpb24ob3B0aW9uLmRlc2NyaXB0aW9uLCAhdGhpcy5vcHRpb25zLmxvbmcpLFxuICAgICAgICAgIHRoaXMuZ2VuZXJhdGVIaW50cyhvcHRpb24pLFxuICAgICAgICBdKSxcbiAgICAgIF0pXG4gICAgICAgIC5pbmRlbnQodGhpcy5pbmRlbnQgKiAyKVxuICAgICAgICAubWF4Q29sV2lkdGgoWzYwLCAxLCA4MCwgNjBdKVxuICAgICAgICAucGFkZGluZyhbMiwgMSwgMl0pXG4gICAgICAgIC50b1N0cmluZygpICtcbiAgICAgIFwiXFxuXCI7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQ29tbWFuZHMoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb21tYW5kcyA9IHRoaXMuY21kLmdldENvbW1hbmRzKGZhbHNlKTtcbiAgICBpZiAoIWNvbW1hbmRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgY29uc3QgaGFzVHlwZURlZmluaXRpb25zID0gISFjb21tYW5kcy5maW5kKChjb21tYW5kKSA9PlxuICAgICAgISFjb21tYW5kLmdldEFyZ3NEZWZpbml0aW9uKClcbiAgICApO1xuXG4gICAgaWYgKGhhc1R5cGVEZWZpbml0aW9ucykge1xuICAgICAgcmV0dXJuIHRoaXMubGFiZWwoXCJDb21tYW5kc1wiKSArXG4gICAgICAgIFRhYmxlLmZyb20oW1xuICAgICAgICAgIC4uLmNvbW1hbmRzLm1hcCgoY29tbWFuZDogQ29tbWFuZCkgPT4gW1xuICAgICAgICAgICAgW2NvbW1hbmQuZ2V0TmFtZSgpLCAuLi5jb21tYW5kLmdldEFsaWFzZXMoKV0ubWFwKChuYW1lKSA9PlxuICAgICAgICAgICAgICBicmlnaHRCbHVlKG5hbWUpXG4gICAgICAgICAgICApLmpvaW4oXCIsIFwiKSxcbiAgICAgICAgICAgIGhpZ2hsaWdodEFyZ3VtZW50cyhcbiAgICAgICAgICAgICAgY29tbWFuZC5nZXRBcmdzRGVmaW5pdGlvbigpIHx8IFwiXCIsXG4gICAgICAgICAgICAgIHRoaXMub3B0aW9ucy50eXBlcyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICByZWQoYm9sZChcIi1cIikpLFxuICAgICAgICAgICAgY29tbWFuZC5nZXRTaG9ydERlc2NyaXB0aW9uKCksXG4gICAgICAgICAgXSksXG4gICAgICAgIF0pXG4gICAgICAgICAgLmluZGVudCh0aGlzLmluZGVudCAqIDIpXG4gICAgICAgICAgLm1heENvbFdpZHRoKFs2MCwgNjAsIDEsIDgwXSlcbiAgICAgICAgICAucGFkZGluZyhbMiwgMiwgMSwgMl0pXG4gICAgICAgICAgLnRvU3RyaW5nKCkgK1xuICAgICAgICBcIlxcblwiO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmxhYmVsKFwiQ29tbWFuZHNcIikgK1xuICAgICAgVGFibGUuZnJvbShbXG4gICAgICAgIC4uLmNvbW1hbmRzLm1hcCgoY29tbWFuZDogQ29tbWFuZCkgPT4gW1xuICAgICAgICAgIFtjb21tYW5kLmdldE5hbWUoKSwgLi4uY29tbWFuZC5nZXRBbGlhc2VzKCldLm1hcCgobmFtZSkgPT5cbiAgICAgICAgICAgIGJyaWdodEJsdWUobmFtZSlcbiAgICAgICAgICApXG4gICAgICAgICAgICAuam9pbihcIiwgXCIpLFxuICAgICAgICAgIHJlZChib2xkKFwiLVwiKSksXG4gICAgICAgICAgY29tbWFuZC5nZXRTaG9ydERlc2NyaXB0aW9uKCksXG4gICAgICAgIF0pLFxuICAgICAgXSlcbiAgICAgICAgLm1heENvbFdpZHRoKFs2MCwgMSwgODBdKVxuICAgICAgICAucGFkZGluZyhbMiwgMSwgMl0pXG4gICAgICAgIC5pbmRlbnQodGhpcy5pbmRlbnQgKiAyKVxuICAgICAgICAudG9TdHJpbmcoKSArXG4gICAgICBcIlxcblwiO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUVudmlyb25tZW50VmFyaWFibGVzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZW52VmFycyA9IHRoaXMuY21kLmdldEVudlZhcnMoZmFsc2UpO1xuICAgIGlmICghZW52VmFycy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sYWJlbChcIkVudmlyb25tZW50IHZhcmlhYmxlc1wiKSArXG4gICAgICBUYWJsZS5mcm9tKFtcbiAgICAgICAgLi4uZW52VmFycy5tYXAoKGVudlZhcjogRW52VmFyKSA9PiBbXG4gICAgICAgICAgZW52VmFyLm5hbWVzLm1hcCgobmFtZTogc3RyaW5nKSA9PiBicmlnaHRCbHVlKG5hbWUpKS5qb2luKFwiLCBcIiksXG4gICAgICAgICAgaGlnaGxpZ2h0QXJndW1lbnREZXRhaWxzKFxuICAgICAgICAgICAgZW52VmFyLmRldGFpbHMsXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMudHlwZXMsXG4gICAgICAgICAgKSxcbiAgICAgICAgICByZWQoYm9sZChcIi1cIikpLFxuICAgICAgICAgIHRoaXMub3B0aW9ucy5sb25nXG4gICAgICAgICAgICA/IGRlZGVudChlbnZWYXIuZGVzY3JpcHRpb24pXG4gICAgICAgICAgICA6IGVudlZhci5kZXNjcmlwdGlvbi50cmltKCkuc3BsaXQoXCJcXG5cIiwgMSlbMF0sXG4gICAgICAgICAgZW52VmFyLnJlcXVpcmVkID8gYCgke3llbGxvdyhgcmVxdWlyZWRgKX0pYCA6IFwiXCIsXG4gICAgICAgIF0pLFxuICAgICAgXSlcbiAgICAgICAgLnBhZGRpbmcoWzIsIDIsIDEsIDJdKVxuICAgICAgICAuaW5kZW50KHRoaXMuaW5kZW50ICogMilcbiAgICAgICAgLm1heENvbFdpZHRoKFs2MCwgNjAsIDEsIDgwLCAxMF0pXG4gICAgICAgIC50b1N0cmluZygpICtcbiAgICAgIFwiXFxuXCI7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlRXhhbXBsZXMoKTogc3RyaW5nIHtcbiAgICBjb25zdCBleGFtcGxlcyA9IHRoaXMuY21kLmdldEV4YW1wbGVzKCk7XG4gICAgaWYgKCFleGFtcGxlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sYWJlbChcIkV4YW1wbGVzXCIpICtcbiAgICAgIFRhYmxlLmZyb20oZXhhbXBsZXMubWFwKChleGFtcGxlOiBFeGFtcGxlKSA9PiBbXG4gICAgICAgIGRpbShib2xkKGAke2NhcGl0YWxpemUoZXhhbXBsZS5uYW1lKX06YCkpLFxuICAgICAgICBkZWRlbnQoZXhhbXBsZS5kZXNjcmlwdGlvbiksXG4gICAgICBdKSlcbiAgICAgICAgLnBhZGRpbmcoMSlcbiAgICAgICAgLmluZGVudCh0aGlzLmluZGVudCAqIDIpXG4gICAgICAgIC5tYXhDb2xXaWR0aCgxNTApXG4gICAgICAgIC50b1N0cmluZygpICtcbiAgICAgIFwiXFxuXCI7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlSGludHMob3B0aW9uOiBPcHRpb24pOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5vcHRpb25zLmhpbnRzKSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgY29uc3QgaGludHMgPSBbXTtcblxuICAgIG9wdGlvbi5yZXF1aXJlZCAmJiBoaW50cy5wdXNoKHllbGxvdyhgcmVxdWlyZWRgKSk7XG4gICAgdHlwZW9mIG9wdGlvbi5kZWZhdWx0ICE9PSBcInVuZGVmaW5lZFwiICYmIGhpbnRzLnB1c2goXG4gICAgICBib2xkKGBEZWZhdWx0OiBgKSArIGluc3BlY3Qob3B0aW9uLmRlZmF1bHQsIHRoaXMub3B0aW9ucy5jb2xvcnMpLFxuICAgICk7XG4gICAgb3B0aW9uLmRlcGVuZHM/Lmxlbmd0aCAmJiBoaW50cy5wdXNoKFxuICAgICAgeWVsbG93KGJvbGQoYERlcGVuZHM6IGApKSArXG4gICAgICAgIGl0YWxpYyhvcHRpb24uZGVwZW5kcy5tYXAoZ2V0RmxhZykuam9pbihcIiwgXCIpKSxcbiAgICApO1xuICAgIG9wdGlvbi5jb25mbGljdHM/Lmxlbmd0aCAmJiBoaW50cy5wdXNoKFxuICAgICAgcmVkKGJvbGQoYENvbmZsaWN0czogYCkpICtcbiAgICAgICAgaXRhbGljKG9wdGlvbi5jb25mbGljdHMubWFwKGdldEZsYWcpLmpvaW4oXCIsIFwiKSksXG4gICAgKTtcblxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmNtZC5nZXRUeXBlKG9wdGlvbi5hcmdzWzBdPy50eXBlKT8uaGFuZGxlcjtcbiAgICBpZiAodHlwZSBpbnN0YW5jZW9mIFR5cGUpIHtcbiAgICAgIGNvbnN0IHBvc3NpYmxlVmFsdWVzID0gdHlwZS52YWx1ZXM/Lih0aGlzLmNtZCwgdGhpcy5jbWQuZ2V0UGFyZW50KCkpO1xuICAgICAgaWYgKHBvc3NpYmxlVmFsdWVzPy5sZW5ndGgpIHtcbiAgICAgICAgaGludHMucHVzaChcbiAgICAgICAgICBib2xkKGBWYWx1ZXM6IGApICtcbiAgICAgICAgICAgIHBvc3NpYmxlVmFsdWVzLm1hcCgodmFsdWU6IHVua25vd24pID0+XG4gICAgICAgICAgICAgIGluc3BlY3QodmFsdWUsIHRoaXMub3B0aW9ucy5jb2xvcnMpXG4gICAgICAgICAgICApLmpvaW4oXCIsIFwiKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaGludHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gYCgke2hpbnRzLmpvaW4oXCIsIFwiKX0pYDtcbiAgICB9XG5cbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHByaXZhdGUgbGFiZWwobGFiZWw6IHN0cmluZykge1xuICAgIHJldHVybiBcIlxcblwiICtcbiAgICAgIFwiIFwiLnJlcGVhdCh0aGlzLmluZGVudCkgKyBib2xkKGAke2xhYmVsfTpgKSArXG4gICAgICBcIlxcblxcblwiO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhcGl0YWxpemUoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyaW5nPy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0cmluZy5zbGljZSgxKSA/PyBcIlwiO1xufVxuXG5mdW5jdGlvbiBpbnNwZWN0KHZhbHVlOiB1bmtub3duLCBjb2xvcnM6IGJvb2xlYW4pOiBzdHJpbmcge1xuICByZXR1cm4gRGVuby5pbnNwZWN0KFxuICAgIHZhbHVlLFxuICAgIC8vIGRlbm8gPCAxLjQuMyBkb2Vzbid0IHN1cHBvcnQgdGhlIGNvbG9ycyBwcm9wZXJ0eS5cbiAgICB7IGRlcHRoOiAxLCBjb2xvcnMsIHRyYWlsaW5nQ29tbWE6IGZhbHNlIH0gYXMgRGVuby5JbnNwZWN0T3B0aW9ucyxcbiAgKTtcbn1cblxuLyoqXG4gKiBDb2xvcml6ZSBhcmd1bWVudHMgc3RyaW5nLlxuICogQHBhcmFtIGFyZ3NEZWZpbml0aW9uIEFyZ3VtZW50cyBkZWZpbml0aW9uOiBgPGNvbG9yMTpzdHJpbmc+IDxjb2xvcjI6c3RyaW5nPmBcbiAqIEBwYXJhbSB0eXBlcyBTaG93IHR5cGVzLlxuICovXG5mdW5jdGlvbiBoaWdobGlnaHRBcmd1bWVudHMoYXJnc0RlZmluaXRpb246IHN0cmluZywgdHlwZXMgPSB0cnVlKSB7XG4gIGlmICghYXJnc0RlZmluaXRpb24pIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHJldHVybiBwYXJzZUFyZ3VtZW50c0RlZmluaXRpb24oYXJnc0RlZmluaXRpb24sIGZhbHNlLCB0cnVlKVxuICAgIC5tYXAoKGFyZzogQXJndW1lbnQgfCBzdHJpbmcpID0+XG4gICAgICB0eXBlb2YgYXJnID09PSBcInN0cmluZ1wiID8gYXJnIDogaGlnaGxpZ2h0QXJndW1lbnREZXRhaWxzKGFyZywgdHlwZXMpXG4gICAgKVxuICAgIC5qb2luKFwiIFwiKTtcbn1cblxuLyoqXG4gKiBDb2xvcml6ZSBhcmd1bWVudCBzdHJpbmcuXG4gKiBAcGFyYW0gYXJnIEFyZ3VtZW50IGRldGFpbHMuXG4gKiBAcGFyYW0gdHlwZXMgU2hvdyB0eXBlcy5cbiAqL1xuZnVuY3Rpb24gaGlnaGxpZ2h0QXJndW1lbnREZXRhaWxzKFxuICBhcmc6IEFyZ3VtZW50LFxuICB0eXBlcyA9IHRydWUsXG4pOiBzdHJpbmcge1xuICBsZXQgc3RyID0gXCJcIjtcblxuICBzdHIgKz0geWVsbG93KGFyZy5vcHRpb25hbFZhbHVlID8gXCJbXCIgOiBcIjxcIik7XG5cbiAgbGV0IG5hbWUgPSBcIlwiO1xuICBuYW1lICs9IGFyZy5uYW1lO1xuICBpZiAoYXJnLnZhcmlhZGljKSB7XG4gICAgbmFtZSArPSBcIi4uLlwiO1xuICB9XG4gIG5hbWUgPSBicmlnaHRNYWdlbnRhKG5hbWUpO1xuXG4gIHN0ciArPSBuYW1lO1xuXG4gIGlmICh0eXBlcykge1xuICAgIHN0ciArPSB5ZWxsb3coXCI6XCIpO1xuICAgIHN0ciArPSByZWQoYXJnLnR5cGUpO1xuICAgIGlmIChhcmcubGlzdCkge1xuICAgICAgc3RyICs9IGdyZWVuKFwiW11cIik7XG4gICAgfVxuICB9XG5cbiAgc3RyICs9IHllbGxvdyhhcmcub3B0aW9uYWxWYWx1ZSA/IFwiXVwiIDogXCI+XCIpO1xuXG4gIHJldHVybiBzdHI7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxPQUFPLFFBQVEsd0JBQXdCO0FBQ2hELFNBQVMsS0FBSyxRQUFRLHVCQUF1QjtBQUM3QyxTQUFTLE1BQU0sRUFBRSxjQUFjLEVBQUUsd0JBQXdCLFFBQVEsZUFBZTtBQUVoRixTQUNFLElBQUksRUFDSixVQUFVLEVBQ1YsYUFBYSxFQUNiLEdBQUcsRUFDSCxlQUFlLEVBQ2YsS0FBSyxFQUNMLE1BQU0sRUFDTixHQUFHLEVBQ0gsZUFBZSxFQUNmLE1BQU0sUUFDRCxhQUFhO0FBQ3BCLFNBQVMsSUFBSSxRQUFRLGFBQWE7QUFlbEMseUJBQXlCLEdBQ3pCLE9BQU8sTUFBTTs7RUFDSCxPQUFXO0VBQ1gsUUFBK0I7RUFFdkMsMENBQTBDLEdBQzFDLE9BQWMsU0FBUyxHQUFZLEVBQUUsT0FBcUIsRUFBVTtJQUNsRSxPQUFPLElBQUksY0FBYyxLQUFLLFNBQVMsUUFBUTtFQUNqRDtFQUVBLFlBQ0UsQUFBUSxHQUFZLEVBQ3BCLFVBQXVCLENBQUMsQ0FBQyxDQUN6QjtTQUZRLE1BQUE7U0FURixTQUFTO0lBWWYsSUFBSSxDQUFDLE9BQU8sR0FBRztNQUNiLE9BQU87TUFDUCxPQUFPO01BQ1AsUUFBUTtNQUNSLE1BQU07TUFDTixHQUFHLE9BQU87SUFDWjtFQUNGO0VBRVEsV0FBbUI7SUFDekIsTUFBTSxtQkFBbUI7SUFDekIsZ0JBQWdCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTTtJQUVuQyxNQUFNLFNBQVMsSUFBSSxDQUFDLGNBQWMsS0FDaEMsSUFBSSxDQUFDLFlBQVksS0FDakIsSUFBSSxDQUFDLG1CQUFtQixLQUN4QixJQUFJLENBQUMsZUFBZSxLQUNwQixJQUFJLENBQUMsZ0JBQWdCLEtBQ3JCLElBQUksQ0FBQyw0QkFBNEIsS0FDakMsSUFBSSxDQUFDLGdCQUFnQjtJQUV2QixnQkFBZ0I7SUFFaEIsT0FBTztFQUNUO0VBRVEsaUJBQXlCO0lBQy9CLE1BQU0sUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVE7SUFDL0IsTUFBTSxPQUFPO01BQ1g7UUFDRSxLQUFLO1FBQ0wsY0FDRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sS0FDZCxDQUFDLFFBQVEsTUFBTSxtQkFBbUIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFO09BRXRFO0tBQ0Y7SUFDRCxNQUFNLFVBQThCLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVTtJQUN2RCxJQUFJLFNBQVM7TUFDWCxLQUFLLElBQUksQ0FBQztRQUFDLEtBQUs7UUFBYSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUk7T0FBRTtJQUNsRTtJQUNBLE9BQU8sT0FDTCxNQUFNLElBQUksQ0FBQyxNQUNSLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUNsQixPQUFPLENBQUMsR0FDUixRQUFRLEtBQ1g7RUFDSjtFQUVRLGVBQXVCO0lBQzdCLE1BQU0sT0FBTyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU87SUFDNUMsSUFBSSxDQUFDLEtBQUssTUFBTSxFQUFFO01BQ2hCLE9BQU87SUFDVDtJQUVBLE1BQU0sT0FBTyxFQUFFO0lBQ2YsS0FBSyxNQUFNLENBQUMsTUFBTSxNQUFNLElBQUksS0FBTTtNQUNoQyxLQUFLLElBQUksQ0FBQztRQUFDLEtBQUssR0FBRyxLQUFLLEVBQUUsQ0FBQyxJQUFJO09BQU07SUFDdkM7SUFFQSxPQUFPLE9BQ0wsTUFBTSxJQUFJLENBQUMsTUFDUixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFDbEIsT0FBTyxDQUFDLEdBQ1IsUUFBUSxLQUNYO0VBQ0o7RUFFUSxzQkFBOEI7SUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxJQUFJO01BQzlCLE9BQU87SUFDVDtJQUNBLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFDaEIsTUFBTSxJQUFJLENBQUM7TUFDVDtRQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjO09BQUk7S0FDcEMsRUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUNyQixXQUFXLENBQUMsS0FDWixPQUFPLENBQUMsR0FDUixRQUFRLEtBQ1g7RUFDSjtFQUVRLGtCQUEwQjtJQUNoQyxNQUFNLFVBQVUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7SUFDcEMsSUFBSSxDQUFDLFFBQVEsTUFBTSxFQUFFO01BQ25CLE9BQU87SUFDVDtJQUVBLElBQUksU0FBNkIsRUFBRTtJQUNuQyxNQUFNLFlBQVksUUFBUSxJQUFJLENBQUMsQ0FBQyxTQUFXLE9BQU8sU0FBUztJQUMzRCxJQUFJLFdBQVc7TUFDYixLQUFLLE1BQU0sVUFBVSxRQUFTO1FBQzVCLElBQUksUUFBUSxPQUFPLElBQUksQ0FBQyxDQUFDLFFBQVUsTUFBTSxJQUFJLEtBQUssT0FBTyxTQUFTO1FBQ2xFLElBQUksQ0FBQyxPQUFPO1VBQ1YsUUFBUTtZQUNOLE1BQU0sT0FBTyxTQUFTO1lBQ3RCLFNBQVMsRUFBRTtVQUNiO1VBQ0EsT0FBTyxJQUFJLENBQUM7UUFDZDtRQUNBLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQztNQUNyQjtJQUNGLE9BQU87TUFDTCxTQUFTO1FBQUM7VUFDUixNQUFNO1VBQ047UUFDRjtPQUFFO0lBQ0o7SUFFQSxJQUFJLFNBQVM7SUFDYixLQUFLLE1BQU0sU0FBUyxPQUFRO01BQzFCLFVBQVUsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3JDO0lBRUEsT0FBTztFQUNUO0VBRVEsb0JBQW9CLEtBQWtCLEVBQVU7SUFDdEQsSUFBSSxDQUFDLE1BQU0sT0FBTyxDQUFDLE1BQU0sRUFBRTtNQUN6QixPQUFPO0lBQ1Q7SUFDQSxNQUFNLHFCQUFxQixDQUFDLENBQUMsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsU0FDL0MsQ0FBQyxDQUFDLE9BQU8sY0FBYztJQUd6QixJQUFJLG9CQUFvQjtNQUN0QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUksYUFDOUIsTUFBTSxJQUFJLENBQUM7V0FDTixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFtQjtZQUN2QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFTLFdBQVcsT0FBTyxJQUFJLENBQUM7WUFDbEQsbUJBQ0UsT0FBTyxjQUFjLElBQUksSUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO1lBRXBCLElBQUksS0FBSztZQUNULGVBQWUsT0FBTyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7WUFDckQsSUFBSSxDQUFDLGFBQWEsQ0FBQztXQUNwQjtPQUNGLEVBQ0UsT0FBTyxDQUFDO1FBQUM7UUFBRztRQUFHO1FBQUc7T0FBRSxFQUNwQixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUNyQixXQUFXLENBQUM7UUFBQztRQUFJO1FBQUk7UUFBRztRQUFJO09BQUcsRUFDL0IsUUFBUSxLQUNYO0lBQ0o7SUFFQSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUksYUFDOUIsTUFBTSxJQUFJLENBQUM7U0FDTixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFtQjtVQUN2QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFTLFdBQVcsT0FBTyxJQUFJLENBQUM7VUFDbEQsSUFBSSxLQUFLO1VBQ1QsZUFBZSxPQUFPLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTtVQUNyRCxJQUFJLENBQUMsYUFBYSxDQUFDO1NBQ3BCO0tBQ0YsRUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUNyQixXQUFXLENBQUM7TUFBQztNQUFJO01BQUc7TUFBSTtLQUFHLEVBQzNCLE9BQU8sQ0FBQztNQUFDO01BQUc7TUFBRztLQUFFLEVBQ2pCLFFBQVEsS0FDWDtFQUNKO0VBRVEsbUJBQTJCO0lBQ2pDLE1BQU0sV0FBVyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztJQUN0QyxJQUFJLENBQUMsU0FBUyxNQUFNLEVBQUU7TUFDcEIsT0FBTztJQUNUO0lBRUEsTUFBTSxxQkFBcUIsQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsVUFDMUMsQ0FBQyxDQUFDLFFBQVEsaUJBQWlCO0lBRzdCLElBQUksb0JBQW9CO01BQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUNoQixNQUFNLElBQUksQ0FBQztXQUNOLFNBQVMsR0FBRyxDQUFDLENBQUMsVUFBcUI7WUFDcEM7Y0FBQyxRQUFRLE9BQU87aUJBQU8sUUFBUSxVQUFVO2FBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUNoRCxXQUFXLE9BQ1gsSUFBSSxDQUFDO1lBQ1AsbUJBQ0UsUUFBUSxpQkFBaUIsTUFBTSxJQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUs7WUFFcEIsSUFBSSxLQUFLO1lBQ1QsUUFBUSxtQkFBbUI7V0FDNUI7T0FDRixFQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQ3JCLFdBQVcsQ0FBQztRQUFDO1FBQUk7UUFBSTtRQUFHO09BQUcsRUFDM0IsT0FBTyxDQUFDO1FBQUM7UUFBRztRQUFHO1FBQUc7T0FBRSxFQUNwQixRQUFRLEtBQ1g7SUFDSjtJQUVBLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUNoQixNQUFNLElBQUksQ0FBQztTQUNOLFNBQVMsR0FBRyxDQUFDLENBQUMsVUFBcUI7VUFDcEM7WUFBQyxRQUFRLE9BQU87ZUFBTyxRQUFRLFVBQVU7V0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQ2hELFdBQVcsT0FFVixJQUFJLENBQUM7VUFDUixJQUFJLEtBQUs7VUFDVCxRQUFRLG1CQUFtQjtTQUM1QjtLQUNGLEVBQ0UsV0FBVyxDQUFDO01BQUM7TUFBSTtNQUFHO0tBQUcsRUFDdkIsT0FBTyxDQUFDO01BQUM7TUFBRztNQUFHO0tBQUUsRUFDakIsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FDckIsUUFBUSxLQUNYO0VBQ0o7RUFFUSwrQkFBdUM7SUFDN0MsTUFBTSxVQUFVLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO0lBQ3BDLElBQUksQ0FBQyxRQUFRLE1BQU0sRUFBRTtNQUNuQixPQUFPO0lBQ1Q7SUFDQSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsMkJBQ2hCLE1BQU0sSUFBSSxDQUFDO1NBQ04sUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFtQjtVQUNqQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFpQixXQUFXLE9BQU8sSUFBSSxDQUFDO1VBQzFELHlCQUNFLE9BQU8sT0FBTyxFQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztVQUVwQixJQUFJLEtBQUs7VUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FDYixPQUFPLE9BQU8sV0FBVyxJQUN6QixPQUFPLFdBQVcsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7VUFDL0MsT0FBTyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHO1NBQy9DO0tBQ0YsRUFDRSxPQUFPLENBQUM7TUFBQztNQUFHO01BQUc7TUFBRztLQUFFLEVBQ3BCLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQ3JCLFdBQVcsQ0FBQztNQUFDO01BQUk7TUFBSTtNQUFHO01BQUk7S0FBRyxFQUMvQixRQUFRLEtBQ1g7RUFDSjtFQUVRLG1CQUEyQjtJQUNqQyxNQUFNLFdBQVcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXO0lBQ3JDLElBQUksQ0FBQyxTQUFTLE1BQU0sRUFBRTtNQUNwQixPQUFPO0lBQ1Q7SUFDQSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FDaEIsTUFBTSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxVQUFxQjtRQUM1QyxJQUFJLEtBQUssR0FBRyxXQUFXLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN2QyxPQUFPLFFBQVEsV0FBVztPQUMzQixHQUNFLE9BQU8sQ0FBQyxHQUNSLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQ3JCLFdBQVcsQ0FBQyxLQUNaLFFBQVEsS0FDWDtFQUNKO0VBRVEsY0FBYyxNQUFjLEVBQVU7SUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO01BQ3ZCLE9BQU87SUFDVDtJQUNBLE1BQU0sUUFBUSxFQUFFO0lBRWhCLE9BQU8sUUFBUSxJQUFJLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDL0MsT0FBTyxPQUFPLE9BQU8sS0FBSyxlQUFlLE1BQU0sSUFBSSxDQUNqRCxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksUUFBUSxPQUFPLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07SUFFakUsT0FBTyxPQUFPLEVBQUUsVUFBVSxNQUFNLElBQUksQ0FDbEMsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQ3JCLE9BQU8sT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSxDQUFDO0lBRTVDLE9BQU8sU0FBUyxFQUFFLFVBQVUsTUFBTSxJQUFJLENBQ3BDLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUNwQixPQUFPLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksQ0FBQztJQUc5QyxNQUFNLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLENBQUMsRUFBRSxFQUFFLE9BQU87SUFDckQsSUFBSSxnQkFBZ0IsTUFBTTtNQUN4QixNQUFNLGlCQUFpQixLQUFLLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUztNQUNqRSxJQUFJLGdCQUFnQixRQUFRO1FBQzFCLE1BQU0sSUFBSSxDQUNSLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFDYixlQUFlLEdBQUcsQ0FBQyxDQUFDLFFBQ2xCLFFBQVEsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FDbEMsSUFBSSxDQUFDO01BRWI7SUFDRjtJQUVBLElBQUksTUFBTSxNQUFNLEVBQUU7TUFDaEIsT0FBTyxDQUFDLENBQUMsRUFBRSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQztJQUVBLE9BQU87RUFDVDtFQUVRLE1BQU0sS0FBYSxFQUFFO0lBQzNCLE9BQU8sT0FDTCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUMxQztFQUNKO0FBQ0Y7QUFFQSxTQUFTLFdBQVcsTUFBYztFQUNoQyxPQUFPLENBQUEsUUFBUSxPQUFPLEdBQUcsZ0JBQWdCLE9BQU8sS0FBSyxDQUFDLEVBQUMsS0FBSztBQUM5RDtBQUVBLFNBQVMsUUFBUSxLQUFjLEVBQUUsTUFBZTtFQUM5QyxPQUFPLEtBQUssT0FBTyxDQUNqQixPQUNBLG9EQUFvRDtFQUNwRDtJQUFFLE9BQU87SUFBRztJQUFRLGVBQWU7RUFBTTtBQUU3QztBQUVBOzs7O0NBSUMsR0FDRCxTQUFTLG1CQUFtQixjQUFzQixFQUFFLFFBQVEsSUFBSTtFQUM5RCxJQUFJLENBQUMsZ0JBQWdCO0lBQ25CLE9BQU87RUFDVDtFQUVBLE9BQU8seUJBQXlCLGdCQUFnQixPQUFPLE1BQ3BELEdBQUcsQ0FBQyxDQUFDLE1BQ0osT0FBTyxRQUFRLFdBQVcsTUFBTSx5QkFBeUIsS0FBSyxRQUUvRCxJQUFJLENBQUM7QUFDVjtBQUVBOzs7O0NBSUMsR0FDRCxTQUFTLHlCQUNQLEdBQWEsRUFDYixRQUFRLElBQUk7RUFFWixJQUFJLE1BQU07RUFFVixPQUFPLE9BQU8sSUFBSSxhQUFhLEdBQUcsTUFBTTtFQUV4QyxJQUFJLE9BQU87RUFDWCxRQUFRLElBQUksSUFBSTtFQUNoQixJQUFJLElBQUksUUFBUSxFQUFFO0lBQ2hCLFFBQVE7RUFDVjtFQUNBLE9BQU8sY0FBYztFQUVyQixPQUFPO0VBRVAsSUFBSSxPQUFPO0lBQ1QsT0FBTyxPQUFPO0lBQ2QsT0FBTyxJQUFJLElBQUksSUFBSTtJQUNuQixJQUFJLElBQUksSUFBSSxFQUFFO01BQ1osT0FBTyxNQUFNO0lBQ2Y7RUFDRjtFQUVBLE9BQU8sT0FBTyxJQUFJLGFBQWEsR0FBRyxNQUFNO0VBRXhDLE9BQU87QUFDVCJ9 +// denoCacheMetadata=8250832201428207736,18270919239025489715
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/26b01031a6c86e674db7bc2e53cba480ae54b8e630505748b53d7f5f9a4f2dbd.js b/vendor/gen/https/deno.land/26b01031a6c86e674db7bc2e53cba480ae54b8e630505748b53d7f5f9a4f2dbd.js new file mode 100644 index 0000000..8f40ecf --- /dev/null +++ b/vendor/gen/https/deno.land/26b01031a6c86e674db7bc2e53cba480ae54b8e630505748b53d7f5f9a4f2dbd.js @@ -0,0 +1,89 @@ +/** Base key mapping. */ export const KeyMap = { + /* xterm/gnome ESC [ letter (with modifier) */ "[P": "f1", + "[Q": "f2", + "[R": "f3", + "[S": "f4", + /* xterm/gnome ESC O letter (without modifier) */ "OP": "f1", + "OQ": "f2", + "OR": "f3", + "OS": "f4", + /* xterm/rxvt ESC [ number ~ */ "[11~": "f1", + "[12~": "f2", + "[13~": "f3", + "[14~": "f4", + /* from Cygwin and used in libuv */ "[[A": "f1", + "[[B": "f2", + "[[C": "f3", + "[[D": "f4", + "[[E": "f5", + /* common */ "[15~": "f5", + "[17~": "f6", + "[18~": "f7", + "[19~": "f8", + "[20~": "f9", + "[21~": "f10", + "[23~": "f11", + "[24~": "f12", + /* xterm ESC [ letter */ "[A": "up", + "[B": "down", + "[C": "right", + "[D": "left", + "[E": "clear", + "[F": "end", + "[H": "home", + /* xterm/gnome ESC O letter */ "OA": "up", + "OB": "down", + "OC": "right", + "OD": "left", + "OE": "clear", + "OF": "end", + "OH": "home", + /* xterm/rxvt ESC [ number ~ */ "[1~": "home", + "[2~": "insert", + "[3~": "delete", + "[4~": "end", + "[5~": "pageup", + "[6~": "pagedown", + /* putty */ "[[5~": "pageup", + "[[6~": "pagedown", + /* rxvt */ "[7~": "home", + "[8~": "end" +}; +/** Shift key mapping. */ export const KeyMapShift = { + /* rxvt keys with modifiers */ "[a": "up", + "[b": "down", + "[c": "right", + "[d": "left", + "[e": "clear", + "[2$": "insert", + "[3$": "delete", + "[5$": "pageup", + "[6$": "pagedown", + "[7$": "home", + "[8$": "end", + "[Z": "tab" +}; +/** Ctrl key mapping. */ export const KeyMapCtrl = { + /* rxvt keys with modifiers */ "Oa": "up", + "Ob": "down", + "Oc": "right", + "Od": "left", + "Oe": "clear", + "[2^": "insert", + "[3^": "delete", + "[5^": "pageup", + "[6^": "pagedown", + "[7^": "home", + "[8^": "end" +}; +/** Special key mapping. */ export const SpecialKeyMap = { + "\r": "return", + "\n": "enter", + "\t": "tab", + "\b": "backspace", + "\x7f": "backspace", + "\x1b": "escape", + " ": "space" +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1Ljcva2V5Y29kZS9rZXlfY29kZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEJhc2Uga2V5IG1hcHBpbmcuICovXG5leHBvcnQgY29uc3QgS2V5TWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAvKiB4dGVybS9nbm9tZSBFU0MgWyBsZXR0ZXIgKHdpdGggbW9kaWZpZXIpICovXG4gIFwiW1BcIjogXCJmMVwiLFxuICBcIltRXCI6IFwiZjJcIixcbiAgXCJbUlwiOiBcImYzXCIsXG4gIFwiW1NcIjogXCJmNFwiLFxuXG4gIC8qIHh0ZXJtL2dub21lIEVTQyBPIGxldHRlciAod2l0aG91dCBtb2RpZmllcikgKi9cbiAgXCJPUFwiOiBcImYxXCIsXG4gIFwiT1FcIjogXCJmMlwiLFxuICBcIk9SXCI6IFwiZjNcIixcbiAgXCJPU1wiOiBcImY0XCIsXG5cbiAgLyogeHRlcm0vcnh2dCBFU0MgWyBudW1iZXIgfiAqL1xuICBcIlsxMX5cIjogXCJmMVwiLFxuICBcIlsxMn5cIjogXCJmMlwiLFxuICBcIlsxM35cIjogXCJmM1wiLFxuICBcIlsxNH5cIjogXCJmNFwiLFxuXG4gIC8qIGZyb20gQ3lnd2luIGFuZCB1c2VkIGluIGxpYnV2ICovXG4gIFwiW1tBXCI6IFwiZjFcIixcbiAgXCJbW0JcIjogXCJmMlwiLFxuICBcIltbQ1wiOiBcImYzXCIsXG4gIFwiW1tEXCI6IFwiZjRcIixcbiAgXCJbW0VcIjogXCJmNVwiLFxuXG4gIC8qIGNvbW1vbiAqL1xuICBcIlsxNX5cIjogXCJmNVwiLFxuICBcIlsxN35cIjogXCJmNlwiLFxuICBcIlsxOH5cIjogXCJmN1wiLFxuICBcIlsxOX5cIjogXCJmOFwiLFxuICBcIlsyMH5cIjogXCJmOVwiLFxuICBcIlsyMX5cIjogXCJmMTBcIixcbiAgXCJbMjN+XCI6IFwiZjExXCIsXG4gIFwiWzI0flwiOiBcImYxMlwiLFxuXG4gIC8qIHh0ZXJtIEVTQyBbIGxldHRlciAqL1xuICBcIltBXCI6IFwidXBcIixcbiAgXCJbQlwiOiBcImRvd25cIixcbiAgXCJbQ1wiOiBcInJpZ2h0XCIsXG4gIFwiW0RcIjogXCJsZWZ0XCIsXG4gIFwiW0VcIjogXCJjbGVhclwiLFxuICBcIltGXCI6IFwiZW5kXCIsXG4gIFwiW0hcIjogXCJob21lXCIsXG5cbiAgLyogeHRlcm0vZ25vbWUgRVNDIE8gbGV0dGVyICovXG4gIFwiT0FcIjogXCJ1cFwiLFxuICBcIk9CXCI6IFwiZG93blwiLFxuICBcIk9DXCI6IFwicmlnaHRcIixcbiAgXCJPRFwiOiBcImxlZnRcIixcbiAgXCJPRVwiOiBcImNsZWFyXCIsXG4gIFwiT0ZcIjogXCJlbmRcIixcbiAgXCJPSFwiOiBcImhvbWVcIixcblxuICAvKiB4dGVybS9yeHZ0IEVTQyBbIG51bWJlciB+ICovXG4gIFwiWzF+XCI6IFwiaG9tZVwiLFxuICBcIlsyflwiOiBcImluc2VydFwiLFxuICBcIlszflwiOiBcImRlbGV0ZVwiLFxuICBcIls0flwiOiBcImVuZFwiLFxuICBcIls1flwiOiBcInBhZ2V1cFwiLFxuICBcIls2flwiOiBcInBhZ2Vkb3duXCIsXG5cbiAgLyogcHV0dHkgKi9cbiAgXCJbWzV+XCI6IFwicGFnZXVwXCIsXG4gIFwiW1s2flwiOiBcInBhZ2Vkb3duXCIsXG5cbiAgLyogcnh2dCAqL1xuICBcIls3flwiOiBcImhvbWVcIixcbiAgXCJbOH5cIjogXCJlbmRcIixcbn07XG5cbi8qKiBTaGlmdCBrZXkgbWFwcGluZy4gKi9cbmV4cG9ydCBjb25zdCBLZXlNYXBTaGlmdDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgLyogcnh2dCBrZXlzIHdpdGggbW9kaWZpZXJzICovXG4gIFwiW2FcIjogXCJ1cFwiLFxuICBcIltiXCI6IFwiZG93blwiLFxuICBcIltjXCI6IFwicmlnaHRcIixcbiAgXCJbZFwiOiBcImxlZnRcIixcbiAgXCJbZVwiOiBcImNsZWFyXCIsXG5cbiAgXCJbMiRcIjogXCJpbnNlcnRcIixcbiAgXCJbMyRcIjogXCJkZWxldGVcIixcbiAgXCJbNSRcIjogXCJwYWdldXBcIixcbiAgXCJbNiRcIjogXCJwYWdlZG93blwiLFxuICBcIls3JFwiOiBcImhvbWVcIixcbiAgXCJbOCRcIjogXCJlbmRcIixcblxuICBcIltaXCI6IFwidGFiXCIsXG59O1xuXG4vKiogQ3RybCBrZXkgbWFwcGluZy4gKi9cbmV4cG9ydCBjb25zdCBLZXlNYXBDdHJsOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAvKiByeHZ0IGtleXMgd2l0aCBtb2RpZmllcnMgKi9cbiAgXCJPYVwiOiBcInVwXCIsXG4gIFwiT2JcIjogXCJkb3duXCIsXG4gIFwiT2NcIjogXCJyaWdodFwiLFxuICBcIk9kXCI6IFwibGVmdFwiLFxuICBcIk9lXCI6IFwiY2xlYXJcIixcblxuICBcIlsyXlwiOiBcImluc2VydFwiLFxuICBcIlszXlwiOiBcImRlbGV0ZVwiLFxuICBcIls1XlwiOiBcInBhZ2V1cFwiLFxuICBcIls2XlwiOiBcInBhZ2Vkb3duXCIsXG4gIFwiWzdeXCI6IFwiaG9tZVwiLFxuICBcIls4XlwiOiBcImVuZFwiLFxufTtcblxuLyoqIFNwZWNpYWwga2V5IG1hcHBpbmcuICovXG5leHBvcnQgY29uc3QgU3BlY2lhbEtleU1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgXCJcXHJcIjogXCJyZXR1cm5cIixcbiAgXCJcXG5cIjogXCJlbnRlclwiLFxuICBcIlxcdFwiOiBcInRhYlwiLFxuICBcIlxcYlwiOiBcImJhY2tzcGFjZVwiLFxuICBcIlxceDdmXCI6IFwiYmFja3NwYWNlXCIsXG4gIFwiXFx4MWJcIjogXCJlc2NhcGVcIixcbiAgXCIgXCI6IFwic3BhY2VcIixcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0JBQXNCLEdBQ3RCLE9BQU8sTUFBTSxTQUFpQztFQUM1Qyw0Q0FBNEMsR0FDNUMsTUFBTTtFQUNOLE1BQU07RUFDTixNQUFNO0VBQ04sTUFBTTtFQUVOLCtDQUErQyxHQUMvQyxNQUFNO0VBQ04sTUFBTTtFQUNOLE1BQU07RUFDTixNQUFNO0VBRU4sNkJBQTZCLEdBQzdCLFFBQVE7RUFDUixRQUFRO0VBQ1IsUUFBUTtFQUNSLFFBQVE7RUFFUixpQ0FBaUMsR0FDakMsT0FBTztFQUNQLE9BQU87RUFDUCxPQUFPO0VBQ1AsT0FBTztFQUNQLE9BQU87RUFFUCxVQUFVLEdBQ1YsUUFBUTtFQUNSLFFBQVE7RUFDUixRQUFRO0VBQ1IsUUFBUTtFQUNSLFFBQVE7RUFDUixRQUFRO0VBQ1IsUUFBUTtFQUNSLFFBQVE7RUFFUixzQkFBc0IsR0FDdEIsTUFBTTtFQUNOLE1BQU07RUFDTixNQUFNO0VBQ04sTUFBTTtFQUNOLE1BQU07RUFDTixNQUFNO0VBQ04sTUFBTTtFQUVOLDRCQUE0QixHQUM1QixNQUFNO0VBQ04sTUFBTTtFQUNOLE1BQU07RUFDTixNQUFNO0VBQ04sTUFBTTtFQUNOLE1BQU07RUFDTixNQUFNO0VBRU4sNkJBQTZCLEdBQzdCLE9BQU87RUFDUCxPQUFPO0VBQ1AsT0FBTztFQUNQLE9BQU87RUFDUCxPQUFPO0VBQ1AsT0FBTztFQUVQLFNBQVMsR0FDVCxRQUFRO0VBQ1IsUUFBUTtFQUVSLFFBQVEsR0FDUixPQUFPO0VBQ1AsT0FBTztBQUNULEVBQUU7QUFFRix1QkFBdUIsR0FDdkIsT0FBTyxNQUFNLGNBQXNDO0VBQ2pELDRCQUE0QixHQUM1QixNQUFNO0VBQ04sTUFBTTtFQUNOLE1BQU07RUFDTixNQUFNO0VBQ04sTUFBTTtFQUVOLE9BQU87RUFDUCxPQUFPO0VBQ1AsT0FBTztFQUNQLE9BQU87RUFDUCxPQUFPO0VBQ1AsT0FBTztFQUVQLE1BQU07QUFDUixFQUFFO0FBRUYsc0JBQXNCLEdBQ3RCLE9BQU8sTUFBTSxhQUFxQztFQUNoRCw0QkFBNEIsR0FDNUIsTUFBTTtFQUNOLE1BQU07RUFDTixNQUFNO0VBQ04sTUFBTTtFQUNOLE1BQU07RUFFTixPQUFPO0VBQ1AsT0FBTztFQUNQLE9BQU87RUFDUCxPQUFPO0VBQ1AsT0FBTztFQUNQLE9BQU87QUFDVCxFQUFFO0FBRUYseUJBQXlCLEdBQ3pCLE9BQU8sTUFBTSxnQkFBd0M7RUFDbkQsTUFBTTtFQUNOLE1BQU07RUFDTixNQUFNO0VBQ04sTUFBTTtFQUNOLFFBQVE7RUFDUixRQUFRO0VBQ1IsS0FBSztBQUNQLEVBQUUifQ== +// denoCacheMetadata=1426592559983996066,12613432403990294189
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/2776d915d491213dda5d2fd2df49f58b04545cf60f8bcda7328a908de8f56537.js b/vendor/gen/https/deno.land/2776d915d491213dda5d2fd2df49f58b04545cf60f8bcda7328a908de8f56537.js new file mode 100644 index 0000000..ffb3aa2 --- /dev/null +++ b/vendor/gen/https/deno.land/2776d915d491213dda5d2fd2df49f58b04545cf60f8bcda7328a908de8f56537.js @@ -0,0 +1,106 @@ +/** Cell type */ // deno-lint-ignore ban-types +/** Cell representation. */ export class Cell { + value; + options; + /** Get cell length. */ get length() { + return this.toString().length; + } + /** + * Create a new cell. If value is a cell, the value and all options of the cell + * will be copied to the new cell. + * @param value Cell or cell value. + */ static from(value) { + const cell = new this(value); + if (value instanceof Cell) { + cell.options = { + ...value.options + }; + } + return cell; + } + /** + * Cell constructor. + * @param value Cell value. + */ constructor(value){ + this.value = value; + this.options = {}; + } + /** Get cell value. */ toString() { + return this.value.toString(); + } + /** + * Set cell value. + * @param value Cell or cell value. + */ setValue(value) { + this.value = value; + return this; + } + /** + * Clone cell with all options. + * @param value Cell or cell value. + */ clone(value) { + const cell = new Cell(value ?? this); + cell.options = { + ...this.options + }; + return cell; + } + /** + * Setter: + */ /** + * Enable/disable cell border. + * @param enable Enable/disable cell border. + * @param override Override existing value. + */ border(enable, override = true) { + if (override || typeof this.options.border === "undefined") { + this.options.border = enable; + } + return this; + } + /** + * Set col span. + * @param span Number of cols to span. + * @param override Override existing value. + */ colSpan(span, override = true) { + if (override || typeof this.options.colSpan === "undefined") { + this.options.colSpan = span; + } + return this; + } + /** + * Set row span. + * @param span Number of rows to span. + * @param override Override existing value. + */ rowSpan(span, override = true) { + if (override || typeof this.options.rowSpan === "undefined") { + this.options.rowSpan = span; + } + return this; + } + /** + * Align cell content. + * @param direction Align direction. + * @param override Override existing value. + */ align(direction, override = true) { + if (override || typeof this.options.align === "undefined") { + this.options.align = direction; + } + return this; + } + /** + * Getter: + */ /** Check if cell has border. */ getBorder() { + return this.options.border === true; + } + /** Get col span. */ getColSpan() { + return typeof this.options.colSpan === "number" && this.options.colSpan > 0 ? this.options.colSpan : 1; + } + /** Get row span. */ getRowSpan() { + return typeof this.options.rowSpan === "number" && this.options.rowSpan > 0 ? this.options.rowSpan : 1; + } + /** Get row span. */ getAlign() { + return this.options.align ?? "left"; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvdGFibGUvY2VsbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQ2VsbCB0eXBlICovXG4vLyBkZW5vLWxpbnQtaWdub3JlIGJhbi10eXBlc1xuZXhwb3J0IHR5cGUgSUNlbGwgPSBudW1iZXIgfCBzdHJpbmcgfCBTdHJpbmcgfCBDZWxsO1xuXG5leHBvcnQgdHlwZSBEaXJlY3Rpb24gPSBcImxlZnRcIiB8IFwicmlnaHRcIiB8IFwiY2VudGVyXCI7XG5cbi8qKiBDZWxsIG9wdGlvbnMuICovXG5leHBvcnQgaW50ZXJmYWNlIElDZWxsT3B0aW9ucyB7XG4gIGJvcmRlcj86IGJvb2xlYW47XG4gIGNvbFNwYW4/OiBudW1iZXI7XG4gIHJvd1NwYW4/OiBudW1iZXI7XG4gIGFsaWduPzogRGlyZWN0aW9uO1xufVxuXG4vKiogQ2VsbCByZXByZXNlbnRhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBDZWxsIHtcbiAgcHJvdGVjdGVkIG9wdGlvbnM6IElDZWxsT3B0aW9ucyA9IHt9O1xuXG4gIC8qKiBHZXQgY2VsbCBsZW5ndGguICovXG4gIHB1YmxpYyBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKS5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGNlbGwuIElmIHZhbHVlIGlzIGEgY2VsbCwgdGhlIHZhbHVlIGFuZCBhbGwgb3B0aW9ucyBvZiB0aGUgY2VsbFxuICAgKiB3aWxsIGJlIGNvcGllZCB0byB0aGUgbmV3IGNlbGwuXG4gICAqIEBwYXJhbSB2YWx1ZSBDZWxsIG9yIGNlbGwgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb20odmFsdWU6IElDZWxsKTogQ2VsbCB7XG4gICAgY29uc3QgY2VsbCA9IG5ldyB0aGlzKHZhbHVlKTtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBDZWxsKSB7XG4gICAgICBjZWxsLm9wdGlvbnMgPSB7IC4uLnZhbHVlLm9wdGlvbnMgfTtcbiAgICB9XG4gICAgcmV0dXJuIGNlbGw7XG4gIH1cblxuICAvKipcbiAgICogQ2VsbCBjb25zdHJ1Y3Rvci5cbiAgICogQHBhcmFtIHZhbHVlIENlbGwgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSB2YWx1ZTogSUNlbGwpIHt9XG5cbiAgLyoqIEdldCBjZWxsIHZhbHVlLiAqL1xuICBwdWJsaWMgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBjZWxsIHZhbHVlLlxuICAgKiBAcGFyYW0gdmFsdWUgQ2VsbCBvciBjZWxsIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIHNldFZhbHVlKHZhbHVlOiBJQ2VsbCk6IHRoaXMge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9uZSBjZWxsIHdpdGggYWxsIG9wdGlvbnMuXG4gICAqIEBwYXJhbSB2YWx1ZSBDZWxsIG9yIGNlbGwgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgY2xvbmUodmFsdWU/OiBJQ2VsbCk6IENlbGwge1xuICAgIGNvbnN0IGNlbGwgPSBuZXcgQ2VsbCh2YWx1ZSA/PyB0aGlzKTtcbiAgICBjZWxsLm9wdGlvbnMgPSB7IC4uLnRoaXMub3B0aW9ucyB9O1xuICAgIHJldHVybiBjZWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHRlcjpcbiAgICovXG5cbiAgLyoqXG4gICAqIEVuYWJsZS9kaXNhYmxlIGNlbGwgYm9yZGVyLlxuICAgKiBAcGFyYW0gZW5hYmxlICAgIEVuYWJsZS9kaXNhYmxlIGNlbGwgYm9yZGVyLlxuICAgKiBAcGFyYW0gb3ZlcnJpZGUgIE92ZXJyaWRlIGV4aXN0aW5nIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIGJvcmRlcihlbmFibGU6IGJvb2xlYW4sIG92ZXJyaWRlID0gdHJ1ZSk6IHRoaXMge1xuICAgIGlmIChvdmVycmlkZSB8fCB0eXBlb2YgdGhpcy5vcHRpb25zLmJvcmRlciA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgdGhpcy5vcHRpb25zLmJvcmRlciA9IGVuYWJsZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGNvbCBzcGFuLlxuICAgKiBAcGFyYW0gc3BhbiAgICAgIE51bWJlciBvZiBjb2xzIHRvIHNwYW4uXG4gICAqIEBwYXJhbSBvdmVycmlkZSAgT3ZlcnJpZGUgZXhpc3RpbmcgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgY29sU3BhbihzcGFuOiBudW1iZXIsIG92ZXJyaWRlID0gdHJ1ZSk6IHRoaXMge1xuICAgIGlmIChvdmVycmlkZSB8fCB0eXBlb2YgdGhpcy5vcHRpb25zLmNvbFNwYW4gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5jb2xTcGFuID0gc3BhbjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHJvdyBzcGFuLlxuICAgKiBAcGFyYW0gc3BhbiAgICAgIE51bWJlciBvZiByb3dzIHRvIHNwYW4uXG4gICAqIEBwYXJhbSBvdmVycmlkZSAgT3ZlcnJpZGUgZXhpc3RpbmcgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgcm93U3BhbihzcGFuOiBudW1iZXIsIG92ZXJyaWRlID0gdHJ1ZSk6IHRoaXMge1xuICAgIGlmIChvdmVycmlkZSB8fCB0eXBlb2YgdGhpcy5vcHRpb25zLnJvd1NwYW4gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5yb3dTcGFuID0gc3BhbjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWxpZ24gY2VsbCBjb250ZW50LlxuICAgKiBAcGFyYW0gZGlyZWN0aW9uIEFsaWduIGRpcmVjdGlvbi5cbiAgICogQHBhcmFtIG92ZXJyaWRlICBPdmVycmlkZSBleGlzdGluZyB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBhbGlnbihkaXJlY3Rpb246IERpcmVjdGlvbiwgb3ZlcnJpZGUgPSB0cnVlKTogdGhpcyB7XG4gICAgaWYgKG92ZXJyaWRlIHx8IHR5cGVvZiB0aGlzLm9wdGlvbnMuYWxpZ24gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5hbGlnbiA9IGRpcmVjdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0dGVyOlxuICAgKi9cblxuICAvKiogQ2hlY2sgaWYgY2VsbCBoYXMgYm9yZGVyLiAqL1xuICBwdWJsaWMgZ2V0Qm9yZGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYm9yZGVyID09PSB0cnVlO1xuICB9XG5cbiAgLyoqIEdldCBjb2wgc3Bhbi4gKi9cbiAgcHVibGljIGdldENvbFNwYW4oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMub3B0aW9ucy5jb2xTcGFuID09PSBcIm51bWJlclwiICYmIHRoaXMub3B0aW9ucy5jb2xTcGFuID4gMFxuICAgICAgPyB0aGlzLm9wdGlvbnMuY29sU3BhblxuICAgICAgOiAxO1xuICB9XG5cbiAgLyoqIEdldCByb3cgc3Bhbi4gKi9cbiAgcHVibGljIGdldFJvd1NwYW4oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMub3B0aW9ucy5yb3dTcGFuID09PSBcIm51bWJlclwiICYmIHRoaXMub3B0aW9ucy5yb3dTcGFuID4gMFxuICAgICAgPyB0aGlzLm9wdGlvbnMucm93U3BhblxuICAgICAgOiAxO1xuICB9XG5cbiAgLyoqIEdldCByb3cgc3Bhbi4gKi9cbiAgcHVibGljIGdldEFsaWduKCk6IERpcmVjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5hbGlnbiA/PyBcImxlZnRcIjtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsR0FDZCw2QkFBNkI7QUFhN0IseUJBQXlCLEdBQ3pCLE9BQU8sTUFBTTs7RUFDRCxRQUEyQjtFQUVyQyxxQkFBcUIsR0FDckIsSUFBVyxTQUFpQjtJQUMxQixPQUFPLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTTtFQUMvQjtFQUVBOzs7O0dBSUMsR0FDRCxPQUFjLEtBQUssS0FBWSxFQUFRO0lBQ3JDLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQztJQUN0QixJQUFJLGlCQUFpQixNQUFNO01BQ3pCLEtBQUssT0FBTyxHQUFHO1FBQUUsR0FBRyxNQUFNLE9BQU87TUFBQztJQUNwQztJQUNBLE9BQU87RUFDVDtFQUVBOzs7R0FHQyxHQUNELFlBQW1CLEFBQVEsS0FBWSxDQUFFO1NBQWQsUUFBQTtTQXhCakIsVUFBd0IsQ0FBQztFQXdCTztFQUUxQyxvQkFBb0IsR0FDcEIsQUFBTyxXQUFtQjtJQUN4QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtFQUM1QjtFQUVBOzs7R0FHQyxHQUNELEFBQU8sU0FBUyxLQUFZLEVBQVE7SUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRztJQUNiLE9BQU8sSUFBSTtFQUNiO0VBRUE7OztHQUdDLEdBQ0QsQUFBTyxNQUFNLEtBQWEsRUFBUTtJQUNoQyxNQUFNLE9BQU8sSUFBSSxLQUFLLFNBQVMsSUFBSTtJQUNuQyxLQUFLLE9BQU8sR0FBRztNQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU87SUFBQztJQUNqQyxPQUFPO0VBQ1Q7RUFFQTs7R0FFQyxHQUVEOzs7O0dBSUMsR0FDRCxBQUFPLE9BQU8sTUFBZSxFQUFFLFdBQVcsSUFBSSxFQUFRO0lBQ3BELElBQUksWUFBWSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLGFBQWE7TUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUc7SUFDeEI7SUFDQSxPQUFPLElBQUk7RUFDYjtFQUVBOzs7O0dBSUMsR0FDRCxBQUFPLFFBQVEsSUFBWSxFQUFFLFdBQVcsSUFBSSxFQUFRO0lBQ2xELElBQUksWUFBWSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxLQUFLLGFBQWE7TUFDM0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUc7SUFDekI7SUFDQSxPQUFPLElBQUk7RUFDYjtFQUVBOzs7O0dBSUMsR0FDRCxBQUFPLFFBQVEsSUFBWSxFQUFFLFdBQVcsSUFBSSxFQUFRO0lBQ2xELElBQUksWUFBWSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxLQUFLLGFBQWE7TUFDM0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEdBQUc7SUFDekI7SUFDQSxPQUFPLElBQUk7RUFDYjtFQUVBOzs7O0dBSUMsR0FDRCxBQUFPLE1BQU0sU0FBb0IsRUFBRSxXQUFXLElBQUksRUFBUTtJQUN4RCxJQUFJLFlBQVksT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxhQUFhO01BQ3pELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHO0lBQ3ZCO0lBQ0EsT0FBTyxJQUFJO0VBQ2I7RUFFQTs7R0FFQyxHQUVELDhCQUE4QixHQUM5QixBQUFPLFlBQXFCO0lBQzFCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUs7RUFDakM7RUFFQSxrQkFBa0IsR0FDbEIsQUFBTyxhQUFxQjtJQUMxQixPQUFPLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEtBQUssWUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUN0RSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FDcEI7RUFDTjtFQUVBLGtCQUFrQixHQUNsQixBQUFPLGFBQXFCO0lBQzFCLE9BQU8sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sS0FBSyxZQUFZLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQ3RFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUNwQjtFQUNOO0VBRUEsa0JBQWtCLEdBQ2xCLEFBQU8sV0FBc0I7SUFDM0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSTtFQUMvQjtBQUNGIn0= +// denoCacheMetadata=7398184624764203867,4849472601972011237
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/27cac20f1c3fe1bb58f37d1f8e15c5ed582d09aa5da88c4c3c39bf6ca7066eb6.js b/vendor/gen/https/deno.land/27cac20f1c3fe1bb58f37d1f8e15c5ed582d09aa5da88c4c3c39bf6ca7066eb6.js new file mode 100644 index 0000000..7132d5d --- /dev/null +++ b/vendor/gen/https/deno.land/27cac20f1c3fe1bb58f37d1f8e15c5ed582d09aa5da88c4c3c39bf6ca7066eb6.js @@ -0,0 +1,132 @@ +import { brightBlue, dim, green, red, yellow } from "./deps.ts"; +import { Figures } from "./figures.ts"; +import { GenericList } from "./_generic_list.ts"; +import { GenericPrompt } from "./_generic_prompt.ts"; +/** Checkbox prompt representation. */ export class Checkbox extends GenericList { + /** + * Inject prompt value. Can be used for unit tests or pre selections. + * @param value Array of input values. + */ static inject(value) { + GenericPrompt.inject(value); + } + /** Execute the prompt and show cursor on end. */ static prompt(options) { + return new this({ + pointer: brightBlue(Figures.POINTER_SMALL), + prefix: yellow("? "), + indent: " ", + listPointer: brightBlue(Figures.POINTER), + maxRows: 10, + searchLabel: brightBlue(Figures.SEARCH), + minOptions: 0, + maxOptions: Infinity, + check: green(Figures.TICK), + uncheck: red(Figures.CROSS), + ...options, + keys: { + check: [ + "space" + ], + ...options.keys ?? {} + }, + options: Checkbox.mapOptions(options) + }).prompt(); + } + /** + * Create list separator. + * @param label Separator label. + */ static separator(label) { + return { + ...super.separator(label), + icon: false + }; + } + /** + * Map string option values to options and set option defaults. + * @param options Checkbox options. + */ static mapOptions(options) { + return options.options.map((item)=>typeof item === "string" ? { + value: item + } : item).map((item)=>({ + ...this.mapOption(item), + checked: typeof item.checked === "undefined" && options.default && options.default.indexOf(item.value) !== -1 ? true : !!item.checked, + icon: typeof item.icon === "undefined" ? true : item.icon + })); + } + /** + * Render checkbox option. + * @param item Checkbox option settings. + * @param isSelected Set to true if option is selected. + */ getListItem(item, isSelected) { + let line = this.settings.indent; + // pointer + line += isSelected ? this.settings.listPointer + " " : " "; + // icon + if (item.icon) { + let check = item.checked ? this.settings.check + " " : this.settings.uncheck + " "; + if (item.disabled) { + check = dim(check); + } + line += check; + } else { + line += " "; + } + // value + line += `${isSelected && !item.disabled ? this.highlight(item.name, (val)=>val) : this.highlight(item.name)}`; + return line; + } + /** Get value of checked options. */ getValue() { + return this.settings.options.filter((item)=>item.checked).map((item)=>item.value); + } + /** + * Handle user input event. + * @param event Key event. + */ async handleEvent(event) { + switch(true){ + case this.isKey(this.settings.keys, "check", event): + this.checkValue(); + break; + default: + await super.handleEvent(event); + } + } + /** Check selected option. */ checkValue() { + const item = this.options[this.listIndex]; + if (item.disabled) { + this.setErrorMessage("This option is disabled and cannot be changed."); + } else { + item.checked = !item.checked; + } + } + /** + * Validate input value. + * @param value User input value. + * @return True on success, false or error message on error. + */ validate(value) { + const isValidValue = Array.isArray(value) && value.every((val)=>typeof val === "string" && val.length > 0 && this.settings.options.findIndex((option)=>option.value === val) !== -1); + if (!isValidValue) { + return false; + } + if (value.length < this.settings.minOptions) { + return `The minimum number of options is ${this.settings.minOptions} but got ${value.length}.`; + } + if (value.length > this.settings.maxOptions) { + return `The maximum number of options is ${this.settings.maxOptions} but got ${value.length}.`; + } + return true; + } + /** + * Map input value to output value. + * @param value Input value. + * @return Output value. + */ transform(value) { + return value.map((val)=>val.trim()); + } + /** + * Format output value. + * @param value Output value. + */ format(value) { + return value.map((val)=>this.getOptionByValue(val)?.name ?? val).join(", "); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvcHJvbXB0L2NoZWNrYm94LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgS2V5Q29kZSB9IGZyb20gXCIuLi9rZXljb2RlL21vZC50c1wiO1xuaW1wb3J0IHsgYnJpZ2h0Qmx1ZSwgZGltLCBncmVlbiwgcmVkLCB5ZWxsb3cgfSBmcm9tIFwiLi9kZXBzLnRzXCI7XG5pbXBvcnQgeyBGaWd1cmVzIH0gZnJvbSBcIi4vZmlndXJlcy50c1wiO1xuaW1wb3J0IHtcbiAgR2VuZXJpY0xpc3QsXG4gIEdlbmVyaWNMaXN0S2V5cyxcbiAgR2VuZXJpY0xpc3RPcHRpb24sXG4gIEdlbmVyaWNMaXN0T3B0aW9ucyxcbiAgR2VuZXJpY0xpc3RPcHRpb25TZXR0aW5ncyxcbiAgR2VuZXJpY0xpc3RTZXR0aW5ncyxcbn0gZnJvbSBcIi4vX2dlbmVyaWNfbGlzdC50c1wiO1xuaW1wb3J0IHsgR2VuZXJpY1Byb21wdCB9IGZyb20gXCIuL19nZW5lcmljX3Byb21wdC50c1wiO1xuXG4vKiogQ2hlY2tib3gga2V5IG9wdGlvbnMuICovXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrYm94S2V5cyBleHRlbmRzIEdlbmVyaWNMaXN0S2V5cyB7XG4gIGNoZWNrPzogc3RyaW5nW107XG59XG5cbi8qKiBDaGVja2JveCBvcHRpb24gb3B0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tib3hPcHRpb24gZXh0ZW5kcyBHZW5lcmljTGlzdE9wdGlvbiB7XG4gIGNoZWNrZWQ/OiBib29sZWFuO1xuICBpY29uPzogYm9vbGVhbjtcbn1cblxuLyoqIENoZWNrYm94IG9wdGlvbiBzZXR0aW5ncy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tib3hPcHRpb25TZXR0aW5ncyBleHRlbmRzIEdlbmVyaWNMaXN0T3B0aW9uU2V0dGluZ3Mge1xuICBjaGVja2VkOiBib29sZWFuO1xuICBpY29uOiBib29sZWFuO1xufVxuXG4vKiogQ2hlY2tib3ggb3B0aW9ucyB0eXBlLiAqL1xuZXhwb3J0IHR5cGUgQ2hlY2tib3hWYWx1ZU9wdGlvbnMgPSAoc3RyaW5nIHwgQ2hlY2tib3hPcHRpb24pW107XG4vKiogQ2hlY2tib3ggb3B0aW9uIHNldHRpbmdzIHR5cGUuICovXG5leHBvcnQgdHlwZSBDaGVja2JveFZhbHVlU2V0dGluZ3MgPSBDaGVja2JveE9wdGlvblNldHRpbmdzW107XG5cbi8qKiBDaGVja2JveCBwcm9tcHQgb3B0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tib3hPcHRpb25zXG4gIGV4dGVuZHMgR2VuZXJpY0xpc3RPcHRpb25zPHN0cmluZ1tdLCBzdHJpbmdbXT4ge1xuICBvcHRpb25zOiBDaGVja2JveFZhbHVlT3B0aW9ucztcbiAgY2hlY2s/OiBzdHJpbmc7XG4gIHVuY2hlY2s/OiBzdHJpbmc7XG4gIG1pbk9wdGlvbnM/OiBudW1iZXI7XG4gIG1heE9wdGlvbnM/OiBudW1iZXI7XG4gIGtleXM/OiBDaGVja2JveEtleXM7XG59XG5cbi8qKiBDaGVja2JveCBwcm9tcHQgc2V0dGluZ3MuICovXG5pbnRlcmZhY2UgQ2hlY2tib3hTZXR0aW5ncyBleHRlbmRzIEdlbmVyaWNMaXN0U2V0dGluZ3M8c3RyaW5nW10sIHN0cmluZ1tdPiB7XG4gIG9wdGlvbnM6IENoZWNrYm94VmFsdWVTZXR0aW5ncztcbiAgY2hlY2s6IHN0cmluZztcbiAgdW5jaGVjazogc3RyaW5nO1xuICBtaW5PcHRpb25zOiBudW1iZXI7XG4gIG1heE9wdGlvbnM6IG51bWJlcjtcbiAga2V5cz86IENoZWNrYm94S2V5cztcbn1cblxuLyoqIENoZWNrYm94IHByb21wdCByZXByZXNlbnRhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBDaGVja2JveFxuICBleHRlbmRzIEdlbmVyaWNMaXN0PHN0cmluZ1tdLCBzdHJpbmdbXSwgQ2hlY2tib3hTZXR0aW5ncz4ge1xuICAvKipcbiAgICogSW5qZWN0IHByb21wdCB2YWx1ZS4gQ2FuIGJlIHVzZWQgZm9yIHVuaXQgdGVzdHMgb3IgcHJlIHNlbGVjdGlvbnMuXG4gICAqIEBwYXJhbSB2YWx1ZSBBcnJheSBvZiBpbnB1dCB2YWx1ZXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGluamVjdCh2YWx1ZTogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBHZW5lcmljUHJvbXB0LmluamVjdCh2YWx1ZSk7XG4gIH1cblxuICAvKiogRXhlY3V0ZSB0aGUgcHJvbXB0IGFuZCBzaG93IGN1cnNvciBvbiBlbmQuICovXG4gIHB1YmxpYyBzdGF0aWMgcHJvbXB0KG9wdGlvbnM6IENoZWNrYm94T3B0aW9ucyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gbmV3IHRoaXMoe1xuICAgICAgcG9pbnRlcjogYnJpZ2h0Qmx1ZShGaWd1cmVzLlBPSU5URVJfU01BTEwpLFxuICAgICAgcHJlZml4OiB5ZWxsb3coXCI/IFwiKSxcbiAgICAgIGluZGVudDogXCIgXCIsXG4gICAgICBsaXN0UG9pbnRlcjogYnJpZ2h0Qmx1ZShGaWd1cmVzLlBPSU5URVIpLFxuICAgICAgbWF4Um93czogMTAsXG4gICAgICBzZWFyY2hMYWJlbDogYnJpZ2h0Qmx1ZShGaWd1cmVzLlNFQVJDSCksXG4gICAgICBtaW5PcHRpb25zOiAwLFxuICAgICAgbWF4T3B0aW9uczogSW5maW5pdHksXG4gICAgICBjaGVjazogZ3JlZW4oRmlndXJlcy5USUNLKSxcbiAgICAgIHVuY2hlY2s6IHJlZChGaWd1cmVzLkNST1NTKSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBrZXlzOiB7XG4gICAgICAgIGNoZWNrOiBbXCJzcGFjZVwiXSxcbiAgICAgICAgLi4uKG9wdGlvbnMua2V5cyA/PyB7fSksXG4gICAgICB9LFxuICAgICAgb3B0aW9uczogQ2hlY2tib3gubWFwT3B0aW9ucyhvcHRpb25zKSxcbiAgICB9KS5wcm9tcHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgbGlzdCBzZXBhcmF0b3IuXG4gICAqIEBwYXJhbSBsYWJlbCBTZXBhcmF0b3IgbGFiZWwuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNlcGFyYXRvcihsYWJlbD86IHN0cmluZyk6IENoZWNrYm94T3B0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIuc2VwYXJhdG9yKGxhYmVsKSxcbiAgICAgIGljb246IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogTWFwIHN0cmluZyBvcHRpb24gdmFsdWVzIHRvIG9wdGlvbnMgYW5kIHNldCBvcHRpb24gZGVmYXVsdHMuXG4gICAqIEBwYXJhbSBvcHRpb25zIENoZWNrYm94IG9wdGlvbnMuXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhdGljIG1hcE9wdGlvbnMob3B0aW9uczogQ2hlY2tib3hPcHRpb25zKTogQ2hlY2tib3hWYWx1ZVNldHRpbmdzIHtcbiAgICByZXR1cm4gb3B0aW9ucy5vcHRpb25zXG4gICAgICAubWFwKChpdGVtOiBzdHJpbmcgfCBDaGVja2JveE9wdGlvbikgPT5cbiAgICAgICAgdHlwZW9mIGl0ZW0gPT09IFwic3RyaW5nXCIgPyB7IHZhbHVlOiBpdGVtIH0gOiBpdGVtXG4gICAgICApXG4gICAgICAubWFwKChpdGVtKSA9PiAoe1xuICAgICAgICAuLi50aGlzLm1hcE9wdGlvbihpdGVtKSxcbiAgICAgICAgY2hlY2tlZDogdHlwZW9mIGl0ZW0uY2hlY2tlZCA9PT0gXCJ1bmRlZmluZWRcIiAmJiBvcHRpb25zLmRlZmF1bHQgJiZcbiAgICAgICAgICAgIG9wdGlvbnMuZGVmYXVsdC5pbmRleE9mKGl0ZW0udmFsdWUpICE9PSAtMVxuICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgIDogISFpdGVtLmNoZWNrZWQsXG4gICAgICAgIGljb246IHR5cGVvZiBpdGVtLmljb24gPT09IFwidW5kZWZpbmVkXCIgPyB0cnVlIDogaXRlbS5pY29uLFxuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciBjaGVja2JveCBvcHRpb24uXG4gICAqIEBwYXJhbSBpdGVtICAgICAgICBDaGVja2JveCBvcHRpb24gc2V0dGluZ3MuXG4gICAqIEBwYXJhbSBpc1NlbGVjdGVkICBTZXQgdG8gdHJ1ZSBpZiBvcHRpb24gaXMgc2VsZWN0ZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0TGlzdEl0ZW0oXG4gICAgaXRlbTogQ2hlY2tib3hPcHRpb25TZXR0aW5ncyxcbiAgICBpc1NlbGVjdGVkPzogYm9vbGVhbixcbiAgKTogc3RyaW5nIHtcbiAgICBsZXQgbGluZSA9IHRoaXMuc2V0dGluZ3MuaW5kZW50O1xuXG4gICAgLy8gcG9pbnRlclxuICAgIGxpbmUgKz0gaXNTZWxlY3RlZCA/IHRoaXMuc2V0dGluZ3MubGlzdFBvaW50ZXIgKyBcIiBcIiA6IFwiICBcIjtcblxuICAgIC8vIGljb25cbiAgICBpZiAoaXRlbS5pY29uKSB7XG4gICAgICBsZXQgY2hlY2sgPSBpdGVtLmNoZWNrZWRcbiAgICAgICAgPyB0aGlzLnNldHRpbmdzLmNoZWNrICsgXCIgXCJcbiAgICAgICAgOiB0aGlzLnNldHRpbmdzLnVuY2hlY2sgKyBcIiBcIjtcbiAgICAgIGlmIChpdGVtLmRpc2FibGVkKSB7XG4gICAgICAgIGNoZWNrID0gZGltKGNoZWNrKTtcbiAgICAgIH1cbiAgICAgIGxpbmUgKz0gY2hlY2s7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxpbmUgKz0gXCIgIFwiO1xuICAgIH1cblxuICAgIC8vIHZhbHVlXG4gICAgbGluZSArPSBgJHtcbiAgICAgIGlzU2VsZWN0ZWQgJiYgIWl0ZW0uZGlzYWJsZWRcbiAgICAgICAgPyB0aGlzLmhpZ2hsaWdodChpdGVtLm5hbWUsICh2YWwpID0+IHZhbClcbiAgICAgICAgOiB0aGlzLmhpZ2hsaWdodChpdGVtLm5hbWUpXG4gICAgfWA7XG5cbiAgICByZXR1cm4gbGluZTtcbiAgfVxuXG4gIC8qKiBHZXQgdmFsdWUgb2YgY2hlY2tlZCBvcHRpb25zLiAqL1xuICBwcm90ZWN0ZWQgZ2V0VmFsdWUoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLm9wdGlvbnNcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uY2hlY2tlZClcbiAgICAgIC5tYXAoKGl0ZW0pID0+IGl0ZW0udmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB1c2VyIGlucHV0IGV2ZW50LlxuICAgKiBAcGFyYW0gZXZlbnQgS2V5IGV2ZW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUV2ZW50KGV2ZW50OiBLZXlDb2RlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICBjYXNlIHRoaXMuaXNLZXkodGhpcy5zZXR0aW5ncy5rZXlzLCBcImNoZWNrXCIsIGV2ZW50KTpcbiAgICAgICAgdGhpcy5jaGVja1ZhbHVlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXdhaXQgc3VwZXIuaGFuZGxlRXZlbnQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDaGVjayBzZWxlY3RlZCBvcHRpb24uICovXG4gIHByb3RlY3RlZCBjaGVja1ZhbHVlKCk6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLm9wdGlvbnNbdGhpcy5saXN0SW5kZXhdO1xuICAgIGlmIChpdGVtLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnNldEVycm9yTWVzc2FnZShcIlRoaXMgb3B0aW9uIGlzIGRpc2FibGVkIGFuZCBjYW5ub3QgYmUgY2hhbmdlZC5cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW0uY2hlY2tlZCA9ICFpdGVtLmNoZWNrZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGlucHV0IHZhbHVlLlxuICAgKiBAcGFyYW0gdmFsdWUgVXNlciBpbnB1dCB2YWx1ZS5cbiAgICogQHJldHVybiBUcnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9yIGVycm9yIG1lc3NhZ2Ugb24gZXJyb3IuXG4gICAqL1xuICBwcm90ZWN0ZWQgdmFsaWRhdGUodmFsdWU6IHN0cmluZ1tdKTogYm9vbGVhbiB8IHN0cmluZyB7XG4gICAgY29uc3QgaXNWYWxpZFZhbHVlID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiZcbiAgICAgIHZhbHVlLmV2ZXJ5KCh2YWwpID0+XG4gICAgICAgIHR5cGVvZiB2YWwgPT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgdmFsLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5vcHRpb25zLmZpbmRJbmRleCgob3B0aW9uOiBDaGVja2JveE9wdGlvblNldHRpbmdzKSA9PlxuICAgICAgICAgICAgb3B0aW9uLnZhbHVlID09PSB2YWxcbiAgICAgICAgICApICE9PSAtMVxuICAgICAgKTtcblxuICAgIGlmICghaXNWYWxpZFZhbHVlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlLmxlbmd0aCA8IHRoaXMuc2V0dGluZ3MubWluT3B0aW9ucykge1xuICAgICAgcmV0dXJuIGBUaGUgbWluaW11bSBudW1iZXIgb2Ygb3B0aW9ucyBpcyAke3RoaXMuc2V0dGluZ3MubWluT3B0aW9uc30gYnV0IGdvdCAke3ZhbHVlLmxlbmd0aH0uYDtcbiAgICB9XG4gICAgaWYgKHZhbHVlLmxlbmd0aCA+IHRoaXMuc2V0dGluZ3MubWF4T3B0aW9ucykge1xuICAgICAgcmV0dXJuIGBUaGUgbWF4aW11bSBudW1iZXIgb2Ygb3B0aW9ucyBpcyAke3RoaXMuc2V0dGluZ3MubWF4T3B0aW9uc30gYnV0IGdvdCAke3ZhbHVlLmxlbmd0aH0uYDtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXAgaW5wdXQgdmFsdWUgdG8gb3V0cHV0IHZhbHVlLlxuICAgKiBAcGFyYW0gdmFsdWUgSW5wdXQgdmFsdWUuXG4gICAqIEByZXR1cm4gT3V0cHV0IHZhbHVlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcCgodmFsKSA9PiB2YWwudHJpbSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXQgb3V0cHV0IHZhbHVlLlxuICAgKiBAcGFyYW0gdmFsdWUgT3V0cHV0IHZhbHVlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGZvcm1hdCh2YWx1ZTogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoKHZhbCkgPT4gdGhpcy5nZXRPcHRpb25CeVZhbHVlKHZhbCk/Lm5hbWUgPz8gdmFsKVxuICAgICAgLmpvaW4oXCIsIFwiKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLFNBQVMsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sUUFBUSxZQUFZO0FBQ2hFLFNBQVMsT0FBTyxRQUFRLGVBQWU7QUFDdkMsU0FDRSxXQUFXLFFBTU4scUJBQXFCO0FBQzVCLFNBQVMsYUFBYSxRQUFRLHVCQUF1QjtBQTZDckQsb0NBQW9DLEdBQ3BDLE9BQU8sTUFBTSxpQkFDSDtFQUNSOzs7R0FHQyxHQUNELE9BQWMsT0FBTyxLQUFlLEVBQVE7SUFDMUMsY0FBYyxNQUFNLENBQUM7RUFDdkI7RUFFQSwrQ0FBK0MsR0FDL0MsT0FBYyxPQUFPLE9BQXdCLEVBQXFCO0lBQ2hFLE9BQU8sSUFBSSxJQUFJLENBQUM7TUFDZCxTQUFTLFdBQVcsUUFBUSxhQUFhO01BQ3pDLFFBQVEsT0FBTztNQUNmLFFBQVE7TUFDUixhQUFhLFdBQVcsUUFBUSxPQUFPO01BQ3ZDLFNBQVM7TUFDVCxhQUFhLFdBQVcsUUFBUSxNQUFNO01BQ3RDLFlBQVk7TUFDWixZQUFZO01BQ1osT0FBTyxNQUFNLFFBQVEsSUFBSTtNQUN6QixTQUFTLElBQUksUUFBUSxLQUFLO01BQzFCLEdBQUcsT0FBTztNQUNWLE1BQU07UUFDSixPQUFPO1VBQUM7U0FBUTtRQUNoQixHQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQztNQUN4QjtNQUNBLFNBQVMsU0FBUyxVQUFVLENBQUM7SUFDL0IsR0FBRyxNQUFNO0VBQ1g7RUFFQTs7O0dBR0MsR0FDRCxPQUFjLFVBQVUsS0FBYyxFQUFrQjtJQUN0RCxPQUFPO01BQ0wsR0FBRyxLQUFLLENBQUMsVUFBVSxNQUFNO01BQ3pCLE1BQU07SUFDUjtFQUNGO0VBRUE7OztHQUdDLEdBQ0QsT0FBaUIsV0FBVyxPQUF3QixFQUF5QjtJQUMzRSxPQUFPLFFBQVEsT0FBTyxDQUNuQixHQUFHLENBQUMsQ0FBQyxPQUNKLE9BQU8sU0FBUyxXQUFXO1FBQUUsT0FBTztNQUFLLElBQUksTUFFOUMsR0FBRyxDQUFDLENBQUMsT0FBUyxDQUFDO1FBQ2QsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUs7UUFDdkIsU0FBUyxPQUFPLEtBQUssT0FBTyxLQUFLLGVBQWUsUUFBUSxPQUFPLElBQzNELFFBQVEsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFDLElBQ3pDLE9BQ0EsQ0FBQyxDQUFDLEtBQUssT0FBTztRQUNsQixNQUFNLE9BQU8sS0FBSyxJQUFJLEtBQUssY0FBYyxPQUFPLEtBQUssSUFBSTtNQUMzRCxDQUFDO0VBQ0w7RUFFQTs7OztHQUlDLEdBQ0QsQUFBVSxZQUNSLElBQTRCLEVBQzVCLFVBQW9CLEVBQ1o7SUFDUixJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNO0lBRS9CLFVBQVU7SUFDVixRQUFRLGFBQWEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsTUFBTTtJQUV2RCxPQUFPO0lBQ1AsSUFBSSxLQUFLLElBQUksRUFBRTtNQUNiLElBQUksUUFBUSxLQUFLLE9BQU8sR0FDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsTUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUc7TUFDNUIsSUFBSSxLQUFLLFFBQVEsRUFBRTtRQUNqQixRQUFRLElBQUk7TUFDZDtNQUNBLFFBQVE7SUFDVixPQUFPO01BQ0wsUUFBUTtJQUNWO0lBRUEsUUFBUTtJQUNSLFFBQVEsR0FDTixjQUFjLENBQUMsS0FBSyxRQUFRLEdBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxNQUFRLE9BQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLEdBQzVCO0lBRUYsT0FBTztFQUNUO0VBRUEsa0NBQWtDLEdBQ2xDLEFBQVUsV0FBcUI7SUFDN0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FDekIsTUFBTSxDQUFDLENBQUMsT0FBUyxLQUFLLE9BQU8sRUFDN0IsR0FBRyxDQUFDLENBQUMsT0FBUyxLQUFLLEtBQUs7RUFDN0I7RUFFQTs7O0dBR0MsR0FDRCxNQUFnQixZQUFZLEtBQWMsRUFBaUI7SUFDekQsT0FBUTtNQUNOLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTO1FBQzNDLElBQUksQ0FBQyxVQUFVO1FBQ2Y7TUFDRjtRQUNFLE1BQU0sS0FBSyxDQUFDLFlBQVk7SUFDNUI7RUFDRjtFQUVBLDJCQUEyQixHQUMzQixBQUFVLGFBQW1CO0lBQzNCLE1BQU0sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDekMsSUFBSSxLQUFLLFFBQVEsRUFBRTtNQUNqQixJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ3ZCLE9BQU87TUFDTCxLQUFLLE9BQU8sR0FBRyxDQUFDLEtBQUssT0FBTztJQUM5QjtFQUNGO0VBRUE7Ozs7R0FJQyxHQUNELEFBQVUsU0FBUyxLQUFlLEVBQW9CO0lBQ3BELE1BQU0sZUFBZSxNQUFNLE9BQU8sQ0FBQyxVQUNqQyxNQUFNLEtBQUssQ0FBQyxDQUFDLE1BQ1gsT0FBTyxRQUFRLFlBQ2YsSUFBSSxNQUFNLEdBQUcsS0FDYixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUM3QixPQUFPLEtBQUssS0FBSyxTQUNiLENBQUM7SUFHYixJQUFJLENBQUMsY0FBYztNQUNqQixPQUFPO0lBQ1Q7SUFFQSxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFO01BQzNDLE9BQU8sQ0FBQyxpQ0FBaUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2hHO0lBQ0EsSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRTtNQUMzQyxPQUFPLENBQUMsaUNBQWlDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNoRztJQUVBLE9BQU87RUFDVDtFQUVBOzs7O0dBSUMsR0FDRCxBQUFVLFVBQVUsS0FBZSxFQUFZO0lBQzdDLE9BQU8sTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFRLElBQUksSUFBSTtFQUNwQztFQUVBOzs7R0FHQyxHQUNELEFBQVUsT0FBTyxLQUFlLEVBQVU7SUFDeEMsT0FBTyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQVEsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sUUFBUSxLQUMzRCxJQUFJLENBQUM7RUFDVjtBQUNGIn0= +// denoCacheMetadata=4107910026148827865,8843354061789234009
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/2a4c33798619da8a200dc5952d5aaaf738400248db5f2efb1846d8381780a949.js b/vendor/gen/https/deno.land/2a4c33798619da8a200dc5952d5aaaf738400248db5f2efb1846d8381780a949.js new file mode 100644 index 0000000..903affd --- /dev/null +++ b/vendor/gen/https/deno.land/2a4c33798619da8a200dc5952d5aaaf738400248db5f2efb1846d8381780a949.js @@ -0,0 +1,90 @@ +import { GenericPrompt } from "./_generic_prompt.ts"; +import { GenericSuggestions } from "./_generic_suggestions.ts"; +import { brightBlue, dim, yellow } from "./deps.ts"; +import { Figures } from "./figures.ts"; +/** Confirm prompt representation. */ export class Confirm extends GenericSuggestions { + /** Execute the prompt and show cursor on end. */ static prompt(options) { + if (typeof options === "string") { + options = { + message: options + }; + } + return new this({ + pointer: brightBlue(Figures.POINTER_SMALL), + prefix: yellow("? "), + indent: " ", + listPointer: brightBlue(Figures.POINTER), + maxRows: 8, + active: "Yes", + inactive: "No", + ...options, + files: false, + complete: undefined, + suggestions: [ + options.active ?? "Yes", + options.inactive ?? "No" + ], + list: false, + info: false + }).prompt(); + } + /** + * Inject prompt value. Can be used for unit tests or pre selections. + * @param value Input value. + */ static inject(value) { + GenericPrompt.inject(value); + } + defaults() { + let defaultMessage = ""; + if (this.settings.default === true) { + defaultMessage += this.settings.active[0].toUpperCase() + "/" + this.settings.inactive[0].toLowerCase(); + } else if (this.settings.default === false) { + defaultMessage += this.settings.active[0].toLowerCase() + "/" + this.settings.inactive[0].toUpperCase(); + } else { + defaultMessage += this.settings.active[0].toLowerCase() + "/" + this.settings.inactive[0].toLowerCase(); + } + return defaultMessage ? dim(` (${defaultMessage})`) : ""; + } + success(value) { + this.saveSuggestions(this.format(value)); + return super.success(value); + } + /** Get input input. */ getValue() { + return this.inputValue; + } + /** + * Validate input value. + * @param value User input value. + * @return True on success, false or error message on error. + */ validate(value) { + return typeof value === "string" && [ + this.settings.active[0].toLowerCase(), + this.settings.active.toLowerCase(), + this.settings.inactive[0].toLowerCase(), + this.settings.inactive.toLowerCase() + ].indexOf(value.toLowerCase()) !== -1; + } + /** + * Map input value to output value. + * @param value Input value. + * @return Output value. + */ transform(value) { + switch(value.toLowerCase()){ + case this.settings.active[0].toLowerCase(): + case this.settings.active.toLowerCase(): + return true; + case this.settings.inactive[0].toLowerCase(): + case this.settings.inactive.toLowerCase(): + return false; + } + return; + } + /** + * Format output value. + * @param value Output value. + */ format(value) { + return value ? this.settings.active : this.settings.inactive; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvcHJvbXB0L2NvbmZpcm0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2VuZXJpY1Byb21wdCB9IGZyb20gXCIuL19nZW5lcmljX3Byb21wdC50c1wiO1xuaW1wb3J0IHtcbiAgR2VuZXJpY1N1Z2dlc3Rpb25zLFxuICBHZW5lcmljU3VnZ2VzdGlvbnNLZXlzLFxuICBHZW5lcmljU3VnZ2VzdGlvbnNPcHRpb25zLFxuICBHZW5lcmljU3VnZ2VzdGlvbnNTZXR0aW5ncyxcbn0gZnJvbSBcIi4vX2dlbmVyaWNfc3VnZ2VzdGlvbnMudHNcIjtcbmltcG9ydCB7IGJyaWdodEJsdWUsIGRpbSwgeWVsbG93IH0gZnJvbSBcIi4vZGVwcy50c1wiO1xuaW1wb3J0IHsgRmlndXJlcyB9IGZyb20gXCIuL2ZpZ3VyZXMudHNcIjtcblxuZXhwb3J0IHR5cGUgQ29uZmlybUtleXMgPSBHZW5lcmljU3VnZ2VzdGlvbnNLZXlzO1xuXG50eXBlIFVuc3VwcG9ydGVkT3B0aW9ucyA9XG4gIHwgXCJmaWxlc1wiXG4gIHwgXCJjb21wbGV0ZVwiXG4gIHwgXCJzdWdnZXN0aW9uc1wiXG4gIHwgXCJsaXN0XCJcbiAgfCBcImluZm9cIjtcblxuLyoqIENvbmZpcm0gcHJvbXB0IG9wdGlvbnMuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpcm1PcHRpb25zXG4gIGV4dGVuZHMgT21pdDxHZW5lcmljU3VnZ2VzdGlvbnNPcHRpb25zPGJvb2xlYW4sIHN0cmluZz4sIFVuc3VwcG9ydGVkT3B0aW9ucz4ge1xuICBhY3RpdmU/OiBzdHJpbmc7XG4gIGluYWN0aXZlPzogc3RyaW5nO1xuICBrZXlzPzogQ29uZmlybUtleXM7XG59XG5cbi8qKiBDb25maXJtIHByb21wdCBzZXR0aW5ncy4gKi9cbmludGVyZmFjZSBDb25maXJtU2V0dGluZ3MgZXh0ZW5kcyBHZW5lcmljU3VnZ2VzdGlvbnNTZXR0aW5nczxib29sZWFuLCBzdHJpbmc+IHtcbiAgYWN0aXZlOiBzdHJpbmc7XG4gIGluYWN0aXZlOiBzdHJpbmc7XG4gIGtleXM/OiBDb25maXJtS2V5cztcbn1cblxuLyoqIENvbmZpcm0gcHJvbXB0IHJlcHJlc2VudGF0aW9uLiAqL1xuZXhwb3J0IGNsYXNzIENvbmZpcm1cbiAgZXh0ZW5kcyBHZW5lcmljU3VnZ2VzdGlvbnM8Ym9vbGVhbiwgc3RyaW5nLCBDb25maXJtU2V0dGluZ3M+IHtcbiAgLyoqIEV4ZWN1dGUgdGhlIHByb21wdCBhbmQgc2hvdyBjdXJzb3Igb24gZW5kLiAqL1xuICBwdWJsaWMgc3RhdGljIHByb21wdChcbiAgICBvcHRpb25zOiBzdHJpbmcgfCBDb25maXJtT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBvcHRpb25zID0geyBtZXNzYWdlOiBvcHRpb25zIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyB0aGlzKHtcbiAgICAgIHBvaW50ZXI6IGJyaWdodEJsdWUoRmlndXJlcy5QT0lOVEVSX1NNQUxMKSxcbiAgICAgIHByZWZpeDogeWVsbG93KFwiPyBcIiksXG4gICAgICBpbmRlbnQ6IFwiIFwiLFxuICAgICAgbGlzdFBvaW50ZXI6IGJyaWdodEJsdWUoRmlndXJlcy5QT0lOVEVSKSxcbiAgICAgIG1heFJvd3M6IDgsXG4gICAgICBhY3RpdmU6IFwiWWVzXCIsXG4gICAgICBpbmFjdGl2ZTogXCJOb1wiLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGZpbGVzOiBmYWxzZSxcbiAgICAgIGNvbXBsZXRlOiB1bmRlZmluZWQsXG4gICAgICBzdWdnZXN0aW9uczogW1xuICAgICAgICBvcHRpb25zLmFjdGl2ZSA/PyBcIlllc1wiLFxuICAgICAgICBvcHRpb25zLmluYWN0aXZlID8/IFwiTm9cIixcbiAgICAgIF0sXG4gICAgICBsaXN0OiBmYWxzZSxcbiAgICAgIGluZm86IGZhbHNlLFxuICAgIH0pLnByb21wdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluamVjdCBwcm9tcHQgdmFsdWUuIENhbiBiZSB1c2VkIGZvciB1bml0IHRlc3RzIG9yIHByZSBzZWxlY3Rpb25zLlxuICAgKiBAcGFyYW0gdmFsdWUgSW5wdXQgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGluamVjdCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgR2VuZXJpY1Byb21wdC5pbmplY3QodmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRlZmF1bHRzKCk6IHN0cmluZyB7XG4gICAgbGV0IGRlZmF1bHRNZXNzYWdlID0gXCJcIjtcblxuICAgIGlmICh0aGlzLnNldHRpbmdzLmRlZmF1bHQgPT09IHRydWUpIHtcbiAgICAgIGRlZmF1bHRNZXNzYWdlICs9IHRoaXMuc2V0dGluZ3MuYWN0aXZlWzBdLnRvVXBwZXJDYXNlKCkgKyBcIi9cIiArXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuaW5hY3RpdmVbMF0udG9Mb3dlckNhc2UoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2V0dGluZ3MuZGVmYXVsdCA9PT0gZmFsc2UpIHtcbiAgICAgIGRlZmF1bHRNZXNzYWdlICs9IHRoaXMuc2V0dGluZ3MuYWN0aXZlWzBdLnRvTG93ZXJDYXNlKCkgKyBcIi9cIiArXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuaW5hY3RpdmVbMF0udG9VcHBlckNhc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVmYXVsdE1lc3NhZ2UgKz0gdGhpcy5zZXR0aW5ncy5hY3RpdmVbMF0udG9Mb3dlckNhc2UoKSArIFwiL1wiICtcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5pbmFjdGl2ZVswXS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZhdWx0TWVzc2FnZSA/IGRpbShgICgke2RlZmF1bHRNZXNzYWdlfSlgKSA6IFwiXCI7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3VjY2Vzcyh2YWx1ZTogYm9vbGVhbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgdGhpcy5zYXZlU3VnZ2VzdGlvbnModGhpcy5mb3JtYXQodmFsdWUpKTtcbiAgICByZXR1cm4gc3VwZXIuc3VjY2Vzcyh2YWx1ZSk7XG4gIH1cblxuICAvKiogR2V0IGlucHV0IGlucHV0LiAqL1xuICBwcm90ZWN0ZWQgZ2V0VmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dFZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGlucHV0IHZhbHVlLlxuICAgKiBAcGFyYW0gdmFsdWUgVXNlciBpbnB1dCB2YWx1ZS5cbiAgICogQHJldHVybiBUcnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9yIGVycm9yIG1lc3NhZ2Ugb24gZXJyb3IuXG4gICAqL1xuICBwcm90ZWN0ZWQgdmFsaWRhdGUodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4gfCBzdHJpbmcge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiZcbiAgICAgIFtcbiAgICAgICAgICB0aGlzLnNldHRpbmdzLmFjdGl2ZVswXS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgIHRoaXMuc2V0dGluZ3MuYWN0aXZlLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgdGhpcy5zZXR0aW5ncy5pbmFjdGl2ZVswXS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgIHRoaXMuc2V0dGluZ3MuaW5hY3RpdmUudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgXS5pbmRleE9mKHZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PSAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXAgaW5wdXQgdmFsdWUgdG8gb3V0cHV0IHZhbHVlLlxuICAgKiBAcGFyYW0gdmFsdWUgSW5wdXQgdmFsdWUuXG4gICAqIEByZXR1cm4gT3V0cHV0IHZhbHVlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgc3dpdGNoICh2YWx1ZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBjYXNlIHRoaXMuc2V0dGluZ3MuYWN0aXZlWzBdLnRvTG93ZXJDYXNlKCk6XG4gICAgICBjYXNlIHRoaXMuc2V0dGluZ3MuYWN0aXZlLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSB0aGlzLnNldHRpbmdzLmluYWN0aXZlWzBdLnRvTG93ZXJDYXNlKCk6XG4gICAgICBjYXNlIHRoaXMuc2V0dGluZ3MuaW5hY3RpdmUudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0IG91dHB1dCB2YWx1ZS5cbiAgICogQHBhcmFtIHZhbHVlIE91dHB1dCB2YWx1ZS5cbiAgICovXG4gIHByb3RlY3RlZCBmb3JtYXQodmFsdWU6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZSA/IHRoaXMuc2V0dGluZ3MuYWN0aXZlIDogdGhpcy5zZXR0aW5ncy5pbmFjdGl2ZTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsYUFBYSxRQUFRLHVCQUF1QjtBQUNyRCxTQUNFLGtCQUFrQixRQUliLDRCQUE0QjtBQUNuQyxTQUFTLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxRQUFRLFlBQVk7QUFDcEQsU0FBUyxPQUFPLFFBQVEsZUFBZTtBQTBCdkMsbUNBQW1DLEdBQ25DLE9BQU8sTUFBTSxnQkFDSDtFQUNSLCtDQUErQyxHQUMvQyxPQUFjLE9BQ1osT0FBZ0MsRUFDZDtJQUNsQixJQUFJLE9BQU8sWUFBWSxVQUFVO01BQy9CLFVBQVU7UUFBRSxTQUFTO01BQVE7SUFDL0I7SUFFQSxPQUFPLElBQUksSUFBSSxDQUFDO01BQ2QsU0FBUyxXQUFXLFFBQVEsYUFBYTtNQUN6QyxRQUFRLE9BQU87TUFDZixRQUFRO01BQ1IsYUFBYSxXQUFXLFFBQVEsT0FBTztNQUN2QyxTQUFTO01BQ1QsUUFBUTtNQUNSLFVB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 +// denoCacheMetadata=1905650617868920485,8250191922767453271
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/2af2c282efe6df44d6c3d080b7c7aab87be18e8572224e7d740e339ade45d43c.js b/vendor/gen/https/deno.land/2af2c282efe6df44d6c3d080b7c7aab87be18e8572224e7d740e339ade45d43c.js new file mode 100644 index 0000000..a8f3550 --- /dev/null +++ b/vendor/gen/https/deno.land/2af2c282efe6df44d6c3d080b7c7aab87be18e8572224e7d740e339ade45d43c.js @@ -0,0 +1,23 @@ +import { InvalidTypeError } from "../_errors.ts"; +/** Boolean type handler. Excepts `true`, `false`, `1`, `0` */ export const boolean = (type)=>{ + if (~[ + "1", + "true" + ].indexOf(type.value)) { + return true; + } + if (~[ + "0", + "false" + ].indexOf(type.value)) { + return false; + } + throw new InvalidTypeError(type, [ + "true", + "false", + "1", + "0" + ]); +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvZmxhZ3MvdHlwZXMvYm9vbGVhbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFyZ3VtZW50VmFsdWUsIFR5cGVIYW5kbGVyIH0gZnJvbSBcIi4uL3R5cGVzLnRzXCI7XG5pbXBvcnQgeyBJbnZhbGlkVHlwZUVycm9yIH0gZnJvbSBcIi4uL19lcnJvcnMudHNcIjtcblxuLyoqIEJvb2xlYW4gdHlwZSBoYW5kbGVyLiBFeGNlcHRzIGB0cnVlYCwgYGZhbHNlYCwgYDFgLCBgMGAgKi9cbmV4cG9ydCBjb25zdCBib29sZWFuOiBUeXBlSGFuZGxlcjxib29sZWFuPiA9IChcbiAgdHlwZTogQXJndW1lbnRWYWx1ZSxcbik6IGJvb2xlYW4gPT4ge1xuICBpZiAofltcIjFcIiwgXCJ0cnVlXCJdLmluZGV4T2YodHlwZS52YWx1ZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICh+W1wiMFwiLCBcImZhbHNlXCJdLmluZGV4T2YodHlwZS52YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB0aHJvdyBuZXcgSW52YWxpZFR5cGVFcnJvcih0eXBlLCBbXCJ0cnVlXCIsIFwiZmFsc2VcIiwgXCIxXCIsIFwiMFwiXSk7XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLFNBQVMsZ0JBQWdCLFFBQVEsZ0JBQWdCO0FBRWpELDREQUE0RCxHQUM1RCxPQUFPLE1BQU0sVUFBZ0MsQ0FDM0M7RUFFQSxJQUFJLENBQUM7SUFBQztJQUFLO0dBQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLEdBQUc7SUFDdEMsT0FBTztFQUNUO0VBRUEsSUFBSSxDQUFDO0lBQUM7SUFBSztHQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxHQUFHO0lBQ3ZDLE9BQU87RUFDVDtFQUVBLE1BQU0sSUFBSSxpQkFBaUIsTUFBTTtJQUFDO0lBQVE7SUFBUztJQUFLO0dBQUk7QUFDOUQsRUFBRSJ9 +// denoCacheMetadata=17787616594023011246,8578684805629278150
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/2c91ceaa563dce37b10ca40d9c35dfba01d0092758aca694e4e3feed42188219.js b/vendor/gen/https/deno.land/2c91ceaa563dce37b10ca40d9c35dfba01d0092758aca694e4e3feed42188219.js new file mode 100644 index 0000000..df46070 --- /dev/null +++ b/vendor/gen/https/deno.land/2c91ceaa563dce37b10ca40d9c35dfba01d0092758aca694e4e3feed42188219.js @@ -0,0 +1,84 @@ +import { log } from "../core/utils/log.ts"; +import { localIp, openBrowser } from "../core/utils/net.ts"; +import { setEnv } from "../core/utils/env.ts"; +import { normalizePath } from "../core/utils/path.ts"; +import { fromFileUrl } from "../deps/path.ts"; +import { SiteWatcher } from "../core/watcher.ts"; +import logger from "../middlewares/logger.ts"; +import noCache from "../middlewares/no_cache.ts"; +import noCors from "../middlewares/no_cors.ts"; +import reload from "../middlewares/reload.ts"; +import { buildSite } from "./utils.ts"; +import { initLocalStorage } from "./missing_worker_apis.ts"; +addEventListener("message", (event)=>{ + const { type } = event.data; + if (type === "build" || type === "rebuild") { + return build(event.data); + } + if (type === "localStorage") { + return initLocalStorage(event.data.data); + } +}); +async function build({ type, config, serve }) { + // Set the live reload environment variable to add hash to the URLs in the module loader + setEnv("LUME_LIVE_RELOAD", "true"); + const site = await buildSite(config); + // Start the watcher + const watcher = site.getWatcher(); + const _config = normalizePath(fromFileUrl(site._data.configFile), site.root()); + const mustReload = (files)=>files.has(_config); + watcher.addEventListener("change", (event)=>{ + const files = event.files; + log.info("Changes detected:"); + files.forEach((file)=>{ + log.info(`- <gray>${file}</gray>`); + }); + if (mustReload(files)) { + log.info("Reloading the site..."); + postMessage({ + type: "reload" + }); + return; + } + return site.update(files); + }); + watcher.addEventListener("error", (event)=>{ + console.error(Deno.inspect(event.error, { + colors: true + })); + }); + watcher.start(); + if (!serve) { + return; + } + // Start the local server + const server = site.getServer(); + const { port, hostname, open } = site.options.server; + server.addEventListener("start", ()=>{ + if (type === "build") { + const ipAddr = localIp(); + log.info(" Server started at:"); + log.info(` <green>http://${hostname}:${port}/</green> (local)`); + if (ipAddr) { + log.info(` <green>http://${ipAddr}:${port}/</green> (network)`); + } + if (open) { + openBrowser(`http://${hostname}:${port}/`); + } + } + site.dispatchEvent({ + type: "afterStartServer" + }); + }); + if (log.level < 5) { + server.use(logger()); + } + server.use(reload({ + watcher: new SiteWatcher(site), + basepath: site.options.location.pathname, + debugBar: site.debugBar + }), noCache(), noCors()); + server.start(); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY2xpL2J1aWxkX3dvcmtlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2cgfSBmcm9tIFwiLi4vY29yZS91dGlscy9sb2cudHNcIjtcbmltcG9ydCB7IGxvY2FsSXAsIG9wZW5Ccm93c2VyIH0gZnJvbSBcIi4uL2NvcmUvdXRpbHMvbmV0LnRzXCI7XG5pbXBvcnQgeyBzZXRFbnYgfSBmcm9tIFwiLi4vY29yZS91dGlscy9lbnYudHNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZVBhdGggfSBmcm9tIFwiLi4vY29yZS91dGlscy9wYXRoLnRzXCI7XG5pbXBvcnQgeyBmcm9tRmlsZVVybCB9IGZyb20gXCIuLi9kZXBzL3BhdGgudHNcIjtcbmltcG9ydCB7IFNpdGVXYXRjaGVyIH0gZnJvbSBcIi4uL2NvcmUvd2F0Y2hlci50c1wiO1xuaW1wb3J0IGxvZ2dlciBmcm9tIFwiLi4vbWlkZGxld2FyZXMvbG9nZ2VyLnRzXCI7XG5pbXBvcnQgbm9DYWNoZSBmcm9tIFwiLi4vbWlkZGxld2FyZXMvbm9fY2FjaGUudHNcIjtcbmltcG9ydCBub0NvcnMgZnJvbSBcIi4uL21pZGRsZXdhcmVzL25vX2NvcnMudHNcIjtcbmltcG9ydCByZWxvYWQgZnJvbSBcIi4uL21pZGRsZXdhcmVzL3JlbG9hZC50c1wiO1xuaW1wb3J0IHsgYnVpbGRTaXRlIH0gZnJvbSBcIi4vdXRpbHMudHNcIjtcbmltcG9ydCB7IGluaXRMb2NhbFN0b3JhZ2UgfSBmcm9tIFwiLi9taXNzaW5nX3dvcmtlcl9hcGlzLnRzXCI7XG5cbmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIChldmVudCkgPT4ge1xuICBjb25zdCB7IHR5cGUgfSA9IGV2ZW50LmRhdGE7XG5cbiAgaWYgKHR5cGUgPT09IFwiYnVpbGRcIiB8fCB0eXBlID09PSBcInJlYnVpbGRcIikge1xuICAgIHJldHVybiBidWlsZChldmVudC5kYXRhKTtcbiAgfVxuXG4gIGlmICh0eXBlID09PSBcImxvY2FsU3RvcmFnZVwiKSB7XG4gICAgcmV0dXJuIGluaXRMb2NhbFN0b3JhZ2UoZXZlbnQuZGF0YS5kYXRhKTtcbiAgfVxufSk7XG5cbmludGVyZmFjZSBCdWlsZE9wdGlvbnMge1xuICB0eXBlOiBcImJ1aWxkXCIgfCBcInJlYnVpbGRcIjtcbiAgY29uZmlnPzogc3RyaW5nO1xuICBzZXJ2ZT86IGJvb2xlYW47XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkKHsgdHlwZSwgY29uZmlnLCBzZXJ2ZSB9OiBCdWlsZE9wdGlvbnMpIHtcbiAgLy8gU2V0IHRoZSBsaXZlIHJlbG9hZCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBhZGQgaGFzaCB0byB0aGUgVVJMcyBpbiB0aGUgbW9kdWxlIGxvYWRlclxuICBzZXRFbnYoXCJMVU1FX0xJVkVfUkVMT0FEXCIsIFwidHJ1ZVwiKTtcblxuICBjb25zdCBzaXRlID0gYXdhaXQgYnVpbGRTaXRlKGNvbmZpZyk7XG5cbiAgLy8gU3RhcnQgdGhlIHdhdGNoZXJcbiAgY29uc3Qgd2F0Y2hlciA9IHNpdGUuZ2V0V2F0Y2hlcigpO1xuICBjb25zdCBfY29uZmlnID0gbm9ybWFsaXplUGF0aChcbiAgICBmcm9tRmlsZVVybChzaXRlLl9kYXRhLmNvbmZpZ0ZpbGUgYXMgc3RyaW5nKSxcbiAgICBzaXRlLnJvb3QoKSxcbiAgKTtcblxuICBjb25zdCBtdXN0UmVsb2FkID0gKGZpbGVzOiBTZXQ8c3RyaW5nPik6IGJvb2xlYW4gPT4gZmlsZXMuaGFzKF9jb25maWcpO1xuXG4gIHdhdGNoZXIuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCAoZXZlbnQpID0+IHtcbiAgICBjb25zdCBmaWxlcyA9IGV2ZW50LmZpbGVzITtcblxuICAgIGxvZy5pbmZvKFwiQ2hhbmdlcyBkZXRlY3RlZDpcIik7XG4gICAgZmlsZXMuZm9yRWFjaCgoZmlsZSkgPT4ge1xuICAgICAgbG9nLmluZm8oYC0gPGdyYXk+JHtmaWxlfTwvZ3JheT5gKTtcbiAgICB9KTtcblxuICAgIGlmIChtdXN0UmVsb2FkKGZpbGVzKSkge1xuICAgICAgbG9nLmluZm8oXCJSZWxvYWRpbmcgdGhlIHNpdGUuLi5cIik7XG4gICAgICBwb3N0TWVzc2FnZSh7IHR5cGU6IFwicmVsb2FkXCIgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHNpdGUudXBkYXRlKGZpbGVzKTtcbiAgfSk7XG5cbiAgd2F0Y2hlci5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgKGV2ZW50KSA9PiB7XG4gICAgY29uc29sZS5lcnJvcihEZW5vLmluc3BlY3QoZXZlbnQuZXJyb3IsIHsgY29sb3JzOiB0cnVlIH0pKTtcbiAgfSk7XG5cbiAgd2F0Y2hlci5zdGFydCgpO1xuXG4gIGlmICghc2VydmUpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBTdGFydCB0aGUgbG9jYWwgc2VydmVyXG4gIGNvbnN0IHNlcnZlciA9IHNpdGUuZ2V0U2VydmVyKCk7XG4gIGNvbnN0IHsgcG9ydCwgaG9zdG5hbWUsIG9wZW4gfSA9IHNpdGUub3B0aW9ucy5zZXJ2ZXI7XG5cbiAgc2VydmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJzdGFydFwiLCAoKSA9PiB7XG4gICAgaWYgKHR5cGUgPT09IFwiYnVpbGRcIikge1xuICAgICAgY29uc3QgaXBBZGRyID0gbG9jYWxJcCgpO1xuXG4gICAgICBsb2cuaW5mbyhcIiAgU2VydmVyIHN0YXJ0ZWQgYXQ6XCIpO1xuICAgICAgbG9nLmluZm8oYCAgPGdyZWVuPmh0dHA6Ly8ke2hvc3RuYW1lfToke3BvcnR9LzwvZ3JlZW4+IChsb2NhbClgKTtcblxuICAgICAgaWYgKGlwQWRkcikge1xuICAgICAgICBsb2cuaW5mbyhgICA8Z3JlZW4+aHR0cDovLyR7aXBBZGRyfToke3BvcnR9LzwvZ3JlZW4+IChuZXR3b3JrKWApO1xuICAgICAgfVxuXG4gICAgICBpZiAob3Blbikge1xuICAgICAgICBvcGVuQnJvd3NlcihgaHR0cDovLyR7aG9zdG5hbWV9OiR7cG9ydH0vYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2l0ZS5kaXNwYXRjaEV2ZW50KHsgdHlwZTogXCJhZnRlclN0YXJ0U2VydmVyXCIgfSk7XG4gIH0pO1xuXG4gIGlmIChsb2cubGV2ZWwgPCA1KSB7XG4gICAgc2VydmVyLnVzZShsb2dnZXIoKSk7XG4gIH1cblxuICBzZXJ2ZXIudXNlKFxuICAgIHJlbG9hZCh7XG4gICAgICB3YXRjaGVyOiBuZXcgU2l0ZVdhdGNoZXIoc2l0ZSksXG4gICAgICBiYXNlcGF0aDogc2l0ZS5vcHRpb25zLmxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgZGVidWdCYXI6IHNpdGUuZGVidWdCYXIsXG4gICAgfSksXG4gICAgbm9DYWNoZSgpLFxuICAgIG5vQ29ycygpLFxuICApO1xuXG4gIHNlcnZlci5zdGFydCgpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsR0FBRyxRQUFRLHVCQUF1QjtBQUMzQyxTQUFTLE9BQU8sRUFBRSxXQUFXLFFBQVEsdUJBQXVCO0FBQzVELFNBQVMsTUFBTSxRQUFRLHVCQUF1QjtBQUM5QyxTQUFTLGFBQWEsUUFBUSx3QkFBd0I7QUFDdEQsU0FBUyxXQUFXLFFBQVEsa0JBQWtCO0FBQzlDLFNBQVMsV0FBVyxRQUFRLHFCQUFxQjtBQUNqRCxPQUFPLFlBQVksMkJBQTJCO0FBQzlDLE9BQU8sYUFBYSw2QkFBNkI7QUFDakQsT0FBTyxZQUFZLDRCQUE0QjtBQUMvQyxPQUFPLFlBQVksMkJBQTJCO0FBQzlDLFNBQVMsU0FBUyxRQUFRLGFBQWE7QUFDdkMsU0FBUyxnQkFBZ0IsUUFBUSwyQkFBMkI7QUFFNUQsaUJBQWlCLFdBQVcsQ0FBQztFQUMzQixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJO0VBRTNCLElBQUksU0FBUyxXQUFXLFNBQVMsV0FBVztJQUMxQyxPQUFPLE1BQU0sTUFBTSxJQUFJO0VBQ3pCO0VBRUEsSUFBSSxTQUFTLGdCQUFnQjtJQUMzQixPQUFPLGlCQUFpQixNQUFNLElBQUksQ0FBQyxJQUFJO0VBQ3pDO0FBQ0Y7QUFRQSxlQUFlLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBZ0I7RUFDeEQsd0ZBQXdGO0VBQ3hGLE9BQU8sb0JBQW9CO0VBRTNCLE1BQU0sT0FBTyxNQUFNLFVBQVU7RUFFN0Isb0JBQW9CO0VBQ3BCLE1BQU0sVUFBVSxLQUFLLFVBQVU7RUFDL0IsTUFBTSxVQUFVLGNBQ2QsWUFBWSxLQUFLLEtBQUssQ0FBQyxVQUFVLEdBQ2pDLEtBQUssSUFBSTtFQUdYLE1BQU0sYUFBYSxDQUFDLFFBQWdDLE1BQU0sR0FBRyxDQUFDO0VBRTlELFFBQVEsZ0JBQWdCLENBQUMsVUFBVSxDQUFDO0lBQ2xDLE1BQU0sUUFBUSxNQUFNLEtBQUs7SUFFekIsSUFBSSxJQUFJLENBQUM7SUFDVCxNQUFNLE9BQU8sQ0FBQyxDQUFDO01BQ2IsSUFBSSxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxPQUFPLENBQUM7SUFDbkM7SUFFQSxJQUFJLFdBQVcsUUFBUTtNQUNyQixJQUFJLElBQUksQ0FBQztNQUNULFlBQVk7UUFBRSxNQUFNO01BQVM7TUFDN0I7SUFDRjtJQUVBLE9BQU8sS0FBSyxNQUFNLENBQUM7RUFDckI7RUFFQSxRQUFRLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztJQUNqQyxRQUFRLEtBQUssQ0FBQyxLQUFLLE9BQU8sQ0FBQyxNQUFNLEtBQUssRUFBRTtNQUFFLFFBQVE7SUFBSztFQUN6RDtFQUVBLFFBQVEsS0FBSztFQUViLElBQUksQ0FBQyxPQUFPO0lBQ1Y7RUFDRjtFQUVBLHlCQUF5QjtFQUN6QixNQUFNLFNBQVMsS0FBSyxTQUFTO0VBQzdCLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssT0FBTyxDQUFDLE1BQU07RUFFcEQsT0FBTyxnQkFBZ0IsQ0FBQyxTQUFTO0lBQy9CLElBQUksU0FBUyxTQUFTO01BQ3BCLE1BQU0sU0FBUztNQUVmLElBQUksSUFBSSxDQUFDO01BQ1QsSUFBSSxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsRUFBRSxLQUFLLGlCQUFpQixDQUFDO01BRS9ELElBQUksUUFBUTtRQUNWLElBQUksSUFBSSxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLEVBQUUsS0FBSyxtQkFBbUIsQ0FBQztNQUNqRTtNQUVBLElBQUksTUFBTTtRQUNSLFlBQVksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7TUFDM0M7SUFDRjtJQUVBLEtBQUssYUFBYSxDQUFDO01BQUUsTUFBTTtJQUFtQjtFQUNoRDtFQUVBLElBQUksSUFBSSxLQUFLLEdBQUcsR0FBRztJQUNqQixPQUFPLEdBQUcsQ0FBQztFQUNiO0VBRUEsT0FBTyxHQUFHLENBQ1IsT0FBTztJQUNMLFNBQVMsSUFBSSxZQUFZO0lBQ3pCLFVBQVUsS0FBSyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVE7SUFDeEMsVUFBVSxLQUFLLFFBQVE7RUFDekIsSUFDQSxXQUNBO0VBR0YsT0FBTyxLQUFLO0FBQ2QifQ== +// denoCacheMetadata=14483602689525969081,2659150487986467211
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/2d7aca0133be6de43a0ae1681c780b6b959f0a3720d8b645d1aed6b1d0482ff6.js b/vendor/gen/https/deno.land/2d7aca0133be6de43a0ae1681c780b6b959f0a3720d8b645d1aed6b1d0482ff6.js new file mode 100644 index 0000000..51188a1 --- /dev/null +++ b/vendor/gen/https/deno.land/2d7aca0133be6de43a0ae1681c780b6b959f0a3720d8b645d1aed6b1d0482ff6.js @@ -0,0 +1,63 @@ +import { isUrl } from "./path.ts"; +import { env } from "./env.ts"; +import { tokens } from "./tokens.ts"; +const useCache = env("LUME_NOCACHE") !== true; +export async function read(path, isBinary, init) { + if (!isUrl(path)) { + if (path.startsWith("data:")) { + const response = await fetch(path); + return isBinary ? new Uint8Array(await response.arrayBuffer()) : response.text(); + } + return isBinary ? Deno.readFile(path) : Deno.readTextFile(path); + } + const url = new URL(path); + if (url.protocol === "file:") { + return isBinary ? Deno.readFile(url) : Deno.readTextFile(url); + } + const authorization = tokens.get(url.host); + if (authorization) { + const headers = new Headers(init?.headers); + headers.set("Authorization", authorization); + init = { + ...init, + headers + }; + } + if (!useCache) { + const response = await fetch(url, init); + if (!response.ok) { + throw new Error(`Failed to fetch "${url}"`); + } + return isBinary ? new Uint8Array(await response.arrayBuffer()) : response.text(); + } + const cache = await caches.open("lume_remote_files"); + // Prevent https://github.com/denoland/deno/issues/19696 + try { + const cached = await cache.match(url); + if (cached) { + return isBinary ? new Uint8Array(await cached.arrayBuffer()) : cached.text(); + } + } catch { + // ignore + } + const response = await fetch(url, init); + if (!response.ok) { + throw new Error(`Failed to fetch "${url}"`); + } + await cache.put(url, response.clone()); + return isBinary ? new Uint8Array(await response.arrayBuffer()) : response.text(); +} +/** Read a text file like a browser */ export async function readFile(path) { + return await read(path, false, { + headers: { + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/115.0" + } + }); +} +/** + * Clear the cache of remote files. + */ export async function clearCache() { + await caches.delete("lume_remote_files"); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS91dGlscy9yZWFkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzVXJsIH0gZnJvbSBcIi4vcGF0aC50c1wiO1xuaW1wb3J0IHsgZW52IH0gZnJvbSBcIi4vZW52LnRzXCI7XG5pbXBvcnQgeyB0b2tlbnMgfSBmcm9tIFwiLi90b2tlbnMudHNcIjtcblxuY29uc3QgdXNlQ2FjaGUgPSBlbnY8Ym9vbGVhbj4oXCJMVU1FX05PQ0FDSEVcIikgIT09IHRydWU7XG5cbi8qKlxuICogUmVhZCBhIGxvY2FsIG9yIHJlbW90ZSBmaWxlIGFuZCByZXR1cm4gaXRzIGNvbnRlbnQuXG4gKiBJZiB0aGUgZmlsZSBpcyByZW1vdGUsIGl0IHdpbGwgYmUgY2FjaGVkIGluIHRoZSBgbHVtZV9yZW1vdGVfZmlsZXNgIGNhY2hlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZChcbiAgcGF0aDogc3RyaW5nLFxuICBpc0JpbmFyeTogYm9vbGVhbixcbik6IFByb21pc2U8VWludDhBcnJheSB8IHN0cmluZz47XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZChcbiAgcGF0aDogc3RyaW5nLFxuICBpc0JpbmFyeTogdHJ1ZSxcbiAgaW5pdD86IFJlcXVlc3RJbml0LFxuKTogUHJvbWlzZTxVaW50OEFycmF5PjtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkKFxuICBwYXRoOiBzdHJpbmcsXG4gIGlzQmluYXJ5OiBmYWxzZSxcbiAgaW5pdD86IFJlcXVlc3RJbml0LFxuKTogUHJvbWlzZTxzdHJpbmc+O1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWQoXG4gIHBhdGg6IHN0cmluZyxcbiAgaXNCaW5hcnk6IGJvb2xlYW4sXG4gIGluaXQ/OiBSZXF1ZXN0SW5pdCxcbik6IFByb21pc2U8c3RyaW5nIHwgVWludDhBcnJheT4ge1xuICBpZiAoIWlzVXJsKHBhdGgpKSB7XG4gICAgaWYgKHBhdGguc3RhcnRzV2l0aChcImRhdGE6XCIpKSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHBhdGgpO1xuXG4gICAgICByZXR1cm4gaXNCaW5hcnlcbiAgICAgICAgPyBuZXcgVWludDhBcnJheShhd2FpdCByZXNwb25zZS5hcnJheUJ1ZmZlcigpKVxuICAgICAgICA6IHJlc3BvbnNlLnRleHQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXNCaW5hcnkgPyBEZW5vLnJlYWRGaWxlKHBhdGgpIDogRGVuby5yZWFkVGV4dEZpbGUocGF0aCk7XG4gIH1cblxuICBjb25zdCB1cmwgPSBuZXcgVVJMKHBhdGgpO1xuXG4gIGlmICh1cmwucHJvdG9jb2wgPT09IFwiZmlsZTpcIikge1xuICAgIHJldHVybiBpc0JpbmFyeSA/IERlbm8ucmVhZEZpbGUodXJsKSA6IERlbm8ucmVhZFRleHRGaWxlKHVybCk7XG4gIH1cblxuICBjb25zdCBhdXRob3JpemF0aW9uID0gdG9rZW5zLmdldCh1cmwuaG9zdCk7XG4gIGlmIChhdXRob3JpemF0aW9uKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKGluaXQ/LmhlYWRlcnMpO1xuICAgIGhlYWRlcnMuc2V0KFwiQXV0aG9yaXphdGlvblwiLCBhdXRob3JpemF0aW9uKTtcbiAgICBpbml0ID0geyAuLi5pbml0LCBoZWFkZXJzIH07XG4gIH1cblxuICBpZiAoIXVzZUNhY2hlKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIGluaXQpO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggXCIke3VybH1cImApO1xuICAgIH1cblxuICAgIHJldHVybiBpc0JpbmFyeVxuICAgICAgPyBuZXcgVWludDhBcnJheShhd2FpdCByZXNwb25zZS5hcnJheUJ1ZmZlcigpKVxuICAgICAgOiByZXNwb25zZS50ZXh0KCk7XG4gIH1cblxuICBjb25zdCBjYWNoZSA9IGF3YWl0IGNhY2hlcy5vcGVuKFwibHVtZV9yZW1vdGVfZmlsZXNcIik7XG5cbiAgLy8gUHJldmVudCBodHRwczovL2dpdGh1Yi5jb20vZGVub2xhbmQvZGVuby9pc3N1ZXMvMTk2OTZcbiAgdHJ5IHtcbiAgICBjb25zdCBjYWNoZWQgPSBhd2FpdCBjYWNoZS5tYXRjaCh1cmwpO1xuXG4gICAgaWYgKGNhY2hlZCkge1xuICAgICAgcmV0dXJuIGlzQmluYXJ5XG4gICAgICAgID8gbmV3IFVpbnQ4QXJyYXkoYXdhaXQgY2FjaGVkLmFycmF5QnVmZmVyKCkpXG4gICAgICAgIDogY2FjaGVkLnRleHQoKTtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIC8vIGlnbm9yZVxuICB9XG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIGluaXQpO1xuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBmZXRjaCBcIiR7dXJsfVwiYCk7XG4gIH1cblxuICBhd2FpdCBjYWNoZS5wdXQodXJsLCByZXNwb25zZS5jbG9uZSgpKTtcblxuICByZXR1cm4gaXNCaW5hcnlcbiAgICA/IG5ldyBVaW50OEFycmF5KGF3YWl0IHJlc3BvbnNlLmFycmF5QnVmZmVyKCkpXG4gICAgOiByZXNwb25zZS50ZXh0KCk7XG59XG5cbi8qKiBSZWFkIGEgdGV4dCBmaWxlIGxpa2UgYSBicm93c2VyICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEZpbGUocGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgcmV0dXJuIGF3YWl0IHJlYWQocGF0aCwgZmFsc2UsIHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICBcIlVzZXItQWdlbnRcIjpcbiAgICAgICAgXCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMC4xNTsgcnY6MTA5LjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvMTE1LjBcIixcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBDbGVhciB0aGUgY2FjaGUgb2YgcmVtb3RlIGZpbGVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2xlYXJDYWNoZSgpIHtcbiAgYXdhaXQgY2FjaGVzLmRlbGV0ZShcImx1bWVfcmVtb3RlX2ZpbGVzXCIpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsS0FBSyxRQUFRLFlBQVk7QUFDbEMsU0FBUyxHQUFHLFFBQVEsV0FBVztBQUMvQixTQUFTLE1BQU0sUUFBUSxjQUFjO0FBRXJDLE1BQU0sV0FBVyxJQUFhLG9CQUFvQjtBQW9CbEQsT0FBTyxlQUFlLEtBQ3BCLElBQVksRUFDWixRQUFpQixFQUNqQixJQUFrQjtFQUVsQixJQUFJLENBQUMsTUFBTSxPQUFPO0lBQ2hCLElBQUksS0FBSyxVQUFVLENBQUMsVUFBVTtNQUM1QixNQUFNLFdBQVcsTUFBTSxNQUFNO01BRTdCLE9BQU8sV0FDSCxJQUFJLFdBQVcsTUFBTSxTQUFTLFdBQVcsTUFDekMsU0FBUyxJQUFJO0lBQ25CO0lBRUEsT0FBTyxXQUFXLEtBQUssUUFBUSxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUM7RUFDNUQ7RUFFQSxNQUFNLE1BQU0sSUFBSSxJQUFJO0VBRXBCLElBQUksSUFBSSxRQUFRLEtBQUssU0FBUztJQUM1QixPQUFPLFdBQVcsS0FBSyxRQUFRLENBQUMsT0FBTyxLQUFLLFlBQVksQ0FBQztFQUMzRDtFQUVBLE1BQU0sZ0JBQWdCLE9BQU8sR0FBRyxDQUFDLElBQUksSUFBSTtFQUN6QyxJQUFJLGVBQWU7SUFDakIsTUFBTSxVQUFVLElBQUksUUFBUSxNQUFNO0lBQ2xDLFFBQVEsR0FBRyxDQUFDLGlCQUFpQjtJQUM3QixPQUFPO01BQUUsR0FBRyxJQUFJO01BQUU7SUFBUTtFQUM1QjtFQUVBLElBQUksQ0FBQyxVQUFVO0lBQ2IsTUFBTSxXQUFXLE1BQU0sTUFBTSxLQUFLO0lBRWxDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRTtNQUNoQixNQUFNLElBQUksTUFBTSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVDO0lBRUEsT0FBTyxXQUNILElBQUksV0FBVyxNQUFNLFNBQVMsV0FBVyxNQUN6QyxTQUFTLElBQUk7RUFDbkI7RUFFQSxNQUFNLFFBQVEsTUFBTSxPQUFPLElBQUksQ0FBQztFQUVoQyx3REFBd0Q7RUFDeEQsSUFBSTtJQUNGLE1BQU0sU0FBUyxNQUFNLE1BQU0sS0FBSyxDQUFDO0lBRWpDLElBQUksUUFBUTtNQUNWLE9BQU8sV0FDSCxJQUFJLFdBQVcsTUFBTSxPQUFPLFdBQVcsTUFDdkMsT0FBTyxJQUFJO0lBQ2pCO0VBQ0YsRUFBRSxPQUFNO0VBQ04sU0FBUztFQUNYO0VBRUEsTUFBTSxXQUFXLE1BQU0sTUFBTSxLQUFLO0VBRWxDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRTtJQUNoQixNQUFNLElBQUksTUFBTSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxDQUFDO0VBQzVDO0VBRUEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxLQUFLLFNBQVMsS0FBSztFQUVuQyxPQUFPLFdBQ0gsSUFBSSxXQUFXLE1BQU0sU0FBUyxXQUFXLE1BQ3pDLFNBQVMsSUFBSTtBQUNuQjtBQUVBLG9DQUFvQyxHQUNwQyxPQUFPLGVBQWUsU0FBUyxJQUFZO0VBQ3pDLE9BQU8sTUFBTSxLQUFLLE1BQU0sT0FBTztJQUM3QixTQUFTO01BQ1AsY0FDRTtJQUNKO0VBQ0Y7QUFDRjtBQUVBOztDQUVDLEdBQ0QsT0FBTyxlQUFlO0VBQ3BCLE1BQU0sT0FBTyxNQUFNLENBQUM7QUFDdEIifQ== +// denoCacheMetadata=7481490000249095787,11458088934474428320
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/30fb7366d35e88ff50a3fd97f74d2d283a1a621319b43dd2171885d2755bf8d5.js b/vendor/gen/https/deno.land/30fb7366d35e88ff50a3fd97f74d2d283a1a621319b43dd2171885d2755bf8d5.js new file mode 100644 index 0000000..4f11f78 --- /dev/null +++ b/vendor/gen/https/deno.land/30fb7366d35e88ff50a3fd97f74d2d283a1a621319b43dd2171885d2755bf8d5.js @@ -0,0 +1,220 @@ +import { posix } from "../deps/path.ts"; +import { toFileUrl } from "../deps/path.ts"; +export class Entry { + name; + path; + type; + src; + children = new Map(); + flags = new Set(); + #content = new Map(); + #info; + constructor(name, path, type, src){ + this.name = name; + this.path = path; + this.type = type; + this.src = src; + } + getContent(loader) { + if (!this.#content.has(loader)) { + this.#content.set(loader, loader(this.src)); + } + return this.#content.get(loader); + } + getInfo() { + if (!this.#info) { + this.#info = this.src.includes("://") ? createFileInfo(this.type) : Deno.statSync(this.src); + } + return this.#info; + } +} +/** Virtual file system used to load and cache files (local and remote) */ export default class FS { + options; + entries = new Map(); + remoteFiles = new Map(); + tree; + constructor(options){ + this.options = options; + this.tree = new Entry("", "/", "directory", options.root); + this.entries.set("/", this.tree); + } + init() { + this.#walkFs(this.tree); + this.#walkRemote(); + } + /** Update the entry and returns it if it was removed */ update(path) { + // Check if it's a remote file + const src = toFileUrl(posix.join(this.options.root, path)).href; + const remote = findMapByValue(this.remoteFiles, src); + if (remote) { + path = remote; + } + const exist = this.entries.get(path); + let entry; + if (exist && exist.type !== "directory") { + this.entries.delete(path); + entry = this.addEntry({ + path + }); + } else if (exist) { + entry = exist; + } else { + entry = this.addEntry({ + path + }); + } + // Handle remote files + if (remote) { + entry.flags.add("remote"); + entry.src = src; + } + try { + entry.getInfo(); + } catch (error) { + // Remove if it doesn't exist + if (error instanceof Deno.errors.NotFound) { + const src = this.remoteFiles.get(path); + if (src) { + entry.flags.add("remote"); + entry.src = src; + return; + } + this.removeEntry(path); + return exist; + } + } + // New directory, walk it + if (entry.type === "directory" && !exist) { + this.#walkFs(entry); + } + } + #isValid(path) { + const { ignore } = this.options; + return ignore ? !ignore.some((ignore)=>typeof ignore === "string" ? path.startsWith(posix.join(ignore, "/")) || path === ignore : ignore(path)) : true; + } + #walkFs(dir) { + const dirPath = posix.join(this.options.root, dir.path); + for (const dirEntry of Deno.readDirSync(dirPath)){ + const path = posix.join(dir.path, dirEntry.name); + if (dirEntry.isSymlink) { + this.#walkLink(dir, dirEntry.name); + continue; + } + if (!this.#isValid(path)) { + continue; + } + const entry = new Entry(dirEntry.name, path, dirEntry.isDirectory ? "directory" : "file", posix.join(this.options.root, path)); + dir.children.set(dirEntry.name, entry); + this.entries.set(path, entry); + if (entry.type === "directory") { + this.#walkFs(entry); + } + } + } + #walkLink(dir, name) { + const src = posix.join(dir.src, name); + const info = Deno.statSync(src); + const type = info.isDirectory ? "directory" : "file"; + const entry = new Entry(name, posix.join(dir.path, name), type, Deno.realPathSync(src)); + dir.children.set(name, entry); + this.entries.set(entry.path, entry); + if (type === "directory") { + this.#walkFs(entry); + } + } + #walkRemote() { + // Read from remote files + for (const [path, src] of this.remoteFiles){ + if (this.entries.has(path)) { + continue; + } + this.addEntry({ + path, + type: "file", + src + }).flags.add("remote"); + } + } + addEntry(data) { + const pieces = data.path.split("/").filter((p)=>p); + let parent = this.tree; + if (!data.src) { + data.src = posix.join(this.options.root, data.path); + } + if (!data.type) { + try { + const info = Deno.statSync(data.src); + data.type = info.isDirectory ? "directory" : "file"; + } catch { + data.type = "file"; + } + } + while(pieces.length > 1){ + const name = pieces.shift(); + const children = parent.children; + const path = posix.join(parent.path, name); + if (!this.#isValid(path)) { + break; + } + parent = children.get(name) || new Entry(name, path, "directory", this.options.root + path); + children.set(name, parent); + this.entries.set(parent.path, parent); + } + const name = pieces.shift(); + const children = parent.children; + const entry = new Entry(name, data.path, data.type, data.src); + children.set(name, entry); + this.entries.set(entry.path, entry); + return entry; + } + removeEntry(path) { + const entry = this.entries.get(path); + const isFolder = entry?.type === "directory"; + this.entries.delete(path); + const parent = this.entries.get(posix.dirname(path)); + const name = posix.basename(path); + parent.children.delete(name); + if (isFolder) { + const prefix = posix.join(path, "/"); + for (const childPath of this.entries.keys()){ + if (childPath.startsWith(prefix)) { + this.entries.delete(childPath); + } + } + } + } +} +function createFileInfo(type) { + return { + isFile: type === "file", + isDirectory: type === "directory", + isSymlink: false, + isBlockDevice: null, + isCharDevice: null, + isSocket: null, + isFifo: null, + size: 0, + mtime: new Date(), + atime: new Date(), + ctime: new Date(), + birthtime: new Date(), + dev: 0, + ino: null, + mode: null, + nlink: null, + uid: null, + gid: null, + rdev: null, + blksize: null, + blocks: null + }; +} +function findMapByValue(map, value) { + for (const [key, val] of map.entries()){ + if (val === value) { + return key; + } + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS9mcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwb3NpeCB9IGZyb20gXCIuLi9kZXBzL3BhdGgudHNcIjtcbmltcG9ydCB7IHRvRmlsZVVybCB9IGZyb20gXCIuLi9kZXBzL3BhdGgudHNcIjtcblxuaW1wb3J0IHR5cGUgeyBSYXdEYXRhIH0gZnJvbSBcIi4vZmlsZS50c1wiO1xuXG50eXBlIEVudHJ5VHlwZSA9IFwiZmlsZVwiIHwgXCJkaXJlY3RvcnlcIjtcblxuZXhwb3J0IHR5cGUgTG9hZGVyID0gKHBhdGg6IHN0cmluZykgPT4gUHJvbWlzZTxSYXdEYXRhPjtcblxuZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcbiAgcm9vdDogc3RyaW5nO1xuICBpZ25vcmU/OiAoc3RyaW5nIHwgKChwYXRoOiBzdHJpbmcpID0+IGJvb2xlYW4pKVtdO1xufVxuXG5leHBvcnQgY2xhc3MgRW50cnkge1xuICBuYW1lOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgdHlwZTogRW50cnlUeXBlO1xuICBzcmM6IHN0cmluZztcbiAgY2hpbGRyZW4gPSBuZXcgTWFwPHN0cmluZywgRW50cnk+KCk7XG4gIGZsYWdzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICNjb250ZW50ID0gbmV3IE1hcDxMb2FkZXIsIFByb21pc2U8UmF3RGF0YT4gfCBSYXdEYXRhPigpO1xuICAjaW5mbz86IERlbm8uRmlsZUluZm87XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBwYXRoOiBzdHJpbmcsIHR5cGU6IEVudHJ5VHlwZSwgc3JjOiBzdHJpbmcpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnNyYyA9IHNyYztcbiAgfVxuXG4gIGdldENvbnRlbnQobG9hZGVyOiBMb2FkZXIpOiBQcm9taXNlPFJhd0RhdGE+IHwgUmF3RGF0YSB7XG4gICAgaWYgKCF0aGlzLiNjb250ZW50Lmhhcyhsb2FkZXIpKSB7XG4gICAgICB0aGlzLiNjb250ZW50LnNldChsb2FkZXIsIGxvYWRlcih0aGlzLnNyYykpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLiNjb250ZW50LmdldChsb2FkZXIpITtcbiAgfVxuXG4gIGdldEluZm8oKSB7XG4gICAgaWYgKCF0aGlzLiNpbmZvKSB7XG4gICAgICB0aGlzLiNpbmZvID0gdGhpcy5zcmMuaW5jbHVkZXMoXCI6Ly9cIilcbiAgICAgICAgPyBjcmVhdGVGaWxlSW5mbyh0aGlzLnR5cGUpXG4gICAgICAgIDogRGVuby5zdGF0U3luYyh0aGlzLnNyYyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuI2luZm87XG4gIH1cbn1cblxuLyoqIFZpcnR1YWwgZmlsZSBzeXN0ZW0gdXNlZCB0byBsb2FkIGFuZCBjYWNoZSBmaWxlcyAobG9jYWwgYW5kIHJlbW90ZSkgKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZTIHtcbiAgb3B0aW9uczogT3B0aW9ucztcbiAgZW50cmllcyA9IG5ldyBNYXA8c3RyaW5nLCBFbnRyeT4oKTtcbiAgcmVtb3RlRmlsZXMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICB0cmVlOiBFbnRyeTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLnRyZWUgPSBuZXcgRW50cnkoXCJcIiwgXCIvXCIsIFwiZGlyZWN0b3J5XCIsIG9wdGlvbnMucm9vdCk7XG4gICAgdGhpcy5lbnRyaWVzLnNldChcIi9cIiwgdGhpcy50cmVlKTtcbiAgfVxuXG4gIGluaXQoKSB7XG4gICAgdGhpcy4jd2Fsa0ZzKHRoaXMudHJlZSk7XG4gICAgdGhpcy4jd2Fsa1JlbW90ZSgpO1xuICB9XG5cbiAgLyoqIFVwZGF0ZSB0aGUgZW50cnkgYW5kIHJldHVybnMgaXQgaWYgaXQgd2FzIHJlbW92ZWQgKi9cbiAgdXBkYXRlKHBhdGg6IHN0cmluZyk6IEVudHJ5IHwgdW5kZWZpbmVkIHtcbiAgICAvLyBDaGVjayBpZiBpdCdzIGEgcmVtb3RlIGZpbGVcbiAgICBjb25zdCBzcmMgPSB0b0ZpbGVVcmwocG9zaXguam9pbih0aGlzLm9wdGlvbnMucm9vdCwgcGF0aCkpLmhyZWY7XG4gICAgY29uc3QgcmVtb3RlID0gZmluZE1hcEJ5VmFsdWUodGhpcy5yZW1vdGVGaWxlcywgc3JjKTtcbiAgICBpZiAocmVtb3RlKSB7XG4gICAgICBwYXRoID0gcmVtb3RlO1xuICAgIH1cblxuICAgIGNvbnN0IGV4aXN0ID0gdGhpcy5lbnRyaWVzLmdldChwYXRoKTtcblxuICAgIGxldCBlbnRyeTogRW50cnk7XG4gICAgaWYgKGV4aXN0ICYmIGV4aXN0LnR5cGUgIT09IFwiZGlyZWN0b3J5XCIpIHtcbiAgICAgIHRoaXMuZW50cmllcy5kZWxldGUocGF0aCk7XG4gICAgICBlbnRyeSA9IHRoaXMuYWRkRW50cnkoeyBwYXRoIH0pO1xuICAgIH0gZWxzZSBpZiAoZXhpc3QpIHtcbiAgICAgIGVudHJ5ID0gZXhpc3Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVudHJ5ID0gdGhpcy5hZGRFbnRyeSh7IHBhdGggfSk7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHJlbW90ZSBmaWxlc1xuICAgIGlmIChyZW1vdGUpIHtcbiAgICAgIGVudHJ5LmZsYWdzLmFkZChcInJlbW90ZVwiKTtcbiAgICAgIGVudHJ5LnNyYyA9IHNyYztcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgZW50cnkuZ2V0SW5mbygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBSZW1vdmUgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRGVuby5lcnJvcnMuTm90Rm91bmQpIHtcbiAgICAgICAgY29uc3Qgc3JjID0gdGhpcy5yZW1vdGVGaWxlcy5nZXQocGF0aCk7XG4gICAgICAgIGlmIChzcmMpIHtcbiAgICAgICAgICBlbnRyeS5mbGFncy5hZGQoXCJyZW1vdGVcIik7XG4gICAgICAgICAgZW50cnkuc3JjID0gc3JjO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbW92ZUVudHJ5KHBhdGgpO1xuICAgICAgICByZXR1cm4gZXhpc3Q7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTmV3IGRpcmVjdG9yeSwgd2FsayBpdFxuICAgIGlmIChlbnRyeS50eXBlID09PSBcImRpcmVjdG9yeVwiICYmICFleGlzdCkge1xuICAgICAgdGhpcy4jd2Fsa0ZzKGVudHJ5KTtcbiAgICB9XG4gIH1cblxuICAjaXNWYWxpZChwYXRoOiBzdHJpbmcpIHtcbiAgICBjb25zdCB7IGlnbm9yZSB9ID0gdGhpcy5vcHRpb25zO1xuXG4gICAgcmV0dXJuIGlnbm9yZVxuICAgICAgPyAhaWdub3JlLnNvbWUoKGlnbm9yZSkgPT5cbiAgICAgICAgdHlwZW9mIGlnbm9yZSA9PT0gXCJzdHJpbmdcIlxuICAgICAgICAgID8gKHBhdGguc3RhcnRzV2l0aChwb3NpeC5qb2luKGlnbm9yZSwgXCIvXCIpKSB8fFxuICAgICAgICAgICAgcGF0aCA9PT0gaWdub3JlKVxuICAgICAgICAgIDogaWdub3JlKHBhdGgpXG4gICAgICApXG4gICAgICA6IHRydWU7XG4gIH1cblxuICAjd2Fsa0ZzKGRpcjogRW50cnkpIHtcbiAgICBjb25zdCBkaXJQYXRoID0gcG9zaXguam9pbih0aGlzLm9wdGlvbnMucm9vdCwgZGlyLnBhdGgpO1xuXG4gICAgZm9yIChjb25zdCBkaXJFbnRyeSBvZiBEZW5vLnJlYWREaXJTeW5jKGRpclBhdGgpKSB7XG4gICAgICBjb25zdCBwYXRoID0gcG9zaXguam9pbihkaXIucGF0aCwgZGlyRW50cnkubmFtZSk7XG5cbiAgICAgIGlmIChkaXJFbnRyeS5pc1N5bWxpbmspIHtcbiAgICAgICAgdGhpcy4jd2Fsa0xpbmsoZGlyLCBkaXJFbnRyeS5uYW1lKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy4jaXNWYWxpZChwYXRoKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZW50cnkgPSBuZXcgRW50cnkoXG4gICAgICAgIGRpckVudHJ5Lm5hbWUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIGRpckVudHJ5LmlzRGlyZWN0b3J5ID8gXCJkaXJlY3RvcnlcIiA6IFwiZmlsZVwiLFxuICAgICAgICBwb3NpeC5qb2luKHRoaXMub3B0aW9ucy5yb290LCBwYXRoKSxcbiAgICAgICk7XG5cbiAgICAgIGRpci5jaGlsZHJlbi5zZXQoZGlyRW50cnkubmFtZSwgZW50cnkpO1xuICAgICAgdGhpcy5lbnRyaWVzLnNldChwYXRoLCBlbnRyeSk7XG5cbiAgICAgIGlmIChlbnRyeS50eXBlID09PSBcImRpcmVjdG9yeVwiKSB7XG4gICAgICAgIHRoaXMuI3dhbGtGcyhlbnRyeSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI3dhbGtMaW5rKGRpcjogRW50cnksIG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHNyYyA9IHBvc2l4LmpvaW4oZGlyLnNyYywgbmFtZSk7XG4gICAgY29uc3QgaW5mbyA9IERlbm8uc3RhdFN5bmMoc3JjKTtcbiAgICBjb25zdCB0eXBlID0gaW5mby5pc0RpcmVjdG9yeSA/IFwiZGlyZWN0b3J5XCIgOiBcImZpbGVcIjtcblxuICAgIGNvbnN0IGVudHJ5ID0gbmV3IEVudHJ5KFxuICAgICAgbmFtZSxcbiAgICAgIHBvc2l4LmpvaW4oZGlyLnBhdGgsIG5hbWUpLFxuICAgICAgdHlwZSxcbiAgICAgIERlbm8ucmVhbFBhdGhTeW5jKHNyYyksXG4gICAgKTtcblxuICAgIGRpci5jaGlsZHJlbi5zZXQobmFtZSwgZW50cnkpO1xuICAgIHRoaXMuZW50cmllcy5zZXQoZW50cnkucGF0aCwgZW50cnkpO1xuXG4gICAgaWYgKHR5cGUgPT09IFwiZGlyZWN0b3J5XCIpIHtcbiAgICAgIHRoaXMuI3dhbGtGcyhlbnRyeSk7XG4gICAgfVxuICB9XG5cbiAgI3dhbGtSZW1vdGUoKSB7XG4gICAgLy8gUmVhZCBmcm9tIHJlbW90ZSBmaWxlc1xuICAgIGZvciAoY29uc3QgW3BhdGgsIHNyY10gb2YgdGhpcy5yZW1vdGVGaWxlcykge1xuICAgICAgaWYgKHRoaXMuZW50cmllcy5oYXMocGF0aCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWRkRW50cnkoe1xuICAgICAgICBwYXRoLFxuICAgICAgICB0eXBlOiBcImZpbGVcIixcbiAgICAgICAgc3JjLFxuICAgICAgfSkuZmxhZ3MuYWRkKFwicmVtb3RlXCIpO1xuICAgIH1cbiAgfVxuXG4gIGFkZEVudHJ5KGRhdGE6IHsgcGF0aDogc3RyaW5nOyB0eXBlPzogRW50cnlUeXBlOyBzcmM/OiBzdHJpbmcgfSk6IEVudHJ5IHtcbiAgICBjb25zdCBwaWVjZXMgPSBkYXRhLnBhdGguc3BsaXQoXCIvXCIpLmZpbHRlcigocCkgPT4gcCk7XG4gICAgbGV0IHBhcmVudCA9IHRoaXMudHJlZTtcblxuICAgIGlmICghZGF0YS5zcmMpIHtcbiAgICAgIGRhdGEuc3JjID0gcG9zaXguam9pbih0aGlzLm9wdGlvbnMucm9vdCwgZGF0YS5wYXRoKTtcbiAgICB9XG5cbiAgICBpZiAoIWRhdGEudHlwZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgaW5mbyA9IERlbm8uc3RhdFN5bmMoZGF0YS5zcmMhKTtcbiAgICAgICAgZGF0YS50eXBlID0gaW5mby5pc0RpcmVjdG9yeSA/IFwiZGlyZWN0b3J5XCIgOiBcImZpbGVcIjtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICBkYXRhLnR5cGUgPSBcImZpbGVcIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB3aGlsZSAocGllY2VzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBwaWVjZXMuc2hpZnQoKSE7XG4gICAgICBjb25zdCBjaGlsZHJlbiA9IHBhcmVudC5jaGlsZHJlbjtcbiAgICAgIGNvbnN0IHBhdGggPSBwb3NpeC5qb2luKHBhcmVudC5wYXRoLCBuYW1lKTtcblxuICAgICAgaWYgKCF0aGlzLiNpc1ZhbGlkKHBhdGgpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBwYXJlbnQgPSBjaGlsZHJlbi5nZXQobmFtZSkgfHwgbmV3IEVudHJ5KFxuICAgICAgICBuYW1lLFxuICAgICAgICBwYXRoLFxuICAgICAgICBcImRpcmVjdG9yeVwiLFxuICAgICAgICB0aGlzLm9wdGlvbnMucm9vdCArIHBhdGgsXG4gICAgICApO1xuXG4gICAgICBjaGlsZHJlbi5zZXQobmFtZSwgcGFyZW50KTtcbiAgICAgIHRoaXMuZW50cmllcy5zZXQocGFyZW50LnBhdGgsIHBhcmVudCk7XG4gICAgfVxuXG4gICAgY29uc3QgbmFtZSA9IHBpZWNlcy5zaGlmdCgpITtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHBhcmVudC5jaGlsZHJlbjtcbiAgICBjb25zdCBlbnRyeSA9IG5ldyBFbnRyeShcbiAgICAgIG5hbWUsXG4gICAgICBkYXRhLnBhdGgsXG4gICAgICBkYXRhLnR5cGUsXG4gICAgICBkYXRhLnNyYyEsXG4gICAgKTtcbiAgICBjaGlsZHJlbi5zZXQobmFtZSwgZW50cnkpO1xuICAgIHRoaXMuZW50cmllcy5zZXQoZW50cnkucGF0aCwgZW50cnkpO1xuICAgIHJldHVybiBlbnRyeTtcbiAgfVxuXG4gIHJlbW92ZUVudHJ5KHBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5lbnRyaWVzLmdldChwYXRoKTtcbiAgICBjb25zdCBpc0ZvbGRlciA9IGVudHJ5Py50eXBlID09PSBcImRpcmVjdG9yeVwiO1xuXG4gICAgdGhpcy5lbnRyaWVzLmRlbGV0ZShwYXRoKTtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmVudHJpZXMuZ2V0KHBvc2l4LmRpcm5hbWUocGF0aCkpITtcbiAgICBjb25zdCBuYW1lID0gcG9zaXguYmFzZW5hbWUocGF0aCk7XG4gICAgcGFyZW50LmNoaWxkcmVuLmRlbGV0ZShuYW1lKTtcblxuICAgIGlmIChpc0ZvbGRlcikge1xuICAgICAgY29uc3QgcHJlZml4ID0gcG9zaXguam9pbihwYXRoLCBcIi9cIik7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkUGF0aCBvZiB0aGlzLmVudHJpZXMua2V5cygpKSB7XG4gICAgICAgIGlmIChjaGlsZFBhdGguc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICAgICAgdGhpcy5lbnRyaWVzLmRlbGV0ZShjaGlsZFBhdGgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUZpbGVJbmZvKHR5cGU6IEVudHJ5VHlwZSk6IERlbm8uRmlsZUluZm8ge1xuICByZXR1cm4ge1xuICAgIGlzRmlsZTogdHlwZSA9PT0gXCJmaWxlXCIsXG4gICAgaXNEaXJlY3Rvcnk6IHR5cGUgPT09IFwiZGlyZWN0b3J5XCIsXG4gICAgaXNTeW1saW5rOiBmYWxzZSxcbiAgICBpc0Jsb2NrRGV2aWNlOiBudWxsLFxuICAgIGlzQ2hhckRldmljZTogbnVsbCxcbiAgICBpc1NvY2tldDogbnVsbCxcbiAgICBpc0ZpZm86IG51bGwsXG4gICAgc2l6ZTogMCxcbiAgICBtdGltZTogbmV3IERhdGUoKSxcbiAgICBhdGltZTogbmV3IERhdGUoKSxcbiAgICBjdGltZTogbmV3IERhdGUoKSxcbiAgICBiaXJ0aHRpbWU6IG5ldyBEYXRlKCksXG4gICAgZGV2OiAwLFxuICAgIGlubzogbnVsbCxcbiAgICBtb2RlOiBudWxsLFxuICAgIG5saW5rOiBudWxsLFxuICAgIHVpZDogbnVsbCxcbiAgICBnaWQ6IG51bGwsXG4gICAgcmRldjogbnVsbCxcbiAgICBibGtzaXplOiBudWxsLFxuICAgIGJsb2NrczogbnVsbCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZmluZE1hcEJ5VmFsdWU8SywgVj4obWFwOiBNYXA8SywgVj4sIHZhbHVlOiBWKTogSyB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3QgW2tleSwgdmFsXSBvZiBtYXAuZW50cmllcygpKSB7XG4gICAgaWYgKHZhbCA9PT0gdmFsdWUpIHtcbiAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxLQUFLLFFBQVEsa0JBQWtCO0FBQ3hDLFNBQVMsU0FBUyxRQUFRLGtCQUFrQjtBQWE1QyxPQUFPLE1BQU07RUFDWCxLQUFhO0VBQ2IsS0FBYTtFQUNiLEtBQWdCO0VBQ2hCLElBQVk7RUFDWixXQUFXLElBQUksTUFBcUI7RUFDcEMsUUFBUSxJQUFJLE1BQWM7RUFDMUIsQ0FBQSxPQUFRLEdBQUcsSUFBSSxNQUEwQztFQUN6RCxDQUFBLElBQUssQ0FBaUI7RUFFdEIsWUFBWSxJQUFZLEVBQUUsSUFBWSxFQUFFLElBQWUsRUFBRSxHQUFXLENBQUU7SUFDcEUsSUFBSSxDQUFDLElBQUksR0FBRztJQUNaLElBQUksQ0FBQyxJQUFJLEdBQUc7SUFDWixJQUFJLENBQUMsSUFBSSxHQUFHO0lBQ1osSUFBSSxDQUFDLEdBQUcsR0FBRztFQUNiO0VBRUEsV0FBVyxNQUFjLEVBQThCO0lBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxPQUFRLENBQUMsR0FBRyxDQUFDLFNBQVM7TUFDOUIsSUFBSSxDQUFDLENBQUEsT0FBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUc7SUFDM0M7SUFFQSxPQUFPLElBQUksQ0FBQyxDQUFBLE9BQVEsQ0FBQyxHQUFHLENBQUM7RUFDM0I7RUFFQSxVQUFVO0lBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBLElBQUssRUFBRTtNQUNmLElBQUksQ0FBQyxDQUFBLElBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUMzQixlQUFlLElBQUksQ0FBQyxJQUFJLElBQ3hCLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHO0lBQzVCO0lBRUEsT0FBTyxJQUFJLENBQUMsQ0FB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 +// denoCacheMetadata=3229067422392407821,2739894664235942750
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/31e5dd6ab63a7c44741e363d311de87953a27b5a6fd987c2a37b2bb781ff9c89.js b/vendor/gen/https/deno.land/31e5dd6ab63a7c44741e363d311de87953a27b5a6fd987c2a37b2bb781ff9c89.js new file mode 100644 index 0000000..de65a77 --- /dev/null +++ b/vendor/gen/https/deno.land/31e5dd6ab63a7c44741e363d311de87953a27b5a6fd987c2a37b2bb781ff9c89.js @@ -0,0 +1,36 @@ +export default function() { + return (env)=>{ + env.tags.push(ifTag); + env.tags.push(elseTag); + }; +} +function ifTag(env, code, output, tokens) { + if (!code.startsWith("if ")) { + return; + } + const condition = code.replace(/^if\s+/, "").trim(); + const compiled = []; + compiled.push(`if (${condition}) {`); + compiled.push(...env.compileTokens(tokens, output, [ + "/if" + ])); + tokens.shift(); + compiled.push("}"); + return compiled.join("\n"); +} +function elseTag(_env, code) { + if (!code.startsWith("else ") && code !== "else") { + return; + } + const match = code.match(/^else(\s+if\s+(.*))?$/); + if (!match) { + throw new Error(`Invalid else: ${code}`); + } + const [_, ifTag, condition] = match; + if (ifTag) { + return `} else if (${condition}) {`; + } + return "} else {"; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9wbHVnaW5zL2lmLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVG9rZW4gfSBmcm9tIFwiLi4vc3JjL3Rva2VuaXplci50c1wiO1xuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudCwgUGx1Z2luIH0gZnJvbSBcIi4uL3NyYy9lbnZpcm9ubWVudC50c1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKTogUGx1Z2luIHtcbiAgcmV0dXJuIChlbnY6IEVudmlyb25tZW50KSA9PiB7XG4gICAgZW52LnRhZ3MucHVzaChpZlRhZyk7XG4gICAgZW52LnRhZ3MucHVzaChlbHNlVGFnKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gaWZUYWcoXG4gIGVudjogRW52aXJvbm1lbnQsXG4gIGNvZGU6IHN0cmluZyxcbiAgb3V0cHV0OiBzdHJpbmcsXG4gIHRva2VuczogVG9rZW5bXSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghY29kZS5zdGFydHNXaXRoKFwiaWYgXCIpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGNvbmRpdGlvbiA9IGNvZGUucmVwbGFjZSgvXmlmXFxzKy8sIFwiXCIpLnRyaW0oKTtcbiAgY29uc3QgY29tcGlsZWQ6IHN0cmluZ1tdID0gW107XG5cbiAgY29tcGlsZWQucHVzaChgaWYgKCR7Y29uZGl0aW9ufSkge2ApO1xuICBjb21waWxlZC5wdXNoKC4uLmVudi5jb21waWxlVG9rZW5zKHRva2Vucywgb3V0cHV0LCBbXCIvaWZcIl0pKTtcbiAgdG9rZW5zLnNoaWZ0KCk7XG4gIGNvbXBpbGVkLnB1c2goXCJ9XCIpO1xuXG4gIHJldHVybiBjb21waWxlZC5qb2luKFwiXFxuXCIpO1xufVxuXG5mdW5jdGlvbiBlbHNlVGFnKFxuICBfZW52OiBFbnZpcm9ubWVudCxcbiAgY29kZTogc3RyaW5nLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFjb2RlLnN0YXJ0c1dpdGgoXCJlbHNlIFwiKSAmJiBjb2RlICE9PSBcImVsc2VcIikge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBtYXRjaCA9IGNvZGUubWF0Y2goL15lbHNlKFxccytpZlxccysoLiopKT8kLyk7XG5cbiAgaWYgKCFtYXRjaCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBlbHNlOiAke2NvZGV9YCk7XG4gIH1cblxuICBjb25zdCBbXywgaWZUYWcsIGNvbmRpdGlvbl0gPSBtYXRjaDtcblxuICBpZiAoaWZUYWcpIHtcbiAgICByZXR1cm4gYH0gZWxzZSBpZiAoJHtjb25kaXRpb259KSB7YDtcbiAgfVxuXG4gIHJldHVybiBcIn0gZWxzZSB7XCI7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsZUFBZTtFQUNiLE9BQU8sQ0FBQztJQUNOLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztJQUNkLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztFQUNoQjtBQUNGO0FBRUEsU0FBUyxNQUNQLEdBQWdCLEVBQ2hCLElBQVksRUFDWixNQUFjLEVBQ2QsTUFBZTtFQUVmLElBQUksQ0FBQyxLQUFLLFVBQVUsQ0FBQyxRQUFRO0lBQzNCO0VBQ0Y7RUFDQSxNQUFNLFlBQVksS0FBSyxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUk7RUFDakQsTUFBTSxXQUFxQixFQUFFO0VBRTdCLFNBQVMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRyxDQUFDO0VBQ25DLFNBQVMsSUFBSSxJQUFJLElBQUksYUFBYSxDQUFDLFFBQVEsUUFBUTtJQUFDO0dBQU07RUFDMUQsT0FBTyxLQUFLO0VBQ1osU0FBUyxJQUFJLENBQUM7RUFFZCxPQUFPLFNBQVMsSUFBSSxDQUFDO0FBQ3ZCO0FBRUEsU0FBUyxRQUNQLElBQWlCLEVBQ2pCLElBQVk7RUFFWixJQUFJLENBQUMsS0FBSyxVQUFVLENBQUMsWUFBWSxTQUFTLFFBQVE7SUFDaEQ7RUFDRjtFQUNBLE1BQU0sUUFBUSxLQUFLLEtBQUssQ0FBQztFQUV6QixJQUFJLENBQUMsT0FBTztJQUNWLE1BQU0sSUFBSSxNQUFNLENBQUMsY0FBYyxFQUFFLE1BQU07RUFDekM7RUFFQSxNQUFNLENBQUMsR0FBRyxPQUFPLFVBQVUsR0FBRztFQUU5QixJQUFJLE9BQU87SUFDVCxPQUFPLENBQUMsV0FBVyxFQUFFLFVBQVUsR0FBRyxDQUFDO0VBQ3JDO0VBRUEsT0FBTztBQUNUIn0= +// denoCacheMetadata=6907840143127744410,18218313291425734298
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/3566b6c7334a68d62e2547dd836014ef030a442e79f0885b6497cc76da422029.js b/vendor/gen/https/deno.land/3566b6c7334a68d62e2547dd836014ef030a442e79f0885b6497cc76da422029.js new file mode 100644 index 0000000..a1740d2 --- /dev/null +++ b/vendor/gen/https/deno.land/3566b6c7334a68d62e2547dd836014ef030a442e79f0885b6497cc76da422029.js @@ -0,0 +1,3 @@ +export { bold, brightBlue, brightMagenta, cyan, dim, getColorEnabled, green, italic, red, setColorEnabled, yellow } from "https://deno.land/std@0.170.0/fmt/colors.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC9kZXBzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIGJvbGQsXG4gIGJyaWdodEJsdWUsXG4gIGJyaWdodE1hZ2VudGEsXG4gIGN5YW4sXG4gIGRpbSxcbiAgZ2V0Q29sb3JFbmFibGVkLFxuICBncmVlbixcbiAgaXRhbGljLFxuICByZWQsXG4gIHNldENvbG9yRW5hYmxlZCxcbiAgeWVsbG93LFxufSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMTcwLjAvZm10L2NvbG9ycy50c1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQ0UsSUFBSSxFQUNKLFVBQVUsRUFDVixhQUFhLEVBQ2IsSUFBSSxFQUNKLEdBQUcsRUFDSCxlQUFlLEVBQ2YsS0FBSyxFQUNMLE1BQU0sRUFDTixHQUFHLEVBQ0gsZUFBZSxFQUNmLE1BQU0sUUFDRCw4Q0FBOEMifQ== +// denoCacheMetadata=6478543896803235917,12827170697367652000
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/35b8ef7a35a7f9731e47af7a5fca344771fe68bd64597b33249606c61e34323f.js b/vendor/gen/https/deno.land/35b8ef7a35a7f9731e47af7a5fca344771fe68bd64597b33249606c61e34323f.js new file mode 100644 index 0000000..31b0796 --- /dev/null +++ b/vendor/gen/https/deno.land/35b8ef7a35a7f9731e47af7a5fca344771fe68bd64597b33249606c61e34323f.js @@ -0,0 +1,13 @@ +import { StringType } from "./string.ts"; +/** Completion list type. */ export class ActionListType extends StringType { + cmd; + constructor(cmd){ + super(), this.cmd = cmd; + } + /** Complete action names. */ complete() { + return this.cmd.getCompletions().map((type)=>type.name)// filter unique values + .filter((value, index, self)=>self.indexOf(value) === index); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC90eXBlcy9hY3Rpb25fbGlzdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbW1hbmQgfSBmcm9tIFwiLi4vY29tbWFuZC50c1wiO1xuaW1wb3J0IHsgU3RyaW5nVHlwZSB9IGZyb20gXCIuL3N0cmluZy50c1wiO1xuXG4vKiogQ29tcGxldGlvbiBsaXN0IHR5cGUuICovXG5leHBvcnQgY2xhc3MgQWN0aW9uTGlzdFR5cGUgZXh0ZW5kcyBTdHJpbmdUeXBlIHtcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNtZDogQ29tbWFuZCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKiogQ29tcGxldGUgYWN0aW9uIG5hbWVzLiAqL1xuICBwdWJsaWMgY29tcGxldGUoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmNtZC5nZXRDb21wbGV0aW9ucygpXG4gICAgICAubWFwKCh0eXBlKSA9PiB0eXBlLm5hbWUpXG4gICAgICAvLyBmaWx0ZXIgdW5pcXVlIHZhbHVlc1xuICAgICAgLmZpbHRlcigodmFsdWUsIGluZGV4LCBzZWxmKSA9PiBzZWxmLmluZGV4T2YodmFsdWUpID09PSBpbmRleCk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxTQUFTLFVBQVUsUUFBUSxjQUFjO0FBRXpDLDBCQUEwQixHQUMxQixPQUFPLE1BQU0sdUJBQXVCOztFQUNsQyxZQUFZLEFBQVUsR0FBWSxDQUFFO0lBQ2xDLEtBQUssU0FEZSxNQUFBO0VBRXRCO0VBRUEsMkJBQTJCLEdBQzNCLEFBQU8sV0FBcUI7SUFDMUIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsR0FDM0IsR0FBRyxDQUFDLENBQUMsT0FBUyxLQUFLLElBQUksQ0FDeEIsdUJBQXVCO0tBQ3RCLE1BQU0sQ0FBQyxDQUFDLE9BQU8sT0FBTyxPQUFTLEtBQUssT0FBTyxDQUFDLFdBQVc7RUFDNUQ7QUFDRiJ9 +// denoCacheMetadata=14213906548983373694,16714974819166753146
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/377d368b85c4aa9cdfcf52674ca12468c78648c304e88e58661e7fb330d99939.js b/vendor/gen/https/deno.land/377d368b85c4aa9cdfcf52674ca12468c78648c304e88e58661e7fb330d99939.js new file mode 100644 index 0000000..763a736 --- /dev/null +++ b/vendor/gen/https/deno.land/377d368b85c4aa9cdfcf52674ca12468c78648c304e88e58661e7fb330d99939.js @@ -0,0 +1,27 @@ +import { Command } from "../command.ts"; +import { UnknownCommandError } from "../_errors.ts"; +import { CommandType } from "../types/command.ts"; +/** Generates well formatted and colored help output for specified command. */ export class HelpCommand extends Command { + constructor(cmd){ + super(); + return this.type("command", new CommandType()).arguments("[command:command]").description("Show this help or the help of a sub-command.").noGlobals().action(async (_, name)=>{ + if (!cmd) { + cmd = name ? this.getGlobalParent()?.getBaseCommand(name) : this.getGlobalParent(); + } + if (!cmd) { + const cmds = this.getGlobalParent()?.getCommands(); + throw new UnknownCommandError(name ?? "", cmds ?? [], [ + this.getName(), + ...this.getAliases() + ]); + } + await cmd.checkVersion(); + cmd.showHelp(); + if (this.shouldExit()) { + Deno.exit(0); + } + }); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC9oZWxwL21vZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcIi4uL2NvbW1hbmQudHNcIjtcbmltcG9ydCB7IFVua25vd25Db21tYW5kRXJyb3IgfSBmcm9tIFwiLi4vX2Vycm9ycy50c1wiO1xuaW1wb3J0IHsgQ29tbWFuZFR5cGUgfSBmcm9tIFwiLi4vdHlwZXMvY29tbWFuZC50c1wiO1xuXG4vKiogR2VuZXJhdGVzIHdlbGwgZm9ybWF0dGVkIGFuZCBjb2xvcmVkIGhlbHAgb3V0cHV0IGZvciBzcGVjaWZpZWQgY29tbWFuZC4gKi9cbmV4cG9ydCBjbGFzcyBIZWxwQ29tbWFuZFxuICBleHRlbmRzIENvbW1hbmQ8dm9pZCwgdm9pZCwgdm9pZCwgW2NvbW1hbmROYW1lPzogQ29tbWFuZFR5cGVdPiB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihjbWQ/OiBDb21tYW5kKSB7XG4gICAgc3VwZXIoKTtcbiAgICByZXR1cm4gdGhpc1xuICAgICAgLnR5cGUoXCJjb21tYW5kXCIsIG5ldyBDb21tYW5kVHlwZSgpKVxuICAgICAgLmFyZ3VtZW50cyhcIltjb21tYW5kOmNvbW1hbmRdXCIpXG4gICAgICAuZGVzY3JpcHRpb24oXCJTaG93IHRoaXMgaGVscCBvciB0aGUgaGVscCBvZiBhIHN1Yi1jb21tYW5kLlwiKVxuICAgICAgLm5vR2xvYmFscygpXG4gICAgICAuYWN0aW9uKGFzeW5jIChfLCBuYW1lPzogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICghY21kKSB7XG4gICAgICAgICAgY21kID0gbmFtZVxuICAgICAgICAgICAgPyB0aGlzLmdldEdsb2JhbFBhcmVudCgpPy5nZXRCYXNlQ29tbWFuZChuYW1lKVxuICAgICAgICAgICAgOiB0aGlzLmdldEdsb2JhbFBhcmVudCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY21kKSB7XG4gICAgICAgICAgY29uc3QgY21kcyA9IHRoaXMuZ2V0R2xvYmFsUGFyZW50KCk/LmdldENvbW1hbmRzKCk7XG4gICAgICAgICAgdGhyb3cgbmV3IFVua25vd25Db21tYW5kRXJyb3IobmFtZSA/PyBcIlwiLCBjbWRzID8/IFtdLCBbXG4gICAgICAgICAgICB0aGlzLmdldE5hbWUoKSxcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0QWxpYXNlcygpLFxuICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGNtZC5jaGVja1ZlcnNpb24oKTtcbiAgICAgICAgY21kLnNob3dIZWxwKCk7XG4gICAgICAgIGlmICh0aGlzLnNob3VsZEV4aXQoKSkge1xuICAgICAgICAgIERlbm8uZXhpdCgwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLE9BQU8sUUFBUSxnQkFBZ0I7QUFDeEMsU0FBUyxtQkFBbUIsUUFBUSxnQkFBZ0I7QUFDcEQsU0FBUyxXQUFXLFFBQVEsc0JBQXNCO0FBRWxELDRFQUE0RSxHQUM1RSxPQUFPLE1BQU0sb0JBQ0g7RUFDUixZQUFtQixHQUFhLENBQUU7SUFDaEMsS0FBSztJQUNMLE9BQU8sSUFBSSxDQUNSLElBQUksQ0FBQyxXQUFXLElBQUksZUFDcEIsU0FBUyxDQUFDLHFCQUNWLFdBQVcsQ0FBQyxnREFDWixTQUFTLEdBQ1QsTUFBTSxDQUFDLE9BQU8sR0FBRztNQUNoQixJQUFJLENBQUMsS0FBSztRQUNSLE1BQU0sT0FDRixJQUFJLENBQUMsZUFBZSxJQUFJLGVBQWUsUUFDdkMsSUFBSSxDQUFDLGVBQWU7TUFDMUI7TUFDQSxJQUFJLENBQUMsS0FBSztRQUNSLE1BQU0sT0FBTyxJQUFJLENBQUMsZUFBZSxJQUFJO1FBQ3JDLE1BQU0sSUFBSSxvQkFBb0IsUUFBUSxJQUFJLFFBQVEsRUFBRSxFQUFFO1VBQ3BELElBQUksQ0FBQyxPQUFPO2FBQ1QsSUFBSSxDQUFDLFVBQVU7U0FDbkI7TUFDSDtNQUNBLE1BQU0sSUFBSSxZQUFZO01BQ3RCLElBQUksUUFBUTtNQUNaLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSTtRQUNyQixLQUFLLElBQUksQ0FBQztNQUNaO0lBQ0Y7RUFDSjtBQUNGIn0= +// denoCacheMetadata=14597041301853195075,9704251461463242537
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/38efb93200e818215777b3e1c4c7e61b12248fe849bccc95a4351967457c4ab5.js b/vendor/gen/https/deno.land/38efb93200e818215777b3e1c4c7e61b12248fe849bccc95a4351967457c4ab5.js new file mode 100644 index 0000000..30a39e2 --- /dev/null +++ b/vendor/gen/https/deno.land/38efb93200e818215777b3e1c4c7e61b12248fe849bccc95a4351967457c4ab5.js @@ -0,0 +1,159 @@ +import { autotrim, engine } from "../deps/vento.ts"; +import { posix } from "../deps/path.ts"; +import loader from "../core/loaders/text.ts"; +import { merge } from "../core/utils/object.ts"; +import { normalizePath } from "../core/utils/path.ts"; +import { log } from "../core/utils/log.ts"; +// Default options +export const defaults = { + extensions: [ + ".vento", + ".vto" + ], + autoTrim: true, + options: { + dataVarname: "it", + useWith: true, + autoescape: false + } +}; +class LumeLoader { + fs; + #root; + constructor(root, fs){ + this.#root = root; + this.fs = fs; + } + async load(file) { + const entry = this.fs.entries.get(normalizePath(file)); + if (!entry) { + throw new Error(`File not found: ${file}`); + } + const data = await entry.getContent(loader); + return { + source: data.content, + data: data + }; + } + resolve(from, file) { + if (file.startsWith(".")) { + return normalizePath(posix.join(posix.dirname(from), file)); + } + if (file.startsWith(this.#root)) { + return normalizePath(file); + } + return normalizePath(posix.join(this.#root, file)); + } +} +/** Template engine to render Vento files */ export class VentoEngine { + engine; + includes; + constructor(engine, includes){ + this.engine = engine; + this.includes = includes; + } + deleteCache(file) { + this.engine.cache.delete(file); + } + async render(content, data, filename) { + const result = await this.engine.runString(content, data, filename); + return result.content; + } + addHelper(name, fn, options) { + if (options.async) { + this.engine.filters[name] = async function(...args) { + return await fn.apply({ + data: this.data + }, args); + }; + } else { + this.engine.filters[name] = function(...args) { + return fn.apply({ + data: this.data + }, args); + }; + } + } +} +/** + * A plugin to use the Vento template engine + * Installed by default + * @see https://lume.land/plugins/vento/ + */ export function vento(userOptions) { + return (site)=>{ + const options = merge({ + ...defaults, + includes: site.options.includes + }, userOptions); + const vento = engine({ + includes: new LumeLoader(normalizePath(options.includes), site.fs), + ...options.options + }); + vento.tags.push(compTag); + if (options.autoTrim) { + vento.use(autotrim()); + } + options.plugins?.forEach((plugin)=>vento.use(plugin)); + site.hooks.addVentoPlugin = (plugin)=>{ + vento.use(plugin); + }; + site.hooks.vento = (callback)=>callback(vento); + const ventoEngine = new VentoEngine(vento, options.includes); + // Ignore includes folder + if (options.includes) { + site.ignore(options.includes); + } + // Load the pages and register the engine + site.loadPages(options.extensions, { + loader, + engine: ventoEngine, + pageSubExtension: options.pageSubExtension + }); + site.filter("vto", filter, true); + async function filter(string, data) { + const result = await vento.runString(string, { + ...site.scopedData.get("/"), + ...data + }); + return result.content; + } + }; +} +/** Vento tag to render a component */ function compTag(env, code, output, tokens) { + // Components are always async + // so convert automatically {{ comp.whatever }} to {{ await comp.whatever }} + if (code.startsWith("comp.")) { + const value = `await ${code}`; + const val = env.compileFilters(tokens, value, env.options.autoescape); + return `${output} += ${val};`; + } + if (!code.startsWith("comp ")) { + return; + } + const match = code.match(/^comp\s+([\w.]+)(?:\s+([\s\S]+[^/]))?(?:\s+(\/))?$/); + if (!match) { + throw new Error(`Invalid component tag: ${code}`); + } + const [_, comp, args, closed] = match; + if (closed) { + return `${output} += await comp.${comp}(${args || ""});`; + } + const compiled = []; + const tmpOutput = `__content_${tokens.length}`; + compiled.push("{"); + compiled.push(`let ${tmpOutput} = ""`); + compiled.push(...env.compileTokens(tokens, tmpOutput, [ + "/comp" + ])); + if (tokens.length && (tokens[0][0] !== "tag" || tokens[0][1] !== "/comp")) { + log.fatal(`[vento plugin] Missing closing tag for component "${comp}"`); + throw new Error(`Missing closing tag for component tag: ${code}`); + } + tokens.shift(); + compiled.push(`${output} += await comp.${comp}({...${args || "{}"}, content: ${tmpOutput}});`); + compiled.push("}"); + return compiled.join("\n"); +} +export default vento; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvcGx1Z2lucy92ZW50by50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhdXRvdHJpbSwgZW5naW5lIH0gZnJvbSBcIi4uL2RlcHMvdmVudG8udHNcIjtcbmltcG9ydCB7IHBvc2l4IH0gZnJvbSBcIi4uL2RlcHMvcGF0aC50c1wiO1xuaW1wb3J0IGxvYWRlciBmcm9tIFwiLi4vY29yZS9sb2FkZXJzL3RleHQudHNcIjtcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSBcIi4uL2NvcmUvdXRpbHMvb2JqZWN0LnRzXCI7XG5pbXBvcnQgeyBub3JtYWxpemVQYXRoIH0gZnJvbSBcIi4uL2NvcmUvdXRpbHMvcGF0aC50c1wiO1xuaW1wb3J0IHsgbG9nIH0gZnJvbSBcIi4uL2NvcmUvdXRpbHMvbG9nLnRzXCI7XG5cbmltcG9ydCB0eXBlIFNpdGUgZnJvbSBcIi4uL2NvcmUvc2l0ZS50c1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhIH0gZnJvbSBcIi4uL2NvcmUvZmlsZS50c1wiO1xuaW1wb3J0IHR5cGUgeyBFbmdpbmUsIEhlbHBlciwgSGVscGVyT3B0aW9ucyB9IGZyb20gXCIuLi9jb3JlL3JlbmRlcmVyLnRzXCI7XG5pbXBvcnQgdHlwZSBGUyBmcm9tIFwiLi4vY29yZS9mcy50c1wiO1xuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudCwgTG9hZGVyLCBQbHVnaW4sIFRva2VuIH0gZnJvbSBcIi4uL2RlcHMvdmVudG8udHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcbiAgLyoqIEZpbGUgZXh0ZW5zaW9ucyB0byBsb2FkICovXG4gIGV4dGVuc2lvbnM/OiBzdHJpbmdbXTtcblxuICAvKiogT3B0aW9uYWwgc3ViLWV4dGVuc2lvbiBmb3IgcGFnZSBmaWxlcyAqL1xuICBwYWdlU3ViRXh0ZW5zaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gaW5jbHVkZXMgcGF0aFxuICAgKiBAZGVmYXVsdCBgc2l0ZS5vcHRpb25zLmluY2x1ZGVzYFxuICAgKi9cbiAgaW5jbHVkZXM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsdWdpbnMgdG8gdXNlIGJ5IHZlbnRvXG4gICAqL1xuICBwbHVnaW5zPzogUGx1Z2luW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGF1dG8tdHJpbSB0aGUgdGVtcGxhdGVzXG4gICAqL1xuICBhdXRvVHJpbT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb25zIGZvciB0aGUgVmVudG8gZW5naW5lXG4gICAqIEBzZWUgaHR0cHM6Ly92ZW50by5qcy5vcmcvY29uZmlndXJhdGlvbi9cbiAgICovXG4gIG9wdGlvbnM6IHtcbiAgICAvKiogVGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIHRvIGFjY2VzcyB0byB0aGUgZGF0YSBpbiB0aGUgdGVtcGxhdGVzICovXG4gICAgZGF0YVZhcm5hbWU/OiBzdHJpbmc7XG5cbiAgICAvKiogTWFrZSBkYXRhIGF2YWlsYWJsZSBvbiB0aGUgZ2xvYmFsIG9iamVjdCBpbnN0ZWFkIG9mIHZhck5hbWUgKi9cbiAgICB1c2VXaXRoPzogYm9vbGVhbjtcblxuICAgIC8qKiBXaGV0aGVyIG9yIG5vdCB0byBhdXRvbWF0aWNhbGx5IFhNTC1lc2NhcGUgaW50ZXJwb2xhdGlvbnMuICovXG4gICAgYXV0b2VzY2FwZT86IGJvb2xlYW47XG4gIH07XG59XG5cbi8vIERlZmF1bHQgb3B0aW9uc1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRzOiBPcHRpb25zID0ge1xuICBleHRlbnNpb25zOiBbXCIudmVudG9cIiwgXCIudnRvXCJdLFxuICBhdXRvVHJpbTogdHJ1ZSxcbiAgb3B0aW9uczoge1xuICAgIGRhdGFWYXJuYW1lOiBcIml0XCIsXG4gICAgdXNlV2l0aDogdHJ1ZSxcbiAgICBhdXRvZXNjYXBlOiBmYWxzZSxcbiAgfSxcbn07XG5cbmNsYXNzIEx1bWVMb2FkZXIgaW1wbGVtZW50cyBMb2FkZXIge1xuICBmczogRlM7XG4gICNyb290OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Iocm9vdDogc3RyaW5nLCBmczogRlMpIHtcbiAgICB0aGlzLiNyb290ID0gcm9vdDtcbiAgICB0aGlzLmZzID0gZnM7XG4gIH1cblxuICBhc3luYyBsb2FkKGZpbGU6IHN0cmluZykge1xuICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5mcy5lbnRyaWVzLmdldChub3JtYWxpemVQYXRoKGZpbGUpKTtcblxuICAgIGlmICghZW50cnkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7ZmlsZX1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgZW50cnkuZ2V0Q29udGVudChsb2FkZXIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNvdXJjZTogZGF0YS5jb250ZW50IGFzIHN0cmluZyxcbiAgICAgIGRhdGE6IGRhdGEsXG4gICAgfTtcbiAgfVxuXG4gIHJlc29sdmUoZnJvbTogc3RyaW5nLCBmaWxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChmaWxlLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgICByZXR1cm4gbm9ybWFsaXplUGF0aChwb3NpeC5qb2luKHBvc2l4LmRpcm5hbWUoZnJvbSksIGZpbGUpKTtcbiAgICB9XG5cbiAgICBpZiAoZmlsZS5zdGFydHNXaXRoKHRoaXMuI3Jvb3QpKSB7XG4gICAgICByZXR1cm4gbm9ybWFsaXplUGF0aChmaWxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9ybWFsaXplUGF0aChwb3NpeC5qb2luKHRoaXMuI3Jvb3QsIGZpbGUpKTtcbiAgfVxufVxuXG4vKiogVGVtcGxhdGUgZW5naW5lIHRvIHJlbmRlciBWZW50byBmaWxlcyAqL1xuZXhwb3J0IGNsYXNzIFZlbnRvRW5naW5lIGltcGxlbWVudHMgRW5naW5lIHtcbiAgZW5naW5lOiBFbnZpcm9ubWVudDtcbiAgaW5jbHVkZXM6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihlbmdpbmU6IEVudmlyb25tZW50LCBpbmNsdWRlczogc3RyaW5nKSB7XG4gICAgdGhpcy5lbmdpbmUgPSBlbmdpbmU7XG4gICAgdGhpcy5pbmNsdWRlcyA9IGluY2x1ZGVzO1xuICB9XG5cbiAgZGVsZXRlQ2FjaGUoZmlsZTogc3RyaW5nKSB7XG4gICAgdGhpcy5lbmdpbmUuY2FjaGUuZGVsZXRlKGZpbGUpO1xuICB9XG5cbiAgYXN5bmMgcmVuZGVyKFxuICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICBkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgZmlsZW5hbWU/OiBzdHJpbmcsXG4gICkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZW5naW5lLnJ1blN0cmluZyhjb250ZW50LCBkYXRhLCBmaWxlbmFtZSk7XG4gICAgcmV0dXJuIHJlc3VsdC5jb250ZW50O1xuICB9XG5cbiAgYWRkSGVscGVyKG5hbWU6IHN0cmluZywgZm46IEhlbHBlciwgb3B0aW9uczogSGVscGVyT3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLmFzeW5jKSB7XG4gICAgICB0aGlzLmVuZ2luZS5maWx0ZXJzW25hbWVdID0gYXN5bmMgZnVuY3Rpb24gKC4uLmFyZ3M6IHVua25vd25bXSkge1xuICAgICAgICByZXR1cm4gYXdhaXQgZm4uYXBwbHkoeyBkYXRhOiB0aGlzLmRhdGEgYXMgRGF0YSB9LCBhcmdzKTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW5naW5lLmZpbHRlcnNbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgICAgIHJldHVybiBmbi5hcHBseSh7IGRhdGE6IHRoaXMuZGF0YSBhcyBEYXRhIH0sIGFyZ3MpO1xuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBIHBsdWdpbiB0byB1c2UgdGhlIFZlbnRvIHRlbXBsYXRlIGVuZ2luZVxuICogSW5zdGFsbGVkIGJ5IGRlZmF1bHRcbiAqIEBzZWUgaHR0cHM6Ly9sdW1lLmxhbmQvcGx1Z2lucy92ZW50by9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlbnRvKHVzZXJPcHRpb25zPzogT3B0aW9ucykge1xuICByZXR1cm4gKHNpdGU6IFNpdGUpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gbWVyZ2UoXG4gICAgICB7IC4uLmRlZmF1bHRzLCBpbmNsdWRlczogc2l0ZS5vcHRpb25zLmluY2x1ZGVzIH0sXG4gICAgICB1c2VyT3B0aW9ucyxcbiAgICApO1xuXG4gICAgY29uc3QgdmVudG8gPSBlbmdpbmUoe1xuICAgICAgaW5jbHVkZXM6IG5ldyBMdW1lTG9hZGVyKG5vcm1hbGl6ZVBhdGgob3B0aW9ucy5pbmNsdWRlcyksIHNpdGUuZnMpLFxuICAgICAgLi4ub3B0aW9ucy5vcHRpb25zLFxuICAgIH0pO1xuXG4gICAgdmVudG8udGFncy5wdXNoKGNvbXBUYWcpO1xuXG4gICAgaWYgKG9wdGlvbnMuYXV0b1RyaW0pIHtcbiAgICAgIHZlbnRvLnVzZShhdXRvdHJpbSgpKTtcbiAgICB9XG5cbiAgICBvcHRpb25zLnBsdWdpbnM/LmZvckVhY2goKHBsdWdpbikgPT4gdmVudG8udXNlKHBsdWdpbikpO1xuXG4gICAgc2l0ZS5ob29rcy5hZGRWZW50b1BsdWdpbiA9IChwbHVnaW46IFBsdWdpbikgPT4ge1xuICAgICAgdmVudG8udXNlKHBsdWdpbik7XG4gICAgfTtcbiAgICBzaXRlLmhvb2tzLnZlbnRvID0gKGNhbGxiYWNrKSA9PiBjYWxsYmFjayh2ZW50byk7XG5cbiAgICBjb25zdCB2ZW50b0VuZ2luZSA9IG5ldyBWZW50b0VuZ2luZSh2ZW50bywgb3B0aW9ucy5pbmNsdWRlcyk7XG5cbiAgICAvLyBJZ25vcmUgaW5jbHVkZXMgZm9sZGVyXG4gICAgaWYgKG9wdGlvbnMuaW5jbHVkZXMpIHtcbiAgICAgIHNpdGUuaWdub3JlKG9wdGlvbnMuaW5jbHVkZXMpO1xuICAgIH1cblxuICAgIC8vIExvYWQgdGhlIHBhZ2VzIGFuZCByZWdpc3RlciB0aGUgZW5naW5lXG4gICAgc2l0ZS5sb2FkUGFnZXMob3B0aW9ucy5leHRlbnNpb25zLCB7XG4gICAgICBsb2FkZXIsXG4gICAgICBlbmdpbmU6IHZlbnRvRW5naW5lLFxuICAgICAgcGFnZVN1YkV4dGVuc2lvbjogb3B0aW9ucy5wYWdlU3ViRXh0ZW5zaW9uLFxuICAgIH0pO1xuXG4gICAgc2l0ZS5maWx0ZXIoXCJ2dG9cIiwgZmlsdGVyIGFzIEhlbHBlciwgdHJ1ZSk7XG5cbiAgICBhc3luYyBmdW5jdGlvbiBmaWx0ZXIoc3RyaW5nOiBzdHJpbmcsIGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdmVudG8ucnVuU3RyaW5nKHN0cmluZywge1xuICAgICAgICAuLi5zaXRlLnNjb3BlZERhdGEuZ2V0KFwiL1wiKSxcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdC5jb250ZW50O1xuICAgIH1cbiAgfTtcbn1cblxuLyoqIFZlbnRvIHRhZyB0byByZW5kZXIgYSBjb21wb25lbnQgKi9cbmZ1bmN0aW9uIGNvbXBUYWcoXG4gIGVudjogRW52aXJvbm1lbnQsXG4gIGNvZGU6IHN0cmluZyxcbiAgb3V0cHV0OiBzdHJpbmcsXG4gIHRva2VuczogVG9rZW5bXSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIC8vIENvbXBvbmVudHMgYXJlIGFsd2F5cyBhc3luY1xuICAvLyBzbyBjb252ZXJ0IGF1dG9tYXRpY2FsbHkge3sgY29tcC53aGF0ZXZlciB9fSB0byB7eyBhd2FpdCBjb21wLndoYXRldmVyIH19XG4gIGlmIChjb2RlLnN0YXJ0c1dpdGgoXCJjb21wLlwiKSkge1xuICAgIGNvbnN0IHZhbHVlID0gYGF3YWl0ICR7Y29kZX1gO1xuICAgIGNvbnN0IHZhbCA9IGVudi5jb21waWxlRmlsdGVycyh0b2tlbnMsIHZhbHVlLCBlbnYub3B0aW9ucy5hdXRvZXNjYXBlKTtcbiAgICByZXR1cm4gYCR7b3V0cHV0fSArPSAke3ZhbH07YDtcbiAgfVxuXG4gIGlmICghY29kZS5zdGFydHNXaXRoKFwiY29tcCBcIikpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBtYXRjaCA9IGNvZGUubWF0Y2goXG4gICAgL15jb21wXFxzKyhbXFx3Ll0rKSg/OlxccysoW1xcc1xcU10rW14vXSkpPyg/OlxccysoXFwvKSk/JC8sXG4gICk7XG5cbiAgaWYgKCFtYXRjaCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBjb21wb25lbnQgdGFnOiAke2NvZGV9YCk7XG4gIH1cblxuICBjb25zdCBbXywgY29tcCwgYXJncywgY2xvc2VkXSA9IG1hdGNoO1xuXG4gIGlmIChjbG9zZWQpIHtcbiAgICByZXR1cm4gYCR7b3V0cHV0fSArPSBhd2FpdCBjb21wLiR7Y29tcH0oJHthcmdzIHx8IFwiXCJ9KTtgO1xuICB9XG5cbiAgY29uc3QgY29tcGlsZWQ6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IHRtcE91dHB1dCA9IGBfX2NvbnRlbnRfJHt0b2tlbnMubGVuZ3RofWA7XG4gIGNvbXBpbGVkLnB1c2goXCJ7XCIpO1xuICBjb21waWxlZC5wdXNoKGBsZXQgJHt0bXBPdXRwdXR9ID0gXCJcImApO1xuICBjb21waWxlZC5wdXNoKC4uLmVudi5jb21waWxlVG9rZW5zKHRva2VucywgdG1wT3V0cHV0LCBbXCIvY29tcFwiXSkpO1xuXG4gIGlmICh0b2tlbnMubGVuZ3RoICYmICh0b2tlbnNbMF1bMF0gIT09IFwidGFnXCIgfHwgdG9rZW5zWzBdWzFdICE9PSBcIi9jb21wXCIpKSB7XG4gICAgbG9nLmZhdGFsKGBbdmVudG8gcGx1Z2luXSBNaXNzaW5nIGNsb3NpbmcgdGFnIGZvciBjb21wb25lbnQgXCIke2NvbXB9XCJgKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgY2xvc2luZyB0YWcgZm9yIGNvbXBvbmVudCB0YWc6ICR7Y29kZX1gKTtcbiAgfVxuXG4gIHRva2Vucy5zaGlmdCgpO1xuICBjb21waWxlZC5wdXNoKFxuICAgIGAke291dHB1dH0gKz0gYXdhaXQgY29tcC4ke2NvbXB9KHsuLi4ke1xuICAgICAgYXJncyB8fCBcInt9XCJcbiAgICB9LCBjb250ZW50OiAke3RtcE91dHB1dH19KTtgLFxuICApO1xuICBjb21waWxlZC5wdXNoKFwifVwiKTtcblxuICByZXR1cm4gY29tcGlsZWQuam9pbihcIlxcblwiKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdmVudG87XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxRQUFRLEVBQUUsTUFBTSxRQUFRLG1CQUFtQjtBQUNwRCxTQUFTLEtBQUssUUFBUSxrQkFBa0I7QUFDeEMsT0FBTyxZQUFZLDBCQUEwQjtBQUM3QyxTQUFTLEtBQUssUUFBUSwwQkFBMEI7QUFDaEQsU0FBUyxhQUFhLFFBQVEsd0JBQXdCO0FBQ3RELFNBQVMsR0FBRyxRQUFRLHVCQUF1QjtBQStDM0Msa0JBQWtCO0FBQ2xCLE9BQU8sTUFBTSxXQUFvQjtFQUMvQixZQUFZO0lBQUM7SUFBVTtHQUFPO0VBQzlCLFVBQVU7RUFDVixTQUFTO0lBQ1AsYUFBYTtJQUNiLFNBQVM7SUFDVCxZQUFZO0VBQ2Q7QUFDRixFQUFFO0FBRUYsTUFBTTtFQUNKLEdBQU87RUFDUCxDQUFBLElBQUssQ0FBUztFQUVkLFlBQVksSUFBWSxFQUFFLEVBQU0sQ0FBRTtJQUNoQyxJQUFJLENBQUMsQ0FBQSxJQUFLLEdBQUc7SUFDYixJQUFJLENBQUMsRUFBRSxHQUFHO0VBQ1o7RUFFQSxNQUFNLEtBQUssSUFBWSxFQUFFO0lBQ3ZCLE1BQU0sUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYztJQUVoRCxJQUFJLENBQUMsT0FBTztNQUNWLE1BQU0sSUFBSSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsTUFBTTtJQUMzQztJQUVBLE1BQU0sT0FBTyxNQUFNLE1BQU0sVUFBVSxDQUFDO0lBRXBDLE9BQU87TUFDTCxRQUFRLEtBQUssT0FBTztNQUNwQixNQUFNO0lBQ1I7RUFDRjtFQUVBLFFBQVEsSUFBWSxF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 +// denoCacheMetadata=13921268945035092026,15435290338131790686
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/3a9963ae66c46e85c06330c85a956a4620dd81ff0a8dde98869c7cdd550c631e.js b/vendor/gen/https/deno.land/3a9963ae66c46e85c06330c85a956a4620dd81ff0a8dde98869c7cdd550c631e.js new file mode 100644 index 0000000..2f41dd4 --- /dev/null +++ b/vendor/gen/https/deno.land/3a9963ae66c46e85c06330c85a956a4620dd81ff0a8dde98869c7cdd550c631e.js @@ -0,0 +1,48 @@ +// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. +// Alphabet chars. +export const CHAR_UPPERCASE_A = 65; /* A */ +export const CHAR_LOWERCASE_A = 97; /* a */ +export const CHAR_UPPERCASE_Z = 90; /* Z */ +export const CHAR_LOWERCASE_Z = 122; /* z */ +// Non-alphabetic chars. +export const CHAR_DOT = 46; /* . */ +export const CHAR_FORWARD_SLASH = 47; /* / */ +export const CHAR_BACKWARD_SLASH = 92; /* \ */ +export const CHAR_VERTICAL_LINE = 124; /* | */ +export const CHAR_COLON = 58; /* : */ +export const CHAR_QUESTION_MARK = 63; /* ? */ +export const CHAR_UNDERSCORE = 95; /* _ */ +export const CHAR_LINE_FEED = 10; /* \n */ +export const CHAR_CARRIAGE_RETURN = 13; /* \r */ +export const CHAR_TAB = 9; /* \t */ +export const CHAR_FORM_FEED = 12; /* \f */ +export const CHAR_EXCLAMATION_MARK = 33; /* ! */ +export const CHAR_HASH = 35; /* # */ +export const CHAR_SPACE = 32; /* */ +export const CHAR_NO_BREAK_SPACE = 160; /* \u00A0 */ +export const CHAR_ZERO_WIDTH_NOBREAK_SPACE = 65279; /* \uFEFF */ +export const CHAR_LEFT_SQUARE_BRACKET = 91; /* [ */ +export const CHAR_RIGHT_SQUARE_BRACKET = 93; /* ] */ +export const CHAR_LEFT_ANGLE_BRACKET = 60; /* < */ +export const CHAR_RIGHT_ANGLE_BRACKET = 62; /* > */ +export const CHAR_LEFT_CURLY_BRACKET = 123; /* { */ +export const CHAR_RIGHT_CURLY_BRACKET = 125; /* } */ +export const CHAR_HYPHEN_MINUS = 45; /* - */ +export const CHAR_PLUS = 43; /* + */ +export const CHAR_DOUBLE_QUOTE = 34; /* " */ +export const CHAR_SINGLE_QUOTE = 39; /* ' */ +export const CHAR_PERCENT = 37; /* % */ +export const CHAR_SEMICOLON = 59; /* ; */ +export const CHAR_CIRCUMFLEX_ACCENT = 94; /* ^ */ +export const CHAR_GRAVE_ACCENT = 96; /* ` */ +export const CHAR_AT = 64; /* @ */ +export const CHAR_AMPERSAND = 38; /* & */ +export const CHAR_EQUAL = 61; /* = */ +// Digits +export const CHAR_0 = 48; /* 0 */ +export const CHAR_9 = 57; /* 9 */ +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE3MC4wL3BhdGgvX2NvbnN0YW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDIyIHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IHRoZSBCcm93c2VyaWZ5IGF1dGhvcnMuIE1JVCBMaWNlbnNlLlxuLy8gUG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2Jyb3dzZXJpZnkvcGF0aC1icm93c2VyaWZ5L1xuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vLyBBbHBoYWJldCBjaGFycy5cbmV4cG9ydCBjb25zdCBDSEFSX1VQUEVSQ0FTRV9BID0gNjU7IC8qIEEgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0xPV0VSQ0FTRV9BID0gOTc7IC8qIGEgKi9cbmV4cG9ydCBjb25zdCBDSEFSX1VQUEVSQ0FTRV9aID0gOTA7IC8qIFogKi9cbmV4cG9ydCBjb25zdCBDSEFSX0xPV0VSQ0FTRV9aID0gMTIyOyAvKiB6ICovXG5cbi8vIE5vbi1hbHBoYWJldGljIGNoYXJzLlxuZXhwb3J0IGNvbnN0IENIQVJfRE9UID0gNDY7IC8qIC4gKi9cbmV4cG9ydCBjb25zdCBDSEFSX0ZPUldBUkRfU0xBU0ggPSA0NzsgLyogLyAqL1xuZXhwb3J0IGNvbnN0IENIQVJfQkFDS1dBUkRfU0xBU0ggPSA5MjsgLyogXFwgKi9cbmV4cG9ydCBjb25zdCBDSEFSX1ZFUlRJQ0FMX0xJTkUgPSAxMjQ7IC8qIHwgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0NPTE9OID0gNTg7IC8qIDogKi9cbmV4cG9ydCBjb25zdCBDSEFSX1FVRVNUSU9OX01BUksgPSA2MzsgLyogPyAqL1xuZXhwb3J0IGNvbnN0IENIQVJfVU5ERVJTQ09SRSA9IDk1OyAvKiBfICovXG5leHBvcnQgY29uc3QgQ0hBUl9MSU5FX0ZFRUQgPSAxMDsgLyogXFxuICovXG5leHBvcnQgY29uc3QgQ0hBUl9DQVJSSUFHRV9SRVRVUk4gPSAxMzsgLyogXFxyICovXG5leHBvcnQgY29uc3QgQ0hBUl9UQUIgPSA5OyAvKiBcXHQgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0ZPUk1fRkVFRCA9IDEyOyAvKiBcXGYgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0VYQ0xBTUFUSU9OX01BUksgPSAzMzsgLyogISAqL1xuZXhwb3J0IGNvbnN0IENIQVJfSEFTSCA9IDM1OyAvKiAjICovXG5leHBvcnQgY29uc3QgQ0hBUl9TUEFDRSA9IDMyOyAvKiAgICovXG5leHBvcnQgY29uc3QgQ0hBUl9OT19CUkVBS19TUEFDRSA9IDE2MDsgLyogXFx1MDBBMCAqL1xuZXhwb3J0IGNvbnN0IENIQVJfWkVST19XSURUSF9OT0JSRUFLX1NQQUNFID0gNjUyNzk7IC8qIFxcdUZFRkYgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVQgPSA5MTsgLyogWyAqL1xuZXhwb3J0IGNvbnN0IENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQgPSA5MzsgLyogXSAqL1xuZXhwb3J0IGNvbnN0IENIQVJfTEVGVF9BTkdMRV9CUkFDS0VUID0gNjA7IC8qIDwgKi9cbmV4cG9ydCBjb25zdCBDSEFSX1JJR0hUX0FOR0xFX0JSQUNLRVQgPSA2MjsgLyogPiAqL1xuZXhwb3J0IGNvbnN0IENIQVJfTEVGVF9DVVJMWV9CUkFDS0VUID0gMTIzOyAvKiB7ICovXG5leHBvcnQgY29uc3QgQ0hBUl9SSUdIVF9DVVJMWV9CUkFDS0VUID0gMTI1OyAvKiB9ICovXG5leHBvcnQgY29uc3QgQ0hBUl9IWVBIRU5fTUlOVVMgPSA0NTsgLyogLSAqL1xuZXhwb3J0IGNvbnN0IENIQVJfUExVUyA9IDQzOyAvKiArICovXG5leHBvcnQgY29uc3QgQ0hBUl9ET1VCTEVfUVVPVEUgPSAzNDsgLyogXCIgKi9cbmV4cG9ydCBjb25zdCBDSEFSX1NJTkdMRV9RVU9URSA9IDM5OyAvKiAnICovXG5leHBvcnQgY29uc3QgQ0hBUl9QRVJDRU5UID0gMzc7IC8qICUgKi9cbmV4cG9ydCBjb25zdCBDSEFSX1NFTUlDT0xPTiA9IDU5OyAvKiA7ICovXG5leHBvcnQgY29uc3QgQ0hBUl9DSVJDVU1GTEVYX0FDQ0VOVCA9IDk0OyAvKiBeICovXG5leHBvcnQgY29uc3QgQ0hBUl9HUkFWRV9BQ0NFTlQgPSA5NjsgLyogYCAqL1xuZXhwb3J0IGNvbnN0IENIQVJfQVQgPSA2NDsgLyogQCAqL1xuZXhwb3J0IGNvbnN0IENIQVJfQU1QRVJTQU5EID0gMzg7IC8qICYgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0VRVUFMID0gNjE7IC8qID0gKi9cblxuLy8gRGlnaXRzXG5leHBvcnQgY29uc3QgQ0hBUl8wID0gNDg7IC8qIDAgKi9cbmV4cG9ydCBjb25zdCBDSEFSXzkgPSA1NzsgLyogOSAqL1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxpREFBaUQ7QUFDakQsNkRBQTZEO0FBQzdELHFDQUFxQztBQUVyQyxrQkFBa0I7QUFDbEIsT0FBTyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBSztBQUN6QyxPQUFPLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFLO0FBQ3pDLE9BQU8sTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEtBQUs7QUFDekMsT0FBTyxNQUFNLG1CQUFtQixJQUFJLENBQUMsS0FBSztBQUUxQyx3QkFBd0I7QUFDeEIsT0FBTyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUs7QUFDakMsT0FBTyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBSztBQUMzQyxPQUFPLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFLO0FBQzVDLE9BQU8sTUFBTSxxQkFBcUIsSUFBSSxDQUFDLEtBQUs7QUFDNUMsT0FBTyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQUs7QUFDbkMsT0FBTyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBSztBQUMzQyxPQUFPLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFLO0FBQ3hDLE9BQU8sTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE1BQU07QUFDeEMsT0FBTyxNQUFNLHVCQUF1QixHQUFHLENBQUMsTUFBTTtBQUM5QyxPQUFPLE1BQU0sV0FBVyxFQUFFLENBQUMsTUFBTTtBQUNqQyxPQUFPLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUFNO0FBQ3hDLE9BQU8sTUFBTSx3QkFBd0IsR0FBRyxDQUFDLEtBQUs7QUFDOUMsT0FBTyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQUs7QUFDbEMsT0FBTyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQUs7QUFDbkMsT0FBTyxNQUFNLHNCQUFzQixJQUFJLENBQUMsVUFBVTtBQUNsRCxPQUFPLE1BQU0sZ0NBQWdDLE1BQU0sQ0FBQyxVQUFVO0FBQzlELE9BQU8sTUFBTSwyQkFBMkIsR0FBRyxDQUFDLEtBQUs7QUFDakQsT0FBTyxNQUFNLDRCQUE0QixHQUFHLENBQUMsS0FBSztBQUNsRCxPQUFPLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxLQUFLO0FBQ2hELE9BQU8sTUFBTSwyQkFBMkIsR0FBRyxDQUFDLEtBQUs7QUFDakQsT0FBTyxNQUFNLDBCQUEwQixJQUFJLENBQUMsS0FBSztBQUNqRCxPQUFPLE1BQU0sMkJBQTJCLElBQUksQ0FBQyxLQUFLO0FBQ2xELE9BQU8sTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQUs7QUFDMUMsT0FBTyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQUs7QUFDbEMsT0FBTyxNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBSztBQUMxQyxPQUFPLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFLO0FBQzFDLE9BQU8sTUFBTSxlQUFlLEdBQUcsQ0FBQyxLQUFLO0FBQ3JDLE9BQU8sTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQUs7QUFDdkMsT0FBTyxNQUFNLHlCQUF5QixHQUFHLENBQUMsS0FBSztBQUMvQyxPQUFPLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFLO0FBQzFDLE9BQU8sTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFLO0FBQ2hDLE9BQU8sTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQUs7QUFDdkMsT0FBTyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQUs7QUFFbkMsU0FBUztBQUNULE9BQU8sTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFLO0FBQy9CLE9BQU8sTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFLIn0= +// denoCacheMetadata=2124655160882666205,3294545937714056928
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/3ab709284215897ee1d95fa35ad8801d5d503cd61985bf7b0bd88d6da152c67c.js b/vendor/gen/https/deno.land/3ab709284215897ee1d95fa35ad8801d5d503cd61985bf7b0bd88d6da152c67c.js new file mode 100644 index 0000000..8259770 --- /dev/null +++ b/vendor/gen/https/deno.land/3ab709284215897ee1d95fa35ad8801d5d503cd61985bf7b0bd88d6da152c67c.js @@ -0,0 +1,3 @@ +export * from "https://deno.land/x/cliffy@v0.25.7/mod.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvZGVwcy9jbGlmZnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvbW9kLnRzXCI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0Q0FBNEMifQ== +// denoCacheMetadata=10646329415807899953,10317901753294029608
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/3c1dfb8e021495a9b103085fee11891391a50d60a2630525bc601bc25900adb7.js b/vendor/gen/https/deno.land/3c1dfb8e021495a9b103085fee11891391a50d60a2630525bc601bc25900adb7.js new file mode 100644 index 0000000..8d1d850 --- /dev/null +++ b/vendor/gen/https/deno.land/3c1dfb8e021495a9b103085fee11891391a50d60a2630525bc601bc25900adb7.js @@ -0,0 +1,98 @@ +import { encodeBase64 } from "../deps/base64.ts"; +import { normalizePath } from "../core/utils/path.ts"; +import reloadClient from "./reload_client.js"; +/** Middleware to hot reload changes */ export function reload(options) { + const sockets = new Set(); + const { watcher, debugBar } = options; + // Keep track of the change revision. A watch change + // can be dispatched in-between the browser loading + // the HTML and before it has established a WebSocket + // connection. In this case the browser is out of sync + // and shows an old version of the page. Upon establishing + // a websocket connection we send the latest revision + // and the browser can potentially refresh itself when + // it has an older revision. The initial revision is + // sent to the browser as part of the HTML. + let revision = 0; + let lastAcknowledgedRevision = 0; + watcher.addEventListener("change", (event)=>{ + revision++; + if (!sockets.size) { + return; + } + lastAcknowledgedRevision = revision; + const files = event.files; + const message = JSON.stringify({ + type: "update", + revision, + files: Array.from(files).map((file)=>normalizePath(file)), + data: debugBar + }); + sockets.forEach((socket)=>{ + if (socket.readyState === WebSocket.OPEN) { + socket.send(message); + } + }); + console.log("Changes sent to the browser"); + }); + watcher.start(); + return async (request, next)=>{ + // Is a websocket + if (request.headers.get("upgrade") === "websocket") { + const { socket, response } = Deno.upgradeWebSocket(request); + socket.onopen = ()=>{ + // Browser was in the process of being reloaded. Notify + // the user that the latest changes were sent. + if (lastAcknowledgedRevision < revision) { + lastAcknowledgedRevision = revision; + console.log("Changes sent to the browser"); + } + // Tell the browser about the most recent revision + socket.send(JSON.stringify({ + type: "init", + revision, + data: debugBar + })); + sockets.add(socket); + }; + socket.onclose = ()=>sockets.delete(socket); + socket.onerror = (e)=>console.log("Socket errored", e); + return response; + } + // It's a regular request + const response = await next(request); + if (!response.body) { + return response; + } + // Insert live-reload script in the body + if (response.headers.get("content-type")?.includes("html")) { + const reader = response.body.getReader(); + let body = ""; + let result = await reader.read(); + const decoder = new TextDecoder(); + while(!result.done){ + body += decoder.decode(result.value); + result = await reader.read(); + } + const source = `${reloadClient}; liveReload(${revision}, "${options.basepath}", ${response.status}, "${debugBar?.url || ""}");`; + const integrity = await computeSourceIntegrity(source); + // Add live reload script and pass initial revision + body += `<script type="module" id="lume-live-reload" integrity="${integrity}">${source};</script>`; + const { status, statusText, headers } = response; + return new Response(body, { + status, + statusText, + headers + }); + } + return response; + }; +} +async function computeSourceIntegrity(source) { + const bytes = new TextEncoder().encode(source); + const hash = await crypto.subtle.digest("SHA-384", bytes); + return `sha384-${encodeBase64(hash)}`; +} +export default reload; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvbWlkZGxld2FyZXMvcmVsb2FkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVuY29kZUJhc2U2NCB9IGZyb20gXCIuLi9kZXBzL2Jhc2U2NC50c1wiO1xuXG5pbXBvcnQgeyBub3JtYWxpemVQYXRoIH0gZnJvbSBcIi4uL2NvcmUvdXRpbHMvcGF0aC50c1wiO1xuaW1wb3J0IHJlbG9hZENsaWVudCBmcm9tIFwiLi9yZWxvYWRfY2xpZW50LmpzXCI7XG5cbmltcG9ydCB0eXBlIHsgTWlkZGxld2FyZSB9IGZyb20gXCIuLi9jb3JlL3NlcnZlci50c1wiO1xuaW1wb3J0IHR5cGUgeyBXYXRjaGVyIH0gZnJvbSBcIi4uL2NvcmUvd2F0Y2hlci50c1wiO1xuaW1wb3J0IHR5cGUgRGVidWdCYXIgZnJvbSBcIi4uL2NvcmUvZGVidWdiYXIudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcbiAgLyoqIFRoZSB3YXRjaGVyIGluc3RhbmNlIHRvIHVzZSAqL1xuICB3YXRjaGVyOiBXYXRjaGVyO1xuICAvKiogVGhlIGJhc2UgcGF0aCBvZiB0aGUgc2l0ZS4gSXQncyByZXF1aXJlZCBieSB0aGUgcmVsb2FkIHNjcmlwdCAqL1xuICBiYXNlcGF0aDogc3RyaW5nO1xuICAvKiogVGhlIGRlYnVnIGJhciBpbnN0YW5jZSB0byB1c2UgKi9cbiAgZGVidWdCYXI/OiBEZWJ1Z0Jhcjtcbn1cblxuLyoqIE1pZGRsZXdhcmUgdG8gaG90IHJlbG9hZCBjaGFuZ2VzICovXG5leHBvcnQgZnVuY3Rpb24gcmVsb2FkKG9wdGlvbnM6IE9wdGlvbnMpOiBNaWRkbGV3YXJlIHtcbiAgY29uc3Qgc29ja2V0cyA9IG5ldyBTZXQ8V2ViU29ja2V0PigpO1xuICBjb25zdCB7IHdhdGNoZXIsIGRlYnVnQmFyIH0gPSBvcHRpb25zO1xuXG4gIC8vIEtlZXAgdHJhY2sgb2YgdGhlIGNoYW5nZSByZXZpc2lvbi4gQSB3YXRjaCBjaGFuZ2VcbiAgLy8gY2FuIGJlIGRpc3BhdGNoZWQgaW4tYmV0d2VlbiB0aGUgYnJvd3NlciBsb2FkaW5nXG4gIC8vIHRoZSBIVE1MIGFuZCBiZWZvcmUgaXQgaGFzIGVzdGFibGlzaGVkIGEgV2ViU29ja2V0XG4gIC8vIGNvbm5lY3Rpb24uIEluIHRoaXMgY2FzZSB0aGUgYnJvd3NlciBpcyBvdXQgb2Ygc3luY1xuICAvLyBhbmQgc2hvd3MgYW4gb2xkIHZlcnNpb24gb2YgdGhlIHBhZ2UuIFVwb24gZXN0YWJsaXNoaW5nXG4gIC8vIGEgd2Vic29ja2V0IGNvbm5lY3Rpb24gd2Ugc2VuZCB0aGUgbGF0ZXN0IHJldmlzaW9uXG4gIC8vIGFuZCB0aGUgYnJvd3NlciBjYW4gcG90ZW50aWFsbHkgcmVmcmVzaCBpdHNlbGYgd2hlblxuICAvLyBpdCBoYXMgYW4gb2xkZXIgcmV2aXNpb24uIFRoZSBpbml0aWFsIHJldmlzaW9uIGlzXG4gIC8vIHNlbnQgdG8gdGhlIGJyb3dzZXIgYXMgcGFydCBvZiB0aGUgSFRNTC5cbiAgbGV0IHJldmlzaW9uID0gMDtcbiAgbGV0IGxhc3RBY2tub3dsZWRnZWRSZXZpc2lvbiA9IDA7XG5cbiAgd2F0Y2hlci5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIChldmVudCkgPT4ge1xuICAgIHJldmlzaW9uKys7XG5cbiAgICBpZiAoIXNvY2tldHMuc2l6ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxhc3RBY2tub3dsZWRnZWRSZXZpc2lvbiA9IHJldmlzaW9uO1xuXG4gICAgY29uc3QgZmlsZXMgPSBldmVudC5maWxlcyE7XG4gICAgY29uc3QgbWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHR5cGU6IFwidXBkYXRlXCIsXG4gICAgICByZXZpc2lvbixcbiAgICAgIGZpbGVzOiBBcnJheS5mcm9tKGZpbGVzKS5tYXAoKGZpbGUpID0+IG5vcm1hbGl6ZVBhdGgoZmlsZSkpLFxuICAgICAgZGF0YTogZGVidWdCYXIsXG4gICAgfSk7XG5cbiAgICBzb2NrZXRzLmZvckVhY2goKHNvY2tldCkgPT4ge1xuICAgICAgaWYgKHNvY2tldC5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgICBzb2NrZXQuc2VuZChtZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnNvbGUubG9nKFwiQ2hhbmdlcyBzZW50IHRvIHRoZSBicm93c2VyXCIpO1xuICB9KTtcblxuICB3YXRjaGVyLnN0YXJ0KCk7XG5cbiAgcmV0dXJuIGFzeW5jIChyZXF1ZXN0LCBuZXh0KSA9PiB7XG4gICAgLy8gSXMgYSB3ZWJzb2NrZXRcbiAgICBpZiAocmVxdWVzdC5oZWFkZXJzLmdldChcInVwZ3JhZGVcIikgPT09IFwid2Vic29ja2V0XCIpIHtcbiAgICAgIGNvbnN0IHsgc29ja2V0LCByZXNwb25zZSB9ID0gRGVuby51cGdyYWRlV2ViU29ja2V0KHJlcXVlc3QpO1xuXG4gICAgICBzb2NrZXQub25vcGVuID0gKCkgPT4ge1xuICAgICAgICAvLyBCcm93c2VyIHdhcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyByZWxvYWRlZC4gTm90aWZ5XG4gICAgICAgIC8vIHRoZSB1c2VyIHRoYXQgdGhlIGxhdGVzdCBjaGFuZ2VzIHdlcmUgc2VudC5cbiAgICAgICAgaWYgKGxhc3RBY2tub3dsZWRnZWRSZXZpc2lvbiA8IHJldmlzaW9uKSB7XG4gICAgICAgICAgbGFzdEFja25vd2xlZGdlZFJldmlzaW9uID0gcmV2aXNpb247XG4gICAgICAgICAgY29uc29sZS5sb2coXCJDaGFuZ2VzIHNlbnQgdG8gdGhlIGJyb3dzZXJcIik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUZWxsIHRoZSBicm93c2VyIGFib3V0IHRoZSBtb3N0IHJlY2VudCByZXZpc2lvblxuICAgICAgICBzb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeSh7IHR5cGU6IFwiaW5pdFwiLCByZXZpc2lvbiwgZGF0YTogZGVidWdCYXIgfSkpO1xuXG4gICAgICAgIHNvY2tldHMuYWRkKHNvY2tldCk7XG4gICAgICB9O1xuICAgICAgc29ja2V0Lm9uY2xvc2UgPSAoKSA9PiBzb2NrZXRzLmRlbGV0ZShzb2NrZXQpO1xuICAgICAgc29ja2V0Lm9uZXJyb3IgPSAoZSkgPT4gY29uc29sZS5sb2coXCJTb2NrZXQgZXJyb3JlZFwiLCBlKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIC8vIEl0J3MgYSByZWd1bGFyIHJlcXVlc3RcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG5leHQocmVxdWVzdCk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLmJvZHkpIHtcbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG5cbiAgICAvLyBJbnNlcnQgbGl2ZS1yZWxvYWQgc2NyaXB0IGluIHRoZSBib2R5XG4gICAgaWYgKHJlc3BvbnNlLmhlYWRlcnMuZ2V0KFwiY29udGVudC10eXBlXCIpPy5pbmNsdWRlcyhcImh0bWxcIikpIHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHkuZ2V0UmVhZGVyKCk7XG5cbiAgICAgIGxldCBib2R5ID0gXCJcIjtcbiAgICAgIGxldCByZXN1bHQgPSBhd2FpdCByZWFkZXIucmVhZCgpO1xuICAgICAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpO1xuXG4gICAgICB3aGlsZSAoIXJlc3VsdC5kb25lKSB7XG4gICAgICAgIGJvZHkgKz0gZGVjb2Rlci5kZWNvZGUocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc291cmNlID1cbiAgICAgICAgYCR7cmVsb2FkQ2xpZW50fTsgbGl2ZVJlbG9hZCgke3JldmlzaW9ufSwgXCIke29wdGlvbnMuYmFzZXBhdGh9XCIsICR7cmVzcG9uc2Uuc3RhdHVzfSwgXCIke1xuICAgICAgICAgIGRlYnVnQmFyPy51cmwgfHwgXCJcIlxuICAgICAgICB9XCIpO2A7XG4gICAgICBjb25zdCBpbnRlZ3JpdHkgPSBhd2FpdCBjb21wdXRlU291cmNlSW50ZWdyaXR5KHNvdXJjZSk7XG5cbiAgICAgIC8vIEFkZCBsaXZlIHJlbG9hZCBzY3JpcHQgYW5kIHBhc3MgaW5pdGlhbCByZXZpc2lvblxuICAgICAgYm9keSArPVxuICAgICAgICBgPHNjcmlwdCB0eXBlPVwibW9kdWxlXCIgaWQ9XCJsdW1lLWxpdmUtcmVsb2FkXCIgaW50ZWdyaXR5PVwiJHtpbnRlZ3JpdHl9XCI+JHtzb3VyY2V9Ozwvc2NyaXB0PmA7XG5cbiAgICAgIGNvbnN0IHsgc3RhdHVzLCBzdGF0dXNUZXh0LCBoZWFkZXJzIH0gPSByZXNwb25zZTtcblxuICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZShib2R5LCB7IHN0YXR1cywgc3RhdHVzVGV4dCwgaGVhZGVycyB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVTb3VyY2VJbnRlZ3JpdHkoc291cmNlOiBzdHJpbmcpIHtcbiAgY29uc3QgYnl0ZXMgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoc291cmNlKTtcbiAgY29uc3QgaGFzaCA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KFwiU0hBLTM4NFwiLCBieXRlcyk7XG4gIHJldHVybiBgc2hhMzg0LSR7ZW5jb2RlQmFzZTY0KGhhc2gpfWA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHJlbG9hZDtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLFlBQVksUUFBUSxvQkFBb0I7QUFFakQsU0FBUyxhQUFhLFFBQVEsd0JBQXdCO0FBQ3RELE9BQU8sa0JBQWtCLHFCQUFxQjtBQWU5QyxxQ0FBcUMsR0FDckMsT0FBTyxTQUFTLE9BQU8sT0FBZ0I7RUFDckMsTUFBTSxVQUFVLElBQUk7RUFDcEIsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRztFQUU5QixvREFBb0Q7RUFDcEQsbURBQW1EO0VBQ25ELHFEQUFx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 +// denoCacheMetadata=15168686068604235879,4151106969391383738
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/3c52f7056d9a3596f53495fdf8505e3bca3620b0696bdaf47234f131622a39c5.js b/vendor/gen/https/deno.land/3c52f7056d9a3596f53495fdf8505e3bca3620b0696bdaf47234f131622a39c5.js new file mode 100644 index 0000000..e2bcd37 --- /dev/null +++ b/vendor/gen/https/deno.land/3c52f7056d9a3596f53495fdf8505e3bca3620b0696bdaf47234f131622a39c5.js @@ -0,0 +1,221 @@ +import { astring, meriyah, walker } from "../deps.ts"; +import { TransformError } from "./errors.ts"; +// List of identifiers that are in globalThis +// but should be accessed as templateState.identifier +const INCLUDE_GLOBAL = [ + "name" +]; +// List of identifiers that should be ignored +// when transforming the code +const DEFAULT_EXCLUDES = [ + "globalThis", + "self", + "this", + "undefined", + "null" +]; +// Tracks the scope of the code +// and the variables that should be ignored +class ScopeTracker { + scopes = [ + { + globalScope: 0, + stack: [] + } + ]; + // The index of the global/function scope + globalScope = 0; + includes(val) { + for(let i = this.scopes.length - 1; i >= 0; i--){ + if (this.scopes[i].stack.includes(val)) { + return true; + } + } + return false; + } + pushScope(global) { + if (global) { + this.globalScope = this.scopes.length; + } + const newScope = { + globalScope: this.globalScope, + stack: [] + }; + this.scopes.push(newScope); + } + popScope() { + this.scopes.pop(); + this.globalScope = this.scopes[this.scopes.length - 1].globalScope; + } + pushBinding(val, global) { + if (this.scopes.length === 0) { + this.scopes.push({ + globalScope: this.globalScope, + stack: [] + }); + } + if (global) { + this.scopes[this.globalScope].stack.push(val); + } else { + this.scopes[this.scopes.length - 1].stack.push(val); + } + } + pushPatternBinding(pattern, global) { + switch(pattern.type){ + case "Identifier": + this.pushBinding(pattern.name, global); + break; + case "RestElement": + this.pushPatternBinding(pattern.argument, global); + break; + case "ArrayPattern": + for (const element of pattern.elements){ + if (element) { + this.pushPatternBinding(element, global); + } + } + break; + case "ObjectPattern": + for (const prop of pattern.properties){ + if (prop.type === "RestElement") { + this.pushPatternBinding(prop.argument, global); + } else { + this.pushPatternBinding(prop.value, global); + } + } + break; + case "AssignmentPattern": + this.pushPatternBinding(pattern.left, global); + break; + } + } + pushPatternBindings(patterns, global) { + for (const pattern of patterns){ + this.pushPatternBinding(pattern, global); + } + } +} +export function transformTemplateCode(code, templateState) { + if (!code.trim()) { + return code; + } + let parsed; + try { + parsed = meriyah.parseScript(code, { + module: true + }); + } catch (error) { + const { message, start, loc } = error; + // Use information from `meriyah` to annotate the part of + // the compiled template function that triggered the ParseError + const annotation = `\u001B[2m${loc.start.line}\u001B[0m ` + code.split("\n")[loc.start.line - 1] + `\n${" ".repeat(loc.start.column)}\u001B[31m^\u001B[39m`; + // Grab the last instance of Vento's `__pos` variable before the + // error was thrown. Pass this back to Vento to + // tie this error with problmatic template code + const matches = [ + ...code.slice(0, start).matchAll(/__pos = (\d+);/g) + ]; + const position = Number(matches.at(-1)?.[1]); + throw new TransformError(`[meriyah] ${message} while parsing compiled template function:\n\n${annotation}`, position); + } + const tracker = new ScopeTracker(); + const exclude = [ + templateState, + ...DEFAULT_EXCLUDES + ]; + if (parsed.type !== "Program") { + throw new TransformError("[meriyah] Expected a program"); + } + if (parsed.body.length === 0) { + throw new TransformError("[meriyah] Empty program"); + } + // Transforms an identifier to a MemberExpression + // if it's not in the exclude list + // + // Example: + // Transforms {{ name }} to {{ id.name }} + function transformIdentifier(id) { + if (!INCLUDE_GLOBAL.includes(id.name) && globalThis[id.name] !== undefined || exclude.includes(id.name) || tracker.includes(id.name) || id.name.startsWith("__")) { + return id; + } + return { + type: "MemberExpression", + object: { + type: "Identifier", + name: templateState + }, + optional: false, + computed: false, + property: id + }; + } + walker.walk(parsed, { + enter (node) { + switch(node.type){ + // Track variable declarations + case "VariableDeclaration": + // "var" declarations are scoped to the function/global scope. + tracker.pushPatternBindings(node.declarations.map((d)=>d.id), node.kind === "var"); + break; + // Track function declarations, and + // function parameters. + // Also track the scope. + case "FunctionDeclaration": + case "FunctionExpression": + if (node.id) { + tracker.pushBinding(node.id.name); + } + tracker.pushScope(true); + tracker.pushPatternBindings(node.params); + break; + case "ArrowFunctionExpression": + tracker.pushScope(); + tracker.pushPatternBindings(node.params); + break; + case "Property": + // Value is implicitly the same as the key if it's just an + // identifier, so we only transform the value (not the key) + if (node.shorthand && node.value.type === "Identifier") { + this.replace({ + type: "Property", + key: node.key, + value: transformIdentifier(node.value), + kind: "init", + computed: false, + method: false, + shorthand: false + }); + } + break; + } + }, + leave (node, parent) { + switch(node.type){ + // Pop the scope when leaving a function + case "FunctionDeclaration": + case "FunctionExpression": + case "ArrowFunctionExpression": + tracker.popScope(); + break; + case "Identifier": + // Don't transform identifiers that aren't at the start of a MemberExpression + // ie. don't transform `bar` or `baz` in `foo.bar.baz` + // MemberExpression nodes can also take on a computed property + // which means it is an array-like access, so we do transform those. + if (parent?.type === "MemberExpression" && parent.property === node && parent.computed === false) { + return; + } + // Don't transform identifiers that are keys in an object + if (parent?.type === "Property" && parent.key === node) { + return; + } + this.replace(transformIdentifier(node)); + break; + } + } + }); + const generated = astring.generate(parsed); + return generated; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9zcmMvdHJhbnNmb3JtZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXN0cmluZywgRVNUcmVlLCBtZXJpeWFoLCB3YWxrZXIgfSBmcm9tIFwiLi4vZGVwcy50c1wiO1xuaW1wb3J0IHsgVHJhbnNmb3JtRXJyb3IgfSBmcm9tIFwiLi9lcnJvcnMudHNcIjtcblxuLy8gRGVjbGFyZSBtZXJpeWFoJ3MgUGFyc2VFcnJvciBzaW5jZSBpdCBpc24ndCBleHBvcnRlZFxuaW50ZXJmYWNlIFBhcnNlRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHN0YXJ0OiBudW1iZXI7XG4gIGVuZDogbnVtYmVyO1xuICByYW5nZTogW251bWJlciwgbnVtYmVyXTtcbiAgbG9jOiBSZWNvcmQ8XCJzdGFydFwiIHwgXCJlbmRcIiwgUmVjb3JkPFwibGluZVwiIHwgXCJjb2x1bW5cIiwgbnVtYmVyPj47XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG59XG5cbi8vIExpc3Qgb2YgaWRlbnRpZmllcnMgdGhhdCBhcmUgaW4gZ2xvYmFsVGhpc1xuLy8gYnV0IHNob3VsZCBiZSBhY2Nlc3NlZCBhcyB0ZW1wbGF0ZVN0YXRlLmlkZW50aWZpZXJcbmNvbnN0IElOQ0xVREVfR0xPQkFMID0gW1xuICBcIm5hbWVcIixcbl07XG5cbi8vIExpc3Qgb2YgaWRlbnRpZmllcnMgdGhhdCBzaG91bGQgYmUgaWdub3JlZFxuLy8gd2hlbiB0cmFuc2Zvcm1pbmcgdGhlIGNvZGVcbmNvbnN0IERFRkFVTFRfRVhDTFVERVMgPSBbXG4gIFwiZ2xvYmFsVGhpc1wiLFxuICBcInNlbGZcIixcbiAgXCJ0aGlzXCIsXG4gIFwidW5kZWZpbmVkXCIsXG4gIFwibnVsbFwiLFxuXTtcblxudHlwZSBTY29wZSA9IHtcbiAgZ2xvYmFsU2NvcGU6IG51bWJlcjtcbiAgc3RhY2s6IHN0cmluZ1tdO1xufTtcblxuLy8gVHJhY2tzIHRoZSBzY29wZSBvZiB0aGUgY29kZVxuLy8gYW5kIHRoZSB2YXJpYWJsZXMgdGhhdCBzaG91bGQgYmUgaWdub3JlZFxuY2xhc3MgU2NvcGVUcmFja2VyIHtcbiAgcHJpdmF0ZSBzY29wZXM6IFNjb3BlW10gPSBbeyBnbG9iYWxTY29wZTogMCwgc3RhY2s6IFtdIH1dO1xuXG4gIC8vIFRoZSBpbmRleCBvZiB0aGUgZ2xvYmFsL2Z1bmN0aW9uIHNjb3BlXG4gIHByaXZhdGUgZ2xvYmFsU2NvcGUgPSAwO1xuXG4gIGluY2x1ZGVzKHZhbDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgZm9yIChsZXQgaSA9IHRoaXMuc2NvcGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAodGhpcy5zY29wZXNbaV0uc3RhY2suaW5jbHVkZXModmFsKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdXNoU2NvcGUoZ2xvYmFsPzogYm9vbGVhbikge1xuICAgIGlmIChnbG9iYWwpIHtcbiAgICAgIHRoaXMuZ2xvYmFsU2NvcGUgPSB0aGlzLnNjb3Blcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3U2NvcGU6IFNjb3BlID0ge1xuICAgICAgZ2xvYmFsU2NvcGU6IHRoaXMuZ2xvYmFsU2NvcGUsXG4gICAgICBzdGFjazogW10sXG4gICAgfTtcblxuICAgIHRoaXMuc2NvcGVzLnB1c2gobmV3U2NvcGUpO1xuICB9XG5cbiAgcG9wU2NvcGUoKSB7XG4gICAgdGhpcy5zY29wZXMucG9wKCk7XG4gICAgdGhpcy5nbG9iYWxTY29wZSA9IHRoaXMuc2NvcGVzW3RoaXMuc2NvcGVzLmxlbmd0aCAtIDFdLmdsb2JhbFNjb3BlO1xuICB9XG5cbiAgcHVzaEJpbmRpbmcodmFsOiBzdHJpbmcsIGdsb2JhbD86IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5zY29wZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnNjb3Blcy5wdXNoKHsgZ2xvYmFsU2NvcGU6IHRoaXMuZ2xvYmFsU2NvcGUsIHN0YWNrOiBbXSB9KTtcbiAgICB9XG5cbiAgICBpZiAoZ2xvYmFsKSB7XG4gICAgICB0aGlzLnNjb3Blc1t0aGlzLmdsb2JhbFNjb3BlXS5zdGFjay5wdXNoKHZhbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2NvcGVzW3RoaXMuc2NvcGVzLmxlbmd0aCAtIDFdLnN0YWNrLnB1c2godmFsKTtcbiAgICB9XG4gIH1cblxuICBwdXNoUGF0dGVybkJpbmRpbmcocGF0dGVybjogRVNUcmVlLlBhdHRlcm4sIGdsb2JhbD86IGJvb2xlYW4pIHtcbiAgICBzd2l0Y2ggKHBhdHRlcm4udHlwZSkge1xuICAgICAgY2FzZSBcIklkZW50aWZpZXJcIjpcbiAgICAgICAgdGhpcy5wdXNoQmluZGluZyhwYXR0ZXJuLm5hbWUsIGdsb2JhbCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiUmVzdEVsZW1lbnRcIjpcbiAgICAgICAgdGhpcy5wdXNoUGF0dGVybkJpbmRpbmcocGF0dGVybi5hcmd1bWVudCwgZ2xvYmFsKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJBcnJheVBhdHRlcm5cIjpcbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHBhdHRlcm4uZWxlbWVudHMpIHtcbiAgICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5wdXNoUGF0dGVybkJpbmRpbmcoZWxlbWVudCwgZ2xvYmFsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJPYmplY3RQYXR0ZXJuXCI6XG4gICAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBwYXR0ZXJuLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICBpZiAocHJvcC50eXBlID09PSBcIlJlc3RFbGVtZW50XCIpIHtcbiAgICAgICAgICAgIHRoaXMucHVzaFBhdHRlcm5CaW5kaW5nKHByb3AuYXJndW1lbnQsIGdsb2JhbCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHVzaFBhdHRlcm5CaW5kaW5nKHByb3AudmFsdWUsIGdsb2JhbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiQXNzaWdubWVudFBhdHRlcm5cIjpcbiAgICAgICAgdGhpcy5wdXNoUGF0dGVybkJpbmRpbmcocGF0dGVybi5sZWZ0LCBnbG9iYWwpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwdXNoUGF0dGVybkJpbmRpbmdzKHBhdHRlcm5zOiBFU1RyZWUuUGF0dGVybltdLCBnbG9iYWw/OiBib29sZWFuKSB7XG4gICAgZm9yIChjb25zdCBwYXR0ZXJuIG9mIHBhdHRlcm5zKSB7XG4gICAgICB0aGlzLnB1c2hQYXR0ZXJuQmluZGluZyhwYXR0ZXJuLCBnbG9iYWwpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtVGVtcGxhdGVDb2RlKFxuICBjb2RlOiBzdHJpbmcsXG4gIHRlbXBsYXRlU3RhdGU6IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGlmICghY29kZS50cmltKCkpIHtcbiAgICByZXR1cm4gY29kZTtcbiAgfVxuXG4gIGxldCBwYXJzZWQ7XG4gIHRyeSB7XG4gICAgcGFyc2VkID0gbWVyaXlhaC5wYXJzZVNjcmlwdChjb2RlLCB7IG1vZHVsZTogdHJ1ZSB9KSBhcyBFU1RyZWUuUHJvZ3JhbTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zdCB7IG1lc3NhZ2UsIHN0YXJ0LCBsb2MgfSA9IGVycm9yIGFzIFBhcnNlRXJyb3I7XG5cbiAgICAvLyBVc2UgaW5mb3JtYXRpb24gZnJvbSBgbWVyaXlhaGAgdG8gYW5ub3RhdGUgdGhlIHBhcnQgb2ZcbiAgICAvLyB0aGUgY29tcGlsZWQgdGVtcGxhdGUgZnVuY3Rpb24gdGhhdCB0cmlnZ2VyZWQgdGhlIFBhcnNlRXJyb3JcbiAgICBjb25zdCBhbm5vdGF0aW9uID0gYFxcdTAwMUJbMm0ke2xvYy5zdGFydC5saW5lfVxcdTAwMUJbMG0gYCArXG4gICAgICBjb2RlLnNwbGl0KFwiXFxuXCIpW2xvYy5zdGFydC5saW5lIC0gMV0gK1xuICAgICAgYFxcbiR7XCIgXCIucmVwZWF0KGxvYy5zdGFydC5jb2x1bW4pfVxcdTAwMUJbMzFtXlxcdTAwMUJbMzltYDtcblxuICAgIC8vIEdyYWIgdGhlIGxhc3QgaW5zdGFuY2Ugb2YgVmVudG8ncyBgX19wb3NgIHZhcmlhYmxlIGJlZm9yZSB0aGVcbiAgICAvLyBlcnJvciB3YXMgdGhyb3duLiBQYXNzIHRoaXMgYmFjayB0byBWZW50byB0b1xuICAgIC8vIHRpZSB0aGlzIGVycm9yIHdpdGggcHJvYmxtYXRpYyB0ZW1wbGF0ZSBjb2RlXG4gICAgY29uc3QgbWF0Y2hlcyA9IFsuLi5jb2RlLnNsaWNlKDAsIHN0YXJ0KS5tYXRjaEFsbCgvX19wb3MgPSAoXFxkKyk7L2cpXTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IE51bWJlcihtYXRjaGVzLmF0KC0xKT8uWzFdKTtcblxuICAgIHRocm93IG5ldyBUcmFuc2Zvcm1FcnJvcihcbiAgICAgIGBbbWVyaXlhaF0gJHttZXNzYWdlfSB3aGlsZSBwYXJzaW5nIGNvbXBpbGVkIHRlbXBsYXRlIGZ1bmN0aW9uOlxcblxcbiR7YW5ub3RhdGlvbn1gLFxuICAgICAgcG9zaXRpb24sXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHRyYWNrZXIgPSBuZXcgU2NvcGVUcmFja2VyKCk7XG5cbiAgY29uc3QgZXhjbHVkZSA9IFtcbiAgICB0ZW1wbGF0ZVN0YXRlLFxuICAgIC4uLkRFRkFVTFRfRVhDTFVERVMsXG4gIF07XG5cbiAgaWYgKHBhcnNlZC50eXBlICE9PSBcIlByb2dyYW1cIikge1xuICAgIHRocm93IG5ldyBUcmFuc2Zvcm1FcnJvcihcIlttZXJpeWFoXSBFeHBlY3RlZCBhIHByb2dyYW1cIik7XG4gIH1cblxuICBpZiAocGFyc2VkLmJvZHkubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IFRyYW5zZm9ybUVycm9yKFwiW21lcml5YWhdIEVtcHR5IHByb2dyYW1cIik7XG4gIH1cblxuICAvLyBUcmFuc2Zvcm1zIGFuIGlkZW50aWZpZXIgdG8gYSBNZW1iZXJFeHByZXNzaW9uXG4gIC8vIGlmIGl0J3Mgbm90IGluIHRoZSBleGNsdWRlIGxpc3RcbiAgLy9cbiAgLy8gRXhhbXBsZTpcbiAgLy8gVHJhbnNmb3JtcyB7eyBuYW1lIH19IHRvIHt7IGlkLm5hbWUgfX1cbiAgZnVuY3Rpb24gdHJhbnNmb3JtSWRlbnRpZmllcihcbiAgICBpZDogRVNUcmVlLklkZW50aWZpZXIsXG4gICk6IEVTVHJlZS5NZW1iZXJFeHByZXNzaW9uIHwgRVNUcmVlLklkZW50aWZpZXIge1xuICAgIGlmIChcbiAgICAgICghSU5DTFVERV9HTE9CQUwuaW5jbHVkZXMoaWQubmFtZSkgJiZcbiAgICAgICAgZ2xvYmFsVGhpc1tpZC5uYW1lIGFzIGtleW9mIHR5cGVvZiBnbG9iYWxUaGlzXSAhPT0gdW5kZWZpbmVkKSB8fFxuICAgICAgZXhjbHVkZS5pbmNsdWRlcyhpZC5uYW1lKSB8fFxuICAgICAgdHJhY2tlci5pbmNsdWRlcyhpZC5uYW1lKSB8fFxuICAgICAgaWQubmFtZS5zdGFydHNXaXRoKFwiX19cIilcbiAgICApIHtcbiAgICAgIHJldHVybiBpZDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJNZW1iZXJFeHByZXNzaW9uXCIsXG4gICAgICBvYmplY3Q6IHtcbiAgICAgICAgdHlwZTogXCJJZGVudGlmaWVyXCIsXG4gICAgICAgIG5hbWU6IHRlbXBsYXRlU3RhdGUsXG4gICAgICB9LFxuICAgICAgb3B0aW9uYWw6IGZhbHNlLFxuICAgICAgY29tcHV0ZWQ6IGZhbHNlLFxuICAgICAgcHJvcGVydHk6IGlkLFxuICAgIH07XG4gIH1cblxuICB3YWxrZXIud2FsayhwYXJzZWQsIHtcbiAgICBlbnRlcihub2RlOiBFU1RyZWUuTm9kZSkge1xuICAgICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgLy8gVHJhY2sgdmFyaWFibGUgZGVjbGFyYXRpb25zXG4gICAgICAgIGNhc2UgXCJWYXJpYWJsZURlY2xhcmF0aW9uXCI6XG4gICAgICAgICAgLy8gXCJ2YXJcIiBkZWNsYXJhdGlvbnMgYXJlIHNjb3BlZCB0byB0aGUgZnVuY3Rpb24vZ2xvYmFsIHNjb3BlLlxuICAgICAgICAgIHRyYWNrZXIucHVzaFBhdHRlcm5CaW5kaW5ncyhcbiAgICAgICAgICAgIG5vZGUuZGVjbGFyYXRpb25zLm1hcCgoZCkgPT4gZC5pZCksXG4gICAgICAgICAgICBub2RlLmtpbmQgPT09IFwidmFyXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICAvLyBUcmFjayBmdW5jdGlvbiBkZWNsYXJhdGlvbnMsIGFuZFxuICAgICAgICAvLyBmdW5jdGlvbiBwYXJhbWV0ZXJzLlxuICAgICAgICAvLyBBbHNvIHRyYWNrIHRoZSBzY29wZS5cbiAgICAgICAgY2FzZSBcIkZ1bmN0aW9uRGVjbGFyYXRpb25cIjpcbiAgICAgICAgY2FzZSBcIkZ1bmN0aW9uRXhwcmVzc2lvblwiOlxuICAgICAgICAgIGlmIChub2RlLmlkKSB7XG4gICAgICAgICAgICB0cmFja2VyLnB1c2hCaW5kaW5nKG5vZGUuaWQubmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRyYWNrZXIucHVzaFNjb3BlKHRydWUpO1xuICAgICAgICAgIHRyYWNrZXIucHVzaFBhdHRlcm5CaW5kaW5ncyhub2RlLnBhcmFtcyk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBcIkFycm93RnVuY3Rpb25FeHByZXNzaW9uXCI6XG4gICAgICAgICAgdHJhY2tlci5wdXNoU2NvcGUoKTtcbiAgICAgICAgICB0cmFja2VyLnB1c2hQYXR0ZXJuQmluZGluZ3Mobm9kZS5wYXJhbXMpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgXCJQcm9wZXJ0eVwiOlxuICAgICAgICAgIC8vIFZhbHVlIGlzIGltcGxpY2l0bHkgdGhlIHNhbWUgYXMgdGhlIGtleSBpZiBpdCdzIGp1c3QgYW5cbiAgICAgICAgICAvLyBpZGVudGlmaWVyLCBzbyB3ZSBvbmx5IHRyYW5zZm9ybSB0aGUgdmFsdWUgKG5vdCB0aGUga2V5KVxuICAgICAgICAgIGlmIChub2RlLnNob3J0aGFuZCAmJiBub2RlLnZhbHVlLnR5cGUgPT09IFwiSWRlbnRpZmllclwiKSB7XG4gICAgICAgICAgICB0aGlzLnJlcGxhY2Uoe1xuICAgICAgICAgICAgICB0eXBlOiBcIlByb3BlcnR5XCIsXG4gICAgICAgICAgICAgIGtleTogbm9kZS5rZXksXG4gICAgICAgICAgICAgIHZhbHVlOiB0cmFuc2Zvcm1JZGVudGlmaWVyKG5vZGUudmFsdWUpLFxuICAgICAgICAgICAgICBraW5kOiBcImluaXRcIixcbiAgICAgICAgICAgICAgY29tcHV0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICBtZXRob2Q6IGZhbHNlLFxuICAgICAgICAgICAgICBzaG9ydGhhbmQ6IGZhbHNlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0sXG4gICAgbGVhdmUobm9kZSwgcGFyZW50KSB7XG4gICAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICAvLyBQb3AgdGhlIHNjb3BlIHdoZW4gbGVhdmluZyBhIGZ1bmN0aW9uXG4gICAgICAgIGNhc2UgXCJGdW5jdGlvbkRlY2xhcmF0aW9uXCI6XG4gICAgICAgIGNhc2UgXCJGdW5jdGlvbkV4cHJlc3Npb25cIjpcbiAgICAgICAgY2FzZSBcIkFycm93RnVuY3Rpb25FeHByZXNzaW9uXCI6XG4gICAgICAgICAgdHJhY2tlci5wb3BTY29wZSgpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgXCJJZGVudGlmaWVyXCI6XG4gICAgICAgICAgLy8gRG9uJ3QgdHJhbnNmb3JtIGlkZW50aWZpZXJzIHRoYXQgYXJlbid0IGF0IHRoZSBzdGFydCBvZiBhIE1lbWJlckV4cHJlc3Npb25cbiAgICAgICAgICAvLyBpZS4gZG9uJ3QgdHJhbnNmb3JtIGBiYXJgIG9yIGBiYXpgIGluIGBmb28uYmFyLmJhemBcbiAgICAgICAgICAvLyBNZW1iZXJFeHByZXNzaW9uIG5vZGVzIGNhbiBhbHNvIHRha2Ugb24gYSBjb21wdXRlZCBwcm9wZXJ0eVxuICAgICAgICAgIC8vIHdoaWNoIG1lYW5zIGl0IGlzIGFuIGFycmF5LWxpa2UgYWNjZXNzLCBzbyB3ZSBkbyB0cmFuc2Zvcm0gdGhvc2UuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgcGFyZW50Py50eXBlID09PSBcIk1lbWJlckV4cHJlc3Npb25cIiAmJiBwYXJlbnQucHJvcGVydHkgPT09IG5vZGUgJiZcbiAgICAgICAgICAgIHBhcmVudC5jb21wdXRlZCA9PT0gZmFsc2VcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBEb24ndCB0cmFuc2Zvcm0gaWRlbnRpZmllcnMgdGhhdCBhcmUga2V5cyBpbiBhbiBvYmplY3RcbiAgICAgICAgICBpZiAocGFyZW50Py50eXBlID09PSBcIlByb3BlcnR5XCIgJiYgcGFyZW50LmtleSA9PT0gbm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnJlcGxhY2UodHJhbnNmb3JtSWRlbnRpZmllcihub2RlKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3QgZ2VuZXJhdGVkID0gYXN0cmluZy5nZW5lcmF0ZShwYXJzZWQpO1xuXG4gIHJldHVybiBnZW5lcmF0ZWQ7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxPQUFPLEVBQVUsT0FBTyxFQUFFLE1BQU0sUUFBUSxhQUFhO0FBQzlELFNBQVMsY0FBYyxRQUFRLGNBQWM7QUFXN0MsNkNBQTZDO0FBQzdDLHFEQUFx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 +// denoCacheMetadata=8957595283714492446,17379464375834532669
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/3ebb8b3dd4953c0b8e13fa2b6c942b15b7a4aa0688ebd88146f3235dee6eb931.js b/vendor/gen/https/deno.land/3ebb8b3dd4953c0b8e13fa2b6c942b15b7a4aa0688ebd88146f3235dee6eb931.js new file mode 100644 index 0000000..fe68448 --- /dev/null +++ b/vendor/gen/https/deno.land/3ebb8b3dd4953c0b8e13fa2b6c942b15b7a4aa0688ebd88146f3235dee6eb931.js @@ -0,0 +1,3 @@ +export { encode as encodeBase64 } from "https://deno.land/std@0.170.0/encoding/base64.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvYW5zaS9kZXBzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIGVuY29kZSBhcyBlbmNvZGVCYXNlNjQsXG59IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xNzAuMC9lbmNvZGluZy9iYXNlNjQudHNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUNFLFVBQVUsWUFBWSxRQUNqQixtREFBbUQifQ== +// denoCacheMetadata=2914352737477645551,15737061147621955521
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/410a778354e2e5a3f2277bbe986f125a437e586a79995a44806d451136d74545.js b/vendor/gen/https/deno.land/410a778354e2e5a3f2277bbe986f125a437e586a79995a44806d451136d74545.js new file mode 100644 index 0000000..91481ac --- /dev/null +++ b/vendor/gen/https/deno.land/410a778354e2e5a3f2277bbe986f125a437e586a79995a44806d451136d74545.js @@ -0,0 +1,517 @@ +// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. +// A module to print ANSI terminal colors. Inspired by chalk, kleur, and colors +// on npm. +/** + * String formatters and utilities for dealing with ANSI color codes. + * + * This module is browser compatible. + * + * This module supports `NO_COLOR` environmental variable disabling any coloring + * if `NO_COLOR` is set. + * + * @example + * ```typescript + * import { + * bgBlue, + * bgRgb24, + * bgRgb8, + * bold, + * italic, + * red, + * rgb24, + * rgb8, + * } from "https://deno.land/std@$STD_VERSION/fmt/colors.ts"; + * + * console.log(bgBlue(italic(red(bold("Hello, World!"))))); + * + * // also supports 8bit colors + * + * console.log(rgb8("Hello, World!", 42)); + * + * console.log(bgRgb8("Hello, World!", 42)); + * + * // and 24bit rgb + * + * console.log(rgb24("Hello, World!", { + * r: 41, + * g: 42, + * b: 43, + * })); + * + * console.log(bgRgb24("Hello, World!", { + * r: 41, + * g: 42, + * b: 43, + * })); + * ``` + * + * @module + */ // deno-lint-ignore no-explicit-any +const { Deno } = globalThis; +const noColor = typeof Deno?.noColor === "boolean" ? Deno.noColor : true; +let enabled = !noColor; +/** + * Set changing text color to enabled or disabled + * @param value + */ export function setColorEnabled(value) { + if (noColor) { + return; + } + enabled = value; +} +/** Get whether text color change is enabled or disabled. */ export function getColorEnabled() { + return enabled; +} +/** + * Builds color code + * @param open + * @param close + */ function code(open, close) { + return { + open: `\x1b[${open.join(";")}m`, + close: `\x1b[${close}m`, + regexp: new RegExp(`\\x1b\\[${close}m`, "g") + }; +} +/** + * Applies color and background based on color code and its associated text + * @param str text to apply color settings to + * @param code color code to apply + */ function run(str, code) { + return enabled ? `${code.open}${str.replace(code.regexp, code.open)}${code.close}` : str; +} +/** + * Reset the text modified + * @param str text to reset + */ export function reset(str) { + return run(str, code([ + 0 + ], 0)); +} +/** + * Make the text bold. + * @param str text to make bold + */ export function bold(str) { + return run(str, code([ + 1 + ], 22)); +} +/** + * The text emits only a small amount of light. + * @param str text to dim + */ export function dim(str) { + return run(str, code([ + 2 + ], 22)); +} +/** + * Make the text italic. + * @param str text to make italic + */ export function italic(str) { + return run(str, code([ + 3 + ], 23)); +} +/** + * Make the text underline. + * @param str text to underline + */ export function underline(str) { + return run(str, code([ + 4 + ], 24)); +} +/** + * Invert background color and text color. + * @param str text to invert its color + */ export function inverse(str) { + return run(str, code([ + 7 + ], 27)); +} +/** + * Make the text hidden. + * @param str text to hide + */ export function hidden(str) { + return run(str, code([ + 8 + ], 28)); +} +/** + * Put horizontal line through the center of the text. + * @param str text to strike through + */ export function strikethrough(str) { + return run(str, code([ + 9 + ], 29)); +} +/** + * Set text color to black. + * @param str text to make black + */ export function black(str) { + return run(str, code([ + 30 + ], 39)); +} +/** + * Set text color to red. + * @param str text to make red + */ export function red(str) { + return run(str, code([ + 31 + ], 39)); +} +/** + * Set text color to green. + * @param str text to make green + */ export function green(str) { + return run(str, code([ + 32 + ], 39)); +} +/** + * Set text color to yellow. + * @param str text to make yellow + */ export function yellow(str) { + return run(str, code([ + 33 + ], 39)); +} +/** + * Set text color to blue. + * @param str text to make blue + */ export function blue(str) { + return run(str, code([ + 34 + ], 39)); +} +/** + * Set text color to magenta. + * @param str text to make magenta + */ export function magenta(str) { + return run(str, code([ + 35 + ], 39)); +} +/** + * Set text color to cyan. + * @param str text to make cyan + */ export function cyan(str) { + return run(str, code([ + 36 + ], 39)); +} +/** + * Set text color to white. + * @param str text to make white + */ export function white(str) { + return run(str, code([ + 37 + ], 39)); +} +/** + * Set text color to gray. + * @param str text to make gray + */ export function gray(str) { + return brightBlack(str); +} +/** + * Set text color to bright black. + * @param str text to make bright-black + */ export function brightBlack(str) { + return run(str, code([ + 90 + ], 39)); +} +/** + * Set text color to bright red. + * @param str text to make bright-red + */ export function brightRed(str) { + return run(str, code([ + 91 + ], 39)); +} +/** + * Set text color to bright green. + * @param str text to make bright-green + */ export function brightGreen(str) { + return run(str, code([ + 92 + ], 39)); +} +/** + * Set text color to bright yellow. + * @param str text to make bright-yellow + */ export function brightYellow(str) { + return run(str, code([ + 93 + ], 39)); +} +/** + * Set text color to bright blue. + * @param str text to make bright-blue + */ export function brightBlue(str) { + return run(str, code([ + 94 + ], 39)); +} +/** + * Set text color to bright magenta. + * @param str text to make bright-magenta + */ export function brightMagenta(str) { + return run(str, code([ + 95 + ], 39)); +} +/** + * Set text color to bright cyan. + * @param str text to make bright-cyan + */ export function brightCyan(str) { + return run(str, code([ + 96 + ], 39)); +} +/** + * Set text color to bright white. + * @param str text to make bright-white + */ export function brightWhite(str) { + return run(str, code([ + 97 + ], 39)); +} +/** + * Set background color to black. + * @param str text to make its background black + */ export function bgBlack(str) { + return run(str, code([ + 40 + ], 49)); +} +/** + * Set background color to red. + * @param str text to make its background red + */ export function bgRed(str) { + return run(str, code([ + 41 + ], 49)); +} +/** + * Set background color to green. + * @param str text to make its background green + */ export function bgGreen(str) { + return run(str, code([ + 42 + ], 49)); +} +/** + * Set background color to yellow. + * @param str text to make its background yellow + */ export function bgYellow(str) { + return run(str, code([ + 43 + ], 49)); +} +/** + * Set background color to blue. + * @param str text to make its background blue + */ export function bgBlue(str) { + return run(str, code([ + 44 + ], 49)); +} +/** + * Set background color to magenta. + * @param str text to make its background magenta + */ export function bgMagenta(str) { + return run(str, code([ + 45 + ], 49)); +} +/** + * Set background color to cyan. + * @param str text to make its background cyan + */ export function bgCyan(str) { + return run(str, code([ + 46 + ], 49)); +} +/** + * Set background color to white. + * @param str text to make its background white + */ export function bgWhite(str) { + return run(str, code([ + 47 + ], 49)); +} +/** + * Set background color to bright black. + * @param str text to make its background bright-black + */ export function bgBrightBlack(str) { + return run(str, code([ + 100 + ], 49)); +} +/** + * Set background color to bright red. + * @param str text to make its background bright-red + */ export function bgBrightRed(str) { + return run(str, code([ + 101 + ], 49)); +} +/** + * Set background color to bright green. + * @param str text to make its background bright-green + */ export function bgBrightGreen(str) { + return run(str, code([ + 102 + ], 49)); +} +/** + * Set background color to bright yellow. + * @param str text to make its background bright-yellow + */ export function bgBrightYellow(str) { + return run(str, code([ + 103 + ], 49)); +} +/** + * Set background color to bright blue. + * @param str text to make its background bright-blue + */ export function bgBrightBlue(str) { + return run(str, code([ + 104 + ], 49)); +} +/** + * Set background color to bright magenta. + * @param str text to make its background bright-magenta + */ export function bgBrightMagenta(str) { + return run(str, code([ + 105 + ], 49)); +} +/** + * Set background color to bright cyan. + * @param str text to make its background bright-cyan + */ export function bgBrightCyan(str) { + return run(str, code([ + 106 + ], 49)); +} +/** + * Set background color to bright white. + * @param str text to make its background bright-white + */ export function bgBrightWhite(str) { + return run(str, code([ + 107 + ], 49)); +} +/* Special Color Sequences */ /** + * Clam and truncate color codes + * @param n + * @param max number to truncate to + * @param min number to truncate from + */ function clampAndTruncate(n, max = 255, min = 0) { + return Math.trunc(Math.max(Math.min(n, max), min)); +} +/** + * Set text color using paletted 8bit colors. + * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit + * @param str text color to apply paletted 8bit colors to + * @param color code + */ export function rgb8(str, color) { + return run(str, code([ + 38, + 5, + clampAndTruncate(color) + ], 39)); +} +/** + * Set background color using paletted 8bit colors. + * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit + * @param str text color to apply paletted 8bit background colors to + * @param color code + */ export function bgRgb8(str, color) { + return run(str, code([ + 48, + 5, + clampAndTruncate(color) + ], 49)); +} +/** + * Set text color using 24bit rgb. + * `color` can be a number in range `0x000000` to `0xffffff` or + * an `Rgb`. + * + * To produce the color magenta: + * + * ```ts + * import { rgb24 } from "https://deno.land/std@$STD_VERSION/fmt/colors.ts"; + * rgb24("foo", 0xff00ff); + * rgb24("foo", {r: 255, g: 0, b: 255}); + * ``` + * @param str text color to apply 24bit rgb to + * @param color code + */ export function rgb24(str, color) { + if (typeof color === "number") { + return run(str, code([ + 38, + 2, + color >> 16 & 0xff, + color >> 8 & 0xff, + color & 0xff + ], 39)); + } + return run(str, code([ + 38, + 2, + clampAndTruncate(color.r), + clampAndTruncate(color.g), + clampAndTruncate(color.b) + ], 39)); +} +/** + * Set background color using 24bit rgb. + * `color` can be a number in range `0x000000` to `0xffffff` or + * an `Rgb`. + * + * To produce the color magenta: + * + * ```ts + * import { bgRgb24 } from "https://deno.land/std@$STD_VERSION/fmt/colors.ts"; + * bgRgb24("foo", 0xff00ff); + * bgRgb24("foo", {r: 255, g: 0, b: 255}); + * ``` + * @param str text color to apply 24bit rgb to + * @param color code + */ export function bgRgb24(str, color) { + if (typeof color === "number") { + return run(str, code([ + 48, + 2, + color >> 16 & 0xff, + color >> 8 & 0xff, + color & 0xff + ], 49)); + } + return run(str, code([ + 48, + 2, + clampAndTruncate(color.r), + clampAndTruncate(color.g), + clampAndTruncate(color.b) + ], 49)); +} +// https://github.com/chalk/ansi-regex/blob/02fa893d619d3da85411acc8fd4e2eea0e95a9d9/index.js +const ANSI_PATTERN = new RegExp([ + "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", + "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))" +].join("|"), "g"); +/** + * Remove ANSI escape codes from the string. + * @param string to remove ANSI escape codes from + */ export function stripColor(string) { + return string.replace(ANSI_PATTERN, ""); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE3MC4wL2ZtdC9jb2xvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyMiB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIEEgbW9kdWxlIHRvIHByaW50IEFOU0kgdGVybWluYWwgY29sb3JzLiBJbnNwaXJlZCBieSBjaGFsaywga2xldXIsIGFuZCBjb2xvcnNcbi8vIG9uIG5wbS5cblxuLyoqXG4gKiBTdHJpbmcgZm9ybWF0dGVycyBhbmQgdXRpbGl0aWVzIGZvciBkZWFsaW5nIHdpdGggQU5TSSBjb2xvciBjb2Rlcy5cbiAqXG4gKiBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG4gKlxuICogVGhpcyBtb2R1bGUgc3VwcG9ydHMgYE5PX0NPTE9SYCBlbnZpcm9ubWVudGFsIHZhcmlhYmxlIGRpc2FibGluZyBhbnkgY29sb3JpbmdcbiAqIGlmIGBOT19DT0xPUmAgaXMgc2V0LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQge1xuICogICBiZ0JsdWUsXG4gKiAgIGJnUmdiMjQsXG4gKiAgIGJnUmdiOCxcbiAqICAgYm9sZCxcbiAqICAgaXRhbGljLFxuICogICByZWQsXG4gKiAgIHJnYjI0LFxuICogICByZ2I4LFxuICogfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9mbXQvY29sb3JzLnRzXCI7XG4gKlxuICogY29uc29sZS5sb2coYmdCbHVlKGl0YWxpYyhyZWQoYm9sZChcIkhlbGxvLCBXb3JsZCFcIikpKSkpO1xuICpcbiAqIC8vIGFsc28gc3VwcG9ydHMgOGJpdCBjb2xvcnNcbiAqXG4gKiBjb25zb2xlLmxvZyhyZ2I4KFwiSGVsbG8sIFdvcmxkIVwiLCA0MikpO1xuICpcbiAqIGNvbnNvbGUubG9nKGJnUmdiOChcIkhlbGxvLCBXb3JsZCFcIiwgNDIpKTtcbiAqXG4gKiAvLyBhbmQgMjRiaXQgcmdiXG4gKlxuICogY29uc29sZS5sb2cocmdiMjQoXCJIZWxsbywgV29ybGQhXCIsIHtcbiAqICAgcjogNDEsXG4gKiAgIGc6IDQyLFxuICogICBiOiA0MyxcbiAqIH0pKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhiZ1JnYjI0KFwiSGVsbG8sIFdvcmxkIVwiLCB7XG4gKiAgIHI6IDQxLFxuICogICBnOiA0MixcbiAqICAgYjogNDMsXG4gKiB9KSk7XG4gKiBgYGBcbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbmNvbnN0IHsgRGVubyB9ID0gZ2xvYmFsVGhpcyBhcyBhbnk7XG5jb25zdCBub0NvbG9yID0gdHlwZW9mIERlbm8/Lm5vQ29sb3IgPT09IFwiYm9vbGVhblwiXG4gID8gRGVuby5ub0NvbG9yIGFzIGJvb2xlYW5cbiAgOiB0cnVlO1xuXG5pbnRlcmZhY2UgQ29kZSB7XG4gIG9wZW46IHN0cmluZztcbiAgY2xvc2U6IHN0cmluZztcbiAgcmVnZXhwOiBSZWdFeHA7XG59XG5cbi8qKiBSR0IgOC1iaXRzIHBlciBjaGFubmVsLiBFYWNoIGluIHJhbmdlIGAwLT4yNTVgIG9yIGAweDAwLT4weGZmYCAqL1xuaW50ZXJmYWNlIFJnYiB7XG4gIHI6IG51bWJlcjtcbiAgZzogbnVtYmVyO1xuICBiOiBudW1iZXI7XG59XG5cbmxldCBlbmFibGVkID0gIW5vQ29sb3I7XG5cbi8qKlxuICogU2V0IGNoYW5naW5nIHRleHQgY29sb3IgdG8gZW5hYmxlZCBvciBkaXNhYmxlZFxuICogQHBhcmFtIHZhbHVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRDb2xvckVuYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgaWYgKG5vQ29sb3IpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBlbmFibGVkID0gdmFsdWU7XG59XG5cbi8qKiBHZXQgd2hldGhlciB0ZXh0IGNvbG9yIGNoYW5nZSBpcyBlbmFibGVkIG9yIGRpc2FibGVkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbG9yRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgcmV0dXJuIGVuYWJsZWQ7XG59XG5cbi8qKlxuICogQnVpbGRzIGNvbG9yIGNvZGVcbiAqIEBwYXJhbSBvcGVuXG4gKiBAcGFyYW0gY2xvc2VcbiAqL1xuZnVuY3Rpb24gY29kZShvcGVuOiBudW1iZXJbXSwgY2xvc2U6IG51bWJlcik6IENvZGUge1xuICByZXR1cm4ge1xuICAgIG9wZW46IGBcXHgxYlske29wZW4uam9pbihcIjtcIil9bWAsXG4gICAgY2xvc2U6IGBcXHgxYlske2Nsb3NlfW1gLFxuICAgIHJlZ2V4cDogbmV3IFJlZ0V4cChgXFxcXHgxYlxcXFxbJHtjbG9zZX1tYCwgXCJnXCIpLFxuICB9O1xufVxuXG4vKipcbiAqIEFwcGxpZXMgY29sb3IgYW5kIGJhY2tncm91bmQgYmFzZWQgb24gY29sb3IgY29kZSBhbmQgaXRzIGFzc29jaWF0ZWQgdGV4dFxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIGFwcGx5IGNvbG9yIHNldHRpbmdzIHRvXG4gKiBAcGFyYW0gY29kZSBjb2xvciBjb2RlIHRvIGFwcGx5XG4gKi9cbmZ1bmN0aW9uIHJ1bihzdHI6IHN0cmluZywgY29kZTogQ29kZSk6IHN0cmluZyB7XG4gIHJldHVybiBlbmFibGVkXG4gICAgPyBgJHtjb2RlLm9wZW59JHtzdHIucmVwbGFjZShjb2RlLnJlZ2V4cCwgY29kZS5vcGVuKX0ke2NvZGUuY2xvc2V9YFxuICAgIDogc3RyO1xufVxuXG4vKipcbiAqIFJlc2V0IHRoZSB0ZXh0IG1vZGlmaWVkXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gcmVzZXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0KHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzBdLCAwKSk7XG59XG5cbi8qKlxuICogTWFrZSB0aGUgdGV4dCBib2xkLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgYm9sZFxuICovXG5leHBvcnQgZnVuY3Rpb24gYm9sZChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFsxXSwgMjIpKTtcbn1cblxuLyoqXG4gKiBUaGUgdGV4dCBlbWl0cyBvbmx5IGEgc21hbGwgYW1vdW50IG9mIGxpZ2h0LlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIGRpbVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGltKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzJdLCAyMikpO1xufVxuXG4vKipcbiAqIE1ha2UgdGhlIHRleHQgaXRhbGljLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgaXRhbGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpdGFsaWMoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbM10sIDIzKSk7XG59XG5cbi8qKlxuICogTWFrZSB0aGUgdGV4dCB1bmRlcmxpbmUuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gdW5kZXJsaW5lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmRlcmxpbmUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbNF0sIDI0KSk7XG59XG5cbi8qKlxuICogSW52ZXJ0IGJhY2tncm91bmQgY29sb3IgYW5kIHRleHQgY29sb3IuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gaW52ZXJ0IGl0cyBjb2xvclxuICovXG5leHBvcnQgZnVuY3Rpb24gaW52ZXJzZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs3XSwgMjcpKTtcbn1cblxuLyoqXG4gKiBNYWtlIHRoZSB0ZXh0IGhpZGRlbi5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBoaWRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoaWRkZW4oc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbOF0sIDI4KSk7XG59XG5cbi8qKlxuICogUHV0IGhvcml6b250YWwgbGluZSB0aHJvdWdoIHRoZSBjZW50ZXIgb2YgdGhlIHRleHQuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gc3RyaWtlIHRocm91Z2hcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmlrZXRocm91Z2goc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbOV0sIDI5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gYmxhY2suXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBibGFja1xuICovXG5leHBvcnQgZnVuY3Rpb24gYmxhY2soc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMzBdLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHRvIHJlZC5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIHJlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVkKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzMxXSwgMzkpKTtcbn1cblxuLyoqXG4gKiBTZXQgdGV4dCBjb2xvciB0byBncmVlbi5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGdyZWVuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBncmVlbihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFszMl0sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8geWVsbG93LlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgeWVsbG93XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB5ZWxsb3coc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMzNdLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHRvIGJsdWUuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBibHVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBibHVlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzM0XSwgMzkpKTtcbn1cblxuLyoqXG4gKiBTZXQgdGV4dCBjb2xvciB0byBtYWdlbnRhLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgbWFnZW50YVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFnZW50YShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFszNV0sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gY3lhbi5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGN5YW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGN5YW4oc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMzZdLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHRvIHdoaXRlLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2Ugd2hpdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdoaXRlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzM3XSwgMzkpKTtcbn1cblxuLyoqXG4gKiBTZXQgdGV4dCBjb2xvciB0byBncmF5LlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgZ3JheVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3JheShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBicmlnaHRCbGFjayhzdHIpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHRvIGJyaWdodCBibGFjay5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGJyaWdodC1ibGFja1xuICovXG5leHBvcnQgZnVuY3Rpb24gYnJpZ2h0QmxhY2soc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbOTBdLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHRvIGJyaWdodCByZWQuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBicmlnaHQtcmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBicmlnaHRSZWQoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbOTFdLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHRvIGJyaWdodCBncmVlbi5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGJyaWdodC1ncmVlblxuICovXG5leHBvcnQgZnVuY3Rpb24gYnJpZ2h0R3JlZW4oc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbOTJdLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHRvIGJyaWdodCB5ZWxsb3cuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBicmlnaHQteWVsbG93XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBicmlnaHRZZWxsb3coc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbOTNdLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHRvIGJyaWdodCBibHVlLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgYnJpZ2h0LWJsdWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyaWdodEJsdWUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbOTRdLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHRvIGJyaWdodCBtYWdlbnRhLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgYnJpZ2h0LW1hZ2VudGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyaWdodE1hZ2VudGEoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbOTVdLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHRvIGJyaWdodCBjeWFuLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgYnJpZ2h0LWN5YW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyaWdodEN5YW4oc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbOTZdLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHRvIGJyaWdodCB3aGl0ZS5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGJyaWdodC13aGl0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYnJpZ2h0V2hpdGUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbOTddLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJsYWNrLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgYmxhY2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJnQmxhY2soc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbNDBdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIHJlZC5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGl0cyBiYWNrZ3JvdW5kIHJlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gYmdSZWQoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbNDFdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGdyZWVuLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgZ3JlZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJnR3JlZW4oc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbNDJdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIHllbGxvdy5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGl0cyBiYWNrZ3JvdW5kIHllbGxvd1xuICovXG5leHBvcnQgZnVuY3Rpb24gYmdZZWxsb3coc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbNDNdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJsdWUuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBpdHMgYmFja2dyb3VuZCBibHVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ0JsdWUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbNDRdLCA0OSkpO1xufVxuXG4vKipcbiAqICBTZXQgYmFja2dyb3VuZCBjb2xvciB0byBtYWdlbnRhLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgbWFnZW50YVxuICovXG5leHBvcnQgZnVuY3Rpb24gYmdNYWdlbnRhKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzQ1XSwgNDkpKTtcbn1cblxuLyoqXG4gKiBTZXQgYmFja2dyb3VuZCBjb2xvciB0byBjeWFuLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgY3lhblxuICovXG5leHBvcnQgZnVuY3Rpb24gYmdDeWFuKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzQ2XSwgNDkpKTtcbn1cblxuLyoqXG4gKiBTZXQgYmFja2dyb3VuZCBjb2xvciB0byB3aGl0ZS5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGl0cyBiYWNrZ3JvdW5kIHdoaXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ1doaXRlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzQ3XSwgNDkpKTtcbn1cblxuLyoqXG4gKiBTZXQgYmFja2dyb3VuZCBjb2xvciB0byBicmlnaHQgYmxhY2suXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBpdHMgYmFja2dyb3VuZCBicmlnaHQtYmxhY2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJnQnJpZ2h0QmxhY2soc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMTAwXSwgNDkpKTtcbn1cblxuLyoqXG4gKiBTZXQgYmFja2dyb3VuZCBjb2xvciB0byBicmlnaHQgcmVkLlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgYnJpZ2h0LXJlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gYmdCcmlnaHRSZWQoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMTAxXSwgNDkpKTtcbn1cblxuLyoqXG4gKiBTZXQgYmFja2dyb3VuZCBjb2xvciB0byBicmlnaHQgZ3JlZW4uXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBpdHMgYmFja2dyb3VuZCBicmlnaHQtZ3JlZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJnQnJpZ2h0R3JlZW4oc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMTAyXSwgNDkpKTtcbn1cblxuLyoqXG4gKiBTZXQgYmFja2dyb3VuZCBjb2xvciB0byBicmlnaHQgeWVsbG93LlxuICogQHBhcmFtIHN0ciB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgYnJpZ2h0LXllbGxvd1xuICovXG5leHBvcnQgZnVuY3Rpb24gYmdCcmlnaHRZZWxsb3coc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMTAzXSwgNDkpKTtcbn1cblxuLyoqXG4gKiBTZXQgYmFja2dyb3VuZCBjb2xvciB0byBicmlnaHQgYmx1ZS5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGl0cyBiYWNrZ3JvdW5kIGJyaWdodC1ibHVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ0JyaWdodEJsdWUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMTA0XSwgNDkpKTtcbn1cblxuLyoqXG4gKiBTZXQgYmFja2dyb3VuZCBjb2xvciB0byBicmlnaHQgbWFnZW50YS5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGl0cyBiYWNrZ3JvdW5kIGJyaWdodC1tYWdlbnRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ0JyaWdodE1hZ2VudGEoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMTA1XSwgNDkpKTtcbn1cblxuLyoqXG4gKiBTZXQgYmFja2dyb3VuZCBjb2xvciB0byBicmlnaHQgY3lhbi5cbiAqIEBwYXJhbSBzdHIgdGV4dCB0byBtYWtlIGl0cyBiYWNrZ3JvdW5kIGJyaWdodC1jeWFuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ0JyaWdodEN5YW4oc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMTA2XSwgNDkpKTtcbn1cblxuLyoqXG4gKiBTZXQgYmFja2dyb3VuZCBjb2xvciB0byBicmlnaHQgd2hpdGUuXG4gKiBAcGFyYW0gc3RyIHRleHQgdG8gbWFrZSBpdHMgYmFja2dyb3VuZCBicmlnaHQtd2hpdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJnQnJpZ2h0V2hpdGUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMTA3XSwgNDkpKTtcbn1cblxuLyogU3BlY2lhbCBDb2xvciBTZXF1ZW5jZXMgKi9cblxuLyoqXG4gKiBDbGFtIGFuZCB0cnVuY2F0ZSBjb2xvciBjb2Rlc1xuICogQHBhcmFtIG5cbiAqIEBwYXJhbSBtYXggbnVtYmVyIHRvIHRydW5jYXRlIHRvXG4gKiBAcGFyYW0gbWluIG51bWJlciB0byB0cnVuY2F0ZSBmcm9tXG4gKi9cbmZ1bmN0aW9uIGNsYW1wQW5kVHJ1bmNhdGUobjogbnVtYmVyLCBtYXggPSAyNTUsIG1pbiA9IDApOiBudW1iZXIge1xuICByZXR1cm4gTWF0aC50cnVuYyhNYXRoLm1heChNYXRoLm1pbihuLCBtYXgpLCBtaW4pKTtcbn1cblxuLyoqXG4gKiBTZXQgdGV4dCBjb2xvciB1c2luZyBwYWxldHRlZCA4Yml0IGNvbG9ycy5cbiAqIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FOU0lfZXNjYXBlX2NvZGUjOC1iaXRcbiAqIEBwYXJhbSBzdHIgdGV4dCBjb2xvciB0byBhcHBseSBwYWxldHRlZCA4Yml0IGNvbG9ycyB0b1xuICogQHBhcmFtIGNvbG9yIGNvZGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJnYjgoc3RyOiBzdHJpbmcsIGNvbG9yOiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMzgsIDUsIGNsYW1wQW5kVHJ1bmNhdGUoY29sb3IpXSwgMzkpKTtcbn1cblxuLyoqXG4gKiBTZXQgYmFja2dyb3VuZCBjb2xvciB1c2luZyBwYWxldHRlZCA4Yml0IGNvbG9ycy5cbiAqIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FOU0lfZXNjYXBlX2NvZGUjOC1iaXRcbiAqIEBwYXJhbSBzdHIgdGV4dCBjb2xvciB0byBhcHBseSBwYWxldHRlZCA4Yml0IGJhY2tncm91bmQgY29sb3JzIHRvXG4gKiBAcGFyYW0gY29sb3IgY29kZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYmdSZ2I4KHN0cjogc3RyaW5nLCBjb2xvcjogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzQ4LCA1LCBjbGFtcEFuZFRydW5jYXRlKGNvbG9yKV0sIDQ5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdXNpbmcgMjRiaXQgcmdiLlxuICogYGNvbG9yYCBjYW4gYmUgYSBudW1iZXIgaW4gcmFuZ2UgYDB4MDAwMDAwYCB0byBgMHhmZmZmZmZgIG9yXG4gKiBhbiBgUmdiYC5cbiAqXG4gKiBUbyBwcm9kdWNlIHRoZSBjb2xvciBtYWdlbnRhOlxuICpcbiAqIGBgYHRzXG4gKiAgICAgIGltcG9ydCB7IHJnYjI0IH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vZm10L2NvbG9ycy50c1wiO1xuICogICAgICByZ2IyNChcImZvb1wiLCAweGZmMDBmZik7XG4gKiAgICAgIHJnYjI0KFwiZm9vXCIsIHtyOiAyNTUsIGc6IDAsIGI6IDI1NX0pO1xuICogYGBgXG4gKiBAcGFyYW0gc3RyIHRleHQgY29sb3IgdG8gYXBwbHkgMjRiaXQgcmdiIHRvXG4gKiBAcGFyYW0gY29sb3IgY29kZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmdiMjQoc3RyOiBzdHJpbmcsIGNvbG9yOiBudW1iZXIgfCBSZ2IpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIGNvbG9yID09PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIHJ1bihcbiAgICAgIHN0cixcbiAgICAgIGNvZGUoXG4gICAgICAgIFszOCwgMiwgKGNvbG9yID4+IDE2KSAmIDB4ZmYsIChjb2xvciA+PiA4KSAmIDB4ZmYsIGNvbG9yICYgMHhmZl0sXG4gICAgICAgIDM5LFxuICAgICAgKSxcbiAgICApO1xuICB9XG4gIHJldHVybiBydW4oXG4gICAgc3RyLFxuICAgIGNvZGUoXG4gICAgICBbXG4gICAgICAgIDM4LFxuICAgICAgICAyLFxuICAgICAgICBjbGFtcEFuZFRydW5jYXRlKGNvbG9yLnIpLFxuICAgICAgICBjbGFtcEFuZFRydW5jYXRlKGNvbG9yLmcpLFxuICAgICAgICBjbGFtcEFuZFRydW5jYXRlKGNvbG9yLmIpLFxuICAgICAgXSxcbiAgICAgIDM5LFxuICAgICksXG4gICk7XG59XG5cbi8qKlxuICogU2V0IGJhY2tncm91bmQgY29sb3IgdXNpbmcgMjRiaXQgcmdiLlxuICogYGNvbG9yYCBjYW4gYmUgYSBudW1iZXIgaW4gcmFuZ2UgYDB4MDAwMDAwYCB0byBgMHhmZmZmZmZgIG9yXG4gKiBhbiBgUmdiYC5cbiAqXG4gKiBUbyBwcm9kdWNlIHRoZSBjb2xvciBtYWdlbnRhOlxuICpcbiAqIGBgYHRzXG4gKiAgICAgIGltcG9ydCB7IGJnUmdiMjQgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9mbXQvY29sb3JzLnRzXCI7XG4gKiAgICAgIGJnUmdiMjQoXCJmb29cIiwgMHhmZjAwZmYpO1xuICogICAgICBiZ1JnYjI0KFwiZm9vXCIsIHtyOiAyNTUsIGc6IDAsIGI6IDI1NX0pO1xuICogYGBgXG4gKiBAcGFyYW0gc3RyIHRleHQgY29sb3IgdG8gYXBwbHkgMjRiaXQgcmdiIHRvXG4gKiBAcGFyYW0gY29sb3IgY29kZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYmdSZ2IyNChzdHI6IHN0cmluZywgY29sb3I6IG51bWJlciB8IFJnYik6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgY29sb3IgPT09IFwibnVtYmVyXCIpIHtcbiAgICByZXR1cm4gcnVuKFxuICAgICAgc3RyLFxuICAgICAgY29kZShcbiAgICAgICAgWzQ4LCAyLCAoY29sb3IgPj4gMTYpICYgMHhmZiwgKGNvbG9yID4+IDgpICYgMHhmZiwgY29sb3IgJiAweGZmXSxcbiAgICAgICAgNDksXG4gICAgICApLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHJ1bihcbiAgICBzdHIsXG4gICAgY29kZShcbiAgICAgIFtcbiAgICAgICAgNDgsXG4gICAgICAgIDIsXG4gICAgICAgIGNsYW1wQW5kVHJ1bmNhdGUoY29sb3IuciksXG4gICAgICAgIGNsYW1wQW5kVHJ1bmNhdGUoY29sb3IuZyksXG4gICAgICAgIGNsYW1wQW5kVHJ1bmNhdGUoY29sb3IuYiksXG4gICAgICBdLFxuICAgICAgNDksXG4gICAgKSxcbiAgKTtcbn1cblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2NoYWxrL2Fuc2ktcmVnZXgvYmxvYi8wMmZhODkzZDYxOWQzZGE4NTQxMWFjYzhmZDRlMmVlYTBlOTVhOWQ5L2luZGV4LmpzXG5jb25zdCBBTlNJX1BBVFRFUk4gPSBuZXcgUmVnRXhwKFxuICBbXG4gICAgXCJbXFxcXHUwMDFCXFxcXHUwMDlCXVtbXFxcXF0oKSM7P10qKD86KD86KD86KD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKykqfFthLXpBLVpcXFxcZF0rKD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKikqKT9cXFxcdTAwMDcpXCIsXG4gICAgXCIoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW5xLXV5PT48fl0pKVwiLFxuICBdLmpvaW4oXCJ8XCIpLFxuICBcImdcIixcbik7XG5cbi8qKlxuICogUmVtb3ZlIEFOU0kgZXNjYXBlIGNvZGVzIGZyb20gdGhlIHN0cmluZy5cbiAqIEBwYXJhbSBzdHJpbmcgdG8gcmVtb3ZlIEFOU0kgZXNjYXBlIGNvZGVzIGZyb21cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwQ29sb3Ioc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoQU5TSV9QQVRURVJOLCBcIlwiKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUsK0VBQStFO0FBQy9FLFVBQVU7QUFFVjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBNkNDLEdBRUQsbUNBQW1DO0FBQ25DLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRztBQUNqQixNQUFNLFVBQVUsT0FBTyxNQUFNLFlBQVksWUFDckMsS0FBSyxPQUFPLEdBQ1o7QUFlSixJQUFJLFVBQVUsQ0FBQztBQUVmOzs7Q0FHQyxHQUNELE9BQU8sU0FBUyxnQkFBZ0IsS0FBYztFQUM1QyxJQUFJLFNBQVM7SUFDWDtFQUNGO0VBRUEsVUFBVTtBQUNaO0FBRUEsMERBQTBELEdBQzFELE9BQU8sU0FBUztFQUNkLE9BQU87QUFDVDtBQUVBOzs7O0NBSUMsR0FDRCxTQUFTLEtBQUssSUFBYyxFQUFFLEtBQWE7RUFDekMsT0FBTztJQUNMLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2QixRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFO0VBQzFDO0FBQ0Y7QUFFQTs7OztDQUlDLEdBQ0QsU0FBUyxJQUFJLEdBQVcsRUFBRSxJQUFVO0VBQ2xDLE9BQU8sVUFDSCxHQUFHLEtBQUssSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLEtBQUssTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLEdBQ2pFO0FBQ047QUFFQTs7O0NBR0MsR0FDRCxPQUFPLFNBQVMsTUFBTSxHQUFXO0VBQy9CLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFFLEVBQUU7QUFDNUI7QUFFQTs7O0NBR0MsR0FDRCxPQUFPLFNBQVMsS0FBSyxHQUFXO0VBQzlCLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFFLEVBQUU7QUFDNUI7QUFFQTs7O0NBR0MsR0FDRCxPQUFPLFNBQVMsSUFBSSxHQUFXO0VBQzdCLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFFLEVBQUU7QUFDNUI7QUFFQTs7O0NBR0MsR0FDRCxPQUFPLFNBQVMsT0FBTyxHQUFXO0VBQ2hDLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFFLEVBQUU7QUFDNUI7QUFFQTs7O0NBR0MsR0FDRCxPQUFPLFNBQVMsVUFBVSxHQUFXO0VBQ25DLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFFLEVBQUU7QUFDNUI7QUFFQTs7O0NBR0MsR0FDRCxPQUFPLFNBQVMsUUFBUSxHQUFXO0VBQ2pDLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFFLEVBQUU7QUFDNUI7QUFFQTs7O0NBR0MsR0FDRCxPQUFPLFNBQVMsT0FBTyxHQUFXO0VBQ2hDLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFFLEVBQUU7QUFDNUI7QUFFQTs7O0NBR0MsR0FDRCxPQUFPLFNBQVMsY0FBYyxHQUFXO0VBQ3ZDLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFFLEVBQUU7QUFDNUI7QUFFQTs7O0NBR0MsR0FDRCxPQUFPLFNBQVMsTUFBTSxHQUFXO0VBQy9CLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFHLEVBQUU7QUFDN0I7QUFFQTs7O0NBR0MsR0FDRCxPQUFPLFNBQVMsSUFBSSxHQUFXO0VBQzdCLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFHLEVBQUU7QUFDN0I7QUFFQTs7O0NBR0MsR0FDRCxPQUFPLFNBQVMsTUFBTSxHQUFXO0VBQy9CLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFHLEVBQUU7QUFDN0I7QUFFQTs7O0NBR0MsR0FDRCxPQUFPLFNBQVMsT0FBTyxHQUFXO0VBQ2hDLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFHLEVBQUU7QUFDN0I7QUFFQTs7O0NBR0MsR0FDRCxPQUFPLFNBQVMsS0FBSyxHQUFXO0VBQzlCLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFHLEVBQUU7QUFDN0I7QUFFQTs7O0NBR0MsR0FDRCxPQUFPLFNBQVMsUUFBUSxHQUFXO0VBQ2pDLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFHLEVBQUU7QUFDN0I7QUFFQTs7O0NBR0MsR0FDRCxPQUFPLFNBQVMsS0FBSyxHQUFXO0VBQzlCLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFHLEVBQUU7QUFDN0I7QUFFQTs7O0NBR0MsR0FDRCxPQUFPLFNBQVMsTUFBTSxHQUFXO0VBQy9CLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFHLEVBQUU7QUFDN0I7QUFFQTs7O0NBR0MsR0FDRCxPQUFPLFNBQVMsS0FBSyxHQUFXO0VBQzlCLE9BQU8sWUFBWTtBQUNyQjtBQUVBOzs7Q0FHQyxHQUNELE9BQU8sU0FBUyxZQUFZLEdBQVc7RUFDckMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Q0FHQyxHQUNELE9BQU8sU0FBUyxVQUFVLEdBQVc7RUFDbkMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Q0FHQyxHQUNELE9BQU8sU0FBUyxZQUFZLEdBQVc7RUFDckMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Q0FHQyxHQUNELE9BQU8sU0FBUyxhQUFhLEdBQVc7RUFDdEMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Q0FHQyxHQUNELE9BQU8sU0FBUyxXQUFXLEdBQVc7RUFDcEMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Q0FHQyxHQUNELE9BQU8sU0FBUyxjQUFjLEdBQVc7RUFDdkMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Q0FHQyxHQUNELE9BQU8sU0FBUyxXQUFXLEdBQVc7RUFDcEMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Q0FHQyxHQUNELE9BQU8sU0FBUyxZQUFZLEdBQVc7RUFDckMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Q0FHQyxHQUNELE9BQU8sU0FBUyxRQUFRLEdBQVc7RUFDakMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Q0FHQyxHQUNELE9BQU8sU0FBUyxNQUFNLEdBQVc7RUFDL0IsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Q0FHQyxHQUNELE9BQU8sU0FBUyxRQUFRLEdBQVc7RUFDakMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3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 +// denoCacheMetadata=11124773769095373732,15212621031060936035
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/44544b175b294b2446e49829a3c1c2e1aae0058858ba6f9e5c40c56cd16a62db.js b/vendor/gen/https/deno.land/44544b175b294b2446e49829a3c1c2e1aae0058858ba6f9e5c40c56cd16a62db.js new file mode 100644 index 0000000..49aa75d --- /dev/null +++ b/vendor/gen/https/deno.land/44544b175b294b2446e49829a3c1c2e1aae0058858ba6f9e5c40c56cd16a62db.js @@ -0,0 +1,45 @@ +/** + * Class to manage the event listeners + * and dispatch events + */ export default class Events { + listeners = new Map(); + /** Assign a listener to an event */ addEventListener(type, listenerFn, options) { + const listeners = this.listeners.get(type) || new Set(); + const listener = [ + listenerFn, + options + ]; + listeners.add(listener); + this.listeners.set(type, listeners); + // Remove on abort + if (options?.signal) { + options.signal.addEventListener("abort", ()=>{ + listeners.delete(listener); + }); + } + return this; + } + /** Dispatch an event */ async dispatchEvent(event) { + const { type } = event; + const listeners = this.listeners.get(type); + if (listeners) { + for (const listener of listeners){ + const [listenerFn, listenerOptions] = listener; + // Remove the listener if it's a once listener + if (listenerOptions?.once) { + listeners.delete(listener); + } + if (await listenerFn(event) === false) { + return false; + } + } + } + const customEvent = new CustomEvent(`lume:${type}`, { + cancelable: true, + detail: event + }); + return dispatchEvent(customEvent); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS9ldmVudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsidHlwZSBMaXN0ZW5lcjxFIGV4dGVuZHMgRXZlbnQ+ID0gW0V2ZW50TGlzdGVuZXI8RT4sIEV2ZW50T3B0aW9ucyB8IHVuZGVmaW5lZF07XG5cbi8qKlxuICogQ2xhc3MgdG8gbWFuYWdlIHRoZSBldmVudCBsaXN0ZW5lcnNcbiAqIGFuZCBkaXNwYXRjaCBldmVudHNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXZlbnRzPEUgZXh0ZW5kcyBFdmVudD4ge1xuICBsaXN0ZW5lcnMgPSBuZXcgTWFwPHN0cmluZywgU2V0PExpc3RlbmVyPEU+Pj4oKTtcblxuICAvKiogQXNzaWduIGEgbGlzdGVuZXIgdG8gYW4gZXZlbnQgKi9cbiAgYWRkRXZlbnRMaXN0ZW5lcihcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgbGlzdGVuZXJGbjogRXZlbnRMaXN0ZW5lcjxFPixcbiAgICBvcHRpb25zPzogRXZlbnRPcHRpb25zLFxuICApIHtcbiAgICBjb25zdCBsaXN0ZW5lcnMgPSB0aGlzLmxpc3RlbmVycy5nZXQodHlwZSkgfHwgbmV3IFNldCgpO1xuICAgIGNvbnN0IGxpc3RlbmVyOiBMaXN0ZW5lcjxFPiA9IFtsaXN0ZW5lckZuLCBvcHRpb25zXTtcblxuICAgIGxpc3RlbmVycy5hZGQobGlzdGVuZXIpO1xuICAgIHRoaXMubGlzdGVuZXJzLnNldCh0eXBlLCBsaXN0ZW5lcnMpO1xuXG4gICAgLy8gUmVtb3ZlIG9uIGFib3J0XG4gICAgaWYgKG9wdGlvbnM/LnNpZ25hbCkge1xuICAgICAgb3B0aW9ucy5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsICgpID0+IHtcbiAgICAgICAgbGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lcik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBEaXNwYXRjaCBhbiBldmVudCAqL1xuICBhc3luYyBkaXNwYXRjaEV2ZW50KGV2ZW50OiBFKSB7XG4gICAgY29uc3QgeyB0eXBlIH0gPSBldmVudDtcbiAgICBjb25zdCBsaXN0ZW5lcnMgPSB0aGlzLmxpc3RlbmVycy5nZXQodHlwZSk7XG5cbiAgICBpZiAobGlzdGVuZXJzKSB7XG4gICAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIGxpc3RlbmVycykge1xuICAgICAgICBjb25zdCBbbGlzdGVuZXJGbiwgbGlzdGVuZXJPcHRpb25zXSA9IGxpc3RlbmVyO1xuXG4gICAgICAgIC8vIFJlbW92ZSB0aGUgbGlzdGVuZXIgaWYgaXQncyBhIG9uY2UgbGlzdGVuZXJcbiAgICAgICAgaWYgKGxpc3RlbmVyT3B0aW9ucz8ub25jZSkge1xuICAgICAgICAgIGxpc3RlbmVycy5kZWxldGUobGlzdGVuZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGF3YWl0IGxpc3RlbmVyRm4oZXZlbnQpID09PSBmYWxzZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KGBsdW1lOiR7dHlwZX1gLCB7XG4gICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgICAgZGV0YWlsOiBldmVudCxcbiAgICB9KTtcblxuICAgIHJldHVybiBkaXNwYXRjaEV2ZW50KGN1c3RvbUV2ZW50KTtcbiAgfVxufVxuXG4vKiogQW4gZXZlbnQgb2JqZWN0ICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50IHtcbiAgLyoqIFRoZSBldmVudCB0eXBlICovXG4gIHR5cGU6IHN0cmluZztcbn1cblxuLyoqIEV2ZW50IGxpc3RlbmVyICovXG5leHBvcnQgdHlwZSBFdmVudExpc3RlbmVyPEUgZXh0ZW5kcyBFdmVudD4gPSAoZXZlbnQ6IEUpID0+IHVua25vd247XG5cbi8qKiBUaGUgYXZhaWxhYmxlIG9wdGlvbnMgZm9yIGV2ZW50cyAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudE9wdGlvbnMge1xuICAvKipcbiAgICogVG8gaW5kaWNhdGUgdGhhdCB0aGUgbGlzdGVuZXIgc2hvdWxkIGJlIGludm9rZWQgYXQgbW9zdCBvbmNlXG4gICAqIGFmdGVyIGJlaW5nIGFkZGVkXG4gICAqL1xuICBvbmNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGxpc3RlbmVyIHdpbGwgYmUgcmVtb3ZlZFxuICAgKiB3aGVuIHRoZSBnaXZlbiBBYm9ydFNpZ25hbCBvYmplY3QncyBhYm9ydCgpIG1ldGhvZCBpcyBjYWxsZWRcbiAgICovXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7Q0FHQyxHQUNELGVBQWUsTUFBTTtFQUNuQixZQUFZLElBQUksTUFBZ0M7RUFFaEQsa0NBQWtDLEdBQ2xDLGlCQUNFLElBQVksRUFDWixVQUE0QixFQUM1QixPQUFzQixFQUN0QjtJQUNBLE1BQU0sWUFBWSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUk7SUFDbEQsTUFBTSxXQUF3QjtNQUFDO01BQVk7S0FBUTtJQUVuRCxVQUFVLEdBQUcsQ0FBQztJQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU07SUFFekIsa0JBQWtCO0lBQ2xCLElBQUksU0FBUyxRQUFRO01BQ25CLFFBQVEsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVM7UUFDdkMsVUFBVSxNQUFNLENBQUM7TUFDbkI7SUFDRjtJQUVBLE9BQU8sSUFBSTtFQUNiO0VBRUEsc0JBQXNCLEdBQ3RCLE1BQU0sY0FBYyxLQUFRLEVBQUU7SUFDNUIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHO0lBQ2pCLE1BQU0sWUFBWSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztJQUVyQyxJQUFJLFdBQVc7TUFDYixLQUFLLE1BQU0sWUFBWSxVQUFXO1FBQ2hDLE1BQU0sQ0FBQyxZQUFZLGdCQUFnQixHQUFHO1FBRXRDLDhDQUE4QztRQUM5QyxJQUFJLGlCQUFpQixNQUFNO1VBQ3pCLFVBQVUsTUFBTSxDQUFDO1FBQ25CO1FBRUEsSUFBSSxNQUFNLFdBQVcsV0FBVyxPQUFPO1VBQ3JDLE9BQU87UUFDVDtNQUNGO0lBQ0Y7SUFFQSxNQUFNLGNBQWMsSUFBSSxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRTtNQUNsRCxZQUFZO01BQ1osUUFBUTtJQUNWO0lBRUEsT0FBTyxjQUFjO0VBQ3ZCO0FBQ0YifQ== +// denoCacheMetadata=455609061968039064,5814435458953356410
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/451b8255dcd8b53272e619ade6aa66c644bb730d1e66d1ee63f6442fe4046402.js b/vendor/gen/https/deno.land/451b8255dcd8b53272e619ade6aa66c644bb730d1e66d1ee63f6442fe4046402.js new file mode 100644 index 0000000..22c6a99 --- /dev/null +++ b/vendor/gen/https/deno.land/451b8255dcd8b53272e619ade6aa66c644bb730d1e66d1ee63f6442fe4046402.js @@ -0,0 +1,124 @@ +import { getDescription } from "../_utils.ts"; +import { FileType } from "../types/file.ts"; +/** Fish completions generator. */ export class FishCompletionsGenerator { + cmd; + /** Generates fish completions script for given command. */ static generate(cmd) { + return new FishCompletionsGenerator(cmd).generate(); + } + constructor(cmd){ + this.cmd = cmd; + } + /** Generates fish completions script. */ generate() { + const path = this.cmd.getPath(); + const version = this.cmd.getVersion() ? ` v${this.cmd.getVersion()}` : ""; + return `#!/usr/bin/env fish +# fish completion support for ${path}${version} + +function __fish_${replaceSpecialChars(this.cmd.getName())}_using_command + set -l cmds ${getCommandFnNames(this.cmd).join(" ")} + set -l words (commandline -opc) + set -l cmd "_" + for word in $words + switch $word + case '-*' + continue + case '*' + set word (string replace -r -a '\\W' '_' $word) + set -l cmd_tmp $cmd"_$word" + if contains $cmd_tmp $cmds + set cmd $cmd_tmp + end + end + end + if test "$cmd" = "$argv[1]" + return 0 + end + return 1 +end + +${this.generateCompletions(this.cmd).trim()}`; + } + generateCompletions(command) { + const parent = command.getParent(); + let result = ``; + if (parent) { + // command + result += "\n" + this.complete(parent, { + description: command.getShortDescription(), + arguments: command.getName() + }); + } + // arguments + const commandArgs = command.getArguments(); + if (commandArgs.length) { + result += "\n" + this.complete(command, { + arguments: commandArgs.length ? this.getCompletionCommand(command, commandArgs[0]) : undefined + }); + } + // options + for (const option of command.getOptions(false)){ + result += "\n" + this.completeOption(command, option); + } + for (const subCommand of command.getCommands(false)){ + result += this.generateCompletions(subCommand); + } + return result; + } + completeOption(command, option) { + const shortOption = option.flags.find((flag)=>flag.length === 2)?.replace(/^(-)+/, ""); + const longOption = option.flags.find((flag)=>flag.length > 2)?.replace(/^(-)+/, ""); + return this.complete(command, { + description: getDescription(option.description), + shortOption: shortOption, + longOption: longOption, + // required: option.requiredValue, + required: true, + standalone: option.standalone, + arguments: option.args.length ? this.getCompletionCommand(command, option.args[0]) : undefined + }); + } + complete(command, options) { + const cmd = [ + "complete" + ]; + cmd.push("-c", this.cmd.getName()); + cmd.push("-n", `'__fish_${replaceSpecialChars(this.cmd.getName())}_using_command __${replaceSpecialChars(command.getPath())}'`); + options.shortOption && cmd.push("-s", options.shortOption); + options.longOption && cmd.push("-l", options.longOption); + options.standalone && cmd.push("-x"); + cmd.push("-k"); + cmd.push("-f"); + if (options.arguments) { + options.required && cmd.push("-r"); + cmd.push("-a", options.arguments); + } + if (options.description) { + const description = getDescription(options.description, true)// escape single quotes + .replace(/'/g, "\\'"); + cmd.push("-d", `'${description}'`); + } + return cmd.join(" "); + } + getCompletionCommand(cmd, arg) { + const type = cmd.getType(arg.type); + if (type && type.handler instanceof FileType) { + return `'(__fish_complete_path)'`; + } + return `'(${this.cmd.getName()} completions complete ${arg.action + " " + getCompletionsPath(cmd)})'`; + } +} +function getCommandFnNames(cmd, cmds = []) { + cmds.push(`__${replaceSpecialChars(cmd.getPath())}`); + cmd.getCommands(false).forEach((command)=>{ + getCommandFnNames(command, cmds); + }); + return cmds; +} +function getCompletionsPath(command) { + return command.getPath().split(" ").slice(1).join(" "); +} +function replaceSpecialChars(str) { + return str.replace(/[^a-zA-Z0-9]/g, "_"); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC9jb21wbGV0aW9ucy9fZmlzaF9jb21wbGV0aW9uc19nZW5lcmF0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0RGVzY3JpcHRpb24gfSBmcm9tIFwiLi4vX3V0aWxzLnRzXCI7XG5pbXBvcnQgdHlwZSB7IENvbW1hbmQgfSBmcm9tIFwiLi4vY29tbWFuZC50c1wiO1xuaW1wb3J0IHR5cGUgeyBBcmd1bWVudCwgT3B0aW9uIH0gZnJvbSBcIi4uL3R5cGVzLnRzXCI7XG5pbXBvcnQgeyBGaWxlVHlwZSB9IGZyb20gXCIuLi90eXBlcy9maWxlLnRzXCI7XG5cbi8qKiBHZW5lcmF0ZXMgZmlzaCBjb21wbGV0aW9ucyBzY3JpcHQuICovXG5pbnRlcmZhY2UgQ29tcGxldGVPcHRpb25zIHtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHNob3J0T3B0aW9uPzogc3RyaW5nO1xuICBsb25nT3B0aW9uPzogc3RyaW5nO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHN0YW5kYWxvbmU/OiBib29sZWFuO1xuICBhcmd1bWVudHM/OiBzdHJpbmc7XG59XG5cbi8qKiBGaXNoIGNvbXBsZXRpb25zIGdlbmVyYXRvci4gKi9cbmV4cG9ydCBjbGFzcyBGaXNoQ29tcGxldGlvbnNHZW5lcmF0b3Ige1xuICAvKiogR2VuZXJhdGVzIGZpc2ggY29tcGxldGlvbnMgc2NyaXB0IGZvciBnaXZlbiBjb21tYW5kLiAqL1xuICBwdWJsaWMgc3RhdGljIGdlbmVyYXRlKGNtZDogQ29tbWFuZCkge1xuICAgIHJldHVybiBuZXcgRmlzaENvbXBsZXRpb25zR2VuZXJhdG9yKGNtZCkuZ2VuZXJhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHJvdGVjdGVkIGNtZDogQ29tbWFuZCkge31cblxuICAvKiogR2VuZXJhdGVzIGZpc2ggY29tcGxldGlvbnMgc2NyaXB0LiAqL1xuICBwcml2YXRlIGdlbmVyYXRlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMuY21kLmdldFBhdGgoKTtcbiAgICBjb25zdCB2ZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB0aGlzLmNtZC5nZXRWZXJzaW9uKClcbiAgICAgID8gYCB2JHt0aGlzLmNtZC5nZXRWZXJzaW9uKCl9YFxuICAgICAgOiBcIlwiO1xuXG4gICAgcmV0dXJuIGAjIS91c3IvYmluL2VudiBmaXNoXG4jIGZpc2ggY29tcGxldGlvbiBzdXBwb3J0IGZvciAke3BhdGh9JHt2ZXJzaW9ufVxuXG5mdW5jdGlvbiBfX2Zpc2hfJHtyZXBsYWNlU3BlY2lhbENoYXJzKHRoaXMuY21kLmdldE5hbWUoKSl9X3VzaW5nX2NvbW1hbmRcbiAgc2V0IC1sIGNtZHMgJHtnZXRDb21tYW5kRm5OYW1lcyh0aGlzLmNtZCkuam9pbihcIiBcIil9XG4gIHNldCAtbCB3b3JkcyAoY29tbWFuZGxpbmUgLW9wYylcbiAgc2V0IC1sIGNtZCBcIl9cIlxuICBmb3Igd29yZCBpbiAkd29yZHNcbiAgICBzd2l0Y2ggJHdvcmRcbiAgICAgIGNhc2UgJy0qJ1xuICAgICAgICBjb250aW51ZVxuICAgICAgY2FzZSAnKidcbiAgICAgICAgc2V0IHdvcmQgKHN0cmluZyByZXBsYWNlIC1yIC1hICdcXFxcVycgJ18nICR3b3JkKVxuICAgICAgICBzZXQgLWwgY21kX3RtcCAkY21kXCJfJHdvcmRcIlxuICAgICAgICBpZiBjb250YWlucyAkY21kX3RtcCAkY21kc1xuICAgICAgICAgIHNldCBjbWQgJGNtZF90bXBcbiAgICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuICBpZiB0ZXN0IFwiJGNtZFwiID0gXCIkYXJndlsxXVwiXG4gICAgcmV0dXJuIDBcbiAgZW5kXG4gIHJldHVybiAxXG5lbmRcblxuJHt0aGlzLmdlbmVyYXRlQ29tcGxldGlvbnModGhpcy5jbWQpLnRyaW0oKX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUNvbXBsZXRpb25zKGNvbW1hbmQ6IENvbW1hbmQpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhcmVudDogQ29tbWFuZCB8IHVuZGVmaW5lZCA9IGNvbW1hbmQuZ2V0UGFyZW50KCk7XG4gICAgbGV0IHJlc3VsdCA9IGBgO1xuXG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgLy8gY29tbWFuZFxuICAgICAgcmVzdWx0ICs9IFwiXFxuXCIgKyB0aGlzLmNvbXBsZXRlKHBhcmVudCwge1xuICAgICAgICBkZXNjcmlwdGlvbjogY29tbWFuZC5nZXRTaG9ydERlc2NyaXB0aW9uKCksXG4gICAgICAgIGFyZ3VtZW50czogY29tbWFuZC5nZXROYW1lKCksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBhcmd1bWVudHNcbiAgICBjb25zdCBjb21tYW5kQXJncyA9IGNvbW1hbmQuZ2V0QXJndW1lbnRzKCk7XG4gICAgaWYgKGNvbW1hbmRBcmdzLmxlbmd0aCkge1xuICAgICAgcmVzdWx0ICs9IFwiXFxuXCIgKyB0aGlzLmNvbXBsZXRlKGNvbW1hbmQsIHtcbiAgICAgICAgYXJndW1lbnRzOiBjb21tYW5kQXJncy5sZW5ndGhcbiAgICAgICAgICA/IHRoaXMuZ2V0Q29tcGxldGlvbkNvbW1hbmQoY29tbWFuZCwgY29tbWFuZEFyZ3NbMF0pXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBvcHRpb25zXG4gICAgZm9yIChjb25zdCBvcHRpb24gb2YgY29tbWFuZC5nZXRPcHRpb25zKGZhbHNlKSkge1xuICAgICAgcmVzdWx0ICs9IFwiXFxuXCIgKyB0aGlzLmNvbXBsZXRlT3B0aW9uKGNvbW1hbmQsIG9wdGlvbik7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBzdWJDb21tYW5kIG9mIGNvbW1hbmQuZ2V0Q29tbWFuZHMoZmFsc2UpKSB7XG4gICAgICByZXN1bHQgKz0gdGhpcy5nZW5lcmF0ZUNvbXBsZXRpb25zKHN1YkNvbW1hbmQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGNvbXBsZXRlT3B0aW9uKGNvbW1hbmQ6IENvbW1hbmQsIG9wdGlvbjogT3B0aW9uKSB7XG4gICAgY29uc3Qgc2hvcnRPcHRpb246IHN0cmluZyB8IHVuZGVmaW5lZCA9IG9wdGlvbi5mbGFnc1xuICAgICAgLmZpbmQoKGZsYWcpID0+IGZsYWcubGVuZ3RoID09PSAyKVxuICAgICAgPy5yZXBsYWNlKC9eKC0pKy8sIFwiXCIpO1xuICAgIGNvbnN0IGxvbmdPcHRpb246IHN0cmluZyB8IHVuZGVmaW5lZCA9IG9wdGlvbi5mbGFnc1xuICAgICAgLmZpbmQoKGZsYWcpID0+IGZsYWcubGVuZ3RoID4gMilcbiAgICAgID8ucmVwbGFjZSgvXigtKSsvLCBcIlwiKTtcblxuICAgIHJldHVybiB0aGlzLmNvbXBsZXRlKGNvbW1hbmQsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBnZXREZXNjcmlwdGlvbihvcHRpb24uZGVzY3JpcHRpb24pLFxuICAgICAgc2hvcnRPcHRpb246IHNob3J0T3B0aW9uLFxuICAgICAgbG9uZ09wdGlvbjogbG9uZ09wdGlvbixcbiAgICAgIC8vIHJlcXVpcmVkOiBvcHRpb24ucmVxdWlyZWRWYWx1ZSxcbiAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgc3RhbmRhbG9uZTogb3B0aW9uLnN0YW5kYWxvbmUsXG4gICAgICBhcmd1bWVudHM6IG9wdGlvbi5hcmdzLmxlbmd0aFxuICAgICAgICA/IHRoaXMuZ2V0Q29tcGxldGlvbkNvbW1hbmQoY29tbWFuZCwgb3B0aW9uLmFyZ3NbMF0pXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wbGV0ZShjb21tYW5kOiBDb21tYW5kLCBvcHRpb25zOiBDb21wbGV0ZU9wdGlvbnMpIHtcbiAgICBjb25zdCBjbWQgPSBbXCJjb21wbGV0ZVwiXTtcbiAgICBjbWQucHVzaChcIi1jXCIsIHRoaXMuY21kLmdldE5hbWUoKSk7XG4gICAgY21kLnB1c2goXG4gICAgICBcIi1uXCIsXG4gICAgICBgJ19fZmlzaF8ke3JlcGxhY2VTcGVjaWFsQ2hhcnModGhpcy5jbWQuZ2V0TmFtZSgpKX1fdXNpbmdfY29tbWFuZCBfXyR7XG4gICAgICAgIHJlcGxhY2VTcGVjaWFsQ2hhcnMoY29tbWFuZC5nZXRQYXRoKCkpXG4gICAgICB9J2AsXG4gICAgKTtcbiAgICBvcHRpb25zLnNob3J0T3B0aW9uICYmIGNtZC5wdXNoKFwiLXNcIiwgb3B0aW9ucy5zaG9ydE9wdGlvbik7XG4gICAgb3B0aW9ucy5sb25nT3B0aW9uICYmIGNtZC5wdXNoKFwiLWxcIiwgb3B0aW9ucy5sb25nT3B0aW9uKTtcbiAgICBvcHRpb25zLnN0YW5kYWxvbmUgJiYgY21kLnB1c2goXCIteFwiKTtcbiAgICBjbWQucHVzaChcIi1rXCIpO1xuICAgIGNtZC5wdXNoKFwiLWZcIik7XG5cbiAgICBpZiAob3B0aW9ucy5hcmd1bWVudHMpIHtcbiAgICAgIG9wdGlvbnMucmVxdWlyZWQgJiYgY21kLnB1c2goXCItclwiKTtcbiAgICAgIGNtZC5wdXNoKFwiLWFcIiwgb3B0aW9ucy5hcmd1bWVudHMpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmRlc2NyaXB0aW9uKSB7XG4gICAgICBjb25zdCBkZXNjcmlwdGlvbjogc3RyaW5nID0gZ2V0RGVzY3JpcHRpb24ob3B0aW9ucy5kZXNjcmlwdGlvbiwgdHJ1ZSlcbiAgICAgICAgLy8gZXNjYXBlIHNpbmdsZSBxdW90ZXNcbiAgICAgICAgLnJlcGxhY2UoLycvZywgXCJcXFxcJ1wiKTtcblxuICAgICAgY21kLnB1c2goXCItZFwiLCBgJyR7ZGVzY3JpcHRpb259J2ApO1xuICAgIH1cblxuICAgIHJldHVybiBjbWQuam9pbihcIiBcIik7XG4gIH1cblxuICBwcml2YXRlIGdldENvbXBsZXRpb25Db21tYW5kKGNtZDogQ29tbWFuZCwgYXJnOiBBcmd1bWVudCk6IHN0cmluZyB7XG4gICAgY29uc3QgdHlwZSA9IGNtZC5nZXRUeXBlKGFyZy50eXBlKTtcbiAgICBpZiAodHlwZSAmJiB0eXBlLmhhbmRsZXIgaW5zdGFuY2VvZiBGaWxlVHlwZSkge1xuICAgICAgcmV0dXJuIGAnKF9fZmlzaF9jb21wbGV0ZV9wYXRoKSdgO1xuICAgIH1cbiAgICByZXR1cm4gYCcoJHt0aGlzLmNtZC5nZXROYW1lKCl9IGNvbXBsZXRpb25zIGNvbXBsZXRlICR7XG4gICAgICBhcmcuYWN0aW9uICsgXCIgXCIgKyBnZXRDb21wbGV0aW9uc1BhdGgoY21kKVxuICAgIH0pJ2A7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0Q29tbWFuZEZuTmFtZXMoXG4gIGNtZDogQ29tbWFuZCxcbiAgY21kczogQXJyYXk8c3RyaW5nPiA9IFtdLFxuKTogQXJyYXk8c3RyaW5nPiB7XG4gIGNtZHMucHVzaChgX18ke3JlcGxhY2VTcGVjaWFsQ2hhcnMoY21kLmdldFBhdGgoKSl9YCk7XG4gIGNtZC5nZXRDb21tYW5kcyhmYWxzZSkuZm9yRWFjaCgoY29tbWFuZCkgPT4ge1xuICAgIGdldENvbW1hbmRGbk5hbWVzKGNvbW1hbmQsIGNtZHMpO1xuICB9KTtcbiAgcmV0dXJuIGNtZHM7XG59XG5cbmZ1bmN0aW9uIGdldENvbXBsZXRpb25zUGF0aChjb21tYW5kOiBDb21tYW5kKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNvbW1hbmQuZ2V0UGF0aCgpXG4gICAgLnNwbGl0KFwiIFwiKVxuICAgIC5zbGljZSgxKVxuICAgIC5qb2luKFwiIFwiKTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZVNwZWNpYWxDaGFycyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvW15hLXpBLVowLTldL2csIFwiX1wiKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLGNBQWMsUUFBUSxlQUFlO0FBRzlDLFNBQVMsUUFBUSxRQUFRLG1CQUFtQjtBQVk1QyxnQ0FBZ0MsR0FDaEMsT0FBTyxNQUFNOztFQUNYLHlEQUF5RCxHQUN6RCxPQUFjLFNBQVMsR0FBWSxFQUFFO0lBQ25DLE9BQU8sSUFB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 +// denoCacheMetadata=16444499270145208952,2329141495092338438
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/454be91687a6cdd906bf292893d80849f0b0308b0c7e5faa7c2fe2cb753ce9e0.js b/vendor/gen/https/deno.land/454be91687a6cdd906bf292893d80849f0b0308b0c7e5faa7c2fe2cb753ce9e0.js new file mode 100644 index 0000000..1b6f52c --- /dev/null +++ b/vendor/gen/https/deno.land/454be91687a6cdd906bf292893d80849f0b0308b0c7e5faa7c2fe2cb753ce9e0.js @@ -0,0 +1,3 @@ +export * from "jsr:@std/encoding@1.0.10/base64"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvZGVwcy9iYXNlNjQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcImpzcjpAc3RkL2VuY29kaW5nQDEuMC4xMC9iYXNlNjRcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtDQUFrQyJ9 +// denoCacheMetadata=9700212516848836825,17896347374022825388
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/45d8062aed7e7539fcdaa85061650e6cd731b275e44ef70a3b8e5badd871205d.js b/vendor/gen/https/deno.land/45d8062aed7e7539fcdaa85061650e6cd731b275e44ef70a3b8e5badd871205d.js new file mode 100644 index 0000000..e7ad4b7 --- /dev/null +++ b/vendor/gen/https/deno.land/45d8062aed7e7539fcdaa85061650e6cd731b275e44ef70a3b8e5badd871205d.js @@ -0,0 +1,109 @@ +import { isPlainObject } from "./object.ts"; +/** Merge the cascade data */ export function mergeData(...datas) { + return datas.reduce((previous, current)=>{ + const data = { + ...previous, + ...current + }; + // Merge special keys + const mergedKeys = { + ...previous.mergedKeys, + ...current.mergedKeys + }; + for (const [key, type] of Object.entries(mergedKeys)){ + switch(type){ + case "stringArray": + data[key] = mergeStringArray(previous[key], current[key]); + break; + case "array": + data[key] = mergeArray(previous[key], current[key]); + break; + case "object": + data[key] = mergeObject(previous[key], current[key]); + break; + case "data": + if (current[key] && previous[key]) { + const merged = mergeData({ + mergedKeys + }, previous[key], current[key]); + data[key] = merged; + } + break; + } + } + return data; + }); +} +/** Override some data recursively */ export function overrideData(data, override) { + if (!override) { + return; + } + // Merge special keys + const mergedKeys = { + ...data.mergedKeys, + ...override.mergedKeys + }; + for (const [key, value] of Object.entries(override)){ + switch(mergedKeys[key]){ + case "stringArray": + data[key] = mergeStringArray(data[key], value); + break; + case "array": + data[key] = mergeArray(data[key], value); + break; + case "object": + data[key] = mergeObject(data[key], value); + break; + default: + if (isPlainObject(data[key]) && isPlainObject(value)) { + data[key] = mergeRecursiveObjects(data[key], value); + break; + } + if (value !== undefined) { + data[key] = value; + break; + } + } + } +} +function toArray(value) { + return Array.isArray(value) ? value : value === undefined || value === null ? [] : [ + value + ]; +} +function mergeArray(previous, current) { + return [ + ...new Set([ + ...toArray(previous), + ...toArray(current) + ]) + ]; +} +function mergeStringArray(previous, current) { + return [ + ...new Set(mergeArray(previous, current).map(String)) + ]; +} +function mergeObject(previous, current) { + return { + ...previous ?? {}, + ...current ?? {} + }; +} +export function mergeRecursiveObjects(target, override) { + const merged = { + ...target + }; + for (const [key, value] of Object.entries(override)){ + if (isPlainObject(target[key]) && isPlainObject(value)) { + merged[key] = mergeRecursiveObjects(target[key], value); + continue; + } + if (value !== undefined) { + merged[key] = value; + } + } + return merged; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS91dGlscy9tZXJnZV9kYXRhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhaW5PYmplY3QgfSBmcm9tIFwiLi9vYmplY3QudHNcIjtcbmltcG9ydCB7IERhdGEgfSBmcm9tIFwiLi4vZmlsZS50c1wiO1xuXG5leHBvcnQgdHlwZSBNZXJnZVN0cmF0ZWd5ID1cbiAgfCBcImFycmF5XCJcbiAgfCBcInN0cmluZ0FycmF5XCJcbiAgfCBcIm9iamVjdFwiXG4gIHwgXCJkYXRhXCJcbiAgfCBcIm5vbmVcIjtcblxuaW50ZXJmYWNlIERhdGFUb01lcmdlIHtcbiAgbWVyZ2VkS2V5cz86IFJlY29yZDxzdHJpbmcsIE1lcmdlU3RyYXRlZ3k+O1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG4vKiogTWVyZ2UgdGhlIGNhc2NhZGUgZGF0YSAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlRGF0YSguLi5kYXRhczogRGF0YVRvTWVyZ2VbXSk6IERhdGFUb01lcmdlIHtcbiAgcmV0dXJuIGRhdGFzLnJlZHVjZSgocHJldmlvdXMsIGN1cnJlbnQpID0+IHtcbiAgICBjb25zdCBkYXRhOiBEYXRhVG9NZXJnZSA9IHsgLi4ucHJldmlvdXMsIC4uLmN1cnJlbnQgfTtcblxuICAgIC8vIE1lcmdlIHNwZWNpYWwga2V5c1xuICAgIGNvbnN0IG1lcmdlZEtleXMgPSB7XG4gICAgICAuLi5wcmV2aW91cy5tZXJnZWRLZXlzLFxuICAgICAgLi4uY3VycmVudC5tZXJnZWRLZXlzLFxuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIHR5cGVdIG9mIE9iamVjdC5lbnRyaWVzKG1lcmdlZEtleXMpKSB7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBcInN0cmluZ0FycmF5XCI6XG4gICAgICAgICAgZGF0YVtrZXldID0gbWVyZ2VTdHJpbmdBcnJheShwcmV2aW91c1trZXldLCBjdXJyZW50W2tleV0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiYXJyYXlcIjpcbiAgICAgICAgICBkYXRhW2tleV0gPSBtZXJnZUFycmF5KHByZXZpb3VzW2tleV0sIGN1cnJlbnRba2V5XSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgICAgICBkYXRhW2tleV0gPSBtZXJnZU9iamVjdChwcmV2aW91c1trZXldLCBjdXJyZW50W2tleV0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiZGF0YVwiOlxuICAgICAgICAgIGlmIChjdXJyZW50W2tleV0gJiYgcHJldmlvdXNba2V5XSkge1xuICAgICAgICAgICAgY29uc3QgbWVyZ2VkID0gbWVyZ2VEYXRhKFxuICAgICAgICAgICAgICB7IG1lcmdlZEtleXMgfSxcbiAgICAgICAgICAgICAgcHJldmlvdXNba2V5XSBhcyBEYXRhVG9NZXJnZSxcbiAgICAgICAgICAgICAgY3VycmVudFtrZXldIGFzIERhdGFUb01lcmdlLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGRhdGFba2V5XSA9IG1lcmdlZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH0pO1xufVxuXG4vKiogT3ZlcnJpZGUgc29tZSBkYXRhIHJlY3Vyc2l2ZWx5ICovXG5leHBvcnQgZnVuY3Rpb24gb3ZlcnJpZGVEYXRhKGRhdGE6IERhdGEsIG92ZXJyaWRlOiBEYXRhKTogdm9pZCB7XG4gIGlmICghb3ZlcnJpZGUpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBNZXJnZSBzcGVjaWFsIGtleXNcbiAgY29uc3QgbWVyZ2VkS2V5cyA9IHtcbiAgICAuLi5kYXRhLm1lcmdlZEtleXMsXG4gICAgLi4ub3ZlcnJpZGUubWVyZ2VkS2V5cyxcbiAgfTtcblxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvdmVycmlkZSkpIHtcbiAgICBzd2l0Y2ggKG1lcmdlZEtleXNba2V5XSkge1xuICAgICAgY2FzZSBcInN0cmluZ0FycmF5XCI6XG4gICAgICAgIGRhdGFba2V5XSA9IG1lcmdlU3RyaW5nQXJyYXkoZGF0YVtrZXldLCB2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImFycmF5XCI6XG4gICAgICAgIGRhdGFba2V5XSA9IG1lcmdlQXJyYXkoZGF0YVtrZXldLCB2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICBkYXRhW2tleV0gPSBtZXJnZU9iamVjdChkYXRhW2tleV0sIHZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAoaXNQbGFpbk9iamVjdChkYXRhW2tleV0pICYmIGlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICAgICAgZGF0YVtrZXldID0gbWVyZ2VSZWN1cnNpdmVPYmplY3RzKGRhdGFba2V5XSwgdmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZGF0YVtrZXldID0gdmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9BcnJheSh2YWx1ZTogdW5rbm93bik6IHVua25vd25bXSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgID8gdmFsdWVcbiAgICA6ICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKVxuICAgID8gW11cbiAgICA6IFt2YWx1ZV07XG59XG5cbmZ1bmN0aW9uIG1lcmdlQXJyYXkocHJldmlvdXM6IHVua25vd24sIGN1cnJlbnQ6IHVua25vd24pOiB1bmtub3duW10ge1xuICByZXR1cm4gWy4uLm5ldyBTZXQoWy4uLnRvQXJyYXkocHJldmlvdXMpLCAuLi50b0FycmF5KGN1cnJlbnQpXSldO1xufVxuXG5mdW5jdGlvbiBtZXJnZVN0cmluZ0FycmF5KHByZXZpb3VzOiB1bmtub3duLCBjdXJyZW50OiB1bmtub3duKTogc3RyaW5nW10ge1xuICByZXR1cm4gWy4uLm5ldyBTZXQobWVyZ2VBcnJheShwcmV2aW91cywgY3VycmVudCkubWFwKFN0cmluZykpXTtcbn1cblxuZnVuY3Rpb24gbWVyZ2VPYmplY3QoXG4gIHByZXZpb3VzOiB1bmtub3duLFxuICBjdXJyZW50OiB1bmtub3duLFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4geyAuLi5wcmV2aW91cyA/PyB7fSwgLi4uY3VycmVudCA/PyB7fSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VSZWN1cnNpdmVPYmplY3RzKFxuICB0YXJnZXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBvdmVycmlkZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIGNvbnN0IG1lcmdlZCA9IHsgLi4udGFyZ2V0IH07XG5cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob3ZlcnJpZGUpKSB7XG4gICAgaWYgKGlzUGxhaW5PYmplY3QodGFyZ2V0W2tleV0pICYmIGlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICBtZXJnZWRba2V5XSA9IG1lcmdlUmVjdXJzaXZlT2JqZWN0cyh0YXJnZXRba2V5XSwgdmFsdWUpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG1lcmdlZFtrZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1lcmdlZDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLGFBQWEsUUFBUSxjQUFjO0FBZTVDLDJCQUEyQixHQUMzQixPQUFPLFNBQVMsVUFBVSxHQUFHLEtBQW9CO0VBQy9DLE9BQU8sTUFBTSxNQUFNLENBQUMsQ0FBQyxVQUFVO0lBQzdCLE1BQU0sT0FBb0I7TUFBRSxHQUFHLFFBQVE7TUFBRSxHQUFHLE9BQU87SUFBQztJQUVwRCxxQkFBcUI7SUFDckIsTUFBTSxhQUFhO01BQ2pCLEdBQUcsU0FBUyxVQUFVO01BQ3RCLEdBQUcsUUFBUSxVQUFVO0lBQ3ZCO0lBRUEsS0FBSyxNQUFNLENBQUMsS0FBSyxLQUFLLElBQUksT0FBTyxPQUFPLENBQUMsWUFBYTtNQUNwRCxPQUFRO1FBQ04sS0FBSztVQUNILElBQUksQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7VUFDeEQ7UUFDRixLQUFLO1VBQ0gsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7VUFDbEQ7UUFDRixLQUFLO1VBQ0gsSUFBSSxDQUFDLElBQUksR0FBRyxZQUFZLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7VUFDbkQ7UUFDRixLQUFLO1VBQ0gsSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDakMsTUFBTSxTQUFTLFVBQ2I7Y0FBRTtZQUFXLEdBQ2IsUUFBUSxDQUFDLElBQUksRUFDYixPQUFPLENBQUMsSUFBSTtZQUVkLElBQUksQ0FBQyxJQUFJLEdBQUc7VUFDZDtVQUNBO01BQ0o7SUFDRjtJQUVBLE9BQU87RUFDVDtBQUNGO0FBRUEsbUNBQW1DLEdBQ25DLE9BQU8sU0FBUyxhQUFhLElBQVUsRUFBRSxRQUFjO0VBQ3JELElBQUksQ0FBQyxVQUFVO0lBQ2I7RUFDRjtFQUVBLHFCQUFxQjtFQUNyQixNQUFNLGFBQWE7SUFDakIsR0FBRyxLQUFLLFVBQVU7SUFDbEIsR0FBRyxTQUFTLFVBQVU7RUFDeEI7RUFFQSxLQUFLLE1BQU0sQ0FBQyxLQUFLLE1BQU0sSUFBSSxPQUFPLE9BQU8sQ0FBQyxVQUFXO0lBQ25ELE9BQVEsVUFBVSxDQUFDLElBQUk7TUFDckIsS0FBSztRQUNILElBQUksQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLElBQUksQ0FBQyxJQUFJLEVBQUU7UUFDeEM7TUFDRixLQUFLO1FBQ0gsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLElBQUksQ0FBQyxJQUFJLEVBQUU7UUFDbEM7TUFDRixLQUFLO1FBQ0gsSUFBSSxDQUFDLElBQUksR0FBRyxZQUFZLElBQUksQ0FBQyxJQUFJLEVBQUU7UUFDbkM7TUFDRjtRQUNFLElBQUksY0FBYyxJQUFJLENBQUMsSUFBSSxLQUFLLGNBQWMsUUFBUTtVQUNwRCxJQUFJLENBQUMsSUFBSSxHQUFHLHNCQUFzQixJQUFJLENBQUMsSUFBSSxFQUFFO1VBQzdDO1FBQ0Y7UUFDQSxJQUFJLFVBQVUsV0FBVztVQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHO1VBQ1o7UUFDRjtJQUNKO0VBQ0Y7QUFDRjtBQUVBLFNBQVMsUUFBUSxLQUFjO0VBQzdCLE9BQU8sTUFBTSxPQUFPLENBQUMsU0FDakIsUUFDQSxBQUFDLFVBQVUsYUFBYSxVQUFVLE9BQ2xDLEVBQUUsR0FDRjtJQUFDO0dBQU07QUFDYjtBQUVBLFNBQVMsV0FBVyxRQUFpQixFQUFFLE9BQWdCO0VBQ3JELE9BQU87T0FBSSxJQUFJLElBQUk7U0FBSSxRQUFRO1NBQWMsUUFBUTtLQUFTO0dBQUU7QUFDbEU7QUFFQSxTQUFTLGlCQUFpQixRQUFpQixFQUFFLE9BQWdCO0VBQzNELE9BQU87T0FBSSxJQUFJLElBQUksV0FBVyxVQUFVLFNBQVMsR0FBRyxDQUFDO0dBQVM7QUFDaEU7QUFFQSxTQUFTLFlBQ1AsUUFBaUIsRUFDakIsT0FBZ0I7RUFFaEIsT0FBTztJQUFFLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFBRSxHQUFHLFdBQVcsQ0FBQyxDQUFDO0VBQUM7QUFDL0M7QUFFQSxPQUFPLFNBQVMsc0JBQ2QsTUFBK0IsRUFDL0IsUUFBaUM7RUFFakMsTUFBTSxTQUFTO0lBQUUsR0FBRyxNQUFNO0VBQUM7RUFFM0IsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLElBQUksT0FBTyxPQUFPLENBQUMsVUFBVztJQUNuRCxJQUFJLGNBQWMsTUFBTSxDQUFDLElBQUksS0FBSyxjQUFjLFFBQVE7TUFDdEQsTUFBTSxDQUFDLElBQUksR0FBRyxzQkFBc0IsTUFBTSxDQUFDLElBQUksRUFBRTtNQUNqRDtJQUNGO0lBRUEsSUFBSSxVQUFVLFdBQVc7TUFDdkIsTUFBTSxDQUFDLElBQUksR0FBRztJQUNoQjtFQUNGO0VBRUEsT0FBTztBQUNUIn0= +// denoCacheMetadata=2699479451449470292,8832777312800071912
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/466d17d163946adf94be4279e8491bfbcdacd7455a305c759f3d212dffa3ed2e.js b/vendor/gen/https/deno.land/466d17d163946adf94be4279e8491bfbcdacd7455a305c759f3d212dffa3ed2e.js new file mode 100644 index 0000000..07ac57f --- /dev/null +++ b/vendor/gen/https/deno.land/466d17d163946adf94be4279e8491bfbcdacd7455a305c759f3d212dffa3ed2e.js @@ -0,0 +1,13 @@ +import { StringType } from "./string.ts"; +// export interface FileTypeOptions { +// dirsOnly?: boolean; +// pattern?: string; +// ignore?: Array<string>; +// } +/** Integer type. */ export class FileType extends StringType { + constructor(){ + super(); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC90eXBlcy9maWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0cmluZ1R5cGUgfSBmcm9tIFwiLi9zdHJpbmcudHNcIjtcblxuLy8gZXhwb3J0IGludGVyZmFjZSBGaWxlVHlwZU9wdGlvbnMge1xuLy8gICBkaXJzT25seT86IGJvb2xlYW47XG4vLyAgIHBhdHRlcm4/OiBzdHJpbmc7XG4vLyAgIGlnbm9yZT86IEFycmF5PHN0cmluZz47XG4vLyB9XG5cbi8qKiBJbnRlZ2VyIHR5cGUuICovXG5leHBvcnQgY2xhc3MgRmlsZVR5cGUgZXh0ZW5kcyBTdHJpbmdUeXBlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8vIGdldE9wdGlvbnMoKTogRmlsZVR5cGVPcHRpb25zIHtcbiAgLy8gICByZXR1cm4gdGhpcy5vcHRzO1xuICAvLyB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxVQUFVLFFBQVEsY0FBYztBQUV6QyxxQ0FBcUM7QUFDckMsd0JBQXdCO0FBQ3hCLHNCQUFzQjtBQUN0Qiw0QkFBNEI7QUFDNUIsSUFBSTtBQUVKLGtCQUFrQixHQUNsQixPQUFPLE1BQU0saUJBQWlCO0VBQzVCLGFBQWM7SUFDWixLQUFLO0VBQ1A7QUFLRiJ9 +// denoCacheMetadata=4856156551876021161,6318137504007572926
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/4717b2fafbd4bc99c447f6bba6715da806a78f1510f64879572eada428cb4da8.js b/vendor/gen/https/deno.land/4717b2fafbd4bc99c447f6bba6715da806a78f1510f64879572eada428cb4da8.js new file mode 100644 index 0000000..3a0a044 --- /dev/null +++ b/vendor/gen/https/deno.land/4717b2fafbd4bc99c447f6bba6715da806a78f1510f64879572eada428cb4da8.js @@ -0,0 +1,19 @@ +export * from "./types.ts"; +export * from "./command.ts"; +export * from "./completions/mod.ts"; +export * from "./help/mod.ts"; +export * from "./upgrade/mod.ts"; +export * from "./types/action_list.ts"; +export * from "./types/boolean.ts"; +export * from "./types/child_command.ts"; +export * from "./types/command.ts"; +export * from "./types/enum.ts"; +export * from "./types/file.ts"; +export * from "./types/integer.ts"; +export * from "./types/number.ts"; +export * from "./types/string.ts"; +export * from "./type.ts"; +export { ValidationError } from "./_errors.ts"; +export * from "./deprecated.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC9tb2QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbW1hbmQudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXBsZXRpb25zL21vZC50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vaGVscC9tb2QudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VwZ3JhZGUvbW9kLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlcy9hY3Rpb25fbGlzdC50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMvYm9vbGVhbi50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMvY2hpbGRfY29tbWFuZC50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMvY29tbWFuZC50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMvZW51bS50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMvZmlsZS50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMvaW50ZWdlci50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMvbnVtYmVyLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlcy9zdHJpbmcudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGUudHNcIjtcbmV4cG9ydCB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gXCIuL19lcnJvcnMudHNcIjtcbmV4cG9ydCB7IHR5cGUgVmFsaWRhdGlvbkVycm9yT3B0aW9ucyB9IGZyb20gXCIuL19lcnJvcnMudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlcHJlY2F0ZWQudHNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWE7QUFDM0IsY0FBYyxlQUFlO0FBQzdCLGNBQWMsdUJBQXVCO0FBQ3JDLGNBQWMsZ0JBQWdCO0FBQzlCLGNBQWMsbUJBQW1CO0FBQ2pDLGNBQWMseUJBQXlCO0FBQ3ZDLGNBQWMscUJBQXFCO0FBQ25DLGNBQWMsMkJBQTJCO0FBQ3pDLGNBQWMscUJBQXFCO0FBQ25DLGNBQWMsa0JBQWtCO0FBQ2hDLGNBQWMsa0JBQWtCO0FBQ2hDLGNBQWMscUJBQXFCO0FBQ25DLGNBQWMsb0JBQW9CO0FBQ2xDLGNBQWMsb0JBQW9CO0FBQ2xDLGNBQWMsWUFBWTtBQUMxQixTQUFTLGVBQWUsUUFBUSxlQUFlO0FBRS9DLGNBQWMsa0JBQWtCIn0= +// denoCacheMetadata=8526359793277529907,9468903767449678803
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/48671f07ca6e9f20af82f7009faf390f972515c1b4e03316efba2615e2aaa243.js b/vendor/gen/https/deno.land/48671f07ca6e9f20af82f7009faf390f972515c1b4e03316efba2615e2aaa243.js new file mode 100644 index 0000000..3ece358 --- /dev/null +++ b/vendor/gen/https/deno.land/48671f07ca6e9f20af82f7009faf390f972515c1b4e03316efba2615e2aaa243.js @@ -0,0 +1,124 @@ +import { env } from "./env.ts"; +import { bold, brightGreen, cyan, gray, italic, red, strikethrough, yellow } from "../../deps/colors.ts"; +const severity = { + TRACE: 1, + DEBUG: 5, + INFO: 9, + WARN: 13, + ERROR: 17, + FATAL: 21 +}; +// Get the log level from the environment variable LUME_LOGS +const level = env("LUME_LOGS")?.toUpperCase() ?? "INFO"; +const COLOR_TAG_REG = /<(\w+)>([^<]+)<\/\1>/g; +const logFormats = { + cyan, + Cyan: (str)=>bold(cyan(str)), + red, + Red: (str)=>bold(red(str)), + gray, + code: gray, + Gray: (str)=>bold(gray(str)), + green: brightGreen, + Green: (str)=>bold(brightGreen(str)), + yellow: yellow, + Yellow: (str)=>bold(yellow(str)), + del: (str)=>strikethrough(gray(str)), + em: italic, + strong: bold +}; +/** + * This is the default logger. It will output color coded log messages to the + * console via `console.log()`. + */ class Logger { + #level; + #collection; + constructor(level){ + this.#level = severity[level]; + } + set collection(collection) { + this.#collection = collection; + } + get level() { + return this.#level; + } + #log(msg, level) { + if (level >= severity.FATAL) { + msg = `<Red>FATAL</Red> ${msg}`; + } else if (level >= severity.ERROR) { + msg = `<red>ERROR</red> ${msg}`; + } else if (level >= severity.WARN) { + msg = `<yellow>WARN</yellow> ${msg}`; + } + msg = msg.replaceAll(COLOR_TAG_REG, (all, name, content)=>logFormats[name]?.(content) ?? all); + if (level >= severity.ERROR) { + return console.error(msg); + } + if (level >= severity.WARN) { + return console.warn(msg); + } + console.log(msg); + } + fatal(msg, items) { + this.#bar(msg, "fatal", items); + this.#log(msg, severity.FATAL); + } + error(msg, items) { + if (this.#level < severity.FATAL) { + this.#bar(msg, "error", items); + this.#log(msg, severity.ERROR); + } + } + warn(msg, items) { + if (this.#level < severity.ERROR) { + this.#bar(msg, "warn", items); + this.#log(msg, severity.WARN); + } + } + info(msg) { + if (this.#level < severity.WARN) { + this.#log(msg, severity.INFO); + } + } + debug(msg) { + if (this.#level < severity.INFO) { + this.#log(msg, severity.DEBUG); + } + } + trace(msg) { + if (this.#level < severity.DEBUG) { + this.#log(msg, severity.TRACE); + } + } + #bar(title, context, items) { + const collection = this.#collection; + if (collection) { + collection.items.push({ + context, + title, + items: items?.map((item)=>typeof item === "string" ? { + title: item + } : item) + }); + } + } +} +export const log = new Logger(level); +const withValue = new Set(); +/** + * Log a message only while the condition is false. + * This is useful to avoid logging an error message in a update + * where the number of pages to process may be reduced. + */ export function warnUntil(message, condition) { + if (withValue.has(message)) { + return !!condition; + } + if (condition) { + withValue.add(message); + return true; + } + log.warn(message); + return false; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS91dGlscy9sb2cudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZW52IH0gZnJvbSBcIi4vZW52LnRzXCI7XG5pbXBvcnQge1xuICBib2xkLFxuICBicmlnaHRHcmVlbixcbiAgY3lhbixcbiAgZ3JheSxcbiAgaXRhbGljLFxuICByZWQsXG4gIHN0cmlrZXRocm91Z2gsXG4gIHllbGxvdyxcbn0gZnJvbSBcIi4uLy4uL2RlcHMvY29sb3JzLnRzXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29sbGVjdGlvbiwgSXRlbSB9IGZyb20gXCIuLi8uLi9kZXBzL2RlYnVnYmFyLnRzXCI7XG5cbmNvbnN0IHNldmVyaXR5ID0ge1xuICBUUkFDRTogMSxcbiAgREVCVUc6IDUsXG4gIElORk86IDksXG4gIFdBUk46IDEzLFxuICBFUlJPUjogMTcsXG4gIEZBVEFMOiAyMSxcbn07XG5cbnR5cGUgTGV2ZWxOYW1lID0ga2V5b2YgdHlwZW9mIHNldmVyaXR5O1xuXG4vLyBHZXQgdGhlIGxvZyBsZXZlbCBmcm9tIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBMVU1FX0xPR1NcbmNvbnN0IGxldmVsID0gZW52PExldmVsTmFtZT4oXCJMVU1FX0xPR1NcIik/LnRvVXBwZXJDYXNlKCkgYXNcbiAgfCBMZXZlbE5hbWVcbiAgfCB1bmRlZmluZWQgPz8gXCJJTkZPXCI7XG5cbmNvbnN0IENPTE9SX1RBR19SRUcgPSAvPChcXHcrKT4oW148XSspPFxcL1xcMT4vZztcblxuY29uc3QgbG9nRm9ybWF0czogUmVjb3JkPHN0cmluZywgKHN0cjogc3RyaW5nKSA9PiBzdHJpbmc+ID0ge1xuICBjeWFuLFxuICBDeWFuOiAoc3RyOiBzdHJpbmcpID0+IGJvbGQoY3lhbihzdHIpKSxcbiAgcmVkLFxuICBSZWQ6IChzdHI6IHN0cmluZykgPT4gYm9sZChyZWQoc3RyKSksXG4gIGdyYXksXG4gIGNvZGU6IGdyYXksXG4gIEdyYXk6IChzdHI6IHN0cmluZykgPT4gYm9sZChncmF5KHN0cikpLFxuICBncmVlbjogYnJpZ2h0R3JlZW4sXG4gIEdyZWVuOiAoc3RyOiBzdHJpbmcpID0+IGJvbGQoYnJpZ2h0R3JlZW4oc3RyKSksXG4gIHllbGxvdzogeWVsbG93LFxuICBZZWxsb3c6IChzdHI6IHN0cmluZykgPT4gYm9sZCh5ZWxsb3coc3RyKSksXG4gIGRlbDogKHN0cjogc3RyaW5nKSA9PiBzdHJpa2V0aHJvdWdoKGdyYXkoc3RyKSksXG4gIGVtOiBpdGFsaWMsXG4gIHN0cm9uZzogYm9sZCxcbn07XG5cbi8qKlxuICogVGhpcyBpcyB0aGUgZGVmYXVsdCBsb2dnZXIuIEl0IHdpbGwgb3V0cHV0IGNvbG9yIGNvZGVkIGxvZyBtZXNzYWdlcyB0byB0aGVcbiAqIGNvbnNvbGUgdmlhIGBjb25zb2xlLmxvZygpYC5cbiAqL1xuY2xhc3MgTG9nZ2VyIHtcbiAgI2xldmVsOiBudW1iZXI7XG4gICNjb2xsZWN0aW9uOiBDb2xsZWN0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKGxldmVsOiBMZXZlbE5hbWUpIHtcbiAgICB0aGlzLiNsZXZlbCA9IHNldmVyaXR5W2xldmVsXTtcbiAgfVxuXG4gIHNldCBjb2xsZWN0aW9uKGNvbGxlY3Rpb246IENvbGxlY3Rpb24pIHtcbiAgICB0aGlzLiNjb2xsZWN0aW9uID0gY29sbGVjdGlvbjtcbiAgfVxuXG4gIGdldCBsZXZlbCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLiNsZXZlbDtcbiAgfVxuXG4gICNsb2cobXNnOiBzdHJpbmcsIGxldmVsOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAobGV2ZWwgPj0gc2V2ZXJpdHkuRkFUQUwpIHtcbiAgICAgIG1zZyA9IGA8UmVkPkZBVEFMPC9SZWQ+ICR7bXNnfWA7XG4gICAgfSBlbHNlIGlmIChsZXZlbCA+PSBzZXZlcml0eS5FUlJPUikge1xuICAgICAgbXNnID0gYDxyZWQ+RVJST1I8L3JlZD4gJHttc2d9YDtcbiAgICB9IGVsc2UgaWYgKGxldmVsID49IHNldmVyaXR5LldBUk4pIHtcbiAgICAgIG1zZyA9IGA8eWVsbG93PldBUk48L3llbGxvdz4gJHttc2d9YDtcbiAgICB9XG5cbiAgICBtc2cgPSBtc2cucmVwbGFjZUFsbChcbiAgICAgIENPTE9SX1RBR19SRUcsXG4gICAgICAoYWxsLCBuYW1lLCBjb250ZW50KSA9PiBsb2dGb3JtYXRzW25hbWVdPy4oY29udGVudCkgPz8gYWxsLFxuICAgICk7XG5cbiAgICBpZiAobGV2ZWwgPj0gc2V2ZXJpdHkuRVJST1IpIHtcbiAgICAgIHJldHVybiBjb25zb2xlLmVycm9yKG1zZyk7XG4gICAgfVxuXG4gICAgaWYgKGxldmVsID49IHNldmVyaXR5LldBUk4pIHtcbiAgICAgIHJldHVybiBjb25zb2xlLndhcm4obXNnKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhtc2cpO1xuICB9XG5cbiAgZmF0YWwobXNnOiBzdHJpbmcsIGl0ZW1zPzogc3RyaW5nW10gfCBJdGVtW10pOiB2b2lkIHtcbiAgICB0aGlzLiNiYXIobXNnLCBcImZhdGFsXCIsIGl0ZW1zKTtcbiAgICB0aGlzLiNsb2cobXNnLCBzZXZlcml0eS5GQVRBTCk7XG4gIH1cblxuICBlcnJvcihtc2c6IHN0cmluZywgaXRlbXM/OiBzdHJpbmdbXSB8IEl0ZW1bXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNsZXZlbCA8IHNldmVyaXR5LkZBVEFMKSB7XG4gICAgICB0aGlzLiNiYXIobXNnLCBcImVycm9yXCIsIGl0ZW1zKTtcbiAgICAgIHRoaXMuI2xvZyhtc2csIHNldmVyaXR5LkVSUk9SKTtcbiAgICB9XG4gIH1cblxuICB3YXJuKG1zZzogc3RyaW5nLCBpdGVtcz86IHN0cmluZ1tdIHwgSXRlbVtdKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2xldmVsIDwgc2V2ZXJpdHkuRVJST1IpIHtcbiAgICAgIHRoaXMuI2Jhcihtc2csIFwid2FyblwiLCBpdGVtcyk7XG4gICAgICB0aGlzLiNsb2cobXNnLCBzZXZlcml0eS5XQVJOKTtcbiAgICB9XG4gIH1cblxuICBpbmZvKG1zZzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2xldmVsIDwgc2V2ZXJpdHkuV0FSTikge1xuICAgICAgdGhpcy4jbG9nKG1zZywgc2V2ZXJpdHkuSU5GTyk7XG4gICAgfVxuICB9XG5cbiAgZGVidWcobXNnOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jbGV2ZWwgPCBzZXZlcml0eS5JTkZPKSB7XG4gICAgICB0aGlzLiNsb2cobXNnLCBzZXZlcml0eS5ERUJVRyk7XG4gICAgfVxuICB9XG5cbiAgdHJhY2UobXNnOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jbGV2ZWwgPCBzZXZlcml0eS5ERUJVRykge1xuICAgICAgdGhpcy4jbG9nKG1zZywgc2V2ZXJpdHkuVFJBQ0UpO1xuICAgIH1cbiAgfVxuXG4gICNiYXIodGl0bGU6IHN0cmluZywgY29udGV4dD86IHN0cmluZywgaXRlbXM/OiBzdHJpbmdbXSB8IEl0ZW1bXSk6IHZvaWQge1xuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLiNjb2xsZWN0aW9uO1xuXG4gICAgaWYgKGNvbGxlY3Rpb24pIHtcbiAgICAgIGNvbGxlY3Rpb24uaXRlbXMucHVzaCh7XG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHRpdGxlLFxuICAgICAgICBpdGVtczogaXRlbXM/Lm1hcCgoaXRlbSkgPT5cbiAgICAgICAgICB0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIiA/IHsgdGl0bGU6IGl0ZW0gfSA6IGl0ZW1cbiAgICAgICAgKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbG9nID0gbmV3IExvZ2dlcihsZXZlbCk7XG5cbmNvbnN0IHdpdGhWYWx1ZSA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuLyoqXG4gKiBMb2cgYSBtZXNzYWdlIG9ubHkgd2hpbGUgdGhlIGNvbmRpdGlvbiBpcyBmYWxzZS5cbiAqIFRoaXMgaXMgdXNlZnVsIHRvIGF2b2lkIGxvZ2dpbmcgYW4gZXJyb3IgbWVzc2FnZSBpbiBhIHVwZGF0ZVxuICogd2hlcmUgdGhlIG51bWJlciBvZiBwYWdlcyB0byBwcm9jZXNzIG1heSBiZSByZWR1Y2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2FyblVudGlsKG1lc3NhZ2U6IHN0cmluZywgY29uZGl0aW9uOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGlmICh3aXRoVmFsdWUuaGFzKG1lc3NhZ2UpKSB7XG4gICAgcmV0dXJuICEhY29uZGl0aW9uO1xuICB9XG4gIGlmIChjb25kaXRpb24pIHtcbiAgICB3aXRoVmFsdWUuYWRkKG1lc3NhZ2UpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGxvZy53YXJuKG1lc3NhZ2UpO1xuICByZXR1cm4gZmFsc2U7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxHQUFHLFFBQVEsV0FBVztBQUMvQixTQUNFLElBQUksRUFDSixXQUFXLEVBQ1gsSUFBSSxFQUNKLElBQUksRUFDSixNQUFNLEVBQ04sR0FBRyxFQUNILGFBQWEsRUFDYixNQUFNLFFBQ0QsdUJBQXVCO0FBSTlCLE1BQU0sV0FBVztFQUNmLE9BQU87RUFDUCxPQUFPO0VBQ1AsTUFBTTtFQUNOLE1BQU07RUFDTixPQUFPO0VBQ1AsT0FBTztBQUNUO0FBSUEsNERBQTREO0FBQzVELE1BQU0sUUFBUSxJQUFlLGNBQWMsaUJBRTFCO0FBRWpCLE1BQU0sZ0JBQWdCO0FBRXRCLE1BQU0sYUFBc0Q7RUFDMUQ7RUFDQSxNQUFNLENBQUMsTUFBZ0IsS0FBSyxLQUFLO0VBQ2pDO0VBQ0EsS0FBSyxDQUFDLE1BQWdCLEtBQUssSUFBSTtFQUMvQjtFQUNBLE1BQU07RUFDTixNQUFNLENBQUMsTUFBZ0IsS0FBSyxLQUFLO0VBQ2pDLE9BQU87RUFDUCxPQUFPLENBQUMsTUFBZ0IsS0FBSyxZQUFZO0VBQ3pDLFFBQVE7RUFDUixRQUFRLENBQUMsTUFBZ0IsS0FBSyxPQUFPO0VBQ3JDLEtBQUssQ0FBQyxNQUFnQixjQUFjLEtBQUs7RUFDekMsSUFBSTtFQUNKLFFBQVE7QUFDVjtBQUVBOzs7Q0FHQyxHQUNELE1BQU07RUFDSixDQUFBLEtBQU0sQ0FBUztFQUNmLENBQUEsVUFBVyxDQUF5QjtFQUVwQyxZQUFZLEtBQWdCLENBQUU7SUFDNUIsSUFBSSxDQUFDLENBQUEsS0FBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNO0VBQy9CO0VBRUEsSUFBSSxXQUFXLFVBQXNCLEVBQUU7SUFDckMsSUFBSSxDQUFDLENBQUEsVUFBVyxHQUFHO0VBQ3JCO0VBRUEsSUFBSSxRQUFnQjtJQUNsQixPQUFPLElBQUksQ0FBQyxDQUFBLEtBQU07RUFDcEI7RUFFQSxDQUFBLEdBQUksQ0FBQyxHQUFXLEVBQUUsS0FBYTtJQUM3QixJQUFJLFNBQVMsU0FBUyxLQUFLLEVBQUU7TUFDM0IsTUFBTSxDQUFDLGlCQUFpQixFQUFFLEtBQUs7SUFDakMsT0FBTyxJQUFJLFNBQVMsU0FBUyxLQUFLLEVBQUU7TUFDbEMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLEtBQUs7SUFDakMsT0FBTyxJQUFJLFNBQVMsU0FBUyxJQUFJLEVBQUU7TUFDakMsTUFBTSxDQUFDLHNCQUFzQixFQUFFLEtBQUs7SUFDdEM7SUFFQSxNQUFNLElBQUksVUFBVSxDQUNsQixlQUNBLENBQUMsS0FBSyxNQUFNLFVBQVksVUFBVSxDQUFDLEtBQUssR0FBRyxZQUFZO0lBR3pELElBQUksU0FBUyxTQUFTLEtBQUssRUFBRTtNQUMzQixPQUFPLFFBQVEsS0FBSyxDQUFDO0lBQ3ZCO0lBRUEsSUFBSSxTQUFTLFNBQVMsSUFBSSxFQUFFO01BQzFCLE9BQU8sUUFBUSxJQUFJLENBQUM7SUFDdEI7SUFFQSxRQUFRLEdBQUcsQ0FBQztFQUNkO0VBRUEsTUFBTSxHQUFXLEVBQUUsS0FBeUIsRUFBUTtJQUNsRCxJQUFJLENBQUMsQ0FBQSxHQUFJLENBQUMsS0FBSyxTQUFTO0lBQ3hCLElBQUksQ0FBQyxDQUFBLEdBQUksQ0FBQyxLQUFLLFNBQVMsS0FBSztFQUMvQjtFQUVBLE1BQU0sR0FBVyxFQUFFLEtBQXlCLEVBQVE7SUFDbEQsSUFBSSxJQUFJLENBQUMsQ0FBQSxLQUFNLEdBQUcsU0FBUyxLQUFLLEVBQUU7TUFDaEMsSUFBSSxDQUFDLENBQUEsR0FBSSxDQUFDLEtBQUssU0FBUztNQUN4QixJQUFJLENBQUMsQ0FBQSxHQUFJLENBQUMsS0FBSyxTQUFTLEtBQUs7SUFDL0I7RUFDRjtFQUVBLEtBQUssR0FBVyxFQUFFLEtBQXlCLEVBQVE7SUFDakQsSUFBSSxJQUFJLENBQUMsQ0FBQSxLQUFNLEdBQUcsU0FBUyxLQUFLLEVBQUU7TUFDaEMsSUFBSSxDQUFDLENBQUEsR0FBSSxDQUFDLEtBQUssUUFBUTtNQUN2QixJQUFJLENBQUMsQ0FBQSxHQUFJLENBQUMsS0FBSyxTQUFTLElBQUk7SUFDOUI7RUFDRjtFQUVBLEtBQUssR0FBVyxFQUFRO0lBQ3RCLElBQUksSUFBSSxDQUFDLENBQUEsS0FBTSxHQUFHLFNBQVMsSUFBSSxFQUFFO01BQy9CLElBQUksQ0FBQyxDQUFBLEdBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSTtJQUM5QjtFQUNGO0VBRUEsTUFBTSxHQUFXLEVBQVE7SUFDdkIsSUFBSSxJQUFJLENBQUMsQ0FBQSxLQUFNLEdBQUcsU0FBUyxJQUFJLEVBQUU7TUFDL0IsSUFBSSxDQUFDLENBQUEsR0FBSSxDQUFDLEtBQUssU0FBUyxLQUFLO0lBQy9CO0VBQ0Y7RUFFQSxNQUFNLEdBQVcsRUFBUTtJQUN2QixJQUFJLElBQUksQ0FBQyxDQUFBLEtBQU0sR0FBRyxTQUFTLEtBQUssRUFBRTtNQUNoQyxJQUFJLENBQUMsQ0FBQSxHQUFJLENBQUMsS0FBSyxTQUFTLEtBQUs7SUFDL0I7RUFDRjtFQUVBLENBQUEsR0FBSSxDQUFDLEtBQWEsRUFBRSxPQUFnQixFQUFFLEtBQXlCO0lBQzdELE1BQU0sYUFBYSxJQUFJLENBQUMsQ0FBQSxVQUFXO0lBRW5DLElBQUksWUFBWTtNQUNkLFdBQVcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNwQjtRQUNBO1FBQ0EsT0FBTyxPQUFPLElBQUksQ0FBQyxPQUNqQixPQUFPLFNBQVMsV0FBVztZQUFFLE9BQU87VUFBSyxJQUFJO01BRWpEO0lBQ0Y7RUFDRjtBQUNGO0FBRUEsT0FBTyxNQUFNLE1BQU0sSUFBSSxPQUFPLE9BQU87QUFFckMsTUFBTSxZQUFZLElBQUk7QUFDdEI7Ozs7Q0FJQyxHQUNELE9BQU8sU0FBUyxVQUFVLE9BQWUsRUFBRSxTQUFrQjtFQUMzRCxJQUFJLFVBQVUsR0FBRyxDQUFDLFVBQVU7SUFDMUIsT0FBTyxDQUFDLENBQUM7RUFDWDtFQUNBLElBQUksV0FBVztJQUNiLFVBQVUsR0FBRyxDQUFDO0lBQ2QsT0FBTztFQUNUO0VBQ0EsSUFBSSxJQUFJLENBQUM7RUFDVCxPQUFPO0FBQ1QifQ== +// denoCacheMetadata=14134521812167614820,3398897685729295947
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/4be9cb631cde86b7757ecc3603b33f01eae85c5790148f8e7d302170a8953848.js b/vendor/gen/https/deno.land/4be9cb631cde86b7757ecc3603b33f01eae85c5790148f8e7d302170a8953848.js new file mode 100644 index 0000000..ca8ba19 --- /dev/null +++ b/vendor/gen/https/deno.land/4be9cb631cde86b7757ecc3603b33f01eae85c5790148f8e7d302170a8953848.js @@ -0,0 +1,26 @@ +import yamlLoader from "../core/loaders/yaml.ts"; +import { merge } from "../core/utils/object.ts"; +// Default options +export const defaults = { + extensions: [ + ".yaml", + ".yml" + ] +}; +/** + * A plugin to load YAML data files and pages + * Installed by default + * @see https://lume.land/plugins/yaml/ + */ export function yaml(userOptions) { + const options = merge(defaults, userOptions); + return (site)=>{ + site.loadData(options.extensions, yamlLoader); + site.loadPages(options.extensions, { + loader: yamlLoader, + pageSubExtension: options.pageSubExtension + }); + }; +} +export default yaml; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvcGx1Z2lucy95YW1sLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB5YW1sTG9hZGVyIGZyb20gXCIuLi9jb3JlL2xvYWRlcnMveWFtbC50c1wiO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tIFwiLi4vY29yZS91dGlscy9vYmplY3QudHNcIjtcblxuaW1wb3J0IHR5cGUgU2l0ZSBmcm9tIFwiLi4vY29yZS9zaXRlLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIC8qKiBGaWxlIGV4dGVuc2lvbnMgdG8gbG9hZCAqL1xuICBleHRlbnNpb25zPzogc3RyaW5nW107XG5cbiAgLyoqIE9wdGlvbmFsIHN1Yi1leHRlbnNpb24gZm9yIHBhZ2UgZmlsZXMgKi9cbiAgcGFnZVN1YkV4dGVuc2lvbj86IHN0cmluZztcbn1cblxuLy8gRGVmYXVsdCBvcHRpb25zXG5leHBvcnQgY29uc3QgZGVmYXVsdHM6IE9wdGlvbnMgPSB7XG4gIGV4dGVuc2lvbnM6IFtcIi55YW1sXCIsIFwiLnltbFwiXSxcbn07XG5cbi8qKlxuICogQSBwbHVnaW4gdG8gbG9hZCBZQU1MIGRhdGEgZmlsZXMgYW5kIHBhZ2VzXG4gKiBJbnN0YWxsZWQgYnkgZGVmYXVsdFxuICogQHNlZSBodHRwczovL2x1bWUubGFuZC9wbHVnaW5zL3lhbWwvXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB5YW1sKHVzZXJPcHRpb25zPzogT3B0aW9ucykge1xuICBjb25zdCBvcHRpb25zID0gbWVyZ2UoZGVmYXVsdHMsIHVzZXJPcHRpb25zKTtcblxuICByZXR1cm4gKHNpdGU6IFNpdGUpID0+IHtcbiAgICBzaXRlLmxvYWREYXRhKG9wdGlvbnMuZXh0ZW5zaW9ucywgeWFtbExvYWRlcik7XG4gICAgc2l0ZS5sb2FkUGFnZXMob3B0aW9ucy5leHRlbnNpb25zLCB7XG4gICAgICBsb2FkZXI6IHlhbWxMb2FkZXIsXG4gICAgICBwYWdlU3ViRXh0ZW5zaW9uOiBvcHRpb25zLnBhZ2VTdWJFeHRlbnNpb24sXG4gICAgfSk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHlhbWw7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxnQkFBZ0IsMEJBQTBCO0FBQ2pELFNBQVMsS0FBSyxRQUFRLDBCQUEwQjtBQVloRCxrQkFBa0I7QUFDbEIsT0FBTyxNQUFNLFdBQW9CO0VBQy9CLFlBQVk7SUFBQztJQUFTO0dBQU87QUFDL0IsRUFBRTtBQUVGOzs7O0NBSUMsR0FDRCxPQUFPLFNBQVMsS0FBSyxXQUFxQjtFQUN4QyxNQUFNLFVBQVUsTUFBTSxVQUFVO0VBRWhDLE9BQU8sQ0FBQztJQUNOLEtBQUssUUFBUSxDQUFDLFFBQVEsVUFBVSxFQUFFO0lBQ2xDLEtBQUssU0FBUyxDQUFDLFFBQVEsVUFBVSxFQUFFO01BQ2pDLFFBQVE7TUFDUixrQkFBa0IsUUFBUSxnQkFBZ0I7SUFDNUM7RUFDRjtBQUNGO0FBRUEsZUFBZSxLQUFLIn0= +// denoCacheMetadata=6763049573503005894,8846007188765936040
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/4c3a319d1ee41f5d5c8b2641ebb010f5317ef20a6302108732d7ce6cc5b20bbe.js b/vendor/gen/https/deno.land/4c3a319d1ee41f5d5c8b2641ebb010f5317ef20a6302108732d7ce6cc5b20bbe.js new file mode 100644 index 0000000..93d511d --- /dev/null +++ b/vendor/gen/https/deno.land/4c3a319d1ee41f5d5c8b2641ebb010f5317ef20a6302108732d7ce6cc5b20bbe.js @@ -0,0 +1,130 @@ +import { GenericPrompt } from "./_generic_prompt.ts"; +import { GenericSuggestions } from "./_generic_suggestions.ts"; +import { brightBlue, dim, normalize, underline, yellow } from "./deps.ts"; +import { Figures } from "./figures.ts"; +/** List prompt representation. */ export class List extends GenericSuggestions { + /** Execute the prompt and show cursor on end. */ static prompt(options) { + if (typeof options === "string") { + options = { + message: options + }; + } + return new this({ + pointer: brightBlue(Figures.POINTER_SMALL), + prefix: yellow("? "), + indent: " ", + listPointer: brightBlue(Figures.POINTER), + maxRows: 8, + separator: ",", + minLength: 0, + maxLength: Infinity, + minTags: 0, + maxTags: Infinity, + ...options + }).prompt(); + } + /** + * Inject prompt value. Can be used for unit tests or pre selections. + * @param value Input value. + */ static inject(value) { + GenericPrompt.inject(value); + } + input() { + const oldInput = this.inputValue; + const tags = this.getTags(oldInput); + const separator = this.settings.separator + " "; + if (this.settings.files && tags.length > 1) { + tags[tags.length - 2] = normalize(tags[tags.length - 2]); + } + this.inputValue = tags.join(separator); + const diff = oldInput.length - this.inputValue.length; + this.inputIndex -= diff; + this.cursor.x -= diff; + return tags.map((val)=>underline(val)).join(separator) + dim(this.getSuggestion()); + } + getTags(value = this.inputValue) { + return value.trim().split(this.regexp()); + } + /** Create list regex.*/ regexp() { + return new RegExp(this.settings.separator === " " ? ` +` : ` *${this.settings.separator} *`); + } + success(value) { + this.saveSuggestions(...value); + return super.success(value); + } + /** Get input value. */ getValue() { + // Remove trailing comma and spaces. + const input = this.inputValue.replace(/,+\s*$/, ""); + if (!this.settings.files) { + return input; + } + return this.getTags(input).map(normalize).join(this.settings.separator + " "); + } + getCurrentInputValue() { + return this.getTags().pop() ?? ""; + } + /** Add char. */ addChar(char) { + switch(char){ + case this.settings.separator: + if (this.inputValue.length && this.inputValue.trim().slice(-1) !== this.settings.separator) { + super.addChar(char); + } + this.suggestionsIndex = -1; + this.suggestionsOffset = 0; + break; + default: + super.addChar(char); + } + } + /** Delete char left. */ deleteChar() { + if (this.inputValue[this.inputIndex - 1] === " ") { + super.deleteChar(); + } + super.deleteChar(); + } + async complete() { + const tags = this.getTags().slice(0, -1); + tags.push(await super.complete()); + return tags.join(this.settings.separator + " "); + } + /** + * Validate input value. + * @param value User input value. + * @return True on success, false or error message on error. + */ validate(value) { + if (typeof value !== "string") { + return false; + } + const values = this.transform(value); + for (const val of values){ + if (val.length < this.settings.minLength) { + return `Value must be longer than ${this.settings.minLength} but has a length of ${val.length}.`; + } + if (val.length > this.settings.maxLength) { + return `Value can't be longer than ${this.settings.maxLength} but has a length of ${val.length}.`; + } + } + if (values.length < this.settings.minTags) { + return `The minimum number of tags is ${this.settings.minTags} but got ${values.length}.`; + } + if (values.length > this.settings.maxTags) { + return `The maximum number of tags is ${this.settings.maxTags} but got ${values.length}.`; + } + return true; + } + /** + * Map input value to output value. + * @param value Input value. + * @return Output value. + */ transform(value) { + return this.getTags(value).filter((val)=>val !== ""); + } + /** + * Format output value. + * @param value Output value. + */ format(value) { + return value.join(`, `); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvcHJvbXB0L2xpc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2VuZXJpY1Byb21wdCB9IGZyb20gXCIuL19nZW5lcmljX3Byb21wdC50c1wiO1xuaW1wb3J0IHtcbiAgR2VuZXJpY1N1Z2dlc3Rpb25zLFxuICBHZW5lcmljU3VnZ2VzdGlvbnNLZXlzLFxuICBHZW5lcmljU3VnZ2VzdGlvbnNPcHRpb25zLFxuICBHZW5lcmljU3VnZ2VzdGlvbnNTZXR0aW5ncyxcbn0gZnJvbSBcIi4vX2dlbmVyaWNfc3VnZ2VzdGlvbnMudHNcIjtcbmltcG9ydCB7IGJyaWdodEJsdWUsIGRpbSwgbm9ybWFsaXplLCB1bmRlcmxpbmUsIHllbGxvdyB9IGZyb20gXCIuL2RlcHMudHNcIjtcbmltcG9ydCB7IEZpZ3VyZXMgfSBmcm9tIFwiLi9maWd1cmVzLnRzXCI7XG5cbi8qKiBMaXN0IGtleSBvcHRpb25zLiAqL1xuZXhwb3J0IHR5cGUgTGlzdEtleXMgPSBHZW5lcmljU3VnZ2VzdGlvbnNLZXlzO1xuXG4vKiogTGlzdCBwcm9tcHQgb3B0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdE9wdGlvbnNcbiAgZXh0ZW5kcyBHZW5lcmljU3VnZ2VzdGlvbnNPcHRpb25zPHN0cmluZ1tdLCBzdHJpbmc+IHtcbiAgc2VwYXJhdG9yPzogc3RyaW5nO1xuICBtaW5MZW5ndGg/OiBudW1iZXI7XG4gIG1heExlbmd0aD86IG51bWJlcjtcbiAgbWluVGFncz86IG51bWJlcjtcbiAgbWF4VGFncz86IG51bWJlcjtcbiAga2V5cz86IExpc3RLZXlzO1xufVxuXG4vKiogTGlzdCBwcm9tcHQgc2V0dGluZ3MuICovXG5pbnRlcmZhY2UgTGlzdFNldHRpbmdzIGV4dGVuZHMgR2VuZXJpY1N1Z2dlc3Rpb25zU2V0dGluZ3M8c3RyaW5nW10sIHN0cmluZz4ge1xuICBzZXBhcmF0b3I6IHN0cmluZztcbiAgbWluTGVuZ3RoOiBudW1iZXI7XG4gIG1heExlbmd0aDogbnVtYmVyO1xuICBtaW5UYWdzOiBudW1iZXI7XG4gIG1heFRhZ3M6IG51bWJlcjtcbiAga2V5cz86IExpc3RLZXlzO1xufVxuXG4vKiogTGlzdCBwcm9tcHQgcmVwcmVzZW50YXRpb24uICovXG5leHBvcnQgY2xhc3MgTGlzdCBleHRlbmRzIEdlbmVyaWNTdWdnZXN0aW9uczxzdHJpbmdbXSwgc3RyaW5nLCBMaXN0U2V0dGluZ3M+IHtcbiAgLyoqIEV4ZWN1dGUgdGhlIHByb21wdCBhbmQgc2hvdyBjdXJzb3Igb24gZW5kLiAqL1xuICBwdWJsaWMgc3RhdGljIHByb21wdChvcHRpb25zOiBzdHJpbmcgfCBMaXN0T3B0aW9ucyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIG9wdGlvbnMgPSB7IG1lc3NhZ2U6IG9wdGlvbnMgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IHRoaXMoe1xuICAgICAgcG9pbnRlcjogYnJpZ2h0Qmx1ZShGaWd1cmVzLlBPSU5URVJfU01BTEwpLFxuICAgICAgcHJlZml4OiB5ZWxsb3coXCI/IFwiKSxcbiAgICAgIGluZGVudDogXCIgXCIsXG4gICAgICBsaXN0UG9pbnRlcjogYnJpZ2h0Qmx1ZShGaWd1cmVzLlBPSU5URVIpLFxuICAgICAgbWF4Um93czogOCxcbiAgICAgIHNlcGFyYXRvcjogXCIsXCIsXG4gICAgICBtaW5MZW5ndGg6IDAsXG4gICAgICBtYXhMZW5ndGg6IEluZmluaXR5LFxuICAgICAgbWluVGFnczogMCxcbiAgICAgIG1heFRhZ3M6IEluZmluaXR5LFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KS5wcm9tcHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmplY3QgcHJvbXB0IHZhbHVlLiBDYW4gYmUgdXNlZCBmb3IgdW5pdCB0ZXN0cyBvciBwcmUgc2VsZWN0aW9ucy5cbiAgICogQHBhcmFtIHZhbHVlIElucHV0IHZhbHVlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpbmplY3QodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIEdlbmVyaWNQcm9tcHQuaW5qZWN0KHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnB1dCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG9sZElucHV0OiBzdHJpbmcgPSB0aGlzLmlucHV0VmFsdWU7XG4gICAgY29uc3QgdGFnczogc3RyaW5nW10gPSB0aGlzLmdldFRhZ3Mob2xkSW5wdXQpO1xuICAgIGNvbnN0IHNlcGFyYXRvcjogc3RyaW5nID0gdGhpcy5zZXR0aW5ncy5zZXBhcmF0b3IgKyBcIiBcIjtcblxuICAgIGlmICh0aGlzLnNldHRpbmdzLmZpbGVzICYmIHRhZ3MubGVuZ3RoID4gMSkge1xuICAgICAgdGFnc1t0YWdzLmxlbmd0aCAtIDJdID0gbm9ybWFsaXplKHRhZ3NbdGFncy5sZW5ndGggLSAyXSk7XG4gICAgfVxuXG4gICAgdGhpcy5pbnB1dFZhbHVlID0gdGFncy5qb2luKHNlcGFyYXRvcik7XG5cbiAgICBjb25zdCBkaWZmID0gb2xkSW5wdXQubGVuZ3RoIC0gdGhpcy5pbnB1dFZhbHVlLmxlbmd0aDtcbiAgICB0aGlzLmlucHV0SW5kZXggLT0gZGlmZjtcbiAgICB0aGlzLmN1cnNvci54IC09IGRpZmY7XG5cbiAgICByZXR1cm4gdGFnc1xuICAgICAgLm1hcCgodmFsOiBzdHJpbmcpID0+IHVuZGVybGluZSh2YWwpKVxuICAgICAgLmpvaW4oc2VwYXJhdG9yKSArXG4gICAgICBkaW0odGhpcy5nZXRTdWdnZXN0aW9uKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFRhZ3ModmFsdWU6IHN0cmluZyA9IHRoaXMuaW5wdXRWYWx1ZSk6IEFycmF5PHN0cmluZz4ge1xuICAgIHJldHVybiB2YWx1ZS50cmltKCkuc3BsaXQodGhpcy5yZWdleHAoKSk7XG4gIH1cblxuICAvKiogQ3JlYXRlIGxpc3QgcmVnZXguKi9cbiAgcHJvdGVjdGVkIHJlZ2V4cCgpOiBSZWdFeHAge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKFxuICAgICAgdGhpcy5zZXR0aW5ncy5zZXBhcmF0b3IgPT09IFwiIFwiID8gYCArYCA6IGAgKiR7dGhpcy5zZXR0aW5ncy5zZXBhcmF0b3J9ICpgLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3VjY2Vzcyh2YWx1ZTogc3RyaW5nW10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHRoaXMuc2F2ZVN1Z2dlc3Rpb25zKC4uLnZhbHVlKTtcbiAgICByZXR1cm4gc3VwZXIuc3VjY2Vzcyh2YWx1ZSk7XG4gIH1cblxuICAvKiogR2V0IGlucHV0IHZhbHVlLiAqL1xuICBwcm90ZWN0ZWQgZ2V0VmFsdWUoKTogc3RyaW5nIHtcbiAgICAvLyBSZW1vdmUgdHJhaWxpbmcgY29tbWEgYW5kIHNwYWNlcy5cbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuaW5wdXRWYWx1ZS5yZXBsYWNlKC8sK1xccyokLywgXCJcIik7XG5cbiAgICBpZiAoIXRoaXMuc2V0dGluZ3MuZmlsZXMpIHtcbiAgICAgIHJldHVybiBpbnB1dDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXRUYWdzKGlucHV0KVxuICAgICAgLm1hcChub3JtYWxpemUpXG4gICAgICAuam9pbih0aGlzLnNldHRpbmdzLnNlcGFyYXRvciArIFwiIFwiKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDdXJyZW50SW5wdXRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFRhZ3MoKS5wb3AoKSA/PyBcIlwiO1xuICB9XG5cbiAgLyoqIEFkZCBjaGFyLiAqL1xuICBwcm90ZWN0ZWQgYWRkQ2hhcihjaGFyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGNoYXIpIHtcbiAgICAgIGNhc2UgdGhpcy5zZXR0aW5ncy5zZXBhcmF0b3I6XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmlucHV0VmFsdWUubGVuZ3RoICYmXG4gICAgICAgICAgdGhpcy5pbnB1dFZhbHVlLnRyaW0oKS5zbGljZSgtMSkgIT09IHRoaXMuc2V0dGluZ3Muc2VwYXJhdG9yXG4gICAgICAgICkge1xuICAgICAgICAgIHN1cGVyLmFkZENoYXIoY2hhcik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdWdnZXN0aW9uc0luZGV4ID0gLTE7XG4gICAgICAgIHRoaXMuc3VnZ2VzdGlvbnNPZmZzZXQgPSAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHN1cGVyLmFkZENoYXIoY2hhcik7XG4gICAgfVxuICB9XG5cbiAgLyoqIERlbGV0ZSBjaGFyIGxlZnQuICovXG4gIHByb3RlY3RlZCBkZWxldGVDaGFyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlucHV0VmFsdWVbdGhpcy5pbnB1dEluZGV4IC0gMV0gPT09IFwiIFwiKSB7XG4gICAgICBzdXBlci5kZWxldGVDaGFyKCk7XG4gICAgfVxuICAgIHN1cGVyLmRlbGV0ZUNoYXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBjb21wbGV0ZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHRhZ3MgPSB0aGlzLmdldFRhZ3MoKS5zbGljZSgwLCAtMSk7XG4gICAgdGFncy5wdXNoKGF3YWl0IHN1cGVyLmNvbXBsZXRlKCkpO1xuICAgIHJldHVybiB0YWdzLmpvaW4odGhpcy5zZXR0aW5ncy5zZXBhcmF0b3IgKyBcIiBcIik7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgaW5wdXQgdmFsdWUuXG4gICAqIEBwYXJhbSB2YWx1ZSBVc2VyIGlucHV0IHZhbHVlLlxuICAgKiBAcmV0dXJuIFRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3IgZXJyb3IgbWVzc2FnZSBvbiBlcnJvci5cbiAgICovXG4gIHByb3RlY3RlZCB2YWxpZGF0ZSh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB8IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMudHJhbnNmb3JtKHZhbHVlKTtcblxuICAgIGZvciAoY29uc3QgdmFsIG9mIHZhbHVlcykge1xuICAgICAgaWYgKHZhbC5sZW5ndGggPCB0aGlzLnNldHRpbmdzLm1pbkxlbmd0aCkge1xuICAgICAgICByZXR1cm4gYFZhbHVlIG11c3QgYmUgbG9uZ2VyIHRoYW4gJHt0aGlzLnNldHRpbmdzLm1pbkxlbmd0aH0gYnV0IGhhcyBhIGxlbmd0aCBvZiAke3ZhbC5sZW5ndGh9LmA7XG4gICAgICB9XG4gICAgICBpZiAodmFsLmxlbmd0aCA+IHRoaXMuc2V0dGluZ3MubWF4TGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBgVmFsdWUgY2FuJ3QgYmUgbG9uZ2VyIHRoYW4gJHt0aGlzLnNldHRpbmdzLm1heExlbmd0aH0gYnV0IGhhcyBhIGxlbmd0aCBvZiAke3ZhbC5sZW5ndGh9LmA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPCB0aGlzLnNldHRpbmdzLm1pblRhZ3MpIHtcbiAgICAgIHJldHVybiBgVGhlIG1pbmltdW0gbnVtYmVyIG9mIHRhZ3MgaXMgJHt0aGlzLnNldHRpbmdzLm1pblRhZ3N9IGJ1dCBnb3QgJHt2YWx1ZXMubGVuZ3RofS5gO1xuICAgIH1cbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IHRoaXMuc2V0dGluZ3MubWF4VGFncykge1xuICAgICAgcmV0dXJuIGBUaGUgbWF4aW11bSBudW1iZXIgb2YgdGFncyBpcyAke3RoaXMuc2V0dGluZ3MubWF4VGFnc30gYnV0IGdvdCAke3ZhbHVlcy5sZW5ndGh9LmA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogTWFwIGlucHV0IHZhbHVlIHRvIG91dHB1dCB2YWx1ZS5cbiAgICogQHBhcmFtIHZhbHVlIElucHV0IHZhbHVlLlxuICAgKiBAcmV0dXJuIE91dHB1dCB2YWx1ZS5cbiAgICovXG4gIHByb3RlY3RlZCB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRUYWdzKHZhbHVlKS5maWx0ZXIoKHZhbCkgPT4gdmFsICE9PSBcIlwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXQgb3V0cHV0IHZhbHVlLlxuICAgKiBAcGFyYW0gdmFsdWUgT3V0cHV0IHZhbHVlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGZvcm1hdCh2YWx1ZTogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZS5qb2luKGAsIGApO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxhQUFhLFFBQVEsdUJBQXVCO0FBQ3JELFNBQ0Usa0JBQWtCLFFBSWIsNEJBQTRCO0FBQ25DLFNBQVMsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxZQUFZO0FBQzFFLFNBQVMsT0FBTyxRQUFRLGVBQWU7QUEwQnZDLGdDQUFnQyxHQUNoQyxPQUFPLE1BQU0sYUFBYTtFQUN4QiwrQ0FBK0MsR0FDL0MsT0FBYyxPQUFPLE9BQTZCLEVBQXFCO0lBQ3JFLElBQUksT0FBTyxZQUFZLFVBQVU7TUFDL0IsVUFBVTtRQUFFLFNBQVM7TUFBUTtJQUMvQjtJQUVBLE9BQU8sSUFBSSxJQUFJLENBQUM7TUFDZCxTQUFTLFdBQVcsUUFBUSxhQUFhO01BQ3pDLFFBQVEsT0FBTztNQUNmLFFBQVE7TUFDUixhQUFhLFdBQVcsUUFBUSxPQUFPO01BQ3ZDLFNBQVM7TUFDVCxXQUFXO01BQ1gsV0FBVztNQUNYLFdBQVc7TUFDWCxTQUFTO01BQ1QsU0FBUztNQUNULEdBQUcsT0FBTztJQUNaLEdBQUcsTUFBTTtFQUNYO0VBRUE7OztHQUdDLEdBQ0QsT0FBYyxPQUFPLEtBQWEsRUFBUTtJQUN4QyxjQUFjLE1BQU0sQ0FBQztFQUN2QjtFQUVVLFFBQWdCO0lBQ3hCLE1BQU0sV0FBbUIsSUFBSSxDQUFDLFVBQVU7SUFDeEMsTUFBTSxPQUFpQixJQUFJLENBQUMsT0FB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 +// denoCacheMetadata=7590328350737927492,14813455011803553111
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/4c9f25e769e1a9c9f2f8c94b39029dcc87c86a632b003d42777b479230b4a94b.js b/vendor/gen/https/deno.land/4c9f25e769e1a9c9f2f8c94b39029dcc87c86a632b003d42777b479230b4a94b.js new file mode 100644 index 0000000..858384b --- /dev/null +++ b/vendor/gen/https/deno.land/4c9f25e769e1a9c9f2f8c94b39029dcc87c86a632b003d42777b479230b4a94b.js @@ -0,0 +1,233 @@ +import { Node, nodesAndTextNodes, NodeType } from "./node.ts"; +import UtilTypes from "./utils-types.ts"; +export const upperCaseCharRe = /[A-Z]/; +export const lowerCaseCharRe = /[a-z]/; +/** + * Convert JS property name to dataset attribute name without + * validation + */ export function getDatasetHtmlAttrName(name) { + let attributeName = "data-"; + for (const char of name){ + if (upperCaseCharRe.test(char)) { + attributeName += "-" + char.toLowerCase(); + } else { + attributeName += char; + } + } + return attributeName; +} +export function getDatasetJavascriptName(name) { + let javascriptName = ""; + let prevChar = ""; + for (const char of name.slice("data-".length)){ + if (prevChar === "-" && lowerCaseCharRe.test(char)) { + javascriptName += char.toUpperCase(); + prevChar = ""; + } else { + javascriptName += prevChar; + prevChar = char; + } + } + return javascriptName + prevChar; +} +export function getElementsByClassName(element, classNames, search) { + for (const child of element.childNodes){ + if (child.nodeType === NodeType.ELEMENT_NODE) { + let matchesCount = 0; + for (const singleClassName of classNames){ + if (child.classList.contains(singleClassName)) { + matchesCount++; + } + } + // ensure that all class names are present + if (matchesCount === classNames.length) { + search.push(child); + } + getElementsByClassName(child, classNames, search); + } + } + return search; +} +function getOuterHTMLOpeningTag(parentElement) { + return "<" + parentElement.localName + getElementAttributesString(parentElement) + ">"; +} +const voidElements = new Set([ + "area", + "base", + "br", + "col", + "embed", + "hr", + "img", + "input", + "link", + "meta", + "param", + "source", + "track", + "wbr" +]); +/** + * .innerHTML/.outerHTML implementation without recursion to avoid stack + * overflows + */ export function getOuterOrInnerHtml(parentElement, asOuterHtml) { + let outerHTMLOpeningTag = ""; + let outerHTMLClosingTag = ""; + let innerHTML = ""; + if (asOuterHtml) { + outerHTMLOpeningTag = getOuterHTMLOpeningTag(parentElement); + outerHTMLClosingTag = `</${parentElement.localName}>`; + if (voidElements.has(parentElement.localName)) { + return outerHTMLOpeningTag; + } + } + const initialChildNodes = parentElement.localName === "template" ? parentElement.content.childNodes : parentElement.childNodes; + const childNodeDepth = [ + initialChildNodes + ]; + const indexDepth = [ + 0 + ]; + const closingTagDepth = [ + outerHTMLClosingTag + ]; + let depth = 0; + depthLoop: while(depth > -1){ + const child = childNodeDepth[depth][indexDepth[depth]]; + if (child) { + switch(child.nodeType){ + case NodeType.ELEMENT_NODE: + { + innerHTML += getOuterHTMLOpeningTag(child); + const childLocalName = child.localName; + // Void elements don't have a closing tag nor print innerHTML + if (!voidElements.has(childLocalName)) { + if (childLocalName === "template") { + childNodeDepth.push(child.content.childNodes); + } else { + childNodeDepth.push(child.childNodes); + } + indexDepth.push(0); + closingTagDepth.push(`</${childLocalName}>`); + depth++; + continue depthLoop; + } + break; + } + case NodeType.COMMENT_NODE: + innerHTML += `<!--${child.data}-->`; + break; + case NodeType.TEXT_NODE: + // Special handling for rawtext-like elements. + switch(child.parentNode.localName){ + case "style": + case "script": + case "xmp": + case "iframe": + case "noembed": + case "noframes": + case "plaintext": + { + innerHTML += child.data; + break; + } + case "noscript": + { + innerHTML += child.data; + break; + } + default: + { + // escaping: https://html.spec.whatwg.org/multipage/parsing.html#escapingString + innerHTML += child.data.replace(/&/g, "&").replace(/\xA0/g, " ").replace(/</g, "<").replace(/>/g, ">"); + break; + } + } + break; + } + } else { + depth--; + indexDepth.pop(); + childNodeDepth.pop(); + innerHTML += closingTagDepth.pop(); + } + // Go to next child + indexDepth[depth]++; + } + // If innerHTML is requested then the opening tag should be an empty string + return outerHTMLOpeningTag + innerHTML; +} +export function getElementAttributesString(element) { + let out = ""; + for (const attribute of element.getAttributeNames()){ + // attribute names should already all be lower-case + out += ` ${attribute}`; + // escaping: https://html.spec.whatwg.org/multipage/parsing.html#escapingString + out += `="${element.getAttribute(attribute).replace(/&/g, "&").replace(/\xA0/g, " ").replace(/"/g, """)}"`; + } + return out; +} +export function insertBeforeAfter(node, nodes, before) { + const parentNode = node.parentNode; + const mutator = parentNode._getChildNodesMutator(); + // Find the previous/next sibling to `node` that isn't in `nodes` before the + // nodes in `nodes` are removed from their parents. + let viablePrevNextSibling = null; + { + const difference = before ? -1 : +1; + for(let i = mutator.indexOf(node) + difference; 0 <= i && i < parentNode.childNodes.length; i += difference){ + if (!nodes.includes(parentNode.childNodes[i])) { + viablePrevNextSibling = parentNode.childNodes[i]; + break; + } + } + } + nodes = nodesAndTextNodes(nodes, parentNode); + let index; + if (viablePrevNextSibling) { + index = mutator.indexOf(viablePrevNextSibling) + (before ? 1 : 0); + } else { + index = before ? 0 : parentNode.childNodes.length; + } + mutator.splice(index, 0, ...nodes); +} +export function isDocumentFragment(node) { + let obj = node; + if (!(obj && typeof obj === "object")) { + return false; + } + while(true){ + switch(obj.constructor){ + case UtilTypes.DocumentFragment: + return true; + case Node: + case UtilTypes.Element: + return false; + // FIXME: We should probably throw here? + case Object: + case null: + case undefined: + return false; + default: + obj = Reflect.getPrototypeOf(obj); + } + } +} +/** + * Sets the new parent for the children via _setParent() on all + * the child nodes and removes them from the DocumentFragment's + * childNode list. + * + * A helper function for appendChild, etc. It should be called + * _after_ the children are already pushed onto the new parent's + * childNodes. + */ export function moveDocumentFragmentChildren(fragment, newParent) { + const childCount = fragment.childNodes.length; + for (const child of fragment.childNodes){ + child._setParent(newParent); + } + const mutator = fragment._getChildNodesMutator(); + mutator.splice(0, childCount); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvZGVub19kb21AdjAuMS40OS9zcmMvZG9tL3V0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1lbnQsIE5vZGUsIG5vZGVzQW5kVGV4dE5vZGVzLCBOb2RlVHlwZSwgVGV4dCB9IGZyb20gXCIuL25vZGUudHNcIjtcbmltcG9ydCB7IE5vZGVMaXN0IH0gZnJvbSBcIi4vbm9kZS1saXN0LnRzXCI7XG5pbXBvcnQgVXRpbFR5cGVzIGZyb20gXCIuL3V0aWxzLXR5cGVzLnRzXCI7XG5pbXBvcnQgeyBnZXRMb3dlckNhc2UgfSBmcm9tIFwiLi9zdHJpbmctY2FjaGUudHNcIjtcbmltcG9ydCB0eXBlIHsgRWxlbWVudCB9IGZyb20gXCIuL2VsZW1lbnQudHNcIjtcbmltcG9ydCB0eXBlIHsgSFRNTFRlbXBsYXRlRWxlbWVudCB9IGZyb20gXCIuL2VsZW1lbnRzL2h0bWwtdGVtcGxhdGUtZWxlbWVudC50c1wiO1xuaW1wb3J0IHR5cGUgeyBEb2N1bWVudEZyYWdtZW50IH0gZnJvbSBcIi4vZG9jdW1lbnQtZnJhZ21lbnQudHNcIjtcblxuZXhwb3J0IGNvbnN0IHVwcGVyQ2FzZUNoYXJSZSA9IC9bQS1aXS87XG5leHBvcnQgY29uc3QgbG93ZXJDYXNlQ2hhclJlID0gL1thLXpdLztcbi8qKlxuICogQ29udmVydCBKUyBwcm9wZXJ0eSBuYW1lIHRvIGRhdGFzZXQgYXR0cmlidXRlIG5hbWUgd2l0aG91dFxuICogdmFsaWRhdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0YXNldEh0bWxBdHRyTmFtZShuYW1lOiBzdHJpbmcpOiBgZGF0YS0ke3N0cmluZ31gIHtcbiAgbGV0IGF0dHJpYnV0ZU5hbWU6IGBkYXRhLSR7c3RyaW5nfWAgPSBcImRhdGEtXCI7XG4gIGZvciAoY29uc3QgY2hhciBvZiBuYW1lKSB7XG4gICAgaWYgKHVwcGVyQ2FzZUNoYXJSZS50ZXN0KGNoYXIpKSB7XG4gICAgICBhdHRyaWJ1dGVOYW1lICs9IFwiLVwiICsgY2hhci50b0xvd2VyQ2FzZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhdHRyaWJ1dGVOYW1lICs9IGNoYXI7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGF0dHJpYnV0ZU5hbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRhc2V0SmF2YXNjcmlwdE5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgbGV0IGphdmFzY3JpcHROYW1lID0gXCJcIjtcbiAgbGV0IHByZXZDaGFyID0gXCJcIjtcbiAgZm9yIChjb25zdCBjaGFyIG9mIG5hbWUuc2xpY2UoXCJkYXRhLVwiLmxlbmd0aCkpIHtcbiAgICBpZiAocHJldkNoYXIgPT09IFwiLVwiICYmIGxvd2VyQ2FzZUNoYXJSZS50ZXN0KGNoYXIpKSB7XG4gICAgICBqYXZhc2NyaXB0TmFtZSArPSBjaGFyLnRvVXBwZXJDYXNlKCk7XG4gICAgICBwcmV2Q2hhciA9IFwiXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGphdmFzY3JpcHROYW1lICs9IHByZXZDaGFyO1xuICAgICAgcHJldkNoYXIgPSBjaGFyO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBqYXZhc2NyaXB0TmFtZSArIHByZXZDaGFyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcbiAgZWxlbWVudDogYW55LFxuICBjbGFzc05hbWVzOiBzdHJpbmdbXSxcbiAgc2VhcmNoOiBOb2RlW10sXG4pOiBOb2RlW10ge1xuICBmb3IgKGNvbnN0IGNoaWxkIG9mIGVsZW1lbnQuY2hpbGROb2Rlcykge1xuICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PT0gTm9kZVR5cGUuRUxFTUVOVF9OT0RFKSB7XG4gICAgICBsZXQgbWF0Y2hlc0NvdW50ID0gMDtcblxuICAgICAgZm9yIChjb25zdCBzaW5nbGVDbGFzc05hbWUgb2YgY2xhc3NOYW1lcykge1xuICAgICAgICBpZiAoKGNoaWxkIGFzIEVsZW1lbnQpLmNsYXNzTGlzdC5jb250YWlucyhzaW5nbGVDbGFzc05hbWUpKSB7XG4gICAgICAgICAgbWF0Y2hlc0NvdW50Kys7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gZW5zdXJlIHRoYXQgYWxsIGNsYXNzIG5hbWVzIGFyZSBwcmVzZW50XG4gICAgICBpZiAobWF0Y2hlc0NvdW50ID09PSBjbGFzc05hbWVzLmxlbmd0aCkge1xuICAgICAgICBzZWFyY2gucHVzaChjaGlsZCk7XG4gICAgICB9XG5cbiAgICAgIGdldEVsZW1lbnRzQnlDbGFzc05hbWUoY2hpbGQgYXMgRWxlbWVudCwgY2xhc3NOYW1lcywgc2VhcmNoKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2VhcmNoO1xufVxuXG5mdW5jdGlvbiBnZXRPdXRlckhUTUxPcGVuaW5nVGFnKHBhcmVudEVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgcmV0dXJuIFwiPFwiICsgcGFyZW50RWxlbWVudC5sb2NhbE5hbWUgK1xuICAgIGdldEVsZW1lbnRBdHRyaWJ1dGVzU3RyaW5nKHBhcmVudEVsZW1lbnQpICsgXCI+XCI7XG59XG5cbmNvbnN0IHZvaWRFbGVtZW50cyA9IG5ldyBTZXQoW1xuICBcImFyZWFcIixcbiAgXCJiYXNlXCIsXG4gIFwiYnJcIixcbiAgXCJjb2xcIixcbiAgXCJlbWJlZFwiLFxuICBcImhyXCIsXG4gIFwiaW1nXCIsXG4gIFwiaW5wdXRcIixcbiAgXCJsaW5rXCIsXG4gIFwibWV0YVwiLFxuICBcInBhcmFtXCIsXG4gIFwic291cmNlXCIsXG4gIFwidHJhY2tcIixcbiAgXCJ3YnJcIixcbl0pO1xuXG4vKipcbiAqIC5pbm5lckhUTUwvLm91dGVySFRNTCBpbXBsZW1lbnRhdGlvbiB3aXRob3V0IHJlY3Vyc2lvbiB0byBhdm9pZCBzdGFja1xuICogb3ZlcmZsb3dzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPdXRlck9ySW5uZXJIdG1sKFxuICBwYXJlbnRFbGVtZW50OiBFbGVtZW50LFxuICBhc091dGVySHRtbDogYm9vbGVhbixcbik6IHN0cmluZyB7XG4gIGxldCBvdXRlckhUTUxPcGVuaW5nVGFnID0gXCJcIjtcbiAgbGV0IG91dGVySFRNTENsb3NpbmdUYWcgPSBcIlwiO1xuICBsZXQgaW5uZXJIVE1MID0gXCJcIjtcblxuICBpZiAoYXNPdXRlckh0bWwpIHtcbiAgICBvdXRlckhUTUxPcGVuaW5nVGFnID0gZ2V0T3V0ZXJIVE1MT3BlbmluZ1RhZyhwYXJlbnRFbGVtZW50KTtcbiAgICBvdXRlckhUTUxDbG9zaW5nVGFnID0gYDwvJHtwYXJlbnRFbGVtZW50LmxvY2FsTmFtZX0+YDtcblxuICAgIGlmICh2b2lkRWxlbWVudHMuaGFzKHBhcmVudEVsZW1lbnQubG9jYWxOYW1lKSkge1xuICAgICAgcmV0dXJuIG91dGVySFRNTE9wZW5pbmdUYWc7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaW5pdGlhbENoaWxkTm9kZXMgPSBwYXJlbnRFbGVtZW50LmxvY2FsTmFtZSA9PT0gXCJ0ZW1wbGF0ZVwiXG4gICAgPyAocGFyZW50RWxlbWVudCBhcyBIVE1MVGVtcGxhdGVFbGVtZW50KS5jb250ZW50LmNoaWxkTm9kZXNcbiAgICA6IHBhcmVudEVsZW1lbnQuY2hpbGROb2RlcztcbiAgY29uc3QgY2hpbGROb2RlRGVwdGggPSBbaW5pdGlhbENoaWxkTm9kZXNdO1xuICBjb25zdCBpbmRleERlcHRoID0gWzBdO1xuICBjb25zdCBjbG9zaW5nVGFnRGVwdGggPSBbb3V0ZXJIVE1MQ2xvc2luZ1RhZ107XG4gIGxldCBkZXB0aCA9IDA7XG5cbiAgZGVwdGhMb29wOlxuICB3aGlsZSAoZGVwdGggPiAtMSkge1xuICAgIGNvbnN0IGNoaWxkID0gY2hpbGROb2RlRGVwdGhbZGVwdGhdW2luZGV4RGVwdGhbZGVwdGhdXTtcblxuICAgIGlmIChjaGlsZCkge1xuICAgICAgc3dpdGNoIChjaGlsZC5ub2RlVHlwZSkge1xuICAgICAgICBjYXNlIE5vZGVUeXBlLkVMRU1FTlRfTk9ERToge1xuICAgICAgICAgIGlubmVySFRNTCArPSBnZXRPdXRlckhUTUxPcGVuaW5nVGFnKGNoaWxkIGFzIEVsZW1lbnQpO1xuICAgICAgICAgIGNvbnN0IGNoaWxkTG9jYWxOYW1lID0gKGNoaWxkIGFzIEVsZW1lbnQpLmxvY2FsTmFtZTtcblxuICAgICAgICAgIC8vIFZvaWQgZWxlbWVudHMgZG9uJ3QgaGF2ZSBhIGNsb3NpbmcgdGFnIG5vciBwcmludCBpbm5lckhUTUxcbiAgICAgICAgICBpZiAoIXZvaWRFbGVtZW50cy5oYXMoY2hpbGRMb2NhbE5hbWUpKSB7XG4gICAgICAgICAgICBpZiAoY2hpbGRMb2NhbE5hbWUgPT09IFwidGVtcGxhdGVcIikge1xuICAgICAgICAgICAgICBjaGlsZE5vZGVEZXB0aC5wdXNoKFxuICAgICAgICAgICAgICAgIChjaGlsZCBhcyBIVE1MVGVtcGxhdGVFbGVtZW50KS5jb250ZW50LmNoaWxkTm9kZXMsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjaGlsZE5vZGVEZXB0aC5wdXNoKGNoaWxkLmNoaWxkTm9kZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5kZXhEZXB0aC5wdXNoKDApO1xuICAgICAgICAgICAgY2xvc2luZ1RhZ0RlcHRoLnB1c2goYDwvJHtjaGlsZExvY2FsTmFtZX0+YCk7XG4gICAgICAgICAgICBkZXB0aCsrO1xuICAgICAgICAgICAgY29udGludWUgZGVwdGhMb29wO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgTm9kZVR5cGUuQ09NTUVOVF9OT0RFOlxuICAgICAgICAgIGlubmVySFRNTCArPSBgPCEtLSR7KGNoaWxkIGFzIENvbW1lbnQpLmRhdGF9LS0+YDtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIE5vZGVUeXBlLlRFWFRfTk9ERTpcbiAgICAgICAgICAvLyBTcGVjaWFsIGhhbmRsaW5nIGZvciByYXd0ZXh0LWxpa2UgZWxlbWVudHMuXG4gICAgICAgICAgc3dpdGNoICgoY2hpbGQucGFyZW50Tm9kZSEgYXMgRWxlbWVudCkubG9jYWxOYW1lKSB7XG4gICAgICAgICAgICBjYXNlIFwic3R5bGVcIjpcbiAgICAgICAgICAgIGNhc2UgXCJzY3JpcHRcIjpcbiAgICAgICAgICAgIGNhc2UgXCJ4bXBcIjpcbiAgICAgICAgICAgIGNhc2UgXCJpZnJhbWVcIjpcbiAgICAgICAgICAgIGNhc2UgXCJub2VtYmVkXCI6XG4gICAgICAgICAgICBjYXNlIFwibm9mcmFtZXNcIjpcbiAgICAgICAgICAgIGNhc2UgXCJwbGFpbnRleHRcIjoge1xuICAgICAgICAgICAgICBpbm5lckhUTUwgKz0gKGNoaWxkIGFzIFRleHQpLmRhdGE7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlIFwibm9zY3JpcHRcIjoge1xuICAgICAgICAgICAgICBpbm5lckhUTUwgKz0gKGNoaWxkIGFzIFRleHQpLmRhdGE7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgIC8vIGVzY2FwaW5nOiBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9wYXJzaW5nLmh0bWwjZXNjYXBpbmdTdHJpbmdcbiAgICAgICAgICAgICAgaW5uZXJIVE1MICs9IChjaGlsZCBhcyBUZXh0KS5kYXRhXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLyYvZywgXCImYW1wO1wiKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXHhBMC9nLCBcIiZuYnNwO1wiKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC88L2csIFwiJmx0O1wiKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8+L2csIFwiJmd0O1wiKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBkZXB0aC0tO1xuXG4gICAgICBpbmRleERlcHRoLnBvcCgpO1xuICAgICAgY2hpbGROb2RlRGVwdGgucG9wKCk7XG4gICAgICBpbm5lckhUTUwgKz0gY2xvc2luZ1RhZ0RlcHRoLnBvcCgpO1xuICAgIH1cblxuICAgIC8vIEdvIHRvIG5leHQgY2hpbGRcbiAgICBpbmRleERlcHRoW2RlcHRoXSsrO1xuICB9XG5cbiAgLy8gSWYgaW5uZXJIVE1MIGlzIHJlcXVlc3RlZCB0aGVuIHRoZSBvcGVuaW5nIHRhZyBzaG91bGQgYmUgYW4gZW1wdHkgc3RyaW5nXG4gIHJldHVybiBvdXRlckhUTUxPcGVuaW5nVGFnICsgaW5uZXJIVE1MO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWxlbWVudEF0dHJpYnV0ZXNTdHJpbmcoXG4gIGVsZW1lbnQ6IEVsZW1lbnQsXG4pOiBzdHJpbmcge1xuICBsZXQgb3V0ID0gXCJcIjtcblxuICBmb3IgKGNvbnN0IGF0dHJpYnV0ZSBvZiBlbGVtZW50LmdldEF0dHJpYnV0ZU5hbWVzKCkpIHtcbiAgICAvLyBhdHRyaWJ1dGUgbmFtZXMgc2hvdWxkIGFscmVhZHkgYWxsIGJlIGxvd2VyLWNhc2VcbiAgICBvdXQgKz0gYCAke2F0dHJpYnV0ZX1gO1xuXG4gICAgLy8gZXNjYXBpbmc6IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNlc2NhcGluZ1N0cmluZ1xuICAgIG91dCArPSBgPVwiJHtcbiAgICAgIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSkhXG4gICAgICAgIC5yZXBsYWNlKC8mL2csIFwiJmFtcDtcIilcbiAgICAgICAgLnJlcGxhY2UoL1xceEEwL2csIFwiJm5ic3A7XCIpXG4gICAgICAgIC5yZXBsYWNlKC9cIi9nLCBcIiZxdW90O1wiKVxuICAgIH1cImA7XG4gIH1cblxuICByZXR1cm4gb3V0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QmVmb3JlQWZ0ZXIoXG4gIG5vZGU6IE5vZGUsXG4gIG5vZGVzOiAoTm9kZSB8IHN0cmluZylbXSxcbiAgYmVmb3JlOiBib29sZWFuLFxuKSB7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudE5vZGUhO1xuICBjb25zdCBtdXRhdG9yID0gcGFyZW50Tm9kZS5fZ2V0Q2hpbGROb2Rlc011dGF0b3IoKTtcbiAgLy8gRmluZCB0aGUgcHJldmlvdXMvbmV4dCBzaWJsaW5nIHRvIGBub2RlYCB0aGF0IGlzbid0IGluIGBub2Rlc2AgYmVmb3JlIHRoZVxuICAvLyBub2RlcyBpbiBgbm9kZXNgIGFyZSByZW1vdmVkIGZyb20gdGhlaXIgcGFyZW50cy5cbiAgbGV0IHZpYWJsZVByZXZOZXh0U2libGluZzogTm9kZSB8IG51bGwgPSBudWxsO1xuICB7XG4gICAgY29uc3QgZGlmZmVyZW5jZSA9IGJlZm9yZSA/IC0xIDogKzE7XG4gICAgZm9yIChcbiAgICAgIGxldCBpID0gbXV0YXRvci5pbmRleE9mKG5vZGUpICsgZGlmZmVyZW5jZTtcbiAgICAgIDAgPD0gaSAmJiBpIDwgcGFyZW50Tm9kZS5jaGlsZE5vZGVzLmxlbmd0aDtcbiAgICAgIGkgKz0gZGlmZmVyZW5jZVxuICAgICkge1xuICAgICAgaWYgKCFub2Rlcy5pbmNsdWRlcyhwYXJlbnROb2RlLmNoaWxkTm9kZXNbaV0pKSB7XG4gICAgICAgIHZpYWJsZVByZXZOZXh0U2libGluZyA9IHBhcmVudE5vZGUuY2hpbGROb2Rlc1tpXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIG5vZGVzID0gbm9kZXNBbmRUZXh0Tm9kZXMobm9kZXMsIHBhcmVudE5vZGUpO1xuXG4gIGxldCBpbmRleDtcbiAgaWYgKHZpYWJsZVByZXZOZXh0U2libGluZykge1xuICAgIGluZGV4ID0gbXV0YXRvci5pbmRleE9mKHZpYWJsZVByZXZOZXh0U2libGluZykgKyAoYmVmb3JlID8gMSA6IDApO1xuICB9IGVsc2Uge1xuICAgIGluZGV4ID0gYmVmb3JlID8gMCA6IHBhcmVudE5vZGUuY2hpbGROb2Rlcy5sZW5ndGg7XG4gIH1cbiAgbXV0YXRvci5zcGxpY2UoaW5kZXgsIDAsIC4uLig8Tm9kZVtdPiBub2RlcykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEb2N1bWVudEZyYWdtZW50KG5vZGU6IE5vZGUpOiBub2RlIGlzIERvY3VtZW50RnJhZ21lbnQge1xuICBsZXQgb2JqOiBhbnkgPSBub2RlO1xuXG4gIGlmICghKG9iaiAmJiB0eXBlb2Ygb2JqID09PSBcIm9iamVjdFwiKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgc3dpdGNoIChvYmouY29uc3RydWN0b3IpIHtcbiAgICAgIGNhc2UgVXRpbFR5cGVzLkRvY3VtZW50RnJhZ21lbnQ6XG4gICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgICBjYXNlIE5vZGU6XG4gICAgICBjYXNlIFV0aWxUeXBlcy5FbGVtZW50OlxuICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkgdGhyb3cgaGVyZT9cblxuICAgICAgY2FzZSBPYmplY3Q6XG4gICAgICBjYXNlIG51bGw6XG4gICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBvYmogPSBSZWZsZWN0LmdldFByb3RvdHlwZU9mKG9iaik7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogU2V0cyB0aGUgbmV3IHBhcmVudCBmb3IgdGhlIGNoaWxkcmVuIHZpYSBfc2V0UGFyZW50KCkgb24gYWxsXG4gKiB0aGUgY2hpbGQgbm9kZXMgYW5kIHJlbW92ZXMgdGhlbSBmcm9tIHRoZSBEb2N1bWVudEZyYWdtZW50J3NcbiAqIGNoaWxkTm9kZSBsaXN0LlxuICpcbiAqIEEgaGVscGVyIGZ1bmN0aW9uIGZvciBhcHBlbmRDaGlsZCwgZXRjLiBJdCBzaG91bGQgYmUgY2FsbGVkXG4gKiBfYWZ0ZXJfIHRoZSBjaGlsZHJlbiBhcmUgYWxyZWFkeSBwdXNoZWQgb250byB0aGUgbmV3IHBhcmVudCdzXG4gKiBjaGlsZE5vZGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW92ZURvY3VtZW50RnJhZ21lbnRDaGlsZHJlbihcbiAgZnJhZ21lbnQ6IERvY3VtZW50RnJhZ21lbnQsXG4gIG5ld1BhcmVudDogTm9kZSxcbikge1xuICBjb25zdCBjaGlsZENvdW50ID0gZnJhZ21lbnQuY2hpbGROb2Rlcy5sZW5ndGg7XG5cbiAgZm9yIChjb25zdCBjaGlsZCBvZiBmcmFnbWVudC5jaGlsZE5vZGVzKSB7XG4gICAgY2hpbGQuX3NldFBhcmVudChuZXdQYXJlbnQpO1xuICB9XG5cbiAgY29uc3QgbXV0YXRvciA9IGZyYWdtZW50Ll9nZXRDaGlsZE5vZGVzTXV0YXRvcigpO1xuICBtdXRhdG9yLnNwbGljZSgwLCBjaGlsZENvdW50KTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFrQixJQUFJLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxRQUFjLFlBQVk7QUFFN0UsT0FBTyxlQUFlLG1CQUFtQjtBQU16QyxPQUFPLE1BQU0sa0JBQWtCLFFBQVE7QUFDdkMsT0FBTyxNQUFNLGtCQUFrQixRQUFRO0FBQ3ZDOzs7Q0FHQyxHQUNELE9BQU8sU0FBUyx1QkFBdUIsSUFBWTtFQUNqRCxJQUFJLGdCQUFrQztFQUN0QyxLQUFLLE1BQU0sUUFBUSxLQUFNO0lBQ3ZCLElBQUksZ0JBQWdCLElBQUksQ0FBQyxPQUFPO01BQzlCLGlCQUFpQixNQUFNLEtBQUssV0FBVztJQUN6QyxPQUFPO01BQ0wsaUJBQWlCO0lBQ25CO0VBQ0Y7RUFFQSxPQUFPO0FBQ1Q7QUFFQSxPQUFPLFNBQVMseUJBQXlCLElBQVk7RUFDbkQsSUFBSSxpQkFBaUI7RUFDckIsSUFBSSxXQUFXO0VBQ2YsS0FBSyxNQUFNLFFBQVEsS0FBSyxLQUFLLENBQUMsUUFBUSxNQUFNLEVBQUc7SUFDN0MsSUFBSSxhQUFhLE9BQU8sZ0JBQWdCLElBQUksQ0FBQyxPQUFP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 +// denoCacheMetadata=13786385388212573301,450115791470798199
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/4d466d8e167bcb9dca15d78611336dacdd6d5f90f914312c29129b67b170cbe4.js b/vendor/gen/https/deno.land/4d466d8e167bcb9dca15d78611336dacdd6d5f90f914312c29129b67b170cbe4.js new file mode 100644 index 0000000..6015f48 --- /dev/null +++ b/vendor/gen/https/deno.land/4d466d8e167bcb9dca15d78611336dacdd6d5f90f914312c29129b67b170cbe4.js @@ -0,0 +1,247 @@ +import { bundleAsync } from "../deps/lightningcss.ts"; +import { build, stop } from "../deps/esbuild.ts"; +import textLoader from "./loaders/text.ts"; +import { posix } from "../deps/path.ts"; +import { log } from "./utils/log.ts"; +/** + * Class to load components from the _components folder. + */ export class ComponentLoader { + /** List of loaders and engines used by extensions */ formats; + constructor(options){ + this.formats = options.formats; + } + /** Load a directory of components */ async load(dirEntry, data, components) { + if (!components) { + components = new Map(); + } + for await (const entry of dirEntry.children.values()){ + if (entry.name.startsWith(".") || entry.name.startsWith("_")) { + continue; + } + if (entry.type === "directory") { + const component = await this.#loadComponentFolder(entry, data); + if (component) { + components.set(component.name.toLowerCase(), component); + continue; + } + const name = entry.name.toLowerCase(); + const subComponents = components.get(name) || new Map(); + components.set(name, subComponents); + await this.load(entry, data, subComponents); + continue; + } + const component = await this.#loadComponent(entry, data); + if (component) { + components.set(component.name.toLowerCase(), component); + } + } + return components; + } + /** Load a component folder (a folder with a comp.* file) */ async #loadComponentFolder(entry, data) { + const compEntry = findChild(entry, (entry)=>entry.name.startsWith("comp.")); + if (!compEntry) { + return; + } + const component = await this.#loadComponent(compEntry, data, entry.name); + if (!component) { + return; + } + const assets = new Map(); + const entryPoints = new Set([ + "style.css", + "script.js", + "script.ts" + ]); + // Find extra files + for (const child of entry.children.values()){ + if (child === compEntry) { + continue; + } + // Load CSS/JS/TS file + if (child.type === "file" && entryPoints.has(child.name)) { + assets.set(child.path, child); + } + } + for (const [path, content] of assets){ + component.assets.set(path, content); + } + return component; + } + /** Load a component file */ async #loadComponent(entry, dirData, defaultName) { + const format = this.formats.search(entry.name); + if (!format) { + return; + } + const { loader, engines, ext } = format; + if (!loader || !engines || !engines.length) { + return; + } + const rawComponent = await entry.getContent(loader); + const { css, js, inheritData, content, ...data } = rawComponent; + const name = defaultName ?? entry.name.slice(0, -ext.length); + const render = async (props)=>{ + const currData = inheritData !== false ? { + ...dirData, + ...data, + ...props + } : { + ...data, + ...props + }; + // Unify children and content for interopeability between JSX and other engines + currData.children = currData.content = props?.children ?? props?.content; + let result = content; + for (const engine of engines){ + result = await engine.render(content, currData, entry.path); + } + return result; + }; + const assets = new Map(); + if (css) { + assets.set(entry.path + ".css", css); + } + if (js) { + assets.set(entry.path + ".js", js); + } + return { + name, + render, + assets + }; + } +} +function findChild(entry, filter) { + for (const child of entry.children.values()){ + if (child.type === "file" && filter(child)) { + return child; + } + } +} +export async function compileCSS(filename, imports, entries) { + const mainCode = Array.from(imports.keys()).map((path)=>`@import "${path}";`).join("\n"); + const { code } = await bundleAsync({ + filename, + sourceMap: false, + resolver: { + resolve (id, importer) { + if (id.startsWith(".")) { + id = posix.join(posix.dirname(importer), id); + } + return id; + }, + async read (filePath) { + if (filePath === filename) { + return mainCode; + } + const content = await getEntryContent(imports.get(filePath) || entries.get(filePath)); + if (!content) { + log.error(`[components] File "${filePath}" not found or is empty`); + } + return content; + } + } + }); + const decoder = new TextDecoder(); + return decoder.decode(code); +} +export async function compileJS(filename, imports, entries) { + const mainCode = Array.from(imports.keys()).map((path)=>`import "${path}";`).join("\n"); + const { outputFiles } = await build({ + bundle: true, + entryPoints: [ + filename + ], + write: false, + format: "esm", + minify: false, + target: "esnext", + outfile: filename, + plugins: [ + { + name: "components-resolver", + setup (build) { + build.onResolve({ + filter: /.*/ + }, ({ path, importer })=>{ + if (path.startsWith(".")) { + path = posix.join(posix.dirname(importer), path); + } + if (path === filename || imports.has(path) || entries.has(path)) { + return { + path, + namespace: "fs" + }; + } + return { + path, + external: true + }; + }); + build.onLoad({ + filter: /.*/, + namespace: "fs" + }, async ({ path })=>{ + const contents = path === filename ? mainCode : await getEntryContent(imports.get(path) || entries.get(path)); + if (!contents) { + log.error(`[components] File "${path}" not found or is empty`); + } + return { + contents, + loader: path.endsWith(".ts") ? "ts" : "js" + }; + }); + } + } + ] + }); + await stop(); + const decoder = new TextDecoder(); + return decoder.decode(outputFiles[0].contents); +} +async function getEntryContent(entry) { + if (typeof entry === "string") { + return entry; + } + if (entry) { + const { content } = await entry.getContent(textLoader); + return content || ""; + } + return ""; +} +/** + * Create and returns a proxy to use the components + * as comp.name() instead of components.get("name").render() + */ export function toProxy(components, extraCode) { + const node = { + _components: components, + _proxies: new Map() + }; + return new Proxy(node, { + get: (target, name)=>{ + if (typeof name !== "string" || name in target) { + return; + } + const key = name.toLowerCase(); + if (target._proxies.has(key)) { + return target._proxies.get(key); + } + const component = target._components.get(key); + if (!component) { + throw new Error(`Component "${name}" not found`); + } + if (component instanceof Map) { + const proxy = toProxy(component, extraCode); + target._proxies.set(key, proxy); + return proxy; + } + // Save component assets + for (const [key, value] of component.assets){ + extraCode.set(key, value); + } + // Return the function to render the component + return (props)=>component.render(props); + } + }); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS9jb21wb25lbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudHJ5IH0gZnJvbSBcIi4vZnMudHNcIjtcbmltcG9ydCB7IGJ1bmRsZUFzeW5jIH0gZnJvbSBcIi4uL2RlcHMvbGlnaHRuaW5nY3NzLnRzXCI7XG5pbXBvcnQgeyBidWlsZCwgc3RvcCB9IGZyb20gXCIuLi9kZXBzL2VzYnVpbGQudHNcIjtcbmltcG9ydCB0ZXh0TG9hZGVyIGZyb20gXCIuL2xvYWRlcnMvdGV4dC50c1wiO1xuaW1wb3J0IHsgcG9zaXggfSBmcm9tIFwiLi4vZGVwcy9wYXRoLnRzXCI7XG5pbXBvcnQgeyBsb2cgfSBmcm9tIFwiLi91dGlscy9sb2cudHNcIjtcblxuaW1wb3J0IHR5cGUgeyBEYXRhIH0gZnJvbSBcIi4vZmlsZS50c1wiO1xuaW1wb3J0IHR5cGUgRm9ybWF0cyBmcm9tIFwiLi9mb3JtYXRzLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIC8qKiBUaGUgcmVnaXN0ZXJlZCBmaWxlIGZvcm1hdHMgKi9cbiAgZm9ybWF0czogRm9ybWF0cztcbn1cblxuLyoqXG4gKiBDbGFzcyB0byBsb2FkIGNvbXBvbmVudHMgZnJvbSB0aGUgX2NvbXBvbmVudHMgZm9sZGVyLlxuICovXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50TG9hZGVyIHtcbiAgLyoqIExpc3Qgb2YgbG9hZGVycyBhbmQgZW5naW5lcyB1c2VkIGJ5IGV4dGVuc2lvbnMgKi9cbiAgZm9ybWF0czogRm9ybWF0cztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgdGhpcy5mb3JtYXRzID0gb3B0aW9ucy5mb3JtYXRzO1xuICB9XG5cbiAgLyoqIExvYWQgYSBkaXJlY3Rvcnkgb2YgY29tcG9uZW50cyAqL1xuICBhc3luYyBsb2FkKFxuICAgIGRpckVudHJ5OiBFbnRyeSxcbiAgICBkYXRhOiBQYXJ0aWFsPERhdGE+LFxuICAgIGNvbXBvbmVudHM/OiBDb21wb25lbnRzLFxuICApOiBQcm9taXNlPENvbXBvbmVudHM+IHtcbiAgICBpZiAoIWNvbXBvbmVudHMpIHtcbiAgICAgIGNvbXBvbmVudHMgPSBuZXcgTWFwKCk7XG4gICAgfVxuXG4gICAgZm9yIGF3YWl0IChjb25zdCBlbnRyeSBvZiBkaXJFbnRyeS5jaGlsZHJlbi52YWx1ZXMoKSkge1xuICAgICAgaWYgKGVudHJ5Lm5hbWUuc3RhcnRzV2l0aChcIi5cIikgfHwgZW50cnkubmFtZS5zdGFydHNXaXRoKFwiX1wiKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGVudHJ5LnR5cGUgPT09IFwiZGlyZWN0b3J5XCIpIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gYXdhaXQgdGhpcy4jbG9hZENvbXBvbmVudEZvbGRlcihlbnRyeSwgZGF0YSk7XG4gICAgICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgICBjb21wb25lbnRzLnNldChjb21wb25lbnQubmFtZS50b0xvd2VyQ2FzZSgpLCBjb21wb25lbnQpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmFtZSA9IGVudHJ5Lm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3Qgc3ViQ29tcG9uZW50cyA9IChjb21wb25lbnRzLmdldChuYW1lKSB8fCBuZXcgTWFwKCkpIGFzIENvbXBvbmVudHM7XG4gICAgICAgIGNvbXBvbmVudHMuc2V0KG5hbWUsIHN1YkNvbXBvbmVudHMpO1xuXG4gICAgICAgIGF3YWl0IHRoaXMubG9hZChlbnRyeSwgZGF0YSwgc3ViQ29tcG9uZW50cyk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb21wb25lbnQgPSBhd2FpdCB0aGlzLiNsb2FkQ29tcG9uZW50KGVudHJ5LCBkYXRhKTtcblxuICAgICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICBjb21wb25lbnRzLnNldChjb21wb25lbnQubmFtZS50b0xvd2VyQ2FzZSgpLCBjb21wb25lbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb21wb25lbnRzO1xuICB9XG5cbiAgLyoqIExvYWQgYSBjb21wb25lbnQgZm9sZGVyIChhIGZvbGRlciB3aXRoIGEgY29tcC4qIGZpbGUpICovXG4gIGFzeW5jICNsb2FkQ29tcG9uZW50Rm9sZGVyKFxuICAgIGVudHJ5OiBFbnRyeSxcbiAgICBkYXRhOiBQYXJ0aWFsPERhdGE+LFxuICApOiBQcm9taXNlPENvbXBvbmVudCB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGNvbXBFbnRyeSA9IGZpbmRDaGlsZChcbiAgICAgIGVudHJ5LFxuICAgICAgKGVudHJ5KSA9PiBlbnRyeS5uYW1lLnN0YXJ0c1dpdGgoXCJjb21wLlwiKSxcbiAgICApO1xuXG4gICAgaWYgKCFjb21wRW50cnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wb25lbnQgPSBhd2FpdCB0aGlzLiNsb2FkQ29tcG9uZW50KGNvbXBFbnRyeSwgZGF0YSwgZW50cnkubmFtZSk7XG5cbiAgICBpZiAoIWNvbXBvbmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFzc2V0cyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmcgfCBFbnRyeT4oKTtcbiAgICBjb25zdCBlbnRyeVBvaW50cyA9IG5ldyBTZXQ8c3RyaW5nPihbXG4gICAgICBcInN0eWxlLmNzc1wiLFxuICAgICAgXCJzY3JpcHQuanNcIixcbiAgICAgIFwic2NyaXB0LnRzXCIsXG4gICAgXSk7XG5cbiAgICAvLyBGaW5kIGV4dHJhIGZpbGVzXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBlbnRyeS5jaGlsZHJlbi52YWx1ZXMoKSkge1xuICAgICAgaWYgKGNoaWxkID09PSBjb21wRW50cnkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIExvYWQgQ1NTL0pTL1RTIGZpbGVcbiAgICAgIGlmIChjaGlsZC50eXBlID09PSBcImZpbGVcIiAmJiBlbnRyeVBvaW50cy5oYXMoY2hpbGQubmFtZSkpIHtcbiAgICAgICAgYXNzZXRzLnNldChjaGlsZC5wYXRoLCBjaGlsZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbcGF0aCwgY29udGVudF0gb2YgYXNzZXRzKSB7XG4gICAgICBjb21wb25lbnQuYXNzZXRzLnNldChwYXRoLCBjb250ZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tcG9uZW50O1xuICB9XG5cbiAgLyoqIExvYWQgYSBjb21wb25lbnQgZmlsZSAqL1xuICBhc3luYyAjbG9hZENvbXBvbmVudChcbiAgICBlbnRyeTogRW50cnksXG4gICAgZGlyRGF0YTogUGFydGlhbDxEYXRhPixcbiAgICBkZWZhdWx0TmFtZT86IHN0cmluZyxcbiAgKTogUHJvbWlzZTxDb21wb25lbnQgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBmb3JtYXQgPSB0aGlzLmZvcm1hdHMuc2VhcmNoKGVudHJ5Lm5hbWUpO1xuXG4gICAgaWYgKCFmb3JtYXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IGxvYWRlciwgZW5naW5lcywgZXh0IH0gPSBmb3JtYXQ7XG5cbiAgICBpZiAoIWxvYWRlciB8fCAhZW5naW5lcyB8fCAhZW5naW5lcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByYXdDb21wb25lbnQgPSBhd2FpdCBlbnRyeS5nZXRDb250ZW50KGxvYWRlcikgYXMgQ29tcG9uZW50RmlsZTtcbiAgICBjb25zdCB7IGNzcywganMsIGluaGVyaXREYXRhLCBjb250ZW50LCAuLi5kYXRhIH0gPSByYXdDb21wb25lbnQ7XG4gICAgY29uc3QgbmFtZSA9IGRlZmF1bHROYW1lID8/IGVudHJ5Lm5hbWUuc2xpY2UoMCwgLWV4dC5sZW5ndGgpO1xuXG4gICAgY29uc3QgcmVuZGVyID0gYXN5bmMgKHByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICAgICAgY29uc3QgY3VyckRhdGEgPSBpbmhlcml0RGF0YSAhPT0gZmFsc2VcbiAgICAgICAgPyB7IC4uLmRpckRhdGEsIC4uLmRhdGEsIC4uLnByb3BzIH1cbiAgICAgICAgOiB7IC4uLmRhdGEsIC4uLnByb3BzIH07XG5cbiAgICAgIC8vIFVuaWZ5IGNoaWxkcmVuIGFuZCBjb250ZW50IGZvciBpbnRlcm9wZWFiaWxpdHkgYmV0d2VlbiBKU1ggYW5kIG90aGVyIGVuZ2luZXNcbiAgICAgIGN1cnJEYXRhLmNoaWxkcmVuID0gY3VyckRhdGEuY29udGVudCA9IHByb3BzPy5jaGlsZHJlbiA/PyBwcm9wcz8uY29udGVudDtcblxuICAgICAgbGV0IHJlc3VsdCA9IGNvbnRlbnQ7XG4gICAgICBmb3IgKGNvbnN0IGVuZ2luZSBvZiBlbmdpbmVzKSB7XG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IGVuZ2luZS5yZW5kZXIoY29udGVudCwgY3VyckRhdGEsIGVudHJ5LnBhdGgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0IGFzIHN0cmluZztcbiAgICB9O1xuXG4gICAgY29uc3QgYXNzZXRzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuICAgIGlmIChjc3MpIHtcbiAgICAgIGFzc2V0cy5zZXQoZW50cnkucGF0aCArIFwiLmNzc1wiLCBjc3MpO1xuICAgIH1cbiAgICBpZiAoanMpIHtcbiAgICAgIGFzc2V0cy5zZXQoZW50cnkucGF0aCArIFwiLmpzXCIsIGpzKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZSxcbiAgICAgIHJlbmRlcixcbiAgICAgIGFzc2V0cyxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIENvbXBvbmVudHMgPSBNYXA8c3RyaW5nLCBDb21wb25lbnQgfCBDb21wb25lbnRzPjtcblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnQge1xuICAvKiogTmFtZSBvZiB0aGUgY29tcG9uZW50ICh1c2VkIHRvIGdldCBpdCBmcm9tIHRlbXBsYXRlcykgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKiBUaGUgZnVuY3Rpb24gdG8gcmVuZGVyIHRoZSBjb21wb25lbnQgKi9cbiAgcmVuZGVyOiAocHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz47XG5cbiAgLyoqIE9wdGlvbmFsIENTUyBhbmQgSlMgY29kZSBuZWVkZWQgdG8gc3R5bGUgdGhlIGNvbXBvbmVudCAoZ2xvYmFsLCBvbmx5IGluc2VydGVkIG9uY2UpICovXG4gIGFzc2V0czogTWFwPHN0cmluZywgc3RyaW5nIHwgRW50cnk+O1xufVxuXG4vKiogQ29tcG9uZW50IGRlZmluZWQgZGlyZWN0bHkgYnkgdGhlIHVzZXIgKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlckNvbXBvbmVudCB7XG4gIC8qKiBOYW1lIG9mIHRoZSBjb21wb25lbnQgKHVzZWQgdG8gZ2V0IGl0IGZyb20gdGVtcGxhdGVzKSAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBmdW5jdGlvbiB0byByZW5kZXIgdGhlIGNvbXBvbmVudCAqL1xuICByZW5kZXI6IChwcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHN0cmluZyB8IFByb21pc2U8c3RyaW5nPjtcblxuICAvKiogT3B0aW9uYWwgQ1NTIGNvZGUgbmVlZGVkIHRvIHN0eWxlIHRoZSBjb21wb25lbnQgKGdsb2JhbCwgb25seSBpbnNlcnRlZCBvbmNlKSAqL1xuICBjc3M/OiBzdHJpbmc7XG5cbiAgLyoqIE9wdGlvbmFsIEpTIGNvZGUgbmVlZGVkIGZvciB0aGUgY29tcG9uZW50IGludGVyYWN0aXZpdHkgKGdsb2JhbCwgb25seSBpbnNlcnRlZCBvbmNlKSAqL1xuICBqcz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRGaWxlIHtcbiAgLyoqIFRoZSBjb250ZW50IG9mIHRoZSBjb21wb25lbnQgKi9cbiAgY29udGVudDogdW5rbm93bjtcblxuICAvKiogT3B0aW9uYWwgQ1NTIGNvZGUgbmVlZGVkIHRvIHN0eWxlIHRoZSBjb21wb25lbnQgKGdsb2JhbCwgb25seSBpbnNlcnRlZCBvbmNlKSAqL1xuICBjc3M/OiBzdHJpbmc7XG5cbiAgLyoqIE9wdGlvbmFsIEpTIGNvZGUgbmVlZGVkIGZvciB0aGUgY29tcG9uZW50IGludGVyYWN0aXZpdHkgKGdsb2JhbCwgb25seSBpbnNlcnRlZCBvbmNlKSAqL1xuICBqcz86IHN0cmluZztcblxuICAvKiogSWYgZmFsc2UsIHRoZSBkYXRhIGZyb20gdGhlIHBhcmVudCBkaXJlY3Rvcnkgd2lsbCBub3QgYmUgaW5oZXJpdGVkICovXG4gIGluaGVyaXREYXRhPzogYm9vbGVhbjtcblxuICAvKiogRXh0cmEgZGVmYXVsdCBkYXRhIHN0b3JlZCBpbiB0aGUgY29tcG9uZW50ICovXG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbmZ1bmN0aW9uIGZpbmRDaGlsZChcbiAgZW50cnk6IEVudHJ5LFxuICBmaWx0ZXI6IChlbnRyeTogRW50cnkpID0+IGJvb2xlYW4sXG4pOiBFbnRyeSB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3QgY2hpbGQgb2YgZW50cnkuY2hpbGRyZW4udmFsdWVzKCkpIHtcbiAgICBpZiAoY2hpbGQudHlwZSA9PT0gXCJmaWxlXCIgJiYgZmlsdGVyKGNoaWxkKSkge1xuICAgICAgcmV0dXJuIGNoaWxkO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29tcGlsZUNTUyhcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgaW1wb3J0czogTWFwPHN0cmluZywgc3RyaW5nIHwgRW50cnk+LFxuICBlbnRyaWVzOiBNYXA8c3RyaW5nLCBFbnRyeT4sXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBtYWluQ29kZSA9IEFycmF5LmZyb20oaW1wb3J0cy5rZXlzKCkpLm1hcCgocGF0aCkgPT5cbiAgICBgQGltcG9ydCBcIiR7cGF0aH1cIjtgXG4gICkuam9pbihcIlxcblwiKTtcblxuICBjb25zdCB7IGNvZGUgfSA9IGF3YWl0IGJ1bmRsZUFzeW5jKHtcbiAgICBmaWxlbmFtZSxcbiAgICBzb3VyY2VNYXA6IGZhbHNlLFxuICAgIHJlc29sdmVyOiB7XG4gICAgICByZXNvbHZlKGlkLCBpbXBvcnRlcikge1xuICAgICAgICBpZiAoaWQuc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgICBpZCA9IHBvc2l4LmpvaW4ocG9zaXguZGlybmFtZShpbXBvcnRlciksIGlkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaWQ7XG4gICAgICB9LFxuICAgICAgYXN5bmMgcmVhZChmaWxlUGF0aCkge1xuICAgICAgICBpZiAoZmlsZVBhdGggPT09IGZpbGVuYW1lKSB7XG4gICAgICAgICAgcmV0dXJuIG1haW5Db2RlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBnZXRFbnRyeUNvbnRlbnQoXG4gICAgICAgICAgaW1wb3J0cy5nZXQoZmlsZVBhdGgpIHx8IGVudHJpZXMuZ2V0KGZpbGVQYXRoKSxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFjb250ZW50KSB7XG4gICAgICAgICAgbG9nLmVycm9yKGBbY29tcG9uZW50c10gRmlsZSBcIiR7ZmlsZVBhdGh9XCIgbm90IGZvdW5kIG9yIGlzIGVtcHR5YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTtcbiAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKGNvZGUpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29tcGlsZUpTKFxuICBmaWxlbmFtZTogc3RyaW5nLFxuICBpbXBvcnRzOiBNYXA8c3RyaW5nLCBzdHJpbmcgfCBFbnRyeT4sXG4gIGVudHJpZXM6IE1hcDxzdHJpbmcsIEVudHJ5Pixcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IG1haW5Db2RlID0gQXJyYXkuZnJvbShpbXBvcnRzLmtleXMoKSkubWFwKChwYXRoKSA9PiBgaW1wb3J0IFwiJHtwYXRofVwiO2ApXG4gICAgLmpvaW4oXCJcXG5cIik7XG5cbiAgY29uc3QgeyBvdXRwdXRGaWxlcyB9ID0gYXdhaXQgYnVpbGQoe1xuICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICBlbnRyeVBvaW50czogW2ZpbGVuYW1lXSxcbiAgICB3cml0ZTogZmFsc2UsXG4gICAgZm9ybWF0OiBcImVzbVwiLFxuICAgIG1pbmlmeTogZmFsc2UsXG4gICAgdGFyZ2V0OiBcImVzbmV4dFwiLFxuICAgIG91dGZpbGU6IGZpbGVuYW1lLFxuXG4gICAgcGx1Z2luczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiBcImNvbXBvbmVudHMtcmVzb2x2ZXJcIixcbiAgICAgICAgc2V0dXAoYnVpbGQpIHtcbiAgICAgICAgICBidWlsZC5vblJlc29sdmUoeyBmaWx0ZXI6IC8uKi8gfSwgKHsgcGF0aCwgaW1wb3J0ZXIgfSkgPT4ge1xuICAgICAgICAgICAgaWYgKHBhdGguc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgICAgICAgcGF0aCA9IHBvc2l4LmpvaW4ocG9zaXguZGlybmFtZShpbXBvcnRlciksIHBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhdGggPT09IGZpbGVuYW1lIHx8IGltcG9ydHMuaGFzKHBhdGgpIHx8IGVudHJpZXMuaGFzKHBhdGgpKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7IHBhdGgsIG5hbWVzcGFjZTogXCJmc1wiIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geyBwYXRoLCBleHRlcm5hbDogdHJ1ZSB9O1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgYnVpbGQub25Mb2FkKFxuICAgICAgICAgICAgeyBmaWx0ZXI6IC8uKi8sIG5hbWVzcGFjZTogXCJmc1wiIH0sXG4gICAgICAgICAgICBhc3luYyAoeyBwYXRoIH0pID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY29udGVudHMgPSBwYXRoID09PSBmaWxlbmFtZVxuICAgICAgICAgICAgICAgID8gbWFpbkNvZGVcbiAgICAgICAgICAgICAgICA6IGF3YWl0IGdldEVudHJ5Q29udGVudChcbiAgICAgICAgICAgICAgICAgIGltcG9ydHMuZ2V0KHBhdGgpIHx8IGVudHJpZXMuZ2V0KHBhdGgpLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmICghY29udGVudHMpIHtcbiAgICAgICAgICAgICAgICBsb2cuZXJyb3IoYFtjb21wb25lbnRzXSBGaWxlIFwiJHtwYXRofVwiIG5vdCBmb3VuZCBvciBpcyBlbXB0eWApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgY29udGVudHMsXG4gICAgICAgICAgICAgICAgbG9hZGVyOiBwYXRoLmVuZHNXaXRoKFwiLnRzXCIpID8gXCJ0c1wiIDogXCJqc1wiLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdLFxuICB9KTtcblxuICBhd2FpdCBzdG9wKCk7XG5cbiAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpO1xuICByZXR1cm4gZGVjb2Rlci5kZWNvZGUob3V0cHV0RmlsZXNbMF0uY29udGVudHMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRFbnRyeUNvbnRlbnQoZW50cnk/OiBFbnRyeSB8IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGlmICh0eXBlb2YgZW50cnkgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gZW50cnk7XG4gIH1cblxuICBpZiAoZW50cnkpIHtcbiAgICBjb25zdCB7IGNvbnRlbnQgfSA9IGF3YWl0IGVudHJ5LmdldENvbnRlbnQodGV4dExvYWRlcik7XG4gICAgcmV0dXJuIChjb250ZW50IGFzIHN0cmluZykgfHwgXCJcIjtcbiAgfVxuXG4gIHJldHVybiBcIlwiO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3h5Q29tcG9uZW50cyB7XG4gIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG4gIChwcm9wcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogYW55O1xuICBba2V5OiBzdHJpbmddOiBQcm94eUNvbXBvbmVudHM7XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuZCByZXR1cm5zIGEgcHJveHkgdG8gdXNlIHRoZSBjb21wb25lbnRzXG4gKiBhcyBjb21wLm5hbWUoKSBpbnN0ZWFkIG9mIGNvbXBvbmVudHMuZ2V0KFwibmFtZVwiKS5yZW5kZXIoKVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Qcm94eShcbiAgY29tcG9uZW50czogQ29tcG9uZW50cyxcbiAgZXh0cmFDb2RlOiBNYXA8c3RyaW5nLCBzdHJpbmcgfCBFbnRyeT4sXG4pOiBQcm94eUNvbXBvbmVudHMge1xuICBjb25zdCBub2RlID0ge1xuICAgIF9jb21wb25lbnRzOiBjb21wb25lbnRzLFxuICAgIF9wcm94aWVzOiBuZXcgTWFwKCksXG4gIH07XG4gIHJldHVybiBuZXcgUHJveHkobm9kZSwge1xuICAgIGdldDogKHRhcmdldCwgbmFtZSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBuYW1lICE9PSBcInN0cmluZ1wiIHx8IG5hbWUgaW4gdGFyZ2V0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3Qga2V5ID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICBpZiAodGFyZ2V0Ll9wcm94aWVzLmhhcyhrZXkpKSB7XG4gICAgICAgIHJldHVybiB0YXJnZXQuX3Byb3hpZXMuZ2V0KGtleSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRhcmdldC5fY29tcG9uZW50cy5nZXQoa2V5KTtcblxuICAgICAgaWYgKCFjb21wb25lbnQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgXCIke25hbWV9XCIgbm90IGZvdW5kYCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb21wb25lbnQgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgICAgY29uc3QgcHJveHkgPSB0b1Byb3h5KGNvbXBvbmVudCwgZXh0cmFDb2RlKTtcbiAgICAgICAgdGFyZ2V0Ll9wcm94aWVzLnNldChrZXksIHByb3h5KTtcbiAgICAgICAgcmV0dXJuIHByb3h5O1xuICAgICAgfVxuXG4gICAgICAvLyBTYXZlIGNvbXBvbmVudCBhc3NldHNcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGNvbXBvbmVudC5hc3NldHMpIHtcbiAgICAgICAgZXh0cmFDb2RlLnNldChrZXksIHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgLy8gUmV0dXJuIHRoZSBmdW5jdGlvbiB0byByZW5kZXIgdGhlIGNvbXBvbmVudFxuICAgICAgcmV0dXJuIChwcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IGNvbXBvbmVudC5yZW5kZXIocHJvcHMpO1xuICAgIH0sXG4gIH0pIGFzIHVua25vd24gYXMgUHJveHlDb21wb25lbnRzO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLFNBQVMsV0FBVyxRQUFRLDBCQUEwQjtBQUN0RCxTQUFTLEtBQUssRUFBRSxJQUFJLFFBQVEscUJBQXFCO0FBQ2pELE9BQU8sZ0JBQWdCLG9CQUFvQjtBQUMzQyxTQUFTLEtBQUssUUFBUSxrQkFBa0I7QUFDeEMsU0FBUyxHQUFHLFFBQVEsaUJBQWlCO0FBVXJDOztDQUVDLEdBQ0QsT0FBTyxNQUFNO0VBQ1gsbURBQW1ELEdBQ25ELFFBQWlCO0VBRWpCLFlBQVksT0FBZ0IsQ0FBRTtJQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsT0FBTztFQUNoQztFQUVBLG1DQUFtQyxH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 +// denoCacheMetadata=299892348635551945,936418506161586578
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/4da031df864b2407ee225bbc7e019818e0738ebcd8767b934063fcffa33bffa3.js b/vendor/gen/https/deno.land/4da031df864b2407ee225bbc7e019818e0738ebcd8767b934063fcffa33bffa3.js new file mode 100644 index 0000000..65d321c --- /dev/null +++ b/vendor/gen/https/deno.land/4da031df864b2407ee225bbc7e019818e0738ebcd8767b934063fcffa33bffa3.js @@ -0,0 +1,13 @@ +export default function() { + return (env)=>{ + env.tags.push(jsTag); + }; +} +function jsTag(_env, code) { + if (!code.startsWith(">")) { + return; + } + return code.replace(/^>\s+/, ""); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9wbHVnaW5zL2pzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnQsIFBsdWdpbiB9IGZyb20gXCIuLi9zcmMvZW52aXJvbm1lbnQudHNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCk6IFBsdWdpbiB7XG4gIHJldHVybiAoZW52OiBFbnZpcm9ubWVudCkgPT4ge1xuICAgIGVudi50YWdzLnB1c2goanNUYWcpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBqc1RhZyhcbiAgX2VudjogRW52aXJvbm1lbnQsXG4gIGNvZGU6IHN0cmluZyxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghY29kZS5zdGFydHNXaXRoKFwiPlwiKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHJldHVybiBjb2RlLnJlcGxhY2UoL14+XFxzKy8sIFwiXCIpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLGVBQWU7RUFDYixPQUFPLENBQUM7SUFDTixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7RUFDaEI7QUFDRjtBQUVBLFNBQVMsTUFDUCxJQUFpQixFQUNqQixJQUFZO0VBRVosSUFBSSxDQUFDLEtBQUssVUFBVSxDQUFDLE1BQU07SUFDekI7RUFDRjtFQUVBLE9BQU8sS0FBSyxPQUFPLENBQUMsU0FBUztBQUMvQiJ9 +// denoCacheMetadata=24069137121345830,8384104360823363736
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/4e25728eaf52b7ef4beef7844850754032e0011a1ba5996a2b9037dacd1bbde0.js b/vendor/gen/https/deno.land/4e25728eaf52b7ef4beef7844850754032e0011a1ba5996a2b9037dacd1bbde0.js new file mode 100644 index 0000000..97b7cde --- /dev/null +++ b/vendor/gen/https/deno.land/4e25728eaf52b7ef4beef7844850754032e0011a1ba5996a2b9037dacd1bbde0.js @@ -0,0 +1,65 @@ +/** Class to store loaders, engines and other stuff related with different formats */ export default class Formats { + entries = new Map(); + get size() { + return this.entries.size; + } + /** Assign a value to a extension */ set(format, override = true) { + format.ext = format.ext.toLowerCase(); + const ext = format.ext; + const existing = this.entries.get(ext); + if (existing) { + if (override) { + this.entries.set(ext, { + ...existing, + ...format + }); + } else { + this.entries.set(ext, { + ...format, + ...existing + }); + } + return; + } + // Simple extension (.ts, .js, .json) + if (ext.match(/^\.\w+$/)) { + this.entries.set(ext, format); + return; + } + // Chained extension (.tmpl.js) goes first + if (ext.match(/^\.\w+\.\w+$/)) { + const entries = Array.from(this.entries.entries()); + entries.unshift([ + ext, + format + ]); + this.entries = new Map(entries); + return; + } + throw new Error(`Invalid file extension: "${ext}". It must start with '.'`); + } + /** Returns a format by extension */ get(extension) { + return this.entries.get(extension.toLowerCase()); + } + /** Delete a format */ delete(extension) { + this.entries.delete(extension.toLowerCase()); + } + /** Returns if a format exists */ has(extension) { + return this.entries.has(extension.toLowerCase()); + } + /** Search and return the associated format for a path */ search(path) { + path = path.toLowerCase(); + for (const format of this.entries.values()){ + if (path.endsWith(format.ext)) { + return format; + } + } + } + /** Delete a cached template */ deleteCache(file) { + for (const format of this.entries.values()){ + format.engines?.forEach((engine)=>engine.deleteCache(file)); + } + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS9mb3JtYXRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW5naW5lIH0gZnJvbSBcIi4vcmVuZGVyZXIudHNcIjtcbmltcG9ydCB0eXBlIHsgTG9hZGVyIH0gZnJvbSBcIi4vZnMudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBGb3JtYXQge1xuICAvKiogVGhlIGZpbGUgZXh0ZW5zaW9uIGZvciB0aGlzIGZvcm1hdCAqL1xuICBleHQ6IHN0cmluZztcblxuICAvKiogV2hldGhlciB0aGlzIGZvcm1hdCBpcyBmb3IgcGFnZXMgKi9cbiAgaXNQYWdlPzogYm9vbGVhbjtcblxuICAvKiogVGhlIGZpbGUgbG9hZGVyIHVzZWQgZm9yIHRoaXMgZm9ybWF0ICh1c2VkIGJ5IHBhZ2VzLCBpbmNsdWRlcywgY29tcG9uZW50cywgZXRjKSAqL1xuICBsb2FkZXI/OiBMb2FkZXI7XG5cbiAgLyoqIExvYWRlciBmb3IgX2RhdGEgZmlsZXMgaW4gdGhpcyBmb3JtYXQgKi9cbiAgZGF0YUxvYWRlcj86IExvYWRlcjtcblxuICAvKipcbiAgICogVGhlIHRlbXBsYXRlIGVuZ2luZXMgdXNlZCB0byByZW5kZXIgdGhpcyBmb3JtYXRcbiAgICogVXNlZCB0byByZW5kZXIgdGhlIHBhZ2UgYW5kIGNvbXBvbmVudHNcbiAgICovXG4gIGVuZ2luZXM/OiBFbmdpbmVbXTtcbn1cblxuLyoqIENsYXNzIHRvIHN0b3JlIGxvYWRlcnMsIGVuZ2luZXMgYW5kIG90aGVyIHN0dWZmIHJlbGF0ZWQgd2l0aCBkaWZmZXJlbnQgZm9ybWF0cyAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRm9ybWF0cyB7XG4gIGVudHJpZXMgPSBuZXcgTWFwPHN0cmluZywgRm9ybWF0PigpO1xuXG4gIGdldCBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZW50cmllcy5zaXplO1xuICB9XG5cbiAgLyoqIEFzc2lnbiBhIHZhbHVlIHRvIGEgZXh0ZW5zaW9uICovXG4gIHNldChmb3JtYXQ6IEZvcm1hdCwgb3ZlcnJpZGUgPSB0cnVlKTogdm9pZCB7XG4gICAgZm9ybWF0LmV4dCA9IGZvcm1hdC5leHQudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBleHQgPSBmb3JtYXQuZXh0O1xuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5lbnRyaWVzLmdldChleHQpO1xuXG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgdGhpcy5lbnRyaWVzLnNldChleHQsIHsgLi4uZXhpc3RpbmcsIC4uLmZvcm1hdCB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZW50cmllcy5zZXQoZXh0LCB7IC4uLmZvcm1hdCwgLi4uZXhpc3RpbmcgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2ltcGxlIGV4dGVuc2lvbiAoLnRzLCAuanMsIC5qc29uKVxuICAgIGlmIChleHQubWF0Y2goL15cXC5cXHcrJC8pKSB7XG4gICAgICB0aGlzLmVudHJpZXMuc2V0KGV4dCwgZm9ybWF0KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDaGFpbmVkIGV4dGVuc2lvbiAoLnRtcGwuanMpIGdvZXMgZmlyc3RcbiAgICBpZiAoZXh0Lm1hdGNoKC9eXFwuXFx3K1xcLlxcdyskLykpIHtcbiAgICAgIGNvbnN0IGVudHJpZXMgPSBBcnJheS5mcm9tKHRoaXMuZW50cmllcy5lbnRyaWVzKCkpO1xuICAgICAgZW50cmllcy51bnNoaWZ0KFtleHQsIGZvcm1hdF0pO1xuICAgICAgdGhpcy5lbnRyaWVzID0gbmV3IE1hcChlbnRyaWVzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgSW52YWxpZCBmaWxlIGV4dGVuc2lvbjogXCIke2V4dH1cIi4gIEl0IG11c3Qgc3RhcnQgd2l0aCAnLidgLFxuICAgICk7XG4gIH1cblxuICAvKiogUmV0dXJucyBhIGZvcm1hdCBieSBleHRlbnNpb24gKi9cbiAgZ2V0KGV4dGVuc2lvbjogc3RyaW5nKTogRm9ybWF0IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5lbnRyaWVzLmdldChleHRlbnNpb24udG9Mb3dlckNhc2UoKSk7XG4gIH1cblxuICAvKiogRGVsZXRlIGEgZm9ybWF0ICovXG4gIGRlbGV0ZShleHRlbnNpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZW50cmllcy5kZWxldGUoZXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCkpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgaWYgYSBmb3JtYXQgZXhpc3RzICovXG4gIGhhcyhleHRlbnNpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVudHJpZXMuaGFzKGV4dGVuc2lvbi50b0xvd2VyQ2FzZSgpKTtcbiAgfVxuXG4gIC8qKiBTZWFyY2ggYW5kIHJldHVybiB0aGUgYXNzb2NpYXRlZCBmb3JtYXQgZm9yIGEgcGF0aCAqL1xuICBzZWFyY2gocGF0aDogc3RyaW5nKTogRm9ybWF0IHwgdW5kZWZpbmVkIHtcbiAgICBwYXRoID0gcGF0aC50b0xvd2VyQ2FzZSgpO1xuXG4gICAgZm9yIChjb25zdCBmb3JtYXQgb2YgdGhpcy5lbnRyaWVzLnZhbHVlcygpKSB7XG4gICAgICBpZiAocGF0aC5lbmRzV2l0aChmb3JtYXQuZXh0KSkge1xuICAgICAgICByZXR1cm4gZm9ybWF0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBEZWxldGUgYSBjYWNoZWQgdGVtcGxhdGUgKi9cbiAgZGVsZXRlQ2FjaGUoZmlsZTogc3RyaW5nKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBmb3JtYXQgb2YgdGhpcy5lbnRyaWVzLnZhbHVlcygpKSB7XG4gICAgICBmb3JtYXQuZW5naW5lcz8uZm9yRWFjaCgoZW5naW5lKSA9PiBlbmdpbmUuZGVsZXRlQ2FjaGUoZmlsZSkpO1xuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVCQSxtRkFBbUYsR0FDbkYsZUFBZSxNQUFNO0VBQ25CLFVBQVUsSUFBSSxNQUFzQjtFQUVwQyxJQUFJLE9BQWU7SUFDakIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7RUFDMUI7RUFFQSxrQ0FBa0MsR0FDbEMsSUFBSSxNQUFjLEVBQUUsV0FBVyxJQUFJLEVBQVE7SUFDekMsT0FBTyxHQUFHLEdBQUcsT0FBTyxHQUFHLENBQUMsV0FBVztJQUNuQyxNQUFNLE1BQU0sT0FBTyxHQUFHO0lBQ3RCLE1BQU0sV0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztJQUVsQyxJQUFJLFVBQVU7TUFDWixJQUFJLFVBQVU7UUFDWixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLO1VBQUUsR0FBRyxRQUFRO1VBQUUsR0FBRyxNQUFNO1FBQUM7TUFDakQsT0FBTztRQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUs7VUFBRSxHQUFHLE1BQU07VUFBRSxHQUFHLFFBQVE7UUFBQztNQUNqRDtNQUNBO0lBQ0Y7SUFFQSxxQ0FBcUM7SUFDckMsSUFBSSxJQUFJLEtBQUssQ0FBQyxZQUFZO01BQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUs7TUFDdEI7SUFDRjtJQUVBLDBDQUEwQztJQUMxQyxJQUFJLElBQUksS0FBSyxDQUFDLGlCQUFpQjtNQUM3QixNQUFNLFVBQVUsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPO01BQy9DLFFBQVEsT0FBTyxDQUFDO1FBQUM7UUFBSztPQUFPO01BQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxJQUFJO01BQ3ZCO0lBQ0Y7SUFFQSxNQUFNLElBQUksTUFDUixDQUFDLHlCQUF5QixFQUFFLElBQUksMEJBQTBCLENBQUM7RUFFL0Q7RUFFQSxrQ0FBa0MsR0FDbEMsSUFBSSxTQUFpQixFQUFzQjtJQUN6QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsV0FBVztFQUMvQztFQUVBLG9CQUFvQixHQUNwQixPQUFPLFNBQWlCLEVBQVE7SUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxXQUFXO0VBQzNDO0VBRUEsK0JBQStCLEdBQy9CLElBQUksU0FBaUIsRUFBVztJQUM5QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsV0FBVztFQUMvQztFQUVBLHVEQUF1RCxHQUN2RCxPQUFPLElBQVksRUFBc0I7SUFDdkMsT0FBTyxLQUFLLFdBQVc7SUFFdkIsS0FBSyxNQUFNLFVBQVUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUk7TUFDMUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxPQUFPLEdBQUcsR0FBRztRQUM3QixPQUFPO01BQ1Q7SUFDRjtFQUNGO0VBRUEsNkJBQTZCLEdBQzdCLFlBQVksSUFBWSxFQUFRO0lBQzlCLEtBQUssTUFBTSxVQUFVLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFJO01BQzFDLE9BQU8sT0FBTyxFQUFFLFFBQVEsQ0FBQyxTQUFXLE9BQU8sV0FBVyxDQUFDO0lBQ3pEO0VBQ0Y7QUFDRiJ9 +// denoCacheMetadata=9854688774849383936,11737632753643038664
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/4f5335c2d09065ff97ba3e6d69f5e92a5669fc492101e27ff1fa3741d6b1eeee.js b/vendor/gen/https/deno.land/4f5335c2d09065ff97ba3e6d69f5e92a5669fc492101e27ff1fa3741d6b1eeee.js new file mode 100644 index 0000000..b753063 --- /dev/null +++ b/vendor/gen/https/deno.land/4f5335c2d09065ff97ba3e6d69f5e92a5669fc492101e27ff1fa3741d6b1eeee.js @@ -0,0 +1,110 @@ +import { CTOR_KEY } from "../constructor-lock.ts"; +import { NodeList, nodeListMutatorSym } from "./node-list.ts"; +import { Node, nodesAndTextNodes, NodeType } from "./node.ts"; +import { customByClassNameSym, customByTagNameSym } from "./selectors/custom-api.ts"; +import { getElementsByClassName } from "./utils.ts"; +import UtilTypes from "./utils-types.ts"; +export class DocumentFragment extends Node { + constructor(){ + super("#document-fragment", NodeType.DOCUMENT_FRAGMENT_NODE, null, CTOR_KEY); + } + get childElementCount() { + return this._getChildNodesMutator().elementsView().length; + } + get children() { + return this._getChildNodesMutator().elementsView(); + } + get firstElementChild() { + const elements = this._getChildNodesMutator().elementsView(); + return elements[0] ?? null; + } + get lastElementChild() { + const elements = this._getChildNodesMutator().elementsView(); + return elements[elements.length - 1] ?? null; + } + _shallowClone() { + return new DocumentFragment(); + } + append(...nodes) { + const mutator = this._getChildNodesMutator(); + mutator.push(...nodesAndTextNodes(nodes, this)); + } + prepend(...nodes) { + const mutator = this._getChildNodesMutator(); + mutator.splice(0, 0, ...nodesAndTextNodes(nodes, this)); + } + replaceChildren(...nodes) { + const mutator = this._getChildNodesMutator(); + // Remove all current child nodes + for (const child of this.childNodes){ + child._setParent(null); + } + mutator.splice(0, this.childNodes.length); + // Add new children + mutator.splice(0, 0, ...nodesAndTextNodes(nodes, this)); + } + // TODO: DRY!!! + getElementById(id) { + for (const child of this.childNodes){ + if (child.nodeType === NodeType.ELEMENT_NODE) { + if (child.id === id) { + return child; + } + const search = child.getElementById(id); + if (search) { + return search; + } + } + } + return null; + } + querySelector(selectors) { + if (!this.ownerDocument) { + throw new Error("DocumentFragment must have an owner document"); + } + return this.ownerDocument._nwapi.first(selectors, this); + } + querySelectorAll(selectors) { + if (!this.ownerDocument) { + throw new Error("DocumentFragment must have an owner document"); + } + const nodeList = new NodeList(); + const mutator = nodeList[nodeListMutatorSym](); + mutator.push(...this.ownerDocument._nwapi.select(selectors, this)); + return nodeList; + } +} +UtilTypes.DocumentFragment = DocumentFragment; +// Add required methods just for Sizzle.js selector to work on +// DocumentFragment's +function documentFragmentGetElementsByTagName(tagName) { + const search = []; + if (tagName === "*") { + return documentFragmentGetElementsByTagNameWildcard(this, search); + } + for (const child of this.childNodes){ + if (child.nodeType === NodeType.ELEMENT_NODE) { + if (child.tagName === tagName) { + search.push(child); + } + child._getElementsByTagName(tagName, search); + } + } + return search; +} +function documentFragmentGetElementsByClassName(className) { + return getElementsByClassName(this, className.trim().split(/\s+/), []); +} +function documentFragmentGetElementsByTagNameWildcard(fragment, search) { + for (const child of fragment.childNodes){ + if (child.nodeType === NodeType.ELEMENT_NODE) { + search.push(child); + child._getElementsByTagNameWildcard(search); + } + } + return search; +} +DocumentFragment.prototype[customByTagNameSym] = documentFragmentGetElementsByTagName; +DocumentFragment.prototype[customByClassNameSym] = documentFragmentGetElementsByClassName; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvZGVub19kb21AdjAuMS40OS9zcmMvZG9tL2RvY3VtZW50LWZyYWdtZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENUT1JfS0VZIH0gZnJvbSBcIi4uL2NvbnN0cnVjdG9yLWxvY2sudHNcIjtcbmltcG9ydCB7IEhUTUxDb2xsZWN0aW9uIH0gZnJvbSBcIi4vaHRtbC1jb2xsZWN0aW9uLnRzXCI7XG5pbXBvcnQgeyBOb2RlTGlzdCwgbm9kZUxpc3RNdXRhdG9yU3ltIH0gZnJvbSBcIi4vbm9kZS1saXN0LnRzXCI7XG5pbXBvcnQgeyBOb2RlLCBub2Rlc0FuZFRleHROb2RlcywgTm9kZVR5cGUgfSBmcm9tIFwiLi9ub2RlLnRzXCI7XG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIi4vZWxlbWVudC50c1wiO1xuaW1wb3J0IHtcbiAgY3VzdG9tQnlDbGFzc05hbWVTeW0sXG4gIGN1c3RvbUJ5VGFnTmFtZVN5bSxcbn0gZnJvbSBcIi4vc2VsZWN0b3JzL2N1c3RvbS1hcGkudHNcIjtcbmltcG9ydCB7IGdldEVsZW1lbnRzQnlDbGFzc05hbWUgfSBmcm9tIFwiLi91dGlscy50c1wiO1xuaW1wb3J0IFV0aWxUeXBlcyBmcm9tIFwiLi91dGlscy10eXBlcy50c1wiO1xuXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRGcmFnbWVudCBleHRlbmRzIE5vZGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcbiAgICAgIFwiI2RvY3VtZW50LWZyYWdtZW50XCIsXG4gICAgICBOb2RlVHlwZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFLFxuICAgICAgbnVsbCxcbiAgICAgIENUT1JfS0VZLFxuICAgICk7XG4gIH1cblxuICBnZXQgY2hpbGRFbGVtZW50Q291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0Q2hpbGROb2Rlc011dGF0b3IoKS5lbGVtZW50c1ZpZXcoKS5sZW5ndGg7XG4gIH1cblxuICBnZXQgY2hpbGRyZW4oKTogSFRNTENvbGxlY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9nZXRDaGlsZE5vZGVzTXV0YXRvcigpLmVsZW1lbnRzVmlldygpO1xuICB9XG5cbiAgZ2V0IGZpcnN0RWxlbWVudENoaWxkKCk6IEVsZW1lbnQgfCBudWxsIHtcbiAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuX2dldENoaWxkTm9kZXNNdXRhdG9yKCkuZWxlbWVudHNWaWV3KCk7XG4gICAgcmV0dXJuIGVsZW1lbnRzWzBdID8/IG51bGw7XG4gIH1cblxuICBnZXQgbGFzdEVsZW1lbnRDaGlsZCgpOiBFbGVtZW50IHwgbnVsbCB7XG4gICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLl9nZXRDaGlsZE5vZGVzTXV0YXRvcigpLmVsZW1lbnRzVmlldygpO1xuICAgIHJldHVybiBlbGVtZW50c1tlbGVtZW50cy5sZW5ndGggLSAxXSA/PyBudWxsO1xuICB9XG5cbiAgb3ZlcnJpZGUgX3NoYWxsb3dDbG9uZSgpOiBEb2N1bWVudEZyYWdtZW50IHtcbiAgICByZXR1cm4gbmV3IERvY3VtZW50RnJhZ21lbnQoKTtcbiAgfVxuXG4gIGFwcGVuZCguLi5ub2RlczogKE5vZGUgfCBzdHJpbmcpW10pIHtcbiAgICBjb25zdCBtdXRhdG9yID0gdGhpcy5fZ2V0Q2hpbGROb2Rlc011dGF0b3IoKTtcbiAgICBtdXRhdG9yLnB1c2goLi4ubm9kZXNBbmRUZXh0Tm9kZXMobm9kZXMsIHRoaXMpKTtcbiAgfVxuXG4gIHByZXBlbmQoLi4ubm9kZXM6IChOb2RlIHwgc3RyaW5nKVtdKSB7XG4gICAgY29uc3QgbXV0YXRvciA9IHRoaXMuX2dldENoaWxkTm9kZXNNdXRhdG9yKCk7XG4gICAgbXV0YXRvci5zcGxpY2UoMCwgMCwgLi4ubm9kZXNBbmRUZXh0Tm9kZXMobm9kZXMsIHRoaXMpKTtcbiAgfVxuXG4gIHJlcGxhY2VDaGlsZHJlbiguLi5ub2RlczogKE5vZGUgfCBzdHJpbmcpW10pIHtcbiAgICBjb25zdCBtdXRhdG9yID0gdGhpcy5fZ2V0Q2hpbGROb2Rlc011dGF0b3IoKTtcblxuICAgIC8vIFJlbW92ZSBhbGwgY3VycmVudCBjaGlsZCBub2Rlc1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZE5vZGVzKSB7XG4gICAgICBjaGlsZC5fc2V0UGFyZW50KG51bGwpO1xuICAgIH1cbiAgICBtdXRhdG9yLnNwbGljZSgwLCB0aGlzLmNoaWxkTm9kZXMubGVuZ3RoKTtcblxuICAgIC8vIEFkZCBuZXcgY2hpbGRyZW5cbiAgICBtdXRhdG9yLnNwbGljZSgwLCAwLCAuLi5ub2Rlc0FuZFRleHROb2Rlcyhub2RlcywgdGhpcykpO1xuICB9XG5cbiAgLy8gVE9ETzogRFJZISEhXG4gIGdldEVsZW1lbnRCeUlkKGlkOiBzdHJpbmcpOiBFbGVtZW50IHwgbnVsbCB7XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkTm9kZXMpIHtcbiAgICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PT0gTm9kZVR5cGUuRUxFTUVOVF9OT0RFKSB7XG4gICAgICAgIGlmICgoPEVsZW1lbnQ+IGNoaWxkKS5pZCA9PT0gaWQpIHtcbiAgICAgICAgICByZXR1cm4gPEVsZW1lbnQ+IGNoaWxkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VhcmNoID0gKDxFbGVtZW50PiBjaGlsZCkuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICAgICAgICBpZiAoc2VhcmNoKSB7XG4gICAgICAgICAgcmV0dXJuIHNlYXJjaDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcXVlcnlTZWxlY3RvcihzZWxlY3RvcnM6IHN0cmluZyk6IEVsZW1lbnQgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMub3duZXJEb2N1bWVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRG9jdW1lbnRGcmFnbWVudCBtdXN0IGhhdmUgYW4gb3duZXIgZG9jdW1lbnRcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMub3duZXJEb2N1bWVudCEuX253YXBpLmZpcnN0KHNlbGVjdG9ycywgdGhpcyBhcyBhbnkgYXMgRWxlbWVudCk7XG4gIH1cblxuICBxdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yczogc3RyaW5nKTogTm9kZUxpc3Qge1xuICAgIGlmICghdGhpcy5vd25lckRvY3VtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEb2N1bWVudEZyYWdtZW50IG11c3QgaGF2ZSBhbiBvd25lciBkb2N1bWVudFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBub2RlTGlzdCA9IG5ldyBOb2RlTGlzdCgpO1xuICAgIGNvbnN0IG11dGF0b3IgPSBub2RlTGlzdFtub2RlTGlzdE11dGF0b3JTeW1dKCk7XG4gICAgbXV0YXRvci5wdXNoKFxuICAgICAgLi4udGhpcy5vd25lckRvY3VtZW50IS5fbndhcGkuc2VsZWN0KHNlbGVjdG9ycywgdGhpcyBhcyBhbnkgYXMgRWxlbWVudCksXG4gICAgKTtcblxuICAgIHJldHVybiBub2RlTGlzdDtcbiAgfVxufVxuXG5VdGlsVHlwZXMuRG9jdW1lbnRGcmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ7XG5cbi8vIEFkZCByZXF1aXJlZCBtZXRob2RzIGp1c3QgZm9yIFNpenpsZS5qcyBzZWxlY3RvciB0byB3b3JrIG9uXG4vLyBEb2N1bWVudEZyYWdtZW50J3NcbmZ1bmN0aW9uIGRvY3VtZW50RnJhZ21lbnRHZXRFbGVtZW50c0J5VGFnTmFtZShcbiAgdGhpczogRG9jdW1lbnRGcmFnbWVudCxcbiAgdGFnTmFtZTogc3RyaW5nLFxuKTogTm9kZVtdIHtcbiAgY29uc3Qgc2VhcmNoOiBOb2RlW10gPSBbXTtcblxuICBpZiAodGFnTmFtZSA9PT0gXCIqXCIpIHtcbiAgICByZXR1cm4gZG9jdW1lbnRGcmFnbWVudEdldEVsZW1lbnRzQnlUYWdOYW1lV2lsZGNhcmQodGhpcywgc2VhcmNoKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZE5vZGVzKSB7XG4gICAgaWYgKGNoaWxkLm5vZGVUeXBlID09PSBOb2RlVHlwZS5FTEVNRU5UX05PREUpIHtcbiAgICAgIGlmICgoPEVsZW1lbnQ+IGNoaWxkKS50YWdOYW1lID09PSB0YWdOYW1lKSB7XG4gICAgICAgIHNlYXJjaC5wdXNoKGNoaWxkKTtcbiAgICAgIH1cblxuICAgICAgKDxFbGVtZW50PiBjaGlsZCkuX2dldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ05hbWUsIHNlYXJjaCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNlYXJjaDtcbn1cblxuZnVuY3Rpb24gZG9jdW1lbnRGcmFnbWVudEdldEVsZW1lbnRzQnlDbGFzc05hbWUoXG4gIHRoaXM6IERvY3VtZW50RnJhZ21lbnQsXG4gIGNsYXNzTmFtZTogc3RyaW5nLFxuKSB7XG4gIHJldHVybiBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHRoaXMsIGNsYXNzTmFtZS50cmltKCkuc3BsaXQoL1xccysvKSwgW10pO1xufVxuXG5mdW5jdGlvbiBkb2N1bWVudEZyYWdtZW50R2V0RWxlbWVudHNCeVRhZ05hbWVXaWxkY2FyZChcbiAgZnJhZ21lbnQ6IERvY3VtZW50RnJhZ21lbnQsXG4gIHNlYXJjaDogTm9kZVtdLFxuKTogTm9kZVtdIHtcbiAgZm9yIChjb25zdCBjaGlsZCBvZiBmcmFnbWVudC5jaGlsZE5vZGVzKSB7XG4gICAgaWYgKGNoaWxkLm5vZGVUeXBlID09PSBOb2RlVHlwZS5FTEVNRU5UX05PREUpIHtcbiAgICAgIHNlYXJjaC5wdXNoKGNoaWxkKTtcbiAgICAgICg8RWxlbWVudD4gY2hpbGQpLl9nZXRFbGVtZW50c0J5VGFnTmFtZVdpbGRjYXJkKHNlYXJjaCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNlYXJjaDtcbn1cblxuKERvY3VtZW50RnJhZ21lbnQgYXMgYW55KS5wcm90b3R5cGVbY3VzdG9tQnlUYWdOYW1lU3ltXSA9XG4gIGRvY3VtZW50RnJhZ21lbnRHZXRFbGVtZW50c0J5VGFnTmFtZTtcbihEb2N1bWVudEZyYWdtZW50IGFzIGFueSkucHJvdG90eXBlW2N1c3RvbUJ5Q2xhc3NOYW1lU3ltXSA9XG4gIGRvY3VtZW50RnJhZ21lbnRHZXRFbGVtZW50c0J5Q2xhc3NOYW1lO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsUUFBUSxRQUFRLHlCQUF5QjtBQUVsRCxTQUFTLFFBQVEsRUFBRSxrQkFBa0IsUUFBUSxpQkFBaUI7QUFDOUQsU0FBUyxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxRQUFRLFlBQVk7QUFFOUQsU0FDRSxvQkFBb0IsRUFDcEIsa0JBQWtCLFFBQ2IsNEJBQTRCO0FBQ25DLFNBQVMsc0JBQXNCLFFBQVEsYUFBYTtBQUNwRCxPQUFPLGVBQWUsbUJBQW1CO0FBRXpDLE9BQU8sTUFBTSx5QkFBeUI7RUFDcEMsYUFBYztJQUNaLEtBQUssQ0FDSCxzQkFDQSxTQUFTLHNCQUFzQixFQUMvQixNQUNBO0VBRUo7RUFFQSxJQUFJLG9CQUE0QjtJQUM5QixPQUFPLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxZQUFZLEdBQUcsTUFBTTtFQUMzRDtFQUVBLElBQUksV0FBMkI7SUFDN0IsT0FBTyxJQUFJLENBQUMscUJBQXFCLEdBQUcsWUFBWTtFQUNsRDtFQUVBLElBQUksb0JBQW9DO0lBQ3RDLE1BQU0sV0FBVyxJQUFJLENBQUMscUJBQXFCLEdBQUcsWUFBWTtJQUMxRCxPQUFPLFFBQVEsQ0FBQyxFQUFFLElBQUk7RUFDeEI7RUFFQSxJQUFJLG1CQUFtQztJQUNyQyxNQUFNLFdBQVcsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFlBQVk7SUFDMUQsT0FBTyxRQUFRLENBQUMsU0FBUyxNQUFNLEdBQUcsRUFBRSxJQUFJO0VBQzFDO0VBRVMsZ0JBQWtDO0lBQ3pDLE9BQU8sSUFBSTtFQUNiO0VBRUEsT0FBTyxHQUFHLEtBQXdCLEVBQUU7SUFDbEMsTUFBTSxVQUFVLElBQUksQ0FBQyxxQkFBcUI7SUFDMUMsUUFBUSxJQUFJLElBQUksa0JBQWtCLE9BQU8sSUFBSTtFQUMvQztFQUVBLFFBQVEsR0FBRyxLQUF3QixFQUFF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 +// denoCacheMetadata=1528098926956525668,12731734340740206619
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/54e73a4a75987340e842ebdfa887a096948e028928d30002d16fe0938ec00bd4.js b/vendor/gen/https/deno.land/54e73a4a75987340e842ebdfa887a096948e028928d30002d16fe0938ec00bd4.js new file mode 100644 index 0000000..ff34a8e --- /dev/null +++ b/vendor/gen/https/deno.land/54e73a4a75987340e842ebdfa887a096948e028928d30002d16fe0938ec00bd4.js @@ -0,0 +1,4 @@ +export { bold, brightBlue, dim, green, italic, red, stripColor, underline, yellow } from "https://deno.land/std@0.170.0/fmt/colors.ts"; +export { dirname, join, normalize } from "https://deno.land/std@0.170.0/path/mod.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvcHJvbXB0L2RlcHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgYm9sZCxcbiAgYnJpZ2h0Qmx1ZSxcbiAgZGltLFxuICBncmVlbixcbiAgaXRhbGljLFxuICByZWQsXG4gIHN0cmlwQ29sb3IsXG4gIHVuZGVybGluZSxcbiAgeWVsbG93LFxufSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMTcwLjAvZm10L2NvbG9ycy50c1wiO1xuZXhwb3J0IHtcbiAgZGlybmFtZSxcbiAgam9pbixcbiAgbm9ybWFsaXplLFxufSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMTcwLjAvcGF0aC9tb2QudHNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUNFLElBQUksRUFDSixVQUFVLEVBQ1YsR0FBRyxFQUNILEtBQUssRUFDTCxNQUFNLEVBQ04sR0FBRyxFQUNILFVBQVUsRUFDVixTQUFTLEVBQ1QsTUFBTSxRQUNELDhDQUE4QztBQUNyRCxTQUNFLE9BQU8sRUFDUCxJQUFJLEVBQ0osU0FBUyxRQUNKLDRDQUE0QyJ9 +// denoCacheMetadata=16272068494412669583,5172286019227518564
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/563f031a66eba38ffe1953bc4baf77ef05145e3c109d0059188c64a030ea79b7.js b/vendor/gen/https/deno.land/563f031a66eba38ffe1953bc4baf77ef05145e3c109d0059188c64a030ea79b7.js new file mode 100644 index 0000000..f311786 --- /dev/null +++ b/vendor/gen/https/deno.land/563f031a66eba38ffe1953bc4baf77ef05145e3c109d0059188c64a030ea79b7.js @@ -0,0 +1,446 @@ +import { Cell } from "./cell.ts"; +import { Row } from "./row.ts"; +import { consumeWords, longest, strLength } from "./utils.ts"; +/** Table layout renderer. */ export class TableLayout { + table; + options; + /** + * Table layout constructor. + * @param table Table instance. + * @param options Render options. + */ constructor(table, options){ + this.table = table; + this.options = options; + } + /** Generate table string. */ toString() { + const opts = this.createLayout(); + return opts.rows.length ? this.renderRows(opts) : ""; + } + /** + * Generates table layout including row and col span, converts all none + * Cell/Row values to Cells and Rows and returns the layout rendering + * settings. + */ createLayout() { + Object.keys(this.options.chars).forEach((key)=>{ + if (typeof this.options.chars[key] !== "string") { + this.options.chars[key] = ""; + } + }); + const hasBodyBorder = this.table.getBorder() || this.table.hasBodyBorder(); + const hasHeaderBorder = this.table.hasHeaderBorder(); + const hasBorder = hasHeaderBorder || hasBodyBorder; + const rows = this.#getRows(); + const columns = Math.max(...rows.map((row)=>row.length)); + for (const row of rows){ + const length = row.length; + if (length < columns) { + const diff = columns - length; + for(let i = 0; i < diff; i++){ + row.push(this.createCell(null, row)); + } + } + } + const padding = []; + const width = []; + for(let colIndex = 0; colIndex < columns; colIndex++){ + const minColWidth = Array.isArray(this.options.minColWidth) ? this.options.minColWidth[colIndex] : this.options.minColWidth; + const maxColWidth = Array.isArray(this.options.maxColWidth) ? this.options.maxColWidth[colIndex] : this.options.maxColWidth; + const colWidth = longest(colIndex, rows, maxColWidth); + width[colIndex] = Math.min(maxColWidth, Math.max(minColWidth, colWidth)); + padding[colIndex] = Array.isArray(this.options.padding) ? this.options.padding[colIndex] : this.options.padding; + } + return { + padding, + width, + rows, + columns, + hasBorder, + hasBodyBorder, + hasHeaderBorder + }; + } + #getRows() { + const header = this.table.getHeader(); + const rows = header ? [ + header, + ...this.table + ] : this.table.slice(); + const hasSpan = rows.some((row)=>row.some((cell)=>cell instanceof Cell && (cell.getColSpan() > 1 || cell.getRowSpan() > 1))); + if (hasSpan) { + return this.spanRows(rows); + } + return rows.map((row)=>{ + const newRow = this.createRow(row); + for(let i = 0; i < row.length; i++){ + newRow[i] = this.createCell(row[i], newRow); + } + return newRow; + }); + } + /** + * Fills rows and cols by specified row/col span with a reference of the + * original cell. + */ spanRows(rows) { + const rowSpan = []; + let colSpan = 1; + let rowIndex = -1; + while(true){ + rowIndex++; + if (rowIndex === rows.length && rowSpan.every((span)=>span === 1)) { + break; + } + const row = rows[rowIndex] = this.createRow(rows[rowIndex] || []); + let colIndex = -1; + while(true){ + colIndex++; + if (colIndex === row.length && colIndex === rowSpan.length && colSpan === 1) { + break; + } + if (colSpan > 1) { + colSpan--; + rowSpan[colIndex] = rowSpan[colIndex - 1]; + row.splice(colIndex, this.getDeleteCount(rows, rowIndex, colIndex), row[colIndex - 1]); + continue; + } + if (rowSpan[colIndex] > 1) { + rowSpan[colIndex]--; + rows[rowIndex].splice(colIndex, this.getDeleteCount(rows, rowIndex, colIndex), rows[rowIndex - 1][colIndex]); + continue; + } + const cell = row[colIndex] = this.createCell(row[colIndex] || null, row); + colSpan = cell.getColSpan(); + rowSpan[colIndex] = cell.getRowSpan(); + } + } + return rows; + } + getDeleteCount(rows, rowIndex, colIndex) { + return colIndex <= rows[rowIndex].length - 1 && typeof rows[rowIndex][colIndex] === "undefined" ? 1 : 0; + } + /** + * Create a new row from existing row or cell array. + * @param row Original row. + */ createRow(row) { + return Row.from(row).border(this.table.getBorder(), false).align(this.table.getAlign(), false); + } + /** + * Create a new cell from existing cell or cell value. + * @param cell Original cell. + * @param row Parent row. + */ createCell(cell, row) { + return Cell.from(cell ?? "").border(row.getBorder(), false).align(row.getAlign(), false); + } + /** + * Render table layout. + * @param opts Render options. + */ renderRows(opts) { + let result = ""; + const rowSpan = new Array(opts.columns).fill(1); + for(let rowIndex = 0; rowIndex < opts.rows.length; rowIndex++){ + result += this.renderRow(rowSpan, rowIndex, opts); + } + return result.slice(0, -1); + } + /** + * Render row. + * @param rowSpan Current row span. + * @param rowIndex Current row index. + * @param opts Render options. + * @param isMultiline Is multiline row. + */ renderRow(rowSpan, rowIndex, opts, isMultiline) { + const row = opts.rows[rowIndex]; + const prevRow = opts.rows[rowIndex - 1]; + const nextRow = opts.rows[rowIndex + 1]; + let result = ""; + let colSpan = 1; + // border top row + if (!isMultiline && rowIndex === 0 && row.hasBorder()) { + result += this.renderBorderRow(undefined, row, rowSpan, opts); + } + let isMultilineRow = false; + result += " ".repeat(this.options.indent || 0); + for(let colIndex = 0; colIndex < opts.columns; colIndex++){ + if (colSpan > 1) { + colSpan--; + rowSpan[colIndex] = rowSpan[colIndex - 1]; + continue; + } + result += this.renderCell(colIndex, row, opts); + if (rowSpan[colIndex] > 1) { + if (!isMultiline) { + rowSpan[colIndex]--; + } + } else if (!prevRow || prevRow[colIndex] !== row[colIndex]) { + rowSpan[colIndex] = row[colIndex].getRowSpan(); + } + colSpan = row[colIndex].getColSpan(); + if (rowSpan[colIndex] === 1 && row[colIndex].length) { + isMultilineRow = true; + } + } + if (opts.columns > 0) { + if (row[opts.columns - 1].getBorder()) { + result += this.options.chars.right; + } else if (opts.hasBorder) { + result += " "; + } + } + result += "\n"; + if (isMultilineRow) { + return result + this.renderRow(rowSpan, rowIndex, opts, isMultilineRow); + } + // border mid row + if (rowIndex === 0 && opts.hasHeaderBorder || rowIndex < opts.rows.length - 1 && opts.hasBodyBorder) { + result += this.renderBorderRow(row, nextRow, rowSpan, opts); + } + // border bottom row + if (rowIndex === opts.rows.length - 1 && row.hasBorder()) { + result += this.renderBorderRow(row, undefined, rowSpan, opts); + } + return result; + } + /** + * Render cell. + * @param colIndex Current col index. + * @param row Current row. + * @param opts Render options. + * @param noBorder Disable border. + */ renderCell(colIndex, row, opts, noBorder) { + let result = ""; + const prevCell = row[colIndex - 1]; + const cell = row[colIndex]; + if (!noBorder) { + if (colIndex === 0) { + if (cell.getBorder()) { + result += this.options.chars.left; + } else if (opts.hasBorder) { + result += " "; + } + } else { + if (cell.getBorder() || prevCell?.getBorder()) { + result += this.options.chars.middle; + } else if (opts.hasBorder) { + result += " "; + } + } + } + let maxLength = opts.width[colIndex]; + const colSpan = cell.getColSpan(); + if (colSpan > 1) { + for(let o = 1; o < colSpan; o++){ + // add padding and with of next cell + maxLength += opts.width[colIndex + o] + opts.padding[colIndex + o]; + if (opts.hasBorder) { + // add padding again and border with + maxLength += opts.padding[colIndex + o] + 1; + } + } + } + const { current, next } = this.renderCellValue(cell, maxLength); + row[colIndex].setValue(next); + if (opts.hasBorder) { + result += " ".repeat(opts.padding[colIndex]); + } + result += current; + if (opts.hasBorder || colIndex < opts.columns - 1) { + result += " ".repeat(opts.padding[colIndex]); + } + return result; + } + /** + * Render specified length of cell. Returns the rendered value and a new cell + * with the rest value. + * @param cell Cell to render. + * @param maxLength Max length of content to render. + */ renderCellValue(cell, maxLength) { + const length = Math.min(maxLength, strLength(cell.toString())); + let words = consumeWords(length, cell.toString()); + // break word if word is longer than max length + const breakWord = strLength(words) > length; + if (breakWord) { + words = words.slice(0, length); + } + // get next content and remove leading space if breakWord is not true + const next = cell.toString().slice(words.length + (breakWord ? 0 : 1)); + const fillLength = maxLength - strLength(words); + // Align content + const align = cell.getAlign(); + let current; + if (fillLength === 0) { + current = words; + } else if (align === "left") { + current = words + " ".repeat(fillLength); + } else if (align === "center") { + current = " ".repeat(Math.floor(fillLength / 2)) + words + " ".repeat(Math.ceil(fillLength / 2)); + } else if (align === "right") { + current = " ".repeat(fillLength) + words; + } else { + throw new Error("Unknown direction: " + align); + } + return { + current, + next: cell.clone(next) + }; + } + /** + * Render border row. + * @param prevRow Previous row. + * @param nextRow Next row. + * @param rowSpan Current row span. + * @param opts Render options. + */ renderBorderRow(prevRow, nextRow, rowSpan, opts) { + let result = ""; + let colSpan = 1; + for(let colIndex = 0; colIndex < opts.columns; colIndex++){ + if (rowSpan[colIndex] > 1) { + if (!nextRow) { + throw new Error("invalid layout"); + } + if (colSpan > 1) { + colSpan--; + continue; + } + } + result += this.renderBorderCell(colIndex, prevRow, nextRow, rowSpan, opts); + colSpan = nextRow?.[colIndex].getColSpan() ?? 1; + } + return result.length ? " ".repeat(this.options.indent) + result + "\n" : ""; + } + /** + * Render border cell. + * @param colIndex Current index. + * @param prevRow Previous row. + * @param nextRow Next row. + * @param rowSpan Current row span. + * @param opts Render options. + */ renderBorderCell(colIndex, prevRow, nextRow, rowSpan, opts) { + // a1 | b1 + // ------- + // a2 | b2 + const a1 = prevRow?.[colIndex - 1]; + const a2 = nextRow?.[colIndex - 1]; + const b1 = prevRow?.[colIndex]; + const b2 = nextRow?.[colIndex]; + const a1Border = !!a1?.getBorder(); + const a2Border = !!a2?.getBorder(); + const b1Border = !!b1?.getBorder(); + const b2Border = !!b2?.getBorder(); + const hasColSpan = (cell)=>(cell?.getColSpan() ?? 1) > 1; + const hasRowSpan = (cell)=>(cell?.getRowSpan() ?? 1) > 1; + let result = ""; + if (colIndex === 0) { + if (rowSpan[colIndex] > 1) { + if (b1Border) { + result += this.options.chars.left; + } else { + result += " "; + } + } else if (b1Border && b2Border) { + result += this.options.chars.leftMid; + } else if (b1Border) { + result += this.options.chars.bottomLeft; + } else if (b2Border) { + result += this.options.chars.topLeft; + } else { + result += " "; + } + } else if (colIndex < opts.columns) { + if (a1Border && b2Border || b1Border && a2Border) { + const a1ColSpan = hasColSpan(a1); + const a2ColSpan = hasColSpan(a2); + const b1ColSpan = hasColSpan(b1); + const b2ColSpan = hasColSpan(b2); + const a1RowSpan = hasRowSpan(a1); + const a2RowSpan = hasRowSpan(a2); + const b1RowSpan = hasRowSpan(b1); + const b2RowSpan = hasRowSpan(b2); + const hasAllBorder = a1Border && b2Border && b1Border && a2Border; + const hasAllRowSpan = a1RowSpan && b1RowSpan && a2RowSpan && b2RowSpan; + const hasAllColSpan = a1ColSpan && b1ColSpan && a2ColSpan && b2ColSpan; + if (hasAllRowSpan && hasAllBorder) { + result += this.options.chars.middle; + } else if (hasAllColSpan && hasAllBorder && a1 === b1 && a2 === b2) { + result += this.options.chars.mid; + } else if (a1ColSpan && b1ColSpan && a1 === b1) { + result += this.options.chars.topMid; + } else if (a2ColSpan && b2ColSpan && a2 === b2) { + result += this.options.chars.bottomMid; + } else if (a1RowSpan && a2RowSpan && a1 === a2) { + result += this.options.chars.leftMid; + } else if (b1RowSpan && b2RowSpan && b1 === b2) { + result += this.options.chars.rightMid; + } else { + result += this.options.chars.midMid; + } + } else if (a1Border && b1Border) { + if (hasColSpan(a1) && hasColSpan(b1) && a1 === b1) { + result += this.options.chars.bottom; + } else { + result += this.options.chars.bottomMid; + } + } else if (b1Border && b2Border) { + if (rowSpan[colIndex] > 1) { + result += this.options.chars.left; + } else { + result += this.options.chars.leftMid; + } + } else if (b2Border && a2Border) { + if (hasColSpan(a2) && hasColSpan(b2) && a2 === b2) { + result += this.options.chars.top; + } else { + result += this.options.chars.topMid; + } + } else if (a1Border && a2Border) { + if (hasRowSpan(a1) && a1 === a2) { + result += this.options.chars.right; + } else { + result += this.options.chars.rightMid; + } + } else if (a1Border) { + result += this.options.chars.bottomRight; + } else if (b1Border) { + result += this.options.chars.bottomLeft; + } else if (a2Border) { + result += this.options.chars.topRight; + } else if (b2Border) { + result += this.options.chars.topLeft; + } else { + result += " "; + } + } + const length = opts.padding[colIndex] + opts.width[colIndex] + opts.padding[colIndex]; + if (rowSpan[colIndex] > 1 && nextRow) { + result += this.renderCell(colIndex, nextRow, opts, true); + if (nextRow[colIndex] === nextRow[nextRow.length - 1]) { + if (b1Border) { + result += this.options.chars.right; + } else { + result += " "; + } + return result; + } + } else if (b1Border && b2Border) { + result += this.options.chars.mid.repeat(length); + } else if (b1Border) { + result += this.options.chars.bottom.repeat(length); + } else if (b2Border) { + result += this.options.chars.top.repeat(length); + } else { + result += " ".repeat(length); + } + if (colIndex === opts.columns - 1) { + if (b1Border && b2Border) { + result += this.options.chars.rightMid; + } else if (b1Border) { + result += this.options.chars.bottomRight; + } else if (b2Border) { + result += this.options.chars.topRight; + } else { + result += " "; + } + } + return result; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvdGFibGUvbGF5b3V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENlbGwsIERpcmVjdGlvbiwgSUNlbGwgfSBmcm9tIFwiLi9jZWxsLnRzXCI7XG5pbXBvcnQgeyBJUm93LCBSb3cgfSBmcm9tIFwiLi9yb3cudHNcIjtcbmltcG9ydCB0eXBlIHsgSUJvcmRlck9wdGlvbnMsIElUYWJsZVNldHRpbmdzLCBUYWJsZSB9IGZyb20gXCIuL3RhYmxlLnRzXCI7XG5pbXBvcnQgeyBjb25zdW1lV29yZHMsIGxvbmdlc3QsIHN0ckxlbmd0aCB9IGZyb20gXCIuL3V0aWxzLnRzXCI7XG5cbi8qKiBMYXlvdXQgcmVuZGVyIHNldHRpbmdzLiAqL1xuaW50ZXJmYWNlIElSZW5kZXJTZXR0aW5ncyB7XG4gIHBhZGRpbmc6IG51bWJlcltdO1xuICB3aWR0aDogbnVtYmVyW107XG4gIGNvbHVtbnM6IG51bWJlcjtcbiAgaGFzQm9yZGVyOiBib29sZWFuO1xuICBoYXNIZWFkZXJCb3JkZXI6IGJvb2xlYW47XG4gIGhhc0JvZHlCb3JkZXI6IGJvb2xlYW47XG4gIHJvd3M6IFJvdzxDZWxsPltdO1xufVxuXG4vKiogVGFibGUgbGF5b3V0IHJlbmRlcmVyLiAqL1xuZXhwb3J0IGNsYXNzIFRhYmxlTGF5b3V0IHtcbiAgLyoqXG4gICAqIFRhYmxlIGxheW91dCBjb25zdHJ1Y3Rvci5cbiAgICogQHBhcmFtIHRhYmxlICAgVGFibGUgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSBvcHRpb25zIFJlbmRlciBvcHRpb25zLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGFibGU6IFRhYmxlLFxuICAgIHByaXZhdGUgb3B0aW9uczogSVRhYmxlU2V0dGluZ3MsXG4gICkge31cblxuICAvKiogR2VuZXJhdGUgdGFibGUgc3RyaW5nLiAqL1xuICBwdWJsaWMgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICBjb25zdCBvcHRzOiBJUmVuZGVyU2V0dGluZ3MgPSB0aGlzLmNyZWF0ZUxheW91dCgpO1xuICAgIHJldHVybiBvcHRzLnJvd3MubGVuZ3RoID8gdGhpcy5yZW5kZXJSb3dzKG9wdHMpIDogXCJcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGFibGUgbGF5b3V0IGluY2x1ZGluZyByb3cgYW5kIGNvbCBzcGFuLCBjb252ZXJ0cyBhbGwgbm9uZVxuICAgKiBDZWxsL1JvdyB2YWx1ZXMgdG8gQ2VsbHMgYW5kIFJvd3MgYW5kIHJldHVybnMgdGhlIGxheW91dCByZW5kZXJpbmdcbiAgICogc2V0dGluZ3MuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlTGF5b3V0KCk6IElSZW5kZXJTZXR0aW5ncyB7XG4gICAgT2JqZWN0LmtleXModGhpcy5vcHRpb25zLmNoYXJzKS5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMuY2hhcnNba2V5IGFzIGtleW9mIElCb3JkZXJPcHRpb25zXSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICB0aGlzLm9wdGlvbnMuY2hhcnNba2V5IGFzIGtleW9mIElCb3JkZXJPcHRpb25zXSA9IFwiXCI7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBoYXNCb2R5Qm9yZGVyOiBib29sZWFuID0gdGhpcy50YWJsZS5nZXRCb3JkZXIoKSB8fFxuICAgICAgdGhpcy50YWJsZS5oYXNCb2R5Qm9yZGVyKCk7XG4gICAgY29uc3QgaGFzSGVhZGVyQm9yZGVyOiBib29sZWFuID0gdGhpcy50YWJsZS5oYXNIZWFkZXJCb3JkZXIoKTtcbiAgICBjb25zdCBoYXNCb3JkZXI6IGJvb2xlYW4gPSBoYXNIZWFkZXJCb3JkZXIgfHwgaGFzQm9keUJvcmRlcjtcblxuICAgIGNvbnN0IHJvd3MgPSB0aGlzLiNnZXRSb3dzKCk7XG5cbiAgICBjb25zdCBjb2x1bW5zOiBudW1iZXIgPSBNYXRoLm1heCguLi5yb3dzLm1hcCgocm93KSA9PiByb3cubGVuZ3RoKSk7XG4gICAgZm9yIChjb25zdCByb3cgb2Ygcm93cykge1xuICAgICAgY29uc3QgbGVuZ3RoOiBudW1iZXIgPSByb3cubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCA8IGNvbHVtbnMpIHtcbiAgICAgICAgY29uc3QgZGlmZiA9IGNvbHVtbnMgLSBsZW5ndGg7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZjsgaSsrKSB7XG4gICAgICAgICAgcm93LnB1c2godGhpcy5jcmVhdGVDZWxsKG51bGwsIHJvdykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcGFkZGluZzogbnVtYmVyW10gPSBbXTtcbiAgICBjb25zdCB3aWR0aDogbnVtYmVyW10gPSBbXTtcbiAgICBmb3IgKGxldCBjb2xJbmRleCA9IDA7IGNvbEluZGV4IDwgY29sdW1uczsgY29sSW5kZXgrKykge1xuICAgICAgY29uc3QgbWluQ29sV2lkdGg6IG51bWJlciA9IEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb25zLm1pbkNvbFdpZHRoKVxuICAgICAgICA/IHRoaXMub3B0aW9ucy5taW5Db2xXaWR0aFtjb2xJbmRleF1cbiAgICAgICAgOiB0aGlzLm9wdGlvbnMubWluQ29sV2lkdGg7XG4gICAgICBjb25zdCBtYXhDb2xXaWR0aDogbnVtYmVyID0gQXJyYXkuaXNBcnJheSh0aGlzLm9wdGlvbnMubWF4Q29sV2lkdGgpXG4gICAgICAgID8gdGhpcy5vcHRpb25zLm1heENvbFdpZHRoW2NvbEluZGV4XVxuICAgICAgICA6IHRoaXMub3B0aW9ucy5tYXhDb2xXaWR0aDtcbiAgICAgIGNvbnN0IGNvbFdpZHRoOiBudW1iZXIgPSBsb25nZXN0KGNvbEluZGV4LCByb3dzLCBtYXhDb2xXaWR0aCk7XG4gICAgICB3aWR0aFtjb2xJbmRleF0gPSBNYXRoLm1pbihtYXhDb2xXaWR0aCwgTWF0aC5tYXgobWluQ29sV2lkdGgsIGNvbFdpZHRoKSk7XG4gICAgICBwYWRkaW5nW2NvbEluZGV4XSA9IEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb25zLnBhZGRpbmcpXG4gICAgICAgID8gdGhpcy5vcHRpb25zLnBhZGRpbmdbY29sSW5kZXhdXG4gICAgICAgIDogdGhpcy5vcHRpb25zLnBhZGRpbmc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBhZGRpbmcsXG4gICAgICB3aWR0aCxcbiAgICAgIHJvd3MsXG4gICAgICBjb2x1bW5zLFxuICAgICAgaGFzQm9yZGVyLFxuICAgICAgaGFzQm9keUJvcmRlcixcbiAgICAgIGhhc0hlYWRlckJvcmRlcixcbiAgICB9O1xuICB9XG5cbiAgI2dldFJvd3MoKTogQXJyYXk8Um93PENlbGw+PiB7XG4gICAgY29uc3QgaGVhZGVyOiBSb3cgfCB1bmRlZmluZWQgPSB0aGlzLnRhYmxlLmdldEhlYWRlcigpO1xuICAgIGNvbnN0IHJvd3MgPSBoZWFkZXIgPyBbaGVhZGVyLCAuLi50aGlzLnRhYmxlXSA6IHRoaXMudGFibGUuc2xpY2UoKTtcbiAgICBjb25zdCBoYXNTcGFuID0gcm93cy5zb21lKChyb3cpID0+XG4gICAgICByb3cuc29tZSgoY2VsbCkgPT5cbiAgICAgICAgY2VsbCBpbnN0YW5jZW9mIENlbGwgJiYgKGNlbGwuZ2V0Q29sU3BhbigpID4gMSB8fCBjZWxsLmdldFJvd1NwYW4oKSA+IDEpXG4gICAgICApXG4gICAgKTtcblxuICAgIGlmIChoYXNTcGFuKSB7XG4gICAgICByZXR1cm4gdGhpcy5zcGFuUm93cyhyb3dzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm93cy5tYXAoKHJvdykgPT4ge1xuICAgICAgY29uc3QgbmV3Um93ID0gdGhpcy5jcmVhdGVSb3cocm93KTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG5ld1Jvd1tpXSA9IHRoaXMuY3JlYXRlQ2VsbChyb3dbaV0sIG5ld1Jvdyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3Um93O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbGxzIHJvd3MgYW5kIGNvbHMgYnkgc3BlY2lmaWVkIHJvdy9jb2wgc3BhbiB3aXRoIGEgcmVmZXJlbmNlIG9mIHRoZVxuICAgKiBvcmlnaW5hbCBjZWxsLlxuICAgKi9cbiAgcHJvdGVjdGVkIHNwYW5Sb3dzKHJvd3M6IEFycmF5PElSb3c+KSB7XG4gICAgY29uc3Qgcm93U3BhbjogQXJyYXk8bnVtYmVyPiA9IFtdO1xuICAgIGxldCBjb2xTcGFuID0gMTtcbiAgICBsZXQgcm93SW5kZXggPSAtMTtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICByb3dJbmRleCsrO1xuICAgICAgaWYgKHJvd0luZGV4ID09PSByb3dzLmxlbmd0aCAmJiByb3dTcGFuLmV2ZXJ5KChzcGFuKSA9PiBzcGFuID09PSAxKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJvdyA9IHJvd3Nbcm93SW5kZXhdID0gdGhpcy5jcmVhdGVSb3cocm93c1tyb3dJbmRleF0gfHwgW10pO1xuICAgICAgbGV0IGNvbEluZGV4ID0gLTE7XG5cbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGNvbEluZGV4Kys7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBjb2xJbmRleCA9PT0gcm93Lmxlbmd0aCAmJlxuICAgICAgICAgIGNvbEluZGV4ID09PSByb3dTcGFuLmxlbmd0aCAmJiBjb2xTcGFuID09PSAxXG4gICAgICAgICkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbFNwYW4gPiAxKSB7XG4gICAgICAgICAgY29sU3Bhbi0tO1xuICAgICAgICAgIHJvd1NwYW5bY29sSW5kZXhdID0gcm93U3Bhbltjb2xJbmRleCAtIDFdO1xuICAgICAgICAgIHJvdy5zcGxpY2UoXG4gICAgICAgICAgICBjb2xJbmRleCxcbiAgICAgICAgICAgIHRoaXMuZ2V0RGVsZXRlQ291bnQocm93cywgcm93SW5kZXgsIGNvbEluZGV4KSxcbiAgICAgICAgICAgIHJvd1tjb2xJbmRleCAtIDFdLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyb3dTcGFuW2NvbEluZGV4XSA+IDEpIHtcbiAgICAgICAgICByb3dTcGFuW2NvbEluZGV4XS0tO1xuICAgICAgICAgIHJvd3Nbcm93SW5kZXhdLnNwbGljZShcbiAgICAgICAgICAgIGNvbEluZGV4LFxuICAgICAgICAgICAgdGhpcy5nZXREZWxldGVDb3VudChyb3dzLCByb3dJbmRleCwgY29sSW5kZXgpLFxuICAgICAgICAgICAgcm93c1tyb3dJbmRleCAtIDFdW2NvbEluZGV4XSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjZWxsID0gcm93W2NvbEluZGV4XSA9IHRoaXMuY3JlYXRlQ2VsbChcbiAgICAgICAgICByb3dbY29sSW5kZXhdIHx8IG51bGwsXG4gICAgICAgICAgcm93LFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbFNwYW4gPSBjZWxsLmdldENvbFNwYW4oKTtcbiAgICAgICAgcm93U3Bhbltjb2xJbmRleF0gPSBjZWxsLmdldFJvd1NwYW4oKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcm93cyBhcyBBcnJheTxSb3c8Q2VsbD4+O1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldERlbGV0ZUNvdW50KFxuICAgIHJvd3M6IEFycmF5PEFycmF5PHVua25vd24+PixcbiAgICByb3dJbmRleDogbnVtYmVyLFxuICAgIGNvbEluZGV4OiBudW1iZXIsXG4gICkge1xuICAgIHJldHVybiBjb2xJbmRleCA8PSByb3dzW3Jvd0luZGV4XS5sZW5ndGggLSAxICYmXG4gICAgICAgIHR5cGVvZiByb3dzW3Jvd0luZGV4XVtjb2xJbmRleF0gPT09IFwidW5kZWZpbmVkXCJcbiAgICAgID8gMVxuICAgICAgOiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyByb3cgZnJvbSBleGlzdGluZyByb3cgb3IgY2VsbCBhcnJheS5cbiAgICogQHBhcmFtIHJvdyBPcmlnaW5hbCByb3cuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlUm93KHJvdzogSVJvdyk6IFJvdzxDZWxsPiB7XG4gICAgcmV0dXJuIFJvdy5mcm9tKHJvdylcbiAgICAgIC5ib3JkZXIodGhpcy50YWJsZS5nZXRCb3JkZXIoKSwgZmFsc2UpXG4gICAgICAuYWxpZ24odGhpcy50YWJsZS5nZXRBbGlnbigpLCBmYWxzZSkgYXMgUm93PENlbGw+O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBjZWxsIGZyb20gZXhpc3RpbmcgY2VsbCBvciBjZWxsIHZhbHVlLlxuICAgKiBAcGFyYW0gY2VsbCAgT3JpZ2luYWwgY2VsbC5cbiAgICogQHBhcmFtIHJvdyAgIFBhcmVudCByb3cuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlQ2VsbChjZWxsOiBJQ2VsbCB8IG51bGwgfCB1bmRlZmluZWQsIHJvdzogUm93KTogQ2VsbCB7XG4gICAgcmV0dXJuIENlbGwuZnJvbShjZWxsID8/IFwiXCIpXG4gICAgICAuYm9yZGVyKHJvdy5nZXRCb3JkZXIoKSwgZmFsc2UpXG4gICAgICAuYWxpZ24ocm93LmdldEFsaWduKCksIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgdGFibGUgbGF5b3V0LlxuICAgKiBAcGFyYW0gb3B0cyBSZW5kZXIgb3B0aW9ucy5cbiAgICovXG4gIHByb3RlY3RlZCByZW5kZXJSb3dzKG9wdHM6IElSZW5kZXJTZXR0aW5ncyk6IHN0cmluZyB7XG4gICAgbGV0IHJlc3VsdCA9IFwiXCI7XG4gICAgY29uc3Qgcm93U3BhbjogbnVtYmVyW10gPSBuZXcgQXJyYXkob3B0cy5jb2x1bW5zKS5maWxsKDEpO1xuXG4gICAgZm9yIChsZXQgcm93SW5kZXggPSAwOyByb3dJbmRleCA8IG9wdHMucm93cy5sZW5ndGg7IHJvd0luZGV4KyspIHtcbiAgICAgIHJlc3VsdCArPSB0aGlzLnJlbmRlclJvdyhyb3dTcGFuLCByb3dJbmRleCwgb3B0cyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC5zbGljZSgwLCAtMSk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIHJvdy5cbiAgICogQHBhcmFtIHJvd1NwYW4gICAgIEN1cnJlbnQgcm93IHNwYW4uXG4gICAqIEBwYXJhbSByb3dJbmRleCAgICBDdXJyZW50IHJvdyBpbmRleC5cbiAgICogQHBhcmFtIG9wdHMgICAgICAgIFJlbmRlciBvcHRpb25zLlxuICAgKiBAcGFyYW0gaXNNdWx0aWxpbmUgSXMgbXVsdGlsaW5lIHJvdy5cbiAgICovXG4gIHByb3RlY3RlZCByZW5kZXJSb3coXG4gICAgcm93U3BhbjogbnVtYmVyW10sXG4gICAgcm93SW5kZXg6IG51bWJlcixcbiAgICBvcHRzOiBJUmVuZGVyU2V0dGluZ3MsXG4gICAgaXNNdWx0aWxpbmU/OiBib29sZWFuLFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IHJvdzogUm93PENlbGw+ID0gb3B0cy5yb3dzW3Jvd0luZGV4XTtcbiAgICBjb25zdCBwcmV2Um93OiBSb3c8Q2VsbD4gfCB1bmRlZmluZWQgPSBvcHRzLnJvd3Nbcm93SW5kZXggLSAxXTtcbiAgICBjb25zdCBuZXh0Um93OiBSb3c8Q2VsbD4gfCB1bmRlZmluZWQgPSBvcHRzLnJvd3Nbcm93SW5kZXggKyAxXTtcbiAgICBsZXQgcmVzdWx0ID0gXCJcIjtcblxuICAgIGxldCBjb2xTcGFuID0gMTtcblxuICAgIC8vIGJvcmRlciB0b3Agcm93XG4gICAgaWYgKCFpc011bHRpbGluZSAmJiByb3dJbmRleCA9PT0gMCAmJiByb3cuaGFzQm9yZGVyKCkpIHtcbiAgICAgIHJlc3VsdCArPSB0aGlzLnJlbmRlckJvcmRlclJvdyh1bmRlZmluZWQsIHJvdywgcm93U3Bhbiwgb3B0cyk7XG4gICAgfVxuXG4gICAgbGV0IGlzTXVsdGlsaW5lUm93ID0gZmFsc2U7XG5cbiAgICByZXN1bHQgKz0gXCIgXCIucmVwZWF0KHRoaXMub3B0aW9ucy5pbmRlbnQgfHwgMCk7XG5cbiAgICBmb3IgKGxldCBjb2xJbmRleCA9IDA7IGNvbEluZGV4IDwgb3B0cy5jb2x1bW5zOyBjb2xJbmRleCsrKSB7XG4gICAgICBpZiAoY29sU3BhbiA+IDEpIHtcbiAgICAgICAgY29sU3Bhbi0tO1xuICAgICAgICByb3dTcGFuW2NvbEluZGV4XSA9IHJvd1NwYW5bY29sSW5kZXggLSAxXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdCArPSB0aGlzLnJlbmRlckNlbGwoY29sSW5kZXgsIHJvdywgb3B0cyk7XG5cbiAgICAgIGlmIChyb3dTcGFuW2NvbEluZGV4XSA+IDEpIHtcbiAgICAgICAgaWYgKCFpc011bHRpbGluZSkge1xuICAgICAgICAgIHJvd1NwYW5bY29sSW5kZXhdLS07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIXByZXZSb3cgfHwgcHJldlJvd1tjb2xJbmRleF0gIT09IHJvd1tjb2xJbmRleF0pIHtcbiAgICAgICAgcm93U3Bhbltjb2xJbmRleF0gPSByb3dbY29sSW5kZXhdLmdldFJvd1NwYW4oKTtcbiAgICAgIH1cblxuICAgICAgY29sU3BhbiA9IHJvd1tjb2xJbmRleF0uZ2V0Q29sU3BhbigpO1xuXG4gICAgICBpZiAocm93U3Bhbltjb2xJbmRleF0gPT09IDEgJiYgcm93W2NvbEluZGV4XS5sZW5ndGgpIHtcbiAgICAgICAgaXNNdWx0aWxpbmVSb3cgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcHRzLmNvbHVtbnMgPiAwKSB7XG4gICAgICBpZiAocm93W29wdHMuY29sdW1ucyAtIDFdLmdldEJvcmRlcigpKSB7XG4gICAgICAgIHJlc3VsdCArPSB0aGlzLm9wdGlvbnMuY2hhcnMucmlnaHQ7XG4gICAgICB9IGVsc2UgaWYgKG9wdHMuaGFzQm9yZGVyKSB7XG4gICAgICAgIHJlc3VsdCArPSBcIiBcIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXN1bHQgKz0gXCJcXG5cIjtcblxuICAgIGlmIChpc011bHRpbGluZVJvdykgeyAvLyBza2lwIGJvcmRlclxuICAgICAgcmV0dXJuIHJlc3VsdCArIHRoaXMucmVuZGVyUm93KHJvd1NwYW4sIHJvd0luZGV4LCBvcHRzLCBpc011bHRpbGluZVJvdyk7XG4gICAgfVxuXG4gICAgLy8gYm9yZGVyIG1pZCByb3dcbiAgICBpZiAoXG4gICAgICAocm93SW5kZXggPT09IDAgJiYgb3B0cy5oYXNIZWFkZXJCb3JkZXIpIHx8XG4gICAgICAocm93SW5kZXggPCBvcHRzLnJvd3MubGVuZ3RoIC0gMSAmJiBvcHRzLmhhc0JvZHlCb3JkZXIpXG4gICAgKSB7XG4gICAgICByZXN1bHQgKz0gdGhpcy5yZW5kZXJCb3JkZXJSb3cocm93LCBuZXh0Um93LCByb3dTcGFuLCBvcHRzKTtcbiAgICB9XG5cbiAgICAvLyBib3JkZXIgYm90dG9tIHJvd1xuICAgIGlmIChyb3dJbmRleCA9PT0gb3B0cy5yb3dzLmxlbmd0aCAtIDEgJiYgcm93Lmhhc0JvcmRlcigpKSB7XG4gICAgICByZXN1bHQgKz0gdGhpcy5yZW5kZXJCb3JkZXJSb3cocm93LCB1bmRlZmluZWQsIHJvd1NwYW4sIG9wdHMpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIGNlbGwuXG4gICAqIEBwYXJhbSBjb2xJbmRleCAgQ3VycmVudCBjb2wgaW5kZXguXG4gICAqIEBwYXJhbSByb3cgICAgICAgQ3VycmVudCByb3cuXG4gICAqIEBwYXJhbSBvcHRzICAgICAgUmVuZGVyIG9wdGlvbnMuXG4gICAqIEBwYXJhbSBub0JvcmRlciAgRGlzYWJsZSBib3JkZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVuZGVyQ2VsbChcbiAgICBjb2xJbmRleDogbnVtYmVyLFxuICAgIHJvdzogUm93PENlbGw+LFxuICAgIG9wdHM6IElSZW5kZXJTZXR0aW5ncyxcbiAgICBub0JvcmRlcj86IGJvb2xlYW4sXG4gICk6IHN0cmluZyB7XG4gICAgbGV0IHJlc3VsdCA9IFwiXCI7XG4gICAgY29uc3QgcHJldkNlbGw6IENlbGwgfCB1bmRlZmluZWQgPSByb3dbY29sSW5kZXggLSAxXTtcblxuICAgIGNvbnN0IGNlbGw6IENlbGwgPSByb3dbY29sSW5kZXhdO1xuXG4gICAgaWYgKCFub0JvcmRlcikge1xuICAgICAgaWYgKGNvbEluZGV4ID09PSAwKSB7XG4gICAgICAgIGlmIChjZWxsLmdldEJvcmRlcigpKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IHRoaXMub3B0aW9ucy5jaGFycy5sZWZ0O1xuICAgICAgICB9IGVsc2UgaWYgKG9wdHMuaGFzQm9yZGVyKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IFwiIFwiO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoY2VsbC5nZXRCb3JkZXIoKSB8fCBwcmV2Q2VsbD8uZ2V0Qm9yZGVyKCkpIHtcbiAgICAgICAgICByZXN1bHQgKz0gdGhpcy5vcHRpb25zLmNoYXJzLm1pZGRsZTtcbiAgICAgICAgfSBlbHNlIGlmIChvcHRzLmhhc0JvcmRlcikge1xuICAgICAgICAgIHJlc3VsdCArPSBcIiBcIjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBtYXhMZW5ndGg6IG51bWJlciA9IG9wdHMud2lkdGhbY29sSW5kZXhdO1xuXG4gICAgY29uc3QgY29sU3BhbjogbnVtYmVyID0gY2VsbC5nZXRDb2xTcGFuKCk7XG4gICAgaWYgKGNvbFNwYW4gPiAxKSB7XG4gICAgICBmb3IgKGxldCBvID0gMTsgbyA8IGNvbFNwYW47IG8rKykge1xuICAgICAgICAvLyBhZGQgcGFkZGluZyBhbmQgd2l0aCBvZiBuZXh0IGNlbGxcbiAgICAgICAgbWF4TGVuZ3RoICs9IG9wdHMud2lkdGhbY29sSW5kZXggKyBvXSArIG9wdHMucGFkZGluZ1tjb2xJbmRleCArIG9dO1xuICAgICAgICBpZiAob3B0cy5oYXNCb3JkZXIpIHtcbiAgICAgICAgICAvLyBhZGQgcGFkZGluZyBhZ2FpbiBhbmQgYm9yZGVyIHdpdGhcbiAgICAgICAgICBtYXhMZW5ndGggKz0gb3B0cy5wYWRkaW5nW2NvbEluZGV4ICsgb10gKyAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgeyBjdXJyZW50LCBuZXh0IH0gPSB0aGlzLnJlbmRlckNlbGxWYWx1ZShjZWxsLCBtYXhMZW5ndGgpO1xuXG4gICAgcm93W2NvbEluZGV4XS5zZXRWYWx1ZShuZXh0KTtcblxuICAgIGlmIChvcHRzLmhhc0JvcmRlcikge1xuICAgICAgcmVzdWx0ICs9IFwiIFwiLnJlcGVhdChvcHRzLnBhZGRpbmdbY29sSW5kZXhdKTtcbiAgICB9XG5cbiAgICByZXN1bHQgKz0gY3VycmVudDtcblxuICAgIGlmIChvcHRzLmhhc0JvcmRlciB8fCBjb2xJbmRleCA8IG9wdHMuY29sdW1ucyAtIDEpIHtcbiAgICAgIHJlc3VsdCArPSBcIiBcIi5yZXBlYXQob3B0cy5wYWRkaW5nW2NvbEluZGV4XSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgc3BlY2lmaWVkIGxlbmd0aCBvZiBjZWxsLiBSZXR1cm5zIHRoZSByZW5kZXJlZCB2YWx1ZSBhbmQgYSBuZXcgY2VsbFxuICAgKiB3aXRoIHRoZSByZXN0IHZhbHVlLlxuICAgKiBAcGFyYW0gY2VsbCAgICAgIENlbGwgdG8gcmVuZGVyLlxuICAgKiBAcGFyYW0gbWF4TGVuZ3RoIE1heCBsZW5ndGggb2YgY29udGVudCB0byByZW5kZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVuZGVyQ2VsbFZhbHVlKFxuICAgIGNlbGw6IENlbGwsXG4gICAgbWF4TGVuZ3RoOiBudW1iZXIsXG4gICk6IHsgY3VycmVudDogc3RyaW5nOyBuZXh0OiBDZWxsIH0ge1xuICAgIGNvbnN0IGxlbmd0aDogbnVtYmVyID0gTWF0aC5taW4oXG4gICAgICBtYXhMZW5ndGgsXG4gICAgICBzdHJMZW5ndGgoY2VsbC50b1N0cmluZygpKSxcbiAgICApO1xuICAgIGxldCB3b3Jkczogc3RyaW5nID0gY29uc3VtZVdvcmRzKGxlbmd0aCwgY2VsbC50b1N0cmluZygpKTtcblxuICAgIC8vIGJyZWFrIHdvcmQgaWYgd29yZCBpcyBsb25nZXIgdGhhbiBtYXggbGVuZ3RoXG4gICAgY29uc3QgYnJlYWtXb3JkID0gc3RyTGVuZ3RoKHdvcmRzKSA+IGxlbmd0aDtcbiAgICBpZiAoYnJlYWtXb3JkKSB7XG4gICAgICB3b3JkcyA9IHdvcmRzLnNsaWNlKDAsIGxlbmd0aCk7XG4gICAgfVxuXG4gICAgLy8gZ2V0IG5leHQgY29udGVudCBhbmQgcmVtb3ZlIGxlYWRpbmcgc3BhY2UgaWYgYnJlYWtXb3JkIGlzIG5vdCB0cnVlXG4gICAgY29uc3QgbmV4dCA9IGNlbGwudG9TdHJpbmcoKS5zbGljZSh3b3Jkcy5sZW5ndGggKyAoYnJlYWtXb3JkID8gMCA6IDEpKTtcbiAgICBjb25zdCBmaWxsTGVuZ3RoID0gbWF4TGVuZ3RoIC0gc3RyTGVuZ3RoKHdvcmRzKTtcblxuICAgIC8vIEFsaWduIGNvbnRlbnRcbiAgICBjb25zdCBhbGlnbjogRGlyZWN0aW9uID0gY2VsbC5nZXRBbGlnbigpO1xuICAgIGxldCBjdXJyZW50OiBzdHJpbmc7XG4gICAgaWYgKGZpbGxMZW5ndGggPT09IDApIHtcbiAgICAgIGN1cnJlbnQgPSB3b3JkcztcbiAgICB9IGVsc2UgaWYgKGFsaWduID09PSBcImxlZnRcIikge1xuICAgICAgY3VycmVudCA9IHdvcmRzICsgXCIgXCIucmVwZWF0KGZpbGxMZW5ndGgpO1xuICAgIH0gZWxzZSBpZiAoYWxpZ24gPT09IFwiY2VudGVyXCIpIHtcbiAgICAgIGN1cnJlbnQgPSBcIiBcIi5yZXBlYXQoTWF0aC5mbG9vcihmaWxsTGVuZ3RoIC8gMikpICsgd29yZHMgK1xuICAgICAgICBcIiBcIi5yZXBlYXQoTWF0aC5jZWlsKGZpbGxMZW5ndGggLyAyKSk7XG4gICAgfSBlbHNlIGlmIChhbGlnbiA9PT0gXCJyaWdodFwiKSB7XG4gICAgICBjdXJyZW50ID0gXCIgXCIucmVwZWF0KGZpbGxMZW5ndGgpICsgd29yZHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlVua25vd24gZGlyZWN0aW9uOiBcIiArIGFsaWduKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY3VycmVudCxcbiAgICAgIG5leHQ6IGNlbGwuY2xvbmUobmV4dCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgYm9yZGVyIHJvdy5cbiAgICogQHBhcmFtIHByZXZSb3cgUHJldmlvdXMgcm93LlxuICAgKiBAcGFyYW0gbmV4dFJvdyBOZXh0IHJvdy5cbiAgICogQHBhcmFtIHJvd1NwYW4gQ3VycmVudCByb3cgc3Bhbi5cbiAgICogQHBhcmFtIG9wdHMgICAgUmVuZGVyIG9wdGlvbnMuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVuZGVyQm9yZGVyUm93KFxuICAgIHByZXZSb3c6IFJvdzxDZWxsPiB8IHVuZGVmaW5lZCxcbiAgICBuZXh0Um93OiBSb3c8Q2VsbD4gfCB1bmRlZmluZWQsXG4gICAgcm93U3BhbjogbnVtYmVyW10sXG4gICAgb3B0czogSVJlbmRlclNldHRpbmdzLFxuICApOiBzdHJpbmcge1xuICAgIGxldCByZXN1bHQgPSBcIlwiO1xuXG4gICAgbGV0IGNvbFNwYW4gPSAxO1xuICAgIGZvciAobGV0IGNvbEluZGV4ID0gMDsgY29sSW5kZXggPCBvcHRzLmNvbHVtbnM7IGNvbEluZGV4KyspIHtcbiAgICAgIGlmIChyb3dTcGFuW2NvbEluZGV4XSA+IDEpIHtcbiAgICAgICAgaWYgKCFuZXh0Um93KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBsYXlvdXRcIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbFNwYW4gPiAxKSB7XG4gICAgICAgICAgY29sU3Bhbi0tO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXN1bHQgKz0gdGhpcy5yZW5kZXJCb3JkZXJDZWxsKFxuICAgICAgICBjb2xJbmRleCxcbiAgICAgICAgcHJldlJvdyxcbiAgICAgICAgbmV4dFJvdyxcbiAgICAgICAgcm93U3BhbixcbiAgICAgICAgb3B0cyxcbiAgICAgICk7XG4gICAgICBjb2xTcGFuID0gbmV4dFJvdz8uW2NvbEluZGV4XS5nZXRDb2xTcGFuKCkgPz8gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0Lmxlbmd0aCA/IFwiIFwiLnJlcGVhdCh0aGlzLm9wdGlvbnMuaW5kZW50KSArIHJlc3VsdCArIFwiXFxuXCIgOiBcIlwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciBib3JkZXIgY2VsbC5cbiAgICogQHBhcmFtIGNvbEluZGV4ICBDdXJyZW50IGluZGV4LlxuICAgKiBAcGFyYW0gcHJldlJvdyAgIFByZXZpb3VzIHJvdy5cbiAgICogQHBhcmFtIG5leHRSb3cgICBOZXh0IHJvdy5cbiAgICogQHBhcmFtIHJvd1NwYW4gICBDdXJyZW50IHJvdyBzcGFuLlxuICAgKiBAcGFyYW0gb3B0cyAgICAgIFJlbmRlciBvcHRpb25zLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlbmRlckJvcmRlckNlbGwoXG4gICAgY29sSW5kZXg6IG51bWJlcixcbiAgICBwcmV2Um93OiBSb3c8Q2VsbD4gfCB1bmRlZmluZWQsXG4gICAgbmV4dFJvdzogUm93PENlbGw+IHwgdW5kZWZpbmVkLFxuICAgIHJvd1NwYW46IG51bWJlcltdLFxuICAgIG9wdHM6IElSZW5kZXJTZXR0aW5ncyxcbiAgKTogc3RyaW5nIHtcbiAgICAvLyBhMSB8IGIxXG4gICAgLy8gLS0tLS0tLVxuICAgIC8vIGEyIHwgYjJcblxuICAgIGNvbnN0IGExOiBDZWxsIHwgdW5kZWZpbmVkID0gcHJldlJvdz8uW2NvbEluZGV4IC0gMV07XG4gICAgY29uc3QgYTI6IENlbGwgfCB1bmRlZmluZWQgPSBuZXh0Um93Py5bY29sSW5kZXggLSAxXTtcbiAgICBjb25zdCBiMTogQ2VsbCB8IHVuZGVmaW5lZCA9IHByZXZSb3c/Lltjb2xJbmRleF07XG4gICAgY29uc3QgYjI6IENlbGwgfCB1bmRlZmluZWQgPSBuZXh0Um93Py5bY29sSW5kZXhdO1xuXG4gICAgY29uc3QgYTFCb3JkZXIgPSAhIWExPy5nZXRCb3JkZXIoKTtcbiAgICBjb25zdCBhMkJvcmRlciA9ICEhYTI/LmdldEJvcmRlcigpO1xuICAgIGNvbnN0IGIxQm9yZGVyID0gISFiMT8uZ2V0Qm9yZGVyKCk7XG4gICAgY29uc3QgYjJCb3JkZXIgPSAhIWIyPy5nZXRCb3JkZXIoKTtcblxuICAgIGNvbnN0IGhhc0NvbFNwYW4gPSAoY2VsbDogQ2VsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT5cbiAgICAgIChjZWxsPy5nZXRDb2xTcGFuKCkgPz8gMSkgPiAxO1xuICAgIGNvbnN0IGhhc1Jvd1NwYW4gPSAoY2VsbDogQ2VsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT5cbiAgICAgIChjZWxsPy5nZXRSb3dTcGFuKCkgPz8gMSkgPiAxO1xuXG4gICAgbGV0IHJlc3VsdCA9IFwiXCI7XG5cbiAgICBpZiAoY29sSW5kZXggPT09IDApIHtcbiAgICAgIGlmIChyb3dTcGFuW2NvbEluZGV4XSA+IDEpIHtcbiAgICAgICAgaWYgKGIxQm9yZGVyKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IHRoaXMub3B0aW9ucy5jaGFycy5sZWZ0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCArPSBcIiBcIjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChiMUJvcmRlciAmJiBiMkJvcmRlcikge1xuICAgICAgICByZXN1bHQgKz0gdGhpcy5vcHRpb25zLmNoYXJzLmxlZnRNaWQ7XG4gICAgICB9IGVsc2UgaWYgKGIxQm9yZGVyKSB7XG4gICAgICAgIHJlc3VsdCArPSB0aGlzLm9wdGlvbnMuY2hhcnMuYm90dG9tTGVmdDtcbiAgICAgIH0gZWxzZSBpZiAoYjJCb3JkZXIpIHtcbiAgICAgICAgcmVzdWx0ICs9IHRoaXMub3B0aW9ucy5jaGFycy50b3BMZWZ0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ICs9IFwiIFwiO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY29sSW5kZXggPCBvcHRzLmNvbHVtbnMpIHtcbiAgICAgIGlmICgoYTFCb3JkZXIgJiYgYjJCb3JkZXIpIHx8IChiMUJvcmRlciAmJiBhMkJvcmRlcikpIHtcbiAgICAgICAgY29uc3QgYTFDb2xTcGFuOiBib29sZWFuID0gaGFzQ29sU3BhbihhMSk7XG4gICAgICAgIGNvbnN0IGEyQ29sU3BhbjogYm9vbGVhbiA9IGhhc0NvbFNwYW4oYTIpO1xuICAgICAgICBjb25zdCBiMUNvbFNwYW46IGJvb2xlYW4gPSBoYXNDb2xTcGFuKGIxKTtcbiAgICAgICAgY29uc3QgYjJDb2xTcGFuOiBib29sZWFuID0gaGFzQ29sU3BhbihiMik7XG5cbiAgICAgICAgY29uc3QgYTFSb3dTcGFuOiBib29sZWFuID0gaGFzUm93U3BhbihhMSk7XG4gICAgICAgIGNvbnN0IGEyUm93U3BhbjogYm9vbGVhbiA9IGhhc1Jvd1NwYW4oYTIpO1xuICAgICAgICBjb25zdCBiMVJvd1NwYW46IGJvb2xlYW4gPSBoYXNSb3dTcGFuKGIxKTtcbiAgICAgICAgY29uc3QgYjJSb3dTcGFuOiBib29sZWFuID0gaGFzUm93U3BhbihiMik7XG5cbiAgICAgICAgY29uc3QgaGFzQWxsQm9yZGVyID0gYTFCb3JkZXIgJiYgYjJCb3JkZXIgJiYgYjFCb3JkZXIgJiYgYTJCb3JkZXI7XG4gICAgICAgIGNvbnN0IGhhc0FsbFJvd1NwYW4gPSBhMVJvd1NwYW4gJiYgYjFSb3dTcGFuICYmIGEyUm93U3BhbiAmJiBiMlJvd1NwYW47XG4gICAgICAgIGNvbnN0IGhhc0FsbENvbFNwYW4gPSBhMUNvbFNwYW4gJiYgYjFDb2xTcGFuICYmIGEyQ29sU3BhbiAmJiBiMkNvbFNwYW47XG5cbiAgICAgICAgaWYgKGhhc0FsbFJvd1NwYW4gJiYgaGFzQWxsQm9yZGVyKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IHRoaXMub3B0aW9ucy5jaGFycy5taWRkbGU7XG4gICAgICAgIH0gZWxzZSBpZiAoaGFzQWxsQ29sU3BhbiAmJiBoYXNBbGxCb3JkZXIgJiYgYTEgPT09IGIxICYmIGEyID09PSBiMikge1xuICAgICAgICAgIHJlc3VsdCArPSB0aGlzLm9wdGlvbnMuY2hhcnMubWlkO1xuICAgICAgICB9IGVsc2UgaWYgKGExQ29sU3BhbiAmJiBiMUNvbFNwYW4gJiYgYTEgPT09IGIxKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IHRoaXMub3B0aW9ucy5jaGFycy50b3BNaWQ7XG4gICAgICAgIH0gZWxzZSBpZiAoYTJDb2xTcGFuICYmIGIyQ29sU3BhbiAmJiBhMiA9PT0gYjIpIHtcbiAgICAgICAgICByZXN1bHQgKz0gdGhpcy5vcHRpb25zLmNoYXJzLmJvdHRvbU1pZDtcbiAgICAgICAgfSBlbHNlIGlmIChhMVJvd1NwYW4gJiYgYTJSb3dTcGFuICYmIGExID09PSBhMikge1xuICAgICAgICAgIHJlc3VsdCArPSB0aGlzLm9wdGlvbnMuY2hhcnMubGVmdE1pZDtcbiAgICAgICAgfSBlbHNlIGlmIChiMVJvd1NwYW4gJiYgYjJSb3dTcGFuICYmIGIxID09PSBiMikge1xuICAgICAgICAgIHJlc3VsdCArPSB0aGlzLm9wdGlvbnMuY2hhcnMucmlnaHRNaWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ICs9IHRoaXMub3B0aW9ucy5jaGFycy5taWRNaWQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYTFCb3JkZXIgJiYgYjFCb3JkZXIpIHtcbiAgICAgICAgaWYgKGhhc0NvbFNwYW4oYTEpICYmIGhhc0NvbFNwYW4oYjEpICYmIGExID09PSBiMSkge1xuICAgICAgICAgIHJlc3VsdCArPSB0aGlzLm9wdGlvbnMuY2hhcnMuYm90dG9tO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCArPSB0aGlzLm9wdGlvbnMuY2hhcnMuYm90dG9tTWlkO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGIxQm9yZGVyICYmIGIyQm9yZGVyKSB7XG4gICAgICAgIGlmIChyb3dTcGFuW2NvbEluZGV4XSA+IDEpIHtcbiAgICAgICAgICByZXN1bHQgKz0gdGhpcy5vcHRpb25zLmNoYXJzLmxlZnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ICs9IHRoaXMub3B0aW9ucy5jaGFycy5sZWZ0TWlkO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGIyQm9yZGVyICYmIGEyQm9yZGVyKSB7XG4gICAgICAgIGlmIChoYXNDb2xTcGFuKGEyKSAmJiBoYXNDb2xTcGFuKGIyKSAmJiBhMiA9PT0gYjIpIHtcbiAgICAgICAgICByZXN1bHQgKz0gdGhpcy5vcHRpb25zLmNoYXJzLnRvcDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgKz0gdGhpcy5vcHRpb25zLmNoYXJzLnRvcE1pZDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChhMUJvcmRlciAmJiBhMkJvcmRlcikge1xuICAgICAgICBpZiAoaGFzUm93U3BhbihhMSkgJiYgYTEgPT09IGEyKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IHRoaXMub3B0aW9ucy5jaGFycy5yaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgKz0gdGhpcy5vcHRpb25zLmNoYXJzLnJpZ2h0TWlkO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGExQm9yZGVyKSB7XG4gICAgICAgIHJlc3VsdCArPSB0aGlzLm9wdGlvbnMuY2hhcnMuYm90dG9tUmlnaHQ7XG4gICAgICB9IGVsc2UgaWYgKGIxQm9yZGVyKSB7XG4gICAgICAgIHJlc3VsdCArPSB0aGlzLm9wdGlvbnMuY2hhcnMuYm90dG9tTGVmdDtcbiAgICAgIH0gZWxzZSBpZiAoYTJCb3JkZXIpIHtcbiAgICAgICAgcmVzdWx0ICs9IHRoaXMub3B0aW9ucy5jaGFycy50b3BSaWdodDtcbiAgICAgIH0gZWxzZSBpZiAoYjJCb3JkZXIpIHtcbiAgICAgICAgcmVzdWx0ICs9IHRoaXMub3B0aW9ucy5jaGFycy50b3BMZWZ0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ICs9IFwiIFwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGxlbmd0aCA9IG9wdHMucGFkZGluZ1tjb2xJbmRleF0gKyBvcHRzLndpZHRoW2NvbEluZGV4XSArXG4gICAgICBvcHRzLnBhZGRpbmdbY29sSW5kZXhdO1xuXG4gICAgaWYgKHJvd1NwYW5bY29sSW5kZXhdID4gMSAmJiBuZXh0Um93KSB7XG4gICAgICByZXN1bHQgKz0gdGhpcy5yZW5kZXJDZWxsKFxuICAgICAgICBjb2xJbmRleCxcbiAgICAgICAgbmV4dFJvdyxcbiAgICAgICAgb3B0cyxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICk7XG4gICAgICBpZiAobmV4dFJvd1tjb2xJbmRleF0gPT09IG5leHRSb3dbbmV4dFJvdy5sZW5ndGggLSAxXSkge1xuICAgICAgICBpZiAoYjFCb3JkZXIpIHtcbiAgICAgICAgICByZXN1bHQgKz0gdGhpcy5vcHRpb25zLmNoYXJzLnJpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCArPSBcIiBcIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYjFCb3JkZXIgJiYgYjJCb3JkZXIpIHtcbiAgICAgIHJlc3VsdCArPSB0aGlzLm9wdGlvbnMuY2hhcnMubWlkLnJlcGVhdChsZW5ndGgpO1xuICAgIH0gZWxzZSBpZiAoYjFCb3JkZXIpIHtcbiAgICAgIHJlc3VsdCArPSB0aGlzLm9wdGlvbnMuY2hhcnMuYm90dG9tLnJlcGVhdChsZW5ndGgpO1xuICAgIH0gZWxzZSBpZiAoYjJCb3JkZXIpIHtcbiAgICAgIHJlc3VsdCArPSB0aGlzLm9wdGlvbnMuY2hhcnMudG9wLnJlcGVhdChsZW5ndGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgKz0gXCIgXCIucmVwZWF0KGxlbmd0aCk7XG4gICAgfVxuXG4gICAgaWYgKGNvbEluZGV4ID09PSBvcHRzLmNvbHVtbnMgLSAxKSB7XG4gICAgICBpZiAoYjFCb3JkZXIgJiYgYjJCb3JkZXIpIHtcbiAgICAgICAgcmVzdWx0ICs9IHRoaXMub3B0aW9ucy5jaGFycy5yaWdodE1pZDtcbiAgICAgIH0gZWxzZSBpZiAoYjFCb3JkZXIpIHtcbiAgICAgICAgcmVzdWx0ICs9IHRoaXMub3B0aW9ucy5jaGFycy5ib3R0b21SaWdodDtcbiAgICAgIH0gZWxzZSBpZiAoYjJCb3JkZXIpIHtcbiAgICAgICAgcmVzdWx0ICs9IHRoaXMub3B0aW9ucy5jaGFycy50b3BSaWdodDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCArPSBcIiBcIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxJQUFJLFFBQTBCLFlBQVk7QUFDbkQsU0FBZSxHQUFHLFFBQVEsV0FBVztBQUVyQyxTQUFTLFlBQVksRUFBRSxPQUFPLEVBQUUsU0FBUyxRQUFRLGFBQWE7QUFhOUQsMkJBQTJCLEdBQzNCLE9BQU8sTUFBTTs7O0VBQ1g7Ozs7R0FJQyxHQUNELFlBQ0UsQUFBUSxLQUFZLEVBQ3BCLEFBQVEsT0FBdUIsQ0FDL0I7U0FGUSxRQUFBO1NBQ0EsVUFBQTtFQUNQO0VBRUgsMkJBQTJCLEdBQzNCLEFBQU8sV0FBbUI7SUFDeEIsTUFBTSxPQUF3QixJQUFJLENBQUMsWUFBWTtJQUMvQyxPQUFPLEtBQUssSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVE7RUFDcEQ7RUFFQTs7OztHQUlDLEdBQ0QsQUFBVSxlQUFnQztJQUN4QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztNQUN2QyxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFL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 +// denoCacheMetadata=8038561412818060895,3966861733942881635
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/5779c67789adb09e546f79f1878945b92e09269f0b16f320148de168e98a8226.js b/vendor/gen/https/deno.land/5779c67789adb09e546f79f1878945b92e09269f0b16f320148de168e98a8226.js new file mode 100644 index 0000000..090a505 --- /dev/null +++ b/vendor/gen/https/deno.land/5779c67789adb09e546f79f1878945b92e09269f0b16f320148de168e98a8226.js @@ -0,0 +1,106 @@ +import { brightBlue, dim, underline, yellow } from "./deps.ts"; +import { Figures } from "./figures.ts"; +import { GenericPrompt } from "./_generic_prompt.ts"; +/** Toggle prompt representation. */ export class Toggle extends GenericPrompt { + status = typeof this.settings.default !== "undefined" ? this.format(this.settings.default) : ""; + /** Execute the prompt and show cursor on end. */ static prompt(options) { + if (typeof options === "string") { + options = { + message: options + }; + } + return new this({ + pointer: brightBlue(Figures.POINTER_SMALL), + prefix: yellow("? "), + indent: " ", + active: "Yes", + inactive: "No", + ...options, + keys: { + active: [ + "right", + "y", + "j", + "s", + "o" + ], + inactive: [ + "left", + "n" + ], + ...options.keys ?? {} + } + }).prompt(); + } + message() { + let message = super.message() + " " + this.settings.pointer + " "; + if (this.status === this.settings.active) { + message += dim(this.settings.inactive + " / ") + underline(this.settings.active); + } else if (this.status === this.settings.inactive) { + message += underline(this.settings.inactive) + dim(" / " + this.settings.active); + } else { + message += dim(this.settings.inactive + " / " + this.settings.active); + } + return message; + } + /** Read user input from stdin, handle events and validate user input. */ read() { + this.tty.cursorHide(); + return super.read(); + } + /** + * Handle user input event. + * @param event Key event. + */ async handleEvent(event) { + switch(true){ + case event.sequence === this.settings.inactive[0].toLowerCase(): + case this.isKey(this.settings.keys, "inactive", event): + this.selectInactive(); + break; + case event.sequence === this.settings.active[0].toLowerCase(): + case this.isKey(this.settings.keys, "active", event): + this.selectActive(); + break; + default: + await super.handleEvent(event); + } + } + /** Set active. */ selectActive() { + this.status = this.settings.active; + } + /** Set inactive. */ selectInactive() { + this.status = this.settings.inactive; + } + /** + * Validate input value. + * @param value User input value. + * @return True on success, false or error message on error. + */ validate(value) { + return [ + this.settings.active, + this.settings.inactive + ].indexOf(value) !== -1; + } + /** + * Map input value to output value. + * @param value Input value. + * @return Output value. + */ transform(value) { + switch(value){ + case this.settings.active: + return true; + case this.settings.inactive: + return false; + } + } + /** + * Format output value. + * @param value Output value. + */ format(value) { + return value ? this.settings.active : this.settings.inactive; + } + /** Get input value. */ getValue() { + return this.status; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvcHJvbXB0L3RvZ2dsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEtleUNvZGUgfSBmcm9tIFwiLi4va2V5Y29kZS9rZXlfY29kZS50c1wiO1xuaW1wb3J0IHsgYnJpZ2h0Qmx1ZSwgZGltLCB1bmRlcmxpbmUsIHllbGxvdyB9IGZyb20gXCIuL2RlcHMudHNcIjtcbmltcG9ydCB7IEZpZ3VyZXMgfSBmcm9tIFwiLi9maWd1cmVzLnRzXCI7XG5pbXBvcnQge1xuICBHZW5lcmljUHJvbXB0LFxuICBHZW5lcmljUHJvbXB0S2V5cyxcbiAgR2VuZXJpY1Byb21wdE9wdGlvbnMsXG4gIEdlbmVyaWNQcm9tcHRTZXR0aW5ncyxcbn0gZnJvbSBcIi4vX2dlbmVyaWNfcHJvbXB0LnRzXCI7XG5cbi8qKiBUb2dnbGUga2V5IG9wdGlvbnMuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvZ2dsZUtleXMgZXh0ZW5kcyBHZW5lcmljUHJvbXB0S2V5cyB7XG4gIGFjdGl2ZT86IHN0cmluZ1tdO1xuICBpbmFjdGl2ZT86IHN0cmluZ1tdO1xufVxuXG4vKiogR2VuZXJpYyBwcm9tcHQgb3B0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9nZ2xlT3B0aW9ucyBleHRlbmRzIEdlbmVyaWNQcm9tcHRPcHRpb25zPGJvb2xlYW4sIHN0cmluZz4ge1xuICBhY3RpdmU/OiBzdHJpbmc7XG4gIGluYWN0aXZlPzogc3RyaW5nO1xuICBrZXlzPzogVG9nZ2xlS2V5cztcbn1cblxuLyoqIFRvZ2dsZSBwcm9tcHQgc2V0dGluZ3MuICovXG5pbnRlcmZhY2UgVG9nZ2xlU2V0dGluZ3MgZXh0ZW5kcyBHZW5lcmljUHJvbXB0U2V0dGluZ3M8Ym9vbGVhbiwgc3RyaW5nPiB7XG4gIGFjdGl2ZTogc3RyaW5nO1xuICBpbmFjdGl2ZTogc3RyaW5nO1xuICBrZXlzOiBUb2dnbGVLZXlzO1xufVxuXG4vKiogVG9nZ2xlIHByb21wdCByZXByZXNlbnRhdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBUb2dnbGUgZXh0ZW5kcyBHZW5lcmljUHJvbXB0PGJvb2xlYW4sIHN0cmluZywgVG9nZ2xlU2V0dGluZ3M+IHtcbiAgcHJvdGVjdGVkIHN0YXR1czogc3RyaW5nID0gdHlwZW9mIHRoaXMuc2V0dGluZ3MuZGVmYXVsdCAhPT0gXCJ1bmRlZmluZWRcIlxuICAgID8gdGhpcy5mb3JtYXQodGhpcy5zZXR0aW5ncy5kZWZhdWx0KVxuICAgIDogXCJcIjtcblxuICAvKiogRXhlY3V0ZSB0aGUgcHJvbXB0IGFuZCBzaG93IGN1cnNvciBvbiBlbmQuICovXG4gIHB1YmxpYyBzdGF0aWMgcHJvbXB0KFxuICAgIG9wdGlvbnM6IHN0cmluZyB8IFRvZ2dsZU9wdGlvbnMsXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgb3B0aW9ucyA9IHsgbWVzc2FnZTogb3B0aW9ucyB9O1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgdGhpcyh7XG4gICAgICBwb2ludGVyOiBicmlnaHRCbHVlKEZpZ3VyZXMuUE9JTlRFUl9TTUFMTCksXG4gICAgICBwcmVmaXg6IHllbGxvdyhcIj8gXCIpLFxuICAgICAgaW5kZW50OiBcIiBcIixcbiAgICAgIGFjdGl2ZTogXCJZZXNcIixcbiAgICAgIGluYWN0aXZlOiBcIk5vXCIsXG4gICAgICAuLi5vcHRpb25zLFxuICAgICAga2V5czoge1xuICAgICAgICBhY3RpdmU6IFtcInJpZ2h0XCIsIFwieVwiLCBcImpcIiwgXCJzXCIsIFwib1wiXSxcbiAgICAgICAgaW5hY3RpdmU6IFtcImxlZnRcIiwgXCJuXCJdLFxuICAgICAgICAuLi4ob3B0aW9ucy5rZXlzID8/IHt9KSxcbiAgICAgIH0sXG4gICAgfSkucHJvbXB0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIGxldCBtZXNzYWdlID0gc3VwZXIubWVzc2FnZSgpICsgXCIgXCIgKyB0aGlzLnNldHRpbmdzLnBvaW50ZXIgKyBcIiBcIjtcblxuICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gdGhpcy5zZXR0aW5ncy5hY3RpdmUpIHtcbiAgICAgIG1lc3NhZ2UgKz0gZGltKHRoaXMuc2V0dGluZ3MuaW5hY3RpdmUgKyBcIiAvIFwiKSArXG4gICAgICAgIHVuZGVybGluZSh0aGlzLnNldHRpbmdzLmFjdGl2ZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnN0YXR1cyA9PT0gdGhpcy5zZXR0aW5ncy5pbmFjdGl2ZSkge1xuICAgICAgbWVzc2FnZSArPSB1bmRlcmxpbmUodGhpcy5zZXR0aW5ncy5pbmFjdGl2ZSkgK1xuICAgICAgICBkaW0oXCIgLyBcIiArIHRoaXMuc2V0dGluZ3MuYWN0aXZlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVzc2FnZSArPSBkaW0odGhpcy5zZXR0aW5ncy5pbmFjdGl2ZSArIFwiIC8gXCIgKyB0aGlzLnNldHRpbmdzLmFjdGl2ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH1cblxuICAvKiogUmVhZCB1c2VyIGlucHV0IGZyb20gc3RkaW4sIGhhbmRsZSBldmVudHMgYW5kIHZhbGlkYXRlIHVzZXIgaW5wdXQuICovXG4gIHByb3RlY3RlZCByZWFkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRoaXMudHR5LmN1cnNvckhpZGUoKTtcbiAgICByZXR1cm4gc3VwZXIucmVhZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB1c2VyIGlucHV0IGV2ZW50LlxuICAgKiBAcGFyYW0gZXZlbnQgS2V5IGV2ZW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUV2ZW50KGV2ZW50OiBLZXlDb2RlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICBjYXNlIGV2ZW50LnNlcXVlbmNlID09PSB0aGlzLnNldHRpbmdzLmluYWN0aXZlWzBdLnRvTG93ZXJDYXNlKCk6XG4gICAgICBjYXNlIHRoaXMuaXNLZXkodGhpcy5zZXR0aW5ncy5rZXlzLCBcImluYWN0aXZlXCIsIGV2ZW50KTpcbiAgICAgICAgdGhpcy5zZWxlY3RJbmFjdGl2ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgZXZlbnQuc2VxdWVuY2UgPT09IHRoaXMuc2V0dGluZ3MuYWN0aXZlWzBdLnRvTG93ZXJDYXNlKCk6XG4gICAgICBjYXNlIHRoaXMuaXNLZXkodGhpcy5zZXR0aW5ncy5rZXlzLCBcImFjdGl2ZVwiLCBldmVudCk6XG4gICAgICAgIHRoaXMuc2VsZWN0QWN0aXZlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXdhaXQgc3VwZXIuaGFuZGxlRXZlbnQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTZXQgYWN0aXZlLiAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0QWN0aXZlKCkge1xuICAgIHRoaXMuc3RhdHVzID0gdGhpcy5zZXR0aW5ncy5hY3RpdmU7XG4gIH1cblxuICAvKiogU2V0IGluYWN0aXZlLiAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0SW5hY3RpdmUoKSB7XG4gICAgdGhpcy5zdGF0dXMgPSB0aGlzLnNldHRpbmdzLmluYWN0aXZlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGlucHV0IHZhbHVlLlxuICAgKiBAcGFyYW0gdmFsdWUgVXNlciBpbnB1dCB2YWx1ZS5cbiAgICogQHJldHVybiBUcnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9yIGVycm9yIG1lc3NhZ2Ugb24gZXJyb3IuXG4gICAqL1xuICBwcm90ZWN0ZWQgdmFsaWRhdGUodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4gfCBzdHJpbmcge1xuICAgIHJldHVybiBbdGhpcy5zZXR0aW5ncy5hY3RpdmUsIHRoaXMuc2V0dGluZ3MuaW5hY3RpdmVdLmluZGV4T2YodmFsdWUpICE9PSAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXAgaW5wdXQgdmFsdWUgdG8gb3V0cHV0IHZhbHVlLlxuICAgKiBAcGFyYW0gdmFsdWUgSW5wdXQgdmFsdWUuXG4gICAqIEByZXR1cm4gT3V0cHV0IHZhbHVlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgc3dpdGNoICh2YWx1ZSkge1xuICAgICAgY2FzZSB0aGlzLnNldHRpbmdzLmFjdGl2ZTpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlIHRoaXMuc2V0dGluZ3MuaW5hY3RpdmU6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0IG91dHB1dCB2YWx1ZS5cbiAgICogQHBhcmFtIHZhbHVlIE91dHB1dCB2YWx1ZS5cbiAgICovXG4gIHByb3RlY3RlZCBmb3JtYXQodmFsdWU6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZSA/IHRoaXMuc2V0dGluZ3MuYWN0aXZlIDogdGhpcy5zZXR0aW5ncy5pbmFjdGl2ZTtcbiAgfVxuXG4gIC8qKiBHZXQgaW5wdXQgdmFsdWUuICovXG4gIHByb3RlY3RlZCBnZXRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN0YXR1cztcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLFNBQVMsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLFlBQVk7QUFDL0QsU0FBUyxPQUFPLFFBQVEsZUFBZTtBQUN2QyxTQUNFLGFBQWEsUUFJUix1QkFBdUI7QUFzQjlCLGtDQUFrQyxHQUNsQyxPQUFPLE1BQU0sZUFBZTtFQUNoQixTQUFpQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxLQUFLLGNBQ3hELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLElBQ2pDLEdBQUc7RUFFUCwrQ0FBK0MsR0FDL0MsT0FBYyxPQUNaLE9BQStCLEVBQ2I7SUFD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 +// denoCacheMetadata=5219360132839952258,11511038125273424712
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/5b428de6e3bbbea28f55a17efc24bdd837e6d4965d3340b81a2c99bc78318b66.js b/vendor/gen/https/deno.land/5b428de6e3bbbea28f55a17efc24bdd837e6d4965d3340b81a2c99bc78318b66.js new file mode 100644 index 0000000..d91a75c --- /dev/null +++ b/vendor/gen/https/deno.land/5b428de6e3bbbea28f55a17efc24bdd837e6d4965d3340b81a2c99bc78318b66.js @@ -0,0 +1,23 @@ +import { Command } from "../command.ts"; +import { dim, italic } from "../deps.ts"; +import { BashCompletionsGenerator } from "./_bash_completions_generator.ts"; +/** Generates bash completions script. */ export class BashCompletionsCommand extends Command { + #cmd; + constructor(cmd){ + super(); + this.#cmd = cmd; + return this.description(()=>{ + const baseCmd = this.#cmd || this.getMainCommand(); + return `Generate shell completions for bash. + +To enable bash completions for this program add following line to your ${dim(italic("~/.bashrc"))}: + + ${dim(italic(`source <(${baseCmd.getPath()} completions bash)`))}`; + }).noGlobals().action(()=>{ + const baseCmd = this.#cmd || this.getMainCommand(); + console.log(BashCompletionsGenerator.generate(baseCmd)); + }); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC9jb21wbGV0aW9ucy9iYXNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiLi4vY29tbWFuZC50c1wiO1xuaW1wb3J0IHsgZGltLCBpdGFsaWMgfSBmcm9tIFwiLi4vZGVwcy50c1wiO1xuaW1wb3J0IHsgQmFzaENvbXBsZXRpb25zR2VuZXJhdG9yIH0gZnJvbSBcIi4vX2Jhc2hfY29tcGxldGlvbnNfZ2VuZXJhdG9yLnRzXCI7XG5cbi8qKiBHZW5lcmF0ZXMgYmFzaCBjb21wbGV0aW9ucyBzY3JpcHQuICovXG5leHBvcnQgY2xhc3MgQmFzaENvbXBsZXRpb25zQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICAjY21kPzogQ29tbWFuZDtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGNtZD86IENvbW1hbmQpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuI2NtZCA9IGNtZDtcbiAgICByZXR1cm4gdGhpc1xuICAgICAgLmRlc2NyaXB0aW9uKCgpID0+IHtcbiAgICAgICAgY29uc3QgYmFzZUNtZCA9IHRoaXMuI2NtZCB8fCB0aGlzLmdldE1haW5Db21tYW5kKCk7XG4gICAgICAgIHJldHVybiBgR2VuZXJhdGUgc2hlbGwgY29tcGxldGlvbnMgZm9yIGJhc2guXG5cblRvIGVuYWJsZSBiYXNoIGNvbXBsZXRpb25zIGZvciB0aGlzIHByb2dyYW0gYWRkIGZvbGxvd2luZyBsaW5lIHRvIHlvdXIgJHtcbiAgICAgICAgICBkaW0oaXRhbGljKFwifi8uYmFzaHJjXCIpKVxuICAgICAgICB9OlxuXG4gICAgJHtkaW0oaXRhbGljKGBzb3VyY2UgPCgke2Jhc2VDbWQuZ2V0UGF0aCgpfSBjb21wbGV0aW9ucyBiYXNoKWApKX1gO1xuICAgICAgfSlcbiAgICAgIC5ub0dsb2JhbHMoKVxuICAgICAgLmFjdGlvbigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGJhc2VDbWQgPSB0aGlzLiNjbWQgfHwgdGhpcy5nZXRNYWluQ29tbWFuZCgpO1xuICAgICAgICBjb25zb2xlLmxvZyhCYXNoQ29tcGxldGlvbnNHZW5lcmF0b3IuZ2VuZXJhdGUoYmFzZUNtZCkpO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLE9BQU8sUUFBUSxnQkFBZ0I7QUFDeEMsU0FBUyxHQUFHLEVBQUUsTUFBTSxRQUFRLGFBQWE7QUFDekMsU0FBUyx3QkFBd0IsUUFBUSxtQ0FBbUM7QUFFNUUsdUNBQXVDLEdBQ3ZDLE9BQU8sTUFBTSwrQkFBK0I7RUFDMUMsQ0FBQSxHQUFJLENBQVc7RUFDZixZQUFtQixHQUFhLENBQUU7SUFDaEMsS0FBSztJQUNMLElBQUksQ0FBQyxDQUFBLEdBQUksR0FBRztJQUNaLE9BQU8sSUFBSSxDQUNSLFdBQVcsQ0FBQztNQUNYLE1BQU0sVUFBVSxJQUFJLENBQUMsQ0FBQSxHQUFJLElBQUksSUFBSSxDQUFDLGNBQWM7TUFDaEQsT0FBTyxDQUFDOzt1RUFFdUQsRUFDN0QsSUFBSSxPQUFPLGNBQ1o7O0lBRUwsRUFBRSxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsUUFBUSxPQUFPLEdBQUcsa0JBQWtCLENBQUMsSUFBSTtJQUNoRSxHQUNDLFNBQVMsR0FDVCxNQUFNLENBQUM7TUFDTixNQUFNLFVBQVUsSUFBSSxDQUFDLENBQUEsR0FBSSxJQUFJLElBQUksQ0FBQyxjQUFjO01BQ2hELFFBQVEsR0FBRyxDQUFDLHlCQUF5QixRQUFRLENBQUM7SUFDaEQ7RUFDSjtBQUNGIn0= +// denoCacheMetadata=17880395243876625327,16064736319297981818
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/5c5e6f23fc0fe5fd3624e053ce89fb815c0099343be1d7baddfd5cafeb0df6b7.js b/vendor/gen/https/deno.land/5c5e6f23fc0fe5fd3624e053ce89fb815c0099343be1d7baddfd5cafeb0df6b7.js new file mode 100644 index 0000000..b8b6a14 --- /dev/null +++ b/vendor/gen/https/deno.land/5c5e6f23fc0fe5fd3624e053ce89fb815c0099343be1d7baddfd5cafeb0df6b7.js @@ -0,0 +1,3 @@ +export * from "jsr:@std/fs@1.0.17"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvZGVwcy9mcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwianNyOkBzdGQvZnNAMS4wLjE3XCI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUIifQ== +// denoCacheMetadata=6152266355417798437,7094576751012025521
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/5c99d6eab6b2a302e3804cdb8da75892b986a62ca77652d6695c51f7865cd1b2.js b/vendor/gen/https/deno.land/5c99d6eab6b2a302e3804cdb8da75892b986a62ca77652d6695c51f7865cd1b2.js new file mode 100644 index 0000000..ad78003 --- /dev/null +++ b/vendor/gen/https/deno.land/5c99d6eab6b2a302e3804cdb8da75892b986a62ca77652d6695c51f7865cd1b2.js @@ -0,0 +1,84 @@ +const HTMLCollectionFakeClass = (()=>{ + var _computedKey; + _computedKey = Symbol.hasInstance; + return class HTMLCollection { + constructor(){ + throw new TypeError("Illegal constructor"); + } + static [_computedKey](value) { + return value.constructor === HTMLCollectionClass; + } + }; +})(); +export const HTMLCollectionMutatorSym = Symbol("HTMLCollectionMutatorSym"); +// We define the `HTMLCollection` inside a closure to ensure that its +// `.name === "HTMLCollection"` property stays intact, as we need to manipulate +// its prototype and completely change its TypeScript-recognized type. +const HTMLCollectionClass = (()=>{ + // @ts-ignore + class HTMLCollection extends Array { + forEach(cb, thisArg) { + super.forEach(cb, thisArg); + } + item(index) { + return this[index] ?? null; + } + [HTMLCollectionMutatorSym]() { + return { + push: Array.prototype.push.bind(this), + splice: Array.prototype.splice.bind(this), + indexOf: Array.prototype.indexOf.bind(this) + }; + } + toString() { + return "[object HTMLCollection]"; + } + } + return HTMLCollection; +})(); +for (const staticMethod of [ + "from", + "isArray", + "of" +]){ + HTMLCollectionClass[staticMethod] = undefined; +} +for (const instanceMethod of [ + "concat", + "copyWithin", + "every", + "fill", + "filter", + "find", + "findIndex", + "flat", + "flatMap", + "includes", + "indexOf", + "join", + "lastIndexOf", + "map", + "pop", + "push", + "reduce", + "reduceRight", + "reverse", + "shift", + "slice", + "some", + "sort", + "splice", + "toLocaleString", + "unshift", + // Unlike NodeList, HTMLCollection also doesn't implement these + "entries", + "forEach", + "keys", + "values" +]){ + HTMLCollectionClass.prototype[instanceMethod] = undefined; +} +export const HTMLCollection = HTMLCollectionClass; +export const HTMLCollectionPublic = HTMLCollectionFakeClass; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvZGVub19kb21AdjAuMS40OS9zcmMvZG9tL2h0bWwtY29sbGVjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tIFwiLi9lbGVtZW50LnRzXCI7XG5cbmNvbnN0IEhUTUxDb2xsZWN0aW9uRmFrZUNsYXNzOiBhbnkgPSAoKCkgPT4ge1xuICByZXR1cm4gY2xhc3MgSFRNTENvbGxlY3Rpb24ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIklsbGVnYWwgY29uc3RydWN0b3JcIik7XG4gICAgfVxuXG4gICAgc3RhdGljIFtTeW1ib2wuaGFzSW5zdGFuY2VdKHZhbHVlOiBhbnkpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5jb25zdHJ1Y3RvciA9PT0gSFRNTENvbGxlY3Rpb25DbGFzcztcbiAgICB9XG4gIH07XG59KSgpO1xuXG5leHBvcnQgY29uc3QgSFRNTENvbGxlY3Rpb25NdXRhdG9yU3ltID0gU3ltYm9sKFwiSFRNTENvbGxlY3Rpb25NdXRhdG9yU3ltXCIpO1xuXG4vLyBXZSBkZWZpbmUgdGhlIGBIVE1MQ29sbGVjdGlvbmAgaW5zaWRlIGEgY2xvc3VyZSB0byBlbnN1cmUgdGhhdCBpdHNcbi8vIGAubmFtZSA9PT0gXCJIVE1MQ29sbGVjdGlvblwiYCBwcm9wZXJ0eSBzdGF5cyBpbnRhY3QsIGFzIHdlIG5lZWQgdG8gbWFuaXB1bGF0ZVxuLy8gaXRzIHByb3RvdHlwZSBhbmQgY29tcGxldGVseSBjaGFuZ2UgaXRzIFR5cGVTY3JpcHQtcmVjb2duaXplZCB0eXBlLlxuY29uc3QgSFRNTENvbGxlY3Rpb25DbGFzczogYW55ID0gKCgpID0+IHtcbiAgLy8gQHRzLWlnbm9yZVxuICBjbGFzcyBIVE1MQ29sbGVjdGlvbiBleHRlbmRzIEFycmF5PEVsZW1lbnQ+IHtcbiAgICBvdmVycmlkZSBmb3JFYWNoKFxuICAgICAgY2I6IChub2RlOiBFbGVtZW50LCBpbmRleDogbnVtYmVyLCBub2RlTGlzdDogRWxlbWVudFtdKSA9PiB2b2lkLFxuICAgICAgdGhpc0FyZz86IHVua25vd24sXG4gICAgKSB7XG4gICAgICBzdXBlci5mb3JFYWNoKGNiLCB0aGlzQXJnKTtcbiAgICB9XG5cbiAgICBpdGVtKGluZGV4OiBudW1iZXIpOiBFbGVtZW50IHwgbnVsbCB7XG4gICAgICByZXR1cm4gdGhpc1tpbmRleF0gPz8gbnVsbDtcbiAgICB9XG5cbiAgICBbSFRNTENvbGxlY3Rpb25NdXRhdG9yU3ltXSgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHB1c2g6IEFycmF5LnByb3RvdHlwZS5wdXNoLmJpbmQodGhpcyksXG5cbiAgICAgICAgc3BsaWNlOiBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmJpbmQodGhpcyksXG5cbiAgICAgICAgaW5kZXhPZjogQXJyYXkucHJvdG90eXBlLmluZGV4T2YuYmluZCh0aGlzKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gXCJbb2JqZWN0IEhUTUxDb2xsZWN0aW9uXVwiO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBIVE1MQ29sbGVjdGlvbjtcbn0pKCk7XG5cbmZvciAoXG4gIGNvbnN0IHN0YXRpY01ldGhvZCBvZiBbXG4gICAgXCJmcm9tXCIsXG4gICAgXCJpc0FycmF5XCIsXG4gICAgXCJvZlwiLFxuICBdXG4pIHtcbiAgSFRNTENvbGxlY3Rpb25DbGFzc1tzdGF0aWNNZXRob2RdID0gdW5kZWZpbmVkO1xufVxuXG5mb3IgKFxuICBjb25zdCBpbnN0YW5jZU1ldGhvZCBvZiBbXG4gICAgXCJjb25jYXRcIixcbiAgICBcImNvcHlXaXRoaW5cIixcbiAgICBcImV2ZXJ5XCIsXG4gICAgXCJmaWxsXCIsXG4gICAgXCJmaWx0ZXJcIixcbiAgICBcImZpbmRcIixcbiAgICBcImZpbmRJbmRleFwiLFxuICAgIFwiZmxhdFwiLFxuICAgIFwiZmxhdE1hcFwiLFxuICAgIFwiaW5jbHVkZXNcIixcbiAgICBcImluZGV4T2ZcIixcbiAgICBcImpvaW5cIixcbiAgICBcImxhc3RJbmRleE9mXCIsXG4gICAgXCJtYXBcIixcbiAgICBcInBvcFwiLFxuICAgIFwicHVzaFwiLFxuICAgIFwicmVkdWNlXCIsXG4gICAgXCJyZWR1Y2VSaWdodFwiLFxuICAgIFwicmV2ZXJzZVwiLFxuICAgIFwic2hpZnRcIixcbiAgICBcInNsaWNlXCIsXG4gICAgXCJzb21lXCIsXG4gICAgXCJzb3J0XCIsXG4gICAgXCJzcGxpY2VcIixcbiAgICBcInRvTG9jYWxlU3RyaW5nXCIsXG4gICAgXCJ1bnNoaWZ0XCIsXG5cbiAgICAvLyBVbmxpa2UgTm9kZUxpc3QsIEhUTUxDb2xsZWN0aW9uIGFsc28gZG9lc24ndCBpbXBsZW1lbnQgdGhlc2VcbiAgICBcImVudHJpZXNcIixcbiAgICBcImZvckVhY2hcIixcbiAgICBcImtleXNcIixcbiAgICBcInZhbHVlc1wiLFxuICBdXG4pIHtcbiAgSFRNTENvbGxlY3Rpb25DbGFzcy5wcm90b3R5cGVbaW5zdGFuY2VNZXRob2RdID0gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhUTUxDb2xsZWN0aW9uIHtcbiAgbmV3ICgpOiBIVE1MQ29sbGVjdGlvbjtcbiAgcmVhZG9ubHkgW2luZGV4OiBudW1iZXJdOiBFbGVtZW50O1xuICByZWFkb25seSBsZW5ndGg6IG51bWJlcjtcbiAgW1N5bWJvbC5pdGVyYXRvcl0oKTogR2VuZXJhdG9yPEVsZW1lbnQ+O1xuXG4gIGl0ZW0oaW5kZXg6IG51bWJlcik6IEVsZW1lbnQ7XG4gIFtIVE1MQ29sbGVjdGlvbk11dGF0b3JTeW1dKCk6IEhUTUxDb2xsZWN0aW9uTXV0YXRvcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIVE1MQ29sbGVjdGlvblB1YmxpYyBleHRlbmRzIEhUTUxDb2xsZWN0aW9uIHtcbiAgW0hUTUxDb2xsZWN0aW9uTXV0YXRvclN5bV06IG5ldmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhUTUxDb2xsZWN0aW9uTXV0YXRvciB7XG4gIHB1c2goLi4uZWxlbWVudHM6IEVsZW1lbnRbXSk6IG51bWJlcjtcbiAgc3BsaWNlKHN0YXJ0OiBudW1iZXIsIGRlbGV0ZUNvdW50PzogbnVtYmVyLCAuLi5pdGVtczogRWxlbWVudFtdKTogRWxlbWVudFtdO1xuICBpbmRleE9mKGVsZW1lbnQ6IEVsZW1lbnQsIGZyb21JbmRleD86IG51bWJlciB8IHVuZGVmaW5lZCk6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IEhUTUxDb2xsZWN0aW9uID0gPEhUTUxDb2xsZWN0aW9uPiBIVE1MQ29sbGVjdGlvbkNsYXNzO1xuZXhwb3J0IGNvbnN0IEhUTUxDb2xsZWN0aW9uUHVibGljID1cbiAgPEhUTUxDb2xsZWN0aW9uUHVibGljPiBIVE1MQ29sbGVjdGlvbkZha2VDbGFzcztcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLDBCQUErQixDQUFDOztpQkFNMUIsT0FBTyxXQUFXO0VBTDVCLE9BQU8sTUFBTTtJQUNYLGFBQWM7TUFDWixNQUFNLElBQUksVUFBVTtJQUN0QjtJQUVBLHNCQUE0QixLQUFVLEVBQUU7TUFDdEMsT0FBTyxNQUFNLFdBQVcsS0FBSztJQUMvQjtFQUNGO0FBQ0YsQ0FBQztBQUVELE9BQU8sTUFBTSwyQkFBMkIsT0FBTyw0QkFBNEI7QUFFM0UscUVBQXFFO0FBQ3JFLCtFQUErRTtBQUMvRSxzRUFBc0U7QUFDdEUsTUFBTSxzQkFBMkIsQ0FBQztFQUNoQyxhQUFhO0VBQ2IsTUFBTSx1QkFBdUI7SUFDbEIsUUFDUCxFQUErRCxFQUMvRCxPQUFpQixFQUNqQjtNQUNBLEtBQUssQ0FBQyxRQUFRLElBQUk7SUFDcEI7SUFFQSxLQUFLLEtBQWEsRUFBa0I7TUFDbEMsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJO0lBQ3hCO0lBRUEsQ0FBQyx5QkFBeUIsR0FBRztNQUMzQixPQUFPO1FBQ0wsTUFBTSxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7UUFFcEMsUUFBUSxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUk7UUFFeEMsU0FBUyxNQUFNLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUk7TUFDNUM7SUFDRjtJQUVTLFdBQVc7TUFDbEIsT0FBTztJQUNUO0VBQ0Y7RUFFQSxPQUFPO0FBQ1QsQ0FBQztBQUVELEtBQ0UsTUFBTSxnQkFBZ0I7RUFDcEI7RUFDQTtFQUNBO0NBQ0QsQ0FDRDtFQUNBLG1CQUFtQixDQUFDLGFBQWEsR0FBRztBQUN0QztBQUVBLEtBQ0UsTUFBTSxrQkFBa0I7RUFDdEI7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBLCtEQUErRDtFQUMvRDtFQUNBO0VBQ0E7RUFDQTtDQUNELENBQ0Q7RUFDQSxvQkFBb0IsU0FBUyxDQUFDLGVBQWUsR0FBRztBQUNsRDtBQXNCQSxPQUFPLE1BQU0saUJBQWtDLG9CQUFvQjtBQUNuRSxPQUFPLE1BQU0sdUJBQ1ksd0JBQXdCIn0= +// denoCacheMetadata=5666268327733017674,7027544850563545714
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/5cf59b83b4328f5b9c4b3ac6b0494b532ac14b94623be56005e9736f1c3a229e.js b/vendor/gen/https/deno.land/5cf59b83b4328f5b9c4b3ac6b0494b532ac14b94623be56005e9736f1c3a229e.js new file mode 100644 index 0000000..2067f34 --- /dev/null +++ b/vendor/gen/https/deno.land/5cf59b83b4328f5b9c4b3ac6b0494b532ac14b94623be56005e9736f1c3a229e.js @@ -0,0 +1,46 @@ +import { buildSite } from "./utils.ts"; +/** Build the website and optionally watch changes and serve the site */ export function build(config, serve, watch) { + if (!serve && !watch) { + buildSite(config); + return; + } + const workerUrl = import.meta.resolve("./build_worker.ts"); + let worker; + function init() { + let type = "build"; + if (worker) { + type = "rebuild"; + worker.terminate(); + } + worker = new Worker(workerUrl, { + type: "module" + }); + worker.postMessage({ + type: "localStorage", + data: { + ...localStorage + } + }); + worker.postMessage({ + type, + config, + serve + }); + worker.onmessage = (event)=>{ + switch(event.data.type){ + case "reload": + init(); + break; + case "localStorage": + { + const { method, args } = event.data; + localStorage[method](...args); + break; + } + } + }; + } + init(); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY2xpL2J1aWxkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJ1aWxkU2l0ZSB9IGZyb20gXCIuL3V0aWxzLnRzXCI7XG5cbi8qKiBCdWlsZCB0aGUgd2Vic2l0ZSBhbmQgb3B0aW9uYWxseSB3YXRjaCBjaGFuZ2VzIGFuZCBzZXJ2ZSB0aGUgc2l0ZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkKFxuICBjb25maWc6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgc2VydmU/OiBib29sZWFuLFxuICB3YXRjaD86IGJvb2xlYW4sXG4pIHtcbiAgaWYgKCFzZXJ2ZSAmJiAhd2F0Y2gpIHtcbiAgICBidWlsZFNpdGUoY29uZmlnKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB3b3JrZXJVcmwgPSBpbXBvcnQubWV0YS5yZXNvbHZlKFwiLi9idWlsZF93b3JrZXIudHNcIik7XG4gIGxldCB3b3JrZXI6IFdvcmtlcjtcblxuICBmdW5jdGlvbiBpbml0KCkge1xuICAgIGxldCB0eXBlID0gXCJidWlsZFwiO1xuXG4gICAgaWYgKHdvcmtlcikge1xuICAgICAgdHlwZSA9IFwicmVidWlsZFwiO1xuICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpO1xuICAgIH1cblxuICAgIHdvcmtlciA9IG5ldyBXb3JrZXIod29ya2VyVXJsLCB7IHR5cGU6IFwibW9kdWxlXCIgfSk7XG4gICAgd29ya2VyLnBvc3RNZXNzYWdlKHtcbiAgICAgIHR5cGU6IFwibG9jYWxTdG9yYWdlXCIsXG4gICAgICBkYXRhOiB7IC4uLmxvY2FsU3RvcmFnZSB9LFxuICAgIH0pO1xuXG4gICAgd29ya2VyLnBvc3RNZXNzYWdlKHtcbiAgICAgIHR5cGUsXG4gICAgICBjb25maWcsXG4gICAgICBzZXJ2ZSxcbiAgICB9KTtcblxuICAgIHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHtcbiAgICAgIHN3aXRjaCAoZXZlbnQuZGF0YS50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJyZWxvYWRcIjpcbiAgICAgICAgICBpbml0KCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBcImxvY2FsU3RvcmFnZVwiOiB7XG4gICAgICAgICAgY29uc3QgeyBtZXRob2QsIGFyZ3MgfSA9IGV2ZW50LmRhdGE7XG4gICAgICAgICAgbG9jYWxTdG9yYWdlW21ldGhvZF0oLi4uYXJncyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgaW5pdCgpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsU0FBUyxRQUFRLGFBQWE7QUFFdkMsc0VBQXNFLEdBQ3RFLE9BQU8sU0FBUyxNQUNkLE1BQTBCLEVBQzFCLEtBQWUsRUFDZixLQUFlO0VBRWYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPO0lBQ3BCLFVBQVU7SUFDVjtFQUNGO0VBRUEsTUFBTSxZQUFZLFlBQVksT0FBTyxDQUFDO0VBQ3RDLElBQUk7RUFFSixTQUFTO0lBQ1AsSUFBSSxPQUFPO0lBRVgsSUFBSSxRQUFRO01BQ1YsT0FBTztNQUNQLE9BQU8sU0FBUztJQUNsQjtJQUVBLFNBQVMsSUFBSSxPQUFPLFdBQVc7TUFBRSxNQUFNO0lBQVM7SUFDaEQsT0FBTyxXQUFXLENBQUM7TUFDakIsTUFBTTtNQUNOLE1BQU07UUFBRSxHQUFHLFlBQVk7TUFBQztJQUMxQjtJQUVBLE9BQU8sV0FBVyxDQUFDO01BQ2pCO01BQ0E7TUFDQTtJQUNGO0lBRUEsT0FBTyxTQUFTLEdBQUcsQ0FBQztNQUNsQixPQUFRLE1BQU0sSUFBSSxDQUFDLElBQUk7UUFDckIsS0FBSztVQUNIO1VBQ0E7UUFFRixLQUFLO1VBQWdCO1lBQ25CLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJO1lBQ25DLFlBQVksQ0FBQyxPQUFPLElBQUk7WUFDeEI7VUFDRjtNQUNGO0lBQ0Y7RUFDRjtFQUVBO0FBQ0YifQ== +// denoCacheMetadata=17856252909624266890,704078317729229561
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/5d7b7fa47314ea06dc93b7ed12a6fa7c29132c1808186406439d10c1e96d5919.js b/vendor/gen/https/deno.land/5d7b7fa47314ea06dc93b7ed12a6fa7c29132c1808186406439d10c1e96d5919.js new file mode 100644 index 0000000..ca935a3 --- /dev/null +++ b/vendor/gen/https/deno.land/5d7b7fa47314ea06dc93b7ed12a6fa7c29132c1808186406439d10c1e96d5919.js @@ -0,0 +1,31 @@ +import analyze from "../src/js.ts"; +export default function() { + return (env)=>{ + env.tags.push(includeTag); + }; +} +function includeTag(env, code, output, tokens) { + if (!code.startsWith("include ")) { + return; + } + const tagCode = code.substring(7).trim(); + let index = undefined; + analyze(tagCode, (type, i)=>{ + if (type === "open-bracket") { + index = i - 1; + return false; + } + }); + const file = index === undefined ? tagCode.trim() : tagCode.slice(0, index).trim(); + const data = index === undefined ? "" : tagCode.slice(index).trim(); + const { dataVarname } = env.options; + return `{ + const __tmp = await __env.run(${file}, + {...${dataVarname}${data ? `, ...${data}` : ""}}, + __file + ); + ${output} += ${env.compileFilters(tokens, "__tmp.content")}; + }`; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9wbHVnaW5zL2luY2x1ZGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFuYWx5emUgZnJvbSBcIi4uL3NyYy9qcy50c1wiO1xuaW1wb3J0IHR5cGUgeyBUb2tlbiB9IGZyb20gXCIuLi9zcmMvdG9rZW5pemVyLnRzXCI7XG5pbXBvcnQgdHlwZSB7IEVudmlyb25tZW50LCBQbHVnaW4gfSBmcm9tIFwiLi4vc3JjL2Vudmlyb25tZW50LnRzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpOiBQbHVnaW4ge1xuICByZXR1cm4gKGVudjogRW52aXJvbm1lbnQpID0+IHtcbiAgICBlbnYudGFncy5wdXNoKGluY2x1ZGVUYWcpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBpbmNsdWRlVGFnKFxuICBlbnY6IEVudmlyb25tZW50LFxuICBjb2RlOiBzdHJpbmcsXG4gIG91dHB1dDogc3RyaW5nLFxuICB0b2tlbnM6IFRva2VuW10sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIWNvZGUuc3RhcnRzV2l0aChcImluY2x1ZGUgXCIpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgdGFnQ29kZSA9IGNvZGUuc3Vic3RyaW5nKDcpLnRyaW0oKTtcbiAgbGV0IGluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIGFuYWx5emUodGFnQ29kZSwgKHR5cGUsIGkpID0+IHtcbiAgICBpZiAodHlwZSA9PT0gXCJvcGVuLWJyYWNrZXRcIikge1xuICAgICAgaW5kZXggPSBpIC0gMTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGZpbGUgPSBpbmRleCA9PT0gdW5kZWZpbmVkXG4gICAgPyB0YWdDb2RlLnRyaW0oKVxuICAgIDogdGFnQ29kZS5zbGljZSgwLCBpbmRleCkudHJpbSgpO1xuICBjb25zdCBkYXRhID0gaW5kZXggPT09IHVuZGVmaW5lZCA/IFwiXCIgOiB0YWdDb2RlLnNsaWNlKGluZGV4KS50cmltKCk7XG4gIGNvbnN0IHsgZGF0YVZhcm5hbWUgfSA9IGVudi5vcHRpb25zO1xuICByZXR1cm4gYHtcbiAgICBjb25zdCBfX3RtcCA9IGF3YWl0IF9fZW52LnJ1bigke2ZpbGV9LFxuICAgICAgey4uLiR7ZGF0YVZhcm5hbWV9JHtkYXRhID8gYCwgLi4uJHtkYXRhfWAgOiBcIlwifX0sXG4gICAgICBfX2ZpbGVcbiAgICApO1xuICAgICR7b3V0cHV0fSArPSAke2Vudi5jb21waWxlRmlsdGVycyh0b2tlbnMsIFwiX190bXAuY29udGVudFwiKX07XG4gIH1gO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sYUFBYSxlQUFlO0FBSW5DLGVBQWU7RUFDYixPQUFPLENBQUM7SUFDTixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7RUFDaEI7QUFDRjtBQUVBLFNBQVMsV0FDUCxHQUFnQixFQUNoQixJQUFZLEVBQ1osTUFBYyxFQUNkLE1BQWU7RUFFZixJQUFJLENBQUMsS0FBSyxVQUFVLENBQUMsYUFBYTtJQUNoQztFQUNGO0VBRUEsTUFBTSxVQUFVLEtBQUssU0FBUyxDQUFDLEdBQUcsSUFBSTtFQUN0QyxJQUFJLFFBQTRCO0VBQ2hDLFFBQVEsU0FBUyxDQUFDLE1BQU07SUFDdEIsSUFBSSxTQUFTLGdCQUFnQjtNQUMzQixRQUFRLElBQUk7TUFDWixPQUFPO0lBQ1Q7RUFDRjtFQUVBLE1BQU0sT0FBTyxVQUFVLFlBQ25CLFFBQVEsSUFBSSxLQUNaLFFBQVEsS0FBSyxDQUFDLEdBQUcsT0FBTyxJQUFJO0VBQ2hDLE1BQU0sT0FBTyxVQUFVLFlBQVksS0FBSyxRQUFRLEtBQUssQ0FBQyxPQUFPLElBQUk7RUFDakUsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksT0FBTztFQUNuQyxPQUFPLENBQUM7a0NBQ3dCLEVBQUUsS0FBSztVQUMvQixFQUFFLGNBQWMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsR0FBRzs7O0lBR2pELEVBQUUsT0FBTyxJQUFJLEVBQUUsSUFBSSxjQUFjLENBQUMsUUFBUSxpQkFBaUI7R0FDNUQsQ0FBQztBQUNKIn0= +// denoCacheMetadata=17965002445848566112,8970169969830990164
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/5f898e73824d4d9d5537fdd0382fb53ab3f27451cd351eb4ca9c5ef39294d020.js b/vendor/gen/https/deno.land/5f898e73824d4d9d5537fdd0382fb53ab3f27451cd351eb4ca9c5ef39294d020.js new file mode 100644 index 0000000..d0a0325 --- /dev/null +++ b/vendor/gen/https/deno.land/5f898e73824d4d9d5537fdd0382fb53ab3f27451cd351eb4ca9c5ef39294d020.js @@ -0,0 +1,10 @@ +/** Add a header to prevent CORS errors (used in development) */ export function noCors() { + return async (request, next)=>{ + const response = await next(request); + response.headers.set("access-control-allow-origin", "*"); + return response; + }; +} +export default noCors; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvbWlkZGxld2FyZXMvbm9fY29ycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE1pZGRsZXdhcmUgfSBmcm9tIFwiLi4vY29yZS9zZXJ2ZXIudHNcIjtcblxuLyoqIEFkZCBhIGhlYWRlciB0byBwcmV2ZW50IENPUlMgZXJyb3JzICh1c2VkIGluIGRldmVsb3BtZW50KSAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vQ29ycygpOiBNaWRkbGV3YXJlIHtcbiAgcmV0dXJuIGFzeW5jIChyZXF1ZXN0LCBuZXh0KSA9PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBuZXh0KHJlcXVlc3QpO1xuICAgIHJlc3BvbnNlLmhlYWRlcnMuc2V0KFwiYWNjZXNzLWNvbnRyb2wtYWxsb3ctb3JpZ2luXCIsIFwiKlwiKTtcblxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbm9Db3JzO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLDhEQUE4RCxHQUM5RCxPQUFPLFNBQVM7RUFDZCxPQUFPLE9BQU8sU0FBUztJQUNyQixNQUFNLFdBQVcsTUFBTSxLQUFLO0lBQzVCLFNBQVMsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQkFBK0I7SUFFcEQsT0FBTztFQUNUO0FBQ0Y7QUFFQSxlQUFlLE9BQU8ifQ== +// denoCacheMetadata=15615845805327988936,11140548136144068879
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/60080fb447981c47ec60891798c3c8b0b7d5e32272bf01020b18f565b5229795.js b/vendor/gen/https/deno.land/60080fb447981c47ec60891798c3c8b0b7d5e32272bf01020b18f565b5229795.js new file mode 100644 index 0000000..7500798 --- /dev/null +++ b/vendor/gen/https/deno.land/60080fb447981c47ec60891798c3c8b0b7d5e32272bf01020b18f565b5229795.js @@ -0,0 +1,233 @@ +import { tty } from "../ansi/tty.ts"; +import { parse } from "../keycode/key_code.ts"; +import { bold, brightBlue, dim, green, italic, red, stripColor } from "./deps.ts"; +import { Figures } from "./figures.ts"; +/** Generic prompt representation. */ export class GenericPrompt { + static injectedValue; + settings; + tty = tty; + indent; + cursor = { + x: 0, + y: 0 + }; + #value; + #lastError; + #isFirstRun = true; + #encoder = new TextEncoder(); + /** + * Inject prompt value. Can be used for unit tests or pre selections. + * @param value Input value. + */ static inject(value) { + GenericPrompt.injectedValue = value; + } + constructor(settings){ + this.settings = { + ...settings, + keys: { + submit: [ + "enter", + "return" + ], + ...settings.keys ?? {} + } + }; + this.indent = this.settings.indent ?? " "; + } + /** Execute the prompt and show cursor on end. */ async prompt() { + try { + return await this.#execute(); + } finally{ + this.tty.cursorShow(); + } + } + /** Clear prompt output. */ clear() { + this.tty.cursorLeft.eraseDown(); + } + /** Execute the prompt. */ #execute = async ()=>{ + // Throw errors on unit tests. + if (typeof GenericPrompt.injectedValue !== "undefined" && this.#lastError) { + throw new Error(this.error()); + } + await this.render(); + this.#lastError = undefined; + if (!await this.read()) { + return this.#execute(); + } + if (typeof this.#value === "undefined") { + throw new Error("internal error: failed to read value"); + } + this.clear(); + const successMessage = this.success(this.#value); + if (successMessage) { + console.log(successMessage); + } + GenericPrompt.injectedValue = undefined; + this.tty.cursorShow(); + return this.#value; + }; + /** Render prompt. */ async render() { + const result = await Promise.all([ + this.message(), + this.body?.(), + this.footer() + ]); + const content = result.filter(Boolean).join("\n"); + const lines = content.split("\n"); + const columns = getColumns(); + const linesCount = columns ? lines.reduce((prev, next)=>{ + const length = stripColor(next).length; + return prev + (length > columns ? Math.ceil(length / columns) : 1); + }, 0) : content.split("\n").length; + const y = linesCount - this.cursor.y - 1; + if (!this.#isFirstRun || this.#lastError) { + this.clear(); + } + this.#isFirstRun = false; + if (Deno.build.os === "windows") { + console.log(content); + this.tty.cursorUp(); + } else { + Deno.stdout.writeSync(this.#encoder.encode(content)); + } + if (y) { + this.tty.cursorUp(y); + } + this.tty.cursorTo(this.cursor.x); + } + /** Read user input from stdin, handle events and validate user input. */ async read() { + if (typeof GenericPrompt.injectedValue !== "undefined") { + const value = GenericPrompt.injectedValue; + await this.#validateValue(value); + } else { + const events = await this.#readKey(); + if (!events.length) { + return false; + } + for (const event of events){ + await this.handleEvent(event); + } + } + return typeof this.#value !== "undefined"; + } + submit() { + return this.#validateValue(this.getValue()); + } + message() { + return `${this.settings.indent}${this.settings.prefix}` + bold(this.settings.message) + this.defaults(); + } + defaults() { + let defaultMessage = ""; + if (typeof this.settings.default !== "undefined" && !this.settings.hideDefault) { + defaultMessage += dim(` (${this.format(this.settings.default)})`); + } + return defaultMessage; + } + /** Get prompt success message. */ success(value) { + return `${this.settings.indent}${this.settings.prefix}` + bold(this.settings.message) + this.defaults() + " " + this.settings.pointer + " " + green(this.format(value)); + } + footer() { + return this.error() ?? this.hint(); + } + error() { + return this.#lastError ? this.settings.indent + red(bold(`${Figures.CROSS} `) + this.#lastError) : undefined; + } + hint() { + return this.settings.hint ? this.settings.indent + italic(brightBlue(dim(`${Figures.POINTER} `) + this.settings.hint)) : undefined; + } + setErrorMessage(message) { + this.#lastError = message; + } + /** + * Handle user input event. + * @param event Key event. + */ async handleEvent(event) { + switch(true){ + case event.name === "c" && event.ctrl: + this.clear(); + this.tty.cursorShow(); + Deno.exit(130); + return; + case this.isKey(this.settings.keys, "submit", event): + await this.submit(); + break; + } + } + /** Read user input from stdin and pars ansi codes. */ #readKey = async ()=>{ + const data = await this.#readChar(); + return data.length ? parse(data) : []; + }; + /** Read user input from stdin. */ #readChar = async ()=>{ + const buffer = new Uint8Array(8); + const isTty = Deno.isatty(Deno.stdin.rid); + if (isTty) { + // cbreak is only supported on deno >= 1.6.0, suppress ts-error. + Deno.stdin.setRaw(true, { + cbreak: this.settings.cbreak === true + }); + } + const nread = await Deno.stdin.read(buffer); + if (isTty) { + Deno.stdin.setRaw(false); + } + if (nread === null) { + return buffer; + } + return buffer.subarray(0, nread); + }; + /** + * Map input value to output value. If a custom transform handler ist set, the + * custom handler will be executed, otherwise the default transform handler + * from the prompt will be executed. + * @param value The value to transform. + */ #transformValue = (value)=>{ + return this.settings.transform ? this.settings.transform(value) : this.transform(value); + }; + /** + * Validate input value. Set error message if validation fails and transform + * output value on success. + * If a default value is set, the default will be used as value without any + * validation. + * If a custom validation handler ist set, the custom handler will + * be executed, otherwise a prompt specific default validation handler will be + * executed. + * @param value The value to validate. + */ #validateValue = async (value)=>{ + if (!value && typeof this.settings.default !== "undefined") { + this.#value = this.settings.default; + return; + } + this.#value = undefined; + this.#lastError = undefined; + const validation = await (this.settings.validate ? this.settings.validate(value) : this.validate(value)); + if (validation === false) { + this.#lastError = `Invalid answer.`; + } else if (typeof validation === "string") { + this.#lastError = validation; + } else { + this.#value = this.#transformValue(value); + } + }; + /** + * Check if key event has given name or sequence. + * @param keys Key map. + * @param name Key name. + * @param event Key event. + */ isKey(keys, name, event) { + // deno-lint-ignore no-explicit-any + const keyNames = keys?.[name]; + return typeof keyNames !== "undefined" && (typeof event.name !== "undefined" && keyNames.indexOf(event.name) !== -1 || typeof event.sequence !== "undefined" && keyNames.indexOf(event.sequence) !== -1); + } +} +function getColumns() { + try { + // Catch error in none tty mode: Inappropriate ioctl for device (os error 25) + // And keep backwards compatibility for deno < 1.27.0. + // deno-lint-ignore no-explicit-any + return Deno.consoleSize(Deno.stdout.rid).columns; + } catch (_error) { + return null; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvcHJvbXB0L19nZW5lcmljX3Byb21wdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEN1cnNvciB9IGZyb20gXCIuLi9hbnNpL2N1cnNvcl9wb3NpdGlvbi50c1wiO1xuaW1wb3J0IHsgdHR5IH0gZnJvbSBcIi4uL2Fuc2kvdHR5LnRzXCI7XG5pbXBvcnQgeyBLZXlDb2RlLCBwYXJzZSB9IGZyb20gXCIuLi9rZXljb2RlL2tleV9jb2RlLnRzXCI7XG5pbXBvcnQge1xuICBib2xkLFxuICBicmlnaHRCbHVlLFxuICBkaW0sXG4gIGdyZWVuLFxuICBpdGFsaWMsXG4gIHJlZCxcbiAgc3RyaXBDb2xvcixcbn0gZnJvbSBcIi4vZGVwcy50c1wiO1xuaW1wb3J0IHsgRmlndXJlcyB9IGZyb20gXCIuL2ZpZ3VyZXMudHNcIjtcblxuLyoqIFByb21wdCB2YWxpZGF0aW9uIHJldHVybiB0YXBlLiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGVSZXN1bHQgPSBzdHJpbmcgfCBib29sZWFuIHwgUHJvbWlzZTxzdHJpbmcgfCBib29sZWFuPjtcblxuLyoqIElucHV0IGtleXMgb3B0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJpY1Byb21wdEtleXMge1xuICBzdWJtaXQ/OiBBcnJheTxzdHJpbmc+O1xufVxuXG4vKiogR2VuZXJpYyBwcm9tcHQgb3B0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJpY1Byb21wdE9wdGlvbnM8VFZhbHVlLCBUUmF3VmFsdWU+IHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBkZWZhdWx0PzogVFZhbHVlO1xuICBoaWRlRGVmYXVsdD86IGJvb2xlYW47XG4gIHZhbGlkYXRlPzogKHZhbHVlOiBUUmF3VmFsdWUpID0+IFZhbGlkYXRlUmVzdWx0O1xuICB0cmFuc2Zvcm0/OiAodmFsdWU6IFRSYXdWYWx1ZSkgPT4gVFZhbHVlIHwgdW5kZWZpbmVkO1xuICBoaW50Pzogc3RyaW5nO1xuICBwb2ludGVyPzogc3RyaW5nO1xuICBpbmRlbnQ/OiBzdHJpbmc7XG4gIGtleXM/OiBHZW5lcmljUHJvbXB0S2V5cztcbiAgY2JyZWFrPzogYm9vbGVhbjtcbiAgcHJlZml4Pzogc3RyaW5nO1xufVxuXG4vKiogR2VuZXJpYyBwcm9tcHQgc2V0dGluZ3MuICovXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyaWNQcm9tcHRTZXR0aW5nczxUVmFsdWUsIFRSYXdWYWx1ZT5cbiAgZXh0ZW5kcyBHZW5lcmljUHJvbXB0T3B0aW9uczxUVmFsdWUsIFRSYXdWYWx1ZT4ge1xuICBwb2ludGVyOiBzdHJpbmc7XG4gIGluZGVudDogc3RyaW5nO1xuICBwcmVmaXg6IHN0cmluZztcbn1cblxuLyoqIFN0YXRpYyBnZW5lcmljIHByb21wdCBpbnRlcmZhY2UuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRpY0dlbmVyaWNQcm9tcHQ8XG4gIFRWYWx1ZSxcbiAgVFJhd1ZhbHVlLFxuICBUT3B0aW9ucyBleHRlbmRzIEdlbmVyaWNQcm9tcHRPcHRpb25zPFRWYWx1ZSwgVFJhd1ZhbHVlPixcbiAgVFNldHRpbmdzIGV4dGVuZHMgR2VuZXJpY1Byb21wdFNldHRpbmdzPFRWYWx1ZSwgVFJhd1ZhbHVlPixcbiAgVFByb21wdCBleHRlbmRzIEdlbmVyaWNQcm9tcHQ8VFZhbHVlLCBUUmF3VmFsdWUsIFRTZXR0aW5ncz4sXG4+IHtcbiAgaW5qZWN0Pyh2YWx1ZTogVFZhbHVlKTogdm9pZDtcblxuICBwcm9tcHQob3B0aW9uczogVE9wdGlvbnMpOiBQcm9taXNlPFRWYWx1ZT47XG59XG5cbi8qKiBHZW5lcmljIHByb21wdCByZXByZXNlbnRhdGlvbi4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHZW5lcmljUHJvbXB0PFxuICBUVmFsdWUsXG4gIFRSYXdWYWx1ZSxcbiAgVFNldHRpbmdzIGV4dGVuZHMgR2VuZXJpY1Byb21wdFNldHRpbmdzPFRWYWx1ZSwgVFJhd1ZhbHVlPixcbj4ge1xuICBwcm90ZWN0ZWQgc3RhdGljIGluamVjdGVkVmFsdWU6IHVua25vd24gfCB1bmRlZmluZWQ7XG4gIHByb3RlY3RlZCByZWFkb25seSBzZXR0aW5nczogVFNldHRpbmdzO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHR5ID0gdHR5O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW5kZW50OiBzdHJpbmc7XG4gIHByb3RlY3RlZCByZWFkb25seSBjdXJzb3I6IEN1cnNvciA9IHtcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gIH07XG4gICN2YWx1ZTogVFZhbHVlIHwgdW5kZWZpbmVkO1xuICAjbGFzdEVycm9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNpc0ZpcnN0UnVuID0gdHJ1ZTtcbiAgI2VuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcblxuICAvKipcbiAgICogSW5qZWN0IHByb21wdCB2YWx1ZS4gQ2FuIGJlIHVzZWQgZm9yIHVuaXQgdGVzdHMgb3IgcHJlIHNlbGVjdGlvbnMuXG4gICAqIEBwYXJhbSB2YWx1ZSBJbnB1dCB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaW5qZWN0KHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gICAgR2VuZXJpY1Byb21wdC5pbmplY3RlZFZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3Ioc2V0dGluZ3M6IFRTZXR0aW5ncykge1xuICAgIHRoaXMuc2V0dGluZ3MgPSB7XG4gICAgICAuLi5zZXR0aW5ncyxcbiAgICAgIGtleXM6IHtcbiAgICAgICAgc3VibWl0OiBbXCJlbnRlclwiLCBcInJldHVyblwiXSxcbiAgICAgICAgLi4uKHNldHRpbmdzLmtleXMgPz8ge30pLFxuICAgICAgfSxcbiAgICB9O1xuICAgIHRoaXMuaW5kZW50ID0gdGhpcy5zZXR0aW5ncy5pbmRlbnQgPz8gXCIgXCI7XG4gIH1cblxuICAvKiogRXhlY3V0ZSB0aGUgcHJvbXB0IGFuZCBzaG93IGN1cnNvciBvbiBlbmQuICovXG4gIHB1YmxpYyBhc3luYyBwcm9tcHQoKTogUHJvbWlzZTxUVmFsdWU+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuI2V4ZWN1dGUoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy50dHkuY3Vyc29yU2hvdygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDbGVhciBwcm9tcHQgb3V0cHV0LiAqL1xuICBwcm90ZWN0ZWQgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy50dHkuY3Vyc29yTGVmdC5lcmFzZURvd24oKTtcbiAgfVxuXG4gIC8qKiBFeGVjdXRlIHRoZSBwcm9tcHQuICovXG4gICNleGVjdXRlID0gYXN5bmMgKCk6IFByb21pc2U8VFZhbHVlPiA9PiB7XG4gICAgLy8gVGhyb3cgZXJyb3JzIG9uIHVuaXQgdGVzdHMuXG4gICAgaWYgKHR5cGVvZiBHZW5lcmljUHJvbXB0LmluamVjdGVkVmFsdWUgIT09IFwidW5kZWZpbmVkXCIgJiYgdGhpcy4jbGFzdEVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5lcnJvcigpKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnJlbmRlcigpO1xuICAgIHRoaXMuI2xhc3RFcnJvciA9IHVuZGVmaW5lZDtcblxuICAgIGlmICghYXdhaXQgdGhpcy5yZWFkKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLiNleGVjdXRlKCk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0aGlzLiN2YWx1ZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW50ZXJuYWwgZXJyb3I6IGZhaWxlZCB0byByZWFkIHZhbHVlXCIpO1xuICAgIH1cblxuICAgIHRoaXMuY2xlYXIoKTtcbiAgICBjb25zdCBzdWNjZXNzTWVzc2FnZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5zdWNjZXNzKFxuICAgICAgdGhpcy4jdmFsdWUsXG4gICAgKTtcbiAgICBpZiAoc3VjY2Vzc01lc3NhZ2UpIHtcbiAgICAgIGNvbnNvbGUubG9nKHN1Y2Nlc3NNZXNzYWdlKTtcbiAgICB9XG5cbiAgICBHZW5lcmljUHJvbXB0LmluamVjdGVkVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50dHkuY3Vyc29yU2hvdygpO1xuXG4gICAgcmV0dXJuIHRoaXMuI3ZhbHVlO1xuICB9O1xuXG4gIC8qKiBSZW5kZXIgcHJvbXB0LiAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgcmVuZGVyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlc3VsdDogW3N0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkLCBzdHJpbmcgfCB1bmRlZmluZWRdID1cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgdGhpcy5tZXNzYWdlKCksXG4gICAgICAgIHRoaXMuYm9keT8uKCksXG4gICAgICAgIHRoaXMuZm9vdGVyKCksXG4gICAgICBdKTtcblxuICAgIGNvbnN0IGNvbnRlbnQ6IHN0cmluZyA9IHJlc3VsdC5maWx0ZXIoQm9vbGVhbikuam9pbihcIlxcblwiKTtcbiAgICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoXCJcXG5cIik7XG5cbiAgICBjb25zdCBjb2x1bW5zID0gZ2V0Q29sdW1ucygpO1xuICAgIGNvbnN0IGxpbmVzQ291bnQ6IG51bWJlciA9IGNvbHVtbnNcbiAgICAgID8gbGluZXMucmVkdWNlKChwcmV2LCBuZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IHN0cmlwQ29sb3IobmV4dCkubGVuZ3RoO1xuICAgICAgICByZXR1cm4gcHJldiArIChsZW5ndGggPiBjb2x1bW5zID8gTWF0aC5jZWlsKGxlbmd0aCAvIGNvbHVtbnMpIDogMSk7XG4gICAgICB9LCAwKVxuICAgICAgOiBjb250ZW50LnNwbGl0KFwiXFxuXCIpLmxlbmd0aDtcblxuICAgIGNvbnN0IHk6IG51bWJlciA9IGxpbmVzQ291bnQgLSB0aGlzLmN1cnNvci55IC0gMTtcblxuICAgIGlmICghdGhpcy4jaXNGaXJzdFJ1biB8fCB0aGlzLiNsYXN0RXJyb3IpIHtcbiAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICB9XG4gICAgdGhpcy4jaXNGaXJzdFJ1biA9IGZhbHNlO1xuXG4gICAgaWYgKERlbm8uYnVpbGQub3MgPT09IFwid2luZG93c1wiKSB7XG4gICAgICBjb25zb2xlLmxvZyhjb250ZW50KTtcbiAgICAgIHRoaXMudHR5LmN1cnNvclVwKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIERlbm8uc3Rkb3V0LndyaXRlU3luYyh0aGlzLiNlbmNvZGVyLmVuY29kZShjb250ZW50KSk7XG4gICAgfVxuXG4gICAgaWYgKHkpIHtcbiAgICAgIHRoaXMudHR5LmN1cnNvclVwKHkpO1xuICAgIH1cbiAgICB0aGlzLnR0eS5jdXJzb3JUbyh0aGlzLmN1cnNvci54KTtcbiAgfVxuXG4gIC8qKiBSZWFkIHVzZXIgaW5wdXQgZnJvbSBzdGRpbiwgaGFuZGxlIGV2ZW50cyBhbmQgdmFsaWRhdGUgdXNlciBpbnB1dC4gKi9cbiAgcHJvdGVjdGVkIGFzeW5jIHJlYWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHR5cGVvZiBHZW5lcmljUHJvbXB0LmluamVjdGVkVmFsdWUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGNvbnN0IHZhbHVlOiBUUmF3VmFsdWUgPSBHZW5lcmljUHJvbXB0LmluamVjdGVkVmFsdWUgYXMgVFJhd1ZhbHVlO1xuICAgICAgYXdhaXQgdGhpcy4jdmFsaWRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGV2ZW50czogQXJyYXk8S2V5Q29kZT4gPSBhd2FpdCB0aGlzLiNyZWFkS2V5KCk7XG5cbiAgICAgIGlmICghZXZlbnRzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgZXZlbnQgb2YgZXZlbnRzKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlRXZlbnQoZXZlbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0eXBlb2YgdGhpcy4jdmFsdWUgIT09IFwidW5kZWZpbmVkXCI7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3VibWl0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLiN2YWxpZGF0ZVZhbHVlKHRoaXMuZ2V0VmFsdWUoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnNldHRpbmdzLmluZGVudH0ke3RoaXMuc2V0dGluZ3MucHJlZml4fWAgK1xuICAgICAgYm9sZCh0aGlzLnNldHRpbmdzLm1lc3NhZ2UpICsgdGhpcy5kZWZhdWx0cygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRlZmF1bHRzKCk6IHN0cmluZyB7XG4gICAgbGV0IGRlZmF1bHRNZXNzYWdlID0gXCJcIjtcbiAgICBpZiAoXG4gICAgICB0eXBlb2YgdGhpcy5zZXR0aW5ncy5kZWZhdWx0ICE9PSBcInVuZGVmaW5lZFwiICYmICF0aGlzLnNldHRpbmdzLmhpZGVEZWZhdWx0XG4gICAgKSB7XG4gICAgICBkZWZhdWx0TWVzc2FnZSArPSBkaW0oYCAoJHt0aGlzLmZvcm1hdCh0aGlzLnNldHRpbmdzLmRlZmF1bHQpfSlgKTtcbiAgICB9XG4gICAgcmV0dXJuIGRlZmF1bHRNZXNzYWdlO1xuICB9XG5cbiAgLyoqIEdldCBwcm9tcHQgc3VjY2VzcyBtZXNzYWdlLiAqL1xuICBwcm90ZWN0ZWQgc3VjY2Vzcyh2YWx1ZTogVFZhbHVlKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zZXR0aW5ncy5pbmRlbnR9JHt0aGlzLnNldHRpbmdzLnByZWZpeH1gICtcbiAgICAgIGJvbGQodGhpcy5zZXR0aW5ncy5tZXNzYWdlKSArIHRoaXMuZGVmYXVsdHMoKSArXG4gICAgICBcIiBcIiArIHRoaXMuc2V0dGluZ3MucG9pbnRlciArXG4gICAgICBcIiBcIiArIGdyZWVuKHRoaXMuZm9ybWF0KHZhbHVlKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYm9keT8oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+O1xuXG4gIHByb3RlY3RlZCBmb290ZXIoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvcigpID8/IHRoaXMuaGludCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGVycm9yKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI2xhc3RFcnJvclxuICAgICAgPyB0aGlzLnNldHRpbmdzLmluZGVudCArIHJlZChib2xkKGAke0ZpZ3VyZXMuQ1JPU1N9IGApICsgdGhpcy4jbGFzdEVycm9yKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGludCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLmhpbnRcbiAgICAgID8gdGhpcy5zZXR0aW5ncy5pbmRlbnQgK1xuICAgICAgICBpdGFsaWMoYnJpZ2h0Qmx1ZShkaW0oYCR7RmlndXJlcy5QT0lOVEVSfSBgKSArIHRoaXMuc2V0dGluZ3MuaGludCkpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRFcnJvck1lc3NhZ2UobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgdGhpcy4jbGFzdEVycm9yID0gbWVzc2FnZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdXNlciBpbnB1dCBldmVudC5cbiAgICogQHBhcmFtIGV2ZW50IEtleSBldmVudC5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVFdmVudChldmVudDogS2V5Q29kZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgY2FzZSBldmVudC5uYW1lID09PSBcImNcIiAmJiBldmVudC5jdHJsOlxuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMudHR5LmN1cnNvclNob3coKTtcbiAgICAgICAgRGVuby5leGl0KDEzMCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgdGhpcy5pc0tleSh0aGlzLnNldHRpbmdzLmtleXMsIFwic3VibWl0XCIsIGV2ZW50KTpcbiAgICAgICAgYXdhaXQgdGhpcy5zdWJtaXQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1hcCBpbnB1dCB2YWx1ZSB0byBvdXRwdXQgdmFsdWUuXG4gICAqIEBwYXJhbSB2YWx1ZSBJbnB1dCB2YWx1ZS5cbiAgICogQHJldHVybiBPdXRwdXQgdmFsdWUuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgdHJhbnNmb3JtKHZhbHVlOiBUUmF3VmFsdWUpOiBUVmFsdWUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGlucHV0IHZhbHVlLlxuICAgKiBAcGFyYW0gdmFsdWUgVXNlciBpbnB1dCB2YWx1ZS5cbiAgICogQHJldHVybiBUcnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9yIGVycm9yIG1lc3NhZ2Ugb24gZXJyb3IuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgdmFsaWRhdGUodmFsdWU6IFRSYXdWYWx1ZSk6IFZhbGlkYXRlUmVzdWx0O1xuXG4gIC8qKlxuICAgKiBGb3JtYXQgb3V0cHV0IHZhbHVlLlxuICAgKiBAcGFyYW0gdmFsdWUgT3V0cHV0IHZhbHVlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGZvcm1hdCh2YWx1ZTogVFZhbHVlKTogc3RyaW5nO1xuXG4gIC8qKiBHZXQgaW5wdXQgdmFsdWUuICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRWYWx1ZSgpOiBUUmF3VmFsdWU7XG5cbiAgLyoqIFJlYWQgdXNlciBpbnB1dCBmcm9tIHN0ZGluIGFuZCBwYXJzIGFuc2kgY29kZXMuICovXG4gICNyZWFkS2V5ID0gYXN5bmMgKCk6IFByb21pc2U8QXJyYXk8S2V5Q29kZT4+ID0+IHtcbiAgICBjb25zdCBkYXRhOiBVaW50OEFycmF5ID0gYXdhaXQgdGhpcy4jcmVhZENoYXIoKTtcblxuICAgIHJldHVybiBkYXRhLmxlbmd0aCA/IHBhcnNlKGRhdGEpIDogW107XG4gIH07XG5cbiAgLyoqIFJlYWQgdXNlciBpbnB1dCBmcm9tIHN0ZGluLiAqL1xuICAjcmVhZENoYXIgPSBhc3luYyAoKTogUHJvbWlzZTxVaW50OEFycmF5PiA9PiB7XG4gICAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoOCk7XG4gICAgY29uc3QgaXNUdHkgPSBEZW5vLmlzYXR0eShEZW5vLnN0ZGluLnJpZCk7XG5cbiAgICBpZiAoaXNUdHkpIHtcbiAgICAgIC8vIGNicmVhayBpcyBvbmx5IHN1cHBvcnRlZCBvbiBkZW5vID49IDEuNi4wLCBzdXBwcmVzcyB0cy1lcnJvci5cbiAgICAgIChEZW5vLnN0ZGluLnNldFJhdyBhcyBzZXRSYXcpKFxuICAgICAgICB0cnVlLFxuICAgICAgICB7IGNicmVhazogdGhpcy5zZXR0aW5ncy5jYnJlYWsgPT09IHRydWUgfSxcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IG5yZWFkOiBudW1iZXIgfCBudWxsID0gYXdhaXQgRGVuby5zdGRpbi5yZWFkKGJ1ZmZlcik7XG5cbiAgICBpZiAoaXNUdHkpIHtcbiAgICAgIERlbm8uc3RkaW4uc2V0UmF3KGZhbHNlKTtcbiAgICB9XG5cbiAgICBpZiAobnJlYWQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBidWZmZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1ZmZlci5zdWJhcnJheSgwLCBucmVhZCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIE1hcCBpbnB1dCB2YWx1ZSB0byBvdXRwdXQgdmFsdWUuIElmIGEgY3VzdG9tIHRyYW5zZm9ybSBoYW5kbGVyIGlzdCBzZXQsIHRoZVxuICAgKiBjdXN0b20gaGFuZGxlciB3aWxsIGJlIGV4ZWN1dGVkLCBvdGhlcndpc2UgdGhlIGRlZmF1bHQgdHJhbnNmb3JtIGhhbmRsZXJcbiAgICogZnJvbSB0aGUgcHJvbXB0IHdpbGwgYmUgZXhlY3V0ZWQuXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gdHJhbnNmb3JtLlxuICAgKi9cbiAgI3RyYW5zZm9ybVZhbHVlID0gKHZhbHVlOiBUUmF3VmFsdWUpOiBUVmFsdWUgfCB1bmRlZmluZWQgPT4ge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLnRyYW5zZm9ybVxuICAgICAgPyB0aGlzLnNldHRpbmdzLnRyYW5zZm9ybSh2YWx1ZSlcbiAgICAgIDogdGhpcy50cmFuc2Zvcm0odmFsdWUpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBpbnB1dCB2YWx1ZS4gU2V0IGVycm9yIG1lc3NhZ2UgaWYgdmFsaWRhdGlvbiBmYWlscyBhbmQgdHJhbnNmb3JtXG4gICAqIG91dHB1dCB2YWx1ZSBvbiBzdWNjZXNzLlxuICAgKiBJZiBhIGRlZmF1bHQgdmFsdWUgaXMgc2V0LCB0aGUgZGVmYXVsdCB3aWxsIGJlIHVzZWQgYXMgdmFsdWUgd2l0aG91dCBhbnlcbiAgICogdmFsaWRhdGlvbi5cbiAgICogSWYgYSBjdXN0b20gdmFsaWRhdGlvbiBoYW5kbGVyIGlzdCBzZXQsIHRoZSBjdXN0b20gaGFuZGxlciB3aWxsXG4gICAqIGJlIGV4ZWN1dGVkLCBvdGhlcndpc2UgYSBwcm9tcHQgc3BlY2lmaWMgZGVmYXVsdCB2YWxpZGF0aW9uIGhhbmRsZXIgd2lsbCBiZVxuICAgKiBleGVjdXRlZC5cbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byB2YWxpZGF0ZS5cbiAgICovXG4gICN2YWxpZGF0ZVZhbHVlID0gYXN5bmMgKHZhbHVlOiBUUmF3VmFsdWUpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBpZiAoIXZhbHVlICYmIHR5cGVvZiB0aGlzLnNldHRpbmdzLmRlZmF1bHQgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHRoaXMuI3ZhbHVlID0gdGhpcy5zZXR0aW5ncy5kZWZhdWx0O1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuI3ZhbHVlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuI2xhc3RFcnJvciA9IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHZhbGlkYXRpb24gPVxuICAgICAgYXdhaXQgKHRoaXMuc2V0dGluZ3MudmFsaWRhdGVcbiAgICAgICAgPyB0aGlzLnNldHRpbmdzLnZhbGlkYXRlKHZhbHVlKVxuICAgICAgICA6IHRoaXMudmFsaWRhdGUodmFsdWUpKTtcblxuICAgIGlmICh2YWxpZGF0aW9uID09PSBmYWxzZSkge1xuICAgICAgdGhpcy4jbGFzdEVycm9yID0gYEludmFsaWQgYW5zd2VyLmA7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsaWRhdGlvbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgdGhpcy4jbGFzdEVycm9yID0gdmFsaWRhdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4jdmFsdWUgPSB0aGlzLiN0cmFuc2Zvcm1WYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBrZXkgZXZlbnQgaGFzIGdpdmVuIG5hbWUgb3Igc2VxdWVuY2UuXG4gICAqIEBwYXJhbSBrZXlzICBLZXkgbWFwLlxuICAgKiBAcGFyYW0gbmFtZSAgS2V5IG5hbWUuXG4gICAqIEBwYXJhbSBldmVudCBLZXkgZXZlbnQuXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNLZXk8VEtleSBleHRlbmRzIHVua25vd24sIFROYW1lIGV4dGVuZHMga2V5b2YgVEtleT4oXG4gICAga2V5czogVEtleSB8IHVuZGVmaW5lZCxcbiAgICBuYW1lOiBUTmFtZSxcbiAgICBldmVudDogS2V5Q29kZSxcbiAgKTogYm9vbGVhbiB7XG4gICAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBrZXlOYW1lczogQXJyYXk8dW5rbm93bj4gfCB1bmRlZmluZWQgPSBrZXlzPy5bbmFtZV0gYXMgYW55O1xuICAgIHJldHVybiB0eXBlb2Yga2V5TmFtZXMgIT09IFwidW5kZWZpbmVkXCIgJiYgKFxuICAgICAgKHR5cGVvZiBldmVudC5uYW1lICE9PSBcInVuZGVmaW5lZFwiICYmXG4gICAgICAgIGtleU5hbWVzLmluZGV4T2YoZXZlbnQubmFtZSkgIT09IC0xKSB8fFxuICAgICAgKHR5cGVvZiBldmVudC5zZXF1ZW5jZSAhPT0gXCJ1bmRlZmluZWRcIiAmJlxuICAgICAgICBrZXlOYW1lcy5pbmRleE9mKGV2ZW50LnNlcXVlbmNlKSAhPT0gLTEpXG4gICAgKTtcbiAgfVxufVxuXG50eXBlIHNldFJhdyA9IChcbiAgbW9kZTogYm9vbGVhbixcbiAgb3B0aW9ucz86IHsgY2JyZWFrPzogYm9vbGVhbiB9LFxuKSA9PiB2b2lkO1xuXG5mdW5jdGlvbiBnZXRDb2x1bW5zKCk6IG51bWJlciB8IG51bGwge1xuICB0cnkge1xuICAgIC8vIENhdGNoIGVycm9yIGluIG5vbmUgdHR5IG1vZGU6IEluYXBwcm9wcmlhdGUgaW9jdGwgZm9yIGRldmljZSAob3MgZXJyb3IgMjUpXG4gICAgLy8gQW5kIGtlZXAgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgZm9yIGRlbm8gPCAxLjI3LjAuXG4gICAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgICByZXR1cm4gKERlbm8gYXMgYW55KS5jb25zb2xlU2l6ZShEZW5vLnN0ZG91dC5yaWQpLmNvbHVtbnM7XG4gIH0gY2F0Y2ggKF9lcnJvcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBUyxHQUFHLFFBQVEsaUJBQWlCO0FBQ3JDLFNBQWtCLEtBQUssUUFBUSx5QkFBeUI7QUFDeEQsU0FDRSxJQUFJLEVBQ0osVUFBVSxFQUNWLEdBQUcsRUFDSCxLQUFLLEVBQ0wsTUFBTSxFQUNOLEdBQUcsRUFDSCxVQUFVLFFBQ0wsWUFBWTtBQUNuQixTQUFTLE9BQU8sUUFBUSxlQUFlO0FBOEN2QyxtQ0FBbUMsR0FDbkMsT0FBTyxNQUFlO0VBS3BCLE9BQWlCLGNBQW1DO0VBQ2pDLFNBQW9CO0VBQ3BCLE1BQU0sSUFBSTtFQUNW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 +// denoCacheMetadata=1805170670186394464,16769360247032719706
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/61954d66cc5603c402b5f92094c57fbed77a7a37baa05ffdcc3602f5c801d499.js b/vendor/gen/https/deno.land/61954d66cc5603c402b5f92094c57fbed77a7a37baa05ffdcc3602f5c801d499.js new file mode 100644 index 0000000..94b658b --- /dev/null +++ b/vendor/gen/https/deno.land/61954d66cc5603c402b5f92094c57fbed77a7a37baa05ffdcc3602f5c801d499.js @@ -0,0 +1,10 @@ +export * from "./ansi/mod.ts"; +export * from "./command/mod.ts"; +export { boolean, number, // Already exported by command module. +// ValidationError, +OptionType, parseFlags, string } from "./flags/mod.ts"; +export * from "./keycode/mod.ts"; +export * from "./prompt/mod.ts"; +export * from "./table/mod.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvbW9kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2Fuc2kvbW9kLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21tYW5kL21vZC50c1wiO1xuZXhwb3J0IHtcbiAgYm9vbGVhbixcbiAgbnVtYmVyLFxuICAvLyBBbHJlYWR5IGV4cG9ydGVkIGJ5IGNvbW1hbmQgbW9kdWxlLlxuICAvLyBWYWxpZGF0aW9uRXJyb3IsXG4gIE9wdGlvblR5cGUsXG4gIHBhcnNlRmxhZ3MsXG4gIHN0cmluZyxcbn0gZnJvbSBcIi4vZmxhZ3MvbW9kLnRzXCI7XG5leHBvcnQgdHlwZSB7XG4gIEFyZ3VtZW50T3B0aW9ucyxcbiAgQXJndW1lbnRWYWx1ZSxcbiAgRGVmYXVsdFZhbHVlLFxuICBGbGFnT3B0aW9ucyxcbiAgUGFyc2VGbGFnc0NvbnRleHQsXG4gIFBhcnNlRmxhZ3NPcHRpb25zLFxuICBUeXBlSGFuZGxlcixcbiAgVmFsdWVIYW5kbGVyLFxufSBmcm9tIFwiLi9mbGFncy9tb2QudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2tleWNvZGUvbW9kLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wcm9tcHQvbW9kLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90YWJsZS9tb2QudHNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQjtBQUM5QixjQUFjLG1CQUFtQjtBQUNqQyxTQUNFLE9BQU8sRUFDUCxNQUFNLEVBQ04sc0NBQXNDO0FBQ3RDLG1CQUFtQjtBQUNuQixVQUFVLEVBQ1YsVUFBVSxFQUNWLE1BQU0sUUFDRCxpQkFBaUI7QUFXeEIsY0FBYyxtQkFBbUI7QUFDakMsY0FBYyxrQkFBa0I7QUFDaEMsY0FBYyxpQkFBaUIifQ== +// denoCacheMetadata=18142889848861094792,2045106735280524748
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/624eb29f6fb28d3d56325f2c07de764adfbaaf9ff862a2cddea6301d71eaea50.js b/vendor/gen/https/deno.land/624eb29f6fb28d3d56325f2c07de764adfbaaf9ff862a2cddea6301d71eaea50.js new file mode 100644 index 0000000..6ac8140 --- /dev/null +++ b/vendor/gen/https/deno.land/624eb29f6fb28d3d56325f2c07de764adfbaaf9ff862a2cddea6301d71eaea50.js @@ -0,0 +1,19 @@ +// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +export const osType = (()=>{ + // deno-lint-ignore no-explicit-any + const { Deno } = globalThis; + if (typeof Deno?.build?.os === "string") { + return Deno.build.os; + } + // deno-lint-ignore no-explicit-any + const { navigator } = globalThis; + if (navigator?.appVersion?.includes?.("Win")) { + return "windows"; + } + return "linux"; +})(); +export const isWindows = osType === "windows"; +export const isLinux = osType === "linux"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE3MC4wL191dGlsL29zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjIgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmV4cG9ydCB0eXBlIE9TVHlwZSA9IFwid2luZG93c1wiIHwgXCJsaW51eFwiIHwgXCJkYXJ3aW5cIiB8IFwiZnJlZWJzZFwiO1xuXG5leHBvcnQgY29uc3Qgb3NUeXBlOiBPU1R5cGUgPSAoKCkgPT4ge1xuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuICBjb25zdCB7IERlbm8gfSA9IGdsb2JhbFRoaXMgYXMgYW55O1xuICBpZiAodHlwZW9mIERlbm8/LmJ1aWxkPy5vcyA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBEZW5vLmJ1aWxkLm9zO1xuICB9XG5cbiAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgY29uc3QgeyBuYXZpZ2F0b3IgfSA9IGdsb2JhbFRoaXMgYXMgYW55O1xuICBpZiAobmF2aWdhdG9yPy5hcHBWZXJzaW9uPy5pbmNsdWRlcz8uKFwiV2luXCIpKSB7XG4gICAgcmV0dXJuIFwid2luZG93c1wiO1xuICB9XG5cbiAgcmV0dXJuIFwibGludXhcIjtcbn0pKCk7XG5cbmV4cG9ydCBjb25zdCBpc1dpbmRvd3MgPSBvc1R5cGUgPT09IFwid2luZG93c1wiO1xuZXhwb3J0IGNvbnN0IGlzTGludXggPSBvc1R5cGUgPT09IFwibGludXhcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBSXJDLE9BQU8sTUFBTSxTQUFpQixDQUFDO0VBQzdCLG1DQUFtQztFQUNuQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUc7RUFDakIsSUFBSSxPQUFPLE1BQU0sT0FBTyxPQUFPLFVBQVU7SUFDdkMsT0FBTyxLQUFLLEtBQUssQ0FBQyxFQUFFO0VBQ3RCO0VBRUEsbUNBQW1DO0VBQ25DLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRztFQUN0QixJQUFJLFdBQVcsWUFBWSxXQUFXLFFBQVE7SUFDNUMsT0FBTztFQUNUO0VBRUEsT0FBTztBQUNULENBQUMsSUFBSTtBQUVMLE9BQU8sTUFBTSxZQUFZLFdBQVcsVUFBVTtBQUM5QyxPQUFPLE1BQU0sVUFBVSxXQUFXLFFBQVEifQ== +// denoCacheMetadata=10970489789479612928,11783395380312678503
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/631e349030535d78d335e67712cf905a87c75b9f80e8bc940e2a3276eb05c770.js b/vendor/gen/https/deno.land/631e349030535d78d335e67712cf905a87c75b9f80e8bc940e2a3276eb05c770.js new file mode 100644 index 0000000..8f7f6e1 --- /dev/null +++ b/vendor/gen/https/deno.land/631e349030535d78d335e67712cf905a87c75b9f80e8bc940e2a3276eb05c770.js @@ -0,0 +1,73 @@ +import * as ansiEscapes from "./ansi_escapes.ts"; +/** + * Chainable ansi escape sequences. + * If invoked as method, a new Ansi instance will be returned. + * ``` + * await Deno.stdout.write( + * new TextEncoder().encode( + * ansi.cursorTo(0, 0).eraseScreen(), + * ), + * ); + * ``` + * Or shorter: + * ``` + * await Deno.stdout.write( + * ansi.cursorTo(0, 0).eraseScreen.toBuffer(), + * ); + * ``` + */ export const ansi = factory(); +function factory() { + let result = []; + let stack = []; + const ansi = function(...args) { + if (this) { + if (args.length) { + update(args); + return this; + } + return this.toString(); + } + return factory(); + }; + ansi.text = function(text) { + stack.push([ + text, + [] + ]); + return this; + }; + ansi.toString = function() { + update(); + const str = result.join(""); + result = []; + return str; + }; + ansi.toBuffer = function() { + return new TextEncoder().encode(this.toString()); + }; + const methodList = Object.entries(ansiEscapes); + for (const [name, method] of methodList){ + Object.defineProperty(ansi, name, { + get () { + stack.push([ + method, + [] + ]); + return this; + } + }); + } + return ansi; + function update(args) { + if (!stack.length) { + return; + } + if (args) { + stack[stack.length - 1][1] = args; + } + result.push(...stack.map(([prop, args])=>typeof prop === "string" ? prop : prop.call(ansi, ...args))); + stack = []; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvYW5zaS9hbnNpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFuc2lFc2NhcGVzIGZyb20gXCIuL2Fuc2lfZXNjYXBlcy50c1wiO1xuaW1wb3J0IHR5cGUgeyBDaGFpbiB9IGZyb20gXCIuL2NoYWluLnRzXCI7XG5cbnR5cGUgQXJncyA9IEFycmF5PHVua25vd24+O1xudHlwZSBFeGVjdXRvciA9ICh0aGlzOiBBbnNpQ2hhaW4sIC4uLmFyZ3M6IEFyZ3MpID0+IHN0cmluZztcbnR5cGUgUHJvcGVydHkgPSBzdHJpbmcgfCBFeGVjdXRvcjtcbnR5cGUgUHJvcGVydHlOYW1lcyA9IGtleW9mIENoYWluPEFuc2lDaGFpbj47XG5cbi8qKiBBbnNpIGluc3RhbmNlIHJldHVybmVkIGJ5IGFsbCBhbnNpIGVzY2FwZSBwcm9wZXJ0aWVzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbnNpQ2hhaW4gZXh0ZW5kcyBDaGFpbjxBbnNpQ2hhaW4+IHtcbiAgLyoqIEdldCBhbnNpIGVzY2FwZSBzZXF1ZW5jZS4gKi9cbiAgKCk6IHN0cmluZztcbiAgLyoqIEdldCBhbnNpIGVzY2FwZSBzZXF1ZW5jZS4gKi9cbiAgdG9TdHJpbmcoKTogc3RyaW5nO1xuICAvKiogR2V0IGFuc2kgZXNjYXBlIHNlcXVlbmNlIGFzIFVpbnQ4QXJyYXkuICovXG4gIHRvQnVmZmVyKCk6IFVpbnQ4QXJyYXk7XG59XG5cbi8qKiBDcmVhdGUgbmV3IGBBbnNpYCBpbnN0YW5jZS4gKi9cbmV4cG9ydCB0eXBlIEFuc2lGYWN0b3J5ID0gKCkgPT4gQW5zaTtcblxuLyoqXG4gKiBDaGFpbmFibGUgYW5zaSBlc2NhcGUgc2VxdWVuY2VzLlxuICogSWYgaW52b2tlZCBhcyBtZXRob2QsIGEgbmV3IEFuc2kgaW5zdGFuY2Ugd2lsbCBiZSByZXR1cm5lZC5cbiAqL1xuZXhwb3J0IHR5cGUgQW5zaSA9IEFuc2lGYWN0b3J5ICYgQW5zaUNoYWluO1xuXG4vKipcbiAqIENoYWluYWJsZSBhbnNpIGVzY2FwZSBzZXF1ZW5jZXMuXG4gKiBJZiBpbnZva2VkIGFzIG1ldGhvZCwgYSBuZXcgQW5zaSBpbnN0YW5jZSB3aWxsIGJlIHJldHVybmVkLlxuICogYGBgXG4gKiBhd2FpdCBEZW5vLnN0ZG91dC53cml0ZShcbiAqICAgbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKFxuICogICAgIGFuc2kuY3Vyc29yVG8oMCwgMCkuZXJhc2VTY3JlZW4oKSxcbiAqICAgKSxcbiAqICk7XG4gKiBgYGBcbiAqIE9yIHNob3J0ZXI6XG4gKiBgYGBcbiAqIGF3YWl0IERlbm8uc3Rkb3V0LndyaXRlKFxuICogICBhbnNpLmN1cnNvclRvKDAsIDApLmVyYXNlU2NyZWVuLnRvQnVmZmVyKCksXG4gKiApO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBhbnNpOiBBbnNpID0gZmFjdG9yeSgpO1xuXG5mdW5jdGlvbiBmYWN0b3J5KCk6IEFuc2kge1xuICBsZXQgcmVzdWx0OiBBcnJheTxzdHJpbmc+ID0gW107XG4gIGxldCBzdGFjazogQXJyYXk8W1Byb3BlcnR5LCBBcmdzXT4gPSBbXTtcblxuICBjb25zdCBhbnNpOiBBbnNpID0gZnVuY3Rpb24gKFxuICAgIHRoaXM6IEFuc2lDaGFpbiB8IHVuZGVmaW5lZCxcbiAgICAuLi5hcmdzOiBBcmdzXG4gICk6IHN0cmluZyB8IEFuc2lDaGFpbiB7XG4gICAgaWYgKHRoaXMpIHtcbiAgICAgIGlmIChhcmdzLmxlbmd0aCkge1xuICAgICAgICB1cGRhdGUoYXJncyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhY3RvcnkoKTtcbiAgfSBhcyBBbnNpO1xuXG4gIGFuc2kudGV4dCA9IGZ1bmN0aW9uICh0ZXh0OiBzdHJpbmcpOiBBbnNpQ2hhaW4ge1xuICAgIHN0YWNrLnB1c2goW3RleHQsIFtdXSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgYW5zaS50b1N0cmluZyA9IGZ1bmN0aW9uICgpOiBzdHJpbmcge1xuICAgIHVwZGF0ZSgpO1xuICAgIGNvbnN0IHN0cjogc3RyaW5nID0gcmVzdWx0LmpvaW4oXCJcIik7XG4gICAgcmVzdWx0ID0gW107XG4gICAgcmV0dXJuIHN0cjtcbiAgfTtcblxuICBhbnNpLnRvQnVmZmVyID0gZnVuY3Rpb24gKCk6IFVpbnQ4QXJyYXkge1xuICAgIHJldHVybiBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodGhpcy50b1N0cmluZygpKTtcbiAgfTtcblxuICBjb25zdCBtZXRob2RMaXN0OiBBcnJheTxbUHJvcGVydHlOYW1lcywgUHJvcGVydHldPiA9IE9iamVjdC5lbnRyaWVzKFxuICAgIGFuc2lFc2NhcGVzLFxuICApIGFzIEFycmF5PFtQcm9wZXJ0eU5hbWVzLCBQcm9wZXJ0eV0+O1xuXG4gIGZvciAoY29uc3QgW25hbWUsIG1ldGhvZF0gb2YgbWV0aG9kTGlzdCkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhbnNpLCBuYW1lLCB7XG4gICAgICBnZXQodGhpczogQW5zaUNoYWluKSB7XG4gICAgICAgIHN0YWNrLnB1c2goW21ldGhvZCwgW11dKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGFuc2k7XG5cbiAgZnVuY3Rpb24gdXBkYXRlKGFyZ3M/OiBBcmdzKSB7XG4gICAgaWYgKCFzdGFjay5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFyZ3MpIHtcbiAgICAgIHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdWzFdID0gYXJncztcbiAgICB9XG4gICAgcmVzdWx0LnB1c2goXG4gICAgICAuLi5zdGFjay5tYXAoKFtwcm9wLCBhcmdzXTogW1Byb3BlcnR5LCBBcmdzXSkgPT5cbiAgICAgICAgdHlwZW9mIHByb3AgPT09IFwic3RyaW5nXCIgPyBwcm9wIDogcHJvcC5jYWxsKGFuc2ksIC4uLmFyZ3MpXG4gICAgICApLFxuICAgICk7XG4gICAgc3RhY2sgPSBbXTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksaUJBQWlCLG9CQUFvQjtBQTJCakQ7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FnQkMsR0FDRCxPQUFPLE1BQU0sT0FBYSxVQUFVO0FBRXBDLFNBQVM7RUFDUCxJQUFJLFNBQXdCLEVBQUU7RUFDOUIsSUFBSSxRQUFpQyxFQUFFO0VBRXZDLE1BQU0sT0FBYSxTQUVqQixHQUFHLElBQVU7SUFFYixJQUFJLElBQUksRUFBRTtNQUNSLElBQUksS0FBSyxNQUFNLEVBQUU7UUFDZixPQUFPO1FBQ1AsT0FBTyxJQUFJO01BQ2I7TUFDQSxPQUFPLElBQUksQ0FBQyxRQUFRO0lBQ3RCO0lBQ0EsT0FBTztFQUNUO0VBRUEsS0FBSyxJQUFJLEdBQUcsU0FBVSxJQUFZO0lBQ2hDLE1BQU0sSUFBSSxDQUFDO01BQUM7TUFBTSxFQUFFO0tBQUM7SUFDckIsT0FBTyxJQUFJO0VBQ2I7RUFFQSxLQUFLLFFBQVEsR0FBRztJQUNkO0lBQ0EsTUFBTSxNQUFjLE9BQU8sSUFBSSxDQUFDO0lBQ2hDLFNBQVMsRUFBRTtJQUNYLE9BQU87RUFDVDtFQUVBLEtBQUssUUFBUSxHQUFHO0lBQ2QsT0FBTyxJQUFJLGNBQWMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRO0VBQy9DO0VBRUEsTUFBTSxhQUErQyxPQUFPLE9BQU8sQ0FDakU7RUFHRixLQUFLLE1BQU0sQ0FBQyxNQUFNLE9BQU8sSUFBSSxXQUFZO0lBQ3ZDLE9BQU8sY0FBYyxDQUFDLE1BQU0sTUFBTTtNQUNoQztRQUNFLE1BQU0sSUFBSSxDQUFDO1VBQUM7VUFBUSxFQUFFO1NBQUM7UUFDdkIsT0FBTyxJQUFJO01BQ2I7SUFDRjtFQUNGO0VBRUEsT0FBTztFQUVQLFNBQVMsT0FBTyxJQUFXO0lBQ3pCLElBQUksQ0FBQyxNQUFNLE1BQU0sRUFBRTtNQUNqQjtJQUNGO0lBQ0EsSUFBSSxNQUFNO01BQ1IsS0FBSyxDQUFDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUc7SUFDL0I7SUFDQSxPQUFPLElBQUksSUFDTixNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUF1QixHQUMxQyxPQUFPLFNBQVMsV0FBVyxPQUFPLEtBQUssSUFBSSxDQUFDLFNBQVM7SUFHekQsUUFBUSxFQUFFO0VBQ1o7QUFDRiJ9 +// denoCacheMetadata=3568779273317170435,18105478215457022207
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/64b187f10eca491f2de5bad67338eba7d10700ca5867bda5fdfc5e06bef001ec.js b/vendor/gen/https/deno.land/64b187f10eca491f2de5bad67338eba7d10700ca5867bda5fdfc5e06bef001ec.js new file mode 100644 index 0000000..c3a9cbd --- /dev/null +++ b/vendor/gen/https/deno.land/64b187f10eca491f2de5bad67338eba7d10700ca5867bda5fdfc5e06bef001ec.js @@ -0,0 +1,145 @@ +import { didYouMeanCommand } from "./_utils.ts"; +import { getFlag } from "../flags/_utils.ts"; +export class CommandError extends Error { + constructor(message){ + super(message); + Object.setPrototypeOf(this, CommandError.prototype); + } +} +export class ValidationError extends CommandError { + exitCode; + cmd; + constructor(message, { exitCode } = {}){ + super(message); + Object.setPrototypeOf(this, ValidationError.prototype); + this.exitCode = exitCode ?? 1; + } +} +export class DuplicateOptionNameError extends CommandError { + constructor(name){ + super(`Option with name "${getFlag(name)}" already exists.`); + Object.setPrototypeOf(this, DuplicateOptionNameError.prototype); + } +} +export class MissingCommandNameError extends CommandError { + constructor(){ + super("Missing command name."); + Object.setPrototypeOf(this, MissingCommandNameError.prototype); + } +} +export class DuplicateCommandNameError extends CommandError { + constructor(name){ + super(`Duplicate command name "${name}".`); + Object.setPrototypeOf(this, DuplicateCommandNameError.prototype); + } +} +export class DuplicateCommandAliasError extends CommandError { + constructor(alias){ + super(`Duplicate command alias "${alias}".`); + Object.setPrototypeOf(this, DuplicateCommandAliasError.prototype); + } +} +export class CommandNotFoundError extends CommandError { + constructor(name, commands, excluded){ + super(`Unknown command "${name}".${didYouMeanCommand(name, commands, excluded)}`); + Object.setPrototypeOf(this, CommandNotFoundError.prototype); + } +} +export class DuplicateTypeError extends CommandError { + constructor(name){ + super(`Type with name "${name}" already exists.`); + Object.setPrototypeOf(this, DuplicateTypeError.prototype); + } +} +export class DuplicateCompletionError extends CommandError { + constructor(name){ + super(`Completion with name "${name}" already exists.`); + Object.setPrototypeOf(this, DuplicateCompletionError.prototype); + } +} +export class DuplicateExampleError extends CommandError { + constructor(name){ + super(`Example with name "${name}" already exists.`); + Object.setPrototypeOf(this, DuplicateExampleError.prototype); + } +} +export class DuplicateEnvVarError extends CommandError { + constructor(name){ + super(`Environment variable with name "${name}" already exists.`); + Object.setPrototypeOf(this, DuplicateEnvVarError.prototype); + } +} +export class MissingRequiredEnvVarError extends ValidationError { + constructor(envVar){ + super(`Missing required environment variable "${envVar.names[0]}".`); + Object.setPrototypeOf(this, MissingRequiredEnvVarError.prototype); + } +} +export class TooManyEnvVarValuesError extends CommandError { + constructor(name){ + super(`An environment variable can only have one value, but "${name}" has more than one.`); + Object.setPrototypeOf(this, TooManyEnvVarValuesError.prototype); + } +} +export class UnexpectedOptionalEnvVarValueError extends CommandError { + constructor(name){ + super(`An environment variable cannot have an optional value, but "${name}" is defined as optional.`); + Object.setPrototypeOf(this, UnexpectedOptionalEnvVarValueError.prototype); + } +} +export class UnexpectedVariadicEnvVarValueError extends CommandError { + constructor(name){ + super(`An environment variable cannot have an variadic value, but "${name}" is defined as variadic.`); + Object.setPrototypeOf(this, UnexpectedVariadicEnvVarValueError.prototype); + } +} +export class DefaultCommandNotFoundError extends CommandError { + constructor(name, commands){ + super(`Default command "${name}" not found.${didYouMeanCommand(name, commands)}`); + Object.setPrototypeOf(this, DefaultCommandNotFoundError.prototype); + } +} +export class CommandExecutableNotFoundError extends CommandError { + constructor(name){ + super(`Command executable not found: ${name}`); + Object.setPrototypeOf(this, CommandExecutableNotFoundError.prototype); + } +} +export class UnknownCompletionCommandError extends CommandError { + constructor(name, commands){ + super(`Auto-completion failed. Unknown command "${name}".${didYouMeanCommand(name, commands)}`); + Object.setPrototypeOf(this, UnknownCompletionCommandError.prototype); + } +} +/* Validation errors. */ export class UnknownCommandError extends ValidationError { + constructor(name, commands, excluded){ + super(`Unknown command "${name}".${didYouMeanCommand(name, commands, excluded)}`); + Object.setPrototypeOf(this, UnknownCommandError.prototype); + } +} +export class NoArgumentsAllowedError extends ValidationError { + constructor(name){ + super(`No arguments allowed for command "${name}".`); + Object.setPrototypeOf(this, NoArgumentsAllowedError.prototype); + } +} +export class MissingArgumentsError extends ValidationError { + constructor(names){ + super(`Missing argument(s): ${names.join(", ")}`); + Object.setPrototypeOf(this, MissingArgumentsError.prototype); + } +} +export class MissingArgumentError extends ValidationError { + constructor(name){ + super(`Missing argument: ${name}`); + Object.setPrototypeOf(this, MissingArgumentError.prototype); + } +} +export class TooManyArgumentsError extends ValidationError { + constructor(args){ + super(`Too many arguments: ${args.join(" ")}`); + Object.setPrototypeOf(this, TooManyArgumentsError.prototype); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC9fZXJyb3JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpZFlvdU1lYW5Db21tYW5kIH0gZnJvbSBcIi4vX3V0aWxzLnRzXCI7XG5pbXBvcnQgdHlwZSB7IENvbW1hbmQgfSBmcm9tIFwiLi9jb21tYW5kLnRzXCI7XG5pbXBvcnQgeyBnZXRGbGFnIH0gZnJvbSBcIi4uL2ZsYWdzL191dGlscy50c1wiO1xuaW1wb3J0IHsgRW52VmFyIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcblxuZXhwb3J0IGNsYXNzIENvbW1hbmRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIENvbW1hbmRFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvbkVycm9yT3B0aW9ucyB7XG4gIGV4aXRDb2RlPzogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgQ29tbWFuZEVycm9yIHtcbiAgcHVibGljIHJlYWRvbmx5IGV4aXRDb2RlOiBudW1iZXI7XG4gIHB1YmxpYyBjbWQ/OiBDb21tYW5kO1xuXG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgeyBleGl0Q29kZSB9OiBWYWxpZGF0aW9uRXJyb3JPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgVmFsaWRhdGlvbkVycm9yLnByb3RvdHlwZSk7XG4gICAgdGhpcy5leGl0Q29kZSA9IGV4aXRDb2RlID8/IDE7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIER1cGxpY2F0ZU9wdGlvbk5hbWVFcnJvciBleHRlbmRzIENvbW1hbmRFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKGBPcHRpb24gd2l0aCBuYW1lIFwiJHtnZXRGbGFnKG5hbWUpfVwiIGFscmVhZHkgZXhpc3RzLmApO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBEdXBsaWNhdGVPcHRpb25OYW1lRXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTWlzc2luZ0NvbW1hbmROYW1lRXJyb3IgZXh0ZW5kcyBDb21tYW5kRXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIk1pc3NpbmcgY29tbWFuZCBuYW1lLlwiKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgTWlzc2luZ0NvbW1hbmROYW1lRXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRHVwbGljYXRlQ29tbWFuZE5hbWVFcnJvciBleHRlbmRzIENvbW1hbmRFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKGBEdXBsaWNhdGUgY29tbWFuZCBuYW1lIFwiJHtuYW1lfVwiLmApO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBEdXBsaWNhdGVDb21tYW5kTmFtZUVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIER1cGxpY2F0ZUNvbW1hbmRBbGlhc0Vycm9yIGV4dGVuZHMgQ29tbWFuZEVycm9yIHtcbiAgY29uc3RydWN0b3IoYWxpYXM6IHN0cmluZykge1xuICAgIHN1cGVyKGBEdXBsaWNhdGUgY29tbWFuZCBhbGlhcyBcIiR7YWxpYXN9XCIuYCk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIER1cGxpY2F0ZUNvbW1hbmRBbGlhc0Vycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbW1hbmROb3RGb3VuZEVycm9yIGV4dGVuZHMgQ29tbWFuZEVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGNvbW1hbmRzOiBBcnJheTxDb21tYW5kPixcbiAgICBleGNsdWRlZD86IEFycmF5PHN0cmluZz4sXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgYFVua25vd24gY29tbWFuZCBcIiR7bmFtZX1cIi4ke1xuICAgICAgICBkaWRZb3VNZWFuQ29tbWFuZChuYW1lLCBjb21tYW5kcywgZXhjbHVkZWQpXG4gICAgICB9YCxcbiAgICApO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBDb21tYW5kTm90Rm91bmRFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEdXBsaWNhdGVUeXBlRXJyb3IgZXh0ZW5kcyBDb21tYW5kRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgVHlwZSB3aXRoIG5hbWUgXCIke25hbWV9XCIgYWxyZWFkeSBleGlzdHMuYCk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIER1cGxpY2F0ZVR5cGVFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEdXBsaWNhdGVDb21wbGV0aW9uRXJyb3IgZXh0ZW5kcyBDb21tYW5kRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgQ29tcGxldGlvbiB3aXRoIG5hbWUgXCIke25hbWV9XCIgYWxyZWFkeSBleGlzdHMuYCk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIER1cGxpY2F0ZUNvbXBsZXRpb25FcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEdXBsaWNhdGVFeGFtcGxlRXJyb3IgZXh0ZW5kcyBDb21tYW5kRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgRXhhbXBsZSB3aXRoIG5hbWUgXCIke25hbWV9XCIgYWxyZWFkeSBleGlzdHMuYCk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIER1cGxpY2F0ZUV4YW1wbGVFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEdXBsaWNhdGVFbnZWYXJFcnJvciBleHRlbmRzIENvbW1hbmRFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKGBFbnZpcm9ubWVudCB2YXJpYWJsZSB3aXRoIG5hbWUgXCIke25hbWV9XCIgYWxyZWFkeSBleGlzdHMuYCk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIER1cGxpY2F0ZUVudlZhckVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1pc3NpbmdSZXF1aXJlZEVudlZhckVycm9yIGV4dGVuZHMgVmFsaWRhdGlvbkVycm9yIHtcbiAgY29uc3RydWN0b3IoZW52VmFyOiBFbnZWYXIpIHtcbiAgICBzdXBlcihgTWlzc2luZyByZXF1aXJlZCBlbnZpcm9ubWVudCB2YXJpYWJsZSBcIiR7ZW52VmFyLm5hbWVzWzBdfVwiLmApO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBNaXNzaW5nUmVxdWlyZWRFbnZWYXJFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUb29NYW55RW52VmFyVmFsdWVzRXJyb3IgZXh0ZW5kcyBDb21tYW5kRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihcbiAgICAgIGBBbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBjYW4gb25seSBoYXZlIG9uZSB2YWx1ZSwgYnV0IFwiJHtuYW1lfVwiIGhhcyBtb3JlIHRoYW4gb25lLmAsXG4gICAgKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgVG9vTWFueUVudlZhclZhbHVlc0Vycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVuZXhwZWN0ZWRPcHRpb25hbEVudlZhclZhbHVlRXJyb3IgZXh0ZW5kcyBDb21tYW5kRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihcbiAgICAgIGBBbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBjYW5ub3QgaGF2ZSBhbiBvcHRpb25hbCB2YWx1ZSwgYnV0IFwiJHtuYW1lfVwiIGlzIGRlZmluZWQgYXMgb3B0aW9uYWwuYCxcbiAgICApO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBVbmV4cGVjdGVkT3B0aW9uYWxFbnZWYXJWYWx1ZUVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVuZXhwZWN0ZWRWYXJpYWRpY0VudlZhclZhbHVlRXJyb3IgZXh0ZW5kcyBDb21tYW5kRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihcbiAgICAgIGBBbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBjYW5ub3QgaGF2ZSBhbiB2YXJpYWRpYyB2YWx1ZSwgYnV0IFwiJHtuYW1lfVwiIGlzIGRlZmluZWQgYXMgdmFyaWFkaWMuYCxcbiAgICApO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBVbmV4cGVjdGVkVmFyaWFkaWNFbnZWYXJWYWx1ZUVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERlZmF1bHRDb21tYW5kTm90Rm91bmRFcnJvciBleHRlbmRzIENvbW1hbmRFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgY29tbWFuZHM6IEFycmF5PENvbW1hbmQ+KSB7XG4gICAgc3VwZXIoXG4gICAgICBgRGVmYXVsdCBjb21tYW5kIFwiJHtuYW1lfVwiIG5vdCBmb3VuZC4ke1xuICAgICAgICBkaWRZb3VNZWFuQ29tbWFuZChuYW1lLCBjb21tYW5kcylcbiAgICAgIH1gLFxuICAgICk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIERlZmF1bHRDb21tYW5kTm90Rm91bmRFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21tYW5kRXhlY3V0YWJsZU5vdEZvdW5kRXJyb3IgZXh0ZW5kcyBDb21tYW5kRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihcbiAgICAgIGBDb21tYW5kIGV4ZWN1dGFibGUgbm90IGZvdW5kOiAke25hbWV9YCxcbiAgICApO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBDb21tYW5kRXhlY3V0YWJsZU5vdEZvdW5kRXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVW5rbm93bkNvbXBsZXRpb25Db21tYW5kRXJyb3IgZXh0ZW5kcyBDb21tYW5kRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIGNvbW1hbmRzOiBBcnJheTxDb21tYW5kPikge1xuICAgIHN1cGVyKFxuICAgICAgYEF1dG8tY29tcGxldGlvbiBmYWlsZWQuIFVua25vd24gY29tbWFuZCBcIiR7bmFtZX1cIi4ke1xuICAgICAgICBkaWRZb3VNZWFuQ29tbWFuZChuYW1lLCBjb21tYW5kcylcbiAgICAgIH1gLFxuICAgICk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIFVua25vd25Db21wbGV0aW9uQ29tbWFuZEVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuLyogVmFsaWRhdGlvbiBlcnJvcnMuICovXG5cbmV4cG9ydCBjbGFzcyBVbmtub3duQ29tbWFuZEVycm9yIGV4dGVuZHMgVmFsaWRhdGlvbkVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGNvbW1hbmRzOiBBcnJheTxDb21tYW5kPixcbiAgICBleGNsdWRlZD86IEFycmF5PHN0cmluZz4sXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgYFVua25vd24gY29tbWFuZCBcIiR7bmFtZX1cIi4ke1xuICAgICAgICBkaWRZb3VNZWFuQ29tbWFuZChuYW1lLCBjb21tYW5kcywgZXhjbHVkZWQpXG4gICAgICB9YCxcbiAgICApO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBVbmtub3duQ29tbWFuZEVycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vQXJndW1lbnRzQWxsb3dlZEVycm9yIGV4dGVuZHMgVmFsaWRhdGlvbkVycm9yIHtcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoYE5vIGFyZ3VtZW50cyBhbGxvd2VkIGZvciBjb21tYW5kIFwiJHtuYW1lfVwiLmApO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBOb0FyZ3VtZW50c0FsbG93ZWRFcnJvci5wcm90b3R5cGUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNaXNzaW5nQXJndW1lbnRzRXJyb3IgZXh0ZW5kcyBWYWxpZGF0aW9uRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihuYW1lczogQXJyYXk8c3RyaW5nPikge1xuICAgIHN1cGVyKGBNaXNzaW5nIGFyZ3VtZW50KHMpOiAke25hbWVzLmpvaW4oXCIsIFwiKX1gKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgTWlzc2luZ0FyZ3VtZW50c0Vycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1pc3NpbmdBcmd1bWVudEVycm9yIGV4dGVuZHMgVmFsaWRhdGlvbkVycm9yIHtcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoYE1pc3NpbmcgYXJndW1lbnQ6ICR7bmFtZX1gKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgTWlzc2luZ0FyZ3VtZW50RXJyb3IucHJvdG90eXBlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVG9vTWFueUFyZ3VtZW50c0Vycm9yIGV4dGVuZHMgVmFsaWRhdGlvbkVycm9yIHtcbiAgY29uc3RydWN0b3IoYXJnczogQXJyYXk8c3RyaW5nPikge1xuICAgIHN1cGVyKGBUb28gbWFueSBhcmd1bWVudHM6ICR7YXJncy5qb2luKFwiIFwiKX1gKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgVG9vTWFueUFyZ3VtZW50c0Vycm9yLnByb3RvdHlwZSk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLGlCQUFpQixRQUFRLGNBQWM7QUFFaEQsU0FBUyxPQUFPLFFBQVEscUJBQXFCO0FBRzdDLE9BQU8sTUFBTSxxQkFBcUI7RUFDaEMsWUFBWSxPQUFlLENBQUU7SUFDM0IsS0FBSyxDQUFDO0lBQ04sT0FBTyxjQUFjLENBQUMsSUFBSSxFQUFFLGFBQWEsU0FBUztFQUNwRDtBQUNGO0FBTUEsT0FBTyxNQUFNLHdCQUF3QjtFQUNuQixTQUFpQjtFQUMxQixJQUFjO0VBRXJCLFlBQVksT0FBZSxFQUFFLEVBQUUsUUFBUSxFQUEwQixHQUFHLENBQUMsQ0FBQyxDQUFFO0lBQ3RFLEtBQUssQ0FBQztJQUNOLE9BQU8sY0FBYyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsU0FBUztJQUNyRCxJQUFJLENBQUMsUUFBUSxHQUFHLFlBQVk7RUFDOUI7QUFDRjtBQUVBLE9BQU8sTUFBTSxpQ0FBaUM7RUFDNUMsWUFBWSxJQUFZLENBQUU7SUFDeEIsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxNQUFNLGlCQUFpQixDQUFDO0lBQzNELE9BQU8sY0FBYyxDQUFDLElBQUksRUFBRSx5QkFBeUIsU0FBUztFQUNoRTtBQUNGO0FBRUEsT0FBTyxNQUFNLGdDQUFnQztFQUMzQyxhQUFjO0lBQ1osS0FBSyxDQUFDO0lBQ04sT0FBTyxjQUFjLENBQUMsSUFBSSxFQUFFLHdCQUF3QixTQUFTO0VBQy9EO0FBQ0Y7QUFFQSxPQUFPLE1BQU0sa0NBQWtDO0VBQzdDLFlBQVksSUFBWSxDQUFFO0lBQ3hCLEtBQUssQ0FBQyxDQUFDLHdCQUF3QixFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3pDLE9BQU8sY0FBYyxDQUFDLElB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 +// denoCacheMetadata=5330571164636848954,4647063369634617273
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/653a9124b6c7f2524a1e24c4414d26cf65abdfb71ad6df5710e2e43e106bf5d9.js b/vendor/gen/https/deno.land/653a9124b6c7f2524a1e24c4414d26cf65abdfb71ad6df5710e2e43e106bf5d9.js new file mode 100644 index 0000000..84cfbd2 --- /dev/null +++ b/vendor/gen/https/deno.land/653a9124b6c7f2524a1e24c4414d26cf65abdfb71ad6df5710e2e43e106bf5d9.js @@ -0,0 +1,85 @@ +import { Provider } from "../provider.ts"; +import { bold, brightBlue } from "../../deps.ts"; +export class GithubProvider extends Provider { + name = "github"; + repositoryUrl = "https://github.com/"; + registryUrl = "https://raw.githubusercontent.com/"; + apiUrl = "https://api.github.com/repos/"; + repositoryName; + listBranches; + githubToken; + constructor({ repository, branches = true, token }){ + super(); + this.repositoryName = repository; + this.listBranches = branches; + this.githubToken = token; + } + async getVersions(_name) { + const [tags, branches] = await Promise.all([ + this.gitFetch("git/refs/tags"), + this.gitFetch("branches") + ]); + const tagNames = tags.map((tag)=>tag.ref.replace(/^refs\/tags\//, "")).reverse(); + const branchNames = branches.sort((a, b)=>a.protected === b.protected ? 0 : a.protected ? 1 : -1).map((tag)=>`${tag.name} ${tag.protected ? `(${bold("Protected")})` : ""}`).reverse(); + return { + versions: [ + ...tagNames, + ...branchNames + ], + latest: tagNames[0], + tags: tagNames, + branches: branchNames + }; + } + getRepositoryUrl(_name) { + return new URL(`${this.repositoryName}/`, this.repositoryUrl).href; + } + getRegistryUrl(_name, version) { + return new URL(`${this.repositoryName}/${version}/`, this.registryUrl).href; + } + async listVersions(name, currentVersion) { + const { tags, branches } = await this.getVersions(name); + const showBranches = !!this.listBranches && branches.length > 0; + const indent = showBranches ? 2 : 0; + if (showBranches) { + console.log("\n" + " ".repeat(indent) + bold(brightBlue("Tags:\n"))); + } + super.printVersions(tags, currentVersion, { + indent + }); + if (showBranches) { + console.log("\n" + " ".repeat(indent) + bold(brightBlue("Branches:\n"))); + super.printVersions(branches, currentVersion, { + maxCols: 5, + indent + }); + console.log(); + } + } + getApiUrl(endpoint) { + return new URL(`${this.repositoryName}/${endpoint}`, this.apiUrl).href; + } + async gitFetch(endpoint) { + const headers = new Headers({ + "Content-Type": "application/json" + }); + if (this.githubToken) { + headers.set("Authorization", this.githubToken ? `token ${this.githubToken}` : ""); + } + const response = await fetch(this.getApiUrl(endpoint), { + method: "GET", + cache: "default", + headers + }); + if (!response.status) { + throw new Error("couldn't fetch versions - try again after sometime"); + } + const data = await response.json(); + if (typeof data === "object" && "message" in data && "documentation_url" in data) { + throw new Error(data.message + " " + data.documentation_url); + } + return data; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC91cGdyYWRlL3Byb3ZpZGVyL2dpdGh1Yi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm92aWRlciwgVmVyc2lvbnMgfSBmcm9tIFwiLi4vcHJvdmlkZXIudHNcIjtcbmltcG9ydCB7IGJvbGQsIGJyaWdodEJsdWUgfSBmcm9tIFwiLi4vLi4vZGVwcy50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdpdGh1YlByb3ZpZGVyT3B0aW9ucyB7XG4gIHJlcG9zaXRvcnk6IHN0cmluZztcbiAgYnJhbmNoZXM/OiBib29sZWFuO1xuICB0b2tlbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHaXRodWJWZXJzaW9ucyBleHRlbmRzIFZlcnNpb25zIHtcbiAgdGFnczogQXJyYXk8c3RyaW5nPjtcbiAgYnJhbmNoZXM6IEFycmF5PHN0cmluZz47XG59XG5cbmV4cG9ydCBjbGFzcyBHaXRodWJQcm92aWRlciBleHRlbmRzIFByb3ZpZGVyIHtcbiAgbmFtZSA9IFwiZ2l0aHViXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVwb3NpdG9yeVVybCA9IFwiaHR0cHM6Ly9naXRodWIuY29tL1wiO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lzdHJ5VXJsID0gXCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpVXJsID0gXCJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL1wiO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlcG9zaXRvcnlOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgbGlzdEJyYW5jaGVzPzogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBnaXRodWJUb2tlbj86IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih7IHJlcG9zaXRvcnksIGJyYW5jaGVzID0gdHJ1ZSwgdG9rZW4gfTogR2l0aHViUHJvdmlkZXJPcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJlcG9zaXRvcnlOYW1lID0gcmVwb3NpdG9yeTtcbiAgICB0aGlzLmxpc3RCcmFuY2hlcyA9IGJyYW5jaGVzO1xuICAgIHRoaXMuZ2l0aHViVG9rZW4gPSB0b2tlbjtcbiAgfVxuXG4gIGFzeW5jIGdldFZlcnNpb25zKFxuICAgIF9uYW1lOiBzdHJpbmcsXG4gICk6IFByb21pc2U8R2l0aHViVmVyc2lvbnM+IHtcbiAgICBjb25zdCBbdGFncywgYnJhbmNoZXNdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgdGhpcy5naXRGZXRjaDxBcnJheTx7IHJlZjogc3RyaW5nIH0+PihcImdpdC9yZWZzL3RhZ3NcIiksXG4gICAgICB0aGlzLmdpdEZldGNoPEFycmF5PHsgbmFtZTogc3RyaW5nOyBwcm90ZWN0ZWQ6IGJvb2xlYW4gfT4+KFwiYnJhbmNoZXNcIiksXG4gICAgXSk7XG5cbiAgICBjb25zdCB0YWdOYW1lcyA9IHRhZ3NcbiAgICAgIC5tYXAoKHRhZykgPT4gdGFnLnJlZi5yZXBsYWNlKC9ecmVmc1xcL3RhZ3NcXC8vLCBcIlwiKSlcbiAgICAgIC5yZXZlcnNlKCk7XG5cbiAgICBjb25zdCBicmFuY2hOYW1lcyA9IGJyYW5jaGVzXG4gICAgICAuc29ydCgoYSwgYikgPT5cbiAgICAgICAgKGEucHJvdGVjdGVkID09PSBiLnByb3RlY3RlZCkgPyAwIDogKGEucHJvdGVjdGVkID8gMSA6IC0xKVxuICAgICAgKVxuICAgICAgLm1hcCgodGFnKSA9PlxuICAgICAgICBgJHt0YWcubmFtZX0gJHt0YWcucHJvdGVjdGVkID8gYCgke2JvbGQoXCJQcm90ZWN0ZWRcIil9KWAgOiBcIlwifWBcbiAgICAgIClcbiAgICAgIC5yZXZlcnNlKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmVyc2lvbnM6IFtcbiAgICAgICAgLi4udGFnTmFtZXMsXG4gICAgICAgIC4uLmJyYW5jaE5hbWVzLFxuICAgICAgXSxcbiAgICAgIGxhdGVzdDogdGFnTmFtZXNbMF0sXG4gICAgICB0YWdzOiB0YWdOYW1lcyxcbiAgICAgIGJyYW5jaGVzOiBicmFuY2hOYW1lcyxcbiAgICB9O1xuICB9XG5cbiAgZ2V0UmVwb3NpdG9yeVVybChfbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IFVSTChgJHt0aGlzLnJlcG9zaXRvcnlOYW1lfS9gLCB0aGlzLnJlcG9zaXRvcnlVcmwpLmhyZWY7XG4gIH1cblxuICBnZXRSZWdpc3RyeVVybChfbmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgVVJMKGAke3RoaXMucmVwb3NpdG9yeU5hbWV9LyR7dmVyc2lvbn0vYCwgdGhpcy5yZWdpc3RyeVVybCkuaHJlZjtcbiAgfVxuXG4gIGFzeW5jIGxpc3RWZXJzaW9ucyhuYW1lOiBzdHJpbmcsIGN1cnJlbnRWZXJzaW9uPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyB0YWdzLCBicmFuY2hlcyB9ID0gYXdhaXQgdGhpcy5nZXRWZXJzaW9ucyhuYW1lKTtcbiAgICBjb25zdCBzaG93QnJhbmNoZXM6IGJvb2xlYW4gPSAhIXRoaXMubGlzdEJyYW5jaGVzICYmIGJyYW5jaGVzLmxlbmd0aCA+IDA7XG4gICAgY29uc3QgaW5kZW50ID0gc2hvd0JyYW5jaGVzID8gMiA6IDA7XG4gICAgaWYgKHNob3dCcmFuY2hlcykge1xuICAgICAgY29uc29sZS5sb2coXCJcXG5cIiArIFwiIFwiLnJlcGVhdChpbmRlbnQpICsgYm9sZChicmlnaHRCbHVlKFwiVGFnczpcXG5cIikpKTtcbiAgICB9XG4gICAgc3VwZXIucHJpbnRWZXJzaW9ucyh0YWdzLCBjdXJyZW50VmVyc2lvbiwgeyBpbmRlbnQgfSk7XG4gICAgaWYgKHNob3dCcmFuY2hlcykge1xuICAgICAgY29uc29sZS5sb2coXCJcXG5cIiArIFwiIFwiLnJlcGVhdChpbmRlbnQpICsgYm9sZChicmlnaHRCbHVlKFwiQnJhbmNoZXM6XFxuXCIpKSk7XG4gICAgICBzdXBlci5wcmludFZlcnNpb25zKGJyYW5jaGVzLCBjdXJyZW50VmVyc2lvbiwgeyBtYXhDb2xzOiA1LCBpbmRlbnQgfSk7XG4gICAgICBjb25zb2xlLmxvZygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXBpVXJsKGVuZHBvaW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgVVJMKGAke3RoaXMucmVwb3NpdG9yeU5hbWV9LyR7ZW5kcG9pbnR9YCwgdGhpcy5hcGlVcmwpLmhyZWY7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdpdEZldGNoPFQ+KGVuZHBvaW50OiBzdHJpbmcpOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMoeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9KTtcbiAgICBpZiAodGhpcy5naXRodWJUb2tlbikge1xuICAgICAgaGVhZGVycy5zZXQoXG4gICAgICAgIFwiQXV0aG9yaXphdGlvblwiLFxuICAgICAgICB0aGlzLmdpdGh1YlRva2VuID8gYHRva2VuICR7dGhpcy5naXRodWJUb2tlbn1gIDogXCJcIixcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goXG4gICAgICB0aGlzLmdldEFwaVVybChlbmRwb2ludCksXG4gICAgICB7XG4gICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgY2FjaGU6IFwiZGVmYXVsdFwiLFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgaWYgKCFyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJjb3VsZG4ndCBmZXRjaCB2ZXJzaW9ucyAtIHRyeSBhZ2FpbiBhZnRlciBzb21ldGltZVwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhOiBHaXRodWJSZXNwb25zZSAmIFQgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG5cbiAgICBpZiAoXG4gICAgICB0eXBlb2YgZGF0YSA9PT0gXCJvYmplY3RcIiAmJiBcIm1lc3NhZ2VcIiBpbiBkYXRhICYmXG4gICAgICBcImRvY3VtZW50YXRpb25fdXJsXCIgaW4gZGF0YVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGRhdGEubWVzc2FnZSArIFwiIFwiICsgZGF0YS5kb2N1bWVudGF0aW9uX3VybCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbn1cblxuaW50ZXJmYWNlIEdpdGh1YlJlc3BvbnNlIHtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICAvLyBkZW5vLWxpbnQtaWdub3JlIGNhbWVsY2FzZVxuICBkb2N1bWVudGF0aW9uX3VybDogc3RyaW5nO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsUUFBUSxRQUFrQixpQkFBaUI7QUFDcEQsU0FBUyxJQUFJLEVBQUUsVUFBVSxRQUFRLGdCQUFnQjtBQWFqRCxPQUFPLE1BQU0sdUJBQXVCO0VBQ2xDLE9BQU8sU0FBUztFQUNDLGdCQUFnQixzQkFBc0I7RUFDdEMsY0FBYyxxQ0FBcUM7RUFDbkQsU0FBUyxnQ0FBZ0M7RUFDekMsZUFBdUI7RUFDdkIsYUFBdUI7RUFDdkIsWUFBcUI7RUFFdEMsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLElBQUksRUFBRSxLQUFLLEVBQXlCLENBQUU7SUFDekUsS0FBSztJQUNMLElBQUksQ0FBQyxjQUFjLEdBQUc7SUFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRztJQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHO0VBQ3JCO0VBRUEsTUFBTSxZQUNKLEtBQWEsRUFDWTtJQUN6QixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxRQUFRLEdBQUcsQ0FBQztNQUN6QyxJQUFJLENBQUMsUUFBUSxDQUF5QjtNQUN0QyxJQUFJLENBQUMsUUFBUSxDQUE4QztLQUM1RDtJQUVELE1BQU0sV0FBVyxLQUNk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 +// denoCacheMetadata=3918168443235015597,917453446495057520
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/683b7dddf0f9dec790e257c3356353924573d9830d6da5e65cbaeb13542e62bc.js b/vendor/gen/https/deno.land/683b7dddf0f9dec790e257c3356353924573d9830d6da5e65cbaeb13542e62bc.js new file mode 100644 index 0000000..91371a2 --- /dev/null +++ b/vendor/gen/https/deno.land/683b7dddf0f9dec790e257c3356353924573d9830d6da5e65cbaeb13542e62bc.js @@ -0,0 +1,25 @@ +import { cursorPosition } from "./ansi_escapes.ts"; +/** + * Get cursor position. + * @param options Options. + * ``` + * const cursor: Cursor = getCursorPosition(); + * console.log(cursor); // { x: 0, y: 14} + * ``` + */ export function getCursorPosition({ stdin = Deno.stdin, stdout = Deno.stdout } = {}) { + const data = new Uint8Array(8); + Deno.stdin.setRaw(true); + stdout.writeSync(new TextEncoder().encode(cursorPosition)); + stdin.readSync(data); + Deno.stdin.setRaw(false); + const [y, x] = new TextDecoder().decode(data).match(/\[(\d+);(\d+)R/)?.slice(1, 3).map(Number) ?? [ + 0, + 0 + ]; + return { + x, + y + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvYW5zaS9jdXJzb3JfcG9zaXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3Vyc29yUG9zaXRpb24gfSBmcm9tIFwiLi9hbnNpX2VzY2FwZXMudHNcIjtcblxuLyoqIEN1cnNvciBwb3NpdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3Vyc29yIHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG59XG5cbi8qKiBDdXJzb3IgcG9zaXRpb24gb3B0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3Vyc29yUG9zaXRpb25PcHRpb25zIHtcbiAgc3Rkb3V0PzogRGVuby5Xcml0ZXJTeW5jO1xuICBzdGRpbj86IERlbm8uUmVhZGVyU3luYyAmIHsgcmlkOiBudW1iZXIgfTtcbn1cblxuLyoqXG4gKiBHZXQgY3Vyc29yIHBvc2l0aW9uLlxuICogQHBhcmFtIG9wdGlvbnMgIE9wdGlvbnMuXG4gKiBgYGBcbiAqIGNvbnN0IGN1cnNvcjogQ3Vyc29yID0gZ2V0Q3Vyc29yUG9zaXRpb24oKTtcbiAqIGNvbnNvbGUubG9nKGN1cnNvcik7IC8vIHsgeDogMCwgeTogMTR9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEN1cnNvclBvc2l0aW9uKFxuICB7XG4gICAgc3RkaW4gPSBEZW5vLnN0ZGluLFxuICAgIHN0ZG91dCA9IERlbm8uc3Rkb3V0LFxuICB9OiBDdXJzb3JQb3NpdGlvbk9wdGlvbnMgPSB7fSxcbik6IEN1cnNvciB7XG4gIGNvbnN0IGRhdGEgPSBuZXcgVWludDhBcnJheSg4KTtcblxuICBEZW5vLnN0ZGluLnNldFJhdyh0cnVlKTtcbiAgc3Rkb3V0LndyaXRlU3luYyhuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoY3Vyc29yUG9zaXRpb24pKTtcbiAgc3RkaW4ucmVhZFN5bmMoZGF0YSk7XG4gIERlbm8uc3RkaW4uc2V0UmF3KGZhbHNlKTtcblxuICBjb25zdCBbeSwgeF0gPSBuZXcgVGV4dERlY29kZXIoKVxuICAgIC5kZWNvZGUoZGF0YSlcbiAgICAubWF0Y2goL1xcWyhcXGQrKTsoXFxkKylSLylcbiAgICA/LnNsaWNlKDEsIDMpXG4gICAgLm1hcChOdW1iZXIpID8/IFswLCAwXTtcblxuICByZXR1cm4geyB4LCB5IH07XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxjQUFjLFFBQVEsb0JBQW9CO0FBY25EOzs7Ozs7O0NBT0MsR0FDRCxPQUFPLFNBQVMsa0JBQ2QsRUFDRSxRQUFRLEtBQUssS0FBSyxFQUNsQixTQUFTLEtBQUssTUFBTSxFQUNFLEdBQUcsQ0FBQyxDQUFDO0VBRTdCLE1BQU0sT0FBTyxJQUFJLFdBQVc7RUFFNUIsS0FBSyxLQUFLLENBQUMsTUFBTSxDQUFDO0VBQ2xCLE9BQU8sU0FBUyxDQUFDLElBQUksY0FBYyxNQUFNLENBQUM7RUFDMUMsTUFBTSxRQUFRLENBQUM7RUFDZixLQUFLLEtBQUssQ0FBQyxNQUFNLENBQUM7RUFFbEIsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksY0FDaEIsTUFBTSxDQUFDLE1BQ1AsS0FBSyxDQUFDLG1CQUNMLE1BQU0sR0FBRyxHQUNWLElBQUksV0FBVztJQUFDO0lBQUc7R0FBRTtFQUV4QixPQUFPO0lBQUU7SUFBRztFQUFFO0FBQ2hCIn0= +// denoCacheMetadata=2920269944407932150,8303823756177200673
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/691762d8ecff814dc5b66d198c595a2ee1b134ce9785ee1888950aa7ba00f189.js b/vendor/gen/https/deno.land/691762d8ecff814dc5b66d198c595a2ee1b134ce9785ee1888950aa7ba00f189.js new file mode 100644 index 0000000..7c3a2b7 --- /dev/null +++ b/vendor/gen/https/deno.land/691762d8ecff814dc5b66d198c595a2ee1b134ce9785ee1888950aa7ba00f189.js @@ -0,0 +1,436 @@ +// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. +import { CHAR_DOT, CHAR_FORWARD_SLASH } from "./_constants.ts"; +import { _format, assertPath, encodeWhitespace, isPosixPathSeparator, normalizeString } from "./_util.ts"; +export const sep = "/"; +export const delimiter = ":"; +// path.resolve([from ...], to) +/** + * Resolves `pathSegments` into an absolute path. + * @param pathSegments an array of path segments + */ export function resolve(...pathSegments) { + let resolvedPath = ""; + let resolvedAbsolute = false; + for(let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--){ + let path; + if (i >= 0) path = pathSegments[i]; + else { + // deno-lint-ignore no-explicit-any + const { Deno } = globalThis; + if (typeof Deno?.cwd !== "function") { + throw new TypeError("Resolved a relative path without a CWD."); + } + path = Deno.cwd(); + } + assertPath(path); + // Skip empty entries + if (path.length === 0) { + continue; + } + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + } + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + // Normalize the path + resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, "/", isPosixPathSeparator); + if (resolvedAbsolute) { + if (resolvedPath.length > 0) return `/${resolvedPath}`; + else return "/"; + } else if (resolvedPath.length > 0) return resolvedPath; + else return "."; +} +/** + * Normalize the `path`, resolving `'..'` and `'.'` segments. + * Note that resolving these segments does not necessarily mean that all will be eliminated. + * A `'..'` at the top-level will be preserved, and an empty path is canonically `'.'`. + * @param path to be normalized + */ export function normalize(path) { + assertPath(path); + if (path.length === 0) return "."; + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + const trailingSeparator = path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH; + // Normalize the path + path = normalizeString(path, !isAbsolute, "/", isPosixPathSeparator); + if (path.length === 0 && !isAbsolute) path = "."; + if (path.length > 0 && trailingSeparator) path += "/"; + if (isAbsolute) return `/${path}`; + return path; +} +/** + * Verifies whether provided path is absolute + * @param path to be verified as absolute + */ export function isAbsolute(path) { + assertPath(path); + return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH; +} +/** + * Join all given a sequence of `paths`,then normalizes the resulting path. + * @param paths to be joined and normalized + */ export function join(...paths) { + if (paths.length === 0) return "."; + let joined; + for(let i = 0, len = paths.length; i < len; ++i){ + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (!joined) joined = path; + else joined += `/${path}`; + } + } + if (!joined) return "."; + return normalize(joined); +} +/** + * Return the relative path from `from` to `to` based on current working directory. + * @param from path in current working directory + * @param to path in current working directory + */ export function relative(from, to) { + assertPath(from); + assertPath(to); + if (from === to) return ""; + from = resolve(from); + to = resolve(to); + if (from === to) return ""; + // Trim any leading backslashes + let fromStart = 1; + const fromEnd = from.length; + for(; fromStart < fromEnd; ++fromStart){ + if (from.charCodeAt(fromStart) !== CHAR_FORWARD_SLASH) break; + } + const fromLen = fromEnd - fromStart; + // Trim any leading backslashes + let toStart = 1; + const toEnd = to.length; + for(; toStart < toEnd; ++toStart){ + if (to.charCodeAt(toStart) !== CHAR_FORWARD_SLASH) break; + } + const toLen = toEnd - toStart; + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for(; i <= length; ++i){ + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='/foo/bar'; to='/foo/bar/baz' + return to.slice(toStart + i + 1); + } else if (i === 0) { + // We get here if `from` is the root + // For example: from='/'; to='/foo' + return to.slice(toStart + i); + } + } else if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='/foo/bar/baz'; to='/foo/bar' + lastCommonSep = i; + } else if (i === 0) { + // We get here if `to` is the root. + // For example: from='/foo'; to='/' + lastCommonSep = 0; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === CHAR_FORWARD_SLASH) lastCommonSep = i; + } + let out = ""; + // Generate the relative path based on the path difference between `to` + // and `from` + for(i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i){ + if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (out.length === 0) out += ".."; + else out += "/.."; + } + } + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) return out + to.slice(toStart + lastCommonSep); + else { + toStart += lastCommonSep; + if (to.charCodeAt(toStart) === CHAR_FORWARD_SLASH) ++toStart; + return to.slice(toStart); + } +} +/** + * Resolves path to a namespace path + * @param path to resolve to namespace + */ export function toNamespacedPath(path) { + // Non-op on posix systems + return path; +} +/** + * Return the directory path of a `path`. + * @param path to determine the directory path for + */ export function dirname(path) { + assertPath(path); + if (path.length === 0) return "."; + const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let end = -1; + let matchedSlash = true; + for(let i = path.length - 1; i >= 1; --i){ + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + if (end === -1) return hasRoot ? "/" : "."; + if (hasRoot && end === 1) return "//"; + return path.slice(0, end); +} +/** + * Return the last portion of a `path`. Trailing directory separators are ignored. + * @param path to process + * @param ext of path directory + */ export function basename(path, ext = "") { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + assertPath(path); + let start = 0; + let end = -1; + let matchedSlash = true; + let i; + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for(i = path.length - 1; i >= 0; --i){ + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + if (start === end) end = firstNonSlashEnd; + else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for(i = path.length - 1; i >= 0; --i){ + if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + if (end === -1) return ""; + return path.slice(start, end); + } +} +/** + * Return the extension of the `path` with leading period. + * @param path with extension + * @returns extension (ex. for `file.ts` returns `.ts`) + */ export function extname(path) { + assertPath(path); + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + for(let i = path.length - 1; i >= 0; --i){ + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot + preDotState === 0 || // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + return ""; + } + return path.slice(startDot, end); +} +/** + * Generate a path from `FormatInputPathObject` object. + * @param pathObject with path + */ export function format(pathObject) { + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError(`The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`); + } + return _format("/", pathObject); +} +/** + * Return a `ParsedPath` object of the `path`. + * @param path to process + */ export function parse(path) { + assertPath(path); + const ret = { + root: "", + dir: "", + base: "", + ext: "", + name: "" + }; + if (path.length === 0) return ret; + const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + let start; + if (isAbsolute) { + ret.root = "/"; + start = 1; + } else { + start = 0; + } + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + // Get non-dir info + for(; i >= start; --i){ + const code = path.charCodeAt(i); + if (code === CHAR_FORWARD_SLASH) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot + preDotState === 0 || // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + if (end !== -1) { + if (startPart === 0 && isAbsolute) { + ret.base = ret.name = path.slice(1, end); + } else { + ret.base = ret.name = path.slice(startPart, end); + } + } + } else { + if (startPart === 0 && isAbsolute) { + ret.name = path.slice(1, startDot); + ret.base = path.slice(1, end); + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + } + ret.ext = path.slice(startDot, end); + } + if (startPart > 0) ret.dir = path.slice(0, startPart - 1); + else if (isAbsolute) ret.dir = "/"; + return ret; +} +/** + * Converts a file URL to a path string. + * + * ```ts + * import { fromFileUrl } from "https://deno.land/std@$STD_VERSION/path/posix.ts"; + * fromFileUrl("file:///home/foo"); // "/home/foo" + * ``` + * @param url of a file URL + */ export function fromFileUrl(url) { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + return decodeURIComponent(url.pathname.replace(/%(?![0-9A-Fa-f]{2})/g, "%25")); +} +/** + * Converts a path string to a file URL. + * + * ```ts + * import { toFileUrl } from "https://deno.land/std@$STD_VERSION/path/posix.ts"; + * toFileUrl("/home/foo"); // new URL("file:///home/foo") + * ``` + * @param path to convert to file URL + */ export function toFileUrl(path) { + if (!isAbsolute(path)) { + throw new TypeError("Must be an absolute path."); + } + const url = new URL("file:///"); + url.pathname = encodeWhitespace(path.replace(/%/g, "%25").replace(/\\/g, "%5C")); + return url; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE3MC4wL3BhdGgvcG9zaXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyMiB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cbi8vIFBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9icm93c2VyaWZ5L3BhdGgtYnJvd3NlcmlmeS9cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHR5cGUgeyBGb3JtYXRJbnB1dFBhdGhPYmplY3QsIFBhcnNlZFBhdGggfSBmcm9tIFwiLi9faW50ZXJmYWNlLnRzXCI7XG5pbXBvcnQgeyBDSEFSX0RPVCwgQ0hBUl9GT1JXQVJEX1NMQVNIIH0gZnJvbSBcIi4vX2NvbnN0YW50cy50c1wiO1xuXG5pbXBvcnQge1xuICBfZm9ybWF0LFxuICBhc3NlcnRQYXRoLFxuICBlbmNvZGVXaGl0ZXNwYWNlLFxuICBpc1Bvc2l4UGF0aFNlcGFyYXRvcixcbiAgbm9ybWFsaXplU3RyaW5nLFxufSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuXG5leHBvcnQgY29uc3Qgc2VwID0gXCIvXCI7XG5leHBvcnQgY29uc3QgZGVsaW1pdGVyID0gXCI6XCI7XG5cbi8vIHBhdGgucmVzb2x2ZShbZnJvbSAuLi5dLCB0bylcbi8qKlxuICogUmVzb2x2ZXMgYHBhdGhTZWdtZW50c2AgaW50byBhbiBhYnNvbHV0ZSBwYXRoLlxuICogQHBhcmFtIHBhdGhTZWdtZW50cyBhbiBhcnJheSBvZiBwYXRoIHNlZ21lbnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlKC4uLnBhdGhTZWdtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICBsZXQgcmVzb2x2ZWRQYXRoID0gXCJcIjtcbiAgbGV0IHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZTtcblxuICBmb3IgKGxldCBpID0gcGF0aFNlZ21lbnRzLmxlbmd0aCAtIDE7IGkgPj0gLTEgJiYgIXJlc29sdmVkQWJzb2x1dGU7IGktLSkge1xuICAgIGxldCBwYXRoOiBzdHJpbmc7XG5cbiAgICBpZiAoaSA+PSAwKSBwYXRoID0gcGF0aFNlZ21lbnRzW2ldO1xuICAgIGVsc2Uge1xuICAgICAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgICAgIGNvbnN0IHsgRGVubyB9ID0gZ2xvYmFsVGhpcyBhcyBhbnk7XG4gICAgICBpZiAodHlwZW9mIERlbm8/LmN3ZCAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJSZXNvbHZlZCBhIHJlbGF0aXZlIHBhdGggd2l0aG91dCBhIENXRC5cIik7XG4gICAgICB9XG4gICAgICBwYXRoID0gRGVuby5jd2QoKTtcbiAgICB9XG5cbiAgICBhc3NlcnRQYXRoKHBhdGgpO1xuXG4gICAgLy8gU2tpcCBlbXB0eSBlbnRyaWVzXG4gICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICByZXNvbHZlZFBhdGggPSBgJHtwYXRofS8ke3Jlc29sdmVkUGF0aH1gO1xuICAgIHJlc29sdmVkQWJzb2x1dGUgPSBwYXRoLmNoYXJDb2RlQXQoMCkgPT09IENIQVJfRk9SV0FSRF9TTEFTSDtcbiAgfVxuXG4gIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHBhdGggc2hvdWxkIGJlIHJlc29sdmVkIHRvIGEgZnVsbCBhYnNvbHV0ZSBwYXRoLCBidXRcbiAgLy8gaGFuZGxlIHJlbGF0aXZlIHBhdGhzIHRvIGJlIHNhZmUgKG1pZ2h0IGhhcHBlbiB3aGVuIHByb2Nlc3MuY3dkKCkgZmFpbHMpXG5cbiAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gIHJlc29sdmVkUGF0aCA9IG5vcm1hbGl6ZVN0cmluZyhcbiAgICByZXNvbHZlZFBhdGgsXG4gICAgIXJlc29sdmVkQWJzb2x1dGUsXG4gICAgXCIvXCIsXG4gICAgaXNQb3NpeFBhdGhTZXBhcmF0b3IsXG4gICk7XG5cbiAgaWYgKHJlc29sdmVkQWJzb2x1dGUpIHtcbiAgICBpZiAocmVzb2x2ZWRQYXRoLmxlbmd0aCA+IDApIHJldHVybiBgLyR7cmVzb2x2ZWRQYXRofWA7XG4gICAgZWxzZSByZXR1cm4gXCIvXCI7XG4gIH0gZWxzZSBpZiAocmVzb2x2ZWRQYXRoLmxlbmd0aCA+IDApIHJldHVybiByZXNvbHZlZFBhdGg7XG4gIGVsc2UgcmV0dXJuIFwiLlwiO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSB0aGUgYHBhdGhgLCByZXNvbHZpbmcgYCcuLidgIGFuZCBgJy4nYCBzZWdtZW50cy5cbiAqIE5vdGUgdGhhdCByZXNvbHZpbmcgdGhlc2Ugc2VnbWVudHMgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGF0IGFsbCB3aWxsIGJlIGVsaW1pbmF0ZWQuXG4gKiBBIGAnLi4nYCBhdCB0aGUgdG9wLWxldmVsIHdpbGwgYmUgcHJlc2VydmVkLCBhbmQgYW4gZW1wdHkgcGF0aCBpcyBjYW5vbmljYWxseSBgJy4nYC5cbiAqIEBwYXJhbSBwYXRoIHRvIGJlIG5vcm1hbGl6ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuXG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFwiLlwiO1xuXG4gIGNvbnN0IGlzQWJzb2x1dGUgPSBwYXRoLmNoYXJDb2RlQXQoMCkgPT09IENIQVJfRk9SV0FSRF9TTEFTSDtcbiAgY29uc3QgdHJhaWxpbmdTZXBhcmF0b3IgPVxuICAgIHBhdGguY2hhckNvZGVBdChwYXRoLmxlbmd0aCAtIDEpID09PSBDSEFSX0ZPUldBUkRfU0xBU0g7XG5cbiAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gIHBhdGggPSBub3JtYWxpemVTdHJpbmcocGF0aCwgIWlzQWJzb2x1dGUsIFwiL1wiLCBpc1Bvc2l4UGF0aFNlcGFyYXRvcik7XG5cbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwICYmICFpc0Fic29sdXRlKSBwYXRoID0gXCIuXCI7XG4gIGlmIChwYXRoLmxlbmd0aCA+IDAgJiYgdHJhaWxpbmdTZXBhcmF0b3IpIHBhdGggKz0gXCIvXCI7XG5cbiAgaWYgKGlzQWJzb2x1dGUpIHJldHVybiBgLyR7cGF0aH1gO1xuICByZXR1cm4gcGF0aDtcbn1cblxuLyoqXG4gKiBWZXJpZmllcyB3aGV0aGVyIHByb3ZpZGVkIHBhdGggaXMgYWJzb2x1dGVcbiAqIEBwYXJhbSBwYXRoIHRvIGJlIHZlcmlmaWVkIGFzIGFic29sdXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fic29sdXRlKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuICByZXR1cm4gcGF0aC5sZW5ndGggPiAwICYmIHBhdGguY2hhckNvZGVBdCgwKSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIO1xufVxuXG4vKipcbiAqIEpvaW4gYWxsIGdpdmVuIGEgc2VxdWVuY2Ugb2YgYHBhdGhzYCx0aGVuIG5vcm1hbGl6ZXMgdGhlIHJlc3VsdGluZyBwYXRoLlxuICogQHBhcmFtIHBhdGhzIHRvIGJlIGpvaW5lZCBhbmQgbm9ybWFsaXplZFxuICovXG5leHBvcnQgZnVuY3Rpb24gam9pbiguLi5wYXRoczogc3RyaW5nW10pOiBzdHJpbmcge1xuICBpZiAocGF0aHMubGVuZ3RoID09PSAwKSByZXR1cm4gXCIuXCI7XG4gIGxldCBqb2luZWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHBhdGhzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgY29uc3QgcGF0aCA9IHBhdGhzW2ldO1xuICAgIGFzc2VydFBhdGgocGF0aCk7XG4gICAgaWYgKHBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFqb2luZWQpIGpvaW5lZCA9IHBhdGg7XG4gICAgICBlbHNlIGpvaW5lZCArPSBgLyR7cGF0aH1gO1xuICAgIH1cbiAgfVxuICBpZiAoIWpvaW5lZCkgcmV0dXJuIFwiLlwiO1xuICByZXR1cm4gbm9ybWFsaXplKGpvaW5lZCk7XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gYGZyb21gIHRvIGB0b2AgYmFzZWQgb24gY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS5cbiAqIEBwYXJhbSBmcm9tIHBhdGggaW4gY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeVxuICogQHBhcmFtIHRvIHBhdGggaW4gY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVsYXRpdmUoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKTogc3RyaW5nIHtcbiAgYXNzZXJ0UGF0aChmcm9tKTtcbiAgYXNzZXJ0UGF0aCh0byk7XG5cbiAgaWYgKGZyb20gPT09IHRvKSByZXR1cm4gXCJcIjtcblxuICBmcm9tID0gcmVzb2x2ZShmcm9tKTtcbiAgdG8gPSByZXNvbHZlKHRvKTtcblxuICBpZiAoZnJvbSA9PT0gdG8pIHJldHVybiBcIlwiO1xuXG4gIC8vIFRyaW0gYW55IGxlYWRpbmcgYmFja3NsYXNoZXNcbiAgbGV0IGZyb21TdGFydCA9IDE7XG4gIGNvbnN0IGZyb21FbmQgPSBmcm9tLmxlbmd0aDtcbiAgZm9yICg7IGZyb21TdGFydCA8IGZyb21FbmQ7ICsrZnJvbVN0YXJ0KSB7XG4gICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQpICE9PSBDSEFSX0ZPUldBUkRfU0xBU0gpIGJyZWFrO1xuICB9XG4gIGNvbnN0IGZyb21MZW4gPSBmcm9tRW5kIC0gZnJvbVN0YXJ0O1xuXG4gIC8vIFRyaW0gYW55IGxlYWRpbmcgYmFja3NsYXNoZXNcbiAgbGV0IHRvU3RhcnQgPSAxO1xuICBjb25zdCB0b0VuZCA9IHRvLmxlbmd0aDtcbiAgZm9yICg7IHRvU3RhcnQgPCB0b0VuZDsgKyt0b1N0YXJ0KSB7XG4gICAgaWYgKHRvLmNoYXJDb2RlQXQodG9TdGFydCkgIT09IENIQVJfRk9SV0FSRF9TTEFTSCkgYnJlYWs7XG4gIH1cbiAgY29uc3QgdG9MZW4gPSB0b0VuZCAtIHRvU3RhcnQ7XG5cbiAgLy8gQ29tcGFyZSBwYXRocyB0byBmaW5kIHRoZSBsb25nZXN0IGNvbW1vbiBwYXRoIGZyb20gcm9vdFxuICBjb25zdCBsZW5ndGggPSBmcm9tTGVuIDwgdG9MZW4gPyBmcm9tTGVuIDogdG9MZW47XG4gIGxldCBsYXN0Q29tbW9uU2VwID0gLTE7XG4gIGxldCBpID0gMDtcbiAgZm9yICg7IGkgPD0gbGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoaSA9PT0gbGVuZ3RoKSB7XG4gICAgICBpZiAodG9MZW4gPiBsZW5ndGgpIHtcbiAgICAgICAgaWYgKHRvLmNoYXJDb2RlQXQodG9TdGFydCArIGkpID09PSBDSEFSX0ZPUldBUkRfU0xBU0gpIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgZnJvbWAgaXMgdGhlIGV4YWN0IGJhc2UgcGF0aCBmb3IgYHRvYC5cbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nL2Zvby9iYXInOyB0bz0nL2Zvby9iYXIvYmF6J1xuICAgICAgICAgIHJldHVybiB0by5zbGljZSh0b1N0YXJ0ICsgaSArIDEpO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgZnJvbWAgaXMgdGhlIHJvb3RcbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nLyc7IHRvPScvZm9vJ1xuICAgICAgICAgIHJldHVybiB0by5zbGljZSh0b1N0YXJ0ICsgaSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZnJvbUxlbiA+IGxlbmd0aCkge1xuICAgICAgICBpZiAoZnJvbS5jaGFyQ29kZUF0KGZyb21TdGFydCArIGkpID09PSBDSEFSX0ZPUldBUkRfU0xBU0gpIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgdG9gIGlzIHRoZSBleGFjdCBiYXNlIHBhdGggZm9yIGBmcm9tYC5cbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nL2Zvby9iYXIvYmF6JzsgdG89Jy9mb28vYmFyJ1xuICAgICAgICAgIGxhc3RDb21tb25TZXAgPSBpO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgdG9gIGlzIHRoZSByb290LlxuICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPScvZm9vJzsgdG89Jy8nXG4gICAgICAgICAgbGFzdENvbW1vblNlcCA9IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjb25zdCBmcm9tQ29kZSA9IGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQgKyBpKTtcbiAgICBjb25zdCB0b0NvZGUgPSB0by5jaGFyQ29kZUF0KHRvU3RhcnQgKyBpKTtcbiAgICBpZiAoZnJvbUNvZGUgIT09IHRvQ29kZSkgYnJlYWs7XG4gICAgZWxzZSBpZiAoZnJvbUNvZGUgPT09IENIQVJfRk9SV0FSRF9TTEFTSCkgbGFzdENvbW1vblNlcCA9IGk7XG4gIH1cblxuICBsZXQgb3V0ID0gXCJcIjtcbiAgLy8gR2VuZXJhdGUgdGhlIHJlbGF0aXZlIHBhdGggYmFzZWQgb24gdGhlIHBhdGggZGlmZmVyZW5jZSBiZXR3ZWVuIGB0b2BcbiAgLy8gYW5kIGBmcm9tYFxuICBmb3IgKGkgPSBmcm9tU3RhcnQgKyBsYXN0Q29tbW9uU2VwICsgMTsgaSA8PSBmcm9tRW5kOyArK2kpIHtcbiAgICBpZiAoaSA9PT0gZnJvbUVuZCB8fCBmcm9tLmNoYXJDb2RlQXQoaSkgPT09IENIQVJfRk9SV0FSRF9TTEFTSCkge1xuICAgICAgaWYgKG91dC5sZW5ndGggPT09IDApIG91dCArPSBcIi4uXCI7XG4gICAgICBlbHNlIG91dCArPSBcIi8uLlwiO1xuICAgIH1cbiAgfVxuXG4gIC8vIExhc3RseSwgYXBwZW5kIHRoZSByZXN0IG9mIHRoZSBkZXN0aW5hdGlvbiAoYHRvYCkgcGF0aCB0aGF0IGNvbWVzIGFmdGVyXG4gIC8vIHRoZSBjb21tb24gcGF0aCBwYXJ0c1xuICBpZiAob3V0Lmxlbmd0aCA+IDApIHJldHVybiBvdXQgKyB0by5zbGljZSh0b1N0YXJ0ICsgbGFzdENvbW1vblNlcCk7XG4gIGVsc2Uge1xuICAgIHRvU3RhcnQgKz0gbGFzdENvbW1vblNlcDtcbiAgICBpZiAodG8uY2hhckNvZGVBdCh0b1N0YXJ0KSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIKSArK3RvU3RhcnQ7XG4gICAgcmV0dXJuIHRvLnNsaWNlKHRvU3RhcnQpO1xuICB9XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgcGF0aCB0byBhIG5hbWVzcGFjZSBwYXRoXG4gKiBAcGFyYW0gcGF0aCB0byByZXNvbHZlIHRvIG5hbWVzcGFjZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9OYW1lc3BhY2VkUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBOb24tb3Agb24gcG9zaXggc3lzdGVtc1xuICByZXR1cm4gcGF0aDtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIGRpcmVjdG9yeSBwYXRoIG9mIGEgYHBhdGhgLlxuICogQHBhcmFtIHBhdGggdG8gZGV0ZXJtaW5lIHRoZSBkaXJlY3RvcnkgcGF0aCBmb3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpcm5hbWUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgYXNzZXJ0UGF0aChwYXRoKTtcbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSByZXR1cm4gXCIuXCI7XG4gIGNvbnN0IGhhc1Jvb3QgPSBwYXRoLmNoYXJDb2RlQXQoMCkgPT09IENIQVJfRk9SV0FSRF9TTEFTSDtcbiAgbGV0IGVuZCA9IC0xO1xuICBsZXQgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgZm9yIChsZXQgaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSAxOyAtLWkpIHtcbiAgICBpZiAocGF0aC5jaGFyQ29kZUF0KGkpID09PSBDSEFSX0ZPUldBUkRfU0xBU0gpIHtcbiAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgIGVuZCA9IGk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvclxuICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuZCA9PT0gLTEpIHJldHVybiBoYXNSb290ID8gXCIvXCIgOiBcIi5cIjtcbiAgaWYgKGhhc1Jvb3QgJiYgZW5kID09PSAxKSByZXR1cm4gXCIvL1wiO1xuICByZXR1cm4gcGF0aC5zbGljZSgwLCBlbmQpO1xufVxuXG4vKipcbiAqIFJldHVybiB0aGUgbGFzdCBwb3J0aW9uIG9mIGEgYHBhdGhgLiBUcmFpbGluZyBkaXJlY3Rvcnkgc2VwYXJhdG9ycyBhcmUgaWdub3JlZC5cbiAqIEBwYXJhbSBwYXRoIHRvIHByb2Nlc3NcbiAqIEBwYXJhbSBleHQgb2YgcGF0aCBkaXJlY3RvcnlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJhc2VuYW1lKHBhdGg6IHN0cmluZywgZXh0ID0gXCJcIik6IHN0cmluZyB7XG4gIGlmIChleHQgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZXh0ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJleHRcIiBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJyk7XG4gIH1cbiAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICBsZXQgc3RhcnQgPSAwO1xuICBsZXQgZW5kID0gLTE7XG4gIGxldCBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICBsZXQgaTogbnVtYmVyO1xuXG4gIGlmIChleHQgIT09IHVuZGVmaW5lZCAmJiBleHQubGVuZ3RoID4gMCAmJiBleHQubGVuZ3RoIDw9IHBhdGgubGVuZ3RoKSB7XG4gICAgaWYgKGV4dC5sZW5ndGggPT09IHBhdGgubGVuZ3RoICYmIGV4dCA9PT0gcGF0aCkgcmV0dXJuIFwiXCI7XG4gICAgbGV0IGV4dElkeCA9IGV4dC5sZW5ndGggLSAxO1xuICAgIGxldCBmaXJzdE5vblNsYXNoRW5kID0gLTE7XG4gICAgZm9yIChpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgIGlmIChjb2RlID09PSBDSEFSX0ZPUldBUkRfU0xBU0gpIHtcbiAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgICAgc3RhcnQgPSBpICsgMTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZpcnN0Tm9uU2xhc2hFbmQgPT09IC0xKSB7XG4gICAgICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIHJlbWVtYmVyIHRoaXMgaW5kZXggaW4gY2FzZVxuICAgICAgICAgIC8vIHdlIG5lZWQgaXQgaWYgdGhlIGV4dGVuc2lvbiBlbmRzIHVwIG5vdCBtYXRjaGluZ1xuICAgICAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgICAgIGZpcnN0Tm9uU2xhc2hFbmQgPSBpICsgMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXh0SWR4ID49IDApIHtcbiAgICAgICAgICAvLyBUcnkgdG8gbWF0Y2ggdGhlIGV4cGxpY2l0IGV4dGVuc2lvblxuICAgICAgICAgIGlmIChjb2RlID09PSBleHQuY2hhckNvZGVBdChleHRJZHgpKSB7XG4gICAgICAgICAgICBpZiAoLS1leHRJZHggPT09IC0xKSB7XG4gICAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgdGhlIGV4dGVuc2lvbiwgc28gbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyIHBhdGhcbiAgICAgICAgICAgICAgLy8gY29tcG9uZW50XG4gICAgICAgICAgICAgIGVuZCA9IGk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEV4dGVuc2lvbiBkb2VzIG5vdCBtYXRjaCwgc28gb3VyIHJlc3VsdCBpcyB0aGUgZW50aXJlIHBhdGhcbiAgICAgICAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgICAgICAgZXh0SWR4ID0gLTE7XG4gICAgICAgICAgICBlbmQgPSBmaXJzdE5vblNsYXNoRW5kO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdGFydCA9PT0gZW5kKSBlbmQgPSBmaXJzdE5vblNsYXNoRW5kO1xuICAgIGVsc2UgaWYgKGVuZCA9PT0gLTEpIGVuZCA9IHBhdGgubGVuZ3RoO1xuICAgIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICB9IGVsc2Uge1xuICAgIGZvciAoaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgIGlmIChwYXRoLmNoYXJDb2RlQXQoaSkgPT09IENIQVJfRk9SV0FSRF9TTEFTSCkge1xuICAgICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgICAvLyBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZywgc3RvcCBub3dcbiAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICBzdGFydCA9IGkgKyAxO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGVuZCA9PT0gLTEpIHtcbiAgICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91clxuICAgICAgICAvLyBwYXRoIGNvbXBvbmVudFxuICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgICAgZW5kID0gaSArIDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVuZCA9PT0gLTEpIHJldHVybiBcIlwiO1xuICAgIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSBleHRlbnNpb24gb2YgdGhlIGBwYXRoYCB3aXRoIGxlYWRpbmcgcGVyaW9kLlxuICogQHBhcmFtIHBhdGggd2l0aCBleHRlbnNpb25cbiAqIEByZXR1cm5zIGV4dGVuc2lvbiAoZXguIGZvciBgZmlsZS50c2AgcmV0dXJucyBgLnRzYClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dG5hbWUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgYXNzZXJ0UGF0aChwYXRoKTtcbiAgbGV0IHN0YXJ0RG90ID0gLTE7XG4gIGxldCBzdGFydFBhcnQgPSAwO1xuICBsZXQgZW5kID0gLTE7XG4gIGxldCBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICAvLyBUcmFjayB0aGUgc3RhdGUgb2YgY2hhcmFjdGVycyAoaWYgYW55KSB3ZSBzZWUgYmVmb3JlIG91ciBmaXJzdCBkb3QgYW5kXG4gIC8vIGFmdGVyIGFueSBwYXRoIHNlcGFyYXRvciB3ZSBmaW5kXG4gIGxldCBwcmVEb3RTdGF0ZSA9IDA7XG4gIGZvciAobGV0IGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICBpZiAoY29kZSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIKSB7XG4gICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICBzdGFydFBhcnQgPSBpICsgMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGVuZCA9PT0gLTEpIHtcbiAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCBtYXJrIHRoaXMgYXMgdGhlIGVuZCBvZiBvdXJcbiAgICAgIC8vIGV4dGVuc2lvblxuICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgICBlbmQgPSBpICsgMTtcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IENIQVJfRE9UKSB7XG4gICAgICAvLyBJZiB0aGlzIGlzIG91ciBmaXJzdCBkb3QsIG1hcmsgaXQgYXMgdGhlIHN0YXJ0IG9mIG91ciBleHRlbnNpb25cbiAgICAgIGlmIChzdGFydERvdCA9PT0gLTEpIHN0YXJ0RG90ID0gaTtcbiAgICAgIGVsc2UgaWYgKHByZURvdFN0YXRlICE9PSAxKSBwcmVEb3RTdGF0ZSA9IDE7XG4gICAgfSBlbHNlIGlmIChzdGFydERvdCAhPT0gLTEpIHtcbiAgICAgIC8vIFdlIHNhdyBhIG5vbi1kb3QgYW5kIG5vbi1wYXRoIHNlcGFyYXRvciBiZWZvcmUgb3VyIGRvdCwgc28gd2Ugc2hvdWxkXG4gICAgICAvLyBoYXZlIGEgZ29vZCBjaGFuY2UgYXQgaGF2aW5nIGEgbm9uLWVtcHR5IGV4dGVuc2lvblxuICAgICAgcHJlRG90U3RhdGUgPSAtMTtcbiAgICB9XG4gIH1cblxuICBpZiAoXG4gICAgc3RhcnREb3QgPT09IC0xIHx8XG4gICAgZW5kID09PSAtMSB8fFxuICAgIC8vIFdlIHNhdyBhIG5vbi1kb3QgY2hhcmFjdGVyIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgZG90XG4gICAgcHJlRG90U3RhdGUgPT09IDAgfHxcbiAgICAvLyBUaGUgKHJpZ2h0LW1vc3QpIHRyaW1tZWQgcGF0aCBjb21wb25lbnQgaXMgZXhhY3RseSAnLi4nXG4gICAgKHByZURvdFN0YXRlID09PSAxICYmIHN0YXJ0RG90ID09PSBlbmQgLSAxICYmIHN0YXJ0RG90ID09PSBzdGFydFBhcnQgKyAxKVxuICApIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuICByZXR1cm4gcGF0aC5zbGljZShzdGFydERvdCwgZW5kKTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHBhdGggZnJvbSBgRm9ybWF0SW5wdXRQYXRoT2JqZWN0YCBvYmplY3QuXG4gKiBAcGFyYW0gcGF0aE9iamVjdCB3aXRoIHBhdGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdChwYXRoT2JqZWN0OiBGb3JtYXRJbnB1dFBhdGhPYmplY3QpOiBzdHJpbmcge1xuICBpZiAocGF0aE9iamVjdCA9PT0gbnVsbCB8fCB0eXBlb2YgcGF0aE9iamVjdCAhPT0gXCJvYmplY3RcIikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBgVGhlIFwicGF0aE9iamVjdFwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgJHt0eXBlb2YgcGF0aE9iamVjdH1gLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIF9mb3JtYXQoXCIvXCIsIHBhdGhPYmplY3QpO1xufVxuXG4vKipcbiAqIFJldHVybiBhIGBQYXJzZWRQYXRoYCBvYmplY3Qgb2YgdGhlIGBwYXRoYC5cbiAqIEBwYXJhbSBwYXRoIHRvIHByb2Nlc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKHBhdGg6IHN0cmluZyk6IFBhcnNlZFBhdGgge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuXG4gIGNvbnN0IHJldDogUGFyc2VkUGF0aCA9IHsgcm9vdDogXCJcIiwgZGlyOiBcIlwiLCBiYXNlOiBcIlwiLCBleHQ6IFwiXCIsIG5hbWU6IFwiXCIgfTtcbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSByZXR1cm4gcmV0O1xuICBjb25zdCBpc0Fic29sdXRlID0gcGF0aC5jaGFyQ29kZUF0KDApID09PSBDSEFSX0ZPUldBUkRfU0xBU0g7XG4gIGxldCBzdGFydDogbnVtYmVyO1xuICBpZiAoaXNBYnNvbHV0ZSkge1xuICAgIHJldC5yb290ID0gXCIvXCI7XG4gICAgc3RhcnQgPSAxO1xuICB9IGVsc2Uge1xuICAgIHN0YXJ0ID0gMDtcbiAgfVxuICBsZXQgc3RhcnREb3QgPSAtMTtcbiAgbGV0IHN0YXJ0UGFydCA9IDA7XG4gIGxldCBlbmQgPSAtMTtcbiAgbGV0IG1hdGNoZWRTbGFzaCA9IHRydWU7XG4gIGxldCBpID0gcGF0aC5sZW5ndGggLSAxO1xuXG4gIC8vIFRyYWNrIHRoZSBzdGF0ZSBvZiBjaGFyYWN0ZXJzIChpZiBhbnkpIHdlIHNlZSBiZWZvcmUgb3VyIGZpcnN0IGRvdCBhbmRcbiAgLy8gYWZ0ZXIgYW55IHBhdGggc2VwYXJhdG9yIHdlIGZpbmRcbiAgbGV0IHByZURvdFN0YXRlID0gMDtcblxuICAvLyBHZXQgbm9uLWRpciBpbmZvXG4gIGZvciAoOyBpID49IHN0YXJ0OyAtLWkpIHtcbiAgICBjb25zdCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjb2RlID09PSBDSEFSX0ZPUldBUkRfU0xBU0gpIHtcbiAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAvLyBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZywgc3RvcCBub3dcbiAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgIHN0YXJ0UGFydCA9IGkgKyAxO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoZW5kID09PSAtMSkge1xuICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91clxuICAgICAgLy8gZXh0ZW5zaW9uXG4gICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgIGVuZCA9IGkgKyAxO1xuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gQ0hBUl9ET1QpIHtcbiAgICAgIC8vIElmIHRoaXMgaXMgb3VyIGZpcnN0IGRvdCwgbWFyayBpdCBhcyB0aGUgc3RhcnQgb2Ygb3VyIGV4dGVuc2lvblxuICAgICAgaWYgKHN0YXJ0RG90ID09PSAtMSkgc3RhcnREb3QgPSBpO1xuICAgICAgZWxzZSBpZiAocHJlRG90U3RhdGUgIT09IDEpIHByZURvdFN0YXRlID0gMTtcbiAgICB9IGVsc2UgaWYgKHN0YXJ0RG90ICE9PSAtMSkge1xuICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBhbmQgbm9uLXBhdGggc2VwYXJhdG9yIGJlZm9yZSBvdXIgZG90LCBzbyB3ZSBzaG91bGRcbiAgICAgIC8vIGhhdmUgYSBnb29kIGNoYW5jZSBhdCBoYXZpbmcgYSBub24tZW1wdHkgZXh0ZW5zaW9uXG4gICAgICBwcmVEb3RTdGF0ZSA9IC0xO1xuICAgIH1cbiAgfVxuXG4gIGlmIChcbiAgICBzdGFydERvdCA9PT0gLTEgfHxcbiAgICBlbmQgPT09IC0xIHx8XG4gICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBjaGFyYWN0ZXIgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBkb3RcbiAgICBwcmVEb3RTdGF0ZSA9PT0gMCB8fFxuICAgIC8vIFRoZSAocmlnaHQtbW9zdCkgdHJpbW1lZCBwYXRoIGNvbXBvbmVudCBpcyBleGFjdGx5ICcuLidcbiAgICAocHJlRG90U3RhdGUgPT09IDEgJiYgc3RhcnREb3QgPT09IGVuZCAtIDEgJiYgc3RhcnREb3QgPT09IHN0YXJ0UGFydCArIDEpXG4gICkge1xuICAgIGlmIChlbmQgIT09IC0xKSB7XG4gICAgICBpZiAoc3RhcnRQYXJ0ID09PSAwICYmIGlzQWJzb2x1dGUpIHtcbiAgICAgICAgcmV0LmJhc2UgPSByZXQubmFtZSA9IHBhdGguc2xpY2UoMSwgZW5kKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldC5iYXNlID0gcmV0Lm5hbWUgPSBwYXRoLnNsaWNlKHN0YXJ0UGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKHN0YXJ0UGFydCA9PT0gMCAmJiBpc0Fic29sdXRlKSB7XG4gICAgICByZXQubmFtZSA9IHBhdGguc2xpY2UoMSwgc3RhcnREb3QpO1xuICAgICAgcmV0LmJhc2UgPSBwYXRoLnNsaWNlKDEsIGVuZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldC5uYW1lID0gcGF0aC5zbGljZShzdGFydFBhcnQsIHN0YXJ0RG90KTtcbiAgICAgIHJldC5iYXNlID0gcGF0aC5zbGljZShzdGFydFBhcnQsIGVuZCk7XG4gICAgfVxuICAgIHJldC5leHQgPSBwYXRoLnNsaWNlKHN0YXJ0RG90LCBlbmQpO1xuICB9XG5cbiAgaWYgKHN0YXJ0UGFydCA+IDApIHJldC5kaXIgPSBwYXRoLnNsaWNlKDAsIHN0YXJ0UGFydCAtIDEpO1xuICBlbHNlIGlmIChpc0Fic29sdXRlKSByZXQuZGlyID0gXCIvXCI7XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZpbGUgVVJMIHRvIGEgcGF0aCBzdHJpbmcuXG4gKlxuICogYGBgdHNcbiAqICAgICAgaW1wb3J0IHsgZnJvbUZpbGVVcmwgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9wYXRoL3Bvc2l4LnRzXCI7XG4gKiAgICAgIGZyb21GaWxlVXJsKFwiZmlsZTovLy9ob21lL2Zvb1wiKTsgLy8gXCIvaG9tZS9mb29cIlxuICogYGBgXG4gKiBAcGFyYW0gdXJsIG9mIGEgZmlsZSBVUkxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZyb21GaWxlVXJsKHVybDogc3RyaW5nIHwgVVJMKTogc3RyaW5nIHtcbiAgdXJsID0gdXJsIGluc3RhbmNlb2YgVVJMID8gdXJsIDogbmV3IFVSTCh1cmwpO1xuICBpZiAodXJsLnByb3RvY29sICE9IFwiZmlsZTpcIikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJNdXN0IGJlIGEgZmlsZSBVUkwuXCIpO1xuICB9XG4gIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoXG4gICAgdXJsLnBhdGhuYW1lLnJlcGxhY2UoLyUoPyFbMC05QS1GYS1mXXsyfSkvZywgXCIlMjVcIiksXG4gICk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBwYXRoIHN0cmluZyB0byBhIGZpbGUgVVJMLlxuICpcbiAqIGBgYHRzXG4gKiAgICAgIGltcG9ydCB7IHRvRmlsZVVybCB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL3BhdGgvcG9zaXgudHNcIjtcbiAqICAgICAgdG9GaWxlVXJsKFwiL2hvbWUvZm9vXCIpOyAvLyBuZXcgVVJMKFwiZmlsZTovLy9ob21lL2Zvb1wiKVxuICogYGBgXG4gKiBAcGFyYW0gcGF0aCB0byBjb252ZXJ0IHRvIGZpbGUgVVJMXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0ZpbGVVcmwocGF0aDogc3RyaW5nKTogVVJMIHtcbiAgaWYgKCFpc0Fic29sdXRlKHBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC5cIik7XG4gIH1cbiAgY29uc3QgdXJsID0gbmV3IFVSTChcImZpbGU6Ly8vXCIpO1xuICB1cmwucGF0aG5hbWUgPSBlbmNvZGVXaGl0ZXNwYWNlKFxuICAgIHBhdGgucmVwbGFjZSgvJS9nLCBcIiUyNVwiKS5yZXBsYWNlKC9cXFxcL2csIFwiJTVDXCIpLFxuICApO1xuICByZXR1cm4gdXJsO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxpREFBaUQ7QUFDakQsNkRBQTZEO0FBQzdELHFDQUFxQztBQUdyQyxTQUFTLFFBQVEsRUFBRSxrQkFBa0IsUUFBUSxrQkFBa0I7QUFFL0QsU0FDRSxPQUFPLEVBQ1AsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixvQkFBb0IsRUFDcEIsZUFBZSxRQUNWLGFBQWE7QUFFcEIsT0FBTyxNQUFNLE1BQU0sSUFBSTtB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 +// denoCacheMetadata=15495549800798984198,17305895827774113173
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/6bd2e3f5843f0a5debff31a300e1d6176f32f60a59fad82367571366ca5e83ab.js b/vendor/gen/https/deno.land/6bd2e3f5843f0a5debff31a300e1d6176f32f60a59fad82367571366ca5e83ab.js new file mode 100644 index 0000000..694e4ee --- /dev/null +++ b/vendor/gen/https/deno.land/6bd2e3f5843f0a5debff31a300e1d6176f32f60a59fad82367571366ca5e83ab.js @@ -0,0 +1,58 @@ +import { posix } from "../deps/path.ts"; +import { isPlainObject } from "./utils/object.ts"; +/** + * Class to load data files. + */ export default class DataLoader { + /** List of extensions to load data files and the loader used */ formats; + constructor(options){ + this.formats = options.formats; + } + load(entry) { + if (entry.type === "directory") { + return this.#loadDirectory(entry); + } + return this.#loadFile(entry); + } + /** Load a _data.* file */ async #loadFile(entry) { + const format = this.formats.search(entry.path); + if (!format?.dataLoader) { + return; + } + return await entry.getContent(format.dataLoader); + } + /** Load a _data directory */ async #loadDirectory(entry) { + const data = {}; + for await (const child of entry.children.values()){ + await this.loadEntry(child, data); + } + return data; + } + /** + * Load a data entry inside a _data directory + * and append the data to the data object + */ async loadEntry(entry, data) { + if (entry.name.startsWith(".") || entry.name.startsWith("_")) { + return; + } + if (entry.type === "file") { + const name = posix.basename(entry.name, posix.extname(entry.name)); + const fileData = await this.#loadFile(entry) || {}; + if (fileData.content && Object.keys(fileData).length === 1) { + data[name] = fileData.content; + } else { + const target = data[name]; + if (isPlainObject(fileData) || target) { + data[name] = Object.assign(target || {}, fileData); + } else { + data[name] = fileData; + } + } + return; + } + if (entry.type === "directory") { + data[entry.name] = await this.#loadDirectory(entry); + } + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS9kYXRhX2xvYWRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwb3NpeCB9IGZyb20gXCIuLi9kZXBzL3BhdGgudHNcIjtcbmltcG9ydCB7IGlzUGxhaW5PYmplY3QgfSBmcm9tIFwiLi91dGlscy9vYmplY3QudHNcIjtcblxuaW1wb3J0IHR5cGUgeyBFbnRyeSB9IGZyb20gXCIuL2ZzLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFJhd0RhdGEgfSBmcm9tIFwiLi9maWxlLnRzXCI7XG5pbXBvcnQgdHlwZSBGb3JtYXRzIGZyb20gXCIuL2Zvcm1hdHMudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcbiAgLyoqIFRoZSByZWdpc3RlcmVkIGZpbGUgZm9ybWF0cyAqL1xuICBmb3JtYXRzOiBGb3JtYXRzO1xufVxuXG4vKipcbiAqIENsYXNzIHRvIGxvYWQgZGF0YSBmaWxlcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGF0YUxvYWRlciB7XG4gIC8qKiBMaXN0IG9mIGV4dGVuc2lvbnMgdG8gbG9hZCBkYXRhIGZpbGVzIGFuZCB0aGUgbG9hZGVyIHVzZWQgKi9cbiAgZm9ybWF0czogRm9ybWF0cztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgdGhpcy5mb3JtYXRzID0gb3B0aW9ucy5mb3JtYXRzO1xuICB9XG5cbiAgbG9hZChlbnRyeTogRW50cnkpOiBQcm9taXNlPFJhd0RhdGEgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAoZW50cnkudHlwZSA9PT0gXCJkaXJlY3RvcnlcIikge1xuICAgICAgcmV0dXJuIHRoaXMuI2xvYWREaXJlY3RvcnkoZW50cnkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLiNsb2FkRmlsZShlbnRyeSk7XG4gIH1cblxuICAvKiogTG9hZCBhIF9kYXRhLiogZmlsZSAqL1xuICBhc3luYyAjbG9hZEZpbGUoZW50cnk6IEVudHJ5KTogUHJvbWlzZTxSYXdEYXRhIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgZm9ybWF0ID0gdGhpcy5mb3JtYXRzLnNlYXJjaChlbnRyeS5wYXRoKTtcblxuICAgIGlmICghZm9ybWF0Py5kYXRhTG9hZGVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IGVudHJ5LmdldENvbnRlbnQoZm9ybWF0LmRhdGFMb2FkZXIpO1xuICB9XG5cbiAgLyoqIExvYWQgYSBfZGF0YSBkaXJlY3RvcnkgKi9cbiAgYXN5bmMgI2xvYWREaXJlY3RvcnkoZW50cnk6IEVudHJ5KTogUHJvbWlzZTxSYXdEYXRhPiB7XG4gICAgY29uc3QgZGF0YTogUmF3RGF0YSA9IHt9O1xuXG4gICAgZm9yIGF3YWl0IChjb25zdCBjaGlsZCBvZiBlbnRyeS5jaGlsZHJlbi52YWx1ZXMoKSkge1xuICAgICAgYXdhaXQgdGhpcy5sb2FkRW50cnkoY2hpbGQsIGRhdGEpO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYSBkYXRhIGVudHJ5IGluc2lkZSBhIF9kYXRhIGRpcmVjdG9yeVxuICAgKiBhbmQgYXBwZW5kIHRoZSBkYXRhIHRvIHRoZSBkYXRhIG9iamVjdFxuICAgKi9cbiAgYXN5bmMgbG9hZEVudHJ5KGVudHJ5OiBFbnRyeSwgZGF0YTogUmF3RGF0YSkge1xuICAgIGlmIChlbnRyeS5uYW1lLnN0YXJ0c1dpdGgoXCIuXCIpIHx8IGVudHJ5Lm5hbWUuc3RhcnRzV2l0aChcIl9cIikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZW50cnkudHlwZSA9PT0gXCJmaWxlXCIpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBwb3NpeC5iYXNlbmFtZShlbnRyeS5uYW1lLCBwb3NpeC5leHRuYW1lKGVudHJ5Lm5hbWUpKTtcbiAgICAgIGNvbnN0IGZpbGVEYXRhID0gYXdhaXQgdGhpcy4jbG9hZEZpbGUoZW50cnkpIHx8IHt9O1xuXG4gICAgICBpZiAoZmlsZURhdGEuY29udGVudCAmJiBPYmplY3Qua2V5cyhmaWxlRGF0YSkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGRhdGFbbmFtZV0gPSBmaWxlRGF0YS5jb250ZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZGF0YVtuYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QoZmlsZURhdGEpIHx8IHRhcmdldCkge1xuICAgICAgICAgIGRhdGFbbmFtZV0gPSBPYmplY3QuYXNzaWduKHRhcmdldCB8fCB7fSwgZmlsZURhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRhdGFbbmFtZV0gPSBmaWxlRGF0YTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGVudHJ5LnR5cGUgPT09IFwiZGlyZWN0b3J5XCIpIHtcbiAgICAgIGRhdGFbZW50cnkubmFtZV0gPSBhd2FpdCB0aGlzLiNsb2FkRGlyZWN0b3J5KGVudHJ5KTtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLEtBQUssUUFBUSxrQkFBa0I7QUFDeEMsU0FBUyxhQUFhLFFBQVEsb0JBQW9CO0FBV2xEOztDQUVDLEdBQ0QsZUFBZSxNQUFNO0VBQ25CLDhEQUE4RCxHQUM5RCxRQUFpQjtFQUVqQixZQUFZLE9BQWdCLENBQUU7SUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLE9BQU87RUFDaEM7RUFFQSxLQUFLLEtBQVksRUFBZ0M7SUFDL0MsSUFBSSxNQUFNLElBQUksS0FBSyxhQUFhO01BQzlCLE9BQU8sSUFBSSxDQUFDLENBQUEsYUFBYyxDQUFDO0lBQzdCO0lBRUEsT0FBTyxJQUFJLENBQUMsQ0FBQSxRQUFTLENBQUM7RUFDeEI7RUFFQSx3QkFBd0IsR0FDeEIsTUFBTSxDQUFBLFFBQVMsQ0FBQyxLQUFZO0lBQzFCLE1BQU0sU0FBUyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUk7SUFFN0MsSUFBSSxDQUFDLFFBQVEsWUFBWTtNQUN2QjtJQUNGO0lBRUEsT0FBTyxNQUFNLE1BQU0sVUFBVSxDQUFDLE9BQU8sVUFBVTtFQUNqRDtFQUVBLDJCQUEyQixHQUMzQixNQUFNLENBQUEsYUFBYyxDQUFDLEtBQVk7SUFDL0IsTUFBTSxPQUFnQixDQUFDO0lBRXZCLFdBQVcsTUFBTSxTQUFTLE1BQU0sUUFBUSxDQUFDLE1BQU0sR0FBSTtNQUNqRCxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTztJQUM5QjtJQUVBLE9BQU87RUFDVDtFQUVBOzs7R0FHQyxHQUNELE1BQU0sVUFBVSxLQUFZLEVBQUUsSUFBYSxFQUFFO0lBQzNDLElBQUksTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU07TUFDNUQ7SUFDRjtJQUVBLElBQUksTUFBTSxJQUFJLEtBQUssUUFBUTtNQUN6QixNQUFNLE9BQU8sTUFBTSxRQUFRLENBQUMsTUFBTSxJQUFJLEVBQUUsTUFBTSxPQUFPLENBQUMsTUFBTSxJQUFJO01BQ2hFLE1BQU0sV0FBVyxNQUFNLElBQUksQ0FBQyxDQUFBLFFBQVMsQ0FBQyxVQUFVLENBQUM7TUFFakQsSUFBSSxTQUFTLE9BQU8sSUFBSSxPQUFPLElBQUksQ0FBQyxVQUFVLE1BQU0sS0FBSyxHQUFHO1FBQzFELElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxPQUFPO01BQy9CLE9BQU87UUFDTCxNQUFNLFNBQVMsSUFBSSxDQUFDLEtBQUs7UUFDekIsSUFBSSxjQUFjLGFBQWEsUUFBUTtVQUNyQyxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHO1FBQzNDLE9BQU87VUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHO1FBQ2Y7TUFDRjtNQUVBO0lBQ0Y7SUFFQSxJQUFJLE1BQU0sSUFBSSxLQUFLLGFBQWE7TUFDOUIsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsQ0FBQSxhQUFjLENBQUM7SUFDL0M7RUFDRjtBQUNGIn0= +// denoCacheMetadata=6971484380980684596,6618598997769985257
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/6d20ec93492b438ce20abd5a6993bfc0ef988c47aa87241085a98b21d8e85c47.js b/vendor/gen/https/deno.land/6d20ec93492b438ce20abd5a6993bfc0ef988c47aa87241085a98b21d8e85c47.js new file mode 100644 index 0000000..1c5f918 --- /dev/null +++ b/vendor/gen/https/deno.land/6d20ec93492b438ce20abd5a6993bfc0ef988c47aa87241085a98b21d8e85c47.js @@ -0,0 +1,35 @@ +import { getGitDate, parseDate } from "./date.ts"; +/** Returns the Date instance of a file */ export function getPageDate(page) { + const data = page.data; + const { date } = data; + if (date instanceof Date) { + return date; + } + if (typeof date === "number") { + return new Date(date); + } + const { entry } = page.src; + const info = entry?.getInfo(); + if (typeof date === "string") { + if (entry && info) { + switch(date.toLowerCase()){ + case "git last modified": + return getGitDate("modified", entry.src) || info.mtime || new Date(); + case "git created": + // getGitDate("created", ...) uses `git log --diff-filter=A` + // which returns nothing for files where the latest commit had a merge conflict. + // Therefore we fallback to last modified time from git history, + // which is more reliable than file system creation time under most CI environments. + return getGitDate("created", entry.src) || getGitDate("modified", entry.src) || info.birthtime || new Date(); + } + } + try { + return parseDate(date); + } catch { + throw new Error(`Invalid date: ${date} (${entry?.src})`); + } + } + return info?.birthtime || info?.mtime || new Date(); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS91dGlscy9wYWdlX2RhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0R2l0RGF0ZSwgcGFyc2VEYXRlIH0gZnJvbSBcIi4vZGF0ZS50c1wiO1xuXG5pbXBvcnQgdHlwZSB7IFBhZ2UsIFJhd0RhdGEgfSBmcm9tIFwiLi4vZmlsZS50c1wiO1xuXG4vKiogUmV0dXJucyB0aGUgRGF0ZSBpbnN0YW5jZSBvZiBhIGZpbGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWdlRGF0ZShwYWdlOiBQYWdlKTogRGF0ZSB7XG4gIGNvbnN0IGRhdGEgPSBwYWdlLmRhdGEgYXMgUmF3RGF0YTtcbiAgY29uc3QgeyBkYXRlIH0gPSBkYXRhO1xuXG4gIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBkYXRlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBkYXRlID09PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgeyBlbnRyeSB9ID0gcGFnZS5zcmM7XG4gIGNvbnN0IGluZm8gPSBlbnRyeT8uZ2V0SW5mbygpO1xuXG4gIGlmICh0eXBlb2YgZGF0ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIGlmIChlbnRyeSAmJiBpbmZvKSB7XG4gICAgICBzd2l0Y2ggKGRhdGUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICBjYXNlIFwiZ2l0IGxhc3QgbW9kaWZpZWRcIjpcbiAgICAgICAgICByZXR1cm4gZ2V0R2l0RGF0ZShcIm1vZGlmaWVkXCIsIGVudHJ5LnNyYykgfHwgaW5mby5tdGltZSB8fCBuZXcgRGF0ZSgpO1xuICAgICAgICBjYXNlIFwiZ2l0IGNyZWF0ZWRcIjpcbiAgICAgICAgICAvLyBnZXRHaXREYXRlKFwiY3JlYXRlZFwiLCAuLi4pIHVzZXMgYGdpdCBsb2cgLS1kaWZmLWZpbHRlcj1BYFxuICAgICAgICAgIC8vIHdoaWNoIHJldHVybnMgbm90aGluZyBmb3IgZmlsZXMgd2hlcmUgdGhlIGxhdGVzdCBjb21taXQgaGFkIGEgbWVyZ2UgY29uZmxpY3QuXG4gICAgICAgICAgLy8gVGhlcmVmb3JlIHdlIGZhbGxiYWNrIHRvIGxhc3QgbW9kaWZpZWQgdGltZSBmcm9tIGdpdCBoaXN0b3J5LFxuICAgICAgICAgIC8vIHdoaWNoIGlzIG1vcmUgcmVsaWFibGUgdGhhbiBmaWxlIHN5c3RlbSBjcmVhdGlvbiB0aW1lIHVuZGVyIG1vc3QgQ0kgZW52aXJvbm1lbnRzLlxuICAgICAgICAgIHJldHVybiBnZXRHaXREYXRlKFwiY3JlYXRlZFwiLCBlbnRyeS5zcmMpIHx8XG4gICAgICAgICAgICBnZXRHaXREYXRlKFwibW9kaWZpZWRcIiwgZW50cnkuc3JjKSB8fCBpbmZvLmJpcnRodGltZSB8fFxuICAgICAgICAgICAgbmV3IERhdGUoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHBhcnNlRGF0ZShkYXRlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkYXRlOiAke2RhdGV9ICgke2VudHJ5Py5zcmN9KWApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpbmZvPy5iaXJ0aHRpbWUgfHwgaW5mbz8ubXRpbWUgfHwgbmV3IERhdGUoKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLFVBQVUsRUFBRSxTQUFTLFFBQVEsWUFBWTtBQUlsRCx3Q0FBd0MsR0FDeEMsT0FBTyxTQUFTLFlBQVksSUFBVTtFQUNwQyxNQUFNLE9BQU8sS0FBSyxJQUFJO0VBQ3RCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRztFQUVqQixJQUFJLGdCQUFnQixNQUFNO0lBQ3hCLE9BQU87RUFDVDtFQUVBLElBQUksT0FBTyxTQUFTLFVBQVU7SUFDNUIsT0FBTyxJQUFJLEtBQUs7RUFDbEI7RUFFQSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsS0FBSyxHQUFHO0VBQzFCLE1BQU0sT0FBTyxPQUFPO0VBRXBCLElBQUksT0FBTyxTQUFTLFVBQVU7SUFDNUIsSUFBSSxTQUFTLE1BQU07TUFDakIsT0FBUSxLQUFLLFdBQVc7UUFDdEIsS0FBSztVQUNILE9BQU8sV0FBVyxZQUFZLE1BQU0sR0FBRyxLQUFLLEtBQUssS0FBSyxJQUFJLElBQUk7UUFDaEUsS0FBSztVQUNILDREQUE0RDtVQUM1RCxnRkFBZ0Y7VUFDaEYsZ0VBQWdFO1VBQ2hFLG9GQUFvRjtVQUNwRixPQUFPLFdBQVcsV0FBVyxNQUFNLEdBQUcsS0FDcEMsV0FBVyxZQUFZLE1BQU0sR0FBRyxLQUFLLEtBQUssU0FBUyxJQUNuRCxJQUFJO01BQ1Y7SUFDRjtJQUVBLElBQUk7TUFDRixPQUFPLFVBQVU7SUFDbkIsRUFBRSxPQUFNO01BQ04sTUFBTSxJQUFJLE1BQU0sQ0FBQyxjQUFjLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUN6RDtFQUNGO0VBRUEsT0FBTyxNQUFNLGFBQWEsTUFBTSxTQUFTLElBQUk7QUFDL0MifQ== +// denoCacheMetadata=3689659258240074819,1139563876999991959
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/6faca7611ce04828ee0a49c74e2fe5341a8e81432d9532a5219ac424cf65574d.js b/vendor/gen/https/deno.land/6faca7611ce04828ee0a49c74e2fe5341a8e81432d9532a5219ac424cf65574d.js new file mode 100644 index 0000000..6d30fde --- /dev/null +++ b/vendor/gen/https/deno.land/6faca7611ce04828ee0a49c74e2fe5341a8e81432d9532a5219ac424cf65574d.js @@ -0,0 +1,3 @@ +export { stripColor } from "https://deno.land/std@0.170.0/fmt/colors.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvdGFibGUvZGVwcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBzdHJpcENvbG9yIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE3MC4wL2ZtdC9jb2xvcnMudHNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLFVBQVUsUUFBUSw4Q0FBOEMifQ== +// denoCacheMetadata=3544978036911627497,5277836342203700471
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/6fba7f50b35cc56498d23c59daba2d639e5b8041606078234ee006699d921a00.js b/vendor/gen/https/deno.land/6fba7f50b35cc56498d23c59daba2d639e5b8041606078234ee006699d921a00.js new file mode 100644 index 0000000..ee88a3b --- /dev/null +++ b/vendor/gen/https/deno.land/6fba7f50b35cc56498d23c59daba2d639e5b8041606078234ee006699d921a00.js @@ -0,0 +1,3 @@ +/** Chainable ansi escape sequences. */ +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvYW5zaS9jaGFpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQ2hhaW5hYmxlIGFuc2kgZXNjYXBlIHNlcXVlbmNlcy4gKi9cbmltcG9ydCB0eXBlIHsgSW1hZ2VPcHRpb25zIH0gZnJvbSBcIi4vYW5zaV9lc2NhcGVzLnRzXCI7XG5cbi8qKiBDaGFpbmFibGUgYW5zaSBlc2NhcGUgbWV0aG9kIGRlY2xhcmF0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhaW48VCBleHRlbmRzIENoYWluPFQ+PiB7XG4gIC8qKiBBZGQgdGV4dC4gKi9cbiAgdGV4dDogKHRleHQ6IHN0cmluZykgPT4gVDtcbiAgLyoqIFJpbmcgYXVkaW8gYmVsbDogYFxcdTAwMDdgICovXG4gIGJlbDogVDtcbiAgLyoqIEdldCBjdXJzb3IgcG9zaXRpb24uICovXG4gIGN1cnNvclBvc2l0aW9uOiBUO1xuICAvKipcbiAgICogTW92ZSBjdXJzb3IgdG8geCwgeSwgY291bnRpbmcgZnJvbSB0aGUgdG9wIGxlZnQgY29ybmVyLlxuICAgKiBAcGFyYW0geCBQb3NpdGlvbiBsZWZ0LlxuICAgKiBAcGFyYW0geSBQb3NpdGlvbiB0b3AuXG4gICAqL1xuICBjdXJzb3JUbzogKHg6IG51bWJlciwgeT86IG51bWJlcikgPT4gVDtcbiAgLyoqXG4gICAqIE1vdmUgY3Vyc29yIGJ5IG9mZnNldC5cbiAgICogQHBhcmFtIHggT2Zmc2V0IGxlZnQuXG4gICAqIEBwYXJhbSB5IE9mZnNldCB0b3AuXG4gICAqL1xuICBjdXJzb3JNb3ZlOiAoeDogbnVtYmVyLCB5OiBudW1iZXIpID0+IFQ7XG4gIC8qKlxuICAgKiBNb3ZlIGN1cnNvciB1cCBieSBuIGxpbmVzLlxuICAgKiBAcGFyYW0gY291bnQgTnVtYmVyIG9mIGxpbmVzLlxuICAgKi9cbiAgY3Vyc29yVXA6IFQgJiAoKGNvdW50OiBudW1iZXIpID0+IFQpO1xuICAvKipcbiAgICogTW92ZSBjdXJzb3IgZG93biBieSBuIGxpbmVzLlxuICAgKiBAcGFyYW0gY291bnQgTnVtYmVyIG9mIGxpbmVzLlxuICAgKi9cbiAgY3Vyc29yRG93bjogVCAmICgoY291bnQ6IG51bWJlcikgPT4gVCk7XG4gIC8qKlxuICAgKiBNb3ZlIGN1cnNvciBmb3J3YXJkIGJ5IG4gbGluZXMuXG4gICAqIEBwYXJhbSBjb3VudCBOdW1iZXIgb2YgbGluZXMuXG4gICAqL1xuICBjdXJzb3JGb3J3YXJkOiBUICYgKChjb3VudDogbnVtYmVyKSA9PiBUKTtcbiAgLyoqXG4gICAqIE1vdmUgY3Vyc29yIGJhY2t3YXJkIGJ5IG4gbGluZXMuXG4gICAqIEBwYXJhbSBjb3VudCBOdW1iZXIgb2YgbGluZXMuXG4gICAqL1xuICBjdXJzb3JCYWNrd2FyZDogVCAmICgoY291bnQ6IG51bWJlcikgPT4gVCk7XG4gIC8qKlxuICAgKiBNb3ZlIGN1cnNvciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lIG4gbGluZXMgZG93bi5cbiAgICogQHBhcmFtIGNvdW50IE51bWJlciBvZiBsaW5lcy5cbiAgICovXG4gIGN1cnNvck5leHRMaW5lOiBUICYgKChjb3VudDogbnVtYmVyKSA9PiBUKTtcbiAgLyoqXG4gICAqIE1vdmUgY3Vyc29yIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUgbiBsaW5lcyB1cC5cbiAgICogQHBhcmFtIGNvdW50IE51bWJlciBvZiBsaW5lcy5cbiAgICovXG4gIGN1cnNvclByZXZMaW5lOiBUICYgKChjb3VudDogbnVtYmVyKSA9PiBUKTtcbiAgLyoqIE1vdmUgY3Vyc29yIHRvIGZpcnN0IGNvbHVtbiBvZiBjdXJyZW50IHJvdy4gKi9cbiAgY3Vyc29yTGVmdDogVDtcbiAgLyoqIEhpZGUgY3Vyc29yLiAqL1xuICBjdXJzb3JIaWRlOiBUO1xuICAvKiogU2hvdyBjdXJzb3IuICovXG4gIGN1cnNvclNob3c6IFQ7XG4gIC8qKiBTYXZlIGN1cnNvci4gKi9cbiAgY3Vyc29yU2F2ZTogVDtcbiAgLyoqIFJlc3RvcmUgY3Vyc29yLiAqL1xuICBjdXJzb3JSZXN0b3JlOiBUO1xuICAvKipcbiAgICogU2Nyb2xsIHdpbmRvdyB1cCBieSBuIGxpbmVzLlxuICAgKiBAcGFyYW0gY291bnQgTnVtYmVyIG9mIGxpbmVzLlxuICAgKi9cbiAgc2Nyb2xsVXA6IFQgJiAoKGNvdW50OiBudW1iZXIpID0+IFQpO1xuICAvKipcbiAgICogU2Nyb2xsIHdpbmRvdyBkb3duIGJ5IG4gbGluZXMuXG4gICAqIEBwYXJhbSBjb3VudCBOdW1iZXIgb2YgbGluZXMuXG4gICAqL1xuICBzY3JvbGxEb3duOiBUICYgKChjb3VudDogbnVtYmVyKSA9PiBUKTtcbiAgLyoqIENsZWFyIHNjcmVlbi4gKi9cbiAgZXJhc2VTY3JlZW46IFQ7XG4gIC8qKlxuICAgKiBDbGVhciBzY3JlZW4gdXAgYnkgbiBsaW5lcy5cbiAgICogQHBhcmFtIGNvdW50IE51bWJlciBvZiBsaW5lcy5cbiAgICovXG4gIGVyYXNlVXA6IFQgJiAoKGNvdW50OiBudW1iZXIpID0+IFQpO1xuICAvKipcbiAgICogQ2xlYXIgc2NyZWVuIGRvd24gYnkgbiBsaW5lcy5cbiAgICogQHBhcmFtIGNvdW50IE51bWJlciBvZiBsaW5lcy5cbiAgICovXG4gIGVyYXNlRG93bjogVCAmICgoY291bnQ6IG51bWJlcikgPT4gVCk7XG4gIC8qKiBDbGVhciBjdXJyZW50IGxpbmUuICovXG4gIGVyYXNlTGluZTogVDtcbiAgLyoqIENsZWFyIHRvIGxpbmUgZW5kLiAqL1xuICBlcmFzZUxpbmVFbmQ6IFQ7XG4gIC8qKiBDbGVhciB0byBsaW5lIHN0YXJ0LiAqL1xuICBlcmFzZUxpbmVTdGFydDogVDtcbiAgLyoqXG4gICAqIENsZWFyIHNjcmVlbiBhbmQgbW92ZSBjdXJzb3IgYnkgbiBsaW5lcyB1cCBhbmQgbW92ZSBjdXJzb3IgdG8gZmlyc3QgY29sdW1uLlxuICAgKiBAcGFyYW0gY291bnQgTnVtYmVyIG9mIGxpbmVzLlxuICAgKi9cbiAgZXJhc2VMaW5lczogKGNvdW50OiBudW1iZXIpID0+IFQ7XG4gIC8qKiBDbGVhciB0aGUgdGVybWluYWwgc2NyZWVuLiAoVmlld3BvcnQpICovXG4gIGNsZWFyU2NyZWVuOiBUO1xuICAvKipcbiAgICogQ2xlYXIgdGhlIHdob2xlIHRlcm1pbmFsLCBpbmNsdWRpbmcgc2Nyb2xsYmFjayBidWZmZXIuXG4gICAqIChOb3QganVzdCB0aGUgdmlzaWJsZSBwYXJ0IG9mIGl0KS5cbiAgICovXG4gIGNsZWFyVGVybWluYWw6IFQ7XG4gIC8qKlxuICAgKiBDcmVhdGUgbGluay5cbiAgICogQHBhcmFtIHRleHQgTGluayB0ZXh0LlxuICAgKiBAcGFyYW0gdXJsIExpbmsgdXJsLlxuICAgKiBgYGBcbiAgICogY29uc29sZS5sb2coXG4gICAqICAgYW5zaS5saW5rKFwiQ2xpY2sgbWUuXCIsIFwiaHR0cHM6Ly9kZW5vLmxhbmRcIiksXG4gICAqICk7XG4gICAqIGBgYFxuICAgKi9cbiAgbGluazogKHRleHQ6IHN0cmluZywgdXJsOiBzdHJpbmcpID0+IFQ7XG4gIC8qKlxuICAgKiBDcmVhdGUgaW1hZ2UuXG4gICAqIEBwYXJhbSBidWZmZXIgIEltYWdlIGJ1ZmZlci5cbiAgICogQHBhcmFtIG9wdGlvbnMgSW1hZ2Ugb3B0aW9ucy5cbiAgICogYGBgXG4gICAqIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goXCJodHRwczovL2Rlbm8ubGFuZC9pbWFnZXMvaGFzaHJvY2tfc2ltcGxlLnBuZ1wiKTtcbiAgICogY29uc3QgaW1hZ2VCdWZmZXI6IEFycmF5QnVmZmVyID0gYXdhaXQgcmVzcG9uc2UuYXJyYXlCdWZmZXIoKTtcbiAgICogY29uc29sZS5sb2coXG4gICAqICAgYW5zaS5pbWFnZShpbWFnZUJ1ZmZlciksXG4gICAqICk7XG4gICAqIGBgYFxuICAgKi9cbiAgaW1hZ2U6IChidWZmZXI6IHN0cmluZyB8IEFycmF5QnVmZmVyLCBvcHRpb25zPzogSW1hZ2VPcHRpb25zKSA9PiBUO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQyxHQUNyQyJ9 +// denoCacheMetadata=13115710456915605990,12008965792953318417
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/7005829e4cbf864e811a7ecbea3a35b461c60b8ee370c7bf29ee85b72247875f.js b/vendor/gen/https/deno.land/7005829e4cbf864e811a7ecbea3a35b461c60b8ee370c7bf29ee85b72247875f.js new file mode 100644 index 0000000..cae0938 --- /dev/null +++ b/vendor/gen/https/deno.land/7005829e4cbf864e811a7ecbea3a35b461c60b8ee370c7bf29ee85b72247875f.js @@ -0,0 +1,78 @@ +import { Element } from "../element.ts"; +import { DocumentFragment } from "../document-fragment.ts"; +import { getElementAttributesString, getOuterOrInnerHtml } from "../utils.ts"; +import { fragmentNodesFromString } from "../../deserialize.ts"; +import { CTOR_KEY } from "../../constructor-lock.ts"; +export class HTMLTemplateElement extends Element { + /** + * This blocks access to the .#contents property when the + * super() constructor is running which invokes (our + * overridden) _setParent() method. Without it, we get + * the following error thrown: + * + * TypeError: Cannot read private member #content from + * an object whose class did not declare it + * + * FIXME: Maybe find a cleaner way to do this + */ __contentIsSet = false; + #content = null; + constructor(parentNode, attributes, key, content){ + super("TEMPLATE", parentNode, attributes, key); + this.#content = content; + this.__contentIsSet = true; + } + get content() { + return this.#content; + } + _setOwnerDocument(document) { + super._setOwnerDocument(document); + if (this.__contentIsSet) { + this.content._setOwnerDocument(document); + } + } + _shallowClone() { + const frag = new DocumentFragment(); + const attributes = this.getAttributeNames().map((name)=>[ + name, + this.getAttribute(name) + ]); + return new HTMLTemplateElement(null, attributes, CTOR_KEY, frag); + } + cloneNode(deep = false) { + const newNode = super.cloneNode(deep); + if (deep) { + const destContent = newNode.content; + for (const child of this.content.childNodes){ + destContent.appendChild(child.cloneNode(deep)); + } + } + return newNode; + } + get innerHTML() { + return getOuterOrInnerHtml(this, false); + } + // Replace children in the `.content` + set innerHTML(html) { + const content = this.content; + // Remove all children + for (const child of content.childNodes){ + child._setParent(null); + } + const mutator = content._getChildNodesMutator(); + mutator.splice(0, content.childNodes.length); + // Parse HTML into new children + if (html.length) { + const parsed = fragmentNodesFromString(html, this.localName); + mutator.push(...parsed.childNodes[0].childNodes); + for (const child of content.childNodes){ + child._setParent(content); + child._setOwnerDocument(content.ownerDocument); + } + } + } + get outerHTML() { + return `<template${getElementAttributesString(this)}>${this.innerHTML}</template>`; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvZGVub19kb21AdjAuMS40OS9zcmMvZG9tL2VsZW1lbnRzL2h0bWwtdGVtcGxhdGUtZWxlbWVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb2RlIH0gZnJvbSBcIi4uL25vZGUudHNcIjtcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwiLi4vZWxlbWVudC50c1wiO1xuaW1wb3J0IHsgRG9jdW1lbnQgfSBmcm9tIFwiLi4vZG9jdW1lbnQudHNcIjtcbmltcG9ydCB7IERvY3VtZW50RnJhZ21lbnQgfSBmcm9tIFwiLi4vZG9jdW1lbnQtZnJhZ21lbnQudHNcIjtcbmltcG9ydCB7IGdldEVsZW1lbnRBdHRyaWJ1dGVzU3RyaW5nLCBnZXRPdXRlck9ySW5uZXJIdG1sIH0gZnJvbSBcIi4uL3V0aWxzLnRzXCI7XG5pbXBvcnQgeyBmcmFnbWVudE5vZGVzRnJvbVN0cmluZyB9IGZyb20gXCIuLi8uLi9kZXNlcmlhbGl6ZS50c1wiO1xuaW1wb3J0IHsgQ1RPUl9LRVkgfSBmcm9tIFwiLi4vLi4vY29uc3RydWN0b3ItbG9jay50c1wiO1xuXG5leHBvcnQgY2xhc3MgSFRNTFRlbXBsYXRlRWxlbWVudCBleHRlbmRzIEVsZW1lbnQge1xuICAvKipcbiAgICogVGhpcyBibG9ja3MgYWNjZXNzIHRvIHRoZSAuI2NvbnRlbnRzIHByb3BlcnR5IHdoZW4gdGhlXG4gICAqIHN1cGVyKCkgY29uc3RydWN0b3IgaXMgcnVubmluZyB3aGljaCBpbnZva2VzIChvdXJcbiAgICogb3ZlcnJpZGRlbikgX3NldFBhcmVudCgpIG1ldGhvZC4gV2l0aG91dCBpdCwgd2UgZ2V0XG4gICAqIHRoZSBmb2xsb3dpbmcgZXJyb3IgdGhyb3duOlxuICAgKlxuICAgKiAgIFR5cGVFcnJvcjogQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgI2NvbnRlbnQgZnJvbVxuICAgKiAgIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcbiAgICpcbiAgICogRklYTUU6IE1heWJlIGZpbmQgYSBjbGVhbmVyIHdheSB0byBkbyB0aGlzXG4gICAqL1xuICBwcml2YXRlIF9fY29udGVudElzU2V0ID0gZmFsc2U7XG4gICNjb250ZW50OiBEb2N1bWVudEZyYWdtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcGFyZW50Tm9kZTogTm9kZSB8IG51bGwsXG4gICAgYXR0cmlidXRlczogW3N0cmluZywgc3RyaW5nXVtdLFxuICAgIGtleTogdHlwZW9mIENUT1JfS0VZLFxuICAgIGNvbnRlbnQ6IERvY3VtZW50RnJhZ21lbnQsXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgXCJURU1QTEFURVwiLFxuICAgICAgcGFyZW50Tm9kZSxcbiAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICBrZXksXG4gICAgKTtcblxuICAgIHRoaXMuI2NvbnRlbnQgPSBjb250ZW50O1xuICAgIHRoaXMuX19jb250ZW50SXNTZXQgPSB0cnVlO1xuICB9XG5cbiAgZ2V0IGNvbnRlbnQoKTogRG9jdW1lbnRGcmFnbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuI2NvbnRlbnQhO1xuICB9XG5cbiAgb3ZlcnJpZGUgX3NldE93bmVyRG9jdW1lbnQoZG9jdW1lbnQ6IERvY3VtZW50IHwgbnVsbCkge1xuICAgIHN1cGVyLl9zZXRPd25lckRvY3VtZW50KGRvY3VtZW50KTtcblxuICAgIGlmICh0aGlzLl9fY29udGVudElzU2V0KSB7XG4gICAgICB0aGlzLmNvbnRlbnQuX3NldE93bmVyRG9jdW1lbnQoZG9jdW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIF9zaGFsbG93Q2xvbmUoKTogSFRNTFRlbXBsYXRlRWxlbWVudCB7XG4gICAgY29uc3QgZnJhZyA9IG5ldyBEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgY29uc3QgYXR0cmlidXRlcyA9IHRoaXNcbiAgICAgIC5nZXRBdHRyaWJ1dGVOYW1lcygpXG4gICAgICAubWFwKChuYW1lKSA9PiBbbmFtZSwgdGhpcy5nZXRBdHRyaWJ1dGUobmFtZSkhXSBhcyBbc3RyaW5nLCBzdHJpbmddKTtcbiAgICByZXR1cm4gbmV3IEhUTUxUZW1wbGF0ZUVsZW1lbnQobnVsbCwgYXR0cmlidXRlcywgQ1RPUl9LRVksIGZyYWcpO1xuICB9XG5cbiAgb3ZlcnJpZGUgY2xvbmVOb2RlKGRlZXAgPSBmYWxzZSk6IEhUTUxUZW1wbGF0ZUVsZW1lbnQge1xuICAgIGNvbnN0IG5ld05vZGUgPSBzdXBlci5jbG9uZU5vZGUoZGVlcCkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcblxuICAgIGlmIChkZWVwKSB7XG4gICAgICBjb25zdCBkZXN0Q29udGVudCA9IG5ld05vZGUuY29udGVudDtcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jb250ZW50LmNoaWxkTm9kZXMpIHtcbiAgICAgICAgZGVzdENvbnRlbnQuYXBwZW5kQ2hpbGQoY2hpbGQuY2xvbmVOb2RlKGRlZXApKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Tm9kZTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldCBpbm5lckhUTUwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0T3V0ZXJPcklubmVySHRtbCh0aGlzLCBmYWxzZSk7XG4gIH1cblxuICAvLyBSZXBsYWNlIGNoaWxkcmVuIGluIHRoZSBgLmNvbnRlbnRgXG4gIG92ZXJyaWRlIHNldCBpbm5lckhUTUwoaHRtbDogc3RyaW5nKSB7XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuY29udGVudDtcblxuICAgIC8vIFJlbW92ZSBhbGwgY2hpbGRyZW5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNvbnRlbnQuY2hpbGROb2Rlcykge1xuICAgICAgY2hpbGQuX3NldFBhcmVudChudWxsKTtcbiAgICB9XG5cbiAgICBjb25zdCBtdXRhdG9yID0gY29udGVudC5fZ2V0Q2hpbGROb2Rlc011dGF0b3IoKTtcbiAgICBtdXRhdG9yLnNwbGljZSgwLCBjb250ZW50LmNoaWxkTm9kZXMubGVuZ3RoKTtcblxuICAgIC8vIFBhcnNlIEhUTUwgaW50byBuZXcgY2hpbGRyZW5cbiAgICBpZiAoaHRtbC5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IGZyYWdtZW50Tm9kZXNGcm9tU3RyaW5nKGh0bWwsIHRoaXMubG9jYWxOYW1lKTtcbiAgICAgIG11dGF0b3IucHVzaCguLi5wYXJzZWQuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzKTtcblxuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBjb250ZW50LmNoaWxkTm9kZXMpIHtcbiAgICAgICAgY2hpbGQuX3NldFBhcmVudChjb250ZW50KTtcbiAgICAgICAgY2hpbGQuX3NldE93bmVyRG9jdW1lbnQoY29udGVudC5vd25lckRvY3VtZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSBnZXQgb3V0ZXJIVE1MKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGA8dGVtcGxhdGUke1xuICAgICAgZ2V0RWxlbWVudEF0dHJpYnV0ZXNTdHJpbmcodGhpcylcbiAgICB9PiR7dGhpcy5pbm5lckhUTUx9PC90ZW1wbGF0ZT5gO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBUyxPQUFPLFFBQVEsZ0JBQWdCO0FBRXhDLFNBQVMsZ0JBQWdCLFFBQVEsMEJBQTBCO0FBQzNELFNBQVMsMEJBQTBCLEVBQUUsbUJBQW1CLFFBQVEsY0FBYztBQUM5RSxTQUFTLHVCQUF1QixRQUFRLHVCQUF1QjtBQUMvRCxTQUFTLFFBQVEsUUFBUSw0QkFBNEI7QUFFckQsT0FBTyxNQUFNLDRCQUE0QjtFQUN2Qzs7Ozs7Ozs7OztHQVVDLEdBQ0QsQUFBUSxpQkFBaUIsTUFBTTtFQUMvQixDQUFBLE9BQVEsR0FBNEIsS0FBSztFQUV6QyxZQUNFLFVBQXVCLEVBQ3ZCLFVBQThCLEVBQzlCLEdBQW9CLEVBQ3BCLE9BQXlCLENBQ3pCO0lBQ0EsS0FBSyxDQUNILFlBQ0EsWUFDQSxZQUNBO0lBR0YsSUFBSSxDQUFDLENBQUEsT0FBUSxHQUFHO0lBQ2hCLElBQUksQ0FBQyxjQUFjLEdBQUc7RUFDeEI7RUFFQSxJQUFJLFVBQTRCO0lBQzlCLE9BQU8sSUFBSSxDQUFDLENBQUEsT0FBUTtFQUN0QjtFQUVTLGtCQUFrQixRQUF5QixFQUFFO0lBQ3BELEtBQUssQ0FBQyxrQkFBa0I7SUFFeEIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO01BQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUM7SUFDakM7RUFDRjtFQUVTLGdCQUFxQztJQUM1QyxNQUFNLE9BQU8sSUFBSTtJQUNqQixNQUFNLGFBQWEsSUFBSSxDQUNwQixpQkFBaUIsR0FDakIsR0FBRyxDQUFDLENBQUMsT0FBUztRQUFDO1FBQU0sSUFBSSxDQUFDLFlBQVksQ0FBQztPQUFPO0lBQ2pELE9BQU8sSUFBSSxvQkFBb0IsTUFBTSxZQUFZLFVBQVU7RUFDN0Q7RUFFUyxVQUFVLE9BQU8sS0FBSyxFQUF1QjtJQUNwRCxNQUFNLFVBQVUsS0FBSyxDQUFDLFVBQVU7SUFFaEMsSUFBSSxNQUFNO01BQ1IsTUFBTSxjQUFjLFFBQVEsT0FBTztNQUNuQyxLQUFLLE1BQU0sU0FBUyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBRTtRQUMzQyxZQUFZLFdBQVcsQ0FBQyxNQUFNLFNBQVMsQ0FBQztNQUMxQztJQUNGO0lBRUEsT0FBTztFQUNUO0VBRUEsSUFBYSxZQUFvQjtJQUMvQixPQUFPLG9CQUFvQixJQUFJLEVBQUU7RUFDbkM7RUFFQSxxQ0FBcUM7RUFDckMsSUFBYSxVQUFVLElBQVksRUFBRTtJQUNuQyxNQUFNLFVBQVUsSUFBSSxDQUFDLE9BQU87SUFFNUIsc0JBQXNCO0lBQ3RCLEtBQUssTUFBTSxTQUFTLFFBQVEsVUFBVSxDQUFFO01BQ3RDLE1BQU0sVUFBVSxDQUFDO0lBQ25CO0lBRUEsTUFBTSxVQUFVLFFBQVEscUJBQXFCO0lBQzdDLFFBQVEsTUFBTSxDQUFDLEdBQUcsUUFBUSxVQUFVLENBQUMsTUFBTTtJQUUzQywrQkFBK0I7SUFDL0IsSUFBSSxLQUFLLE1BQU0sRUFBRTtNQUNmLE1BQU0sU0FBUyx3QkFBd0IsTUFBTSxJQUFJLENBQUMsU0FBUztNQUMzRCxRQUFRLElBQUksSUFBSSxPQUFPLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVTtNQUUvQyxLQUFLLE1BQU0sU0FBUyxRQUFRLFVBQVUsQ0FBRTtRQUN0QyxNQUFNLFVBQVUsQ0FBQztRQUNqQixNQUFNLGlCQUFpQixDQUFDLFFBQVEsYUFBYTtNQUMvQztJQUNGO0VBQ0Y7RUFFQSxJQUFhLFlBQW9CO0lBQy9CLE9BQU8sQ0FBQyxTQUFTLEVBQ2YsMkJBQTJCLElBQUksRUFDaEMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO0VBQ2pDO0FBQ0YifQ== +// denoCacheMetadata=8105336677246190984,8235274781419548263
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/715a1d94fe72f48bab4e27fc1fe672cf872e98017b5847ccc3c684c836c5d947.js b/vendor/gen/https/deno.land/715a1d94fe72f48bab4e27fc1fe672cf872e98017b5847ccc3c684c836c5d947.js new file mode 100644 index 0000000..0ee0ac9 --- /dev/null +++ b/vendor/gen/https/deno.land/715a1d94fe72f48bab4e27fc1fe672cf872e98017b5847ccc3c684c836c5d947.js @@ -0,0 +1,26 @@ +import { isUrl } from "../utils/path.ts"; +import { isPlainObject } from "../utils/object.ts"; +import { env } from "../utils/env.ts"; +/** Load a JavaScript/TypeScript file. Use a random hash to prevent caching */ export default async function module(path) { + const url = isUrl(path) ? path : `file://${path}`; + const specifier = env("LUME_LIVE_RELOAD") ? `${url}#${Date.now()}` : url; + const mod = await import(specifier); + return toData(mod); +} +/** Transform the imported module to RawData */ export function toData(mod) { + const data = {}; + for (const [name, value] of Object.entries(mod)){ + if (name === "default") { + if (isPlainObject(value)) { + Object.assign(data, value); + } else { + data.content = value; + } + continue; + } + data[name] = value; + } + return data; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS9sb2FkZXJzL21vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1VybCB9IGZyb20gXCIuLi91dGlscy9wYXRoLnRzXCI7XG5pbXBvcnQgeyBpc1BsYWluT2JqZWN0IH0gZnJvbSBcIi4uL3V0aWxzL29iamVjdC50c1wiO1xuaW1wb3J0IHsgZW52IH0gZnJvbSBcIi4uL3V0aWxzL2Vudi50c1wiO1xuXG5pbXBvcnQgdHlwZSB7IFJhd0RhdGEgfSBmcm9tIFwiLi4vZmlsZS50c1wiO1xuXG4vKiogTG9hZCBhIEphdmFTY3JpcHQvVHlwZVNjcmlwdCBmaWxlLiBVc2UgYSByYW5kb20gaGFzaCB0byBwcmV2ZW50IGNhY2hpbmcgKi9cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIG1vZHVsZShwYXRoOiBzdHJpbmcpOiBQcm9taXNlPFJhd0RhdGE+IHtcbiAgY29uc3QgdXJsID0gaXNVcmwocGF0aCkgPyBwYXRoIDogYGZpbGU6Ly8ke3BhdGh9YDtcbiAgY29uc3Qgc3BlY2lmaWVyID0gZW52PGJvb2xlYW4+KFwiTFVNRV9MSVZFX1JFTE9BRFwiKVxuICAgID8gYCR7dXJsfSMke0RhdGUubm93KCl9YFxuICAgIDogdXJsO1xuXG4gIGNvbnN0IG1vZCA9IGF3YWl0IGltcG9ydChzcGVjaWZpZXIpO1xuICByZXR1cm4gdG9EYXRhKG1vZCk7XG59XG5cbi8qKiBUcmFuc2Zvcm0gdGhlIGltcG9ydGVkIG1vZHVsZSB0byBSYXdEYXRhICovXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRhKG1vZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSYXdEYXRhIHtcbiAgY29uc3QgZGF0YTogUmF3RGF0YSA9IHt9O1xuXG4gIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhtb2QpKSB7XG4gICAgaWYgKG5hbWUgPT09IFwiZGVmYXVsdFwiKSB7XG4gICAgICBpZiAoaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihkYXRhLCB2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhLmNvbnRlbnQgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGRhdGFbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBkYXRhO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsS0FBSyxRQUFRLG1CQUFtQjtBQUN6QyxTQUFTLGFBQWEsUUFBUSxxQkFBcUI7QUFDbkQsU0FBUyxHQUFHLFFBQVEsa0JBQWtCO0FBSXRDLDRFQUE0RSxHQUM1RSxlQUFlLGVBQWUsT0FBTyxJQUFZO0VBQy9DLE1BQU0sTUFBTSxNQUFNLFFBQVEsT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNO0VBQ2pELE1BQU0sWUFBWSxJQUFhLHNCQUMzQixHQUFHLElBQUksQ0FBQyxFQUFFLEtBQUssR0FBRyxJQUFJLEdBQ3RCO0VBRUosTUFBTSxNQUFNLE1BQU0sTUFBTSxDQUFDO0VBQ3pCLE9BQU8sT0FBTztBQUNoQjtBQUVBLDZDQUE2QyxHQUM3QyxPQUFPLFNBQVMsT0FBTyxHQUE0QjtFQUNqRCxNQUFNLE9BQWdCLENBQUM7RUFFdkIsS0FBSyxNQUFNLENBQUMsTUFBTSxNQUFNLElBQUksT0FBTyxPQUFPLENBQUMsS0FBTTtJQUMvQyxJQUFJLFNBQVMsV0FBVztNQUN0QixJQUFJLGNBQWMsUUFBUTtRQUN4QixPQUFPLE1BQU0sQ0FBQyxNQUFNO01BQ3RCLE9BQU87UUFDTCxLQUFLLE9BQU8sR0FBRztNQUNqQjtNQUNBO0lBQ0Y7SUFFQSxJQUFJLENBQUMsS0FBSyxHQUFHO0VBQ2Y7RUFFQSxPQUFPO0FBQ1QifQ== +// denoCacheMetadata=10488986337401749731,6009840498768875983
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/716503e16f57dca602e9fd35df4afbf0123ef5fb24e5fb214ebbe3bc765aa27a.js b/vendor/gen/https/deno.land/716503e16f57dca602e9fd35df4afbf0123ef5fb24e5fb214ebbe3bc765aa27a.js new file mode 100644 index 0000000..7063c11 --- /dev/null +++ b/vendor/gen/https/deno.land/716503e16f57dca602e9fd35df4afbf0123ef5fb24e5fb214ebbe3bc765aa27a.js @@ -0,0 +1,27 @@ +import { DOM as NWAPI } from "./nwsapi-types.ts"; +import { DOM as Sizzle } from "./sizzle-types.ts"; +let codeGenerationAllowed = null; +export function getSelectorEngine() { + if (codeGenerationAllowed === null) { + try { + new Function(""); + codeGenerationAllowed = true; + } catch (e) { + codeGenerationAllowed = false; + } + } + if (codeGenerationAllowed) { + return NWAPI; + } else { + return Sizzle; + } +} +/** + * Explicitly disable querySelector/All code generation with the `Function` + * constructor forcing the Sizzle engine. Enables those APIs on platforms + * like Deno Deploy that don't allow code generation. + */ export function disableCodeGeneration() { + codeGenerationAllowed = false; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvZGVub19kb21AdjAuMS40OS9zcmMvZG9tL3NlbGVjdG9ycy9zZWxlY3RvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9NIGFzIE5XQVBJIH0gZnJvbSBcIi4vbndzYXBpLXR5cGVzLnRzXCI7XG5pbXBvcnQgeyBET00gYXMgU2l6emxlIH0gZnJvbSBcIi4vc2l6emxlLXR5cGVzLnRzXCI7XG5pbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tIFwiLi4vZWxlbWVudC50c1wiO1xuaW1wb3J0IHR5cGUgeyBEb2N1bWVudCB9IGZyb20gXCIuLi9kb2N1bWVudC50c1wiO1xuXG5leHBvcnQgdHlwZSBTZWxlY3RvciA9IChkb2M6IERvY3VtZW50KSA9PiB7XG4gIGZpcnN0KFxuICAgIHNlbGVjdG9yOiBzdHJpbmcsXG4gICAgY29udGV4dDogRWxlbWVudCB8IERvY3VtZW50LFxuICAgIGNhbGxiYWNrPzogKGVsZW1lbnQ6IEVsZW1lbnQpID0+IHZvaWQsXG4gICk6IEVsZW1lbnQgfCBudWxsO1xuICBtYXRjaChcbiAgICBzZWxlY3Rvcjogc3RyaW5nLFxuICAgIGNvbnRleHQ6IEVsZW1lbnQgfCBEb2N1bWVudCxcbiAgICBjYWxsYmFjaz86IChlbGVtZW50OiBFbGVtZW50KSA9PiB2b2lkLFxuICApOiBib29sZWFuO1xuICBzZWxlY3QoXG4gICAgc2VsZWN0b3I6IHN0cmluZyxcbiAgICBjb250ZXh0OiBFbGVtZW50IHwgRG9jdW1lbnQsXG4gICAgY2FsbGJhY2s/OiAoZWxlbWVudDogRWxlbWVudCkgPT4gdm9pZCxcbiAgKTogRWxlbWVudFtdO1xufTtcbmV4cG9ydCB0eXBlIFNlbGVjdG9yQXBpID0gUmV0dXJuVHlwZTxTZWxlY3Rvcj47XG5cbmxldCBjb2RlR2VuZXJhdGlvbkFsbG93ZWQ6IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdG9yRW5naW5lKCk6IFNlbGVjdG9yIHtcbiAgaWYgKGNvZGVHZW5lcmF0aW9uQWxsb3dlZCA9PT0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICBuZXcgRnVuY3Rpb24oXCJcIik7XG4gICAgICBjb2RlR2VuZXJhdGlvbkFsbG93ZWQgPSB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvZGVHZW5lcmF0aW9uQWxsb3dlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjb2RlR2VuZXJhdGlvbkFsbG93ZWQpIHtcbiAgICByZXR1cm4gTldBUEk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFNpenpsZTtcbiAgfVxufVxuXG4vKipcbiAqIEV4cGxpY2l0bHkgZGlzYWJsZSBxdWVyeVNlbGVjdG9yL0FsbCBjb2RlIGdlbmVyYXRpb24gd2l0aCB0aGUgYEZ1bmN0aW9uYFxuICogY29uc3RydWN0b3IgZm9yY2luZyB0aGUgU2l6emxlIGVuZ2luZS4gRW5hYmxlcyB0aG9zZSBBUElzIG9uIHBsYXRmb3Jtc1xuICogbGlrZSBEZW5vIERlcGxveSB0aGF0IGRvbid0IGFsbG93IGNvZGUgZ2VuZXJhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpc2FibGVDb2RlR2VuZXJhdGlvbigpIHtcbiAgY29kZUdlbmVyYXRpb25BbGxvd2VkID0gZmFsc2U7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxPQUFPLEtBQUssUUFBUSxvQkFBb0I7QUFDakQsU0FBUyxPQUFPLE1BQU0sUUFBUSxvQkFBb0I7QUF1QmxELElBQUksd0JBQXdDO0FBRTVDLE9BQU8sU0FBUztFQUNkLElBQUksMEJBQTBCLE1BQU07SUFDbEMsSUFBSTtNQUNGLElBQUksU0FBUztNQUNiLHdCQUF3QjtJQUMxQixFQUFFLE9BQU8sR0FBRztNQUNWLHdCQUF3QjtJQUMxQjtFQUNGO0VBRUEsSUFBSSx1QkFBdUI7SUFDekIsT0FBTztFQUNULE9BQU87SUFDTCxPQUFPO0VBQ1Q7QUFDRjtBQUVBOzs7O0NBSUMsR0FDRCxPQUFPLFNBQVM7RUFDZCx3QkFBd0I7QUFDMUIifQ== +// denoCacheMetadata=15371282116319597363,12552597277077397552
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/721bb4290fe85bb4d19eb3947d3a05e8429f2005b9d9974c99116cfe44df50c2.js b/vendor/gen/https/deno.land/721bb4290fe85bb4d19eb3947d3a05e8429f2005b9d9974c99116cfe44df50c2.js new file mode 100644 index 0000000..00539bf --- /dev/null +++ b/vendor/gen/https/deno.land/721bb4290fe85bb4d19eb3947d3a05e8429f2005b9d9974c99116cfe44df50c2.js @@ -0,0 +1,3 @@ +// deno-lint-ignore-file no-explicit-any +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC9kZXByZWNhdGVkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGRlbm8tbGludC1pZ25vcmUtZmlsZSBuby1leHBsaWNpdC1hbnlcblxuaW1wb3J0IHR5cGUgeyBDb21tYW5kIH0gZnJvbSBcIi4vY29tbWFuZC50c1wiO1xuaW1wb3J0IHR5cGUgeyBUeXBlIH0gZnJvbSBcIi4vdHlwZS50c1wiO1xuaW1wb3J0IHR5cGUge1xuICBBY3Rpb25IYW5kbGVyLFxuICBBcmd1bWVudCxcbiAgQ29tbWFuZFJlc3VsdCxcbiAgQ29tcGxldGVIYW5kbGVyLFxuICBDb21wbGV0ZU9wdGlvbnMsXG4gIENvbXBsZXRpb24sXG4gIERlc2NyaXB0aW9uLFxuICBFbnZWYXIsXG4gIEVudlZhck9wdGlvbnMsXG4gIEVudlZhclZhbHVlSGFuZGxlcixcbiAgRXhhbXBsZSxcbiAgR2xvYmFsRW52VmFyT3B0aW9ucyxcbiAgR2xvYmFsT3B0aW9uT3B0aW9ucyxcbiAgSGVscEhhbmRsZXIsXG4gIE9wdGlvbixcbiAgT3B0aW9uT3B0aW9ucyxcbiAgT3B0aW9uVmFsdWVIYW5kbGVyLFxuICBUeXBlRGVmLFxuICBUeXBlT3B0aW9ucyxcbiAgVmVyc2lvbkhhbmRsZXIsXG59IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2UgYEFyZ3VtZW50YCBpbnN0ZWFkLiAqL1xuZXhwb3J0IHR5cGUgSUFyZ3VtZW50ID0gQXJndW1lbnQ7XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2UgYEdsb2JhbE9wdGlvbk9wdGlvbnNgIGluc3RlYWQuICovXG5leHBvcnQgdHlwZSBJQ29tbWFuZEdsb2JhbE9wdGlvbjxcbiAgTyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gYW55LFxuICBBIGV4dGVuZHMgQXJyYXk8dW5rbm93bj4gPSBPIGV4dGVuZHMgbnVtYmVyID8gYW55IDogW10sXG4gIEcgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IE8gZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiB2b2lkLFxuICBQRyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IHZvaWQsXG4gIENUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBPIGV4dGVuZHMgbnVtYmVyID8gYW55IDogdm9pZCxcbiAgR1QgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IE8gZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiB2b2lkLFxuICBQVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IHZvaWQsXG4gIFAgZXh0ZW5kcyBDb21tYW5kPGFueT4gfCB1bmRlZmluZWQgPSBPIGV4dGVuZHMgbnVtYmVyID8gYW55IDogdW5kZWZpbmVkLFxuPiA9IEdsb2JhbE9wdGlvbk9wdGlvbnM8TywgQSwgRywgUEcsIENULCBHVCwgUFQsIFA+O1xuXG4vKiogQGRlcHJlY2F0ZWQgVXNlIGBPcHRpb25PcHRpb25zYCBpbnN0ZWFkLiAqL1xuZXhwb3J0IHR5cGUgSUNvbW1hbmRPcHRpb248XG4gIE8gZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IGFueSxcbiAgQSBleHRlbmRzIEFycmF5PHVua25vd24+ID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IFtdLFxuICBHIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBPIGV4dGVuZHMgbnVtYmVyID8gYW55IDogdm9pZCxcbiAgUEcgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IE8gZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiB2b2lkLFxuICBDVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IHZvaWQsXG4gIEdUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBPIGV4dGVuZHMgbnVtYmVyID8gYW55IDogdm9pZCxcbiAgUFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IE8gZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiB2b2lkLFxuICBQIGV4dGVuZHMgQ29tbWFuZDxhbnk+IHwgdW5kZWZpbmVkID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IHVuZGVmaW5lZCxcbj4gPSBPcHRpb25PcHRpb25zPE8sIEEsIEcsIFBHLCBDVCwgR1QsIFBULCBQPjtcblxuLyoqIEBkZXByZWNhdGVkIFVzZSBgQ29tcGxldGVPcHRpb25zYCBpbnN0ZWFkLiAqL1xuZXhwb3J0IHR5cGUgSUNvbXBsZXRlT3B0aW9ucyA9IENvbXBsZXRlT3B0aW9ucztcblxuLyoqIEBkZXByZWNhdGVkIFVzZSBgQ29tcGxldGlvbmAgaW5zdGVhZC4gKi9cbmV4cG9ydCB0eXBlIElDb21wbGV0aW9uPFxuICBPIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBhbnksXG4gIEEgZXh0ZW5kcyBBcnJheTx1bmtub3duPiA9IE8gZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiBbXSxcbiAgRyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IHZvaWQsXG4gIFBHIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBPIGV4dGVuZHMgbnVtYmVyID8gYW55IDogdm9pZCxcbiAgQ1QgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IE8gZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiB2b2lkLFxuICBHVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IHZvaWQsXG4gIFBUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBPIGV4dGVuZHMgbnVtYmVyID8gYW55IDogdm9pZCxcbiAgUCBleHRlbmRzIENvbW1hbmQ8YW55PiB8IHVuZGVmaW5lZCA9IE8gZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiB1bmRlZmluZWQsXG4+ID0gQ29tcGxldGlvbjxPLCBBLCBHLCBQRywgQ1QsIEdULCBQVCwgUD47XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2UgYEVudlZhcmAgaW5zdGVhZC4gKi9cbmV4cG9ydCB0eXBlIElFbnZWYXIgPSBFbnZWYXI7XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2UgYEVudlZhck9wdGlvbnNgIGluc3RlYWQuICovXG5leHBvcnQgdHlwZSBJRW52VmFyT3B0aW9ucyA9IEVudlZhck9wdGlvbnM7XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2UgYEV4YW1wbGVgIGluc3RlYWQuICovXG5leHBvcnQgdHlwZSBJRXhhbXBsZSA9IEV4YW1wbGU7XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2UgYEdsb2JhbEVudlZhck9wdGlvbnNgIGluc3RlYWQuICovXG5leHBvcnQgdHlwZSBJR2xvYmFsRW52VmFyT3B0aW9ucyA9IEdsb2JhbEVudlZhck9wdGlvbnM7XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2UgYE9wdGlvbmAgaW5zdGVhZC4gKi9cbmV4cG9ydCB0eXBlIElPcHRpb248XG4gIE8gZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IGFueSxcbiAgQSBleHRlbmRzIEFycmF5PHVua25vd24+ID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IFtdLFxuICBHIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBPIGV4dGVuZHMgbnVtYmVyID8gYW55IDogdm9pZCxcbiAgUEcgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IE8gZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiB2b2lkLFxuICBDVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IHZvaWQsXG4gIEdUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBPIGV4dGVuZHMgbnVtYmVyID8gYW55IDogdm9pZCxcbiAgUFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IE8gZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiB2b2lkLFxuICBQIGV4dGVuZHMgQ29tbWFuZDxhbnk+IHwgdW5kZWZpbmVkID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IHVuZGVmaW5lZCxcbj4gPSBPcHRpb248TywgQSwgRywgUEcsIENULCBHVCwgUFQsIFA+O1xuXG4vKiogQGRlcHJlY2F0ZWQgVXNlIGBDb21tYW5kUmVzdWx0YCBpbnN0ZWFkLiAqL1xuZXhwb3J0IHR5cGUgSVBhcnNlUmVzdWx0PFxuICBPIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBhbnksXG4gIEEgZXh0ZW5kcyBBcnJheTx1bmtub3duPiA9IE8gZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiBbXSxcbiAgRyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IHZvaWQsXG4gIFBHIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBPIGV4dGVuZHMgbnVtYmVyID8gYW55IDogdm9pZCxcbiAgQ1QgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IE8gZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiB2b2lkLFxuICBHVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IHZvaWQsXG4gIFBUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBPIGV4dGVuZHMgbnVtYmVyID8gYW55IDogdm9pZCxcbiAgUCBleHRlbmRzIENvbW1hbmQ8YW55PiB8IHVuZGVmaW5lZCA9IE8gZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiB1bmRlZmluZWQsXG4+ID0gQ29tbWFuZFJlc3VsdDxPLCBBLCBHLCBQRywgQ1QsIEdULCBQVCwgUD47XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2UgYFR5cGVEZWZgIGluc3RlYWQuICovXG5leHBvcnQgdHlwZSBJVHlwZSA9IFR5cGVEZWY7XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2UgYFR5cGVPcHRpb25zYCBpbnN0ZWFkLiAqL1xuZXhwb3J0IHR5cGUgSVR5cGVPcHRpb25zID0gVHlwZU9wdGlvbnM7XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2UgYEFjdGlvbkhhbmRsZXJgIGluc3RlYWQuICovXG5leHBvcnQgdHlwZSBJQWN0aW9uPFxuICBPIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBhbnksXG4gIEEgZXh0ZW5kcyBBcnJheTx1bmtub3duPiA9IE8gZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiBbXSxcbiAgRyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IHZvaWQsXG4gIFBHIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBPIGV4dGVuZHMgbnVtYmVyID8gYW55IDogdm9pZCxcbiAgQ1QgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IE8gZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiB2b2lkLFxuICBHVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IHZvaWQsXG4gIFBUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBPIGV4dGVuZHMgbnVtYmVyID8gYW55IDogdm9pZCxcbiAgUCBleHRlbmRzIENvbW1hbmQ8YW55PiB8IHVuZGVmaW5lZCA9IE8gZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiB1bmRlZmluZWQsXG4+ID0gQWN0aW9uSGFuZGxlcjxPLCBBLCBHLCBQRywgQ1QsIEdULCBQVCwgUD47XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2UgYENvbXBsZXRlSGFuZGxlcmAgaW5zdGVhZC4gKi9cbmV4cG9ydCB0eXBlIElDb21wbGV0ZUhhbmRsZXI8XG4gIE8gZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IGFueSxcbiAgQSBleHRlbmRzIEFycmF5PHVua25vd24+ID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IFtdLFxuICBHIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBPIGV4dGVuZHMgbnVtYmVyID8gYW55IDogdm9pZCxcbiAgUEcgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IE8gZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiB2b2lkLFxuICBDVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IHZvaWQsXG4gIEdUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBPIGV4dGVuZHMgbnVtYmVyID8gYW55IDogdm9pZCxcbiAgUFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IE8gZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiB2b2lkLFxuICBQIGV4dGVuZHMgQ29tbWFuZDxhbnk+IHwgdW5kZWZpbmVkID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IHVuZGVmaW5lZCxcbj4gPSBDb21wbGV0ZUhhbmRsZXI8TywgQSwgRywgUEcsIENULCBHVCwgUFQsIFA+O1xuXG4vKiogQGRlcHJlY2F0ZWQgVXNlIGBEZXNjcmlwdGlvbmAgaW5zdGVhZC4gKi9cbmV4cG9ydCB0eXBlIElEZXNjcmlwdGlvbjxcbiAgTyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gYW55LFxuICBBIGV4dGVuZHMgQXJyYXk8dW5rbm93bj4gPSBPIGV4dGVuZHMgbnVtYmVyID8gYW55IDogW10sXG4gIEcgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IE8gZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiB2b2lkLFxuICBQRyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IHZvaWQsXG4gIENUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBPIGV4dGVuZHMgbnVtYmVyID8gYW55IDogdm9pZCxcbiAgR1QgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IE8gZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiB2b2lkLFxuICBQVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IHZvaWQsXG4gIFAgZXh0ZW5kcyBDb21tYW5kPGFueT4gfCB1bmRlZmluZWQgPSBPIGV4dGVuZHMgbnVtYmVyID8gYW55IDogdW5kZWZpbmVkLFxuPiA9IERlc2NyaXB0aW9uPE8sIEEsIEcsIFBHLCBDVCwgR1QsIFBULCBQPjtcblxuLyoqIEBkZXByZWNhdGVkIFVzZSBgRW52VmFyVmFsdWVIYW5kbGVyYCBpbnN0ZWFkLiAqL1xuZXhwb3J0IHR5cGUgSUVudlZhclZhbHVlSGFuZGxlcjxUVmFsdWUgPSBhbnksIFRSZXR1cm4gPSBUVmFsdWU+ID1cbiAgRW52VmFyVmFsdWVIYW5kbGVyPFRWYWx1ZSwgVFJldHVybj47XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2UgYE9wdGlvblZhbHVlSGFuZGxlcmAgaW5zdGVhZC4gKi9cbmV4cG9ydCB0eXBlIElGbGFnVmFsdWVIYW5kbGVyPFRWYWx1ZSA9IGFueSwgVFJldHVybiA9IFRWYWx1ZT4gPVxuICBPcHRpb25WYWx1ZUhhbmRsZXI8VFZhbHVlLCBUUmV0dXJuPjtcblxuLyoqIEBkZXByZWNhdGVkIFVzZSBgSGVscEhhbmRsZXJgIGluc3RlYWQuICovXG5leHBvcnQgdHlwZSBJSGVscEhhbmRsZXI8XG4gIE8gZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IGFueSxcbiAgQSBleHRlbmRzIEFycmF5PHVua25vd24+ID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IFtdLFxuICBHIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBPIGV4dGVuZHMgbnVtYmVyID8gYW55IDogdm9pZCxcbiAgUEcgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IE8gZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiB2b2lkLFxuICBDVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IHZvaWQsXG4gIEdUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBPIGV4dGVuZHMgbnVtYmVyID8gYW55IDogdm9pZCxcbiAgUFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IE8gZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiB2b2lkLFxuICBQIGV4dGVuZHMgQ29tbWFuZDxhbnk+IHwgdW5kZWZpbmVkID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IHVuZGVmaW5lZCxcbiAgQyBleHRlbmRzIENvbW1hbmQ8UEcsIFBULCBPLCBBLCBHLCBDVCwgR1QsIFA+ID0gQ29tbWFuZDxcbiAgICBQRyxcbiAgICBQVCxcbiAgICBPLFxuICAgIEEsXG4gICAgRyxcbiAgICBDVCxcbiAgICBHVCxcbiAgICBQXG4gID4sXG4+ID0gSGVscEhhbmRsZXI8TywgQSwgRywgUEcsIENULCBHVCwgUFQsIFA+O1xuXG4vKiogQGRlcHJlY2F0ZWQgVXNlIGBWZXJzaW9uSGFuZGxlcmAgaW5zdGVhZC4gKi9cbmV4cG9ydCB0eXBlIElWZXJzaW9uSGFuZGxlcjxcbiAgTyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gYW55LFxuICBBIGV4dGVuZHMgQXJyYXk8dW5rbm93bj4gPSBPIGV4dGVuZHMgbnVtYmVyID8gYW55IDogW10sXG4gIEcgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IE8gZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiB2b2lkLFxuICBQRyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IHZvaWQsXG4gIENUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBPIGV4dGVuZHMgbnVtYmVyID8gYW55IDogdm9pZCxcbiAgR1QgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IE8gZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiB2b2lkLFxuICBQVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gTyBleHRlbmRzIG51bWJlciA/IGFueSA6IHZvaWQsXG4gIFAgZXh0ZW5kcyBDb21tYW5kPGFueT4gfCB1bmRlZmluZWQgPSBPIGV4dGVuZHMgbnVtYmVyID8gYW55IDogdW5kZWZpbmVkLFxuICBDIGV4dGVuZHMgQ29tbWFuZDxQRywgUFQsIE8sIEEsIEcsIENULCBHVCwgUD4gPSBDb21tYW5kPFxuICAgIFBHLFxuICAgIFBULFxuICAgIE8sXG4gICAgQSxcbiAgICBHLFxuICAgIENULFxuICAgIEdULFxuICAgIFBcbiAgPixcbj4gPSBWZXJzaW9uSGFuZGxlcjxPLCBBLCBHLCBQRywgQ1QsIEdULCBQVCwgUD47XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2UgYFR5cGUuaW5mZXJgIGluc3RlYWQuICovXG5leHBvcnQgdHlwZSBUeXBlVmFsdWU8VFR5cGUsIFREZWZhdWx0ID0gVFR5cGU+ID0gVHlwZS5pbmZlcjxUVHlwZSwgVERlZmF1bHQ+O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdDQUF3QyJ9 +// denoCacheMetadata=7068101644300130909,3868981483654809315
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/73f8e40cdfb2f7106d82269a0774d7824e2f8630ac33479a521255866f3e7f0d.js b/vendor/gen/https/deno.land/73f8e40cdfb2f7106d82269a0774d7824e2f8630ac33479a521255866f3e7f0d.js new file mode 100644 index 0000000..c1936b3 --- /dev/null +++ b/vendor/gen/https/deno.land/73f8e40cdfb2f7106d82269a0774d7824e2f8630ac33479a521255866f3e7f0d.js @@ -0,0 +1,94 @@ +import { bold, brightBlue, cyan, green, red, yellow } from "../deps.ts"; +import { ValidationError } from "../_errors.ts"; +import { Table } from "../../table/table.ts"; +export class Provider { + maxListSize = 25; + maxCols = 8; + async isOutdated(name, currentVersion, targetVersion) { + const { latest, versions } = await this.getVersions(name); + if (targetVersion === "latest") { + targetVersion = latest; + } + // Check if requested version exists. + if (targetVersion && !versions.includes(targetVersion)) { + throw new ValidationError(`The provided version ${bold(red(targetVersion))} is not found.\n\n ${cyan(`Visit ${brightBlue(this.getRepositoryUrl(name))} for available releases or run again with the ${yellow("-l")} or ${yellow("--list-versions")} command.`)}`); + } + // Check if requested version is already the latest available version. + if (latest && latest === currentVersion && latest === targetVersion) { + console.warn(yellow(`You're already using the latest available version ${currentVersion} of ${name}.`)); + return false; + } + // Check if requested version is already installed. + if (targetVersion && currentVersion === targetVersion) { + console.warn(yellow(`You're already using version ${currentVersion} of ${name}.`)); + return false; + } + return true; + } + async upgrade({ name, from, to, importMap, main = `${name}.ts`, args = [] }) { + if (to === "latest") { + const { latest } = await this.getVersions(name); + to = latest; + } + const registry = new URL(main, this.getRegistryUrl(name, to)).href; + const cmd = [ + Deno.execPath(), + "install" + ]; + if (importMap) { + const importJson = new URL(importMap, this.getRegistryUrl(name, to)).href; + cmd.push("--import-map", importJson); + } + if (args.length) { + cmd.push(...args, "--force", "--name", name, registry); + } else { + cmd.push("--no-check", "--quiet", "--force", "--name", name, registry); + } + const process = Deno.run({ + cmd, + stdout: "piped", + stderr: "piped" + }); + const [status, stderr] = await Promise.all([ + process.status(), + process.stderrOutput(), + process.output() + ]); + if (!status.success) { + process.close(); + await Deno.stderr.write(stderr); + throw new Error(`Failed to upgrade ${name} from ${from} to version ${to}!`); + } + process.close(); + console.info(`Successfully upgraded ${name} from ${from} to version ${to}! (${this.getRegistryUrl(name, to)})`); + } + async listVersions(name, currentVersion) { + const { versions } = await this.getVersions(name); + this.printVersions(versions, currentVersion); + } + printVersions(versions, currentVersion, { maxCols = this.maxCols, indent = 0 } = {}) { + versions = versions.slice(); + if (versions?.length) { + versions = versions.map((version)=>currentVersion && currentVersion === version ? green(`* ${version}`) : ` ${version}`); + if (versions.length > this.maxListSize) { + const table = new Table().indent(indent); + const rowSize = Math.ceil(versions.length / maxCols); + const colSize = Math.min(versions.length, maxCols); + let versionIndex = 0; + for(let colIndex = 0; colIndex < colSize; colIndex++){ + for(let rowIndex = 0; rowIndex < rowSize; rowIndex++){ + if (!table[rowIndex]) { + table[rowIndex] = []; + } + table[rowIndex][colIndex] = versions[versionIndex++]; + } + } + console.log(table.toString()); + } else { + console.log(versions.map((version)=>" ".repeat(indent) + version).join("\n")); + } + } + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC91cGdyYWRlL3Byb3ZpZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJvbGQsIGJyaWdodEJsdWUsIGN5YW4sIGdyZWVuLCByZWQsIHllbGxvdyB9IGZyb20gXCIuLi9kZXBzLnRzXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tIFwiLi4vX2Vycm9ycy50c1wiO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwiLi4vLi4vdGFibGUvdGFibGUudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBWZXJzaW9ucyB7XG4gIGxhdGVzdDogc3RyaW5nO1xuICB2ZXJzaW9uczogQXJyYXk8c3RyaW5nPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGdyYWRlT3B0aW9ucyB7XG4gIG5hbWU6IHN0cmluZztcbiAgZnJvbT86IHN0cmluZztcbiAgdG86IHN0cmluZztcbiAgYXJncz86IEFycmF5PHN0cmluZz47XG4gIG1haW4/OiBzdHJpbmc7XG4gIGltcG9ydE1hcD86IHN0cmluZztcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFByb3ZpZGVyIHtcbiAgYWJzdHJhY3QgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWF4TGlzdFNpemU6IG51bWJlciA9IDI1O1xuICBwcml2YXRlIG1heENvbHMgPSA4O1xuXG4gIGFic3RyYWN0IGdldFZlcnNpb25zKG5hbWU6IHN0cmluZyk6IFByb21pc2U8VmVyc2lvbnM+O1xuXG4gIGFic3RyYWN0IGdldFJlcG9zaXRvcnlVcmwobmFtZTogc3RyaW5nKTogc3RyaW5nO1xuXG4gIGFic3RyYWN0IGdldFJlZ2lzdHJ5VXJsKG5hbWU6IHN0cmluZywgdmVyc2lvbjogc3RyaW5nKTogc3RyaW5nO1xuXG4gIGFzeW5jIGlzT3V0ZGF0ZWQoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGN1cnJlbnRWZXJzaW9uOiBzdHJpbmcsXG4gICAgdGFyZ2V0VmVyc2lvbjogc3RyaW5nLFxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGxhdGVzdCwgdmVyc2lvbnMgfSA9IGF3YWl0IHRoaXMuZ2V0VmVyc2lvbnMobmFtZSk7XG5cbiAgICBpZiAodGFyZ2V0VmVyc2lvbiA9PT0gXCJsYXRlc3RcIikge1xuICAgICAgdGFyZ2V0VmVyc2lvbiA9IGxhdGVzdDtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiByZXF1ZXN0ZWQgdmVyc2lvbiBleGlzdHMuXG4gICAgaWYgKHRhcmdldFZlcnNpb24gJiYgIXZlcnNpb25zLmluY2x1ZGVzKHRhcmdldFZlcnNpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBgVGhlIHByb3ZpZGVkIHZlcnNpb24gJHtcbiAgICAgICAgICBib2xkKHJlZCh0YXJnZXRWZXJzaW9uKSlcbiAgICAgICAgfSBpcyBub3QgZm91bmQuXFxuXFxuICAgICR7XG4gICAgICAgICAgY3lhbihcbiAgICAgICAgICAgIGBWaXNpdCAke1xuICAgICAgICAgICAgICBicmlnaHRCbHVlKHRoaXMuZ2V0UmVwb3NpdG9yeVVybChuYW1lKSlcbiAgICAgICAgICAgIH0gZm9yIGF2YWlsYWJsZSByZWxlYXNlcyBvciBydW4gYWdhaW4gd2l0aCB0aGUgJHsoeWVsbG93KFxuICAgICAgICAgICAgICBcIi1sXCIsXG4gICAgICAgICAgICApKX0gb3IgJHsoeWVsbG93KFwiLS1saXN0LXZlcnNpb25zXCIpKX0gY29tbWFuZC5gLFxuICAgICAgICAgIClcbiAgICAgICAgfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHJlcXVlc3RlZCB2ZXJzaW9uIGlzIGFscmVhZHkgdGhlIGxhdGVzdCBhdmFpbGFibGUgdmVyc2lvbi5cbiAgICBpZiAobGF0ZXN0ICYmIGxhdGVzdCA9PT0gY3VycmVudFZlcnNpb24gJiYgbGF0ZXN0ID09PSB0YXJnZXRWZXJzaW9uKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIHllbGxvdyhcbiAgICAgICAgICBgWW91J3JlIGFscmVhZHkgdXNpbmcgdGhlIGxhdGVzdCBhdmFpbGFibGUgdmVyc2lvbiAke2N1cnJlbnRWZXJzaW9ufSBvZiAke25hbWV9LmAsXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHJlcXVlc3RlZCB2ZXJzaW9uIGlzIGFscmVhZHkgaW5zdGFsbGVkLlxuICAgIGlmICh0YXJnZXRWZXJzaW9uICYmIGN1cnJlbnRWZXJzaW9uID09PSB0YXJnZXRWZXJzaW9uKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIHllbGxvdyhgWW91J3JlIGFscmVhZHkgdXNpbmcgdmVyc2lvbiAke2N1cnJlbnRWZXJzaW9ufSBvZiAke25hbWV9LmApLFxuICAgICAgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIHVwZ3JhZGUoXG4gICAgeyBuYW1lLCBmcm9tLCB0bywgaW1wb3J0TWFwLCBtYWluID0gYCR7bmFtZX0udHNgLCBhcmdzID0gW10gfTpcbiAgICAgIFVwZ3JhZGVPcHRpb25zLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodG8gPT09IFwibGF0ZXN0XCIpIHtcbiAgICAgIGNvbnN0IHsgbGF0ZXN0IH0gPSBhd2FpdCB0aGlzLmdldFZlcnNpb25zKG5hbWUpO1xuICAgICAgdG8gPSBsYXRlc3Q7XG4gICAgfVxuICAgIGNvbnN0IHJlZ2lzdHJ5OiBzdHJpbmcgPSBuZXcgVVJMKG1haW4sIHRoaXMuZ2V0UmVnaXN0cnlVcmwobmFtZSwgdG8pKS5ocmVmO1xuXG4gICAgY29uc3QgY21kID0gW0Rlbm8uZXhlY1BhdGgoKSwgXCJpbnN0YWxsXCJdO1xuXG4gICAgaWYgKGltcG9ydE1hcCkge1xuICAgICAgY29uc3QgaW1wb3J0SnNvbjogc3RyaW5nID1cbiAgICAgICAgbmV3IFVSTChpbXBvcnRNYXAsIHRoaXMuZ2V0UmVnaXN0cnlVcmwobmFtZSwgdG8pKS5ocmVmO1xuXG4gICAgICBjbWQucHVzaChcIi0taW1wb3J0LW1hcFwiLCBpbXBvcnRKc29uKTtcbiAgICB9XG5cbiAgICBpZiAoYXJncy5sZW5ndGgpIHtcbiAgICAgIGNtZC5wdXNoKC4uLmFyZ3MsIFwiLS1mb3JjZVwiLCBcIi0tbmFtZVwiLCBuYW1lLCByZWdpc3RyeSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNtZC5wdXNoKFwiLS1uby1jaGVja1wiLCBcIi0tcXVpZXRcIiwgXCItLWZvcmNlXCIsIFwiLS1uYW1lXCIsIG5hbWUsIHJlZ2lzdHJ5KTtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9jZXNzID0gRGVuby5ydW4oeyBjbWQsIHN0ZG91dDogXCJwaXBlZFwiLCBzdGRlcnI6IFwicGlwZWRcIiB9KTtcblxuICAgIGNvbnN0IFtzdGF0dXMsIHN0ZGVycl0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICBwcm9jZXNzLnN0YXR1cygpLFxuICAgICAgcHJvY2Vzcy5zdGRlcnJPdXRwdXQoKSxcbiAgICAgIHByb2Nlc3Mub3V0cHV0KCksXG4gICAgXSk7XG5cbiAgICBpZiAoIXN0YXR1cy5zdWNjZXNzKSB7XG4gICAgICBwcm9jZXNzLmNsb3NlKCk7XG4gICAgICBhd2FpdCBEZW5vLnN0ZGVyci53cml0ZShzdGRlcnIpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRmFpbGVkIHRvIHVwZ3JhZGUgJHtuYW1lfSBmcm9tICR7ZnJvbX0gdG8gdmVyc2lvbiAke3RvfSFgLFxuICAgICAgKTtcbiAgICB9XG4gICAgcHJvY2Vzcy5jbG9zZSgpO1xuXG4gICAgY29uc29sZS5pbmZvKFxuICAgICAgYFN1Y2Nlc3NmdWxseSB1cGdyYWRlZCAke25hbWV9IGZyb20gJHtmcm9tfSB0byB2ZXJzaW9uICR7dG99ISAoJHtcbiAgICAgICAgdGhpcy5nZXRSZWdpc3RyeVVybChuYW1lLCB0bylcbiAgICAgIH0pYCxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxpc3RWZXJzaW9ucyhcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgY3VycmVudFZlcnNpb24/OiBzdHJpbmcsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgdmVyc2lvbnMgfSA9IGF3YWl0IHRoaXMuZ2V0VmVyc2lvbnMobmFtZSk7XG4gICAgdGhpcy5wcmludFZlcnNpb25zKHZlcnNpb25zLCBjdXJyZW50VmVyc2lvbik7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJpbnRWZXJzaW9ucyhcbiAgICB2ZXJzaW9uczogQXJyYXk8c3RyaW5nPixcbiAgICBjdXJyZW50VmVyc2lvbj86IHN0cmluZyxcbiAgICB7IG1heENvbHMgPSB0aGlzLm1heENvbHMsIGluZGVudCA9IDAgfToge1xuICAgICAgbWF4Q29scz86IG51bWJlcjtcbiAgICAgIGluZGVudD86IG51bWJlcjtcbiAgICB9ID0ge30sXG4gICk6IHZvaWQge1xuICAgIHZlcnNpb25zID0gdmVyc2lvbnMuc2xpY2UoKTtcbiAgICBpZiAodmVyc2lvbnM/Lmxlbmd0aCkge1xuICAgICAgdmVyc2lvbnMgPSB2ZXJzaW9ucy5tYXAoKHZlcnNpb246IHN0cmluZykgPT5cbiAgICAgICAgY3VycmVudFZlcnNpb24gJiYgY3VycmVudFZlcnNpb24gPT09IHZlcnNpb25cbiAgICAgICAgICA/IGdyZWVuKGAqICR7dmVyc2lvbn1gKVxuICAgICAgICAgIDogYCAgJHt2ZXJzaW9ufWBcbiAgICAgICk7XG5cbiAgICAgIGlmICh2ZXJzaW9ucy5sZW5ndGggPiB0aGlzLm1heExpc3RTaXplKSB7XG4gICAgICAgIGNvbnN0IHRhYmxlID0gbmV3IFRhYmxlKCkuaW5kZW50KGluZGVudCk7XG4gICAgICAgIGNvbnN0IHJvd1NpemUgPSBNYXRoLmNlaWwodmVyc2lvbnMubGVuZ3RoIC8gbWF4Q29scyk7XG4gICAgICAgIGNvbnN0IGNvbFNpemUgPSBNYXRoLm1pbih2ZXJzaW9ucy5sZW5ndGgsIG1heENvbHMpO1xuICAgICAgICBsZXQgdmVyc2lvbkluZGV4ID0gMDtcbiAgICAgICAgZm9yIChsZXQgY29sSW5kZXggPSAwOyBjb2xJbmRleCA8IGNvbFNpemU7IGNvbEluZGV4KyspIHtcbiAgICAgICAgICBmb3IgKGxldCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDwgcm93U2l6ZTsgcm93SW5kZXgrKykge1xuICAgICAgICAgICAgaWYgKCF0YWJsZVtyb3dJbmRleF0pIHtcbiAgICAgICAgICAgICAgdGFibGVbcm93SW5kZXhdID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YWJsZVtyb3dJbmRleF1bY29sSW5kZXhdID0gdmVyc2lvbnNbdmVyc2lvbkluZGV4KytdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZyh0YWJsZS50b1N0cmluZygpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIHZlcnNpb25zLm1hcCgodmVyc2lvbikgPT4gXCIgXCIucmVwZWF0KGluZGVudCkgKyB2ZXJzaW9uKS5qb2luKFwiXFxuXCIpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLFFBQVEsYUFBYTtBQUN4RSxTQUFTLGVBQWUsUUFBUSxnQkFBZ0I7QUFDaEQsU0FBUyxLQUFLLFFBQVEsdUJBQXVCO0FBZ0I3QyxPQUFPLE1BQWU7RUFFRCxjQUFzQixHQUFHO0VBQ3BDLFVBQVUsRUFBRTtFQVFwQixNQUFNLFdBQ0osSUFBWSxFQUNaLGNBQXNCLEVBQ3RCLGFBQXFCLEVBQ0g7SUFDbEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFX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 +// denoCacheMetadata=14051251275348798095,4992053083864636675
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/74b01b574b3f43138835e07df185a4ec6a7b7703dd41b0a4946fef7d4dd1a83e.js b/vendor/gen/https/deno.land/74b01b574b3f43138835e07df185a4ec6a7b7703dd41b0a4946fef7d4dd1a83e.js new file mode 100644 index 0000000..f86fe85 --- /dev/null +++ b/vendor/gen/https/deno.land/74b01b574b3f43138835e07df185a4ec6a7b7703dd41b0a4946fef7d4dd1a83e.js @@ -0,0 +1,294 @@ +import { CTOR_KEY } from "../constructor-lock.ts"; +import { Comment, Node, NodeType, Text } from "./node.ts"; +import { NodeList, nodeListMutatorSym } from "./node-list.ts"; +import { Element } from "./element.ts"; +import { DocumentFragment } from "./document-fragment.ts"; +import { HTMLTemplateElement } from "./elements/html-template-element.ts"; +import { getSelectorEngine } from "./selectors/selectors.ts"; +import { getElementsByClassName } from "./utils.ts"; +import UtilTypes from "./utils-types.ts"; +import { getUpperCase } from "./string-cache.ts"; +export class DOMImplementation { + constructor(key){ + if (key !== CTOR_KEY) { + throw new TypeError("Illegal constructor."); + } + } + createDocument() { + throw new Error("Unimplemented"); // TODO + } + createHTMLDocument(titleStr) { + titleStr += ""; + const doc = new HTMLDocument(CTOR_KEY); + const docType = new DocumentType("html", "", "", CTOR_KEY); + doc.appendChild(docType); + const html = new Element("html", doc, [], CTOR_KEY); + html._setOwnerDocument(doc); + const head = new Element("head", html, [], CTOR_KEY); + const body = new Element("body", html, [], CTOR_KEY); + const title = new Element("title", head, [], CTOR_KEY); + const titleText = new Text(titleStr); + title.appendChild(titleText); + doc.head = head; + doc.body = body; + return doc; + } + createDocumentType(qualifiedName, publicId, systemId) { + const doctype = new DocumentType(qualifiedName, publicId, systemId, CTOR_KEY); + return doctype; + } +} +export class DocumentType extends Node { + #qualifiedName = ""; + #publicId = ""; + #systemId = ""; + constructor(name, publicId, systemId, key){ + super("html", NodeType.DOCUMENT_TYPE_NODE, null, key); + this.#qualifiedName = name; + this.#publicId = publicId; + this.#systemId = systemId; + } + get name() { + return this.#qualifiedName; + } + get publicId() { + return this.#publicId; + } + get systemId() { + return this.#systemId; + } + _shallowClone() { + return new DocumentType(this.#qualifiedName, this.#publicId, this.#systemId, CTOR_KEY); + } +} +export class Document extends Node { + head = null; + body = null; + implementation; + #documentURI = "about:blank"; + #nwapi = null; + constructor(){ + super("#document", NodeType.DOCUMENT_NODE, null, CTOR_KEY); + this.implementation = new DOMImplementation(CTOR_KEY); + } + _shallowClone() { + return new Document(); + } + // Expose the document's NWAPI for Element's access to + // querySelector/querySelectorAll + get _nwapi() { + return this.#nwapi || (this.#nwapi = getSelectorEngine()(this)); + } + get documentURI() { + return this.#documentURI; + } + get title() { + return this.querySelector("title")?.textContent || ""; + } + set title(value) { + let titleElement = this.querySelector("title"); + if (!titleElement) { + const { head } = this; + if (!head) return; + titleElement = this.createElement("title"); + head.appendChild(titleElement); + } + titleElement.textContent = value; + } + get cookie() { + return ""; // TODO + } + set cookie(newCookie) { + // TODO + } + get visibilityState() { + return "visible"; + } + get hidden() { + return false; + } + get compatMode() { + return "CSS1Compat"; + } + get documentElement() { + for (const node of this.childNodes){ + if (node.nodeType === NodeType.ELEMENT_NODE) { + return node; + } + } + return null; + } + get doctype() { + for (const node of this.childNodes){ + if (node.nodeType === NodeType.DOCUMENT_TYPE_NODE) { + return node; + } + } + return null; + } + get childElementCount() { + let count = 0; + for (const { nodeType } of this.childNodes){ + if (nodeType === NodeType.ELEMENT_NODE) { + count++; + } + } + return count; + } + appendChild(child) { + super.appendChild(child); + child._setOwnerDocument(this); + return child; + } + createElement(tagName, options) { + tagName = getUpperCase(tagName); + switch(tagName){ + case "TEMPLATE": + { + const frag = new DocumentFragment(); + const elm = new HTMLTemplateElement(null, [], CTOR_KEY, frag); + elm._setOwnerDocument(this); + return elm; + } + default: + { + const elm = new Element(tagName, null, [], CTOR_KEY); + elm._setOwnerDocument(this); + return elm; + } + } + } + createElementNS(namespace, qualifiedName, options) { + if (namespace === "http://www.w3.org/1999/xhtml") { + return this.createElement(qualifiedName, options); + } else { + throw new Error(`createElementNS: "${namespace}" namespace unimplemented`); // TODO + } + } + createTextNode(data) { + return new Text(data); + } + createComment(data) { + return new Comment(data); + } + createDocumentFragment() { + const fragment = new DocumentFragment(); + fragment._setOwnerDocument(this); + return fragment; + } + importNode(node, deep = false) { + const copy = node.cloneNode(deep); + copy._setOwnerDocument(this); + return copy; + } + adoptNode(node) { + if (node instanceof Document) { + throw new DOMException("Adopting a Document node is not supported.", "NotSupportedError"); + } + node._setParent(null); + node._setOwnerDocument(this); + return node; + } + // FIXME: This is a bad solution. The correct solution + // would be to make `.body` and `.head` dynamic getters, + // but that would be a breaking change since `.body` + // and `.head` would need to be typed as `Element | null`. + // Currently they're typed as `Element` which is incorrect... + cloneNode(deep) { + const doc = super.cloneNode(deep); + for (const child of doc.documentElement?.childNodes || []){ + switch(child.nodeName){ + case "BODY": + { + doc.body = child; + break; + } + case "HEAD": + { + doc.head = child; + break; + } + } + } + return doc; + } + querySelector(selectors) { + return this._nwapi.first(selectors, this); + } + querySelectorAll(selectors) { + const nodeList = new NodeList(); + const mutator = nodeList[nodeListMutatorSym](); + for (const match of this._nwapi.select(selectors, this)){ + mutator.push(match); + } + return nodeList; + } + // TODO: DRY!!! + getElementById(id) { + if (!this._hasInitializedChildNodes()) { + return null; + } + for (const child of this.childNodes){ + if (child.nodeType === NodeType.ELEMENT_NODE) { + if (child.id === id) { + return child; + } + const search = child.getElementById(id); + if (search) { + return search; + } + } + } + return null; + } + getElementsByTagName(tagName) { + if (tagName === "*") { + return this.documentElement ? this._getElementsByTagNameWildcard(this.documentElement, []) : []; + } else { + return this._getElementsByTagName(getUpperCase(tagName), []); + } + } + _getElementsByTagNameWildcard(node, search) { + for (const child of this.childNodes){ + if (child.nodeType === NodeType.ELEMENT_NODE) { + search.push(child); + child._getElementsByTagNameWildcard(search); + } + } + return search; + } + _getElementsByTagName(tagName, search) { + for (const child of this.childNodes){ + if (child.nodeType === NodeType.ELEMENT_NODE) { + if (child.tagName === tagName) { + search.push(child); + } + child._getElementsByTagName(tagName, search); + } + } + return search; + } + getElementsByTagNameNS(_namespace, localName) { + return this.getElementsByTagName(localName); + } + getElementsByClassName(className) { + return getElementsByClassName(this, className.trim().split(/\s+/), []); + } + hasFocus() { + return true; + } +} +export class HTMLDocument extends Document { + constructor(key){ + if (key !== CTOR_KEY) { + throw new TypeError("Illegal constructor."); + } + super(); + } + _shallowClone() { + return new HTMLDocument(CTOR_KEY); + } +} +UtilTypes.Document = Document; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvZGVub19kb21AdjAuMS40OS9zcmMvZG9tL2RvY3VtZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENUT1JfS0VZIH0gZnJvbSBcIi4uL2NvbnN0cnVjdG9yLWxvY2sudHNcIjtcbmltcG9ydCB7IENvbW1lbnQsIE5vZGUsIE5vZGVUeXBlLCBUZXh0IH0gZnJvbSBcIi4vbm9kZS50c1wiO1xuaW1wb3J0IHsgTm9kZUxpc3QsIG5vZGVMaXN0TXV0YXRvclN5bSB9IGZyb20gXCIuL25vZGUtbGlzdC50c1wiO1xuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gXCIuL2VsZW1lbnQudHNcIjtcbmltcG9ydCB7IERvY3VtZW50RnJhZ21lbnQgfSBmcm9tIFwiLi9kb2N1bWVudC1mcmFnbWVudC50c1wiO1xuaW1wb3J0IHsgSFRNTFRlbXBsYXRlRWxlbWVudCB9IGZyb20gXCIuL2VsZW1lbnRzL2h0bWwtdGVtcGxhdGUtZWxlbWVudC50c1wiO1xuaW1wb3J0IHsgZ2V0U2VsZWN0b3JFbmdpbmUsIFNlbGVjdG9yQXBpIH0gZnJvbSBcIi4vc2VsZWN0b3JzL3NlbGVjdG9ycy50c1wiO1xuaW1wb3J0IHsgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSB9IGZyb20gXCIuL3V0aWxzLnRzXCI7XG5pbXBvcnQgVXRpbFR5cGVzIGZyb20gXCIuL3V0aWxzLXR5cGVzLnRzXCI7XG5pbXBvcnQgeyBnZXRVcHBlckNhc2UgfSBmcm9tIFwiLi9zdHJpbmctY2FjaGUudHNcIjtcblxuZXhwb3J0IGNsYXNzIERPTUltcGxlbWVudGF0aW9uIHtcbiAgY29uc3RydWN0b3Ioa2V5OiB0eXBlb2YgQ1RPUl9LRVkpIHtcbiAgICBpZiAoa2V5ICE9PSBDVE9SX0tFWSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIklsbGVnYWwgY29uc3RydWN0b3IuXCIpO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZURvY3VtZW50KCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlVuaW1wbGVtZW50ZWRcIik7IC8vIFRPRE9cbiAgfVxuXG4gIGNyZWF0ZUhUTUxEb2N1bWVudCh0aXRsZVN0cj86IHN0cmluZyk6IEhUTUxEb2N1bWVudCB7XG4gICAgdGl0bGVTdHIgKz0gXCJcIjtcblxuICAgIGNvbnN0IGRvYyA9IG5ldyBIVE1MRG9jdW1lbnQoQ1RPUl9LRVkpO1xuXG4gICAgY29uc3QgZG9jVHlwZSA9IG5ldyBEb2N1bWVudFR5cGUoXCJodG1sXCIsIFwiXCIsIFwiXCIsIENUT1JfS0VZKTtcbiAgICBkb2MuYXBwZW5kQ2hpbGQoZG9jVHlwZSk7XG5cbiAgICBjb25zdCBodG1sID0gbmV3IEVsZW1lbnQoXCJodG1sXCIsIGRvYywgW10sIENUT1JfS0VZKTtcbiAgICBodG1sLl9zZXRPd25lckRvY3VtZW50KGRvYyk7XG5cbiAgICBjb25zdCBoZWFkID0gbmV3IEVsZW1lbnQoXCJoZWFkXCIsIGh0bWwsIFtdLCBDVE9SX0tFWSk7XG4gICAgY29uc3QgYm9keSA9IG5ldyBFbGVtZW50KFwiYm9keVwiLCBodG1sLCBbXSwgQ1RPUl9LRVkpO1xuXG4gICAgY29uc3QgdGl0bGUgPSBuZXcgRWxlbWVudChcInRpdGxlXCIsIGhlYWQsIFtdLCBDVE9SX0tFWSk7XG4gICAgY29uc3QgdGl0bGVUZXh0ID0gbmV3IFRleHQodGl0bGVTdHIpO1xuICAgIHRpdGxlLmFwcGVuZENoaWxkKHRpdGxlVGV4dCk7XG5cbiAgICBkb2MuaGVhZCA9IGhlYWQ7XG4gICAgZG9jLmJvZHkgPSBib2R5O1xuXG4gICAgcmV0dXJuIGRvYztcbiAgfVxuXG4gIGNyZWF0ZURvY3VtZW50VHlwZShcbiAgICBxdWFsaWZpZWROYW1lOiBzdHJpbmcsXG4gICAgcHVibGljSWQ6IHN0cmluZyxcbiAgICBzeXN0ZW1JZDogc3RyaW5nLFxuICApOiBEb2N1bWVudFR5cGUge1xuICAgIGNvbnN0IGRvY3R5cGUgPSBuZXcgRG9jdW1lbnRUeXBlKFxuICAgICAgcXVhbGlmaWVkTmFtZSxcbiAgICAgIHB1YmxpY0lkLFxuICAgICAgc3lzdGVtSWQsXG4gICAgICBDVE9SX0tFWSxcbiAgICApO1xuXG4gICAgcmV0dXJuIGRvY3R5cGU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERvY3VtZW50VHlwZSBleHRlbmRzIE5vZGUge1xuICAjcXVhbGlmaWVkTmFtZSA9IFwiXCI7XG4gICNwdWJsaWNJZCA9IFwiXCI7XG4gICNzeXN0ZW1JZCA9IFwiXCI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHB1YmxpY0lkOiBzdHJpbmcsXG4gICAgc3lzdGVtSWQ6IHN0cmluZyxcbiAgICBrZXk6IHR5cGVvZiBDVE9SX0tFWSxcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBcImh0bWxcIixcbiAgICAgIE5vZGVUeXBlLkRPQ1VNRU5UX1RZUEVfTk9ERSxcbiAgICAgIG51bGwsXG4gICAgICBrZXksXG4gICAgKTtcblxuICAgIHRoaXMuI3F1YWxpZmllZE5hbWUgPSBuYW1lO1xuICAgIHRoaXMuI3B1YmxpY0lkID0gcHVibGljSWQ7XG4gICAgdGhpcy4jc3lzdGVtSWQgPSBzeXN0ZW1JZDtcbiAgfVxuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI3F1YWxpZmllZE5hbWU7XG4gIH1cblxuICBnZXQgcHVibGljSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jcHVibGljSWQ7XG4gIH1cblxuICBnZXQgc3lzdGVtSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jc3lzdGVtSWQ7XG4gIH1cblxuICBvdmVycmlkZSBfc2hhbGxvd0Nsb25lKCk6IE5vZGUge1xuICAgIHJldHVybiBuZXcgRG9jdW1lbnRUeXBlKFxuICAgICAgdGhpcy4jcXVhbGlmaWVkTmFtZSxcbiAgICAgIHRoaXMuI3B1YmxpY0lkLFxuICAgICAgdGhpcy4jc3lzdGVtSWQsXG4gICAgICBDVE9SX0tFWSxcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudENyZWF0aW9uT3B0aW9ucyB7XG4gIGlzOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFZpc2liaWxpdHlTdGF0ZSA9IFwidmlzaWJsZVwiIHwgXCJoaWRkZW5cIiB8IFwicHJlcmVuZGVyXCI7XG5leHBvcnQgdHlwZSBOYW1lc3BhY2VVUkkgPVxuICB8IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiXG4gIHwgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gIHwgXCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCI7XG5cbmV4cG9ydCBjbGFzcyBEb2N1bWVudCBleHRlbmRzIE5vZGUge1xuICBwdWJsaWMgaGVhZDogRWxlbWVudCA9IDxFbGVtZW50PiA8dW5rbm93bj4gbnVsbDtcbiAgcHVibGljIGJvZHk6IEVsZW1lbnQgPSA8RWxlbWVudD4gPHVua25vd24+IG51bGw7XG4gIHB1YmxpYyBpbXBsZW1lbnRhdGlvbjogRE9NSW1wbGVtZW50YXRpb247XG5cbiAgI2RvY3VtZW50VVJJID0gXCJhYm91dDpibGFua1wiOyAvLyBUT0RPXG4gICNud2FwaTogU2VsZWN0b3JBcGkgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcbiAgICAgIFwiI2RvY3VtZW50XCIsXG4gICAgICBOb2RlVHlwZS5ET0NVTUVOVF9OT0RFLFxuICAgICAgbnVsbCxcbiAgICAgIENUT1JfS0VZLFxuICAgICk7XG5cbiAgICB0aGlzLmltcGxlbWVudGF0aW9uID0gbmV3IERPTUltcGxlbWVudGF0aW9uKENUT1JfS0VZKTtcbiAgfVxuXG4gIG92ZXJyaWRlIF9zaGFsbG93Q2xvbmUoKTogTm9kZSB7XG4gICAgcmV0dXJuIG5ldyBEb2N1bWVudCgpO1xuICB9XG5cbiAgLy8gRXhwb3NlIHRoZSBkb2N1bWVudCdzIE5XQVBJIGZvciBFbGVtZW50J3MgYWNjZXNzIHRvXG4gIC8vIHF1ZXJ5U2VsZWN0b3IvcXVlcnlTZWxlY3RvckFsbFxuICBnZXQgX253YXBpKCk6IFNlbGVjdG9yQXBpIHtcbiAgICByZXR1cm4gdGhpcy4jbndhcGkgfHwgKHRoaXMuI253YXBpID0gZ2V0U2VsZWN0b3JFbmdpbmUoKSh0aGlzKSk7XG4gIH1cblxuICBnZXQgZG9jdW1lbnRVUkkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jZG9jdW1lbnRVUkk7XG4gIH1cblxuICBnZXQgdGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKFwidGl0bGVcIik/LnRleHRDb250ZW50IHx8IFwiXCI7XG4gIH1cbiAgc2V0IHRpdGxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBsZXQgdGl0bGVFbGVtZW50ID0gdGhpcy5xdWVyeVNlbGVjdG9yKFwidGl0bGVcIik7XG4gICAgaWYgKCF0aXRsZUVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IHsgaGVhZCB9ID0gdGhpcztcbiAgICAgIGlmICghaGVhZCkgcmV0dXJuO1xuXG4gICAgICB0aXRsZUVsZW1lbnQgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJ0aXRsZVwiKTtcbiAgICAgIGhlYWQuYXBwZW5kQ2hpbGQodGl0bGVFbGVtZW50KTtcbiAgICB9XG5cbiAgICB0aXRsZUVsZW1lbnQudGV4dENvbnRlbnQgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBjb29raWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gXCJcIjsgLy8gVE9ET1xuICB9XG5cbiAgc2V0IGNvb2tpZShuZXdDb29raWU6IHN0cmluZykge1xuICAgIC8vIFRPRE9cbiAgfVxuXG4gIGdldCB2aXNpYmlsaXR5U3RhdGUoKTogVmlzaWJpbGl0eVN0YXRlIHtcbiAgICByZXR1cm4gXCJ2aXNpYmxlXCI7XG4gIH1cblxuICBnZXQgaGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldCBjb21wYXRNb2RlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFwiQ1NTMUNvbXBhdFwiO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50RWxlbWVudCgpOiBFbGVtZW50IHwgbnVsbCB7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIHRoaXMuY2hpbGROb2Rlcykge1xuICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGVUeXBlLkVMRU1FTlRfTk9ERSkge1xuICAgICAgICByZXR1cm4gPEVsZW1lbnQ+IG5vZGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBnZXQgZG9jdHlwZSgpOiBEb2N1bWVudFR5cGUgfCBudWxsIHtcbiAgICBmb3IgKGNvbnN0IG5vZGUgb2YgdGhpcy5jaGlsZE5vZGVzKSB7XG4gICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZVR5cGUuRE9DVU1FTlRfVFlQRV9OT0RFKSB7XG4gICAgICAgIHJldHVybiA8RG9jdW1lbnRUeXBlPiBub2RlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0IGNoaWxkRWxlbWVudENvdW50KCk6IG51bWJlciB7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICBmb3IgKGNvbnN0IHsgbm9kZVR5cGUgfSBvZiB0aGlzLmNoaWxkTm9kZXMpIHtcbiAgICAgIGlmIChub2RlVHlwZSA9PT0gTm9kZVR5cGUuRUxFTUVOVF9OT0RFKSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb3VudDtcbiAgfVxuXG4gIG92ZXJyaWRlIGFwcGVuZENoaWxkKGNoaWxkOiBOb2RlKTogTm9kZSB7XG4gICAgc3VwZXIuYXBwZW5kQ2hpbGQoY2hpbGQpO1xuICAgIGNoaWxkLl9zZXRPd25lckRvY3VtZW50KHRoaXMpO1xuICAgIHJldHVybiBjaGlsZDtcbiAgfVxuXG4gIGNyZWF0ZUVsZW1lbnQodGFnTmFtZTogc3RyaW5nLCBvcHRpb25zPzogRWxlbWVudENyZWF0aW9uT3B0aW9ucyk6IEVsZW1lbnQge1xuICAgIHRhZ05hbWUgPSBnZXRVcHBlckNhc2UodGFnTmFtZSk7XG5cbiAgICBzd2l0Y2ggKHRhZ05hbWUpIHtcbiAgICAgIGNhc2UgXCJURU1QTEFURVwiOiB7XG4gICAgICAgIGNvbnN0IGZyYWcgPSBuZXcgRG9jdW1lbnRGcmFnbWVudCgpO1xuICAgICAgICBjb25zdCBlbG0gPSBuZXcgSFRNTFRlbXBsYXRlRWxlbWVudChcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIENUT1JfS0VZLFxuICAgICAgICAgIGZyYWcsXG4gICAgICAgICk7XG4gICAgICAgIGVsbS5fc2V0T3duZXJEb2N1bWVudCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIGVsbTtcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb25zdCBlbG0gPSBuZXcgRWxlbWVudCh0YWdOYW1lLCBudWxsLCBbXSwgQ1RPUl9LRVkpO1xuICAgICAgICBlbG0uX3NldE93bmVyRG9jdW1lbnQodGhpcyk7XG4gICAgICAgIHJldHVybiBlbG07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlRWxlbWVudE5TKFxuICAgIG5hbWVzcGFjZTogTmFtZXNwYWNlVVJJLFxuICAgIHF1YWxpZmllZE5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zPzogRWxlbWVudENyZWF0aW9uT3B0aW9ucyxcbiAgKTogRWxlbWVudCB7XG4gICAgaWYgKG5hbWVzcGFjZSA9PT0gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUVsZW1lbnQocXVhbGlmaWVkTmFtZSwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYGNyZWF0ZUVsZW1lbnROUzogXCIke25hbWVzcGFjZX1cIiBuYW1lc3BhY2UgdW5pbXBsZW1lbnRlZGAsXG4gICAgICApOyAvLyBUT0RPXG4gICAgfVxuICB9XG5cbiAgY3JlYXRlVGV4dE5vZGUoZGF0YT86IHN0cmluZyk6IFRleHQge1xuICAgIHJldHVybiBuZXcgVGV4dChkYXRhKTtcbiAgfVxuXG4gIGNyZWF0ZUNvbW1lbnQoZGF0YT86IHN0cmluZyk6IENvbW1lbnQge1xuICAgIHJldHVybiBuZXcgQ29tbWVudChkYXRhKTtcbiAgfVxuXG4gIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTogRG9jdW1lbnRGcmFnbWVudCB7XG4gICAgY29uc3QgZnJhZ21lbnQgPSBuZXcgRG9jdW1lbnRGcmFnbWVudCgpO1xuICAgIGZyYWdtZW50Ll9zZXRPd25lckRvY3VtZW50KHRoaXMpO1xuICAgIHJldHVybiBmcmFnbWVudDtcbiAgfVxuXG4gIGltcG9ydE5vZGUobm9kZTogTm9kZSwgZGVlcDogYm9vbGVhbiA9IGZhbHNlKTogTm9kZSB7XG4gICAgY29uc3QgY29weSA9IG5vZGUuY2xvbmVOb2RlKGRlZXApO1xuXG4gICAgY29weS5fc2V0T3duZXJEb2N1bWVudCh0aGlzKTtcblxuICAgIHJldHVybiBjb3B5O1xuICB9XG5cbiAgYWRvcHROb2RlKG5vZGU6IE5vZGUpOiBOb2RlIHtcbiAgICBpZiAobm9kZSBpbnN0YW5jZW9mIERvY3VtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKFxuICAgICAgICBcIkFkb3B0aW5nIGEgRG9jdW1lbnQgbm9kZSBpcyBub3Qgc3VwcG9ydGVkLlwiLFxuICAgICAgICBcIk5vdFN1cHBvcnRlZEVycm9yXCIsXG4gICAgICApO1xuICAgIH1cbiAgICBub2RlLl9zZXRQYXJlbnQobnVsbCk7XG4gICAgbm9kZS5fc2V0T3duZXJEb2N1bWVudCh0aGlzKTtcblxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgLy8gRklYTUU6IFRoaXMgaXMgYSBiYWQgc29sdXRpb24uIFRoZSBjb3JyZWN0IHNvbHV0aW9uXG4gIC8vIHdvdWxkIGJlIHRvIG1ha2UgYC5ib2R5YCBhbmQgYC5oZWFkYCBkeW5hbWljIGdldHRlcnMsXG4gIC8vIGJ1dCB0aGF0IHdvdWxkIGJlIGEgYnJlYWtpbmcgY2hhbmdlIHNpbmNlIGAuYm9keWBcbiAgLy8gYW5kIGAuaGVhZGAgd291bGQgbmVlZCB0byBiZSB0eXBlZCBhcyBgRWxlbWVudCB8IG51bGxgLlxuICAvLyBDdXJyZW50bHkgdGhleSdyZSB0eXBlZCBhcyBgRWxlbWVudGAgd2hpY2ggaXMgaW5jb3JyZWN0Li4uXG4gIG92ZXJyaWRlIGNsb25lTm9kZShkZWVwPzogYm9vbGVhbik6IERvY3VtZW50IHtcbiAgICBjb25zdCBkb2MgPSBzdXBlci5jbG9uZU5vZGUoZGVlcCkgYXMgRG9jdW1lbnQ7XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGRvYy5kb2N1bWVudEVsZW1lbnQ/LmNoaWxkTm9kZXMgfHwgW10pIHtcbiAgICAgIHN3aXRjaCAoY2hpbGQubm9kZU5hbWUpIHtcbiAgICAgICAgY2FzZSBcIkJPRFlcIjoge1xuICAgICAgICAgIGRvYy5ib2R5ID0gY2hpbGQgYXMgRWxlbWVudDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgXCJIRUFEXCI6IHtcbiAgICAgICAgICBkb2MuaGVhZCA9IGNoaWxkIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZG9jO1xuICB9XG5cbiAgcXVlcnlTZWxlY3RvcjxUID0gRWxlbWVudD4oc2VsZWN0b3JzOiBzdHJpbmcpOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX253YXBpLmZpcnN0KHNlbGVjdG9ycywgdGhpcykgYXMgVDtcbiAgfVxuXG4gIHF1ZXJ5U2VsZWN0b3JBbGw8VCBleHRlbmRzIEVsZW1lbnQgPSBFbGVtZW50PihcbiAgICBzZWxlY3RvcnM6IHN0cmluZyxcbiAgKTogTm9kZUxpc3Q8VD4ge1xuICAgIGNvbnN0IG5vZGVMaXN0ID0gbmV3IE5vZGVMaXN0KCk7XG4gICAgY29uc3QgbXV0YXRvciA9IG5vZGVMaXN0W25vZGVMaXN0TXV0YXRvclN5bV0oKTtcblxuICAgIGZvciAoY29uc3QgbWF0Y2ggb2YgdGhpcy5fbndhcGkuc2VsZWN0KHNlbGVjdG9ycywgdGhpcykpIHtcbiAgICAgIG11dGF0b3IucHVzaChtYXRjaCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVMaXN0IGFzIE5vZGVMaXN0PFQ+O1xuICB9XG5cbiAgLy8gVE9ETzogRFJZISEhXG4gIGdldEVsZW1lbnRCeUlkKGlkOiBzdHJpbmcpOiBFbGVtZW50IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9oYXNJbml0aWFsaXplZENoaWxkTm9kZXMoKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkTm9kZXMpIHtcbiAgICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PT0gTm9kZVR5cGUuRUxFTUVOVF9OT0RFKSB7XG4gICAgICAgIGlmICgoPEVsZW1lbnQ+IGNoaWxkKS5pZCA9PT0gaWQpIHtcbiAgICAgICAgICByZXR1cm4gPEVsZW1lbnQ+IGNoaWxkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VhcmNoID0gKDxFbGVtZW50PiBjaGlsZCkuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICAgICAgICBpZiAoc2VhcmNoKSB7XG4gICAgICAgICAgcmV0dXJuIHNlYXJjaDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnTmFtZTogc3RyaW5nKTogRWxlbWVudFtdIHtcbiAgICBpZiAodGFnTmFtZSA9PT0gXCIqXCIpIHtcbiAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50RWxlbWVudFxuICAgICAgICA/IDxFbGVtZW50W10+IHRoaXMuX2dldEVsZW1lbnRzQnlUYWdOYW1lV2lsZGNhcmQoXG4gICAgICAgICAgdGhpcy5kb2N1bWVudEVsZW1lbnQsXG4gICAgICAgICAgW10sXG4gICAgICAgIClcbiAgICAgICAgOiBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDxFbGVtZW50W10+IHRoaXMuX2dldEVsZW1lbnRzQnlUYWdOYW1lKGdldFVwcGVyQ2FzZSh0YWdOYW1lKSwgW10pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldEVsZW1lbnRzQnlUYWdOYW1lV2lsZGNhcmQobm9kZTogTm9kZSwgc2VhcmNoOiBOb2RlW10pOiBOb2RlW10ge1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZE5vZGVzKSB7XG4gICAgICBpZiAoY2hpbGQubm9kZVR5cGUgPT09IE5vZGVUeXBlLkVMRU1FTlRfTk9ERSkge1xuICAgICAgICBzZWFyY2gucHVzaChjaGlsZCk7XG4gICAgICAgICg8YW55PiBjaGlsZCkuX2dldEVsZW1lbnRzQnlUYWdOYW1lV2lsZGNhcmQoc2VhcmNoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2VhcmNoO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnTmFtZTogc3RyaW5nLCBzZWFyY2g6IE5vZGVbXSk6IE5vZGVbXSB7XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkTm9kZXMpIHtcbiAgICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PT0gTm9kZVR5cGUuRUxFTUVOVF9OT0RFKSB7XG4gICAgICAgIGlmICgoPEVsZW1lbnQ+IGNoaWxkKS50YWdOYW1lID09PSB0YWdOYW1lKSB7XG4gICAgICAgICAgc2VhcmNoLnB1c2goY2hpbGQpO1xuICAgICAgICB9XG5cbiAgICAgICAgKDxhbnk+IGNoaWxkKS5fZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnTmFtZSwgc2VhcmNoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2VhcmNoO1xuICB9XG5cbiAgZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhfbmFtZXNwYWNlOiBzdHJpbmcsIGxvY2FsTmFtZTogc3RyaW5nKTogRWxlbWVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRFbGVtZW50c0J5VGFnTmFtZShsb2NhbE5hbWUpO1xuICB9XG5cbiAgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShjbGFzc05hbWU6IHN0cmluZyk6IEVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIGdldEVsZW1lbnRzQnlDbGFzc05hbWUoXG4gICAgICB0aGlzLFxuICAgICAgY2xhc3NOYW1lLnRyaW0oKS5zcGxpdCgvXFxzKy8pLFxuICAgICAgW10sXG4gICAgKSBhcyBFbGVtZW50W107XG4gIH1cblxuICBoYXNGb2N1cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSFRNTERvY3VtZW50IGV4dGVuZHMgRG9jdW1lbnQge1xuICBjb25zdHJ1Y3RvcihrZXk6IHR5cGVvZiBDVE9SX0tFWSkge1xuICAgIGlmIChrZXkgIT09IENUT1JfS0VZKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSWxsZWdhbCBjb25zdHJ1Y3Rvci5cIik7XG4gICAgfVxuICAgIHN1cGVyKCk7XG4gIH1cblxuICBvdmVycmlkZSBfc2hhbGxvd0Nsb25lKCk6IE5vZGUge1xuICAgIHJldHVybiBuZXcgSFRNTERvY3VtZW50KENUT1JfS0VZKTtcbiAgfVxufVxuXG5VdGlsVHlwZXMuRG9jdW1lbnQgPSBEb2N1bWVudDtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLFFBQVEsUUFBUSx5QkFBeUI7QUFDbEQsU0FBUyxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLFFBQVEsWUFBWTtBQUMxRCxTQUFTLFFBQVEsRUFBRSxrQkFBa0IsUUFBUSxpQkFBaUI7QUFDOUQsU0FBUyxPQUFPLFFBQVEsZUFBZTtBQUN2QyxTQUFTLGdCQUFnQixRQUFRLHlCQUF5QjtBQUMxRCxTQUFTLG1CQUFtQixRQUFRLHNDQUFzQztBQUMxRSxTQUFTLGlCQUFpQixRQUFxQiwyQkFBMkI7QUFDMUUsU0FBUyxzQkFBc0IsUUFBUSxhQUFhO0FBQ3BELE9BQU8sZUFBZSxtQkFBbUI7QUFDekMsU0FBUyxZQUFZLFFBQVEs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 +// denoCacheMetadata=2532538961165157685,4861072343100437016
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/74f8f850392a8719021d136a3167defffc0a0de3c943f5f3d44b3a5d882dc70b.js b/vendor/gen/https/deno.land/74f8f850392a8719021d136a3167defffc0a0de3c943f5f3d44b3a5d882dc70b.js new file mode 100644 index 0000000..ae38433 --- /dev/null +++ b/vendor/gen/https/deno.land/74f8f850392a8719021d136a3167defffc0a0de3c943f5f3d44b3a5d882dc70b.js @@ -0,0 +1,3 @@ +export * from "jsr:@std/jsonc@1.0.2"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvZGVwcy9qc29uYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwianNyOkBzdGQvanNvbmNAMS4wLjJcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QiJ9 +// denoCacheMetadata=6140751609095041619,5505528500483124483
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/750a0e6ae5b5ce579002ffa2a4ba9a12fd10d2e29d70392b60b03aa1a4e37ca9.js b/vendor/gen/https/deno.land/750a0e6ae5b5ce579002ffa2a4ba9a12fd10d2e29d70392b60b03aa1a4e37ca9.js new file mode 100644 index 0000000..c4d2d99 --- /dev/null +++ b/vendor/gen/https/deno.land/750a0e6ae5b5ce579002ffa2a4ba9a12fd10d2e29d70392b60b03aa1a4e37ca9.js @@ -0,0 +1,63 @@ +import { Command } from "../command.ts"; +import { ValidationError } from "../../flags/_errors.ts"; +import { EnumType } from "../types/enum.ts"; +export class UpgradeCommand extends Command { + providers; + constructor({ provider, main, args, importMap }){ + super(); + this.providers = Array.isArray(provider) ? provider : [ + provider + ]; + if (!this.providers.length) { + throw new Error(`No upgrade provider defined!`); + } + this.description(()=>`Upgrade ${this.getMainCommand().getName()} executable to latest or given version.`).noGlobals().type("provider", new EnumType(this.getProviderNames())).option("-r, --registry <name:provider>", `The registry name from which to upgrade.`, { + default: this.getProvider().name, + hidden: this.providers.length < 2, + value: (registry)=>this.getProvider(registry) + }).option("-l, --list-versions", "Show available versions.", { + action: async ({ registry })=>{ + await registry.listVersions(this.getMainCommand().getName(), this.getVersion()); + Deno.exit(0); + } + }).option("--version <version:string:version>", "The version to upgrade to.", { + default: "latest" + }).option("-f, --force", "Replace current installation even if not out-of-date.").complete("version", ()=>this.getAllVersions()).action(async ({ registry, version: targetVersion, force })=>{ + const name = this.getMainCommand().getName(); + const currentVersion = this.getVersion(); + if (force || !currentVersion || await registry.isOutdated(name, currentVersion, targetVersion)) { + await registry.upgrade({ + name, + main, + importMap, + from: currentVersion, + to: targetVersion, + args + }); + } + }); + } + async getAllVersions() { + const { versions } = await this.getVersions(); + return versions; + } + async getLatestVersion() { + const { latest } = await this.getVersions(); + return latest; + } + getVersions() { + return this.getProvider().getVersions(this.getMainCommand().getName()); + } + getProvider(name) { + const provider = name ? this.providers.find((provider)=>provider.name === name) : this.providers[0]; + if (!provider) { + throw new ValidationError(`Unknown provider "${name}"`); + } + return provider; + } + getProviderNames() { + return this.providers.map((provider)=>provider.name); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC91cGdyYWRlL3VwZ3JhZGVfY29tbWFuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcIi4uL2NvbW1hbmQudHNcIjtcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gXCIuLi8uLi9mbGFncy9fZXJyb3JzLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFByb3ZpZGVyLCBWZXJzaW9ucyB9IGZyb20gXCIuL3Byb3ZpZGVyLnRzXCI7XG5pbXBvcnQgeyBFbnVtVHlwZSB9IGZyb20gXCIuLi90eXBlcy9lbnVtLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBncmFkZUNvbW1hbmRPcHRpb25zPFxuICBUUHJvdmlkZXIgZXh0ZW5kcyBQcm92aWRlciA9IFByb3ZpZGVyLFxuICBUUHJvdmlkZXJzIGV4dGVuZHMgVFByb3ZpZGVyIHwgQXJyYXk8VFByb3ZpZGVyPiA9XG4gICAgfCBUUHJvdmlkZXJcbiAgICB8IEFycmF5PFRQcm92aWRlcj4sXG4+IHtcbiAgcHJvdmlkZXI6IFRQcm92aWRlcnM7XG4gIG1haW4/OiBzdHJpbmc7XG4gIGltcG9ydE1hcD86IHN0cmluZztcbiAgYXJncz86IEFycmF5PHN0cmluZz47XG59XG5cbmV4cG9ydCBjbGFzcyBVcGdyYWRlQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3ZpZGVyczogUmVhZG9ubHlBcnJheTxQcm92aWRlcj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgeyBwcm92aWRlciwgbWFpbiwgYXJncywgaW1wb3J0TWFwIH06IFVwZ3JhZGVDb21tYW5kT3B0aW9ucyxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnByb3ZpZGVycyA9IEFycmF5LmlzQXJyYXkocHJvdmlkZXIpID8gcHJvdmlkZXIgOiBbcHJvdmlkZXJdO1xuICAgIGlmICghdGhpcy5wcm92aWRlcnMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHVwZ3JhZGUgcHJvdmlkZXIgZGVmaW5lZCFgKTtcbiAgICB9XG4gICAgdGhpc1xuICAgICAgLmRlc2NyaXB0aW9uKCgpID0+XG4gICAgICAgIGBVcGdyYWRlICR7dGhpcy5nZXRNYWluQ29tbWFuZCgpLmdldE5hbWUoKX0gZXhlY3V0YWJsZSB0byBsYXRlc3Qgb3IgZ2l2ZW4gdmVyc2lvbi5gXG4gICAgICApXG4gICAgICAubm9HbG9iYWxzKClcbiAgICAgIC50eXBlKFwicHJvdmlkZXJcIiwgbmV3IEVudW1UeXBlKHRoaXMuZ2V0UHJvdmlkZXJOYW1lcygpKSlcbiAgICAgIC5vcHRpb24oXG4gICAgICAgIFwiLXIsIC0tcmVnaXN0cnkgPG5hbWU6cHJvdmlkZXI+XCIsXG4gICAgICAgIGBUaGUgcmVnaXN0cnkgbmFtZSBmcm9tIHdoaWNoIHRvIHVwZ3JhZGUuYCxcbiAgICAgICAge1xuICAgICAgICAgIGRlZmF1bHQ6IHRoaXMuZ2V0UHJvdmlkZXIoKS5uYW1lLFxuICAgICAgICAgIGhpZGRlbjogdGhpcy5wcm92aWRlcnMubGVuZ3RoIDwgMixcbiAgICAgICAgICB2YWx1ZTogKHJlZ2lzdHJ5KSA9PiB0aGlzLmdldFByb3ZpZGVyKHJlZ2lzdHJ5KSxcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICAgIC5vcHRpb24oXG4gICAgICAgIFwiLWwsIC0tbGlzdC12ZXJzaW9uc1wiLFxuICAgICAgICBcIlNob3cgYXZhaWxhYmxlIHZlcnNpb25zLlwiLFxuICAgICAgICB7XG4gICAgICAgICAgYWN0aW9uOiBhc3luYyAoeyByZWdpc3RyeSB9KSA9PiB7XG4gICAgICAgICAgICBhd2FpdCByZWdpc3RyeS5saXN0VmVyc2lvbnMoXG4gICAgICAgICAgICAgIHRoaXMuZ2V0TWFpbkNvbW1hbmQoKS5nZXROYW1lKCksXG4gICAgICAgICAgICAgIHRoaXMuZ2V0VmVyc2lvbigpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIERlbm8uZXhpdCgwKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgKVxuICAgICAgLm9wdGlvbihcbiAgICAgICAgXCItLXZlcnNpb24gPHZlcnNpb246c3RyaW5nOnZlcnNpb24+XCIsXG4gICAgICAgIFwiVGhlIHZlcnNpb24gdG8gdXBncmFkZSB0by5cIixcbiAgICAgICAgeyBkZWZhdWx0OiBcImxhdGVzdFwiIH0sXG4gICAgICApXG4gICAgICAub3B0aW9uKFxuICAgICAgICBcIi1mLCAtLWZvcmNlXCIsXG4gICAgICAgIFwiUmVwbGFjZSBjdXJyZW50IGluc3RhbGxhdGlvbiBldmVuIGlmIG5vdCBvdXQtb2YtZGF0ZS5cIixcbiAgICAgIClcbiAgICAgIC5jb21wbGV0ZShcInZlcnNpb25cIiwgKCkgPT4gdGhpcy5nZXRBbGxWZXJzaW9ucygpKVxuICAgICAgLmFjdGlvbihhc3luYyAoeyByZWdpc3RyeSwgdmVyc2lvbjogdGFyZ2V0VmVyc2lvbiwgZm9yY2UgfSkgPT4ge1xuICAgICAgICBjb25zdCBuYW1lOiBzdHJpbmcgPSB0aGlzLmdldE1haW5Db21tYW5kKCkuZ2V0TmFtZSgpO1xuICAgICAgICBjb25zdCBjdXJyZW50VmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5nZXRWZXJzaW9uKCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGZvcmNlIHx8ICFjdXJyZW50VmVyc2lvbiB8fFxuICAgICAgICAgIGF3YWl0IHJlZ2lzdHJ5LmlzT3V0ZGF0ZWQobmFtZSwgY3VycmVudFZlcnNpb24sIHRhcmdldFZlcnNpb24pXG4gICAgICAgICkge1xuICAgICAgICAgIGF3YWl0IHJlZ2lzdHJ5LnVwZ3JhZGUoe1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIG1haW4sXG4gICAgICAgICAgICBpbXBvcnRNYXAsXG4gICAgICAgICAgICBmcm9tOiBjdXJyZW50VmVyc2lvbixcbiAgICAgICAgICAgIHRvOiB0YXJnZXRWZXJzaW9uLFxuICAgICAgICAgICAgYXJncyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QWxsVmVyc2lvbnMoKTogUHJvbWlzZTxBcnJheTxzdHJpbmc+PiB7XG4gICAgY29uc3QgeyB2ZXJzaW9ucyB9ID0gYXdhaXQgdGhpcy5nZXRWZXJzaW9ucygpO1xuICAgIHJldHVybiB2ZXJzaW9ucztcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRMYXRlc3RWZXJzaW9uKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgeyBsYXRlc3QgfSA9IGF3YWl0IHRoaXMuZ2V0VmVyc2lvbnMoKTtcbiAgICByZXR1cm4gbGF0ZXN0O1xuICB9XG5cbiAgcHVibGljIGdldFZlcnNpb25zKCk6IFByb21pc2U8VmVyc2lvbnM+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRQcm92aWRlcigpLmdldFZlcnNpb25zKFxuICAgICAgdGhpcy5nZXRNYWluQ29tbWFuZCgpLmdldE5hbWUoKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQcm92aWRlcihuYW1lPzogc3RyaW5nKTogUHJvdmlkZXIge1xuICAgIGNvbnN0IHByb3ZpZGVyID0gbmFtZVxuICAgICAgPyB0aGlzLnByb3ZpZGVycy5maW5kKChwcm92aWRlcikgPT4gcHJvdmlkZXIubmFtZSA9PT0gbmFtZSlcbiAgICAgIDogdGhpcy5wcm92aWRlcnNbMF07XG4gICAgaWYgKCFwcm92aWRlcikge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihgVW5rbm93biBwcm92aWRlciBcIiR7bmFtZX1cImApO1xuICAgIH1cbiAgICByZXR1cm4gcHJvdmlkZXI7XG4gIH1cblxuICBwcml2YXRlIGdldFByb3ZpZGVyTmFtZXMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMucHJvdmlkZXJzLm1hcCgocHJvdmlkZXIpID0+IHByb3ZpZGVyLm5hbWUpO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJt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 +// denoCacheMetadata=4417398848693435519,14697220363769450959
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/7524db45790c0421867b75620bad578c3cad442c86708f875bb8abe9295a742a.js b/vendor/gen/https/deno.land/7524db45790c0421867b75620bad578c3cad442c86708f875bb8abe9295a742a.js new file mode 100644 index 0000000..5bff5fc --- /dev/null +++ b/vendor/gen/https/deno.land/7524db45790c0421867b75620bad578c3cad442c86708f875bb8abe9295a742a.js @@ -0,0 +1,83 @@ +import { parseArgs } from "../../deps/cli.ts"; +export function getOptionsFromCli(options) { + const cli = parseArgs(Deno.args, { + string: [ + "src", + "dest", + "location", + "port", + "hostname" + ], + boolean: [ + "serve", + "open" + ], + alias: { + serve: "s", + port: "p", + open: "o" + }, + ["--"]: true + }); + if (cli.src) { + options.src = cli.src; + } + if (cli.dest) { + options.dest = cli.dest; + } + const serveMode = cli.serve || cli._[0] === "cms"; + // Detect location, hostname and port + let port; + let hostname; + let location; + if (serveMode) { + location = cli.location ? new URL(cli.location) : new URL("http://localhost"); + if (cli.port) { + port = parseInt(cli.port); + location.port = port.toString(); + } else if (location.port) { + port = parseInt(location.port); + } else if (options.server?.port) { + port = options.server.port; + location.port = port.toString(); + } else { + port = location.protocol === "https:" ? 443 : 3000; + location.port = port.toString(); + } + if (cli.hostname) { + hostname = cli.hostname; + location.hostname = hostname; + } else if (options.server?.hostname && !cli.location) { + hostname = options.server.hostname; + location.hostname = hostname; + } else { + hostname = location.hostname; + } + } else { + location = cli.location ? new URL(cli.location) : options.location || new URL("http://localhost"); + if (cli.port) { + port = parseInt(cli.port); + location.port = port.toString(); + } else if (location.port) { + port = parseInt(location.port); + } else { + port = location.protocol === "https:" ? 443 : 80; + } + if (cli.hostname) { + hostname = cli.hostname; + location.hostname = hostname; + } else { + hostname = location.hostname; + } + } + options.location = location; + options.server ||= {}; + options.server.port = port; + options.server.hostname = hostname; + if (cli.open) { + options.server.open = cli.open; + } + return options; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS91dGlscy9jbGlfb3B0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwYXJzZUFyZ3MgfSBmcm9tIFwiLi4vLi4vZGVwcy9jbGkudHNcIjtcbmltcG9ydCB0eXBlIHsgRGVlcFBhcnRpYWwgfSBmcm9tIFwiLi9vYmplY3QudHNcIjtcbmltcG9ydCB0eXBlIHsgU2l0ZU9wdGlvbnMgfSBmcm9tIFwiLi4vc2l0ZS50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3B0aW9uc0Zyb21DbGkoXG4gIG9wdGlvbnM6IERlZXBQYXJ0aWFsPFNpdGVPcHRpb25zPixcbik6IERlZXBQYXJ0aWFsPFNpdGVPcHRpb25zPiB7XG4gIGNvbnN0IGNsaSA9IHBhcnNlQXJncyhEZW5vLmFyZ3MsIHtcbiAgICBzdHJpbmc6IFtcInNyY1wiLCBcImRlc3RcIiwgXCJsb2NhdGlvblwiLCBcInBvcnRcIiwgXCJob3N0bmFtZVwiXSxcbiAgICBib29sZWFuOiBbXCJzZXJ2ZVwiLCBcIm9wZW5cIl0sXG4gICAgYWxpYXM6IHsgc2VydmU6IFwic1wiLCBwb3J0OiBcInBcIiwgb3BlbjogXCJvXCIgfSxcbiAgICBbXCItLVwiXTogdHJ1ZSxcbiAgfSk7XG5cbiAgaWYgKGNsaS5zcmMpIHtcbiAgICBvcHRpb25zLnNyYyA9IGNsaS5zcmM7XG4gIH1cblxuICBpZiAoY2xpLmRlc3QpIHtcbiAgICBvcHRpb25zLmRlc3QgPSBjbGkuZGVzdDtcbiAgfVxuXG4gIGNvbnN0IHNlcnZlTW9kZSA9IGNsaS5zZXJ2ZSB8fCBjbGkuX1swXSA9PT0gXCJjbXNcIjtcblxuICAvLyBEZXRlY3QgbG9jYXRpb24sIGhvc3RuYW1lIGFuZCBwb3J0XG4gIGxldCBwb3J0OiBudW1iZXI7XG4gIGxldCBob3N0bmFtZTogc3RyaW5nO1xuICBsZXQgbG9jYXRpb246IFVSTDtcblxuICBpZiAoc2VydmVNb2RlKSB7XG4gICAgbG9jYXRpb24gPSBjbGkubG9jYXRpb25cbiAgICAgID8gbmV3IFVSTChjbGkubG9jYXRpb24pXG4gICAgICA6IG5ldyBVUkwoXCJodHRwOi8vbG9jYWxob3N0XCIpO1xuXG4gICAgaWYgKGNsaS5wb3J0KSB7XG4gICAgICBwb3J0ID0gcGFyc2VJbnQoY2xpLnBvcnQpO1xuICAgICAgbG9jYXRpb24ucG9ydCA9IHBvcnQudG9TdHJpbmcoKTtcbiAgICB9IGVsc2UgaWYgKGxvY2F0aW9uLnBvcnQpIHtcbiAgICAgIHBvcnQgPSBwYXJzZUludChsb2NhdGlvbi5wb3J0KTtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMuc2VydmVyPy5wb3J0KSB7XG4gICAgICBwb3J0ID0gb3B0aW9ucy5zZXJ2ZXIucG9ydDtcbiAgICAgIGxvY2F0aW9uLnBvcnQgPSBwb3J0LnRvU3RyaW5nKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvcnQgPSBsb2NhdGlvbi5wcm90b2NvbCA9PT0gXCJodHRwczpcIiA/IDQ0MyA6IDMwMDA7XG4gICAgICBsb2NhdGlvbi5wb3J0ID0gcG9ydC50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGlmIChjbGkuaG9zdG5hbWUpIHtcbiAgICAgIGhvc3RuYW1lID0gY2xpLmhvc3RuYW1lO1xuICAgICAgbG9jYXRpb24uaG9zdG5hbWUgPSBob3N0bmFtZTtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMuc2VydmVyPy5ob3N0bmFtZSAmJiAhY2xpLmxvY2F0aW9uKSB7XG4gICAgICBob3N0bmFtZSA9IG9wdGlvbnMuc2VydmVyLmhvc3RuYW1lO1xuICAgICAgbG9jYXRpb24uaG9zdG5hbWUgPSBob3N0bmFtZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaG9zdG5hbWUgPSBsb2NhdGlvbi5ob3N0bmFtZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbG9jYXRpb24gPSBjbGkubG9jYXRpb25cbiAgICAgID8gbmV3IFVSTChjbGkubG9jYXRpb24pXG4gICAgICA6IChvcHRpb25zLmxvY2F0aW9uIGFzIFVSTCB8IHVuZGVmaW5lZCkgfHwgbmV3IFVSTChcImh0dHA6Ly9sb2NhbGhvc3RcIik7XG5cbiAgICBpZiAoY2xpLnBvcnQpIHtcbiAgICAgIHBvcnQgPSBwYXJzZUludChjbGkucG9ydCk7XG4gICAgICBsb2NhdGlvbi5wb3J0ID0gcG9ydC50b1N0cmluZygpO1xuICAgIH0gZWxzZSBpZiAobG9jYXRpb24ucG9ydCkge1xuICAgICAgcG9ydCA9IHBhcnNlSW50KGxvY2F0aW9uLnBvcnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwb3J0ID0gbG9jYXRpb24ucHJvdG9jb2wgPT09IFwiaHR0cHM6XCIgPyA0NDMgOiA4MDtcbiAgICB9XG5cbiAgICBpZiAoY2xpLmhvc3RuYW1lKSB7XG4gICAgICBob3N0bmFtZSA9IGNsaS5ob3N0bmFtZTtcbiAgICAgIGxvY2F0aW9uLmhvc3RuYW1lID0gaG9zdG5hbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhvc3RuYW1lID0gbG9jYXRpb24uaG9zdG5hbWU7XG4gICAgfVxuICB9XG5cbiAgb3B0aW9ucy5sb2NhdGlvbiA9IGxvY2F0aW9uO1xuICBvcHRpb25zLnNlcnZlciB8fD0ge307XG4gIG9wdGlvbnMuc2VydmVyLnBvcnQgPSBwb3J0O1xuICBvcHRpb25zLnNlcnZlci5ob3N0bmFtZSA9IGhvc3RuYW1lO1xuXG4gIGlmIChjbGkub3Blbikge1xuICAgIG9wdGlvbnMuc2VydmVyLm9wZW4gPSBjbGkub3BlbjtcbiAgfVxuXG4gIHJldHVybiBvcHRpb25zO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsU0FBUyxRQUFRLG9CQUFvQjtBQUk5QyxPQUFPLFNBQVMsa0JBQ2QsT0FBaUM7RUFFakMsTUFBTSxNQUFNLFVBQVUsS0FBSyxJQUFJLEVBQUU7SUFDL0IsUUFBUTtNQUFDO01BQU87TUFBUTtNQUFZO01BQVE7S0FBVztJQUN2RCxTQUFTO01BQUM7TUFBUztLQUFPO0lBQzFCLE9BQU87TUFBRSxPQUFPO01BQUssTUFBTTtNQUFLLE1BQU07SUFBSTtJQUMxQyxDQUFDLEtBQUssRUFBRTtFQUNWO0VBRUEsSUFBSSxJQUFJLEdBQUcsRUFBRTtJQUNYLFFBQVEsR0FBRyxHQUFHLElBQUksR0FBRztFQUN2QjtFQUVBLElBQUksSUFBSSxJQUFJLEVBQUU7SUFDWixRQUFRLElBQUksR0FBRyxJQUFJLElBQUk7RUFDekI7RUFFQSxNQUFNLFlBQVksSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLO0VBRTVDLHFDQUFxQztFQUNyQyxJQUFJO0VBQ0osSUFBSTtFQUNKLElBQUk7RUFFSixJQUFJLFdBQVc7SUFDYixXQUFXLElBQUksUUFBUSxHQUNuQixJQUFJLElBQUksSUFBSSxRQUFRLElBQ3BCLElBQUksSUFBSTtJQUVaLElBQUksSUFBSSxJQUFJLEVBQUU7TUFDWixPQUFPLFNBQVMsSUFBSSxJQUFJO01BQ3hCLFNBQVMsSUFBSSxHQUFHLEtBQUssUUFBUTtJQUMvQixPQUFPLElBQUksU0FBUyxJQUFJLEVBQUU7TUFDeEIsT0FBTyxTQUFTLFNBQVMsSUFBSTtJQUMvQixPQUFPLElBQUksUUFBUSxNQUFNLEVBQUUsTUFBTTtNQUMvQixPQUFPLFFBQVEsTUFBTSxDQUFDLElBQUk7TUFDMUIsU0FBUyxJQUFJLEdBQUcsS0FBSyxRQUFRO0lBQy9CLE9BQU87TUFDTCxPQUFPLFNBQVMsUUFBUSxLQUFLLFdBQVcsTUFBTTtNQUM5QyxTQUFTLElBQUksR0FBRyxLQUFLLFFBQVE7SUFDL0I7SUFFQSxJQUFJLElBQUksUUFBUSxFQUFFO01BQ2hCLFdBQVcsSUFBSSxRQUFRO01BQ3ZCLFNBQVMsUUFBUSxHQUFHO0lBQ3RCLE9BQU8sSUFBSSxRQUFRLE1BQU0sRUFBRSxZQUFZLENBQUMsSUFBSSxRQUFRLEVBQUU7TUFDcEQsV0FBVyxRQUFRLE1BQU0sQ0FBQyxRQUFRO01BQ2xDLFNBQVMsUUFBUSxHQUFHO0lBQ3RCLE9BQU87TUFDTCxXQUFXLFNBQVMsUUFBUTtJQUM5QjtFQUNGLE9BQU87SUFDTCxXQUFXLElBQUksUUFBUSxHQUNuQixJQUFJLElBQUksSUFBSSxRQUFRLElBQ3BCLEFBQUMsUUFBUSxRQUFRLElBQXdCLElBQUksSUFBSTtJQUVyRCxJQUFJLElBQUksSUFBSSxFQUFFO01BQ1osT0FBTyxTQUFTLElBQUksSUFBSTtNQUN4QixTQUFTLElBQUksR0FBRyxLQUFLLFFBQVE7SUFDL0IsT0FBTyxJQUFJLFNBQVMsSUFBSSxFQUFFO01BQ3hCLE9BQU8sU0FBUyxTQUFTLElBQUk7SUFDL0IsT0FBTztNQUNMLE9BQU8sU0FBUyxRQUFRLEtBQUssV0FBVyxNQUFNO0lBQ2hEO0lBRUEsSUFBSSxJQUFJLFFBQVEsRUFBRTtNQUNoQixXQUFXLElBQUksUUFBUTtNQUN2QixTQUFTLFFBQVEsR0FBRztJQUN0QixPQUFPO01BQ0wsV0FBVyxTQUFTLFFBQVE7SUFDOUI7RUFDRjtFQUVBLFFBQVEsUUFBUSxHQUFHO0VBQ25CLFFBQVEsTUFBTSxLQUFLLENBQUM7RUFDcEIsUUFBUSxNQUFNLENBQUMsSUFBSSxHQUFHO0VBQ3RCLFFBQVEsTUFBTSxDQUFDLFFBQVEsR0FBRztFQUUxQixJQUFJLElBQUksSUFBSSxFQUFFO0lBQ1osUUFBUSxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSTtFQUNoQztFQUVBLE9BQU87QUFDVCJ9 +// denoCacheMetadata=15327241141236472936,12591596969686544022
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/75258a5685194b619b66f09dfe484bdffafe772adff2680dac5f664130deb066.js b/vendor/gen/https/deno.land/75258a5685194b619b66f09dfe484bdffafe772adff2680dac5f664130deb066.js new file mode 100644 index 0000000..3117d24 --- /dev/null +++ b/vendor/gen/https/deno.land/75258a5685194b619b66f09dfe484bdffafe772adff2680dac5f664130deb066.js @@ -0,0 +1,141 @@ +import { join, posix } from "../deps/path.ts"; +import { merge } from "../core/utils/object.ts"; +export const defaults = { + root: `${Deno.cwd()}/_site`, + page404: "/404.html", + directoryIndex: false +}; +/** Show a 404 page */ export function notFound(userOptions) { + const options = merge(defaults, userOptions); + let { root, page404, directoryIndex } = options; + if (page404.endsWith("/")) { + page404 += "index.html"; + } + return async (request, next)=>{ + const response = await next(request); + if (response.status === 404) { + const { headers, status } = response; + headers.set("content-type", "text/html; charset=utf-8"); + try { + const body = await Deno.readFile(join(root, page404)); + return new Response(body, { + status, + headers + }); + } catch { + if (directoryIndex) { + const { pathname } = new URL(request.url); + const body = await getDirectoryIndex(root, pathname); + return new Response(body, { + status, + headers + }); + } + } + } + return response; + }; +} +/** Generate the default body for a 404 response */ async function getDirectoryIndex(root, file) { + const folders = []; + const files = []; + const folderIcon = `<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" viewBox="0 0 256 256"><use xlink:href="#icon-folder"></use></svg>`; + const fileIcon = `<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" viewBox="0 0 256 256"><use xlink:href="#icon-file"></use></svg>`; + try { + for await (const info of Deno.readDir(join(root, file))){ + info.isDirectory ? folders.push([ + `${info.name}/`, + `${folderIcon} ${info.name}/` + ]) : files.push([ + info.name === "index.html" ? "./" : info.name, + `${fileIcon} ${info.name}` + ]); + } + } catch { + // It's not a directory, so scan the parent directory + try { + const base = posix.dirname(file); + for await (const info of Deno.readDir(join(root, base))){ + info.isDirectory ? folders.push([ + posix.join(base, `${info.name}/`), + `${folderIcon} ${info.name}/` + ]) : files.push([ + posix.join(base, info.name === "index.html" ? "./" : info.name), + `${fileIcon} ${info.name}` + ]); + } + } catch { + // Ignore + } + } + const content = folders.concat(files); + if (file.match(/.+\/.+/)) { + content.unshift([ + "../", + ".." + ]); + } + return ` + <!DOCTYPE html> + <html lang="en"> + <head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>404 - Not found</title> + <style> + html { + color-scheme: light dark; + } + body { + font-family: sans-serif; + max-width: 40em; + margin: auto; + padding: 2em; + line-height: 1.5; + } + h1 { + margin-bottom: 0; + } + ul { + margin: 2em 0; + padding: 0; + list-style-type: ""; + } + li a { + display: flex; + align-items: center; + column-gap: 0.5em; + text-decoration: none; + &:hover { + text-decoration: underline; + } + } + </style> + </head> + <body> + <svg display="none"> + <defs> + <g id="icon-file"> + <path d="M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM160,51.31,188.69,80H160ZM200,216H56V40h88V88a8,8,0,0,0,8,8h48V216Z"/> + </g> + <g id="icon-folder"> + <path d="M232,88V200.89A15.13,15.13,0,0,1,216.89,216H40a16,16,0,0,1-16-16V64A16,16,0,0,1,40,48H93.33a16.12,16.12,0,0,1,9.6,3.2L130.67,72H216A16,16,0,0,1,232,88Z"></path> + </g> + </defs> + </svg> + <h1>404 - Not found</h1> + <p>The URL <code>${file}</code> does not exist</p> + <ul> + ${content.map(([url, name])=>` + <li> + <a href="${url}"> + ${name} + </a> + </li>`).join("\n")} + </ul> + </body> + </html>`; +} +export default notFound; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvbWlkZGxld2FyZXMvbm90X2ZvdW5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4sIHBvc2l4IH0gZnJvbSBcIi4uL2RlcHMvcGF0aC50c1wiO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tIFwiLi4vY29yZS91dGlscy9vYmplY3QudHNcIjtcblxuaW1wb3J0IHR5cGUgeyBNaWRkbGV3YXJlIH0gZnJvbSBcIi4uL2NvcmUvc2VydmVyLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIC8qKiBUaGUgcm9vdCBmb2xkZXIgdG8gbG9vayBmb3IgdGhlIDQwNCBwYWdlICovXG4gIHJvb3Q6IHN0cmluZztcbiAgLyoqIFRoZSBwYXRoIHRvIHRoZSA0MDQgcGFnZSAqL1xuICBwYWdlNDA0OiBzdHJpbmc7XG4gIC8qKiBTaG93IHRoZSBkaXJlY3RvcnkgaW5kZXggaWYgdGhlIHBhZ2U0MDQgaXMgbm90IGZvdW5kICovXG4gIGRpcmVjdG9yeUluZGV4PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRzOiBPcHRpb25zID0ge1xuICByb290OiBgJHtEZW5vLmN3ZCgpfS9fc2l0ZWAsXG4gIHBhZ2U0MDQ6IFwiLzQwNC5odG1sXCIsXG4gIGRpcmVjdG9yeUluZGV4OiBmYWxzZSxcbn07XG5cbi8qKiBTaG93IGEgNDA0IHBhZ2UgKi9cbmV4cG9ydCBmdW5jdGlvbiBub3RGb3VuZCh1c2VyT3B0aW9ucz86IFBhcnRpYWw8T3B0aW9ucz4pOiBNaWRkbGV3YXJlIHtcbiAgY29uc3Qgb3B0aW9ucyA9IG1lcmdlKGRlZmF1bHRzLCB1c2VyT3B0aW9ucyk7XG4gIGxldCB7IHJvb3QsIHBhZ2U0MDQsIGRpcmVjdG9yeUluZGV4IH0gPSBvcHRpb25zO1xuXG4gIGlmIChwYWdlNDA0LmVuZHNXaXRoKFwiL1wiKSkge1xuICAgIHBhZ2U0MDQgKz0gXCJpbmRleC5odG1sXCI7XG4gIH1cblxuICByZXR1cm4gYXN5bmMgKHJlcXVlc3QsIG5leHQpID0+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG5leHQocmVxdWVzdCk7XG5cbiAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgIGNvbnN0IHsgaGVhZGVycywgc3RhdHVzIH0gPSByZXNwb25zZTtcbiAgICAgIGhlYWRlcnMuc2V0KFwiY29udGVudC10eXBlXCIsIFwidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04XCIpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBib2R5ID0gYXdhaXQgRGVuby5yZWFkRmlsZShqb2luKHJvb3QsIHBhZ2U0MDQpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZShib2R5LCB7IHN0YXR1cywgaGVhZGVycyB9KTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICBpZiAoZGlyZWN0b3J5SW5kZXgpIHtcbiAgICAgICAgICBjb25zdCB7IHBhdGhuYW1lIH0gPSBuZXcgVVJMKHJlcXVlc3QudXJsKTtcbiAgICAgICAgICBjb25zdCBib2R5ID0gYXdhaXQgZ2V0RGlyZWN0b3J5SW5kZXgocm9vdCwgcGF0aG5hbWUpO1xuICAgICAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoYm9keSwgeyBzdGF0dXMsIGhlYWRlcnMgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH07XG59XG5cbi8qKiBHZW5lcmF0ZSB0aGUgZGVmYXVsdCBib2R5IGZvciBhIDQwNCByZXNwb25zZSAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0RGlyZWN0b3J5SW5kZXgocm9vdDogc3RyaW5nLCBmaWxlOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBmb2xkZXJzOiBbc3RyaW5nLCBzdHJpbmddW10gPSBbXTtcbiAgY29uc3QgZmlsZXM6IFtzdHJpbmcsIHN0cmluZ11bXSA9IFtdO1xuICBjb25zdCBmb2xkZXJJY29uID1cbiAgICBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjU2IDI1NlwiPjx1c2UgeGxpbms6aHJlZj1cIiNpY29uLWZvbGRlclwiPjwvdXNlPjwvc3ZnPmA7XG4gIGNvbnN0IGZpbGVJY29uID1cbiAgICBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjU2IDI1NlwiPjx1c2UgeGxpbms6aHJlZj1cIiNpY29uLWZpbGVcIj48L3VzZT48L3N2Zz5gO1xuXG4gIHRyeSB7XG4gICAgZm9yIGF3YWl0IChjb25zdCBpbmZvIG9mIERlbm8ucmVhZERpcihqb2luKHJvb3QsIGZpbGUpKSkge1xuICAgICAgaW5mby5pc0RpcmVjdG9yeVxuICAgICAgICA/IGZvbGRlcnMucHVzaChbYCR7aW5mby5uYW1lfS9gLCBgJHtmb2xkZXJJY29ufSAke2luZm8ubmFtZX0vYF0pXG4gICAgICAgIDogZmlsZXMucHVzaChbXG4gICAgICAgICAgaW5mby5uYW1lID09PSBcImluZGV4Lmh0bWxcIiA/IFwiLi9cIiA6IGluZm8ubmFtZSxcbiAgICAgICAgICBgJHtmaWxlSWNvbn0gJHtpbmZvLm5hbWV9YCxcbiAgICAgICAgXSk7XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICAvLyBJdCdzIG5vdCBhIGRpcmVjdG9yeSwgc28gc2NhbiB0aGUgcGFyZW50IGRpcmVjdG9yeVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBiYXNlID0gcG9zaXguZGlybmFtZShmaWxlKTtcbiAgICAgIGZvciBhd2FpdCAoY29uc3QgaW5mbyBvZiBEZW5vLnJlYWREaXIoam9pbihyb290LCBiYXNlKSkpIHtcbiAgICAgICAgaW5mby5pc0RpcmVjdG9yeVxuICAgICAgICAgID8gZm9sZGVycy5wdXNoKFtcbiAgICAgICAgICAgIHBvc2l4LmpvaW4oYmFzZSwgYCR7aW5mby5uYW1lfS9gKSxcbiAgICAgICAgICAgIGAke2ZvbGRlckljb259ICR7aW5mby5uYW1lfS9gLFxuICAgICAgICAgIF0pXG4gICAgICAgICAgOiBmaWxlcy5wdXNoKFtcbiAgICAgICAgICAgIHBvc2l4LmpvaW4oYmFzZSwgaW5mby5uYW1lID09PSBcImluZGV4Lmh0bWxcIiA/IFwiLi9cIiA6IGluZm8ubmFtZSksXG4gICAgICAgICAgICBgJHtmaWxlSWNvbn0gJHtpbmZvLm5hbWV9YCxcbiAgICAgICAgICBdKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIElnbm9yZVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNvbnRlbnQgPSBmb2xkZXJzLmNvbmNhdChmaWxlcyk7XG5cbiAgaWYgKGZpbGUubWF0Y2goLy4rXFwvLisvKSkge1xuICAgIGNvbnRlbnQudW5zaGlmdChbXCIuLi9cIiwgXCIuLlwiXSk7XG4gIH1cblxuICByZXR1cm4gYFxuICA8IURPQ1RZUEUgaHRtbD5cbiAgICA8aHRtbCBsYW5nPVwiZW5cIj5cbiAgICA8aGVhZD5cbiAgICAgIDxtZXRhIGNoYXJzZXQ9XCJVVEYtOFwiPlxuICAgICAgPG1ldGEgbmFtZT1cInZpZXdwb3J0XCIgY29udGVudD1cIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjBcIj5cbiAgICAgIDx0aXRsZT40MDQgLSBOb3QgZm91bmQ8L3RpdGxlPlxuICAgICAgPHN0eWxlPlxuICAgICAgICBodG1sIHtcbiAgICAgICAgICBjb2xvci1zY2hlbWU6IGxpZ2h0IGRhcms7XG4gICAgICAgIH1cbiAgICAgICAgYm9keSB7XG4gICAgICAgICAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gICAgICAgICAgbWF4LXdpZHRoOiA0MGVtO1xuICAgICAgICAgIG1hcmdpbjogYXV0bztcbiAgICAgICAgICBwYWRkaW5nOiAyZW07XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgICAgfVxuICAgICAgICBoMSB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgfVxuICAgICAgICB1bCB7XG4gICAgICAgICAgbWFyZ2luOiAyZW0gMDtcbiAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogXCJcIjtcbiAgICAgICAgfVxuICAgICAgICBsaSBhIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgY29sdW1uLWdhcDogMC41ZW07XG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L3N0eWxlPlxuICAgIDwvaGVhZD5cbiAgICA8Ym9keT5cbiAgICAgIDxzdmcgZGlzcGxheT1cIm5vbmVcIj5cbiAgICAgICAgPGRlZnM+XG4gICAgICAgICAgPGcgaWQ9XCJpY29uLWZpbGVcIj5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjEzLjY2LDgyLjM0bC01Ni01NkE4LDgsMCwwLDAsMTUyLDI0SDU2QTE2LDE2LDAsMCwwLDQwLDQwVjIxNmExNiwxNiwwLDAsMCwxNiwxNkgyMDBhMTYsMTYsMCwwLDAsMTYtMTZWODhBOCw4LDAsMCwwLDIxMy42Niw4Mi4zNFpNMTYwLDUxLjMxLDE4OC42OSw4MEgxNjBaTTIwMCwyMTZINTZWNDBoODhWODhhOCw4LDAsMCwwLDgsOGg0OFYyMTZaXCIvPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgICA8ZyBpZD1cImljb24tZm9sZGVyXCI+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTIzMiw4OFYyMDAuODlBMTUuMTMsMTUuMTMsMCwwLDEsMjE2Ljg5LDIxNkg0MGExNiwxNiwwLDAsMS0xNi0xNlY2NEExNiwxNiwwLDAsMSw0MCw0OEg5My4zM2ExNi4xMiwxNi4xMiwwLDAsMSw5LjYsMy4yTDEzMC42Nyw3MkgyMTZBMTYsMTYsMCwwLDEsMjMyLDg4WlwiPjwvcGF0aD5cbiAgICAgICAgICA8L2c+XG4gICAgICAgIDwvZGVmcz5cbiAgICAgIDwvc3ZnPlxuICAgICAgPGgxPjQwNCAtIE5vdCBmb3VuZDwvaDE+XG4gICAgICA8cD5UaGUgVVJMIDxjb2RlPiR7ZmlsZX08L2NvZGU+IGRvZXMgbm90IGV4aXN0PC9wPlxuICAgICAgPHVsPlxuICAgICR7XG4gICAgY29udGVudC5tYXAoKFt1cmwsIG5hbWVdKSA9PiBgXG4gICAgICA8bGk+XG4gICAgICAgIDxhIGhyZWY9XCIke3VybH1cIj5cbiAgICAgICAgICAke25hbWV9XG4gICAgICAgIDwvYT5cbiAgICAgIDwvbGk+YCkuam9pbihcIlxcblwiKVxuICB9XG4gICAgICA8L3VsPlxuICAgIDwvYm9keT5cbiAgPC9odG1sPmA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5vdEZvdW5kO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsSUFBSSxFQUFFLEtBQUssUUFBUSxrQkFBa0I7QUFDOUMsU0FBUyxLQUFLLFFBQVEsMEJBQTBCO0FBYWhELE9BQU8sTUFBTSxXQUFvQjtFQUMvQixNQUFNLEdBQUcsS0FBSyxHQUFHLEdBQUcsTUFBTSxDQUFDO0VBQzNCLFNBQVM7RUFDVCxnQkFBZ0I7QUFDbEIsRUFBRTtBQUVGLG9CQUFvQixHQUNwQixPQUFPLFNBQVMsU0FBUyxXQUE4QjtFQUNyRCxNQUFNLFVBQVUsTUFBTSxVQUFVO0VBQ2hDLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxHQUFHO0VBRXhDLElBQUksUUFBUSxRQUFRLENBQUMsTUFBTTtJQUN6QixXQUFXO0VBQ2I7RUFFQSxPQUFPLE9BQU8sU0FBUztJQUNyQixNQUFNLFdBQVcsTUFBTSxLQUFLO0lBRTVCLElBQUksU0FBUyxNQUFNLEtBQUss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 +// denoCacheMetadata=14186788085705756082,16761110511965394174
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/75298f0eb6c3938cc21df5890715ade25acf246723868d17d393552917f2471d.js b/vendor/gen/https/deno.land/75298f0eb6c3938cc21df5890715ade25acf246723868d17d393552917f2471d.js new file mode 100644 index 0000000..0c9dc6e --- /dev/null +++ b/vendor/gen/https/deno.land/75298f0eb6c3938cc21df5890715ade25acf246723868d17d393552917f2471d.js @@ -0,0 +1,134 @@ +import { posix } from "../deps/path.ts"; +import { emptyDir, ensureDir } from "../deps/fs.ts"; +import { concurrent } from "./utils/concurrent.ts"; +import { sha1 } from "./utils/digest.ts"; +import { log } from "./utils/log.ts"; +import binaryLoader from "./loaders/binary.ts"; +/** + * Class to write the generated pages and static files + * in the dest folder. + */ export class FSWriter { + dest; + caseSensitiveUrls; + #outputs = new Map(); + #saveCount = 0; + constructor(options){ + this.dest = options.dest; + this.caseSensitiveUrls = options.caseSensitiveUrls; + } + /** + * Save the pages in the dest folder + * Returns an array of pages that have been saved + */ async savePages(pages) { + const savedPages = []; + ++this.#saveCount; + await concurrent(pages, async (page)=>{ + if (await this.savePage(page)) { + savedPages.push(page); + } + }); + return savedPages; + } + /** + * Save a page in the dest folder + * Returns a boolean indicating if the page has saved + */ async savePage(page) { + const { sourcePath, outputPath, content } = page; + // Ignore empty pages + if (!content) { + log.warn(`[Lume] <cyan>Skipped page</cyan> ${page.data.url} (file content is empty)`); + return false; + } + const filename = posix.join(this.dest, outputPath); + const id = this.caseSensitiveUrls ? filename : filename.toLowerCase(); + const hash = await sha1(content); + const previous = this.#outputs.get(id); + this.#outputs.set(id, [ + this.#saveCount, + sourcePath, + hash + ]); + if (previous) { + const [previousCount, previousSourcePath, previousHash] = previous; + if (previousCount === this.#saveCount) { + throw new Error(`The pages ${sourcePath} and ${previousSourcePath} have the same output path "${outputPath}". Use distinct 'url' values to resolve the conflict.`); + } + // The page content didn't change + if (previousHash === hash) { + return false; + } + } + log.info(`🔥 ${page.data.url} <- <gray>${sourcePath}</gray>`); + await ensureDir(posix.dirname(filename)); + content instanceof Uint8Array ? await Deno.writeFile(filename, content) : await Deno.writeTextFile(filename, content); + return true; + } + /** + * Copy the static files in the dest folder + */ async copyFiles(files) { + const copyFiles = []; + await concurrent(files, async (file)=>{ + if (await this.copyFile(file)) { + copyFiles.push(file); + } + }); + return copyFiles; + } + /** + * Copy a static file in the dest folder + * Returns a boolean indicating if the file has saved + */ async copyFile(file) { + const { entry } = file.src; + if (entry.flags.has("saved")) { + return false; + } + entry.flags.add("saved"); + const pathTo = posix.join(this.dest, file.outputPath); + try { + await ensureDir(posix.dirname(pathTo)); + if (entry.flags.has("remote")) { + await Deno.writeFile(pathTo, (await entry.getContent(binaryLoader)).content); + } else { + // Copy file https://github.com/denoland/deno/issues/19425 + Deno.writeFileSync(pathTo, Deno.readFileSync(entry.src)); + } + log.info(`🔥 ${file.outputPath} <- <gray>${entry.flags.has("remote") ? entry.src : entry.path}</gray>`); + return true; + } catch (error) { + log.error(// deno-lint-ignore no-explicit-any + `Failed to copy file: ${file.outputPath}: ${error.message}`); + } + return false; + } + /** Empty the dest folder */ async clear() { + await emptyDir(this.dest); + this.#outputs.clear(); + } + async removeFiles(files) { + await concurrent(files, async (file)=>{ + try { + const outputPath = posix.join(this.dest, file); + this.#outputs.delete(outputPath.toLowerCase()); + await Deno.remove(outputPath); + // Remove empty directories + removeEmptyDirectory(outputPath, this.dest); + } catch { + // Ignored + } + }); + } +} +function removeEmptyDirectory(path, base) { + const dir = posix.dirname(path); + try { + if (dir !== base) { + Deno.removeSync(dir); + // Check if the parent directory is also empty + removeEmptyDirectory(dir, base); + } + } catch { + // Ignored + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS93cml0ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcG9zaXggfSBmcm9tIFwiLi4vZGVwcy9wYXRoLnRzXCI7XG5pbXBvcnQgeyBlbXB0eURpciwgZW5zdXJlRGlyIH0gZnJvbSBcIi4uL2RlcHMvZnMudHNcIjtcbmltcG9ydCB7IGNvbmN1cnJlbnQgfSBmcm9tIFwiLi91dGlscy9jb25jdXJyZW50LnRzXCI7XG5pbXBvcnQgeyBzaGExIH0gZnJvbSBcIi4vdXRpbHMvZGlnZXN0LnRzXCI7XG5pbXBvcnQgeyBsb2cgfSBmcm9tIFwiLi91dGlscy9sb2cudHNcIjtcbmltcG9ydCBiaW5hcnlMb2FkZXIgZnJvbSBcIi4vbG9hZGVycy9iaW5hcnkudHNcIjtcblxuaW1wb3J0IHR5cGUgeyBQYWdlLCBTdGF0aWNGaWxlIH0gZnJvbSBcIi4vZmlsZS50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbnMge1xuICBkZXN0OiBzdHJpbmc7XG4gIGNhc2VTZW5zaXRpdmVVcmxzOiBib29sZWFuO1xufVxuXG4vKiogR2VuZXJpYyBpbnRlcmZhY2UgZm9yIFdyaXRlciAqL1xuZXhwb3J0IGludGVyZmFjZSBXcml0ZXIge1xuICBzYXZlUGFnZXMocGFnZXM6IFBhZ2VbXSk6IFByb21pc2U8UGFnZVtdPjtcbiAgY29weUZpbGVzKGZpbGVzOiBTdGF0aWNGaWxlW10pOiBQcm9taXNlPFN0YXRpY0ZpbGVbXT47XG4gIGNsZWFyKCk6IFByb21pc2U8dm9pZD47XG4gIHJlbW92ZUZpbGVzKGZpbGVzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogQ2xhc3MgdG8gd3JpdGUgdGhlIGdlbmVyYXRlZCBwYWdlcyBhbmQgc3RhdGljIGZpbGVzXG4gKiBpbiB0aGUgZGVzdCBmb2xkZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBGU1dyaXRlciBpbXBsZW1lbnRzIFdyaXRlciB7XG4gIGRlc3Q6IHN0cmluZztcbiAgY2FzZVNlbnNpdGl2ZVVybHM6IGJvb2xlYW47XG5cbiAgI291dHB1dHMgPSBuZXcgTWFwPHN0cmluZywgW251bWJlciwgc3RyaW5nLCBzdHJpbmddPigpO1xuICAjc2F2ZUNvdW50ID0gMDtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgdGhpcy5kZXN0ID0gb3B0aW9ucy5kZXN0O1xuICAgIHRoaXMuY2FzZVNlbnNpdGl2ZVVybHMgPSBvcHRpb25zLmNhc2VTZW5zaXRpdmVVcmxzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmUgdGhlIHBhZ2VzIGluIHRoZSBkZXN0IGZvbGRlclxuICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIHBhZ2VzIHRoYXQgaGF2ZSBiZWVuIHNhdmVkXG4gICAqL1xuICBhc3luYyBzYXZlUGFnZXMocGFnZXM6IFBhZ2VbXSk6IFByb21pc2U8UGFnZVtdPiB7XG4gICAgY29uc3Qgc2F2ZWRQYWdlczogUGFnZVtdID0gW107XG4gICAgKyt0aGlzLiNzYXZlQ291bnQ7XG5cbiAgICBhd2FpdCBjb25jdXJyZW50KFxuICAgICAgcGFnZXMsXG4gICAgICBhc3luYyAocGFnZSkgPT4ge1xuICAgICAgICBpZiAoYXdhaXQgdGhpcy5zYXZlUGFnZShwYWdlKSkge1xuICAgICAgICAgIHNhdmVkUGFnZXMucHVzaChwYWdlKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHNhdmVkUGFnZXM7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBhIHBhZ2UgaW4gdGhlIGRlc3QgZm9sZGVyXG4gICAqIFJldHVybnMgYSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHBhZ2UgaGFzIHNhdmVkXG4gICAqL1xuICBhc3luYyBzYXZlUGFnZShwYWdlOiBQYWdlKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBzb3VyY2VQYXRoLCBvdXRwdXRQYXRoLCBjb250ZW50IH0gPSBwYWdlO1xuICAgIC8vIElnbm9yZSBlbXB0eSBwYWdlc1xuICAgIGlmICghY29udGVudCkge1xuICAgICAgbG9nLndhcm4oXG4gICAgICAgIGBbTHVtZV0gPGN5YW4+U2tpcHBlZCBwYWdlPC9jeWFuPiAke3BhZ2UuZGF0YS51cmx9IChmaWxlIGNvbnRlbnQgaXMgZW1wdHkpYCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZmlsZW5hbWUgPSBwb3NpeC5qb2luKHRoaXMuZGVzdCwgb3V0cHV0UGF0aCk7XG4gICAgY29uc3QgaWQgPSB0aGlzLmNhc2VTZW5zaXRpdmVVcmxzID8gZmlsZW5hbWUgOiBmaWxlbmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGhhc2ggPSBhd2FpdCBzaGExKGNvbnRlbnQpO1xuICAgIGNvbnN0IHByZXZpb3VzID0gdGhpcy4jb3V0cHV0cy5nZXQoaWQpO1xuICAgIHRoaXMuI291dHB1dHMuc2V0KGlkLCBbdGhpcy4jc2F2ZUNvdW50LCBzb3VyY2VQYXRoLCBoYXNoXSk7XG5cbiAgICBpZiAocHJldmlvdXMpIHtcbiAgICAgIGNvbnN0IFtwcmV2aW91c0NvdW50LCBwcmV2aW91c1NvdXJjZVBhdGgsIHByZXZpb3VzSGFzaF0gPSBwcmV2aW91cztcblxuICAgICAgaWYgKHByZXZpb3VzQ291bnQgPT09IHRoaXMuI3NhdmVDb3VudCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFRoZSBwYWdlcyAke3NvdXJjZVBhdGh9IGFuZCAke3ByZXZpb3VzU291cmNlUGF0aH0gaGF2ZSB0aGUgc2FtZSBvdXRwdXQgcGF0aCBcIiR7b3V0cHV0UGF0aH1cIi4gVXNlIGRpc3RpbmN0ICd1cmwnIHZhbHVlcyB0byByZXNvbHZlIHRoZSBjb25mbGljdC5gLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBUaGUgcGFnZSBjb250ZW50IGRpZG4ndCBjaGFuZ2VcbiAgICAgIGlmIChwcmV2aW91c0hhc2ggPT09IGhhc2gpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxvZy5pbmZvKGDwn5SlICR7cGFnZS5kYXRhLnVybH0gPC0gPGdyYXk+JHtzb3VyY2VQYXRofTwvZ3JheT5gKTtcblxuICAgIGF3YWl0IGVuc3VyZURpcihwb3NpeC5kaXJuYW1lKGZpbGVuYW1lKSk7XG5cbiAgICBjb250ZW50IGluc3RhbmNlb2YgVWludDhBcnJheVxuICAgICAgPyBhd2FpdCBEZW5vLndyaXRlRmlsZShmaWxlbmFtZSwgY29udGVudClcbiAgICAgIDogYXdhaXQgRGVuby53cml0ZVRleHRGaWxlKGZpbGVuYW1lLCBjb250ZW50KTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENvcHkgdGhlIHN0YXRpYyBmaWxlcyBpbiB0aGUgZGVzdCBmb2xkZXJcbiAgICovXG4gIGFzeW5jIGNvcHlGaWxlcyhmaWxlczogU3RhdGljRmlsZVtdKTogUHJvbWlzZTxTdGF0aWNGaWxlW10+IHtcbiAgICBjb25zdCBjb3B5RmlsZXM6IFN0YXRpY0ZpbGVbXSA9IFtdO1xuXG4gICAgYXdhaXQgY29uY3VycmVudChcbiAgICAgIGZpbGVzLFxuICAgICAgYXN5bmMgKGZpbGUpID0+IHtcbiAgICAgICAgaWYgKGF3YWl0IHRoaXMuY29weUZpbGUoZmlsZSkpIHtcbiAgICAgICAgICBjb3B5RmlsZXMucHVzaChmaWxlKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICApO1xuXG4gICAgcmV0dXJuIGNvcHlGaWxlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3B5IGEgc3RhdGljIGZpbGUgaW4gdGhlIGRlc3QgZm9sZGVyXG4gICAqIFJldHVybnMgYSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIGZpbGUgaGFzIHNhdmVkXG4gICAqL1xuICBhc3luYyBjb3B5RmlsZShmaWxlOiBTdGF0aWNGaWxlKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBlbnRyeSB9ID0gZmlsZS5zcmM7XG5cbiAgICBpZiAoZW50cnkuZmxhZ3MuaGFzKFwic2F2ZWRcIikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBlbnRyeS5mbGFncy5hZGQoXCJzYXZlZFwiKTtcbiAgICBjb25zdCBwYXRoVG8gPSBwb3NpeC5qb2luKHRoaXMuZGVzdCwgZmlsZS5vdXRwdXRQYXRoKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBlbnN1cmVEaXIocG9zaXguZGlybmFtZShwYXRoVG8pKTtcblxuICAgICAgaWYgKGVudHJ5LmZsYWdzLmhhcyhcInJlbW90ZVwiKSkge1xuICAgICAgICBhd2FpdCBEZW5vLndyaXRlRmlsZShcbiAgICAgICAgICBwYXRoVG8sXG4gICAgICAgICAgKGF3YWl0IGVudHJ5LmdldENvbnRlbnQoYmluYXJ5TG9hZGVyKSkuY29udGVudCBhcyBVaW50OEFycmF5LFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ29weSBmaWxlIGh0dHBzOi8vZ2l0aHViLmNvbS9kZW5vbGFuZC9kZW5vL2lzc3Vlcy8xOTQyNVxuICAgICAgICBEZW5vLndyaXRlRmlsZVN5bmMocGF0aFRvLCBEZW5vLnJlYWRGaWxlU3luYyhlbnRyeS5zcmMpKTtcbiAgICAgIH1cbiAgICAgIGxvZy5pbmZvKFxuICAgICAgICBg8J+UpSAke2ZpbGUub3V0cHV0UGF0aH0gPC0gPGdyYXk+JHtcbiAgICAgICAgICBlbnRyeS5mbGFncy5oYXMoXCJyZW1vdGVcIikgPyBlbnRyeS5zcmMgOiBlbnRyeS5wYXRoXG4gICAgICAgIH08L2dyYXk+YCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgbG9nLmVycm9yKFxuICAgICAgICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuICAgICAgICBgRmFpbGVkIHRvIGNvcHkgZmlsZTogJHtmaWxlLm91dHB1dFBhdGh9OiAkeyhlcnJvciBhcyBhbnkpLm1lc3NhZ2V9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqIEVtcHR5IHRoZSBkZXN0IGZvbGRlciAqL1xuICBhc3luYyBjbGVhcigpIHtcbiAgICBhd2FpdCBlbXB0eURpcih0aGlzLmRlc3QpO1xuICAgIHRoaXMuI291dHB1dHMuY2xlYXIoKTtcbiAgfVxuXG4gIGFzeW5jIHJlbW92ZUZpbGVzKGZpbGVzOiBzdHJpbmdbXSkge1xuICAgIGF3YWl0IGNvbmN1cnJlbnQoXG4gICAgICBmaWxlcyxcbiAgICAgIGFzeW5jIChmaWxlKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3Qgb3V0cHV0UGF0aCA9IHBvc2l4LmpvaW4odGhpcy5kZXN0LCBmaWxlKTtcbiAgICAgICAgICB0aGlzLiNvdXRwdXRzLmRlbGV0ZShvdXRwdXRQYXRoLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgIGF3YWl0IERlbm8ucmVtb3ZlKG91dHB1dFBhdGgpO1xuXG4gICAgICAgICAgLy8gUmVtb3ZlIGVtcHR5IGRpcmVjdG9yaWVzXG4gICAgICAgICAgcmVtb3ZlRW1wdHlEaXJlY3Rvcnkob3V0cHV0UGF0aCwgdGhpcy5kZXN0KTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gSWdub3JlZFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlRW1wdHlEaXJlY3RvcnkocGF0aDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpIHtcbiAgY29uc3QgZGlyID0gcG9zaXguZGlybmFtZShwYXRoKTtcblxuICB0cnkge1xuICAgIGlmIChkaXIgIT09IGJhc2UpIHtcbiAgICAgIERlbm8ucmVtb3ZlU3luYyhkaXIpO1xuICAgICAgLy8gQ2hlY2sgaWYgdGhlIHBhcmVudCBkaXJlY3RvcnkgaXMgYWxzbyBlbXB0eVxuICAgICAgcmVtb3ZlRW1wdHlEaXJlY3RvcnkoZGlyLCBiYXNlKTtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIC8vIElnbm9yZWRcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsS0FBSyxRQUFRLGtCQUFrQjtBQUN4QyxTQUFTLFFBQVEsRUFBRSxTQUFTLFFBQVEsZ0JBQWdCO0FBQ3BELFNBQVMsVUFBVSxRQUFRLHdCQUF3QjtBQUNuRCxTQUFTLElBQUksUUFBUSxvQkFBb0I7QUFDekMsU0FBUyxHQUFHLFFBQVEsaUJBQWlCO0FBQ3JDLE9BQU8sa0JBQWtCLHNCQUFzQjtBQWlCL0M7OztDQUdDLEdBQ0QsT0FBTyxNQUFNO0VBQ1gsS0FBYTtFQUNiLGtCQUEyQjtFQUUzQixDQUFBLE9BQVEsR0FBRyxJQUFJLE1BQXdDO0VBQ3ZELENBQUEsU0FBVSxHQUFHLEVBQUU7RUFFZixZQUFZLE9BQWdCLENBQUU7SUFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLElBQUk7SUFDeEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsaUJBQWlCO0VBQ3BEO0VBRUE7OztHQUdDLEdBQ0QsTUFBTSxVQUFVLEtBQWEsRUFBbUI7SUFDOUMsTUFBTSxhQUFxQixFQUFFO0lBQzdCLEVBQUUsSUFBSSxDQUFDLENBQUEsU0FBVTtJQUVqQixNQUFNLFdBQ0osT0FDQSxPQUFPO01BQ0wsSUFBSSxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTztRQUM3QixXQUFXLElBQUksQ0FBQztNQUNsQjtJQUNGO0lBR0YsT0FBTztFQUNUO0VBRUE7OztHQUdDLEdBQ0QsTUFBTSxTQUFTLElBQVUsRUFBb0I7SUFDM0MsTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLEdBQUc7SUFDNUMscUJBQXFCO0lBQ3JCLElBQUksQ0FBQyxTQUFTO01BQ1osSUFBSSxJQUFJLENBQ04sQ0FBQyxpQ0FBaUMsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUM7TUFFN0UsT0FBTztJQUNUO0lBRUEsTUFBTSxXQUFXLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7SUFDdkMsTUFBTSxLQUFLLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxXQUFXLFNBQVMsV0FBVztJQUNuRSxNQUFNLE9BQU8sTUFBTSxLQUFLO0lBQ3hCLE1BQU0sV0FBVyxJQUFJLENBQUMsQ0FBQSxPQUFRLENBQUMsR0FBRyxDQUFDO0lBQ25DLElBQUksQ0FBQyxDQUFBLE9BQVEsQ0FBQyxHQUFHLENBQUMsSUFBSTtNQUFDLElBQUksQ0FBQyxDQUFBLFNBQVU7TUFBRTtNQUFZO0tBQUs7SUFFekQsSUFBSSxVQUFVO01BQ1osTUFBTSxDQUFDLGVBQWUsb0JBQW9CLGFBQWEsR0FBRztNQUUxRCxJQUFJLGtCQUFrQixJQUFJLENBQUMsQ0FBQSxTQUFVLEVBQUU7UUFDckMsTUFBTSxJQUFJLE1BQ1IsQ0FBQyxVQUFVLEVBQUUsV0FBVyxLQUFLLEVBQUUsbUJBQW1CLDRCQUE0QixFQUFFLFdBQVcscURBQXFELENBQUM7TUFFcko7TUFFQSxpQ0FBaUM7TUFDakMsSUFBSSxpQkFBaUIsTUFBTTtRQUN6QixPQUFPO01BQ1Q7SUFDRjtJQUVBLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsV0FBVyxPQUFPLENBQUM7SUFFNUQsTUFBTSxVQUFVLE1BQU0sT0FBTyxDQUFDO0lBRTlCLG1CQUFtQixhQUNmLE1BQU0sS0FBSyxTQUFTLENBQUMsVUFBVSxXQUMvQixNQUFNLEtBQUssYUFBYSxDQUFDLFVBQVU7SUFFdkMsT0FBTztFQUNUO0VBRUE7O0dBRUMsR0FDRCxNQUFNLFVBQVUsS0FBbUIsRUFBeUI7SUFDMUQsTUFBTSxZQUEwQixFQUFFO0lBRWxDLE1BQU0sV0FDSixPQUNBLE9BQU87TUFDTCxJQUFJLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPO1FBQzdCLFVBQVUsSUFBSSxDQUFDO01BQ2pCO0lBQ0Y7SUFHRixPQUFPO0VBQ1Q7RUFFQTs7O0dBR0MsR0FDRCxNQUFNLFNBQVMsSUFBZ0IsRUFBb0I7SUFDakQsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssR0FBRztJQUUxQixJQUFJLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVO01BQzVCLE9BQU87SUFDVDtJQUVBLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUNoQixNQUFNLFNBQVMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLFVBQVU7SUFFcEQsSUFBSTtNQUNGLE1BQU0sVUFBVSxNQUFNLE9BQU8sQ0FBQztNQUU5QixJQUFJLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXO1FBQzdCLE1BQU0sS0FBSyxTQUFTLENBQ2xCLFFBQ0EsQ0FBQyxNQUFNLE1BQU0sVUFBVSxDQUFDLGFBQWEsRUFBRSxPQUFPO01BRWxELE9BQU87UUFDTCwwREFBMEQ7UUFDMUQsS0FBSyxhQUFhLENBQUMsUUFBUSxLQUFLLFlBQVksQ0FBQyxNQUFNLEdBQUc7TUFDeEQ7TUFDQSxJQUFJLElBQUksQ0FDTixDQUFDLEdBQUcsRUFBRSxLQUFLLFVBQVUsQ0FBQyxVQUFVLEVBQzlCLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUNuRCxPQUFPLENBQUM7TUFFWCxPQUFPO0lBQ1QsRUFBRSxPQUFPLE9BQWdCO01BQ3ZCLElBQUksS0FBSyxDQUNQLG1DQUFtQztNQUNuQyxDQUFDLHFCQUFxQixFQUFFLEtBQUssVUFBVSxDQUFDLEVBQUUsRUFBRSxBQUFDLE1BQWMsT0FBTyxFQUFFO0lBRXhFO0lBRUEsT0FBTztFQUNUO0VBRUEsMEJBQTBCLEdBQzFCLE1BQU0sUUFBUTtJQUNaLE1BQU0sU0FBUyxJQUFJLENBQUMsSUFBSTtJQUN4QixJQUFJLENBQUMsQ0FBQSxPQUFRLENBQUMsS0FBSztFQUNyQjtFQUVBLE1BQU0sWUFBWSxLQUFlLEVBQUU7SUFDakMsTUFBTSxXQUNKLE9BQ0EsT0FBTztNQUNMLElBQUk7UUFDRixNQUFNLGFBQWEsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtRQUN6QyxJQUFJLENBQUMsQ0FBQSxPQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsV0FBVztRQUMzQyxNQUFNLEtBQUssTUFBTSxDQUFDO1FBRWxCLDJCQUEyQjtRQUMzQixxQkFBcUIsWUFBWSxJQUFJLENBQUMsSUFBSTtNQUM1QyxFQUFFLE9BQU07TUFDTixVQUFVO01BQ1o7SUFDRjtFQUVKO0FBQ0Y7QUFFQSxTQUFTLHFCQUFxQixJQUFZLEVBQUUsSUFBWTtFQUN0RCxNQUFNLE1BQU0sTUFBTSxPQUFPLENBQUM7RUFFMUIsSUFBSTtJQUNGLElBQUksUUFBUSxNQUFNO01BQ2hCLEtBQUssVUFBVSxDQUFDO01BQ2hCLDhDQUE4QztNQUM5QyxxQkFBcUIsS0FBSztJQUM1QjtFQUNGLEVBQUUsT0FBTTtFQUNOLFVBQVU7RUFDWjtBQUNGIn0= +// denoCacheMetadata=7223173372891883969,4489208043429476027
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/757dde3b17685721d57978fb10850726d14635e5c21bf97348221d6fabb62d75.js b/vendor/gen/https/deno.land/757dde3b17685721d57978fb10850726d14635e5c21bf97348221d6fabb62d75.js new file mode 100644 index 0000000..3d0b5c1 --- /dev/null +++ b/vendor/gen/https/deno.land/757dde3b17685721d57978fb10850726d14635e5c21bf97348221d6fabb62d75.js @@ -0,0 +1,7 @@ +export * from "./provider/deno_land.ts"; +export * from "./provider/github.ts"; +export * from "./provider/nest_land.ts"; +export * from "./provider.ts"; +export * from "./upgrade_command.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC91cGdyYWRlL21vZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9wcm92aWRlci9kZW5vX2xhbmQudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Byb3ZpZGVyL2dpdGh1Yi50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHJvdmlkZXIvbmVzdF9sYW5kLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wcm92aWRlci50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXBncmFkZV9jb21tYW5kLnRzXCI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEI7QUFDeEMsY0FBYyx1QkFBdUI7QUFDckMsY0FBYywwQkFBMEI7QUFDeEMsY0FBYyxnQkFBZ0I7QUFDOUIsY0FBYyx1QkFBdUIifQ== +// denoCacheMetadata=9509665385609094328,17491684540228973707
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/76f33d277005d03aa28ed94886ccb3f481034101758f3169e677969b99b95b2f.js b/vendor/gen/https/deno.land/76f33d277005d03aa28ed94886ccb3f481034101758f3169e677969b99b95b2f.js new file mode 100644 index 0000000..86b3d8a --- /dev/null +++ b/vendor/gen/https/deno.land/76f33d277005d03aa28ed94886ccb3f481034101758f3169e677969b99b95b2f.js @@ -0,0 +1,18 @@ +import { DOMParser } from "../../deps/dom.ts"; +const parser = new DOMParser(); +/** Convert an Document instance to a string */ export function documentToString(document) { + const { doctype, documentElement } = document; + if (!doctype) { + return documentElement?.outerHTML || ""; + } + return `<!DOCTYPE ${doctype.name}` + (doctype.publicId ? ` PUBLIC "${doctype.publicId}"` : "") + (!doctype.publicId && doctype.systemId ? " SYSTEM" : "") + (doctype.systemId ? ` "${doctype.systemId}"` : "") + `>\n${documentElement?.outerHTML}`; +} +/** Parse a string with HTML code and return a Document */ export function stringToDocument(string) { + const document = parser.parseFromString(string, "text/html"); + if (!document) { + throw new Error("Unable to parse the HTML code"); + } + return document; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS91dGlscy9kb20udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9NUGFyc2VyIH0gZnJvbSBcIi4uLy4uL2RlcHMvZG9tLnRzXCI7XG5cbmNvbnN0IHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcblxuLyoqIENvbnZlcnQgYW4gRG9jdW1lbnQgaW5zdGFuY2UgdG8gYSBzdHJpbmcgKi9cbmV4cG9ydCBmdW5jdGlvbiBkb2N1bWVudFRvU3RyaW5nKGRvY3VtZW50OiBEb2N1bWVudCkge1xuICBjb25zdCB7IGRvY3R5cGUsIGRvY3VtZW50RWxlbWVudCB9ID0gZG9jdW1lbnQ7XG5cbiAgaWYgKCFkb2N0eXBlKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50RWxlbWVudD8ub3V0ZXJIVE1MIHx8IFwiXCI7XG4gIH1cblxuICByZXR1cm4gYDwhRE9DVFlQRSAke2RvY3R5cGUubmFtZX1gICtcbiAgICAoZG9jdHlwZS5wdWJsaWNJZCA/IGAgUFVCTElDIFwiJHtkb2N0eXBlLnB1YmxpY0lkfVwiYCA6IFwiXCIpICtcbiAgICAoIWRvY3R5cGUucHVibGljSWQgJiYgZG9jdHlwZS5zeXN0ZW1JZCA/IFwiIFNZU1RFTVwiIDogXCJcIikgK1xuICAgIChkb2N0eXBlLnN5c3RlbUlkID8gYCBcIiR7ZG9jdHlwZS5zeXN0ZW1JZH1cImAgOiBcIlwiKSArXG4gICAgYD5cXG4ke2RvY3VtZW50RWxlbWVudD8ub3V0ZXJIVE1MfWA7XG59XG5cbi8qKiBQYXJzZSBhIHN0cmluZyB3aXRoIEhUTUwgY29kZSBhbmQgcmV0dXJuIGEgRG9jdW1lbnQgKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdUb0RvY3VtZW50KHN0cmluZzogc3RyaW5nKTogRG9jdW1lbnQge1xuICBjb25zdCBkb2N1bWVudCA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoc3RyaW5nLCBcInRleHQvaHRtbFwiKTtcblxuICBpZiAoIWRvY3VtZW50KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIHBhcnNlIHRoZSBIVE1MIGNvZGVcIik7XG4gIH1cblxuICByZXR1cm4gZG9jdW1lbnQgYXMgdW5rbm93biBhcyBEb2N1bWVudDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLFNBQVMsUUFBUSxvQkFBb0I7QUFFOUMsTUFBTSxTQUFTLElBQUk7QUFFbkIsNkNBQTZDLEdBQzdDLE9BQU8sU0FBUyxpQkFBaUIsUUFBa0I7RUFDakQsTUFBTSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsR0FBRztFQUVyQyxJQUFJLENBQUMsU0FBUztJQUNaLE9BQU8saUJBQWlCLGFBQWE7RUFDdkM7RUFFQSxPQUFPLENBQUMsVUFBVSxFQUFFLFFBQVEsSUFBSSxFQUFFLEdBQ2hDLENBQUMsUUFBUSxRQUFRLEdBQUcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUN4RCxDQUFDLENBQUMsUUFBUSxRQUFRLElBQUksUUFBUSxRQUFRLEdBQUcsWUFBWSxFQUFFLElBQ3ZELENBQUMsUUFBUSxRQUFRLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUNqRCxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsV0FBVztBQUN0QztBQUVBLHdEQUF3RCxHQUN4RCxPQUFPLFNBQVMsaUJBQWlCLE1BQWM7RUFDN0MsTUFBTSxXQUFXLE9BQU8sZUFBZSxDQUFDLFFBQVE7RUFFaEQsSUFBSSxDQUFDLFVBQVU7SUFDYixNQUFNLElBQUksTUFBTTtFQUNsQjtFQUVBLE9BQU87QUFDVCJ9 +// denoCacheMetadata=11009235347339197355,14357328422860843711
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/77a10369b2b0a22d56de43ff92b44031d71e5d1caa09255872fb602353b86143.js b/vendor/gen/https/deno.land/77a10369b2b0a22d56de43ff92b44031d71e5d1caa09255872fb602353b86143.js new file mode 100644 index 0000000..b82afd4 --- /dev/null +++ b/vendor/gen/https/deno.land/77a10369b2b0a22d56de43ff92b44031d71e5d1caa09255872fb602353b86143.js @@ -0,0 +1,15 @@ +import { boolean } from "../../flags/types/boolean.ts"; +import { Type } from "../type.ts"; +/** Boolean type with auto completion. Allows `true`, `false`, `0` and `1`. */ export class BooleanType extends Type { + /** Parse boolean type. */ parse(type) { + return boolean(type); + } + /** Complete boolean type. */ complete() { + return [ + "true", + "false" + ]; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC90eXBlcy9ib29sZWFuLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJvb2xlYW4gfSBmcm9tIFwiLi4vLi4vZmxhZ3MvdHlwZXMvYm9vbGVhbi50c1wiO1xuaW1wb3J0IHR5cGUgeyBBcmd1bWVudFZhbHVlIH0gZnJvbSBcIi4uL3R5cGVzLnRzXCI7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSBcIi4uL3R5cGUudHNcIjtcblxuLyoqIEJvb2xlYW4gdHlwZSB3aXRoIGF1dG8gY29tcGxldGlvbi4gQWxsb3dzIGB0cnVlYCwgYGZhbHNlYCwgYDBgIGFuZCBgMWAuICovXG5leHBvcnQgY2xhc3MgQm9vbGVhblR5cGUgZXh0ZW5kcyBUeXBlPGJvb2xlYW4+IHtcbiAgLyoqIFBhcnNlIGJvb2xlYW4gdHlwZS4gKi9cbiAgcHVibGljIHBhcnNlKHR5cGU6IEFyZ3VtZW50VmFsdWUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gYm9vbGVhbih0eXBlKTtcbiAgfVxuXG4gIC8qKiBDb21wbGV0ZSBib29sZWFuIHR5cGUuICovXG4gIHB1YmxpYyBjb21wbGV0ZSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcInRydWVcIiwgXCJmYWxzZVwiXTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsT0FBTyxRQUFRLCtCQUErQjtBQUV2RCxTQUFTLElBQUksUUFBUSxhQUFhO0FBRWxDLDRFQUE0RSxHQUM1RSxPQUFPLE1BQU0sb0JBQW9CO0VBQy9CLHdCQUF3QixHQUN4QixBQUFPLE1BQU0sSUFBbUIsRUFBVztJQUN6QyxPQUFPLFFBQVE7RUFDakI7RUFFQSwyQkFBMkIsR0FDM0IsQUFBTyxXQUFxQjtJQUMxQixPQUFPO01BQUM7TUFBUTtLQUFRO0VBQzFCO0FBQ0YifQ== +// denoCacheMetadata=12531781918539376646,7136942147879199042
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/78e773d9faefe298ca9933405ae4d8e6e3a855c0a706e96031a535c172bf99bf.js b/vendor/gen/https/deno.land/78e773d9faefe298ca9933405ae4d8e6e3a855c0a706e96031a535c172bf99bf.js new file mode 100644 index 0000000..c68cc0e --- /dev/null +++ b/vendor/gen/https/deno.land/78e773d9faefe298ca9933405ae4d8e6e3a855c0a706e96031a535c172bf99bf.js @@ -0,0 +1,5 @@ +export { default as markdownIt } from "npm:markdown-it@14.1.0"; +export { default as markdownItAttrs } from "npm:markdown-it-attrs@4.3.1"; +export { default as markdownItDeflist } from "npm:markdown-it-deflist@3.0.0"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvZGVwcy9tYXJrZG93bl9pdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBkZWZhdWx0IGFzIG1hcmtkb3duSXQgfSBmcm9tIFwibnBtOm1hcmtkb3duLWl0QDE0LjEuMFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtYXJrZG93bkl0QXR0cnMgfSBmcm9tIFwibnBtOm1hcmtkb3duLWl0LWF0dHJzQDQuMy4xXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1hcmtkb3duSXREZWZsaXN0IH0gZnJvbSBcIm5wbTptYXJrZG93bi1pdC1kZWZsaXN0QDMuMC4wXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFya2Rvd25JdE9wdGlvbnMge1xuICAvKiogU2V0IGB0cnVlYCB0byBlbmFibGUgSFRNTCB0YWdzIGluIHNvdXJjZSAqL1xuICBodG1sPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVXNlIGAvYCB0byBjbG9zZSBzaW5nbGUgdGFncyAoYDxiciAvPmApLlxuICAgKiBUaGlzIGlzIG9ubHkgZm9yIGZ1bGwgQ29tbW9uTWFyayBjb21wYXRpYmlsaXR5LlxuICAgKi9cbiAgeGh0bWxPdXQ/OiBib29sZWFuO1xuXG4gIC8qKiBDb252ZXJ0IGBcXG5gIGluIHBhcmFncmFwaHMgaW50byBgPGJyPmAgKi9cbiAgYnJlYWtzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ1NTIGxhbmd1YWdlIHByZWZpeCBmb3IgZmVuY2VkIGJsb2Nrcy5cbiAgICogQ2FuIGJlIHVzZWZ1bCBmb3IgZXh0ZXJuYWwgaGlnaGxpZ2h0ZXJzLlxuICAgKi9cbiAgbGFuZ1ByZWZpeD86IHN0cmluZztcblxuICAvKiogQXV0b2NvbnZlcnQgVVJMLWxpa2UgdGV4dCB0byBsaW5rcyAqL1xuICBsaW5raWZ5PzogYm9vbGVhbjtcblxuICAvKiogRW5hYmxlIHNvbWUgbGFuZ3VhZ2UtbmV1dHJhbCByZXBsYWNlbWVudCArIHF1b3RlcyBiZWF1dGlmaWNhdGlvbiAqL1xuICB0eXBvZ3JhcGhlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERvdWJsZSArIHNpbmdsZSBxdW90ZXMgcmVwbGFjZW1lbnQgcGFpcnMsIHdoZW4gdHlwb2dyYXBoZXIgZW5hYmxlZCxcbiAgICogYW5kIHNtYXJ0cXVvdGVzIG9uLiBDb3VsZCBiZSBlaXRoZXIgYSBTdHJpbmcgb3IgYW4gQXJyYXkuXG4gICAqIEZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSBgwqvCu+KAnuKAnGAgZm9yIFJ1c3NpYW4sIGDigJ7igJzigJrigJhgIGZvciBHZXJtYW4sXG4gICAqIGFuZCBgWyfCq1xceEEwJywgJ1xceEEwwrsnLCAn4oC5XFx4QTAnLCAnXFx4QTDigLonXWAgZm9yIEZyZW5jaCAoaW5jbHVkaW5nIG5ic3ApLlxuICAgKi9cbiAgcXVvdGVzPzogc3RyaW5nIHwgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEhpZ2hsaWdodGVyIGZ1bmN0aW9uLiBTaG91bGQgcmV0dXJuIGVzY2FwZWQgSFRNTCxcbiAgICogb3IgJycgaWYgdGhlIHNvdXJjZSBzdHJpbmcgaXMgbm90IGNoYW5nZWQgYW5kIHNob3VsZCBiZSBlc2NhcGVkIGV4dGVybmFsbHkuXG4gICAqIElmIHJlc3VsdCBzdGFydHMgd2l0aCA8cHJlLi4uIGludGVybmFsIHdyYXBwZXIgaXMgc2tpcHBlZC5cbiAgICovXG4gIGhpZ2hsaWdodD86IChzdHI6IHN0cmluZywgbGFuZzogc3RyaW5nKSA9PiBzdHJpbmcgfCBudWxsO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsV0FBVyxVQUFVLFFBQVEseUJBQXlCO0FBQy9ELFNBQVMsV0FBVyxlQUFlLFFBQVEsOEJBQThCO0FBQ3pFLFNBQVMsV0FBVyxpQkFBaUIsUUFBUSxnQ0FBZ0MifQ== +// denoCacheMetadata=2838351079861158289,5254002557100192889
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/79823bbc13d776f85eda5718d2492219a14637000246daff1355fe1dbbb279ce.js b/vendor/gen/https/deno.land/79823bbc13d776f85eda5718d2492219a14637000246daff1355fe1dbbb279ce.js new file mode 100644 index 0000000..6cdaad4 --- /dev/null +++ b/vendor/gen/https/deno.land/79823bbc13d776f85eda5718d2492219a14637000246daff1355fe1dbbb279ce.js @@ -0,0 +1,80 @@ +import { markdownIt, markdownItAttrs, markdownItDeflist } from "../deps/markdown_it.ts"; +import loader from "../core/loaders/text.ts"; +import { merge } from "../core/utils/object.ts"; +// Default options +export const defaults = { + extensions: [ + ".md", + ".markdown" + ], + options: { + html: true + }, + plugins: [], + rules: {}, + useDefaultPlugins: true +}; +const defaultPlugins = [ + markdownItAttrs, + markdownItDeflist +]; +/** Template engine to render Markdown files */ export class MarkdownEngine { + engine; + constructor(engine){ + this.engine = engine; + } + deleteCache() {} + render(content, data, filename) { + if (typeof content !== "string") { + content = String(content); + } + return this.engine.render(content, { + filename, + data + }); + } + addHelper() {} +} +/** + * A plugin to render Markdown files using markdown-it + * Installed by default + * @see https://lume.land/plugins/markdown + */ export function markdown(userOptions) { + const options = merge(defaults, userOptions); + if (options.useDefaultPlugins) { + options.plugins.unshift(...defaultPlugins); + } + return function(site) { + const engine = markdownIt(options.options); + // Disable indented code blocks by default + engine.disable("code"); + // Register markdown-it plugins + options.plugins.forEach((plugin)=>Array.isArray(plugin) ? engine.use(...plugin) : engine.use(plugin)); + // Hook to add markdown-it plugins + site.hooks.addMarkdownItPlugin = (plugin, ...options)=>{ + engine.use(plugin, ...options); + }; + // Register custom rules + for (const [name, rule] of Object.entries(options.rules)){ + engine.renderer.rules[name] = rule; + } + // Hook to add custom rules + site.hooks.addMarkdownItRule = (name, rule)=>{ + engine.renderer.rules[name] = rule; + }; + site.hooks.markdownIt = (callback)=>callback(engine); + // Load the pages + site.loadPages(options.extensions, { + loader, + engine: new MarkdownEngine(engine) + }); + // Register the md filter + site.filter("md", filter); + function filter(string, inline = false) { + return inline ? engine.renderInline(string?.toString() || "").trim() : engine.render(string?.toString() || "").trim(); + } + }; +} +export default markdown; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvcGx1Z2lucy9tYXJrZG93bi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBtYXJrZG93bkl0LFxuICBtYXJrZG93bkl0QXR0cnMsXG4gIG1hcmtkb3duSXREZWZsaXN0LFxuICBNYXJrZG93bkl0T3B0aW9ucyxcbn0gZnJvbSBcIi4uL2RlcHMvbWFya2Rvd25faXQudHNcIjtcbmltcG9ydCBsb2FkZXIgZnJvbSBcIi4uL2NvcmUvbG9hZGVycy90ZXh0LnRzXCI7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gXCIuLi9jb3JlL3V0aWxzL29iamVjdC50c1wiO1xuXG5pbXBvcnQgdHlwZSBTaXRlIGZyb20gXCIuLi9jb3JlL3NpdGUudHNcIjtcbmltcG9ydCB0eXBlIHsgRW5naW5lIH0gZnJvbSBcIi4uL2NvcmUvcmVuZGVyZXIudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcbiAgLyoqIEZpbGUgZXh0ZW5zaW9ucyB0byBsb2FkICovXG4gIGV4dGVuc2lvbnM/OiBzdHJpbmdbXTtcblxuICAvKiogT3B0aW9ucyBwYXNzZWQgdG8gbWFya2Rvd24taXQgbGlicmFyeSAqL1xuICBvcHRpb25zPzogTWFya2Rvd25JdE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIG1hcmtkb3duLWl0IHBsdWdpbnMgdG8gdXNlXG4gICAqIEBkZWZhdWx0IGBbbWFya2Rvd25JdEF0dHJzLCBtYXJrZG93bkl0RGVmbGlzdF1gXG4gICAqL1xuICBwbHVnaW5zPzogdW5rbm93bltdO1xuXG4gIC8qKiBUbyBtb2RpZnkgZXhpc3RpbmcgcnVsZXMgb3IgbmV3IGN1c3RvbSBydWxlcyAqL1xuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuICBydWxlcz86IFJlY29yZDxzdHJpbmcsICguLi5hcmdzOiBhbnlbXSkgPT4gYW55PjtcblxuICAvKiogU2V0IGBmYWxzZWAgdG8gcmVtb3ZlIHRoZSBkZWZhdWx0IHBsdWdpbnMgKi9cbiAgdXNlRGVmYXVsdFBsdWdpbnM/OiBib29sZWFuO1xufVxuXG4vLyBEZWZhdWx0IG9wdGlvbnNcbmV4cG9ydCBjb25zdCBkZWZhdWx0czogT3B0aW9ucyA9IHtcbiAgZXh0ZW5zaW9uczogW1wiLm1kXCIsIFwiLm1hcmtkb3duXCJdLFxuICBvcHRpb25zOiB7XG4gICAgaHRtbDogdHJ1ZSxcbiAgfSxcbiAgcGx1Z2luczogW10sXG4gIHJ1bGVzOiB7fSxcbiAgdXNlRGVmYXVsdFBsdWdpbnM6IHRydWUsXG59O1xuXG5jb25zdCBkZWZhdWx0UGx1Z2lucyA9IFtcbiAgbWFya2Rvd25JdEF0dHJzLFxuICBtYXJrZG93bkl0RGVmbGlzdCxcbl07XG5cbmludGVyZmFjZSBNYXJrZG93bkl0RW5naW5lIHtcbiAgcmVuZGVyOiAoaW5wdXQ6IHN0cmluZywgZW52PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHN0cmluZztcbn1cblxuLyoqIFRlbXBsYXRlIGVuZ2luZSB0byByZW5kZXIgTWFya2Rvd24gZmlsZXMgKi9cbmV4cG9ydCBjbGFzcyBNYXJrZG93bkVuZ2luZSBpbXBsZW1lbnRzIEVuZ2luZSB7XG4gIGVuZ2luZTogTWFya2Rvd25JdEVuZ2luZTtcblxuICBjb25zdHJ1Y3RvcihlbmdpbmU6IE1hcmtkb3duSXRFbmdpbmUpIHtcbiAgICB0aGlzLmVuZ2luZSA9IGVuZ2luZTtcbiAgfVxuXG4gIGRlbGV0ZUNhY2hlKCkge31cblxuICByZW5kZXIoXG4gICAgY29udGVudDogdW5rbm93bixcbiAgICBkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgZmlsZW5hbWU/OiBzdHJpbmcsXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBjb250ZW50ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICBjb250ZW50ID0gU3RyaW5nKGNvbnRlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5lbmdpbmUucmVuZGVyKGNvbnRlbnQgYXMgc3RyaW5nLCB7IGZpbGVuYW1lLCBkYXRhIH0pO1xuICB9XG5cbiAgYWRkSGVscGVyKCkge31cbn1cblxuLyoqXG4gKiBBIHBsdWdpbiB0byByZW5kZXIgTWFya2Rvd24gZmlsZXMgdXNpbmcgbWFya2Rvd24taXRcbiAqIEluc3RhbGxlZCBieSBkZWZhdWx0XG4gKiBAc2VlIGh0dHBzOi8vbHVtZS5sYW5kL3BsdWdpbnMvbWFya2Rvd25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcmtkb3duKHVzZXJPcHRpb25zPzogT3B0aW9ucykge1xuICBjb25zdCBvcHRpb25zID0gbWVyZ2UoZGVmYXVsdHMsIHVzZXJPcHRpb25zKTtcblxuICBpZiAob3B0aW9ucy51c2VEZWZhdWx0UGx1Z2lucykge1xuICAgIG9wdGlvbnMucGx1Z2lucy51bnNoaWZ0KC4uLmRlZmF1bHRQbHVnaW5zKTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoc2l0ZTogU2l0ZSkge1xuICAgIGNvbnN0IGVuZ2luZSA9IG1hcmtkb3duSXQob3B0aW9ucy5vcHRpb25zKTtcblxuICAgIC8vIERpc2FibGUgaW5kZW50ZWQgY29kZSBibG9ja3MgYnkgZGVmYXVsdFxuICAgIGVuZ2luZS5kaXNhYmxlKFwiY29kZVwiKTtcblxuICAgIC8vIFJlZ2lzdGVyIG1hcmtkb3duLWl0IHBsdWdpbnNcbiAgICBvcHRpb25zLnBsdWdpbnMuZm9yRWFjaCgocGx1Z2luKSA9PlxuICAgICAgQXJyYXkuaXNBcnJheShwbHVnaW4pID8gZW5naW5lLnVzZSguLi5wbHVnaW4pIDogZW5naW5lLnVzZShwbHVnaW4pXG4gICAgKTtcblxuICAgIC8vIEhvb2sgdG8gYWRkIG1hcmtkb3duLWl0IHBsdWdpbnNcbiAgICBzaXRlLmhvb2tzLmFkZE1hcmtkb3duSXRQbHVnaW4gPSAocGx1Z2luLCAuLi5vcHRpb25zKSA9PiB7XG4gICAgICBlbmdpbmUudXNlKHBsdWdpbiwgLi4ub3B0aW9ucyk7XG4gICAgfTtcblxuICAgIC8vIFJlZ2lzdGVyIGN1c3RvbSBydWxlc1xuICAgIGZvciAoY29uc3QgW25hbWUsIHJ1bGVdIG9mIE9iamVjdC5lbnRyaWVzKG9wdGlvbnMucnVsZXMpKSB7XG4gICAgICBlbmdpbmUucmVuZGVyZXIucnVsZXNbbmFtZV0gPSBydWxlO1xuICAgIH1cblxuICAgIC8vIEhvb2sgdG8gYWRkIGN1c3RvbSBydWxlc1xuICAgIHNpdGUuaG9va3MuYWRkTWFya2Rvd25JdFJ1bGUgPSAobmFtZSwgcnVsZSkgPT4ge1xuICAgICAgZW5naW5lLnJlbmRlcmVyLnJ1bGVzW25hbWVdID0gcnVsZTtcbiAgICB9O1xuXG4gICAgc2l0ZS5ob29rcy5tYXJrZG93bkl0ID0gKGNhbGxiYWNrKSA9PiBjYWxsYmFjayhlbmdpbmUpO1xuXG4gICAgLy8gTG9hZCB0aGUgcGFnZXNcbiAgICBzaXRlLmxvYWRQYWdlcyhvcHRpb25zLmV4dGVuc2lvbnMsIHtcbiAgICAgIGxvYWRlcixcbiAgICAgIGVuZ2luZTogbmV3IE1hcmtkb3duRW5naW5lKGVuZ2luZSksXG4gICAgfSk7XG5cbiAgICAvLyBSZWdpc3RlciB0aGUgbWQgZmlsdGVyXG4gICAgc2l0ZS5maWx0ZXIoXCJtZFwiLCBmaWx0ZXIpO1xuXG4gICAgZnVuY3Rpb24gZmlsdGVyKHN0cmluZzogc3RyaW5nLCBpbmxpbmUgPSBmYWxzZSk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gaW5saW5lXG4gICAgICAgID8gZW5naW5lLnJlbmRlcklubGluZShzdHJpbmc/LnRvU3RyaW5nKCkgfHwgXCJcIikudHJpbSgpXG4gICAgICAgIDogZW5naW5lLnJlbmRlcihzdHJpbmc/LnRvU3RyaW5nKCkgfHwgXCJcIikudHJpbSgpO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWFya2Rvd247XG5cbi8qKiBFeHRlbmRzIEhlbHBlcnMgaW50ZXJmYWNlICovXG5kZWNsYXJlIGdsb2JhbCB7XG4gIG5hbWVzcGFjZSBMdW1lIHtcbiAgICBleHBvcnQgaW50ZXJmYWNlIEhlbHBlcnMge1xuICAgICAgLyoqIEBzZWUgaHR0cHM6Ly9sdW1lLmxhbmQvcGx1Z2lucy9tYXJrZG93bi8gKi9cbiAgICAgIG1kOiAoc3RyaW5nOiBzdHJpbmcsIGlubGluZT86IGJvb2xlYW4pID0+IHN0cmluZztcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUNFLFVBQVUsRUFDVixlQUFlLEVBQ2YsaUJBQWlCLFFBRVoseUJBQXlCO0FBQ2hDLE9BQU8sWUFBWSwwQkFBMEI7QUFDN0MsU0FBUyxLQUFLLFFBQVEsMEJBQTBCO0FBMEJoRCxrQkFBa0I7QUFDbEIsT0FBTyxNQUFNLFdBQW9CO0VBQy9CLFlBQVk7SUFBQztJQUFPO0dBQVk7RUFDaEMsU0FBUztJQUNQLE1BQU07RUFDUjtFQUNBLFNBQVMsRUFBRTtFQUNYLE9BQU8sQ0FBQztFQUNSLG1CQUFtQjtBQUNyQixFQUFFO0FBRUYsTUFBTSxpQkFBaUI7RUFDckI7RUFDQTtDQUNEO0FBTUQsNkNBQTZDLEdBQzdDLE9BQU8sTUFBTTtFQUNYLE9BQXlCO0VBRXpCLFlBQVksTUFBd0IsQ0FBRTtJQUNwQyxJQUFJLENBQUMsTUFBTSxHQUFHO0VBQ2hCO0VBRUEsY0FBYyxDQUFDO0VBRWYsT0FDRSxPQUFnQixFQUNoQixJQUE4QixFQUM5QixRQUFpQixFQUNUO0lBQ1IsSUFBSSxPQUFPLFlBQVksVUFBVTtNQUMvQixVQUFVLE9BQU87SUFDbkI7SUFDQSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQW1CO01BQUU7TUFBVTtJQUFLO0VBQ2hFO0VBRUEsWUFBWSxDQUFDO0FBQ2Y7QUFFQTs7OztDQUlDLEdBQ0QsT0FBTyxTQUFTLFNBQVMsV0FBcUI7RUFDNUMsTUFBTSxVQUFVLE1BQU0sVUFBVTtFQUVoQyxJQUFJLFFBQVEsaUJBQWlCLEVBQUU7SUFDN0IsUUFBUSxPQUFPLENBQUMsT0FBTyxJQUFJO0VBQzdCO0VBRUEsT0FBTyxTQUFVLElBQVU7SUFDekIsTUFBTSxTQUFTLFdBQVcsUUFBUSxPQUFPO0lBRXpDLDBDQUEwQztJQUMxQyxPQUFPLE9BQU8sQ0FBQztJQUVmLCtCQUErQjtJQUMvQixRQUFRLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUN2QixNQUFNLE9BQU8sQ0FBQyxVQUFVLE9BQU8sR0FBRyxJQUFJLFVBQVUsT0FBTyxHQUFHLENBQUM7SUFHN0Qsa0NBQWtDO0lBQ2xDLEtBQUssS0FBSyxDQUFDLG1CQUFtQixHQUFHLENBQUMsUUFBUSxHQUFHO01BQzNDLE9BQU8sR0FBRyxDQUFDLFdBQVc7SUFDeEI7SUFFQSx3QkFBd0I7SUFDeEIsS0FBSyxNQUFNLENBQUMsTUFBTSxLQUFLLElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLEVBQUc7TUFDeEQsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRztJQUNoQztJQUVBLDJCQUEyQjtJQUMzQixLQUFLLEtBQUssQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLE1BQU07TUFDcEMsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRztJQUNoQztJQUVBLEtBQUssS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLFdBQWEsU0FBUztJQUUvQyxpQkFBaUI7SUFDakIsS0FBSyxTQUFTLENBQUMsUUFBUSxVQUFVLEVBQUU7TUFDakM7TUFDQSxRQUFRLElBQUksZUFBZTtJQUM3QjtJQUVBLHlCQUF5QjtJQUN6QixLQUFLLE1BQU0sQ0FBQyxNQUFNO0lBRWxCLFNBQVMsT0FBTyxNQUFjLEVBQUUsU0FBUyxLQUFLO01BQzVDLE9BQU8sU0FDSCxPQUFPLFlBQVksQ0FBQyxRQUFRLGNBQWMsSUFBSSxJQUFJLEtBQ2xELE9BQU8sTUFBTSxDQUFDLFFBQVEsY0FBYyxJQUFJLElBQUk7SUFDbEQ7RUFDRjtBQUNGO0FBRUEsZUFBZSxTQUFTIn0= +// denoCacheMetadata=15556366944876663143,9871773237858387856
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/79a8ce76a2188c42fb91f9c354664324230fb7b89458d73d5b6606b45972dfdb.js b/vendor/gen/https/deno.land/79a8ce76a2188c42fb91f9c354664324230fb7b89458d73d5b6606b45972dfdb.js new file mode 100644 index 0000000..e91f678 --- /dev/null +++ b/vendor/gen/https/deno.land/79a8ce76a2188c42fb91f9c354664324230fb7b89458d73d5b6606b45972dfdb.js @@ -0,0 +1,4 @@ +import NWDom from "./nwsapi.js"; +export const DOM = NWDom; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvZGVub19kb21AdjAuMS40OS9zcmMvZG9tL3NlbGVjdG9ycy9ud3NhcGktdHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE5XRG9tIGZyb20gXCIuL253c2FwaS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSBcIi4uL2VsZW1lbnQudHNcIjtcbmltcG9ydCB0eXBlIHsgRG9jdW1lbnQgfSBmcm9tIFwiLi4vZG9jdW1lbnQudHNcIjtcblxuZXhwb3J0IGNvbnN0IERPTTogKGRvYzogRG9jdW1lbnQpID0+IHtcbiAgYW5jZXN0b3IoXG4gICAgc2VsZWN0b3I6IHN0cmluZyxcbiAgICBjb250ZXh0OiBFbGVtZW50IHwgRG9jdW1lbnQsXG4gICAgY2FsbGJhY2s/OiAoZWxlbWVudDogRWxlbWVudCkgPT4gdm9pZCxcbiAgKTogRWxlbWVudCB8IG51bGw7XG4gIGZpcnN0KFxuICAgIHNlbGVjdG9yOiBzdHJpbmcsXG4gICAgY29udGV4dDogRWxlbWVudCB8IERvY3VtZW50LFxuICAgIGNhbGxiYWNrPzogKGVsZW1lbnQ6IEVsZW1lbnQpID0+IHZvaWQsXG4gICk6IEVsZW1lbnQgfCBudWxsO1xuICBtYXRjaChcbiAgICBzZWxlY3Rvcjogc3RyaW5nLFxuICAgIGNvbnRleHQ6IEVsZW1lbnQgfCBEb2N1bWVudCxcbiAgICBjYWxsYmFjaz86IChlbGVtZW50OiBFbGVtZW50KSA9PiB2b2lkLFxuICApOiBib29sZWFuO1xuICBzZWxlY3QoXG4gICAgc2VsZWN0b3I6IHN0cmluZyxcbiAgICBjb250ZXh0OiBFbGVtZW50IHwgRG9jdW1lbnQsXG4gICAgY2FsbGJhY2s/OiAoZWxlbWVudDogRWxlbWVudCkgPT4gdm9pZCxcbiAgKTogRWxlbWVudFtdO1xuICBieUlkKGlkOiBzdHJpbmcsIGZyb206IEVsZW1lbnQgfCBEb2N1bWVudCk6IEVsZW1lbnRbXTtcbiAgYnlUYWcodGFnOiBzdHJpbmcsIGZyb206IEVsZW1lbnQgfCBEb2N1bWVudCk6IEVsZW1lbnRbXTtcbiAgYnlDbGFzcyh0YWc6IHN0cmluZywgZnJvbTogRWxlbWVudCB8IERvY3VtZW50KTogRWxlbWVudFtdO1xufSA9IE5XRG9tIGFzIGFueTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFdBQVcsY0FBYztBQUloQyxPQUFPLE1BQU0sTUF3QlQsTUFBYSJ9 +// denoCacheMetadata=4552639845895541984,10403187352560083199
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/7c0611e51d6da48336233c71b22977d63210b451912a648847f17cb373b5cff8.js b/vendor/gen/https/deno.land/7c0611e51d6da48336233c71b22977d63210b451912a648847f17cb373b5cff8.js new file mode 100644 index 0000000..3533401 --- /dev/null +++ b/vendor/gen/https/deno.land/7c0611e51d6da48336233c71b22977d63210b451912a648847f17cb373b5cff8.js @@ -0,0 +1,23 @@ +import { Command } from "../command.ts"; +import { dim, italic } from "../deps.ts"; +import { ZshCompletionsGenerator } from "./_zsh_completions_generator.ts"; +/** Generates zsh completions script. */ export class ZshCompletionsCommand extends Command { + #cmd; + constructor(cmd){ + super(); + this.#cmd = cmd; + return this.description(()=>{ + const baseCmd = this.#cmd || this.getMainCommand(); + return `Generate shell completions for zsh. + +To enable zsh completions for this program add following line to your ${dim(italic("~/.zshrc"))}: + + ${dim(italic(`source <(${baseCmd.getPath()} completions zsh)`))}`; + }).noGlobals().action(()=>{ + const baseCmd = this.#cmd || this.getMainCommand(); + console.log(ZshCompletionsGenerator.generate(baseCmd)); + }); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC9jb21wbGV0aW9ucy96c2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCIuLi9jb21tYW5kLnRzXCI7XG5pbXBvcnQgeyBkaW0sIGl0YWxpYyB9IGZyb20gXCIuLi9kZXBzLnRzXCI7XG5pbXBvcnQgeyBac2hDb21wbGV0aW9uc0dlbmVyYXRvciB9IGZyb20gXCIuL196c2hfY29tcGxldGlvbnNfZ2VuZXJhdG9yLnRzXCI7XG5cbi8qKiBHZW5lcmF0ZXMgenNoIGNvbXBsZXRpb25zIHNjcmlwdC4gKi9cbmV4cG9ydCBjbGFzcyBac2hDb21wbGV0aW9uc0NvbW1hbmQgZXh0ZW5kcyBDb21tYW5kIHtcbiAgI2NtZD86IENvbW1hbmQ7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihjbWQ/OiBDb21tYW5kKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLiNjbWQgPSBjbWQ7XG4gICAgcmV0dXJuIHRoaXNcbiAgICAgIC5kZXNjcmlwdGlvbigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGJhc2VDbWQgPSB0aGlzLiNjbWQgfHwgdGhpcy5nZXRNYWluQ29tbWFuZCgpO1xuICAgICAgICByZXR1cm4gYEdlbmVyYXRlIHNoZWxsIGNvbXBsZXRpb25zIGZvciB6c2guXG5cblRvIGVuYWJsZSB6c2ggY29tcGxldGlvbnMgZm9yIHRoaXMgcHJvZ3JhbSBhZGQgZm9sbG93aW5nIGxpbmUgdG8geW91ciAke1xuICAgICAgICAgIGRpbShpdGFsaWMoXCJ+Ly56c2hyY1wiKSlcbiAgICAgICAgfTpcblxuICAgICR7ZGltKGl0YWxpYyhgc291cmNlIDwoJHtiYXNlQ21kLmdldFBhdGgoKX0gY29tcGxldGlvbnMgenNoKWApKX1gO1xuICAgICAgfSlcbiAgICAgIC5ub0dsb2JhbHMoKVxuICAgICAgLmFjdGlvbigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGJhc2VDbWQgPSB0aGlzLiNjbWQgfHwgdGhpcy5nZXRNYWluQ29tbWFuZCgpO1xuICAgICAgICBjb25zb2xlLmxvZyhac2hDb21wbGV0aW9uc0dlbmVyYXRvci5nZW5lcmF0ZShiYXNlQ21kKSk7XG4gICAgICB9KTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsT0FBTyxRQUFRLGdCQUFnQjtBQUN4QyxTQUFTLEdBQUcsRUFBRSxNQUFNLFFBQVEsYUFBYTtBQUN6QyxTQUFTLHVCQUF1QixRQUFRLGtDQUFrQztBQUUxRSxzQ0FBc0MsR0FDdEMsT0FBTyxNQUFNLDhCQUE4QjtFQUN6QyxDQUFBLEdBQUksQ0FBVztFQUNmLFlBQW1CLEdBQWEsQ0FBRTtJQUNoQyxLQUFLO0lBQ0wsSUFBSSxDQUFDLENBQUEsR0FBSSxHQUFHO0lBQ1osT0FBTyxJQUFJLENBQ1IsV0FBVyxDQUFDO01BQ1gsTUFBTSxVQUFVLElBQUksQ0FBQyxDQUFBLEdBQUksSUFBSSxJQUFJLENBQUMsY0FBYztNQUNoRCxPQUFPLENBQUM7O3NFQUVzRCxFQUM1RCxJQUFJLE9BQU8sYUFDWjs7SUFFTCxFQUFFLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxRQUFRLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxJQUFJO0lBQy9ELEdBQ0MsU0FBUyxHQUNULE1BQU0sQ0FBQztNQUNOLE1BQU0sVUFBVSxJQUFJLENBQUMsQ0FBQSxHQUFJLElBQUksSUFBSSxDQUFDLGNBQWM7TUFDaEQsUUFBUSxHQUFHLENBQUMsd0JBQXdCLFFBQVEsQ0FBQztJQUMvQztFQUNKO0FBQ0YifQ== +// denoCacheMetadata=11072931032986519175,10493031743680652948
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/7ef55e2ddc76480d92fc85dfd2e61f7d8911c5efc22dd2c4c0cfb25dad793fa1.js b/vendor/gen/https/deno.land/7ef55e2ddc76480d92fc85dfd2e61f7d8911c5efc22dd2c4c0cfb25dad793fa1.js new file mode 100644 index 0000000..2eb75a0 --- /dev/null +++ b/vendor/gen/https/deno.land/7ef55e2ddc76480d92fc85dfd2e61f7d8911c5efc22dd2c4c0cfb25dad793fa1.js @@ -0,0 +1,18 @@ +import { parse } from "../../deps/toml.ts"; +import { isPlainObject } from "../utils/object.ts"; +import { read } from "../utils/read.ts"; +/** Load and parse a TOML file */ export default async function toml(path) { + const text = await read(path, false); + const content = parse(text); + if (!content) { + return {}; + } + if (isPlainObject(content)) { + return content; + } + return { + content + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS9sb2FkZXJzL3RvbWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGFyc2UgfSBmcm9tIFwiLi4vLi4vZGVwcy90b21sLnRzXCI7XG5pbXBvcnQgeyBpc1BsYWluT2JqZWN0IH0gZnJvbSBcIi4uL3V0aWxzL29iamVjdC50c1wiO1xuaW1wb3J0IHsgcmVhZCB9IGZyb20gXCIuLi91dGlscy9yZWFkLnRzXCI7XG5cbmltcG9ydCB0eXBlIHsgUmF3RGF0YSB9IGZyb20gXCIuLi9maWxlLnRzXCI7XG5cbi8qKiBMb2FkIGFuZCBwYXJzZSBhIFRPTUwgZmlsZSAqL1xuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gdG9tbChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPFJhd0RhdGE+IHtcbiAgY29uc3QgdGV4dCA9IGF3YWl0IHJlYWQocGF0aCwgZmFsc2UpO1xuICBjb25zdCBjb250ZW50ID0gcGFyc2UodGV4dCk7XG5cbiAgaWYgKCFjb250ZW50KSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgaWYgKGlzUGxhaW5PYmplY3QoY29udGVudCkpIHtcbiAgICByZXR1cm4gY29udGVudCBhcyBSYXdEYXRhO1xuICB9XG5cbiAgcmV0dXJuIHsgY29udGVudCB9O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsS0FBSyxRQUFRLHFCQUFxQjtBQUMzQyxTQUFTLGFBQWEsUUFBUSxxQkFBcUI7QUFDbkQsU0FBUyxJQUFJLFFBQVEsbUJBQW1CO0FBSXhDLCtCQUErQixHQUMvQixlQUFlLGVBQWUsS0FBSyxJQUFZO0VBQzdDLE1BQU0sT0FBTyxNQUFNLEtBQUssTUFBTTtFQUM5QixNQUFNLFVBQVUsTUFBTTtFQUV0QixJQUFJLENBQUMsU0FBUztJQUNaLE9BQU8sQ0FBQztFQUNWO0VBRUEsSUFBSSxjQUFjLFVBQVU7SUFDMUIsT0FBTztFQUNUO0VBRUEsT0FBTztJQUFFO0VBQVE7QUFDbkIifQ== +// denoCacheMetadata=8353252316730145128,11917285000152333446
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/7f25ad671ee24d9f46765b020c9bd6357c95a18d203e03070c2a8d84190167fb.js b/vendor/gen/https/deno.land/7f25ad671ee24d9f46765b020c9bd6357c95a18d203e03070c2a8d84190167fb.js new file mode 100644 index 0000000..4336269 --- /dev/null +++ b/vendor/gen/https/deno.land/7f25ad671ee24d9f46765b020c9bd6357c95a18d203e03070c2a8d84190167fb.js @@ -0,0 +1,10 @@ +import { InvalidTypeError } from "../_errors.ts"; +/** Integer type handler. Excepts any integer value. */ export const integer = (type)=>{ + const value = Number(type.value); + if (Number.isInteger(value)) { + return value; + } + throw new InvalidTypeError(type); +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvZmxhZ3MvdHlwZXMvaW50ZWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFyZ3VtZW50VmFsdWUsIFR5cGVIYW5kbGVyIH0gZnJvbSBcIi4uL3R5cGVzLnRzXCI7XG5pbXBvcnQgeyBJbnZhbGlkVHlwZUVycm9yIH0gZnJvbSBcIi4uL19lcnJvcnMudHNcIjtcblxuLyoqIEludGVnZXIgdHlwZSBoYW5kbGVyLiBFeGNlcHRzIGFueSBpbnRlZ2VyIHZhbHVlLiAqL1xuZXhwb3J0IGNvbnN0IGludGVnZXI6IFR5cGVIYW5kbGVyPG51bWJlcj4gPSAodHlwZTogQXJndW1lbnRWYWx1ZSk6IG51bWJlciA9PiB7XG4gIGNvbnN0IHZhbHVlID0gTnVtYmVyKHR5cGUudmFsdWUpO1xuICBpZiAoTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICB0aHJvdyBuZXcgSW52YWxpZFR5cGVFcnJvcih0eXBlKTtcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBUyxnQkFBZ0IsUUFBUSxnQkFBZ0I7QUFFakQscURBQXFELEdBQ3JELE9BQU8sTUFBTSxVQUErQixDQUFDO0VBQzNDLE1BQU0sUUFBUSxPQUFPLEtBQUssS0FBSztFQUMvQixJQUFJLE9BQU8sU0FBUyxDQUFDLFFBQVE7SUFDM0IsT0FBTztFQUNUO0VBRUEsTUFBTSxJQUFJLGlCQUFpQjtBQUM3QixFQUFFIn0= +// denoCacheMetadata=3434817745291415933,13615579810935742040
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/7f28f15b14e3c857e06c06ffa44655fc3b4e308f58dea66274992b8434cc0e35.js b/vendor/gen/https/deno.land/7f28f15b14e3c857e06c06ffa44655fc3b4e308f58dea66274992b8434cc0e35.js new file mode 100644 index 0000000..5296456 --- /dev/null +++ b/vendor/gen/https/deno.land/7f28f15b14e3c857e06c06ffa44655fc3b4e308f58dea66274992b8434cc0e35.js @@ -0,0 +1,13 @@ +import { StringType } from "./string.ts"; +/** String type with auto completion of child command names. */ export class ChildCommandType extends StringType { + #cmd; + constructor(cmd){ + super(); + this.#cmd = cmd; + } + /** Complete child command names. */ complete(cmd) { + return (this.#cmd ?? cmd)?.getCommands(false).map((cmd)=>cmd.getName()) || []; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC90eXBlcy9jaGlsZF9jb21tYW5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29tbWFuZCB9IGZyb20gXCIuLi9jb21tYW5kLnRzXCI7XG5pbXBvcnQgeyBTdHJpbmdUeXBlIH0gZnJvbSBcIi4vc3RyaW5nLnRzXCI7XG5cbi8qKiBTdHJpbmcgdHlwZSB3aXRoIGF1dG8gY29tcGxldGlvbiBvZiBjaGlsZCBjb21tYW5kIG5hbWVzLiAqL1xuZXhwb3J0IGNsYXNzIENoaWxkQ29tbWFuZFR5cGUgZXh0ZW5kcyBTdHJpbmdUeXBlIHtcbiAgI2NtZD86IENvbW1hbmQ7XG5cbiAgY29uc3RydWN0b3IoY21kPzogQ29tbWFuZCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy4jY21kID0gY21kO1xuICB9XG5cbiAgLyoqIENvbXBsZXRlIGNoaWxkIGNvbW1hbmQgbmFtZXMuICovXG4gIHB1YmxpYyBjb21wbGV0ZShjbWQ6IENvbW1hbmQpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuICh0aGlzLiNjbWQgPz8gY21kKT8uZ2V0Q29tbWFuZHMoZmFsc2UpXG4gICAgICAubWFwKChjbWQ6IENvbW1hbmQpID0+IGNtZC5nZXROYW1lKCkpIHx8IFtdO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBUyxVQUFVLFFBQVEsY0FBYztBQUV6Qyw2REFBNkQsR0FDN0QsT0FBTyxNQUFNLHlCQUF5QjtFQUNwQyxDQUFBLEdBQUksQ0FBVztFQUVmLFlBQVksR0FBYSxDQUFFO0lBQ3pCLEtBQUs7SUFDTCxJQUFJLENBQUMsQ0FBQSxHQUFJLEdBQUc7RUFDZDtFQUVBLGtDQUFrQyxHQUNsQyxBQUFPLFNBQVMsR0FBWSxFQUFZO0lBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQSxHQUFJLElBQUksR0FBRyxHQUFHLFlBQVksT0FDcEMsSUFBSSxDQUFDLE1BQWlCLElBQUksT0FBTyxPQUFPLEVBQUU7RUFDL0M7QUFDRiJ9 +// denoCacheMetadata=9861569127225403061,11990545245851704706
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/81fbc654f86552bde44b0a558f3a511492f3c807c9dbc34b63d8799fb7175175.js b/vendor/gen/https/deno.land/81fbc654f86552bde44b0a558f3a511492f3c807c9dbc34b63d8799fb7175175.js new file mode 100644 index 0000000..d3dfb5d --- /dev/null +++ b/vendor/gen/https/deno.land/81fbc654f86552bde44b0a558f3a511492f3c807c9dbc34b63d8799fb7175175.js @@ -0,0 +1,59 @@ +const main = { + ARROW_UP: "↑", + ARROW_DOWN: "↓", + ARROW_LEFT: "←", + ARROW_RIGHT: "→", + ARROW_UP_LEFT: "↖", + ARROW_UP_RIGHT: "↗", + ARROW_DOWN_RIGHT: "↘", + ARROW_DOWN_LEFT: "↙", + RADIO_ON: "◉", + RADIO_OFF: "◯", + TICK: "✔", + CROSS: "✘", + ELLIPSIS: "…", + POINTER_SMALL: "›", + LINE: "─", + POINTER: "❯", + INFO: "ℹ", + TAB_LEFT: "⇤", + TAB_RIGHT: "⇥", + ESCAPE: "⎋", + BACKSPACE: "⌫", + PAGE_UP: "⇞", + PAGE_DOWN: "⇟", + ENTER: "↵", + SEARCH: "⌕" +}; +const win = { + ...main, + RADIO_ON: "(*)", + RADIO_OFF: "( )", + TICK: "√", + CROSS: "×", + POINTER_SMALL: "»" +}; +/** Prompt icons. */ export const Figures = Deno.build.os === "windows" ? win : main; +const keyMap = { + up: "ARROW_UP", + down: "ARROW_DOWN", + left: "ARROW_LEFT", + right: "ARROW_RIGHT", + pageup: "PAGE_UP", + pagedown: "PAGE_DOWN", + tab: "TAB_RIGHT", + enter: "ENTER", + return: "ENTER" +}; +export function getFiguresByKeys(keys) { + const figures = []; + for (const key of keys){ + const figure = Figures[keyMap[key]] ?? key; + if (!figures.includes(figure)) { + figures.push(figure); + } + } + return figures; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvcHJvbXB0L2ZpZ3VyZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgbWFpbiA9IHtcbiAgQVJST1dfVVA6IFwi4oaRXCIsXG4gIEFSUk9XX0RPV046IFwi4oaTXCIsXG4gIEFSUk9XX0xFRlQ6IFwi4oaQXCIsXG4gIEFSUk9XX1JJR0hUOiBcIuKGklwiLFxuICBBUlJPV19VUF9MRUZUOiBcIuKGllwiLFxuICBBUlJPV19VUF9SSUdIVDogXCLihpdcIixcbiAgQVJST1dfRE9XTl9SSUdIVDogXCLihphcIixcbiAgQVJST1dfRE9XTl9MRUZUOiBcIuKGmVwiLFxuICBSQURJT19PTjogXCLil4lcIixcbiAgUkFESU9fT0ZGOiBcIuKXr1wiLFxuICBUSUNLOiBcIuKclFwiLFxuICBDUk9TUzogXCLinJhcIixcbiAgRUxMSVBTSVM6IFwi4oCmXCIsXG4gIFBPSU5URVJfU01BTEw6IFwi4oC6XCIsXG4gIExJTkU6IFwi4pSAXCIsXG4gIFBPSU5URVI6IFwi4p2vXCIsXG4gIElORk86IFwi4oS5XCIsXG4gIFRBQl9MRUZUOiBcIuKHpFwiLFxuICBUQUJfUklHSFQ6IFwi4oelXCIsXG4gIEVTQ0FQRTogXCLijotcIixcbiAgQkFDS1NQQUNFOiBcIuKMq1wiLFxuICBQQUdFX1VQOiBcIuKHnlwiLFxuICBQQUdFX0RPV046IFwi4oefXCIsXG4gIEVOVEVSOiBcIuKGtVwiLFxuICBTRUFSQ0g6IFwi4oyVXCIsXG59O1xuXG5jb25zdCB3aW4gPSB7XG4gIC4uLm1haW4sXG4gIFJBRElPX09OOiBcIigqKVwiLFxuICBSQURJT19PRkY6IFwiKCApXCIsXG4gIFRJQ0s6IFwi4oiaXCIsXG4gIENST1NTOiBcIsOXXCIsXG4gIFBPSU5URVJfU01BTEw6IFwiwrtcIixcbn07XG5cbi8qKiBQcm9tcHQgaWNvbnMuICovXG5leHBvcnQgY29uc3QgRmlndXJlcyA9IERlbm8uYnVpbGQub3MgPT09IFwid2luZG93c1wiID8gd2luIDogbWFpbjtcblxuY29uc3Qga2V5TWFwOiBSZWNvcmQ8c3RyaW5nLCBrZXlvZiB0eXBlb2YgRmlndXJlcz4gPSB7XG4gIHVwOiBcIkFSUk9XX1VQXCIsXG4gIGRvd246IFwiQVJST1dfRE9XTlwiLFxuICBsZWZ0OiBcIkFSUk9XX0xFRlRcIixcbiAgcmlnaHQ6IFwiQVJST1dfUklHSFRcIixcbiAgcGFnZXVwOiBcIlBBR0VfVVBcIixcbiAgcGFnZWRvd246IFwiUEFHRV9ET1dOXCIsXG4gIHRhYjogXCJUQUJfUklHSFRcIixcbiAgZW50ZXI6IFwiRU5URVJcIixcbiAgcmV0dXJuOiBcIkVOVEVSXCIsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlndXJlc0J5S2V5cyhrZXlzOiBBcnJheTxzdHJpbmc+KTogQXJyYXk8c3RyaW5nPiB7XG4gIGNvbnN0IGZpZ3VyZXM6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgIGNvbnN0IGZpZ3VyZSA9IEZpZ3VyZXNba2V5TWFwW2tleV1dID8/IGtleTtcbiAgICBpZiAoIWZpZ3VyZXMuaW5jbHVkZXMoZmlndXJlKSkge1xuICAgICAgZmlndXJlcy5wdXNoKGZpZ3VyZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBmaWd1cmVzO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTztFQUNYLFVBQVU7RUFDVixZQUFZO0VBQ1osWUFBWTtFQUNaLGFBQWE7RUFDYixlQUFlO0VBQ2YsZ0JBQWdCO0VBQ2hCLGtCQUFrQjtFQUNsQixpQkFBaUI7RUFDakIsVUFBVTtFQUNWLFdBQVc7RUFDWCxNQUFNO0VBQ04sT0FBTztFQUNQLFVBQVU7RUFDVixlQUFlO0VBQ2YsTUFBTTtFQUNOLFNBQVM7RUFDVCxNQUFNO0VBQ04sVUFBVTtFQUNWLFdBQVc7RUFDWCxRQUFRO0VBQ1IsV0FBVztFQUNYLFNBQVM7RUFDVCxXQUFXO0VBQ1gsT0FBTztFQUNQLFFBQVE7QUFDVjtBQUVBLE1BQU0sTUFBTTtFQUNWLEdBQUcsSUFBSTtFQUNQLFVBQVU7RUFDVixXQUFXO0VBQ1gsTUFBTTtFQUNOLE9BQU87RUFDUCxlQUFlO0FBQ2pCO0FBRUEsa0JBQWtCLEdBQ2xCLE9BQU8sTUFBTSxVQUFVLEtBQUssS0FBSyxDQUFDLEVBQUUsS0FBSyxZQUFZLE1BQU0sS0FBSztBQUVoRSxNQUFNLFNBQStDO0VBQ25ELElBQUk7RUFDSixNQUFNO0VBQ04sTUFBTTtFQUNOLE9BQU87RUFDUCxRQUFRO0VBQ1IsVUFBVTtFQUNWLEtBQUs7RUFDTCxPQUFPO0VBQ1AsUUFBUTtBQUNWO0FBRUEsT0FBTyxTQUFTLGlCQUFpQixJQUFtQjtFQUNsRCxNQUFNLFVBQXlCLEVBQUU7RUFDakMsS0FBSyxNQUFNLE9BQU8sS0FBTTtJQUN0QixNQUFNLFNBQVMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSTtJQUN2QyxJQUFJLENBQUMsUUFBUSxRQUFRLENBQUMsU0FBUztNQUM3QixRQUFRLElBQUksQ0FBQztJQUNmO0VBQ0Y7RUFDQSxPQUFPO0FBQ1QifQ== +// denoCacheMetadata=6840573145702892211,7731457063591829147
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/823a9022143dd0e31c2040be602112921aa9567ba2b7e55126661516f8214ea5.js b/vendor/gen/https/deno.land/823a9022143dd0e31c2040be602112921aa9567ba2b7e55126661516f8214ea5.js new file mode 100644 index 0000000..6428483 --- /dev/null +++ b/vendor/gen/https/deno.land/823a9022143dd0e31c2040be602112921aa9567ba2b7e55126661516f8214ea5.js @@ -0,0 +1,38 @@ +export default function() { + return (env)=>{ + env.tags.push(layoutTag); + }; +} +function layoutTag(env, code, output, tokens) { + if (!code.startsWith("layout ")) { + return; + } + const match = code?.match(/^layout\s+([^{]+|`[^`]+`)+(?:\{([\s|\S]*)\})?$/); + if (!match) { + throw new Error(`Invalid wrap: ${code}`); + } + const [_, file, data] = match; + const varname = output.startsWith("__layout") ? output + "_layout" : "__layout"; + const compiled = []; + const compiledFilters = env.compileFilters(tokens, varname); + compiled.push("{"); + compiled.push(`let ${varname} = "";`); + compiled.push(...env.compileTokens(tokens, varname, [ + "/layout" + ])); + if (tokens.length && (tokens[0][0] !== "tag" || tokens[0][1] !== "/layout")) { + throw new Error(`Missing closing tag for layout tag: ${code}`); + } + tokens.shift(); + compiled.push(`${varname} = ${compiledFilters};`); + const { dataVarname } = env.options; + compiled.push(`const __tmp = await __env.run(${file}, + {...${dataVarname}${data ? `, ${data}` : ""}, content: ${env.compileFilters(tokens, varname)}}, + __file + ); + ${output} += __tmp.content;`); + compiled.push("}"); + return compiled.join("\n"); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9wbHVnaW5zL2xheW91dC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFRva2VuIH0gZnJvbSBcIi4uL3NyYy90b2tlbml6ZXIudHNcIjtcbmltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnQsIFBsdWdpbiB9IGZyb20gXCIuLi9zcmMvZW52aXJvbm1lbnQudHNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCk6IFBsdWdpbiB7XG4gIHJldHVybiAoZW52OiBFbnZpcm9ubWVudCkgPT4ge1xuICAgIGVudi50YWdzLnB1c2gobGF5b3V0VGFnKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gbGF5b3V0VGFnKFxuICBlbnY6IEVudmlyb25tZW50LFxuICBjb2RlOiBzdHJpbmcsXG4gIG91dHB1dDogc3RyaW5nLFxuICB0b2tlbnM6IFRva2VuW10sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIWNvZGUuc3RhcnRzV2l0aChcImxheW91dCBcIikpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBtYXRjaCA9IGNvZGU/Lm1hdGNoKFxuICAgIC9ebGF5b3V0XFxzKyhbXntdK3xgW15gXStgKSsoPzpcXHsoW1xcc3xcXFNdKilcXH0pPyQvLFxuICApO1xuXG4gIGlmICghbWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgd3JhcDogJHtjb2RlfWApO1xuICB9XG5cbiAgY29uc3QgW18sIGZpbGUsIGRhdGFdID0gbWF0Y2g7XG5cbiAgY29uc3QgdmFybmFtZSA9IG91dHB1dC5zdGFydHNXaXRoKFwiX19sYXlvdXRcIilcbiAgICA/IG91dHB1dCArIFwiX2xheW91dFwiXG4gICAgOiBcIl9fbGF5b3V0XCI7XG5cbiAgY29uc3QgY29tcGlsZWQ6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IGNvbXBpbGVkRmlsdGVycyA9IGVudi5jb21waWxlRmlsdGVycyh0b2tlbnMsIHZhcm5hbWUpO1xuXG4gIGNvbXBpbGVkLnB1c2goXCJ7XCIpO1xuICBjb21waWxlZC5wdXNoKGBsZXQgJHt2YXJuYW1lfSA9IFwiXCI7YCk7XG4gIGNvbXBpbGVkLnB1c2goLi4uZW52LmNvbXBpbGVUb2tlbnModG9rZW5zLCB2YXJuYW1lLCBbXCIvbGF5b3V0XCJdKSk7XG5cbiAgaWYgKHRva2Vucy5sZW5ndGggJiYgKHRva2Vuc1swXVswXSAhPT0gXCJ0YWdcIiB8fCB0b2tlbnNbMF1bMV0gIT09IFwiL2xheW91dFwiKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyBjbG9zaW5nIHRhZyBmb3IgbGF5b3V0IHRhZzogJHtjb2RlfWApO1xuICB9XG5cbiAgdG9rZW5zLnNoaWZ0KCk7XG5cbiAgY29tcGlsZWQucHVzaChgJHt2YXJuYW1lfSA9ICR7Y29tcGlsZWRGaWx0ZXJzfTtgKTtcbiAgY29uc3QgeyBkYXRhVmFybmFtZSB9ID0gZW52Lm9wdGlvbnM7XG5cbiAgY29tcGlsZWQucHVzaChcbiAgICBgY29uc3QgX190bXAgPSBhd2FpdCBfX2Vudi5ydW4oJHtmaWxlfSxcbiAgICAgIHsuLi4ke2RhdGFWYXJuYW1lfSR7ZGF0YSA/IGAsICR7ZGF0YX1gIDogXCJcIn0sIGNvbnRlbnQ6ICR7XG4gICAgICBlbnYuY29tcGlsZUZpbHRlcnModG9rZW5zLCB2YXJuYW1lKVxuICAgIH19LFxuICAgICAgX19maWxlXG4gICAgKTtcbiAgICAke291dHB1dH0gKz0gX190bXAuY29udGVudDtgLFxuICApO1xuXG4gIGNvbXBpbGVkLnB1c2goXCJ9XCIpO1xuICByZXR1cm4gY29tcGlsZWQuam9pbihcIlxcblwiKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxlQUFlO0VBQ2IsT0FBTyxDQUFDO0lBQ04sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO0VBQ2hCO0FBQ0Y7QUFFQSxTQUFTLFVBQ1AsR0FBZ0IsRUFDaEIsSUFBWSxFQUNaLE1BQWMsRUFDZCxNQUFlO0VBRWYsSUFBSSxDQUFDLEtBQUssVUFBVSxDQUFDLFlBQVk7SUFDL0I7RUFDRjtFQUVBLE1BQU0sUUFBUSxNQUFNLE1BQ2xCO0VBR0YsSUFBSSxDQUFDLE9BQU87SUFDVixNQUFNLElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRSxNQUFNO0VBQ3pDO0VBRUEsTUFBTSxDQUFDLEdBQUcsTUFBTSxLQUFLLEdBQUc7RUFFeEIsTUFBTSxVQUFVLE9BQU8sVUFBVSxDQUFDLGNBQzlCLFNBQVMsWUFDVDtFQUVKLE1BQU0sV0FBcUIsRUFBRTtFQUM3QixNQUFNLGtCQUFrQixJQUFJLGNBQWMsQ0FBQyxRQUFRO0VBRW5ELFNBQVMsSUFBSSxDQUFDO0VBQ2QsU0FBUyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxNQUFNLENBQUM7RUFDcEMsU0FBUyxJQUFJLElBQUksSUFBSSxhQUFhLENBQUMsUUFBUSxTQUFTO0lBQUM7R0FBVTtFQUUvRCxJQUFJLE9BQU8sTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssU0FBUyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxTQUFTLEdBQUc7SUFDM0UsTUFBTSxJQUFJLE1BQU0sQ0FBQyxvQ0FBb0MsRUFBRSxNQUFNO0VBQy9EO0VBRUEsT0FBTyxLQUFLO0VBRVosU0FBUyxJQUFJLENBQUMsR0FBRyxRQUFRLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0VBQ2hELE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLE9BQU87RUFFbkMsU0FBUyxJQUFJLENBQ1gsQ0FBQyw4QkFBOEIsRUFBRSxLQUFLO1VBQ2hDLEVBQUUsY0FBYyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sR0FBRyxHQUFHLFdBQVcsRUFDdkQsSUFBSSxjQUFjLENBQUMsUUFBUSxTQUM1Qjs7O0lBR0QsRUFBRSxPQUFPLGtCQUFrQixDQUFDO0VBRzlCLFNBQVMsSUFBSSxDQUFDO0VBQ2QsT0FBTyxTQUFTLElBQUksQ0FBQztBQUN2QiJ9 +// denoCacheMetadata=1325891884776050806,2514876098733503599
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/82be6b592ac37957d410393f36f1be296af35cb697766e1f81c60de69db56891.js b/vendor/gen/https/deno.land/82be6b592ac37957d410393f36f1be296af35cb697766e1f81c60de69db56891.js new file mode 100644 index 0000000..a7bc1f6 --- /dev/null +++ b/vendor/gen/https/deno.land/82be6b592ac37957d410393f36f1be296af35cb697766e1f81c60de69db56891.js @@ -0,0 +1,29 @@ +export function distance(a, b) { + if (a.length == 0) { + return b.length; + } + if (b.length == 0) { + return a.length; + } + const matrix = []; + for(let i = 0; i <= b.length; i++){ + matrix[i] = [ + i + ]; + } + for(let j = 0; j <= a.length; j++){ + matrix[0][j] = j; + } + for(let i = 1; i <= b.length; i++){ + for(let j = 1; j <= a.length; j++){ + if (b.charAt(i - 1) == a.charAt(j - 1)) { + matrix[i][j] = matrix[i - 1][j - 1]; + } else { + matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, Math.min(matrix[i][j - 1] + 1, matrix[i - 1][j] + 1)); + } + } + } + return matrix[b.length][a.length]; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvX3V0aWxzL2Rpc3RhbmNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZShhOiBzdHJpbmcsIGI6IHN0cmluZyk6IG51bWJlciB7XG4gIGlmIChhLmxlbmd0aCA9PSAwKSB7XG4gICAgcmV0dXJuIGIubGVuZ3RoO1xuICB9XG4gIGlmIChiLmxlbmd0aCA9PSAwKSB7XG4gICAgcmV0dXJuIGEubGVuZ3RoO1xuICB9XG4gIGNvbnN0IG1hdHJpeCA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8PSBiLmxlbmd0aDsgaSsrKSB7XG4gICAgbWF0cml4W2ldID0gW2ldO1xuICB9XG4gIGZvciAobGV0IGogPSAwOyBqIDw9IGEubGVuZ3RoOyBqKyspIHtcbiAgICBtYXRyaXhbMF1bal0gPSBqO1xuICB9XG4gIGZvciAobGV0IGkgPSAxOyBpIDw9IGIubGVuZ3RoOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMTsgaiA8PSBhLmxlbmd0aDsgaisrKSB7XG4gICAgICBpZiAoYi5jaGFyQXQoaSAtIDEpID09IGEuY2hhckF0KGogLSAxKSkge1xuICAgICAgICBtYXRyaXhbaV1bal0gPSBtYXRyaXhbaSAtIDFdW2ogLSAxXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hdHJpeFtpXVtqXSA9IE1hdGgubWluKFxuICAgICAgICAgIG1hdHJpeFtpIC0gMV1baiAtIDFdICsgMSxcbiAgICAgICAgICBNYXRoLm1pbihtYXRyaXhbaV1baiAtIDFdICsgMSwgbWF0cml4W2kgLSAxXVtqXSArIDEpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gbWF0cml4W2IubGVuZ3RoXVthLmxlbmd0aF07XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxTQUFTLFNBQVMsQ0FBUyxFQUFFLENBQVM7RUFDM0MsSUFBSSxFQUFFLE1BQU0sSUFBSSxHQUFHO0lBQ2pCLE9BQU8sRUFBRSxNQUFNO0VBQ2pCO0VBQ0EsSUFBSSxFQUFFLE1BQU0sSUFBSSxHQUFHO0lBQ2pCLE9BQU8sRUFBRSxNQUFNO0VBQ2pCO0VBQ0EsTUFBTSxTQUFTLEVBQUU7RUFDakIsSUFBSyxJQUFJLElBQUksR0FBRyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUs7SUFDbEMsTUFBTSxDQUFDLEVBQUUsR0FBRztNQUFDO0tBQUU7RUFDakI7RUFDQSxJQUFLLElBQUksSUFBSSxHQUFHLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSztJQUNsQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRztFQUNqQjtFQUNBLElBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFLO0lBQ2xDLElBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFLO01BQ2xDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSTtRQUN0QyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFO01BQ3JDLE9BQU87UUFDTCxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLEdBQUcsQ0FDckIsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxHQUFHLEdBQ3ZCLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHO01BRXREO0lBQ0Y7RUFDRjtFQUNBLE9BQU8sTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUM7QUFDbkMifQ== +// denoCacheMetadata=15586839186454948210,9092579433090902087
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/8561c6478eca43443120a3e3813a65d7e221d72be0364620cc7930ce341a1319.js b/vendor/gen/https/deno.land/8561c6478eca43443120a3e3813a65d7e221d72be0364620cc7930ce341a1319.js new file mode 100644 index 0000000..bf88381 --- /dev/null +++ b/vendor/gen/https/deno.land/8561c6478eca43443120a3e3813a65d7e221d72be0364620cc7930ce341a1319.js @@ -0,0 +1,213 @@ +import { KeyMap, KeyMapCtrl, KeyMapShift, SpecialKeyMap } from "./key_codes.ts"; +// https://en.wikipedia.org/wiki/ANSI_escape_code +// https://github.com/nodejs/node/blob/v13.13.0/lib/internal/readline/utils.js +const kUTF16SurrogateThreshold = 0x10000; // 2 ** 16 +const kEscape = "\x1b"; +/** + * Parse ansi escape sequence. + * @param data Ansi escape sequence. + * ``` + * parse("\x04\x18"); + * ``` + * ``` + * [ + * KeyCode { name: "d", sequence: "\x04", ctrl: true, meta: false, shift: false }, + * KeyCode { name: "x", sequence: "\x18", ctrl: true, meta: false, shift: false }, + * ] + * ``` + */ export function parse(data) { + /* + * Some patterns seen in terminal key escape codes, derived from combos seen + * at http://www.midnight-commander.org/browser/lib/tty/key.c + * + * ESC letter + * ESC [ letter + * ESC [ modifier letter + * ESC [ 1 ; modifier letter + * ESC [ num char + * ESC [ num ; modifier char + * ESC O letter + * ESC O modifier letter + * ESC O 1 ; modifier letter + * ESC N letter + * ESC [ [ num ; modifier char + * ESC [ [ 1 ; modifier letter + * ESC ESC [ num char + * ESC ESC O letter + * + * - char is usually ~ but $ and ^ also happen with rxvt + * - modifier is 1 + + * (shift * 1) + + * (left_alt * 2) + + * (ctrl * 4) + + * (right_alt * 8) + * - two leading ESCs apparently mean the same as one leading ESC + */ let index = -1; + const keys = []; + const input = data instanceof Uint8Array ? new TextDecoder().decode(data) : data; + const hasNext = ()=>input.length - 1 >= index + 1; + const next = ()=>input[++index]; + parseNext(); + return keys; + function parseNext() { + let ch = next(); + let s = ch; + let escaped = false; + const key = { + name: undefined, + char: undefined, + sequence: undefined, + code: undefined, + ctrl: false, + meta: false, + shift: false + }; + if (ch === kEscape && hasNext()) { + escaped = true; + s += ch = next(); + if (ch === kEscape) { + s += ch = next(); + } + } + if (escaped && (ch === "O" || ch === "[")) { + // ANSI escape sequence + let code = ch; + let modifier = 0; + if (ch === "O") { + // ESC O letter + // ESC O modifier letter + s += ch = next(); + if (ch >= "0" && ch <= "9") { + modifier = (Number(ch) >> 0) - 1; + s += ch = next(); + } + code += ch; + } else if (ch === "[") { + // ESC [ letter + // ESC [ modifier letter + // ESC [ [ modifier letter + // ESC [ [ num char + s += ch = next(); + if (ch === "[") { + // \x1b[[A + // ^--- escape codes might have a second bracket + code += ch; + s += ch = next(); + } + /* + * Here and later we try to buffer just enough data to get + * a complete ascii sequence. + * + * We have basically two classes of ascii characters to process: + * + * 1. `\x1b[24;5~` should be parsed as { code: '[24~', modifier: 5 } + * + * This particular example is featuring Ctrl+F12 in xterm. + * + * - `;5` part is optional, e.g. it could be `\x1b[24~` + * - first part can contain one or two digits + * + * So the generic regexp is like /^\d\d?(;\d)?[~^$]$/ + * + * 2. `\x1b[1;5H` should be parsed as { code: '[H', modifier: 5 } + * + * This particular example is featuring Ctrl+Home in xterm. + * + * - `1;5` part is optional, e.g. it could be `\x1b[H` + * - `1;` part is optional, e.g. it could be `\x1b[5H` + * + * So the generic regexp is like /^((\d;)?\d)?[A-Za-z]$/ + */ const cmdStart = s.length - 1; + // Skip one or two leading digits + if (ch >= "0" && ch <= "9") { + s += ch = next(); + if (ch >= "0" && ch <= "9") { + s += ch = next(); + } + } + // skip modifier + if (ch === ";") { + s += ch = next(); + if (ch >= "0" && ch <= "9") { + s += next(); + } + } + /* + * We buffered enough data, now trying to extract code + * and modifier from it + */ const cmd = s.slice(cmdStart); + let match; + if (match = cmd.match(/^(\d\d?)(;(\d))?([~^$])$/)) { + code += match[1] + match[4]; + modifier = (Number(match[3]) || 1) - 1; + } else if (match = cmd.match(/^((\d;)?(\d))?([A-Za-z])$/)) { + code += match[4]; + modifier = (Number(match[3]) || 1) - 1; + } else { + code += cmd; + } + } + // Parse the key modifier + key.ctrl = !!(modifier & 4); + key.meta = !!(modifier & 10); + key.shift = !!(modifier & 1); + key.code = code; + // Parse the key itself + if (code in KeyMap) { + key.name = KeyMap[code]; + } else if (code in KeyMapShift) { + key.name = KeyMapShift[code]; + key.shift = true; + } else if (code in KeyMapCtrl) { + key.name = KeyMapCtrl[code]; + key.ctrl = true; + } else { + key.name = "undefined"; + } + } else if (ch in SpecialKeyMap) { + key.name = SpecialKeyMap[ch]; + key.meta = escaped; + if (key.name === "space") { + key.char = ch; + } + } else if (!escaped && ch <= "\x1a") { + // ctrl+letter + key.name = String.fromCharCode(ch.charCodeAt(0) + "a".charCodeAt(0) - 1); + key.ctrl = true; + key.char = key.name; + } else if (/^[0-9A-Za-z]$/.test(ch)) { + // Letter, number, shift+letter + key.name = ch.toLowerCase(); + key.shift = /^[A-Z]$/.test(ch); + key.meta = escaped; + key.char = ch; + } else if (escaped) { + // Escape sequence timeout + key.name = ch.length ? undefined : "escape"; + key.meta = true; + } else { + key.name = ch; + key.char = ch; + } + key.sequence = s; + if (s.length !== 0 && (key.name !== undefined || escaped) || charLengthAt(s, 0) === s.length) { + keys.push(key); + } else { + throw new Error("Unrecognized or broken escape sequence"); + } + if (hasNext()) { + parseNext(); + } + } +} +function charLengthAt(str, i) { + const pos = str.codePointAt(i); + if (typeof pos === "undefined") { + // Pretend to move to the right. This is necessary to autocomplete while + // moving to the right. + return 1; + } + return pos >= kUTF16SurrogateThreshold ? 2 : 1; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1Ljcva2V5Y29kZS9rZXlfY29kZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLZXlNYXAsIEtleU1hcEN0cmwsIEtleU1hcFNoaWZ0LCBTcGVjaWFsS2V5TWFwIH0gZnJvbSBcIi4va2V5X2NvZGVzLnRzXCI7XG5cbi8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FOU0lfZXNjYXBlX2NvZGVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL3YxMy4xMy4wL2xpYi9pbnRlcm5hbC9yZWFkbGluZS91dGlscy5qc1xuXG5jb25zdCBrVVRGMTZTdXJyb2dhdGVUaHJlc2hvbGQgPSAweDEwMDAwOyAvLyAyICoqIDE2XG5jb25zdCBrRXNjYXBlID0gXCJcXHgxYlwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleUNvZGUge1xuICBuYW1lPzogc3RyaW5nO1xuICBzZXF1ZW5jZT86IHN0cmluZztcbiAgY29kZT86IHN0cmluZztcbiAgY3RybD86IGJvb2xlYW47XG4gIG1ldGE/OiBib29sZWFuO1xuICBzaGlmdD86IGJvb2xlYW47XG4gIGNoYXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyc2UgYW5zaSBlc2NhcGUgc2VxdWVuY2UuXG4gKiBAcGFyYW0gZGF0YSBBbnNpIGVzY2FwZSBzZXF1ZW5jZS5cbiAqIGBgYFxuICogcGFyc2UoXCJcXHgwNFxceDE4XCIpO1xuICogYGBgXG4gKiBgYGBcbiAqIFtcbiAqICAgS2V5Q29kZSB7IG5hbWU6IFwiZFwiLCBzZXF1ZW5jZTogXCJcXHgwNFwiLCBjdHJsOiB0cnVlLCBtZXRhOiBmYWxzZSwgc2hpZnQ6IGZhbHNlIH0sXG4gKiAgIEtleUNvZGUgeyBuYW1lOiBcInhcIiwgc2VxdWVuY2U6IFwiXFx4MThcIiwgY3RybDogdHJ1ZSwgbWV0YTogZmFsc2UsIHNoaWZ0OiBmYWxzZSB9LFxuICogXVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZShkYXRhOiBVaW50OEFycmF5IHwgc3RyaW5nKTogS2V5Q29kZVtdIHtcbiAgLypcbiAgICogU29tZSBwYXR0ZXJucyBzZWVuIGluIHRlcm1pbmFsIGtleSBlc2NhcGUgY29kZXMsIGRlcml2ZWQgZnJvbSBjb21ib3Mgc2VlblxuICAgKiBhdCBodHRwOi8vd3d3Lm1pZG5pZ2h0LWNvbW1hbmRlci5vcmcvYnJvd3Nlci9saWIvdHR5L2tleS5jXG4gICAqXG4gICAqIEVTQyBsZXR0ZXJcbiAgICogRVNDIFsgbGV0dGVyXG4gICAqIEVTQyBbIG1vZGlmaWVyIGxldHRlclxuICAgKiBFU0MgWyAxIDsgbW9kaWZpZXIgbGV0dGVyXG4gICAqIEVTQyBbIG51bSBjaGFyXG4gICAqIEVTQyBbIG51bSA7IG1vZGlmaWVyIGNoYXJcbiAgICogRVNDIE8gbGV0dGVyXG4gICAqIEVTQyBPIG1vZGlmaWVyIGxldHRlclxuICAgKiBFU0MgTyAxIDsgbW9kaWZpZXIgbGV0dGVyXG4gICAqIEVTQyBOIGxldHRlclxuICAgKiBFU0MgWyBbIG51bSA7IG1vZGlmaWVyIGNoYXJcbiAgICogRVNDIFsgWyAxIDsgbW9kaWZpZXIgbGV0dGVyXG4gICAqIEVTQyBFU0MgWyBudW0gY2hhclxuICAgKiBFU0MgRVNDIE8gbGV0dGVyXG4gICAqXG4gICAqIC0gY2hhciBpcyB1c3VhbGx5IH4gYnV0ICQgYW5kIF4gYWxzbyBoYXBwZW4gd2l0aCByeHZ0XG4gICAqIC0gbW9kaWZpZXIgaXMgMSArXG4gICAqICAgICAgICAgICAgICAgKHNoaWZ0ICAgICAqIDEpICtcbiAgICogICAgICAgICAgICAgICAobGVmdF9hbHQgICogMikgK1xuICAgKiAgICAgICAgICAgICAgIChjdHJsICAgICAgKiA0KSArXG4gICAqICAgICAgICAgICAgICAgKHJpZ2h0X2FsdCAqIDgpXG4gICAqIC0gdHdvIGxlYWRpbmcgRVNDcyBhcHBhcmVudGx5IG1lYW4gdGhlIHNhbWUgYXMgb25lIGxlYWRpbmcgRVNDXG4gICAqL1xuICBsZXQgaW5kZXggPSAtMTtcbiAgY29uc3Qga2V5czogS2V5Q29kZVtdID0gW107XG4gIGNvbnN0IGlucHV0OiBzdHJpbmcgPSBkYXRhIGluc3RhbmNlb2YgVWludDhBcnJheVxuICAgID8gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGRhdGEpXG4gICAgOiBkYXRhO1xuXG4gIGNvbnN0IGhhc05leHQgPSAoKSA9PiBpbnB1dC5sZW5ndGggLSAxID49IGluZGV4ICsgMTtcbiAgY29uc3QgbmV4dCA9ICgpID0+IGlucHV0WysraW5kZXhdO1xuXG4gIHBhcnNlTmV4dCgpO1xuXG4gIHJldHVybiBrZXlzO1xuXG4gIGZ1bmN0aW9uIHBhcnNlTmV4dCgpIHtcbiAgICBsZXQgY2g6IHN0cmluZyA9IG5leHQoKTtcbiAgICBsZXQgczogc3RyaW5nID0gY2g7XG4gICAgbGV0IGVzY2FwZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGtleTogS2V5Q29kZSA9IHtcbiAgICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICAgIGNoYXI6IHVuZGVmaW5lZCxcbiAgICAgIHNlcXVlbmNlOiB1bmRlZmluZWQsXG4gICAgICBjb2RlOiB1bmRlZmluZWQsXG4gICAgICBjdHJsOiBmYWxzZSxcbiAgICAgIG1ldGE6IGZhbHNlLFxuICAgICAgc2hpZnQ6IGZhbHNlLFxuICAgIH07XG5cbiAgICBpZiAoY2ggPT09IGtFc2NhcGUgJiYgaGFzTmV4dCgpKSB7XG4gICAgICBlc2NhcGVkID0gdHJ1ZTtcbiAgICAgIHMgKz0gY2ggPSBuZXh0KCk7XG5cbiAgICAgIGlmIChjaCA9PT0ga0VzY2FwZSkge1xuICAgICAgICBzICs9IGNoID0gbmV4dCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlc2NhcGVkICYmIChjaCA9PT0gXCJPXCIgfHwgY2ggPT09IFwiW1wiKSkge1xuICAgICAgLy8gQU5TSSBlc2NhcGUgc2VxdWVuY2VcbiAgICAgIGxldCBjb2RlOiBzdHJpbmcgPSBjaDtcbiAgICAgIGxldCBtb2RpZmllciA9IDA7XG5cbiAgICAgIGlmIChjaCA9PT0gXCJPXCIpIHtcbiAgICAgICAgLy8gRVNDIE8gbGV0dGVyXG4gICAgICAgIC8vIEVTQyBPIG1vZGlmaWVyIGxldHRlclxuICAgICAgICBzICs9IGNoID0gbmV4dCgpO1xuXG4gICAgICAgIGlmIChjaCA+PSBcIjBcIiAmJiBjaCA8PSBcIjlcIikge1xuICAgICAgICAgIG1vZGlmaWVyID0gKE51bWJlcihjaCkgPj4gMCkgLSAxO1xuICAgICAgICAgIHMgKz0gY2ggPSBuZXh0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb2RlICs9IGNoO1xuICAgICAgfSBlbHNlIGlmIChjaCA9PT0gXCJbXCIpIHtcbiAgICAgICAgLy8gRVNDIFsgbGV0dGVyXG4gICAgICAgIC8vIEVTQyBbIG1vZGlmaWVyIGxldHRlclxuICAgICAgICAvLyBFU0MgWyBbIG1vZGlmaWVyIGxldHRlclxuICAgICAgICAvLyBFU0MgWyBbIG51bSBjaGFyXG4gICAgICAgIHMgKz0gY2ggPSBuZXh0KCk7XG5cbiAgICAgICAgaWYgKGNoID09PSBcIltcIikge1xuICAgICAgICAgIC8vIFxceDFiW1tBXG4gICAgICAgICAgLy8gICAgICBeLS0tIGVzY2FwZSBjb2RlcyBtaWdodCBoYXZlIGEgc2Vjb25kIGJyYWNrZXRcbiAgICAgICAgICBjb2RlICs9IGNoO1xuICAgICAgICAgIHMgKz0gY2ggPSBuZXh0KCk7XG4gICAgICAgIH1cblxuICAgICAgICAvKlxuICAgICAgICAgKiBIZXJlIGFuZCBsYXRlciB3ZSB0cnkgdG8gYnVmZmVyIGp1c3QgZW5vdWdoIGRhdGEgdG8gZ2V0XG4gICAgICAgICAqIGEgY29tcGxldGUgYXNjaWkgc2VxdWVuY2UuXG4gICAgICAgICAqXG4gICAgICAgICAqIFdlIGhhdmUgYmFzaWNhbGx5IHR3byBjbGFzc2VzIG9mIGFzY2lpIGNoYXJhY3RlcnMgdG8gcHJvY2VzczpcbiAgICAgICAgICpcbiAgICAgICAgICogMS4gYFxceDFiWzI0OzV+YCBzaG91bGQgYmUgcGFyc2VkIGFzIHsgY29kZTogJ1syNH4nLCBtb2RpZmllcjogNSB9XG4gICAgICAgICAqXG4gICAgICAgICAqIFRoaXMgcGFydGljdWxhciBleGFtcGxlIGlzIGZlYXR1cmluZyBDdHJsK0YxMiBpbiB4dGVybS5cbiAgICAgICAgICpcbiAgICAgICAgICogIC0gYDs1YCBwYXJ0IGlzIG9wdGlvbmFsLCBlLmcuIGl0IGNvdWxkIGJlIGBcXHgxYlsyNH5gXG4gICAgICAgICAqICAtIGZpcnN0IHBhcnQgY2FuIGNvbnRhaW4gb25lIG9yIHR3byBkaWdpdHNcbiAgICAgICAgICpcbiAgICAgICAgICogU28gdGhlIGdlbmVyaWMgcmVnZXhwIGlzIGxpa2UgL15cXGRcXGQ/KDtcXGQpP1t+XiRdJC9cbiAgICAgICAgICpcbiAgICAgICAgICogMi4gYFxceDFiWzE7NUhgIHNob3VsZCBiZSBwYXJzZWQgYXMgeyBjb2RlOiAnW0gnLCBtb2RpZmllcjogNSB9XG4gICAgICAgICAqXG4gICAgICAgICAqIFRoaXMgcGFydGljdWxhciBleGFtcGxlIGlzIGZlYXR1cmluZyBDdHJsK0hvbWUgaW4geHRlcm0uXG4gICAgICAgICAqXG4gICAgICAgICAqICAtIGAxOzVgIHBhcnQgaXMgb3B0aW9uYWwsIGUuZy4gaXQgY291bGQgYmUgYFxceDFiW0hgXG4gICAgICAgICAqICAtIGAxO2AgcGFydCBpcyBvcHRpb25hbCwgZS5nLiBpdCBjb3VsZCBiZSBgXFx4MWJbNUhgXG4gICAgICAgICAqXG4gICAgICAgICAqIFNvIHRoZSBnZW5lcmljIHJlZ2V4cCBpcyBsaWtlIC9eKChcXGQ7KT9cXGQpP1tBLVphLXpdJC9cbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGNtZFN0YXJ0OiBudW1iZXIgPSBzLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgLy8gU2tpcCBvbmUgb3IgdHdvIGxlYWRpbmcgZGlnaXRzXG4gICAgICAgIGlmIChjaCA+PSBcIjBcIiAmJiBjaCA8PSBcIjlcIikge1xuICAgICAgICAgIHMgKz0gY2ggPSBuZXh0KCk7XG5cbiAgICAgICAgICBpZiAoY2ggPj0gXCIwXCIgJiYgY2ggPD0gXCI5XCIpIHtcbiAgICAgICAgICAgIHMgKz0gY2ggPSBuZXh0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2tpcCBtb2RpZmllclxuICAgICAgICBpZiAoY2ggPT09IFwiO1wiKSB7XG4gICAgICAgICAgcyArPSBjaCA9IG5leHQoKTtcblxuICAgICAgICAgIGlmIChjaCA+PSBcIjBcIiAmJiBjaCA8PSBcIjlcIikge1xuICAgICAgICAgICAgcyArPSBuZXh0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLypcbiAgICAgICAgICogV2UgYnVmZmVyZWQgZW5vdWdoIGRhdGEsIG5vdyB0cnlpbmcgdG8gZXh0cmFjdCBjb2RlXG4gICAgICAgICAqIGFuZCBtb2RpZmllciBmcm9tIGl0XG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBjbWQ6IHN0cmluZyA9IHMuc2xpY2UoY21kU3RhcnQpO1xuICAgICAgICBsZXQgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkgfCBudWxsO1xuXG4gICAgICAgIGlmICgobWF0Y2ggPSBjbWQubWF0Y2goL14oXFxkXFxkPykoOyhcXGQpKT8oW35eJF0pJC8pKSkge1xuICAgICAgICAgIGNvZGUgKz0gbWF0Y2hbMV0gKyBtYXRjaFs0XTtcbiAgICAgICAgICBtb2RpZmllciA9IChOdW1iZXIobWF0Y2hbM10pIHx8IDEpIC0gMTtcbiAgICAgICAgfSBlbHNlIGlmICgobWF0Y2ggPSBjbWQubWF0Y2goL14oKFxcZDspPyhcXGQpKT8oW0EtWmEtel0pJC8pKSkge1xuICAgICAgICAgIGNvZGUgKz0gbWF0Y2hbNF07XG4gICAgICAgICAgbW9kaWZpZXIgPSAoTnVtYmVyKG1hdGNoWzNdKSB8fCAxKSAtIDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29kZSArPSBjbWQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUGFyc2UgdGhlIGtleSBtb2RpZmllclxuICAgICAga2V5LmN0cmwgPSAhIShtb2RpZmllciAmIDQpO1xuICAgICAga2V5Lm1ldGEgPSAhIShtb2RpZmllciAmIDEwKTtcbiAgICAgIGtleS5zaGlmdCA9ICEhKG1vZGlmaWVyICYgMSk7XG4gICAgICBrZXkuY29kZSA9IGNvZGU7XG5cbiAgICAgIC8vIFBhcnNlIHRoZSBrZXkgaXRzZWxmXG4gICAgICBpZiAoY29kZSBpbiBLZXlNYXApIHtcbiAgICAgICAga2V5Lm5hbWUgPSBLZXlNYXBbY29kZV07XG4gICAgICB9IGVsc2UgaWYgKGNvZGUgaW4gS2V5TWFwU2hpZnQpIHtcbiAgICAgICAga2V5Lm5hbWUgPSBLZXlNYXBTaGlmdFtjb2RlXTtcbiAgICAgICAga2V5LnNoaWZ0ID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoY29kZSBpbiBLZXlNYXBDdHJsKSB7XG4gICAgICAgIGtleS5uYW1lID0gS2V5TWFwQ3RybFtjb2RlXTtcbiAgICAgICAga2V5LmN0cmwgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAga2V5Lm5hbWUgPSBcInVuZGVmaW5lZFwiO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2ggaW4gU3BlY2lhbEtleU1hcCkge1xuICAgICAga2V5Lm5hbWUgPSBTcGVjaWFsS2V5TWFwW2NoXTtcbiAgICAgIGtleS5tZXRhID0gZXNjYXBlZDtcblxuICAgICAgaWYgKGtleS5uYW1lID09PSBcInNwYWNlXCIpIHtcbiAgICAgICAga2V5LmNoYXIgPSBjaDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFlc2NhcGVkICYmIGNoIDw9IFwiXFx4MWFcIikge1xuICAgICAgLy8gY3RybCtsZXR0ZXJcbiAgICAgIGtleS5uYW1lID0gU3RyaW5nLmZyb21DaGFyQ29kZShcbiAgICAgICAgY2guY2hhckNvZGVBdCgwKSArIFwiYVwiLmNoYXJDb2RlQXQoMCkgLSAxLFxuICAgICAgKTtcbiAgICAgIGtleS5jdHJsID0gdHJ1ZTtcblxuICAgICAga2V5LmNoYXIgPSBrZXkubmFtZTtcbiAgICB9IGVsc2UgaWYgKC9eWzAtOUEtWmEtel0kLy50ZXN0KGNoKSkge1xuICAgICAgLy8gTGV0dGVyLCBudW1iZXIsIHNoaWZ0K2xldHRlclxuICAgICAga2V5Lm5hbWUgPSBjaC50b0xvd2VyQ2FzZSgpO1xuICAgICAga2V5LnNoaWZ0ID0gL15bQS1aXSQvLnRlc3QoY2gpO1xuICAgICAga2V5Lm1ldGEgPSBlc2NhcGVkO1xuICAgICAga2V5LmNoYXIgPSBjaDtcbiAgICB9IGVsc2UgaWYgKGVzY2FwZWQpIHtcbiAgICAgIC8vIEVzY2FwZSBzZXF1ZW5jZSB0aW1lb3V0XG4gICAgICBrZXkubmFtZSA9IGNoLmxlbmd0aCA/IHVuZGVmaW5lZCA6IFwiZXNjYXBlXCI7XG4gICAgICBrZXkubWV0YSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGtleS5uYW1lID0gY2g7XG4gICAgICBrZXkuY2hhciA9IGNoO1xuICAgIH1cblxuICAgIGtleS5zZXF1ZW5jZSA9IHM7XG5cbiAgICBpZiAoXG4gICAgICAocy5sZW5ndGggIT09IDAgJiYgKGtleS5uYW1lICE9PSB1bmRlZmluZWQgfHwgZXNjYXBlZCkpIHx8XG4gICAgICBjaGFyTGVuZ3RoQXQocywgMCkgPT09IHMubGVuZ3RoXG4gICAgKSB7XG4gICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIG9yIGJyb2tlbiBlc2NhcGUgc2VxdWVuY2VcIik7XG4gICAgfVxuXG4gICAgaWYgKGhhc05leHQoKSkge1xuICAgICAgcGFyc2VOZXh0KCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNoYXJMZW5ndGhBdChzdHI6IHN0cmluZywgaTogbnVtYmVyKTogbnVtYmVyIHtcbiAgY29uc3QgcG9zOiBudW1iZXIgfCB1bmRlZmluZWQgPSBzdHIuY29kZVBvaW50QXQoaSk7XG4gIGlmICh0eXBlb2YgcG9zID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgLy8gUHJldGVuZCB0byBtb3ZlIHRvIHRoZSByaWdodC4gVGhpcyBpcyBuZWNlc3NhcnkgdG8gYXV0b2NvbXBsZXRlIHdoaWxlXG4gICAgLy8gbW92aW5nIHRvIHRoZSByaWdodC5cbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gcG9zID49IGtVVEYxNlN1cnJvZ2F0ZVRocmVzaG9sZCA/IDIgOiAxO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsYUFBYSxRQUFRLGlCQUFpQjtBQUVoRixpREFBaUQ7QUFDakQsOEVBQThFO0FBRTlFLE1BQU0sMkJBQTJCLFNBQVMsVUFBVTtBQUNwRCxNQUFNLFVBQVU7QUFZaEI7Ozs7Ozs7Ozs7OztDQVlDLEdBQ0QsT0FBTyxTQUFTLE1BQU0sSUFBeUI7RUFDN0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJDLEdBQ0QsSUFBSSxRQUFRLENBQUM7RUFDYixNQUFNLE9BQWtCLEVBQUU7RUFDMUIsTUFBTSxRQUFnQixnQkFBZ0IsYUFDbEMsSUFBSSxjQUFjLE1BQU0sQ0FBQyxRQUN6QjtFQUVKLE1BQU0sVUFBVSxJQUFNLE1BQU0sTUFBTSxHQUFHLEtBQUssUUFBUTtFQUNsRCxNQUFNLE9BQU8sSUFBTSxLQUFLLENBQUMsRUFBRSxNQUFNO0VBRWpDO0VBRUEsT0FBTztFQUVQLFNBQVM7SUFDUCxJQUFJLEtBQWE7SUFDakIsSUFBSSxJQUFZO0lBQ2hCLElBQUksVUFBVTtJQUVkLE1BQU0sTUFBZTtNQUNuQixNQUFNO01BQ04sTUFBTTtNQUNOLFVBQVU7TUFDVixNQUFNO01BQ04sTUFBTTtNQUNOLE1BQU07TUFDTixPQUFPO0lBQ1Q7SUFFQSxJQUFJLE9BQU8sV0FBVyxXQUFXO01BQy9CLFVBQVU7TUFDVixLQUFLLEtBQUs7TUFFVixJQUFJLE9BQU8sU0FBUztRQUNsQixLQUFLLEtBQUs7TUFDWjtJQUNGO0lBRUEsSUFBSSxXQUFXLENBQUMsT0FBTyxPQUFPLE9BQU8sR0FB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 +// denoCacheMetadata=14702111650470027656,16162461279732150427
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/86998418cd1baf272ddca9e3c8b33b508e05b30a09f7ad3ca24152a0287bc2c4.js b/vendor/gen/https/deno.land/86998418cd1baf272ddca9e3c8b33b508e05b30a09f7ad3ca24152a0287bc2c4.js new file mode 100644 index 0000000..52873fc --- /dev/null +++ b/vendor/gen/https/deno.land/86998418cd1baf272ddca9e3c8b33b508e05b30a09f7ad3ca24152a0287bc2c4.js @@ -0,0 +1,51 @@ +import { matchExtension } from "./utils/path.ts"; +/** + * Class to store and run the (pre)processors + */ export default class Processors { + /** Processors and the assigned extensions */ processors = new Map(); + /** Loaded extensions cache */ loadedExtensions = new Set(); + /** Assign a processor to some extensions */ set(extensions, processor) { + if (Array.isArray(extensions)) { + extensions.forEach((extension)=>{ + if (extension.charAt(0) !== ".") { + throw new Error(`Invalid extension ${extension}. It must start with '.'`); + } + }); + } + this.processors.set(processor, extensions); + } + /** Return all extensions registered by this processor */ get extensions() { + return new Set([ + ...this.processors.values().filter(Array.isArray) + ].flat()); + } + /** Apply the processors to the provided pages */ async run(pages) { + this.loadedExtensions.clear(); + for (const [process, extensions] of this.processors){ + // Process all loaded pages + if (extensions === "*") { + await process([ + ...pages + ], pages); + continue; + } + const filtered = pages.filter((page)=>pageMatches(extensions, page)); + await process(filtered, pages); + } + } +} +function pageMatches(exts, page) { + if (page.isCopy) { + return false; + } + if (exts === "*") { + return true; + } + if (page.src.ext && exts.includes(page.src.ext)) { + return true; + } + const url = page.outputPath; + return matchExtension(exts, url); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS9wcm9jZXNzb3JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1hdGNoRXh0ZW5zaW9uIH0gZnJvbSBcIi4vdXRpbHMvcGF0aC50c1wiO1xuXG5pbXBvcnQgdHlwZSB7IEV4dGVuc2lvbnMgfSBmcm9tIFwiLi91dGlscy9wYXRoLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFBhZ2UgfSBmcm9tIFwiLi9maWxlLnRzXCI7XG5cbi8qKlxuICogQ2xhc3MgdG8gc3RvcmUgYW5kIHJ1biB0aGUgKHByZSlwcm9jZXNzb3JzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByb2Nlc3NvcnMge1xuICAvKiogUHJvY2Vzc29ycyBhbmQgdGhlIGFzc2lnbmVkIGV4dGVuc2lvbnMgKi9cbiAgcHJvY2Vzc29ycyA9IG5ldyBNYXA8UHJvY2Vzc29yLCBFeHRlbnNpb25zPigpO1xuXG4gIC8qKiBMb2FkZWQgZXh0ZW5zaW9ucyBjYWNoZSAqL1xuICBsb2FkZWRFeHRlbnNpb25zID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgLyoqIEFzc2lnbiBhIHByb2Nlc3NvciB0byBzb21lIGV4dGVuc2lvbnMgKi9cbiAgc2V0KGV4dGVuc2lvbnM6IEV4dGVuc2lvbnMsIHByb2Nlc3NvcjogUHJvY2Vzc29yKTogdm9pZCB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXh0ZW5zaW9ucykpIHtcbiAgICAgIGV4dGVuc2lvbnMuZm9yRWFjaCgoZXh0ZW5zaW9uKSA9PiB7XG4gICAgICAgIGlmIChleHRlbnNpb24uY2hhckF0KDApICE9PSBcIi5cIikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBJbnZhbGlkIGV4dGVuc2lvbiAke2V4dGVuc2lvbn0uIEl0IG11c3Qgc3RhcnQgd2l0aCAnLidgLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMucHJvY2Vzc29ycy5zZXQocHJvY2Vzc29yLCBleHRlbnNpb25zKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm4gYWxsIGV4dGVuc2lvbnMgcmVnaXN0ZXJlZCBieSB0aGlzIHByb2Nlc3NvciAqL1xuICBnZXQgZXh0ZW5zaW9ucygpOiBTZXQ8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBTZXQoW1xuICAgICAgLi4udGhpcy5wcm9jZXNzb3JzLnZhbHVlcygpXG4gICAgICAgIC5maWx0ZXIoQXJyYXkuaXNBcnJheSksXG4gICAgXS5mbGF0KCkpO1xuICB9XG5cbiAgLyoqIEFwcGx5IHRoZSBwcm9jZXNzb3JzIHRvIHRoZSBwcm92aWRlZCBwYWdlcyAqL1xuICBhc3luYyBydW4ocGFnZXM6IFBhZ2VbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMubG9hZGVkRXh0ZW5zaW9ucy5jbGVhcigpO1xuXG4gICAgZm9yIChjb25zdCBbcHJvY2VzcywgZXh0ZW5zaW9uc10gb2YgdGhpcy5wcm9jZXNzb3JzKSB7XG4gICAgICAvLyBQcm9jZXNzIGFsbCBsb2FkZWQgcGFnZXNcbiAgICAgIGlmIChleHRlbnNpb25zID09PSBcIipcIikge1xuICAgICAgICBhd2FpdCBwcm9jZXNzKFsuLi5wYWdlc10sIHBhZ2VzKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpbHRlcmVkID0gcGFnZXMuZmlsdGVyKChwYWdlKSA9PiBwYWdlTWF0Y2hlcyhleHRlbnNpb25zLCBwYWdlKSk7XG4gICAgICBhd2FpdCBwcm9jZXNzKGZpbHRlcmVkLCBwYWdlcyk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUHJvY2Vzc29yIGNhbGxiYWNrIGlzIHVzZWQgaW4gYm90aCAocHJlKXByb2Nlc3MgbWV0aG9kcy5cbiAqL1xuZXhwb3J0IHR5cGUgUHJvY2Vzc29yID0gKFxuICBmaWx0ZXJlZFBhZ2VzOiBQYWdlW10sXG4gIGFsbFBhZ2VzOiBQYWdlW10sXG4pID0+IHZvaWQgfCBmYWxzZSB8IFByb21pc2U8dm9pZCB8IGZhbHNlPjtcblxuZnVuY3Rpb24gcGFnZU1hdGNoZXMoZXh0czogRXh0ZW5zaW9ucywgcGFnZTogUGFnZSk6IGJvb2xlYW4ge1xuICBpZiAocGFnZS5pc0NvcHkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoZXh0cyA9PT0gXCIqXCIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChwYWdlLnNyYy5leHQgJiYgZXh0cy5pbmNsdWRlcyhwYWdlLnNyYy5leHQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zdCB1cmwgPSBwYWdlLm91dHB1dFBhdGg7XG5cbiAgcmV0dXJuIG1hdGNoRXh0ZW5zaW9uKGV4dHMsIHVybCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxjQUFjLFFBQVEsa0JBQWtCO0FBS2pEOztDQUVDLEdBQ0QsZUFBZSxNQUFNO0VBQ25CLDJDQUEyQyxHQUMzQyxhQUFhLElBQUksTUFBNkI7RUFFOUMsNEJBQTRCLEdBQzVCLG1CQUFtQixJQUFJLE1BQWM7RUFFckMsMENBQTBDLEdBQzFDLElBQUksVUFBc0IsRUFBRSxTQUFvQixFQUFRO0lBQ3RELElBQUksTUFBTSxPQUFPLENBQUMsYUFBYTtNQUM3QixXQUFXLE9BQU8sQ0FBQyxDQUFDO1FBQ2xCLElBQUksVUFBVSxNQUFNLENBQUMsT0FBTyxLQUFLO1VBQy9CLE1BQU0sSUFBSSxNQUNSLENBQUMsa0JBQWtCLEVBQUUsVUFBVSx3QkFBd0IsQ0FBQztRQUU1RDtNQUNGO0lBQ0Y7SUFFQSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxXQUFXO0VBQ2pDO0VBRUEsdURBQXVELEdBQ3ZELElBQUksYUFBMEI7SUFDNUIsT0FBTyxJQUFJLElBQUk7U0FDVixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FDdEIsTUFBTSxDQUFDLE1BQU0sT0FBTztLQUN4QixDQUFDLElBQUk7RUFDUjtFQUVBLCtDQUErQyxHQUMvQyxNQUFNLElBQUksS0FBYSxFQUFpQjtJQUN0QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSztJQUUzQixLQUFLLE1BQU0sQ0FBQyxTQUFTLFdBQVcsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFFO01BQ25ELDJCQUEyQjtNQUMzQixJQUFJLGVBQWUsS0FBSztRQUN0QixNQUFNLFFBQVE7YUFBSTtTQUFNLEVBQUU7UUFDMUI7TUFDRjtNQUVBLE1BQU0sV0FBVyxNQUFNLE1BQU0sQ0FBQyxDQUFDLE9BQVMsWUFBWSxZQUFZO01BQ2hFLE1BQU0sUUFBUSxVQUFVO0lBQzFCO0VBQ0Y7QUFDRjtBQVVBLFNBQVMsWUFBWSxJQUFnQixFQUFFLElBQVU7RUFDL0MsSUFBSSxLQUFLLE1BQU0sRUFBRTtJQUNmLE9BQU87RUFDVDtFQUVBLElBQUksU0FBUyxLQUFLO0lBQ2hCLE9BQU87RUFDVDtFQUVBLElBQUksS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLEtBQUssUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsR0FBRztJQUMvQyxPQUFPO0VBQ1Q7RUFFQSxNQUFNLE1BQU0sS0FBSyxVQUFVO0VBRTNCLE9BQU8sZUFBZSxNQUFNO0FBQzlCIn0= +// denoCacheMetadata=9723976210445770589,12971109121961959682
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/86ed0b9408c940603c7c1969618f57babb40be15d2912e0658e4ccd0f83bad98.js b/vendor/gen/https/deno.land/86ed0b9408c940603c7c1969618f57babb40be15d2912e0658e4ccd0f83bad98.js new file mode 100644 index 0000000..84b31d2 --- /dev/null +++ b/vendor/gen/https/deno.land/86ed0b9408c940603c7c1969618f57babb40be15d2912e0658e4ccd0f83bad98.js @@ -0,0 +1,43 @@ +const envVars = new Map(); +export function setEnv(name, value) { + // Deno Deploy doesn't support permissions.requestSync + // https://github.com/denoland/deploy_feedback/issues/527 + if (Deno.permissions.querySync?.({ + name: "env" + }).state === "granted") { + Deno.env.set(name, value); + } else { + envVars.set(name, value); + } +} +export function env(name) { + if (envVars.has(name)) { + return envVars.get(name); + } + // Deno Deploy doesn't support permissions.requestSync + // https://github.com/denoland/deploy_feedback/issues/527 + const allowed = !Deno.permissions.requestSync || Deno.permissions.requestSync({ + name: "env" + }).state === "granted"; + if (!allowed) { + return undefined; + } + const value = envVars.has(name) ? envVars.get(name) : Deno.env.get(name); + if (typeof value === "undefined") { + return undefined; + } + switch(value.toLowerCase()){ + case "true": + case "on": + case "1": + return true; + case "false": + case "off": + case "0": + return false; + default: + return value; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS91dGlscy9lbnYudHMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZW52VmFycyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRFbnYobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gIC8vIERlbm8gRGVwbG95IGRvZXNuJ3Qgc3VwcG9ydCBwZXJtaXNzaW9ucy5yZXF1ZXN0U3luY1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZGVub2xhbmQvZGVwbG95X2ZlZWRiYWNrL2lzc3Vlcy81MjdcbiAgaWYgKERlbm8ucGVybWlzc2lvbnMucXVlcnlTeW5jPy4oeyBuYW1lOiBcImVudlwiIH0pLnN0YXRlID09PSBcImdyYW50ZWRcIikge1xuICAgIERlbm8uZW52LnNldChuYW1lLCB2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgZW52VmFycy5zZXQobmFtZSwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnY8VD4obmFtZTogc3RyaW5nKTogVCB8IHVuZGVmaW5lZCB7XG4gIGlmIChlbnZWYXJzLmhhcyhuYW1lKSkge1xuICAgIHJldHVybiBlbnZWYXJzLmdldChuYW1lKSBhcyBUO1xuICB9XG5cbiAgLy8gRGVubyBEZXBsb3kgZG9lc24ndCBzdXBwb3J0IHBlcm1pc3Npb25zLnJlcXVlc3RTeW5jXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9kZW5vbGFuZC9kZXBsb3lfZmVlZGJhY2svaXNzdWVzLzUyN1xuICBjb25zdCBhbGxvd2VkID0gIURlbm8ucGVybWlzc2lvbnMucmVxdWVzdFN5bmMgfHxcbiAgICBEZW5vLnBlcm1pc3Npb25zLnJlcXVlc3RTeW5jKHsgbmFtZTogXCJlbnZcIiB9KS5zdGF0ZSA9PT0gXCJncmFudGVkXCI7XG5cbiAgaWYgKCFhbGxvd2VkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IHZhbHVlID0gZW52VmFycy5oYXMobmFtZSkgPyBlbnZWYXJzLmdldChuYW1lKSA6IERlbm8uZW52LmdldChuYW1lKTtcblxuICBpZiAodHlwZW9mIHZhbHVlID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHN3aXRjaCAodmFsdWUudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgXCJ0cnVlXCI6XG4gICAgY2FzZSBcIm9uXCI6XG4gICAgY2FzZSBcIjFcIjpcbiAgICAgIHJldHVybiB0cnVlIGFzIFQ7XG5cbiAgICBjYXNlIFwiZmFsc2VcIjpcbiAgICBjYXNlIFwib2ZmXCI6XG4gICAgY2FzZSBcIjBcIjpcbiAgICAgIHJldHVybiBmYWxzZSBhcyBUO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB2YWx1ZSBhcyBUO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLElBQUk7QUFFcEIsT0FBTyxTQUFTLE9BQU8sSUFBWSxFQUFFLEtBQWE7RUFDaEQsc0RBQXNEO0VBQ3RELHlEQUF5RDtFQUN6RCxJQUFJLEtBQUssV0FBVyxDQUFDLFNBQVMsR0FBRztJQUFFLE1BQU07RUFBTSxHQUFHLFVBQVUsV0FBVztJQUNyRSxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTTtFQUNyQixPQUFPO0lBQ0wsUUFBUSxHQUFHLENBQUMsTUFBTTtFQUNwQjtBQUNGO0FBRUEsT0FBTyxTQUFTLElBQU8sSUFBWTtFQUNqQyxJQUFJLFFBQVEsR0FBRyxDQUFDLE9BQU87SUFDckIsT0FBTyxRQUFRLEdBQUcsQ0FBQztFQUNyQjtFQUVBLHNEQUFzRDtFQUN0RCx5REFBeUQ7RUFDekQsTUFBTSxVQUFVLENBQUMsS0FBSyxXQUFXLENBQUMsV0FBVyxJQUMzQyxLQUFLLFdBQVcsQ0FBQyxXQUFXLENBQUM7SUFBRSxNQUFNO0VBQU0sR0FBRyxLQUFLLEtBQUs7RUFFMUQsSUFBSSxDQUFDLFNBQVM7SUFDWixPQUFPO0VBQ1Q7RUFFQSxNQUFNLFFBQVEsUUFBUSxHQUFHLENBQUMsUUFBUSxRQUFRLEdBQUcsQ0FBQyxRQUFRLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQztFQUVuRSxJQUFJLE9BQU8sVUFBVSxhQUFhO0lBQ2hDLE9BQU87RUFDVDtFQUVBLE9BQVEsTUFBTSxXQUFXO0lBQ3ZCLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztNQUNILE9BQU87SUFFVCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7TUFDSCxPQUFPO0lBRVQ7TUFDRSxPQUFPO0VBQ1g7QUFDRiJ9 +// denoCacheMetadata=769116353004672352,10288105138484284765
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/86f94448e3ea0bddb1075c51b2fbb6c04da42ae4cdc52751ab25bcd451a85379.js b/vendor/gen/https/deno.land/86f94448e3ea0bddb1075c51b2fbb6c04da42ae4cdc52751ab25bcd451a85379.js new file mode 100644 index 0000000..55985df --- /dev/null +++ b/vendor/gen/https/deno.land/86f94448e3ea0bddb1075c51b2fbb6c04da42ae4cdc52751ab25bcd451a85379.js @@ -0,0 +1,87 @@ +export default function() { + return (env)=>{ + env.tags.push(forTag); + env.utils.toIterator = toIterator; + }; +} +function forTag(env, code, output, tokens) { + if (!code.startsWith("for ")) { + return; + } + const compiled = []; + const match = code.match(/^for\s+(await\s+)?(\w+)(?:,\s*(\w+))?\s+of\s+([\s|\S]+)$/); + if (!match) { + throw new Error(`Invalid for loop: ${code}`); + } + const [_, aw, var1, var2, collection] = match; + if (var2) { + compiled.push(`for ${aw || ""}(let [${var1}, ${var2}] of __env.utils.toIterator(${env.compileFilters(tokens, collection)}, true)) {`); + } else { + compiled.push(`for ${aw || ""}(let ${var1} of __env.utils.toIterator(${env.compileFilters(tokens, collection)})) {`); + } + compiled.push(...env.compileTokens(tokens, output, [ + "/for" + ])); + tokens.shift(); + compiled.push("}"); + return compiled.join("\n"); +} +function toIterator(// deno-lint-ignore no-explicit-any +item, withKeys = false) { + if (item === undefined || item === null) { + return []; + } + if (Array.isArray(item)) { + return withKeys ? item.map((value, i)=>[ + i, + value + ]) : item; + } + if (typeof item === "function") { + return toIterator(item(), withKeys); + } + if (typeof item === "object" && item !== null) { + if (typeof item[Symbol.iterator] === "function") { + if (withKeys) { + return iterableToEntries(item); + } + return item; + } + if (typeof item[Symbol.asyncIterator] === "function") { + if (withKeys) { + return asyncIterableToEntries(item); + } + return item; + } + return withKeys ? Object.entries(item) : Object.values(item); + } + if (typeof item === "string") { + return toIterator(item.split(""), withKeys); + } + if (typeof item === "number") { + return toIterator(new Array(item).fill(0).map((_, i)=>i + 1), withKeys); + } + return toIterator([ + item + ], withKeys); +} +function* iterableToEntries(iterator) { + let i = 0; + for (const value of iterator){ + yield [ + i++, + value + ]; + } +} +async function* asyncIterableToEntries(iterator) { + let i = 0; + for await (const value of iterator){ + yield [ + i++, + value + ]; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9wbHVnaW5zL2Zvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFRva2VuIH0gZnJvbSBcIi4uL3NyYy90b2tlbml6ZXIudHNcIjtcbmltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnQsIFBsdWdpbiB9IGZyb20gXCIuLi9zcmMvZW52aXJvbm1lbnQudHNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCk6IFBsdWdpbiB7XG4gIHJldHVybiAoZW52OiBFbnZpcm9ubWVudCkgPT4ge1xuICAgIGVudi50YWdzLnB1c2goZm9yVGFnKTtcbiAgICBlbnYudXRpbHMudG9JdGVyYXRvciA9IHRvSXRlcmF0b3I7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGZvclRhZyhcbiAgZW52OiBFbnZpcm9ubWVudCxcbiAgY29kZTogc3RyaW5nLFxuICBvdXRwdXQ6IHN0cmluZyxcbiAgdG9rZW5zOiBUb2tlbltdLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFjb2RlLnN0YXJ0c1dpdGgoXCJmb3IgXCIpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgY29tcGlsZWQ6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IG1hdGNoID0gY29kZS5tYXRjaChcbiAgICAvXmZvclxccysoYXdhaXRcXHMrKT8oXFx3KykoPzosXFxzKihcXHcrKSk/XFxzK29mXFxzKyhbXFxzfFxcU10rKSQvLFxuICApO1xuXG4gIGlmICghbWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZm9yIGxvb3A6ICR7Y29kZX1gKTtcbiAgfVxuICBjb25zdCBbXywgYXcsIHZhcjEsIHZhcjIsIGNvbGxlY3Rpb25dID0gbWF0Y2g7XG5cbiAgaWYgKHZhcjIpIHtcbiAgICBjb21waWxlZC5wdXNoKFxuICAgICAgYGZvciAke2F3IHx8IFwiXCJ9KGxldCBbJHt2YXIxfSwgJHt2YXIyfV0gb2YgX19lbnYudXRpbHMudG9JdGVyYXRvcigke1xuICAgICAgICBlbnYuY29tcGlsZUZpbHRlcnModG9rZW5zLCBjb2xsZWN0aW9uKVxuICAgICAgfSwgdHJ1ZSkpIHtgLFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgY29tcGlsZWQucHVzaChcbiAgICAgIGBmb3IgJHthdyB8fCBcIlwifShsZXQgJHt2YXIxfSBvZiBfX2Vudi51dGlscy50b0l0ZXJhdG9yKCR7XG4gICAgICAgIGVudi5jb21waWxlRmlsdGVycyh0b2tlbnMsIGNvbGxlY3Rpb24pXG4gICAgICB9KSkge2AsXG4gICAgKTtcbiAgfVxuXG4gIGNvbXBpbGVkLnB1c2goLi4uZW52LmNvbXBpbGVUb2tlbnModG9rZW5zLCBvdXRwdXQsIFtcIi9mb3JcIl0pKTtcbiAgdG9rZW5zLnNoaWZ0KCk7XG4gIGNvbXBpbGVkLnB1c2goXCJ9XCIpO1xuXG4gIHJldHVybiBjb21waWxlZC5qb2luKFwiXFxuXCIpO1xufVxuXG5mdW5jdGlvbiB0b0l0ZXJhdG9yKFxuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuICBpdGVtOiBhbnksXG4gIHdpdGhLZXlzID0gZmFsc2UsXG4pOiBJdGVyYWJsZTx1bmtub3duPiB8IEFzeW5jSXRlcmFibGU8dW5rbm93bj4gfCBBcnJheTx1bmtub3duPiB7XG4gIGlmIChpdGVtID09PSB1bmRlZmluZWQgfHwgaXRlbSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XG4gICAgcmV0dXJuIHdpdGhLZXlzID8gaXRlbS5tYXAoKHZhbHVlLCBpKSA9PiBbaSwgdmFsdWVdKSA6IGl0ZW07XG4gIH1cblxuICBpZiAodHlwZW9mIGl0ZW0gPT09IFwiZnVuY3Rpb25cIikge1xuICAgIHJldHVybiB0b0l0ZXJhdG9yKGl0ZW0oKSwgd2l0aEtleXMpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBpdGVtID09PSBcIm9iamVjdFwiICYmIGl0ZW0gIT09IG51bGwpIHtcbiAgICBpZiAodHlwZW9mIGl0ZW1bU3ltYm9sLml0ZXJhdG9yXSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBpZiAod2l0aEtleXMpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhYmxlVG9FbnRyaWVzKGl0ZW0gYXMgSXRlcmFibGU8dW5rbm93bj4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGl0ZW0gYXMgSXRlcmFibGU8dW5rbm93bj47XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBpdGVtW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBpZiAod2l0aEtleXMpIHtcbiAgICAgICAgcmV0dXJuIGFzeW5jSXRlcmFibGVUb0VudHJpZXMoaXRlbSBhcyBBc3luY0l0ZXJhYmxlPHVua25vd24+KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGl0ZW0gYXMgQXN5bmNJdGVyYWJsZTx1bmtub3duPjtcbiAgICB9XG5cbiAgICByZXR1cm4gd2l0aEtleXMgPyBPYmplY3QuZW50cmllcyhpdGVtKSA6IE9iamVjdC52YWx1ZXMoaXRlbSk7XG4gIH1cblxuICBpZiAodHlwZW9mIGl0ZW0gPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gdG9JdGVyYXRvcihpdGVtLnNwbGl0KFwiXCIpLCB3aXRoS2V5cyk7XG4gIH1cblxuICBpZiAodHlwZW9mIGl0ZW0gPT09IFwibnVtYmVyXCIpIHtcbiAgICByZXR1cm4gdG9JdGVyYXRvcihuZXcgQXJyYXkoaXRlbSkuZmlsbCgwKS5tYXAoKF8sIGkpID0+IGkgKyAxKSwgd2l0aEtleXMpO1xuICB9XG5cbiAgcmV0dXJuIHRvSXRlcmF0b3IoW2l0ZW1dLCB3aXRoS2V5cyk7XG59XG5cbmZ1bmN0aW9uKiBpdGVyYWJsZVRvRW50cmllcyhcbiAgaXRlcmF0b3I6IEl0ZXJhYmxlPHVua25vd24+LFxuKTogR2VuZXJhdG9yPFtudW1iZXIsIHVua25vd25dPiB7XG4gIGxldCBpID0gMDtcbiAgZm9yIChjb25zdCB2YWx1ZSBvZiBpdGVyYXRvcikge1xuICAgIHlpZWxkIFtpKyssIHZhbHVlXTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiogYXN5bmNJdGVyYWJsZVRvRW50cmllcyhcbiAgaXRlcmF0b3I6IEFzeW5jSXRlcmFibGU8dW5rbm93bj4sXG4pOiBBc3luY0dlbmVyYXRvcjxbbnVtYmVyLCB1bmtub3duXT4ge1xuICBsZXQgaSA9IDA7XG4gIGZvciBhd2FpdCAoY29uc3QgdmFsdWUgb2YgaXRlcmF0b3IpIHtcbiAgICB5aWVsZCBbaSsrLCB2YWx1ZV07XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxlQUFlO0VBQ2IsT0FBTyxDQUFDO0lBQ04sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ2QsSUFBSSxLQUFLLENBQUMsVUFBVSxHQUFHO0VBQ3pCO0FBQ0Y7QUFFQSxTQUFTLE9BQ1AsR0FBZ0IsRUFDaEIsSUFBWSxFQUNaLE1BQWMsRUFDZCxNQUFlO0VBRWYsSUFBSSxDQUFDLEtBQUssVUFBVSxDQUFDLFNBQVM7SUFDNUI7RUFDRjtFQUVBLE1BQU0sV0FBcUIsRUFBRTtFQUM3QixNQUFNLFFBQVEsS0FBSyxLQUFLLENBQ3RCO0VBR0YsSUFBSSxDQUFDLE9BQU87SUFDVixNQUFNLElBQUksTUFBTSxDQUFDLGtCQUFrQixFQUFFLE1BQU07RUFDN0M7RUFDQSxNQUFNLENBQUMsR0FBRyxJQUFJLE1BQU0sTUFBTSxXQUFXLEdBQUc7RUFFeEMsSUFBSSxNQUFNO0lBQ1IsU0FBUyxJQUFJLENBQ1gsQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLDRCQUE0QixFQUNoRSxJQUFJLGNBQWMsQ0FBQyxRQUFRLFlBQzVCLFVBQVUsQ0FBQztFQUVoQixPQUFPO0lBQ0wsU0FBUyxJQUFJLENBQ1gsQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLEtBQUssRUFBRSxLQUFLLDJCQUEyQixFQUNyRCxJQUFJLGNBQWMsQ0FBQyxRQUFRLFlBQzVCLElBQUksQ0FBQztFQUVWO0VBRUEsU0FBUyxJQUFJLElBQUksSUFBSSxhQUFhLENBQUMsUUFBUSxRQUFRO0lBQUM7R0FBTztFQUMzRCxPQUFPLEtBQUs7RUFDWixTQUFTLElBQUksQ0FBQztFQUVkLE9BQU8sU0FBUyxJQUFJLENBQUM7QUFDdkI7QUFFQSxTQUFTLFdBQ1AsbUNBQW1DO0FBQ25DLElBQVMsRUFDVCxXQUFXLEtBQUs7RUFFaEIsSUFBSSxTQUFTLGFBQWEsU0FBUyxNQUFNO0lBQ3ZDLE9BQU8sRUFBRTtFQUNYO0VBRUEsSUFBSSxNQUFNLE9BQU8sQ0FBQyxPQUFPO0lBQ3ZCLE9BQU8sV0FBVyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBTTtRQUFDO1FBQUc7T0FBTSxJQUFJO0VBQ3pEO0VBRUEsSUFBSSxPQUFPLFNBQVMsWUFBWTtJQUM5QixPQUFPLFdBQVcsUUFBUTtFQUM1QjtFQUVBLElBQUksT0FBTyxTQUFTLFlBQVksU0FBUyxNQUFNO0lBQzdDLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxRQUFRLENBQUMsS0FBSyxZQUFZO01BQy9DLElBQUksVUFBVTtRQUNaLE9BQU8sa0JBQWtCO01BQzNCO01BQ0EsT0FBTztJQUNUO0lBRUEsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLGFBQWEsQ0FBQyxLQUFLLFlBQVk7TUFDcEQsSUFBSSxVQUFVO1FBQ1osT0FBTyx1QkFBdUI7TUFDaEM7TUFFQSxPQUFPO0lBQ1Q7SUFFQSxPQUFPLFdBQVcsT0FBTyxPQUFPLENBQUMsUUFBUSxPQUFPLE1BQU0sQ0FBQztFQUN6RDtFQUVBLElBQUksT0FBTyxTQUFTLFVBQVU7SUFDNUIsT0FBTyxXQUFXLEtBQUssS0FBSyxDQUFDLEtBQUs7RUFDcEM7RUFFQSxJQUFJLE9BQU8sU0FBUyxVQUFVO0lBQzVCLE9BQU8sV0FBVyxJQUFJLE1BQU0sTUFBTSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQU0sSUFBSSxJQUFJO0VBQ2xFO0VBRUEsT0FBTyxXQUFXO0lBQUM7R0FBSyxFQUFFO0FBQzVCO0FBRUEsVUFBVSxrQkFDUixRQUEyQjtFQUUzQixJQUFJLElBQUk7RUFDUixLQUFLLE1BQU0sU0FBUyxTQUFVO0lBQzVCLE1BQU07TUFBQztNQUFLO0tBQU07RUFDcEI7QUFDRjtBQUVBLGdCQUFnQix1QkFDZCxRQUFnQztFQUVoQyxJQUFJLElBQUk7RUFDUixXQUFXLE1BQU0sU0FBUyxTQUFVO0lBQ2xDLE1BQU07TUFBQztNQUFLO0tBQU07RUFDcEI7QUFDRiJ9 +// denoCacheMetadata=15297346194400953528,2350012000724761390
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/88610722e66f8688b2f40e480ac27de34320384d2777d1aa682424f11c083f65.js b/vendor/gen/https/deno.land/88610722e66f8688b2f40e480ac27de34320384d2777d1aa682424f11c083f65.js new file mode 100644 index 0000000..43c5925 --- /dev/null +++ b/vendor/gen/https/deno.land/88610722e66f8688b2f40e480ac27de34320384d2777d1aa682424f11c083f65.js @@ -0,0 +1,37 @@ +export default function() { + return (env)=>{ + env.tokenPreprocessors.push(trim); + }; +} +export function trim(_, tokens) { + for(let i = 0; i < tokens.length; i++){ + const previous = tokens[i - 1]; + const token = tokens[i]; + const next = tokens[i + 1]; + let [type, code] = token; + if ([ + "tag", + "comment" + ].includes(type) && code.startsWith("-")) { + previous[1] = previous[1].trimEnd(); + code = code.slice(1); + } + if ([ + "tag", + "filter", + "comment" + ].includes(type) && code.endsWith("-")) { + next[1] = next[1].trimStart(); + code = code.slice(0, -1); + } + // Trim tag and filter code + switch(type){ + case "tag": + case "filter": + token[1] = code.trim(); + break; + } + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9wbHVnaW5zL3RyaW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBUb2tlbiB9IGZyb20gXCIuLi9zcmMvdG9rZW5pemVyLnRzXCI7XG5pbXBvcnQgdHlwZSB7IEVudmlyb25tZW50LCBQbHVnaW4gfSBmcm9tIFwiLi4vc3JjL2Vudmlyb25tZW50LnRzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpOiBQbHVnaW4ge1xuICByZXR1cm4gKGVudjogRW52aXJvbm1lbnQpID0+IHtcbiAgICBlbnYudG9rZW5QcmVwcm9jZXNzb3JzLnB1c2godHJpbSk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmltKF86IEVudmlyb25tZW50LCB0b2tlbnM6IFRva2VuW10pIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBwcmV2aW91cyA9IHRva2Vuc1tpIC0gMV07XG4gICAgY29uc3QgdG9rZW4gPSB0b2tlbnNbaV07XG4gICAgY29uc3QgbmV4dCA9IHRva2Vuc1tpICsgMV07XG5cbiAgICBsZXQgW3R5cGUsIGNvZGVdID0gdG9rZW47XG5cbiAgICBpZiAoW1widGFnXCIsIFwiY29tbWVudFwiXS5pbmNsdWRlcyh0eXBlKSAmJiBjb2RlLnN0YXJ0c1dpdGgoXCItXCIpKSB7XG4gICAgICBwcmV2aW91c1sxXSA9IHByZXZpb3VzWzFdLnRyaW1FbmQoKTtcbiAgICAgIGNvZGUgPSBjb2RlLnNsaWNlKDEpO1xuICAgIH1cblxuICAgIGlmIChbXCJ0YWdcIiwgXCJmaWx0ZXJcIiwgXCJjb21tZW50XCJdLmluY2x1ZGVzKHR5cGUpICYmIGNvZGUuZW5kc1dpdGgoXCItXCIpKSB7XG4gICAgICBuZXh0WzFdID0gbmV4dFsxXS50cmltU3RhcnQoKTtcbiAgICAgIGNvZGUgPSBjb2RlLnNsaWNlKDAsIC0xKTtcbiAgICB9XG5cbiAgICAvLyBUcmltIHRhZyBhbmQgZmlsdGVyIGNvZGVcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgXCJ0YWdcIjpcbiAgICAgIGNhc2UgXCJmaWx0ZXJcIjpcbiAgICAgICAgdG9rZW5bMV0gPSBjb2RlLnRyaW0oKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsZUFBZTtFQUNiLE9BQU8sQ0FBQztJQUNOLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDO0VBQzlCO0FBQ0Y7QUFFQSxPQUFPLFNBQVMsS0FBSyxDQUFjLEVBQUUsTUFBZTtFQUNsRCxJQUFLLElBQUksSUFBSSxHQUFHLElBQUksT0FBTyxNQUFNLEVBQUUsSUFBSztJQUN0QyxNQUFNLFdBQVcsTUFBTSxDQUFDLElBQUksRUFBRTtJQUM5QixNQUFNLFFBQVEsTUFBTSxDQUFDLEVBQUU7SUFDdkIsTUFBTSxPQUFPLE1BQU0sQ0FBQyxJQUFJLEVBQUU7SUFFMUIsSUFBSSxDQUFDLE1BQU0sS0FBSyxHQUFHO0lBRW5CLElBQUk7TUFBQztNQUFPO0tBQVUsQ0FBQyxRQUFRLENBQUMsU0FBUyxLQUFLLFVBQVUsQ0FBQyxNQUFNO01BQzdELFFBQVEsQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxPQUFPO01BQ2pDLE9BQU8sS0FBSyxLQUFLLENBQUM7SUFDcEI7SUFFQSxJQUFJO01BQUM7TUFBTztNQUFVO0tBQVUsQ0FBQyxRQUFRLENBQUMsU0FBUyxLQUFLLFFBQVEsQ0FBQyxNQUFNO01BQ3JFLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTO01BQzNCLE9BQU8sS0FBSyxLQUFLLENBQUMsR0FBRyxDQUFDO0lBQ3hCO0lBRUEsMkJBQTJCO0lBQzNCLE9BQVE7TUFDTixLQUFLO01BQ0wsS0FBSztRQUNILEtBQUssQ0FBQyxFQUFFLEdBQUcsS0FBSyxJQUFJO1FBQ3BCO0lBQ0o7RUFDRjtBQUNGIn0= +// denoCacheMetadata=13861263811631081494,17862610890699020049
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/8929470cdbe8fc71aae682fb1518570b7e7e42407fbb3a640aabcdeb49331a14.js b/vendor/gen/https/deno.land/8929470cdbe8fc71aae682fb1518570b7e7e42407fbb3a640aabcdeb49331a14.js new file mode 100644 index 0000000..165d3ca --- /dev/null +++ b/vendor/gen/https/deno.land/8929470cdbe8fc71aae682fb1518570b7e7e42407fbb3a640aabcdeb49331a14.js @@ -0,0 +1,105 @@ +import { join, relative } from "../deps/path.ts"; +import { normalizePath } from "./utils/path.ts"; +import Events from "./events.ts"; +export default class FSWatcher { + events = new Events(); + options; + constructor(options){ + this.options = options; + } + /** Add a listener to an event */ addEventListener(type, listener, options) { + this.events.addEventListener(type, listener, options); + return this; + } + /** Dispatch an event */ dispatchEvent(event) { + return this.events.dispatchEvent(event); + } + /** Start the file watcher */ async start() { + const { root, paths, ignore, debounce } = this.options; + const watcher = Deno.watchFs([ + root, + ...paths ?? [] + ]); + const changes = new Set(); + let timer = 0; + let runningCallback = false; + await this.dispatchEvent({ + type: "start" + }); + const callback = async ()=>{ + runningCallback = true; + const files = new Set(changes); + changes.clear(); + if (!files.size) { + runningCallback = false; + return; + } + try { + const result = await this.dispatchEvent({ + type: "change", + files: files + }); + if (false === result) { + runningCallback = false; + return watcher.close(); + } + } catch (err) { + await this.dispatchEvent({ + type: "error", + error: err + }); + } + runningCallback = false; + // New changes detected while processing + if (changes.size) { + callback(); + } + }; + for await (const event of watcher){ + let paths = event.paths.map((path)=>normalizePath(path)); + // Filter ignored paths + paths = paths.filter((path)=>ignore ? !ignore.some((ignore)=>typeof ignore === "string" ? path.startsWith(normalizePath(join(root, ignore, "/"))) || path === normalizePath(join(root, ignore)) : ignore(path)) : true); + if (!paths.length) { + continue; + } + paths.forEach((path)=>changes.add(normalizePath(relative(root, path)))); + // Only start if processing queue is not already running + if (!runningCallback) { + // Debounce + clearTimeout(timer); + timer = setTimeout(callback, debounce ?? 100); + } + } + } +} +export class SiteWatcher { + site; + events = new Events(); + constructor(site){ + this.site = site; + } + /** Add a listener to an event */ addEventListener(type, listener, options) { + this.events.addEventListener(type, listener, options); + return this; + } + /** Dispatch an event */ dispatchEvent(event) { + return this.events.dispatchEvent(event); + } + /** Start the watcher */ async start() { + await this.dispatchEvent({ + type: "start" + }); + this.site.addEventListener("afterUpdate", (event)=>{ + const files = new Set([ + ...event.pages.map((page)=>page.outputPath), + ...event.staticFiles.map((file)=>file.outputPath) + ]); + this.dispatchEvent({ + type: "change", + files + }); + }); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS93YXRjaGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4sIHJlbGF0aXZlIH0gZnJvbSBcIi4uL2RlcHMvcGF0aC50c1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplUGF0aCB9IGZyb20gXCIuL3V0aWxzL3BhdGgudHNcIjtcbmltcG9ydCBFdmVudHMgZnJvbSBcIi4vZXZlbnRzLnRzXCI7XG5cbmltcG9ydCB0eXBlIFNpdGUgZnJvbSBcIi4vc2l0ZS50c1wiO1xuaW1wb3J0IHR5cGUgeyBFdmVudCwgRXZlbnRMaXN0ZW5lciwgRXZlbnRPcHRpb25zIH0gZnJvbSBcIi4vZXZlbnRzLnRzXCI7XG5cbi8qKiBUaGUgb3B0aW9ucyB0byBjb25maWd1cmUgdGhlIGxvY2FsIHNlcnZlciAqL1xuZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcbiAgLyoqIFRoZSBmb2xkZXIgcm9vdCB0byB3YXRjaCAqL1xuICByb290OiBzdHJpbmc7XG5cbiAgLyoqIEV4dHJhIGZpbGVzIHRvIHdhdGNoICovXG4gIHBhdGhzPzogc3RyaW5nW107XG5cbiAgLyoqIFBhdGhzIGlnbm9yZWQgYnkgdGhlIHdhdGNoZXIgKi9cbiAgaWdub3JlPzogKHN0cmluZyB8ICgocGF0aDogc3RyaW5nKSA9PiBib29sZWFuKSlbXTtcblxuICAvKiogVGhlIGRlYm91bmNlIHdhaXRpbmcgdGltZSAqL1xuICBkZWJvdW5jZT86IG51bWJlcjtcbn1cblxuLyoqIEN1c3RvbSBldmVudHMgZm9yIHNlcnZlciAqL1xuZXhwb3J0IGludGVyZmFjZSBXYXRjaEV2ZW50IGV4dGVuZHMgRXZlbnQge1xuICAvKiogVGhlIGV2ZW50IHR5cGUgKi9cbiAgdHlwZTogV2F0Y2hFdmVudFR5cGU7XG5cbiAgLyoqIFRoZSBsaXN0IG9mIGNoYW5nZWQgZmlsZXMgKG9ubHkgZm9yIFwiY2hhbmdlXCIgZXZlbnRzKSAqL1xuICBmaWxlcz86IFNldDxzdHJpbmc+O1xuXG4gIC8qKiBUaGUgZXJyb3Igb2JqZWN0IChvbmx5IGZvciBcImVycm9yXCIgZXZlbnRzKSAqL1xuICBlcnJvcj86IEVycm9yO1xufVxuXG4vKiogVGhlIGF2YWlsYWJsZSBldmVudCB0eXBlcyAqL1xuZXhwb3J0IHR5cGUgV2F0Y2hFdmVudFR5cGUgPVxuICB8IFwic3RhcnRcIlxuICB8IFwiY2hhbmdlXCJcbiAgfCBcImVycm9yXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2F0Y2hlciB7XG4gIC8qKiBBZGQgYSBsaXN0ZW5lciB0byBhbiBldmVudCAqL1xuICBhZGRFdmVudExpc3RlbmVyKFxuICAgIHR5cGU6IFdhdGNoRXZlbnRUeXBlLFxuICAgIGxpc3RlbmVyOiBFdmVudExpc3RlbmVyPFdhdGNoRXZlbnQ+LFxuICAgIG9wdGlvbnM/OiBFdmVudE9wdGlvbnMsXG4gICk6IHRoaXM7XG5cbiAgLyoqIERpc3BhdGNoIGFuIGV2ZW50ICovXG4gIGRpc3BhdGNoRXZlbnQoZXZlbnQ6IFdhdGNoRXZlbnQpOiBQcm9taXNlPGJvb2xlYW4+O1xuXG4gIC8qKiBTdGFydCB0aGUgd2F0Y2hlciAqL1xuICBzdGFydCgpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGU1dhdGNoZXIgaW1wbGVtZW50cyBXYXRjaGVyIHtcbiAgZXZlbnRzOiBFdmVudHM8V2F0Y2hFdmVudD4gPSBuZXcgRXZlbnRzPFdhdGNoRXZlbnQ+KCk7XG4gIG9wdGlvbnM6IE9wdGlvbnM7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogT3B0aW9ucykge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICAvKiogQWRkIGEgbGlzdGVuZXIgdG8gYW4gZXZlbnQgKi9cbiAgYWRkRXZlbnRMaXN0ZW5lcihcbiAgICB0eXBlOiBXYXRjaEV2ZW50VHlwZSxcbiAgICBsaXN0ZW5lcjogRXZlbnRMaXN0ZW5lcjxXYXRjaEV2ZW50PixcbiAgICBvcHRpb25zPzogRXZlbnRPcHRpb25zLFxuICApIHtcbiAgICB0aGlzLmV2ZW50cy5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBEaXNwYXRjaCBhbiBldmVudCAqL1xuICBkaXNwYXRjaEV2ZW50KGV2ZW50OiBXYXRjaEV2ZW50KSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9XG5cbiAgLyoqIFN0YXJ0IHRoZSBmaWxlIHdhdGNoZXIgKi9cbiAgYXN5bmMgc3RhcnQoKSB7XG4gICAgY29uc3QgeyByb290LCBwYXRocywgaWdub3JlLCBkZWJvdW5jZSB9ID0gdGhpcy5vcHRpb25zO1xuICAgIGNvbnN0IHdhdGNoZXIgPSBEZW5vLndhdGNoRnMoW3Jvb3QsIC4uLnBhdGhzID8/IFtdXSk7XG4gICAgY29uc3QgY2hhbmdlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGxldCB0aW1lciA9IDA7XG4gICAgbGV0IHJ1bm5pbmdDYWxsYmFjayA9IGZhbHNlO1xuXG4gICAgYXdhaXQgdGhpcy5kaXNwYXRjaEV2ZW50KHsgdHlwZTogXCJzdGFydFwiIH0pO1xuXG4gICAgY29uc3QgY2FsbGJhY2sgPSBhc3luYyAoKSA9PiB7XG4gICAgICBydW5uaW5nQ2FsbGJhY2sgPSB0cnVlO1xuXG4gICAgICBjb25zdCBmaWxlcyA9IG5ldyBTZXQoY2hhbmdlcyk7XG4gICAgICBjaGFuZ2VzLmNsZWFyKCk7XG5cbiAgICAgIGlmICghZmlsZXMuc2l6ZSkge1xuICAgICAgICBydW5uaW5nQ2FsbGJhY2sgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRpc3BhdGNoRXZlbnQoe1xuICAgICAgICAgIHR5cGU6IFwiY2hhbmdlXCIsXG4gICAgICAgICAgZmlsZXM6IGZpbGVzLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGZhbHNlID09PSByZXN1bHQpIHtcbiAgICAgICAgICBydW5uaW5nQ2FsbGJhY2sgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gd2F0Y2hlci5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5kaXNwYXRjaEV2ZW50KHsgdHlwZTogXCJlcnJvclwiLCBlcnJvcjogZXJyIGFzIEVycm9yIH0pO1xuICAgICAgfVxuXG4gICAgICBydW5uaW5nQ2FsbGJhY2sgPSBmYWxzZTtcblxuICAgICAgLy8gTmV3IGNoYW5nZXMgZGV0ZWN0ZWQgd2hpbGUgcHJvY2Vzc2luZ1xuICAgICAgaWYgKGNoYW5nZXMuc2l6ZSkge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgYXdhaXQgKGNvbnN0IGV2ZW50IG9mIHdhdGNoZXIpIHtcbiAgICAgIGxldCBwYXRocyA9IGV2ZW50LnBhdGhzLm1hcCgocGF0aCkgPT4gbm9ybWFsaXplUGF0aChwYXRoKSk7XG5cbiAgICAgIC8vIEZpbHRlciBpZ25vcmVkIHBhdGhzXG4gICAgICBwYXRocyA9IHBhdGhzLmZpbHRlcigocGF0aCkgPT5cbiAgICAgICAgaWdub3JlXG4gICAgICAgICAgPyAhaWdub3JlLnNvbWUoKGlnbm9yZSkgPT5cbiAgICAgICAgICAgIHR5cGVvZiBpZ25vcmUgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgPyAocGF0aC5zdGFydHNXaXRoKG5vcm1hbGl6ZVBhdGgoam9pbihyb290LCBpZ25vcmUsIFwiL1wiKSkpIHx8XG4gICAgICAgICAgICAgICAgcGF0aCA9PT0gbm9ybWFsaXplUGF0aChqb2luKHJvb3QsIGlnbm9yZSkpKVxuICAgICAgICAgICAgICA6IGlnbm9yZShwYXRoKVxuICAgICAgICAgIClcbiAgICAgICAgICA6IHRydWVcbiAgICAgICk7XG5cbiAgICAgIGlmICghcGF0aHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiBjaGFuZ2VzLmFkZChub3JtYWxpemVQYXRoKHJlbGF0aXZlKHJvb3QsIHBhdGgpKSkpO1xuXG4gICAgICAvLyBPbmx5IHN0YXJ0IGlmIHByb2Nlc3NpbmcgcXVldWUgaXMgbm90IGFscmVhZHkgcnVubmluZ1xuICAgICAgaWYgKCFydW5uaW5nQ2FsbGJhY2spIHtcbiAgICAgICAgLy8gRGVib3VuY2VcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KGNhbGxiYWNrLCBkZWJvdW5jZSA/PyAxMDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2l0ZVdhdGNoZXIgaW1wbGVtZW50cyBXYXRjaGVyIHtcbiAgc2l0ZTogU2l0ZTtcbiAgZXZlbnRzOiBFdmVudHM8V2F0Y2hFdmVudD4gPSBuZXcgRXZlbnRzPFdhdGNoRXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3Ioc2l0ZTogU2l0ZSkge1xuICAgIHRoaXMuc2l0ZSA9IHNpdGU7XG4gIH1cblxuICAvKiogQWRkIGEgbGlzdGVuZXIgdG8gYW4gZXZlbnQgKi9cbiAgYWRkRXZlbnRMaXN0ZW5lcihcbiAgICB0eXBlOiBXYXRjaEV2ZW50VHlwZSxcbiAgICBsaXN0ZW5lcjogRXZlbnRMaXN0ZW5lcjxXYXRjaEV2ZW50PixcbiAgICBvcHRpb25zPzogRXZlbnRPcHRpb25zLFxuICApIHtcbiAgICB0aGlzLmV2ZW50cy5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBEaXNwYXRjaCBhbiBldmVudCAqL1xuICBkaXNwYXRjaEV2ZW50KGV2ZW50OiBXYXRjaEV2ZW50KSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9XG5cbiAgLyoqIFN0YXJ0IHRoZSB3YXRjaGVyICovXG4gIGFzeW5jIHN0YXJ0KCkge1xuICAgIGF3YWl0IHRoaXMuZGlzcGF0Y2hFdmVudCh7IHR5cGU6IFwic3RhcnRcIiB9KTtcbiAgICB0aGlzLnNpdGUuYWRkRXZlbnRMaXN0ZW5lcihcImFmdGVyVXBkYXRlXCIsIChldmVudCkgPT4ge1xuICAgICAgY29uc3QgZmlsZXMgPSBuZXcgU2V0KFtcbiAgICAgICAgLi4uZXZlbnQucGFnZXMubWFwKChwYWdlKSA9PiBwYWdlLm91dHB1dFBhdGgpLFxuICAgICAgICAuLi5ldmVudC5zdGF0aWNGaWxlcy5tYXAoKGZpbGUpID0+IGZpbGUub3V0cHV0UGF0aCksXG4gICAgICBdKTtcbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudCh7IHR5cGU6IFwiY2hhbmdlXCIsIGZpbGVzIH0pO1xuICAgIH0pO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxJQUFJLEVBQUUsUUFBUSxRQUFRLGtCQUFrQjtBQUNqRCxTQUFTLGFBQWEsUUFBUSxrQkFBa0I7QUFDaEQsT0FBTyxZQUFZLGNBQWM7QUFxRGpDLGVBQWUsTUFBTTtFQUNuQixTQUE2QixJQUFJLFNBQXFCO0VBQ3RELFFBQWlCO0VBRWpCLFlBQVksT0FBZ0IsQ0FBRTtJQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHO0VBQ2pCO0VBRUEsK0JBQStCLEdBQy9CLGlCQUNFLElBQW9CLEVBQ3BCLFFBQW1DLEVBQ25DLE9BQXNCLEVBQ3RCO0lBQ0EsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLFVBQVU7SUFDN0MsT0FBTyxJQUFJO0VBQ2I7RUFFQSxzQkFBc0IsR0FDdEIsY0FBYyxLQUFpQixFQUFFO0lBQy9CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7RUFDbkM7RUFFQSwyQkFBMkIsR0FDM0IsTUFBTSxRQUFRO0lBQ1osTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxP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 +// denoCacheMetadata=5905373876817351848,1051794774580326910
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/893432f34c8af4ef278b36a3dbcc5d0deec203fc3e6749eea430c0dbd489c850.js b/vendor/gen/https/deno.land/893432f34c8af4ef278b36a3dbcc5d0deec203fc3e6749eea430c0dbd489c850.js new file mode 100644 index 0000000..00c3b7c --- /dev/null +++ b/vendor/gen/https/deno.land/893432f34c8af4ef278b36a3dbcc5d0deec203fc3e6749eea430c0dbd489c850.js @@ -0,0 +1,78 @@ +import { posix, SEPARATOR } from "../../deps/path.ts"; +/** + * Convert the Windows paths (that use the separator "\") + * to Posix paths (with the separator "/") + * and ensure it starts with "/". + */ export function normalizePath(path, rootToRemove) { + if (rootToRemove) { + path = path.replace(rootToRemove, ""); + } + if (SEPARATOR !== "/") { + path = path.replaceAll(SEPARATOR, "/"); + // Is absolute Windows path (C:/...) + if (path.includes(":/")) { + if (rootToRemove && path.startsWith(rootToRemove)) { + return posix.join("/", path.replace(rootToRemove, "")); + } + return path; + } + } + const absolute = posix.join("/", path); + return rootToRemove && absolute.startsWith(rootToRemove) ? posix.join("/", absolute.replace(rootToRemove, "")) : absolute; +} +/** Check if the path is an URL */ export function isUrl(path) { + return !!path.match(/^(https?|file):\/\//); +} +/** Check if the path is absolute */ export function isAbsolutePath(path) { + return SEPARATOR !== "/" ? /^\w:[\/\\]/.test(path) : path.startsWith("/"); +} +/** Replace the extension of a path */ export function replaceExtension(path, ext) { + return path.replace(/\.\w+$/, ext); +} +/** Split a path to path + extension */ export function getPathAndExtension(path) { + const extension = getExtension(path); + if (!extension) { + return [ + path, + "" + ]; + } + const pathWithoutExtension = path.slice(0, -extension.length); + return [ + pathWithoutExtension, + extension + ]; +} +/** Get the extension of a path (this works better than std/path) */ export function getExtension(path) { + const match = path.match(/\.\w+$/); + return match ? match[0].toLowerCase() : ""; +} +export function matchExtension(exts, path) { + if (exts === "*") { + return true; + } + return exts.some((ext)=>path.endsWith(ext)); +} +/** + * Resolve the path of an included file + * Used in the template engines and processors + */ export function resolveInclude(path, includesDir, fromDir, rootToRemove) { + if (isUrl(path)) { + return path; + } + if (path.startsWith(".")) { + if (!fromDir) { + throw new Error(`Cannot load "${path}" without a base directory`); + } + return normalizePath(posix.join(fromDir, path), rootToRemove); + } + const normalized = normalizePath(path, rootToRemove); + return normalized.startsWith(normalizePath(posix.join(includesDir, "/"))) ? normalized : normalizePath(posix.join(includesDir, normalized)); +} +/** + * decodeURI() can't decode the `%` character, as it is used in any encoded character + */ export function decodeURIComponentSafe(path) { + return decodeURIComponent(path.replace(/%(?![0-9a-fA-F]+)/g, "%25")); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS91dGlscy9wYXRoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBvc2l4LCBTRVBBUkFUT1IgfSBmcm9tIFwiLi4vLi4vZGVwcy9wYXRoLnRzXCI7XG5cbi8qKlxuICogQ29udmVydCB0aGUgV2luZG93cyBwYXRocyAodGhhdCB1c2UgdGhlIHNlcGFyYXRvciBcIlxcXCIpXG4gKiB0byBQb3NpeCBwYXRocyAod2l0aCB0aGUgc2VwYXJhdG9yIFwiL1wiKVxuICogYW5kIGVuc3VyZSBpdCBzdGFydHMgd2l0aCBcIi9cIi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVBhdGgocGF0aDogc3RyaW5nLCByb290VG9SZW1vdmU/OiBzdHJpbmcpIHtcbiAgaWYgKHJvb3RUb1JlbW92ZSkge1xuICAgIHBhdGggPSBwYXRoLnJlcGxhY2Uocm9vdFRvUmVtb3ZlLCBcIlwiKTtcbiAgfVxuXG4gIGlmIChTRVBBUkFUT1IgIT09IFwiL1wiKSB7XG4gICAgcGF0aCA9IHBhdGgucmVwbGFjZUFsbChTRVBBUkFUT1IsIFwiL1wiKTtcblxuICAgIC8vIElzIGFic29sdXRlIFdpbmRvd3MgcGF0aCAoQzovLi4uKVxuICAgIGlmIChwYXRoLmluY2x1ZGVzKFwiOi9cIikpIHtcbiAgICAgIGlmIChyb290VG9SZW1vdmUgJiYgcGF0aC5zdGFydHNXaXRoKHJvb3RUb1JlbW92ZSkpIHtcbiAgICAgICAgcmV0dXJuIHBvc2l4LmpvaW4oXCIvXCIsIHBhdGgucmVwbGFjZShyb290VG9SZW1vdmUsIFwiXCIpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYWJzb2x1dGUgPSBwb3NpeC5qb2luKFwiL1wiLCBwYXRoKTtcbiAgcmV0dXJuIHJvb3RUb1JlbW92ZSAmJiBhYnNvbHV0ZS5zdGFydHNXaXRoKHJvb3RUb1JlbW92ZSlcbiAgICA/IHBvc2l4LmpvaW4oXCIvXCIsIGFic29sdXRlLnJlcGxhY2Uocm9vdFRvUmVtb3ZlLCBcIlwiKSlcbiAgICA6IGFic29sdXRlO1xufVxuXG4vKiogQ2hlY2sgaWYgdGhlIHBhdGggaXMgYW4gVVJMICovXG5leHBvcnQgZnVuY3Rpb24gaXNVcmwocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAhIXBhdGgubWF0Y2goL14oaHR0cHM/fGZpbGUpOlxcL1xcLy8pO1xufVxuXG4vKiogQ2hlY2sgaWYgdGhlIHBhdGggaXMgYWJzb2x1dGUgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fic29sdXRlUGF0aChwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIFNFUEFSQVRPUiAhPT0gXCIvXCIgPyAvXlxcdzpbXFwvXFxcXF0vLnRlc3QocGF0aCkgOiBwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpO1xufVxuXG4vKiogUmVwbGFjZSB0aGUgZXh0ZW5zaW9uIG9mIGEgcGF0aCAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VFeHRlbnNpb24oXG4gIHBhdGg6IHN0cmluZyxcbiAgZXh0OiBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICByZXR1cm4gcGF0aC5yZXBsYWNlKC9cXC5cXHcrJC8sIGV4dCk7XG59XG5cbi8qKiBTcGxpdCBhIHBhdGggdG8gcGF0aCArIGV4dGVuc2lvbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhdGhBbmRFeHRlbnNpb24ocGF0aDogc3RyaW5nKTogW3N0cmluZywgc3RyaW5nXSB7XG4gIGNvbnN0IGV4dGVuc2lvbiA9IGdldEV4dGVuc2lvbihwYXRoKTtcbiAgaWYgKCFleHRlbnNpb24pIHtcbiAgICByZXR1cm4gW3BhdGgsIFwiXCJdO1xuICB9XG4gIGNvbnN0IHBhdGhXaXRob3V0RXh0ZW5zaW9uID0gcGF0aC5zbGljZSgwLCAtZXh0ZW5zaW9uLmxlbmd0aCk7XG4gIHJldHVybiBbcGF0aFdpdGhvdXRFeHRlbnNpb24sIGV4dGVuc2lvbl07XG59XG5cbi8qKiBHZXQgdGhlIGV4dGVuc2lvbiBvZiBhIHBhdGggKHRoaXMgd29ya3MgYmV0dGVyIHRoYW4gc3RkL3BhdGgpICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gcGF0aC5tYXRjaCgvXFwuXFx3KyQvKTtcbiAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMF0udG9Mb3dlckNhc2UoKSA6IFwiXCI7XG59XG5cbmV4cG9ydCB0eXBlIEV4dGVuc2lvbnMgPSBzdHJpbmdbXSB8IFwiKlwiO1xuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hFeHRlbnNpb24oZXh0czogRXh0ZW5zaW9ucywgcGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChleHRzID09PSBcIipcIikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGV4dHMuc29tZSgoZXh0KSA9PiBwYXRoLmVuZHNXaXRoKGV4dCkpO1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIHBhdGggb2YgYW4gaW5jbHVkZWQgZmlsZVxuICogVXNlZCBpbiB0aGUgdGVtcGxhdGUgZW5naW5lcyBhbmQgcHJvY2Vzc29yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUluY2x1ZGUoXG4gIHBhdGg6IHN0cmluZyxcbiAgaW5jbHVkZXNEaXI6IHN0cmluZyxcbiAgZnJvbURpcj86IHN0cmluZyxcbiAgcm9vdFRvUmVtb3ZlPzogc3RyaW5nLFxuKTogc3RyaW5nIHtcbiAgaWYgKGlzVXJsKHBhdGgpKSB7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH1cblxuICBpZiAocGF0aC5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgIGlmICghZnJvbURpcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgbG9hZCBcIiR7cGF0aH1cIiB3aXRob3V0IGEgYmFzZSBkaXJlY3RvcnlgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9ybWFsaXplUGF0aChwb3NpeC5qb2luKGZyb21EaXIsIHBhdGgpLCByb290VG9SZW1vdmUpO1xuICB9XG5cbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVBhdGgocGF0aCwgcm9vdFRvUmVtb3ZlKTtcblxuICByZXR1cm4gbm9ybWFsaXplZC5zdGFydHNXaXRoKG5vcm1hbGl6ZVBhdGgocG9zaXguam9pbihpbmNsdWRlc0RpciwgXCIvXCIpKSlcbiAgICA/IG5vcm1hbGl6ZWRcbiAgICA6IG5vcm1hbGl6ZVBhdGgocG9zaXguam9pbihpbmNsdWRlc0Rpciwgbm9ybWFsaXplZCkpO1xufVxuXG4vKipcbiAqIGRlY29kZVVSSSgpIGNhbid0IGRlY29kZSB0aGUgYCVgIGNoYXJhY3RlciwgYXMgaXQgaXMgdXNlZCBpbiBhbnkgZW5jb2RlZCBjaGFyYWN0ZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVVSSUNvbXBvbmVudFNhZmUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChwYXRoLnJlcGxhY2UoLyUoPyFbMC05YS1mQS1GXSspL2csIFwiJTI1XCIpKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLEtBQUssRUFBRSxTQUFTLFFBQVEscUJBQXFCO0FBRXREOzs7O0NBSUMsR0FDRCxPQUFPLFNBQVMsY0FBYyxJQUFZLEVBQUUsWUFBcUI7RUFDL0QsSUFBSSxjQUFjO0lBQ2hCLE9BQU8sS0FBSyxPQUFPLENBQUMsY0FBYztFQUNwQztFQUVBLElBQUksY0FBYyxLQUFLO0lBQ3JCLE9BQU8sS0FBSyxVQUFVLENBQUMsV0FBVztJQUVsQyxvQ0FBb0M7SUFDcEMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxPQUFPO01BQ3ZCLElBQUksZ0JBQWdCLEtBQUssVUFBVSxDQUFDLGVBQWU7UUFDakQsT0FBTyxNQUFNLElBQUksQ0FBQyxLQUFLLEtBQUssT0FBTyxDQUFDLGNBQWM7TUFDcEQ7TUFFQSxPQUFPO0lBQ1Q7RUFDRjtFQUVBLE1BQU0sV0FBVyxNQUFNLElBQUksQ0FBQyxLQUFLO0VBQ2pDLE9BQU8sZ0JBQWdCLFNBQVMsVUFBVSxDQUFDLGdCQUN2QyxNQUFNLElBQUksQ0FBQyxLQUFLLFNBQVMsT0FBTyxDQUFDLGNBQWMsT0FDL0M7QUFDTjtBQUVBLGdDQUFnQyxHQUNoQyxPQUFPLFNBQVMsTUFBTSxJQUFZO0VBQ2hDLE9BQU8sQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDO0FBQ3RCO0FBRUEsa0NBQWtDLEdBQ2xDLE9BQU8sU0FBUyxlQUFlLElBQVk7RUFDekMsT0FBTyxjQUFjLE1BQU0sYUFBYSxJQUFJLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQztBQUN2RTtBQUVBLG9DQUFvQyxHQUNwQyxPQUFPLFNBQVMsaUJBQ2QsSUFBWSxFQUNaLEdBQVc7RUFFWCxPQUFPLEtBQUssT0FBTyxDQUFDLFVBQVU7QUFDaEM7QUFFQSxxQ0FBcUMsR0FDckMsT0FBTyxTQUFTLG9CQUFvQixJQUFZO0VBQzlDLE1BQU0sWUFBWSxhQUFhO0VBQy9CLElBQUksQ0FBQyxXQUFXO0lBQ2QsT0FBTztNQUFDO01BQU07S0FBRztFQUNuQjtFQUNBLE1BQU0sdUJBQXVCLEtBQUssS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLE1BQU07RUFDNUQsT0FBTztJQUFDO0lBQXNCO0dBQVU7QUFDMUM7QUFFQSxrRUFBa0UsR0FDbEUsT0FBTyxTQUFTLGFBQWEsSUFBWTtFQUN2QyxNQUFNLFFBQVEsS0FBSyxLQUFLLENBQUM7RUFDekIsT0FBTyxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxLQUFLO0FBQzFDO0FBSUEsT0FBTyxTQUFTLGVBQWUsSUFBZ0IsRUFBRSxJQUFZO0VBQzNELElBQUksU0FBUyxLQUFLO0lBQ2hCLE9BQU87RUFDVDtFQUVBLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxNQUFRLEtBQUssUUFBUSxDQUFDO0FBQzFDO0FBRUE7OztDQUdDLEdBQ0QsT0FBTyxTQUFTLGVBQ2QsSUFBWSxFQUNaLFdBQW1CLEVBQ25CLE9BQWdCLEVBQ2hCLFlBQXFCO0VBRXJCLElBQUksTUFBTSxPQUFPO0lBQ2YsT0FBTztFQUNUO0VBRUEsSUFBSSxLQUFLLFVBQVUsQ0FBQyxNQUFNO0lBQ3hCLElBQUksQ0FBQyxTQUFTO01BQ1osTUFBTSxJQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUUsS0FBSywwQkFBMEIsQ0FBQztJQUNsRTtJQUVBLE9BQU8sY0FBYyxNQUFNLElBQUksQ0FBQyxTQUFTLE9BQU87RUFDbEQ7RUFFQSxNQUFNLGFBQWEsY0FBYyxNQUFNO0VBRXZDLE9BQU8sV0FBVyxVQUFVLENBQUMsY0FBYyxNQUFNLElBQUksQ0FBQyxhQUFhLFNBQy9ELGFBQ0EsY0FBYyxNQUFNLElBQUksQ0FBQyxhQUFhO0FBQzVDO0FBRUE7O0NBRUMsR0FDRCxPQUFPLFNBQVMsdUJBQXVCLElBQVk7RUFDakQsT0FBTyxtQkFBbUIsS0FBSyxPQUFPLENBQUMsc0JBQXNCO0FBQy9EIn0= +// denoCacheMetadata=17835470127055906488,3896949353918868687
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/89ad6ac51ee2a5f2898c804219dc6e99fd3e304e28a49a796a4b9fd3ce793d2f.js b/vendor/gen/https/deno.land/89ad6ac51ee2a5f2898c804219dc6e99fd3e304e28a49a796a4b9fd3ce793d2f.js new file mode 100644 index 0000000..a4a6679 --- /dev/null +++ b/vendor/gen/https/deno.land/89ad6ac51ee2a5f2898c804219dc6e99fd3e304e28a49a796a4b9fd3ce793d2f.js @@ -0,0 +1,26 @@ +import { Provider } from "../provider.ts"; +export class DenoLandProvider extends Provider { + name = "deno.land"; + repositoryUrl = "https://deno.land/x/"; + registryUrl = "https://deno.land/x/"; + moduleName; + constructor({ name } = {}){ + super(); + this.moduleName = name; + } + async getVersions(name) { + const response = await fetch(`https://cdn.deno.land/${this.moduleName ?? name}/meta/versions.json`); + if (!response.ok) { + throw new Error("couldn't fetch the latest version - try again after sometime"); + } + return await response.json(); + } + getRepositoryUrl(name) { + return new URL(`${this.moduleName ?? name}/`, this.repositoryUrl).href; + } + getRegistryUrl(name, version) { + return new URL(`${this.moduleName ?? name}@${version}/`, this.registryUrl).href; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC91cGdyYWRlL3Byb3ZpZGVyL2Rlbm9fbGFuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm92aWRlciwgVmVyc2lvbnMgfSBmcm9tIFwiLi4vcHJvdmlkZXIudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEZW5vTGFuZFByb3ZpZGVyT3B0aW9ucyB7XG4gIG5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBEZW5vTGFuZFByb3ZpZGVyIGV4dGVuZHMgUHJvdmlkZXIge1xuICBuYW1lID0gXCJkZW5vLmxhbmRcIjtcbiAgcHJpdmF0ZSByZWFkb25seSByZXBvc2l0b3J5VXJsID0gXCJodHRwczovL2Rlbm8ubGFuZC94L1wiO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lzdHJ5VXJsID0gXCJodHRwczovL2Rlbm8ubGFuZC94L1wiO1xuICBwcml2YXRlIHJlYWRvbmx5IG1vZHVsZU5hbWU/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoeyBuYW1lIH06IERlbm9MYW5kUHJvdmlkZXJPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubW9kdWxlTmFtZSA9IG5hbWU7XG4gIH1cblxuICBhc3luYyBnZXRWZXJzaW9ucyhcbiAgICBuYW1lOiBzdHJpbmcsXG4gICk6IFByb21pc2U8VmVyc2lvbnM+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKFxuICAgICAgYGh0dHBzOi8vY2RuLmRlbm8ubGFuZC8ke3RoaXMubW9kdWxlTmFtZSA/PyBuYW1lfS9tZXRhL3ZlcnNpb25zLmpzb25gLFxuICAgICk7XG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcImNvdWxkbid0IGZldGNoIHRoZSBsYXRlc3QgdmVyc2lvbiAtIHRyeSBhZ2FpbiBhZnRlciBzb21ldGltZVwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICB9XG5cbiAgZ2V0UmVwb3NpdG9yeVVybChuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgVVJMKGAke3RoaXMubW9kdWxlTmFtZSA/PyBuYW1lfS9gLCB0aGlzLnJlcG9zaXRvcnlVcmwpLmhyZWY7XG4gIH1cblxuICBnZXRSZWdpc3RyeVVybChuYW1lOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBVUkwoYCR7dGhpcy5tb2R1bGVOYW1lID8/IG5hbWV9QCR7dmVyc2lvbn0vYCwgdGhpcy5yZWdpc3RyeVVybClcbiAgICAgIC5ocmVmO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxRQUFRLFFBQWtCLGlCQUFpQjtBQU1wRCxPQUFPLE1BQU0seUJBQXlCO0VBQ3BDLE9BQU8sWUFBWTtFQUNGLGdCQUFnQix1QkFBdUI7RUFDdkMsY0FBYyx1QkFBdUI7RUFDckMsV0FBb0I7RUFFckMsWUFBWSxFQUFFLElBQUksRUFBMkIsR0FBRyxDQUFDLENBQUMsQ0FBRTtJQUNsRCxLQUFLO0lBQ0wsSUFBSSxDQUFDLFVBQVUsR0FBRztFQUNwQjtFQUVBLE1BQU0sWUFDSixJQUFZLEVBQ087SUFDbkIsTUFBTSxXQUFXLE1BQU0sTUFDckIsQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsVUFBVSxJQUFJLEtBQUssbUJBQW1CLENBQUM7SUFFdkUsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFO01BQ2hCLE1BQU0sSUFBSSxNQUNSO0lBRUo7SUFFQSxPQUFPLE1BQU0sU0FBUyxJQUFJO0VBQzVCO0VBRUEsaUJBQWlCLElBQVksRUFBVTtJQUNyQyxPQUFPLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUk7RUFDeEU7RUFFQSxlQUFlLElBQVksRUFBRSxPQUFlLEVBQVU7SUFDcEQsT0FBTyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFDdEUsSUFBSTtFQUNUO0FBQ0YifQ== +// denoCacheMetadata=7454842681798002881,16625641813352336726
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/8a02dcdbb7385b814998c348f029efb817aa93be139f0be6f6fbdb009d364f72.js b/vendor/gen/https/deno.land/8a02dcdbb7385b814998c348f029efb817aa93be139f0be6f6fbdb009d364f72.js new file mode 100644 index 0000000..9ecf95e --- /dev/null +++ b/vendor/gen/https/deno.land/8a02dcdbb7385b814998c348f029efb817aa93be139f0be6f6fbdb009d364f72.js @@ -0,0 +1,3 @@ +export * from "jsr:@std/yaml@1.0.6"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvZGVwcy95YW1sLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCJqc3I6QHN0ZC95YW1sQDEuMC42XCI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IifQ== +// denoCacheMetadata=3422642981563961368,2749290080844356366
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/8a1d4511b8f2b9aed2a8d06d26234b32d0b2e2fd089c56788746a84ce2b5657a.js b/vendor/gen/https/deno.land/8a1d4511b8f2b9aed2a8d06d26234b32d0b2e2fd089c56788746a84ce2b5657a.js new file mode 100644 index 0000000..c8b2304 --- /dev/null +++ b/vendor/gen/https/deno.land/8a1d4511b8f2b9aed2a8d06d26234b32d0b2e2fd089c56788746a84ce2b5657a.js @@ -0,0 +1,714 @@ +import { join, posix } from "../deps/path.ts"; +import { merge } from "./utils/object.ts"; +import { isUrl, normalizePath } from "./utils/path.ts"; +import { env } from "./utils/env.ts"; +import { log } from "./utils/log.ts"; +import { filter404page } from "./utils/page_url.ts"; +import { insertContent } from "./utils/page_content.ts"; +import FS from "./fs.ts"; +import { compileCSS, compileJS, ComponentLoader } from "./components.ts"; +import DataLoader from "./data_loader.ts"; +import Source from "./source.ts"; +import Scopes from "./scopes.ts"; +import Processors from "./processors.ts"; +import Renderer from "./renderer.ts"; +import Events from "./events.ts"; +import Formats from "./formats.ts"; +import Searcher from "./searcher.ts"; +import Scripts from "./scripts.ts"; +import FSWatcher from "../core/watcher.ts"; +import { FSWriter } from "./writer.ts"; +import { filesToPages, Page } from "./file.ts"; +import textLoader from "./loaders/text.ts"; +import binaryLoader from "./loaders/binary.ts"; +import Server from "./server.ts"; +import Cache from "./cache.ts"; +import DebugBar from "./debugbar.ts"; +import notFound from "../middlewares/not_found.ts"; +/** Default options of the site */ const defaults = { + cwd: Deno.cwd(), + src: "./", + dest: "./_site", + emptyDest: true, + caseSensitiveUrls: false, + includes: "_includes", + cssFile: "/style.css", + jsFile: "/script.js", + fontsFolder: "/fonts", + location: new URL("http://localhost"), + prettyUrls: true, + server: { + port: 3000, + hostname: "localhost", + open: false, + page404: "/404.html", + middlewares: [] + }, + watcher: { + ignore: [], + debounce: 100, + include: [] + }, + components: {} +}; +/** + * This is the heart of Lume, + * it contains everything needed to build the site + */ export default class Site { + options; + /** Internal data. Used to save arbitrary data by plugins and processors */ _data = {}; + /** To read the files from the filesystem */ fs; + /** Info about how to handle different file formats */ formats; + /** To load all _data files */ dataLoader; + /** To load reusable components */ componentLoader; + /** To scan the src folder */ source; + /** To update pages of the same scope after any change */ scopes; + /** To store and run the processors */ processors; + /** To store and run the pre-processors */ preprocessors; + /** To render the pages using any template engine */ renderer; + /** To listen and dispatch events */ // deno-lint-ignore no-explicit-any + events; + /** To run scripts */ scripts; + /** To search pages */ search; + /** To store cached stuff in the _cache folder */ cache; + /** To write the generated pages in the dest folder */ writer; + /** Data assigned with site.data() */ scopedData = new Map([ + [ + "/", + {} + ] + ]); + /** Pages created with site.page() */ scopedPages = new Map(); + /** Components created with site.component() */ scopedComponents = new Map(); + /** Hooks installed by the plugins */ // deno-lint-ignore no-explicit-any + hooks = {}; + /** The debug bar data */ debugBar; + /** The generated pages are stored here */ pages = []; + /** The static files to be copied are stored here */ files = []; + fetch; + constructor(options = {}){ + this.options = merge(defaults, options); + const src = this.src(); + const dest = this.dest(); + const { includes, cwd, prettyUrls, components, server, caseSensitiveUrls } = this.options; + // To load source files + const fs = new FS({ + root: src + }); + const formats = new Formats(); + const dataLoader = new DataLoader({ + formats + }); + const componentLoader = new ComponentLoader({ + formats + }); + const source = new Source({ + fs, + dataLoader, + componentLoader, + formats, + components: { + cssFile: components.cssFile ?? this.options.cssFile, + jsFile: components.jsFile ?? this.options.jsFile + }, + scopedData: this.scopedData, + scopedPages: this.scopedPages, + scopedComponents: this.scopedComponents, + prettyUrls, + basenameParsers: [] + }); + // To render pages + const scopes = new Scopes(); + const processors = new Processors(); + const preprocessors = new Processors(); + const renderer = new Renderer({ + prettyUrls, + preprocessors, + formats, + fs, + includes + }); + // Other stuff + const events = new Events(); + const scripts = new Scripts({ + cwd + }); + const writer = new FSWriter({ + dest, + caseSensitiveUrls + }); + const searcher = new Searcher({ + pages: this.pages, + files: this.files, + sourceData: source.data, + filters: [ + (data)=>data.page.outputPath.endsWith(".html") ?? false, + filter404page(server.page404) + ] + }); + // Save everything in the site instance + this.fs = fs; + this.formats = formats; + this.componentLoader = componentLoader; + this.dataLoader = dataLoader; + this.source = source; + this.scopes = scopes; + this.processors = processors; + this.preprocessors = preprocessors; + this.renderer = renderer; + this.events = events; + this.scripts = scripts; + this.search = searcher; + this.writer = writer; + // Ignore the "dest" directory if it's inside src + if (this.dest().startsWith(this.src())) { + this.ignore(this.options.dest); + } + // Ignore the includes folder + this.ignore(this.options.includes); + // Normalize the ignored paths + this.options.watcher.ignore = this.options.watcher.ignore.map((path)=>typeof path === "string" ? normalizePath(path) : path); + // Ignore the dest folder by the watcher + this.options.watcher.ignore.push(normalizePath(this.options.dest)); + this.fs.options.ignore = this.options.watcher.ignore; + // Initialize the cache if LUME_NOCACHE is not enabled + if (env("LUME_NOCACHE") !== true) { + this.cache = new Cache({ + folder: this.root("_cache") + }); + } + // Initialize the debug bar + const initDebugBar = this.options.server.debugBar ?? env("LUME_LIVE_RELOAD"); + if (initDebugBar) { + const debugBar = new DebugBar({ + url: typeof initDebugBar === "string" ? initDebugBar : undefined + }); + this.addEventListener("beforeUpdate", ()=>debugBar.clear()); + this.debugBar = debugBar; + log.collection = debugBar.collection("Build"); + } + // Create the fetch function for `deno serve` + let fetchServer; + this.fetch = (request, info)=>{ + if (!fetchServer) { + fetchServer = this.getServer(); + } + return fetchServer.handle(request, info); + }; + } + /** + * Returns the full path to the root directory. + * Use the arguments to return a subpath + */ root(...path) { + return normalizePath(join(this.options.cwd, ...path)); + } + /** + * Returns the full path to the src directory. + * Use the arguments to return a subpath + */ src(...path) { + return this.root(this.options.src, ...path); + } + /** + * Returns the full path to the dest directory. + * Use the arguments to return a subpath + */ dest(...path) { + return this.root(this.options.dest, ...path); + } + /** Add a listener to an event */ addEventListener(type, listener, options) { + const fn = typeof listener === "string" ? ()=>this.run(listener) : listener; + this.events.addEventListener(type, fn, options); + return this; + } + /** Dispatch an event */ dispatchEvent(event) { + return this.events.dispatchEvent(event); + } + /** Use a plugin */ use(plugin) { + plugin(this); + return this; + } + /** + * Register a script or a function, so it can be executed with + * lume run <name> + */ script(name, ...scripts) { + this.scripts.set(name, ...scripts); + return this; + } + /** Runs a script or function registered previously */ async run(name) { + return await this.scripts.run(name); + } + /** + * Register a data loader for some extensions + */ loadData(extensions, dataLoader = textLoader) { + extensions.forEach((ext)=>{ + this.formats.set({ + ext, + dataLoader + }); + }); + return this; + } + /** + * Register a page loader for some extensions + */ loadPages(extensions, options = {}) { + if (typeof options === "function") { + options = { + loader: options + }; + } + const { engine, pageSubExtension } = options; + const loader = options.loader || textLoader; + const engines = Array.isArray(engine) ? engine : engine ? [ + engine + ] : []; + const pageExtensions = pageSubExtension ? extensions.map((ext)=>pageSubExtension + ext) : extensions; + pageExtensions.forEach((ext)=>{ + this.formats.set({ + ext, + loader, + isPage: true, + engines + }); + }); + if (pageSubExtension) { + extensions.forEach((ext)=>this.formats.set({ + ext, + loader, + engines + })); + } + for (const [name, helper] of this.renderer.helpers){ + engines.forEach((engine)=>engine.addHelper(name, ...helper)); + } + return this; + } + preprocess(extensions, preprocessor) { + if (typeof extensions === "function") { + return this.preprocess("*", extensions); + } + this.preprocessors.set(extensions, preprocessor); + if (Array.isArray(extensions)) { + extensions.forEach((ext)=>this.formats.set({ + ext + })); + } + return this; + } + process(extensions, processor) { + if (typeof extensions === "function") { + return this.process("*", extensions); + } + this.processors.set(extensions, processor); + if (Array.isArray(extensions)) { + extensions.forEach((ext)=>this.formats.set({ + ext + })); + } + return this; + } + /** Register a template filter */ filter(name, filter, async = false) { + return this.helper(name, filter, { + type: "filter", + async + }); + } + /** Register a template helper */ helper(name, fn, options) { + this.renderer.addHelper(name, fn, options); + return this; + } + /** Register a basename parser */ parseBasename(parser) { + this.source.basenameParsers.push(parser); + return this; + } + /** Register extra data accessible by the layouts */ data(name, value, scope = "/") { + const data = this.scopedData.get(scope) || {}; + data[name] = value; + this.scopedData.set(scope, data); + return this; + } + /** Register a page */ page(data, scope = "/") { + const pages = this.scopedPages.get(scope) || []; + pages.push(data); + this.scopedPages.set(scope, pages); + return this; + } + /** Register an extra component accesible by the layouts */ component(context, component, scope = "/") { + const pieces = context.split("."); + const scopedComponents = this.scopedComponents.get(scope) || new Map(); + let components = scopedComponents; + while(pieces.length){ + const name = pieces.shift(); + if (!components.get(name)) { + components.set(name, new Map()); + } + components = components.get(name); + } + const assets = new Map(); + if (component.css) { + assets.set(component.name + ".css", component.css); + } + if (component.js) { + assets.set(component.name + ".js", component.js); + } + components.set(component.name, { + name: component.name, + render: component.render, + assets + }); + this.scopedComponents.set(scope, scopedComponents); + return this; + } + /** Register a merging strategy for a data key */ mergeKey(key, merge, scope = "/") { + const data = this.scopedData.get(scope) || {}; + const mergedKeys = data.mergedKeys || {}; + mergedKeys[key] = merge; + data.mergedKeys = mergedKeys; + this.scopedData.set(scope, data); + return this; + } + add(from, to) { + this.#addOrCopy(from, to, false); + return this; + } + copy(from, to) { + this.#addOrCopy(from, to, true); + return this; + } + /** Add or copy files or directories to the site */ #addOrCopy(from, to, copy) { + // File extensions + if (Array.isArray(from)) { + if (typeof to === "string") { + throw new Error(`add() files by extension expects a function as second argument but got a string "${to}"`); + } + const dest = typeof to === "function" ? to : (path)=>path; + for (const ext of from){ + this.source.addFile(ext, dest, copy); + this.formats.set({ + ext + }); + } + return; + } + // Remote files + if (from.startsWith("npm:")) { + from = from.replace("npm:", "https://cdn.jsdelivr.net/npm/"); + } + if (isUrl(from)) { + const url = new URL(from); + if (to === undefined) { + to = posix.basename(url.pathname) || undefined; + } + if (typeof to === "function") { + to = to(url.href); + } + if (to?.endsWith("/")) { + to = posix.join(to, posix.basename(url.pathname)); + } + if (!to || to.endsWith("/")) { + throw new Error(`Invalid destination path: ${to}`); + } + this.remoteFile(to, url.href); + this.source.addFile(to, to, copy); + return; + } + // It's a path + if (from.startsWith("../")) { + throw new Error(`It's not possible to copy files outsite the src directory ("${from}")`); + } + this.source.addFile(normalizePath(from), to ?? ((str)=>str), copy); + } + /** Ignore one or several files or directories */ ignore(...paths) { + paths.forEach((path)=>{ + if (typeof path === "string") { + this.source.addIgnoredPath(path); + } else { + this.source.addIgnoreFilter(path); + } + }); + return this; + } + /** Define independent scopes to optimize the update process */ scopedUpdates(...scopes) { + scopes.forEach((scope)=>this.scopes.scopes.add(scope)); + return this; + } + /** Define a remote fallback for a missing local file */ remoteFile(filename, url) { + this.fs.remoteFiles.set(posix.join("/", filename), url); + return this; + } + /** Clear the dest directory and any cache */ async clear() { + await this.writer.clear(); + } + /** Build the entire site */ async build() { + if (await this.dispatchEvent({ + type: "beforeBuild" + }) === false) { + return; + } + if (this.options.emptyDest) { + await this.clear(); + } + performance.mark("start-loadfiles"); + // Load source files + this.fs.init(); + if (await this.dispatchEvent({ + type: "afterLoad" + }) === false) { + return; + } + // Get the site content + const showDrafts = env("LUME_DRAFTS"); + const [_pages, _staticFiles] = await this.source.build((_, page)=>!page?.data.draft || showDrafts === true); + performance.mark("end-loadfiles"); + log.debug(`Pages loaded in ${(performance.measure("duration", "start-loadfiles", "end-loadfiles").duration / 1000).toFixed(2)} seconds`); + // Save static files into site.files + this.files.splice(0, this.files.length, ..._staticFiles); + // Stop if the build is cancelled + if (await this.#buildPages(_pages) === false) { + return; + } + // Save the pages and copy static files in the dest folder + const pages = await this.writer.savePages(this.pages); + const staticFiles = await this.writer.copyFiles(this.files); + await this.dispatchEvent({ + type: "afterBuild", + pages, + staticFiles + }); + } + /** Reload some files that might be changed */ async update(files) { + if (await this.dispatchEvent({ + type: "beforeUpdate", + files + }) === false) { + return; + } + this.search.deleteCache(); + // Reload the changed files + for (const file of files){ + // Delete the file from the cache + this.formats.deleteCache(file); + const entry = this.fs.update(file); + if (!entry) { + continue; + } + // Remove pages or static files depending on this entry + const pages = this.pages.filter((page)=>pathBelongs(entry.path, page.src.entry?.path)).map((page)=>page.outputPath); + const files = this.files.filter((file)=>pathBelongs(entry.path, file.src.entry?.path)).map((file)=>file.outputPath); + await this.writer.removeFiles([ + ...pages, + ...files + ]); + } + if (await this.dispatchEvent({ + type: "afterLoad" + }) === false) { + return; + } + // Get the site content + const showDrafts = env("LUME_DRAFTS"); + const [_pages, _staticFiles] = await this.source.build((_, page)=>!page?.data.draft || showDrafts === true, this.scopes.getFilter(files)); + // Build the pages and save static files into site.files + this.files.splice(0, this.files.length, ..._staticFiles); + if (await this.#buildPages(_pages) === false) { + return; + } + // Save the pages and copy static files in the dest folder + const pages = await this.writer.savePages(this.pages); + const staticFiles = await this.writer.copyFiles(this.files); + await this.dispatchEvent({ + type: "afterUpdate", + files, + pages, + staticFiles + }); + } + /** + * Internal function to render pages + * The common operations of build and update + */ async #buildPages(pages) { + // Promote the files that must be preprocessed to pages + const preExtensions = this.preprocessors.extensions; + await filesToPages(this.files, pages, (file)=>!file.isCopy && preExtensions.has(file.src.ext)); + if (await this.dispatchEvent({ + type: "beforeRender", + pages + }) === false) { + return false; + } + performance.mark("start-render"); + // Render the pages + this.pages.splice(0); + await this.renderer.renderPages(pages, this.pages); + // Add extra code generated by the components + for (const { path, entries } of this.source.getComponentsExtraCode()){ + if (path.endsWith(".css")) { + const page = await this.getOrCreatePage(path); + page.text = insertContent(page.text, await compileCSS(path, entries, this.fs.entries), this.options.components.placeholder); + continue; + } + if (path.endsWith(".js")) { + const page = await this.getOrCreatePage(path); + page.text = insertContent(page.text, await compileJS(path, entries, this.fs.entries), this.options.components.placeholder); + } + } + // Remove empty pages + this.pages.splice(0, this.pages.length, ...this.pages.filter((page)=>{ + if (!page.content) { + log.warn(`[Lume] <cyan>Skipped page</cyan> ${page.data.url} (file content is empty)`); + return false; + } + return true; + })); + performance.mark("end-render"); + log.debug(`Pages rendered in ${(performance.measure("duration", "start-render", "end-render").duration / 1000).toFixed(2)} seconds`); + performance.mark("start-process"); + if (await this.events.dispatchEvent({ + type: "afterRender", + pages: this.pages + }) === false) { + return false; + } + // Promote the files that must be processed to pages + const extensions = this.processors.extensions; + await filesToPages(this.files, this.pages, (file)=>!file.isCopy && extensions.has(file.src.ext)); + // Run the processors to the pages + await this.processors.run(this.pages); + performance.mark("end-process"); + log.debug(`Pages processed in ${(performance.measure("duration", "start-process", "end-process").duration / 1000).toFixed(2)} seconds`); + return await this.dispatchEvent({ + type: "beforeSave" + }); + } + /** Return the URL of a path */ url(path, absolute = false) { + if (path.startsWith("./") || path.startsWith("../") || path.startsWith("?") || path.startsWith("#") || path.startsWith("//")) { + return path; + } + // It's a source file + if (path.startsWith("~/")) { + path = decodeURI(path.slice(1)); + // Has a search query + const match = path.match(/^(.*)\s*\(([^)]+)\)$/); + const srcPath = match ? match[1] : path; + const pages = match ? this.search.pages(match[2]).map((data)=>data.page) : this.pages; + // It's a page + const page = pages.find((page)=>page.src.path + page.src.ext === srcPath); + if (page) { + path = page.data.url; + } else { + // It's a static file + const file = this.files.find((file)=>file.src.entry.path === path); + if (file) { + path = file.outputPath; + } else { + throw new Error(`Source file not found: ${path}`); + } + } + } else { + // Absolute URLs are returned as is + try { + return new URL(path).href; + } catch { + // Ignore error + } + } + if (!path.startsWith(this.options.location.pathname)) { + path = posix.join(this.options.location.pathname, path); + } + return absolute ? this.options.location.origin + path : path; + } + async getOrCreatePage(url) { + url = normalizePath(url); + // It's a page + const page = this.pages.find((page)=>page.data.url === url); + if (page) { + return page; + } + // It's a static file + const index = this.files.findIndex((f)=>f.outputPath === url); + if (index > -1) { + const file = this.files.splice(index, 1)[0]; + const page = await file.toPage(); + this.pages.push(page); + return page; + } + // Read the source files directly + const entry = this.fs.entries.get(url); + if (entry) { + const { content } = await entry.getContent(binaryLoader); + const page = Page.create({ + url + }, { + entry + }); + page.content = content; + this.pages.push(page); + return page; + } + const newPage = Page.create({ + url + }); + this.pages.push(newPage); + return newPage; + } + async getContent(file, binary) { + file = normalizePath(file); + const basePath = this.src(); + if (file.startsWith(basePath)) { + file = normalizePath(file.slice(basePath.length)); + } + file = decodeURI(file); + const url = encodeURI(file); + // It's a page + const page = this.pages.find((page)=>page.data.url === url); + if (page) { + return binary ? page.bytes : page.text; + } + // It's a static file + const staticFile = this.files.find((f)=>f.outputPath === file); + if (staticFile) { + return binary ? (await staticFile.src.entry.getContent(binaryLoader)).content : (await staticFile.src.entry.getContent(textLoader)).content; + } + // Read the source files directly + try { + const entry = this.fs.entries.get(file); + if (entry) { + return binary ? (await entry.getContent(binaryLoader)).content : (await entry.getContent(textLoader)).content; + } + } catch { + // Ignore error + } + } + /** Returns a File system watcher of the site */ getWatcher() { + return new FSWatcher({ + root: this.src(), + paths: this.options.watcher.include, + ignore: this.options.watcher.ignore, + debounce: this.options.watcher.debounce + }); + } + /** Returns a Web server of the site */ getServer() { + const { port, hostname, page404, middlewares } = this.options.server; + const root = this.options.server.root || this.dest(); + const server = new Server({ + root, + port, + hostname + }); + server.use(notFound({ + root, + page404, + directoryIndex: true + })); + if (middlewares) { + server.use(...middlewares); + } + return server; + } +} +function pathBelongs(base, path) { + if (!path) { + return false; + } + return base === path || path?.startsWith(base + "/"); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS9zaXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4sIHBvc2l4IH0gZnJvbSBcIi4uL2RlcHMvcGF0aC50c1wiO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tIFwiLi91dGlscy9vYmplY3QudHNcIjtcbmltcG9ydCB7IGlzVXJsLCBub3JtYWxpemVQYXRoIH0gZnJvbSBcIi4vdXRpbHMvcGF0aC50c1wiO1xuaW1wb3J0IHsgZW52IH0gZnJvbSBcIi4vdXRpbHMvZW52LnRzXCI7XG5pbXBvcnQgeyBsb2cgfSBmcm9tIFwiLi91dGlscy9sb2cudHNcIjtcbmltcG9ydCB7IGZpbHRlcjQwNHBhZ2UgfSBmcm9tIFwiLi91dGlscy9wYWdlX3VybC50c1wiO1xuaW1wb3J0IHsgaW5zZXJ0Q29udGVudCB9IGZyb20gXCIuL3V0aWxzL3BhZ2VfY29udGVudC50c1wiO1xuXG5pbXBvcnQgRlMgZnJvbSBcIi4vZnMudHNcIjtcbmltcG9ydCB7IGNvbXBpbGVDU1MsIGNvbXBpbGVKUywgQ29tcG9uZW50TG9hZGVyIH0gZnJvbSBcIi4vY29tcG9uZW50cy50c1wiO1xuaW1wb3J0IERhdGFMb2FkZXIgZnJvbSBcIi4vZGF0YV9sb2FkZXIudHNcIjtcbmltcG9ydCBTb3VyY2UgZnJvbSBcIi4vc291cmNlLnRzXCI7XG5pbXBvcnQgU2NvcGVzIGZyb20gXCIuL3Njb3Blcy50c1wiO1xuaW1wb3J0IFByb2Nlc3NvcnMgZnJvbSBcIi4vcHJvY2Vzc29ycy50c1wiO1xuaW1wb3J0IFJlbmRlcmVyIGZyb20gXCIuL3JlbmRlcmVyLnRzXCI7XG5pbXBvcnQgRXZlbnRzIGZyb20gXCIuL2V2ZW50cy50c1wiO1xuaW1wb3J0IEZvcm1hdHMgZnJvbSBcIi4vZm9ybWF0cy50c1wiO1xuaW1wb3J0IFNlYXJjaGVyIGZyb20gXCIuL3NlYXJjaGVyLnRzXCI7XG5pbXBvcnQgU2NyaXB0cyBmcm9tIFwiLi9zY3JpcHRzLnRzXCI7XG5pbXBvcnQgRlNXYXRjaGVyIGZyb20gXCIuLi9jb3JlL3dhdGNoZXIudHNcIjtcbmltcG9ydCB7IEZTV3JpdGVyIH0gZnJvbSBcIi4vd3JpdGVyLnRzXCI7XG5pbXBvcnQgeyBmaWxlc1RvUGFnZXMsIFBhZ2UgfSBmcm9tIFwiLi9maWxlLnRzXCI7XG5pbXBvcnQgdGV4dExvYWRlciBmcm9tIFwiLi9sb2FkZXJzL3RleHQudHNcIjtcbmltcG9ydCBiaW5hcnlMb2FkZXIgZnJvbSBcIi4vbG9hZGVycy9iaW5hcnkudHNcIjtcbmltcG9ydCBTZXJ2ZXIgZnJvbSBcIi4vc2VydmVyLnRzXCI7XG5pbXBvcnQgQ2FjaGUgZnJvbSBcIi4vY2FjaGUudHNcIjtcbmltcG9ydCBEZWJ1Z0JhciBmcm9tIFwiLi9kZWJ1Z2Jhci50c1wiO1xuaW1wb3J0IG5vdEZvdW5kIGZyb20gXCIuLi9taWRkbGV3YXJlcy9ub3RfZm91bmQudHNcIjtcblxuaW1wb3J0IHR5cGUgeyBMb2FkZXIgfSBmcm9tIFwiLi9mcy50c1wiO1xuaW1wb3J0IHR5cGUgeyBCYXNlbmFtZVBhcnNlciwgRGVzdGluYXRpb24gfSBmcm9tIFwiLi9zb3VyY2UudHNcIjtcbmltcG9ydCB0eXBlIHsgQ29tcG9uZW50cywgVXNlckNvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMudHNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YSwgUmF3RGF0YSwgU3RhdGljRmlsZSB9IGZyb20gXCIuL2ZpbGUudHNcIjtcbmltcG9ydCB0eXBlIHsgRW5naW5lLCBIZWxwZXIsIEhlbHBlck9wdGlvbnMgfSBmcm9tIFwiLi9yZW5kZXJlci50c1wiO1xuaW1wb3J0IHR5cGUgeyBFdmVudCwgRXZlbnRMaXN0ZW5lciwgRXZlbnRPcHRpb25zIH0gZnJvbSBcIi4vZXZlbnRzLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFByb2Nlc3NvciB9IGZyb20gXCIuL3Byb2Nlc3NvcnMudHNcIjtcbmltcG9ydCB0eXBlIHsgRXh0ZW5zaW9ucyB9IGZyb20gXCIuL3V0aWxzL3BhdGgudHNcIjtcbmltcG9ydCB0eXBlIHsgV3JpdGVyIH0gZnJvbSBcIi4vd3JpdGVyLnRzXCI7XG5pbXBvcnQgdHlwZSB7IE1pZGRsZXdhcmUgfSBmcm9tIFwiLi9zZXJ2ZXIudHNcIjtcbmltcG9ydCB0eXBlIHsgU2NvcGVGaWx0ZXIgfSBmcm9tIFwiLi9zY29wZXMudHNcIjtcbmltcG9ydCB0eXBlIHsgU2NyaXB0T3JGdW5jdGlvbiB9IGZyb20gXCIuL3NjcmlwdHMudHNcIjtcbmltcG9ydCB0eXBlIHsgV2F0Y2hlciB9IGZyb20gXCIuL3dhdGNoZXIudHNcIjtcbmltcG9ydCB0eXBlIHsgTWVyZ2VTdHJhdGVneSB9IGZyb20gXCIuL3V0aWxzL21lcmdlX2RhdGEudHNcIjtcblxuLyoqIERlZmF1bHQgb3B0aW9ucyBvZiB0aGUgc2l0ZSAqL1xuY29uc3QgZGVmYXVsdHM6IFNpdGVPcHRpb25zID0ge1xuICBjd2Q6IERlbm8uY3dkKCksXG4gIHNyYzogXCIuL1wiLFxuICBkZXN0OiBcIi4vX3NpdGVcIixcbiAgZW1wdHlEZXN0OiB0cnVlLFxuICBjYXNlU2Vuc2l0aXZlVXJsczogZmFsc2UsXG4gIGluY2x1ZGVzOiBcIl9pbmNsdWRlc1wiLFxuICBjc3NGaWxlOiBcIi9zdHlsZS5jc3NcIixcbiAganNGaWxlOiBcIi9zY3JpcHQuanNcIixcbiAgZm9udHNGb2xkZXI6IFwiL2ZvbnRzXCIsXG4gIGxvY2F0aW9uOiBuZXcgVVJMKFwiaHR0cDovL2xvY2FsaG9zdFwiKSxcbiAgcHJldHR5VXJsczogdHJ1ZSxcbiAgc2VydmVyOiB7XG4gICAgcG9ydDogMzAwMCxcbiAgICBob3N0bmFtZTogXCJsb2NhbGhvc3RcIixcbiAgICBvcGVuOiBmYWxzZSxcbiAgICBwYWdlNDA0OiBcIi80MDQuaHRtbFwiLFxuICAgIG1pZGRsZXdhcmVzOiBbXSxcbiAgfSxcbiAgd2F0Y2hlcjoge1xuICAgIGlnbm9yZTogW10sXG4gICAgZGVib3VuY2U6IDEwMCxcbiAgICBpbmNsdWRlOiBbXSxcbiAgfSxcbiAgY29tcG9uZW50czoge30sXG59O1xuXG4vKipcbiAqIFRoaXMgaXMgdGhlIGhlYXJ0IG9mIEx1bWUsXG4gKiBpdCBjb250YWlucyBldmVyeXRoaW5nIG5lZWRlZCB0byBidWlsZCB0aGUgc2l0ZVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaXRlIHtcbiAgb3B0aW9uczogU2l0ZU9wdGlvbnM7XG5cbiAgLyoqIEludGVybmFsIGRhdGEuIFVzZWQgdG8gc2F2ZSBhcmJpdHJhcnkgZGF0YSBieSBwbHVnaW5zIGFuZCBwcm9jZXNzb3JzICovXG4gIF9kYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG4gIC8qKiBUbyByZWFkIHRoZSBmaWxlcyBmcm9tIHRoZSBmaWxlc3lzdGVtICovXG4gIGZzOiBGUztcblxuICAvKiogSW5mbyBhYm91dCBob3cgdG8gaGFuZGxlIGRpZmZlcmVudCBmaWxlIGZvcm1hdHMgKi9cbiAgZm9ybWF0czogRm9ybWF0cztcblxuICAvKiogVG8gbG9hZCBhbGwgX2RhdGEgZmlsZXMgKi9cbiAgZGF0YUxvYWRlcjogRGF0YUxvYWRlcjtcblxuICAvKiogVG8gbG9hZCByZXVzYWJsZSBjb21wb25lbnRzICovXG4gIGNvbXBvbmVudExvYWRlcjogQ29tcG9uZW50TG9hZGVyO1xuXG4gIC8qKiBUbyBzY2FuIHRoZSBzcmMgZm9sZGVyICovXG4gIHNvdXJjZTogU291cmNlO1xuXG4gIC8qKiBUbyB1cGRhdGUgcGFnZXMgb2YgdGhlIHNhbWUgc2NvcGUgYWZ0ZXIgYW55IGNoYW5nZSAqL1xuICBzY29wZXM6IFNjb3BlcztcblxuICAvKiogVG8gc3RvcmUgYW5kIHJ1biB0aGUgcHJvY2Vzc29ycyAqL1xuICBwcm9jZXNzb3JzOiBQcm9jZXNzb3JzO1xuXG4gIC8qKiBUbyBzdG9yZSBhbmQgcnVuIHRoZSBwcmUtcHJvY2Vzc29ycyAqL1xuICBwcmVwcm9jZXNzb3JzOiBQcm9jZXNzb3JzO1xuXG4gIC8qKiBUbyByZW5kZXIgdGhlIHBhZ2VzIHVzaW5nIGFueSB0ZW1wbGF0ZSBlbmdpbmUgKi9cbiAgcmVuZGVyZXI6IFJlbmRlcmVyO1xuXG4gIC8qKiBUbyBsaXN0ZW4gYW5kIGRpc3BhdGNoIGV2ZW50cyAqL1xuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuICBldmVudHM6IEV2ZW50czxhbnk+O1xuXG4gIC8qKiBUbyBydW4gc2NyaXB0cyAqL1xuICBzY3JpcHRzOiBTY3JpcHRzO1xuXG4gIC8qKiBUbyBzZWFyY2ggcGFnZXMgKi9cbiAgc2VhcmNoOiBTZWFyY2hlcjtcblxuICAvKiogVG8gc3RvcmUgY2FjaGVkIHN0dWZmIGluIHRoZSBfY2FjaGUgZm9sZGVyICovXG4gIGNhY2hlOiBDYWNoZSB8IHVuZGVmaW5lZDtcblxuICAvKiogVG8gd3JpdGUgdGhlIGdlbmVyYXRlZCBwYWdlcyBpbiB0aGUgZGVzdCBmb2xkZXIgKi9cbiAgd3JpdGVyOiBXcml0ZXI7XG5cbiAgLyoqIERhdGEgYXNzaWduZWQgd2l0aCBzaXRlLmRhdGEoKSAqL1xuICBzY29wZWREYXRhID0gbmV3IE1hcDxzdHJpbmcsIFJhd0RhdGE+KFtbXCIvXCIsIHt9XV0pO1xuXG4gIC8qKiBQYWdlcyBjcmVhdGVkIHdpdGggc2l0ZS5wYWdlKCkgKi9cbiAgc2NvcGVkUGFnZXMgPSBuZXcgTWFwPHN0cmluZywgUmF3RGF0YVtdPigpO1xuXG4gIC8qKiBDb21wb25lbnRzIGNyZWF0ZWQgd2l0aCBzaXRlLmNvbXBvbmVudCgpICovXG4gIHNjb3BlZENvbXBvbmVudHMgPSBuZXcgTWFwPHN0cmluZywgQ29tcG9uZW50cz4oKTtcblxuICAvKiogSG9va3MgaW5zdGFsbGVkIGJ5IHRoZSBwbHVnaW5zICovXG4gIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG4gIGhvb2tzOiBSZWNvcmQ8c3RyaW5nLCAoLi4uYXJnczogYW55W10pID0+IHZvaWQ+ID0ge307XG5cbiAgLyoqIFRoZSBkZWJ1ZyBiYXIgZGF0YSAqL1xuICBkZWJ1Z0Jhcj86IERlYnVnQmFyO1xuXG4gIC8qKiBUaGUgZ2VuZXJhdGVkIHBhZ2VzIGFyZSBzdG9yZWQgaGVyZSAqL1xuICByZWFkb25seSBwYWdlczogUGFnZVtdID0gW107XG5cbiAgLyoqIFRoZSBzdGF0aWMgZmlsZXMgdG8gYmUgY29waWVkIGFyZSBzdG9yZWQgaGVyZSAqL1xuICByZWFkb25seSBmaWxlczogU3RhdGljRmlsZVtdID0gW107XG5cbiAgZmV0Y2g6IERlbm8uU2VydmVIYW5kbGVyO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFBhcnRpYWw8U2l0ZU9wdGlvbnM+ID0ge30pIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBtZXJnZShkZWZhdWx0cywgb3B0aW9ucyk7XG5cbiAgICBjb25zdCBzcmMgPSB0aGlzLnNyYygpO1xuICAgIGNvbnN0IGRlc3QgPSB0aGlzLmRlc3QoKTtcbiAgICBjb25zdCB7IGluY2x1ZGVzLCBjd2QsIHByZXR0eVVybHMsIGNvbXBvbmVudHMsIHNlcnZlciwgY2FzZVNlbnNpdGl2ZVVybHMgfSA9XG4gICAgICB0aGlzLm9wdGlvbnM7XG5cbiAgICAvLyBUbyBsb2FkIHNvdXJjZSBmaWxlc1xuICAgIGNvbnN0IGZzID0gbmV3IEZTKHsgcm9vdDogc3JjIH0pO1xuICAgIGNvbnN0IGZvcm1hdHMgPSBuZXcgRm9ybWF0cygpO1xuXG4gICAgY29uc3QgZGF0YUxvYWRlciA9IG5ldyBEYXRhTG9hZGVyKHsgZm9ybWF0cyB9KTtcbiAgICBjb25zdCBjb21wb25lbnRMb2FkZXIgPSBuZXcgQ29tcG9uZW50TG9hZGVyKHsgZm9ybWF0cyB9KTtcbiAgICBjb25zdCBzb3VyY2UgPSBuZXcgU291cmNlKHtcbiAgICAgIGZzLFxuICAgICAgZGF0YUxvYWRlcixcbiAgICAgIGNvbXBvbmVudExvYWRlcixcbiAgICAgIGZvcm1hdHMsXG4gICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIGNzc0ZpbGU6IGNvbXBvbmVudHMuY3NzRmlsZSA/PyB0aGlzLm9wdGlvbnMuY3NzRmlsZSxcbiAgICAgICAganNGaWxlOiBjb21wb25lbnRzLmpzRmlsZSA/PyB0aGlzLm9wdGlvbnMuanNGaWxlLFxuICAgICAgfSxcbiAgICAgIHNjb3BlZERhdGE6IHRoaXMuc2NvcGVkRGF0YSxcbiAgICAgIHNjb3BlZFBhZ2VzOiB0aGlzLnNjb3BlZFBhZ2VzLFxuICAgICAgc2NvcGVkQ29tcG9uZW50czogdGhpcy5zY29wZWRDb21wb25lbnRzLFxuICAgICAgcHJldHR5VXJscyxcbiAgICAgIGJhc2VuYW1lUGFyc2VyczogW10sXG4gICAgfSk7XG5cbiAgICAvLyBUbyByZW5kZXIgcGFnZXNcbiAgICBjb25zdCBzY29wZXMgPSBuZXcgU2NvcGVzKCk7XG4gICAgY29uc3QgcHJvY2Vzc29ycyA9IG5ldyBQcm9jZXNzb3JzKCk7XG4gICAgY29uc3QgcHJlcHJvY2Vzc29ycyA9IG5ldyBQcm9jZXNzb3JzKCk7XG4gICAgY29uc3QgcmVuZGVyZXIgPSBuZXcgUmVuZGVyZXIoe1xuICAgICAgcHJldHR5VXJscyxcbiAgICAgIHByZXByb2Nlc3NvcnMsXG4gICAgICBmb3JtYXRzLFxuICAgICAgZnMsXG4gICAgICBpbmNsdWRlcyxcbiAgICB9KTtcblxuICAgIC8vIE90aGVyIHN0dWZmXG4gICAgY29uc3QgZXZlbnRzID0gbmV3IEV2ZW50czxTaXRlRXZlbnQ+KCk7XG4gICAgY29uc3Qgc2NyaXB0cyA9IG5ldyBTY3JpcHRzKHsgY3dkIH0pO1xuICAgIGNvbnN0IHdyaXRlciA9IG5ldyBGU1dyaXRlcih7IGRlc3QsIGNhc2VTZW5zaXRpdmVVcmxzIH0pO1xuXG4gICAgY29uc3Qgc2VhcmNoZXIgPSBuZXcgU2VhcmNoZXIoe1xuICAgICAgcGFnZXM6IHRoaXMucGFnZXMsXG4gICAgICBmaWxlczogdGhpcy5maWxlcyxcbiAgICAgIHNvdXJjZURhdGE6IHNvdXJjZS5kYXRhLFxuICAgICAgZmlsdGVyczogW1xuICAgICAgICAoZGF0YTogRGF0YSkgPT4gZGF0YS5wYWdlLm91dHB1dFBhdGguZW5kc1dpdGgoXCIuaHRtbFwiKSA/PyBmYWxzZSwgLy8gb25seSBodG1sIHBhZ2VzXG4gICAgICAgIGZpbHRlcjQwNHBhZ2Uoc2VydmVyLnBhZ2U0MDQpLCAvLyBub3QgdGhlIDQwNCBwYWdlXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gU2F2ZSBldmVyeXRoaW5nIGluIHRoZSBzaXRlIGluc3RhbmNlXG4gICAgdGhpcy5mcyA9IGZzO1xuICAgIHRoaXMuZm9ybWF0cyA9IGZvcm1hdHM7XG4gICAgdGhpcy5jb21wb25lbnRMb2FkZXIgPSBjb21wb25lbnRMb2FkZXI7XG4gICAgdGhpcy5kYXRhTG9hZGVyID0gZGF0YUxvYWRlcjtcbiAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgICB0aGlzLnNjb3BlcyA9IHNjb3BlcztcbiAgICB0aGlzLnByb2Nlc3NvcnMgPSBwcm9jZXNzb3JzO1xuICAgIHRoaXMucHJlcHJvY2Vzc29ycyA9IHByZXByb2Nlc3NvcnM7XG4gICAgdGhpcy5yZW5kZXJlciA9IHJlbmRlcmVyO1xuICAgIHRoaXMuZXZlbnRzID0gZXZlbnRzO1xuICAgIHRoaXMuc2NyaXB0cyA9IHNjcmlwdHM7XG4gICAgdGhpcy5zZWFyY2ggPSBzZWFyY2hlcjtcbiAgICB0aGlzLndyaXRlciA9IHdyaXRlcjtcblxuICAgIC8vIElnbm9yZSB0aGUgXCJkZXN0XCIgZGlyZWN0b3J5IGlmIGl0J3MgaW5zaWRlIHNyY1xuICAgIGlmICh0aGlzLmRlc3QoKS5zdGFydHNXaXRoKHRoaXMuc3JjKCkpKSB7XG4gICAgICB0aGlzLmlnbm9yZSh0aGlzLm9wdGlvbnMuZGVzdCk7XG4gICAgfVxuXG4gICAgLy8gSWdub3JlIHRoZSBpbmNsdWRlcyBmb2xkZXJcbiAgICB0aGlzLmlnbm9yZSh0aGlzLm9wdGlvbnMuaW5jbHVkZXMpO1xuXG4gICAgLy8gTm9ybWFsaXplIHRoZSBpZ25vcmVkIHBhdGhzXG4gICAgdGhpcy5vcHRpb25zLndhdGNoZXIuaWdub3JlID0gdGhpcy5vcHRpb25zLndhdGNoZXIuaWdub3JlLm1hcCgocGF0aCkgPT5cbiAgICAgIHR5cGVvZiBwYXRoID09PSBcInN0cmluZ1wiID8gbm9ybWFsaXplUGF0aChwYXRoKSA6IHBhdGhcbiAgICApO1xuXG4gICAgLy8gSWdub3JlIHRoZSBkZXN0IGZvbGRlciBieSB0aGUgd2F0Y2hlclxuICAgIHRoaXMub3B0aW9ucy53YXRjaGVyLmlnbm9yZS5wdXNoKG5vcm1hbGl6ZVBhdGgodGhpcy5vcHRpb25zLmRlc3QpKTtcbiAgICB0aGlzLmZzLm9wdGlvbnMuaWdub3JlID0gdGhpcy5vcHRpb25zLndhdGNoZXIuaWdub3JlO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgY2FjaGUgaWYgTFVNRV9OT0NBQ0hFIGlzIG5vdCBlbmFibGVkXG4gICAgaWYgKGVudjxib29sZWFuPihcIkxVTUVfTk9DQUNIRVwiKSAhPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5jYWNoZSA9IG5ldyBDYWNoZSh7IGZvbGRlcjogdGhpcy5yb290KFwiX2NhY2hlXCIpIH0pO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgdGhlIGRlYnVnIGJhclxuICAgIGNvbnN0IGluaXREZWJ1Z0JhciA9IHRoaXMub3B0aW9ucy5zZXJ2ZXIuZGVidWdCYXIgPz9cbiAgICAgIGVudjxib29sZWFuPihcIkxVTUVfTElWRV9SRUxPQURcIik7XG5cbiAgICBpZiAoaW5pdERlYnVnQmFyKSB7XG4gICAgICBjb25zdCBkZWJ1Z0JhciA9IG5ldyBEZWJ1Z0Jhcih7XG4gICAgICAgIHVybDogdHlwZW9mIGluaXREZWJ1Z0JhciA9PT0gXCJzdHJpbmdcIiA/IGluaXREZWJ1Z0JhciA6IHVuZGVmaW5lZCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKFwiYmVmb3JlVXBkYXRlXCIsICgpID0+IGRlYnVnQmFyLmNsZWFyKCkpO1xuICAgICAgdGhpcy5kZWJ1Z0JhciA9IGRlYnVnQmFyO1xuICAgICAgbG9nLmNvbGxlY3Rpb24gPSBkZWJ1Z0Jhci5jb2xsZWN0aW9uKFwiQnVpbGRcIik7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBmZXRjaCBmdW5jdGlvbiBmb3IgYGRlbm8gc2VydmVgXG4gICAgbGV0IGZldGNoU2VydmVyOiBTZXJ2ZXIgfCB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLmZldGNoID0gKHJlcXVlc3Q6IFJlcXVlc3QsIGluZm86IERlbm8uU2VydmVIYW5kbGVySW5mbykgPT4ge1xuICAgICAgaWYgKCFmZXRjaFNlcnZlcikge1xuICAgICAgICBmZXRjaFNlcnZlciA9IHRoaXMuZ2V0U2VydmVyKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmZXRjaFNlcnZlci5oYW5kbGUocmVxdWVzdCwgaW5mbyk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBmdWxsIHBhdGggdG8gdGhlIHJvb3QgZGlyZWN0b3J5LlxuICAgKiBVc2UgdGhlIGFyZ3VtZW50cyB0byByZXR1cm4gYSBzdWJwYXRoXG4gICAqL1xuICByb290KC4uLnBhdGg6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbm9ybWFsaXplUGF0aChqb2luKHRoaXMub3B0aW9ucy5jd2QsIC4uLnBhdGgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBmdWxsIHBhdGggdG8gdGhlIHNyYyBkaXJlY3RvcnkuXG4gICAqIFVzZSB0aGUgYXJndW1lbnRzIHRvIHJldHVybiBhIHN1YnBhdGhcbiAgICovXG4gIHNyYyguLi5wYXRoOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucm9vdCh0aGlzLm9wdGlvbnMuc3JjLCAuLi5wYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBmdWxsIHBhdGggdG8gdGhlIGRlc3QgZGlyZWN0b3J5LlxuICAgKiBVc2UgdGhlIGFyZ3VtZW50cyB0byByZXR1cm4gYSBzdWJwYXRoXG4gICAqL1xuICBkZXN0KC4uLnBhdGg6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yb290KHRoaXMub3B0aW9ucy5kZXN0LCAuLi5wYXRoKTtcbiAgfVxuXG4gIC8qKiBBZGQgYSBsaXN0ZW5lciB0byBhbiBldmVudCAqL1xuICBhZGRFdmVudExpc3RlbmVyPEsgZXh0ZW5kcyBTaXRlRXZlbnRUeXBlPihcbiAgICB0eXBlOiBLLFxuICAgIGxpc3RlbmVyOiBFdmVudExpc3RlbmVyPEV2ZW50ICYgU2l0ZUV2ZW50PEs+PiB8IHN0cmluZyxcbiAgICBvcHRpb25zPzogRXZlbnRPcHRpb25zLFxuICApOiB0aGlzIHtcbiAgICBjb25zdCBmbiA9IHR5cGVvZiBsaXN0ZW5lciA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyAoKSA9PiB0aGlzLnJ1bihsaXN0ZW5lcilcbiAgICAgIDogbGlzdGVuZXI7XG5cbiAgICB0aGlzLmV2ZW50cy5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGZuLCBvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBEaXNwYXRjaCBhbiBldmVudCAqL1xuICBkaXNwYXRjaEV2ZW50KGV2ZW50OiBTaXRlRXZlbnQpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5ldmVudHMuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gIH1cblxuICAvKiogVXNlIGEgcGx1Z2luICovXG4gIHVzZShwbHVnaW46IFBsdWdpbik6IHRoaXMge1xuICAgIHBsdWdpbih0aGlzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIHNjcmlwdCBvciBhIGZ1bmN0aW9uLCBzbyBpdCBjYW4gYmUgZXhlY3V0ZWQgd2l0aFxuICAgKiBsdW1lIHJ1biA8bmFtZT5cbiAgICovXG4gIHNjcmlwdChuYW1lOiBzdHJpbmcsIC4uLnNjcmlwdHM6IFNjcmlwdE9yRnVuY3Rpb25bXSk6IHRoaXMge1xuICAgIHRoaXMuc2NyaXB0cy5zZXQobmFtZSwgLi4uc2NyaXB0cyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogUnVucyBhIHNjcmlwdCBvciBmdW5jdGlvbiByZWdpc3RlcmVkIHByZXZpb3VzbHkgKi9cbiAgYXN5bmMgcnVuKG5hbWU6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnNjcmlwdHMucnVuKG5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgZGF0YSBsb2FkZXIgZm9yIHNvbWUgZXh0ZW5zaW9uc1xuICAgKi9cbiAgbG9hZERhdGEoZXh0ZW5zaW9uczogc3RyaW5nW10sIGRhdGFMb2FkZXI6IExvYWRlciA9IHRleHRMb2FkZXIpOiB0aGlzIHtcbiAgICBleHRlbnNpb25zLmZvckVhY2goKGV4dCkgPT4ge1xuICAgICAgdGhpcy5mb3JtYXRzLnNldCh7IGV4dCwgZGF0YUxvYWRlciB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgcGFnZSBsb2FkZXIgZm9yIHNvbWUgZXh0ZW5zaW9uc1xuICAgKi9cbiAgbG9hZFBhZ2VzKFxuICAgIGV4dGVuc2lvbnM6IHN0cmluZ1tdLFxuICAgIG9wdGlvbnM6IExvYWRQYWdlc09wdGlvbnMgfCBMb2FkZXIgPSB7fSxcbiAgKTogdGhpcyB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIG9wdGlvbnMgPSB7IGxvYWRlcjogb3B0aW9ucyB9O1xuICAgIH1cblxuICAgIGNvbnN0IHsgZW5naW5lLCBwYWdlU3ViRXh0ZW5zaW9uIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGxvYWRlciA9IG9wdGlvbnMubG9hZGVyIHx8IHRleHRMb2FkZXI7XG4gICAgY29uc3QgZW5naW5lcyA9IEFycmF5LmlzQXJyYXkoZW5naW5lKSA/IGVuZ2luZSA6IGVuZ2luZSA/IFtlbmdpbmVdIDogW107XG5cbiAgICBjb25zdCBwYWdlRXh0ZW5zaW9ucyA9IHBhZ2VTdWJFeHRlbnNpb25cbiAgICAgID8gZXh0ZW5zaW9ucy5tYXAoKGV4dCkgPT4gcGFnZVN1YkV4dGVuc2lvbiArIGV4dClcbiAgICAgIDogZXh0ZW5zaW9ucztcblxuICAgIHBhZ2VFeHRlbnNpb25zLmZvckVhY2goKGV4dCkgPT4ge1xuICAgICAgdGhpcy5mb3JtYXRzLnNldCh7XG4gICAgICAgIGV4dCxcbiAgICAgICAgbG9hZGVyLFxuICAgICAgICBpc1BhZ2U6IHRydWUsXG4gICAgICAgIGVuZ2luZXMsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGlmIChwYWdlU3ViRXh0ZW5zaW9uKSB7XG4gICAgICBleHRlbnNpb25zLmZvckVhY2goKGV4dCkgPT4gdGhpcy5mb3JtYXRzLnNldCh7IGV4dCwgbG9hZGVyLCBlbmdpbmVzIH0pKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtuYW1lLCBoZWxwZXJdIG9mIHRoaXMucmVuZGVyZXIuaGVscGVycykge1xuICAgICAgZW5naW5lcy5mb3JFYWNoKChlbmdpbmUpID0+IGVuZ2luZS5hZGRIZWxwZXIobmFtZSwgLi4uaGVscGVyKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogUmVnaXN0ZXIgYSBwcmVwcm9jZXNzb3IgZm9yIHNvbWUgZXh0ZW5zaW9ucyAqL1xuICBwcmVwcm9jZXNzKHByb2Nlc3NvcjogUHJvY2Vzc29yKTogdGhpcztcbiAgcHJlcHJvY2VzcyhleHRlbnNpb25zOiBFeHRlbnNpb25zLCBwcm9jZXNzb3I6IFByb2Nlc3Nvcik6IHRoaXM7XG4gIHByZXByb2Nlc3MoXG4gICAgZXh0ZW5zaW9uczogRXh0ZW5zaW9ucyB8IFByb2Nlc3NvcixcbiAgICBwcmVwcm9jZXNzb3I/OiBQcm9jZXNzb3IsXG4gICk6IHRoaXMge1xuICAgIGlmICh0eXBlb2YgZXh0ZW5zaW9ucyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcmVwcm9jZXNzKFwiKlwiLCBleHRlbnNpb25zKTtcbiAgICB9XG5cbiAgICB0aGlzLnByZXByb2Nlc3NvcnMuc2V0KGV4dGVuc2lvbnMsIHByZXByb2Nlc3NvciEpO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXh0ZW5zaW9ucykpIHtcbiAgICAgIGV4dGVuc2lvbnMuZm9yRWFjaCgoZXh0KSA9PiB0aGlzLmZvcm1hdHMuc2V0KHsgZXh0IH0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBSZWdpc3RlciBhIHByb2Nlc3NvciBmb3Igc29tZSBleHRlbnNpb25zICovXG4gIHByb2Nlc3MocHJvY2Vzc29yOiBQcm9jZXNzb3IpOiB0aGlzO1xuICBwcm9jZXNzKGV4dGVuc2lvbnM6IEV4dGVuc2lvbnMsIHByb2Nlc3NvcjogUHJvY2Vzc29yKTogdGhpcztcbiAgcHJvY2VzcyhleHRlbnNpb25zOiBFeHRlbnNpb25zIHwgUHJvY2Vzc29yLCBwcm9jZXNzb3I/OiBQcm9jZXNzb3IpOiB0aGlzIHtcbiAgICBpZiAodHlwZW9mIGV4dGVuc2lvbnMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIHRoaXMucHJvY2VzcyhcIipcIiwgZXh0ZW5zaW9ucyk7XG4gICAgfVxuXG4gICAgdGhpcy5wcm9jZXNzb3JzLnNldChleHRlbnNpb25zLCBwcm9jZXNzb3IhKTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KGV4dGVuc2lvbnMpKSB7XG4gICAgICBleHRlbnNpb25zLmZvckVhY2goKGV4dCkgPT4gdGhpcy5mb3JtYXRzLnNldCh7IGV4dCB9KSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFJlZ2lzdGVyIGEgdGVtcGxhdGUgZmlsdGVyICovXG4gIGZpbHRlcihuYW1lOiBzdHJpbmcsIGZpbHRlcjogSGVscGVyLCBhc3luYyA9IGZhbHNlKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyKG5hbWUsIGZpbHRlciwgeyB0eXBlOiBcImZpbHRlclwiLCBhc3luYyB9KTtcbiAgfVxuXG4gIC8qKiBSZWdpc3RlciBhIHRlbXBsYXRlIGhlbHBlciAqL1xuICBoZWxwZXIobmFtZTogc3RyaW5nLCBmbjogSGVscGVyLCBvcHRpb25zOiBIZWxwZXJPcHRpb25zKTogdGhpcyB7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRIZWxwZXIobmFtZSwgZm4sIG9wdGlvbnMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFJlZ2lzdGVyIGEgYmFzZW5hbWUgcGFyc2VyICovXG4gIHBhcnNlQmFzZW5hbWUocGFyc2VyOiBCYXNlbmFtZVBhcnNlcik6IHRoaXMge1xuICAgIHRoaXMuc291cmNlLmJhc2VuYW1lUGFyc2Vycy5wdXNoKHBhcnNlcik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogUmVnaXN0ZXIgZXh0cmEgZGF0YSBhY2Nlc3NpYmxlIGJ5IHRoZSBsYXlvdXRzICovXG4gIGRhdGEobmFtZTogc3RyaW5nLCB2YWx1ZTogdW5rbm93biwgc2NvcGUgPSBcIi9cIik6IHRoaXMge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnNjb3BlZERhdGEuZ2V0KHNjb3BlKSB8fCB7fTtcbiAgICBkYXRhW25hbWVdID0gdmFsdWU7XG4gICAgdGhpcy5zY29wZWREYXRhLnNldChzY29wZSwgZGF0YSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogUmVnaXN0ZXIgYSBwYWdlICovXG4gIHBhZ2UoZGF0YTogUGFydGlhbDxEYXRhPiwgc2NvcGUgPSBcIi9cIik6IHRoaXMge1xuICAgIGNvbnN0IHBhZ2VzID0gdGhpcy5zY29wZWRQYWdlcy5nZXQoc2NvcGUpIHx8IFtdO1xuICAgIHBhZ2VzLnB1c2goZGF0YSk7XG4gICAgdGhpcy5zY29wZWRQYWdlcy5zZXQoc2NvcGUsIHBhZ2VzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBSZWdpc3RlciBhbiBleHRyYSBjb21wb25lbnQgYWNjZXNpYmxlIGJ5IHRoZSBsYXlvdXRzICovXG4gIGNvbXBvbmVudChjb250ZXh0OiBzdHJpbmcsIGNvbXBvbmVudDogVXNlckNvbXBvbmVudCwgc2NvcGUgPSBcIi9cIik6IHRoaXMge1xuICAgIGNvbnN0IHBpZWNlcyA9IGNvbnRleHQuc3BsaXQoXCIuXCIpO1xuICAgIGNvbnN0IHNjb3BlZENvbXBvbmVudHM6IENvbXBvbmVudHMgPSB0aGlzLnNjb3BlZENvbXBvbmVudHMuZ2V0KHNjb3BlKSB8fFxuICAgICAgbmV3IE1hcCgpO1xuICAgIGxldCBjb21wb25lbnRzOiBDb21wb25lbnRzID0gc2NvcGVkQ29tcG9uZW50cztcblxuICAgIHdoaWxlIChwaWVjZXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBuYW1lID0gcGllY2VzLnNoaWZ0KCkhO1xuICAgICAgaWYgKCFjb21wb25lbnRzLmdldChuYW1lKSkge1xuICAgICAgICBjb21wb25lbnRzLnNldChuYW1lLCBuZXcgTWFwKCkpO1xuICAgICAgfVxuICAgICAgY29tcG9uZW50cyA9IGNvbXBvbmVudHMuZ2V0KG5hbWUpIGFzIENvbXBvbmVudHM7XG4gICAgfVxuXG4gICAgY29uc3QgYXNzZXRzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICBpZiAoY29tcG9uZW50LmNzcykge1xuICAgICAgYXNzZXRzLnNldChjb21wb25lbnQubmFtZSArIFwiLmNzc1wiLCBjb21wb25lbnQuY3NzKTtcbiAgICB9XG4gICAgaWYgKGNvbXBvbmVudC5qcykge1xuICAgICAgYXNzZXRzLnNldChjb21wb25lbnQubmFtZSArIFwiLmpzXCIsIGNvbXBvbmVudC5qcyk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50cy5zZXQoY29tcG9uZW50Lm5hbWUsIHtcbiAgICAgIG5hbWU6IGNvbXBvbmVudC5uYW1lLFxuICAgICAgcmVuZGVyOiBjb21wb25lbnQucmVuZGVyLFxuICAgICAgYXNzZXRzLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zY29wZWRDb21wb25lbnRzLnNldChzY29wZSwgc2NvcGVkQ29tcG9uZW50cyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogUmVnaXN0ZXIgYSBtZXJnaW5nIHN0cmF0ZWd5IGZvciBhIGRhdGEga2V5ICovXG4gIG1lcmdlS2V5KGtleTogc3RyaW5nLCBtZXJnZTogTWVyZ2VTdHJhdGVneSwgc2NvcGUgPSBcIi9cIik6IHRoaXMge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnNjb3BlZERhdGEuZ2V0KHNjb3BlKSB8fCB7fTtcbiAgICBjb25zdCBtZXJnZWRLZXlzID0gZGF0YS5tZXJnZWRLZXlzIHx8IHt9O1xuICAgIG1lcmdlZEtleXNba2V5XSA9IG1lcmdlO1xuICAgIGRhdGEubWVyZ2VkS2V5cyA9IG1lcmdlZEtleXM7XG4gICAgdGhpcy5zY29wZWREYXRhLnNldChzY29wZSwgZGF0YSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQWRkIGZpbGVzIG9yIGRpcmVjdG9yaWVzIHRvIHRoZSBzaXRlICovXG4gIGFkZChmcm9tOiBzdHJpbmcsIHRvPzogc3RyaW5nIHwgRGVzdGluYXRpb24pOiB0aGlzO1xuICBhZGQoZnJvbTogc3RyaW5nW10sIHRvPzogRGVzdGluYXRpb24pOiB0aGlzO1xuICBhZGQoXG4gICAgZnJvbTogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgdG8/OiBzdHJpbmcgfCBEZXN0aW5hdGlvbixcbiAgKTogdGhpcyB7XG4gICAgdGhpcy4jYWRkT3JDb3B5KGZyb20sIHRvLCBmYWxzZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQ29weSBmaWxlcyBvciBkaXJlY3RvcmllcyB0byB0aGUgc2l0ZSAqL1xuICBjb3B5KGZyb206IHN0cmluZywgdG8/OiBzdHJpbmcgfCBEZXN0aW5hdGlvbik6IHRoaXM7XG4gIGNvcHkoZnJvbTogc3RyaW5nW10sIHRvPzogRGVzdGluYXRpb24pOiB0aGlzO1xuICBjb3B5KFxuICAgIGZyb206IHN0cmluZyB8IHN0cmluZ1tdLFxuICAgIHRvPzogc3RyaW5nIHwgRGVzdGluYXRpb24sXG4gICk6IHRoaXMge1xuICAgIHRoaXMuI2FkZE9yQ29weShmcm9tLCB0bywgdHJ1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQWRkIG9yIGNvcHkgZmlsZXMgb3IgZGlyZWN0b3JpZXMgdG8gdGhlIHNpdGUgKi9cbiAgI2FkZE9yQ29weShcbiAgICBmcm9tOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICB0bzogc3RyaW5nIHwgRGVzdGluYXRpb24gfCB1bmRlZmluZWQsXG4gICAgY29weTogYm9vbGVhbixcbiAgKTogdm9pZCB7XG4gICAgLy8gRmlsZSBleHRlbnNpb25zXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZnJvbSkpIHtcbiAgICAgIGlmICh0eXBlb2YgdG8gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBhZGQoKSBmaWxlcyBieSBleHRlbnNpb24gZXhwZWN0cyBhIGZ1bmN0aW9uIGFzIHNlY29uZCBhcmd1bWVudCBidXQgZ290IGEgc3RyaW5nIFwiJHt0b31cImAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjb25zdCBkZXN0ID0gdHlwZW9mIHRvID09PSBcImZ1bmN0aW9uXCIgPyB0byA6IChwYXRoOiBzdHJpbmcpID0+IHBhdGg7XG4gICAgICBmb3IgKGNvbnN0IGV4dCBvZiBmcm9tKSB7XG4gICAgICAgIHRoaXMuc291cmNlLmFkZEZpbGUoZXh0LCBkZXN0LCBjb3B5KTtcbiAgICAgICAgdGhpcy5mb3JtYXRzLnNldCh7IGV4dCB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSZW1vdGUgZmlsZXNcbiAgICBpZiAoZnJvbS5zdGFydHNXaXRoKFwibnBtOlwiKSkge1xuICAgICAgZnJvbSA9IGZyb20ucmVwbGFjZShcIm5wbTpcIiwgXCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL1wiKTtcbiAgICB9XG5cbiAgICBpZiAoaXNVcmwoZnJvbSkpIHtcbiAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoZnJvbSk7XG5cbiAgICAgIGlmICh0byA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRvID0gcG9zaXguYmFzZW5hbWUodXJsLnBhdGhuYW1lKSB8fCB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgdG8gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0byA9IHRvKHVybC5ocmVmKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRvPy5lbmRzV2l0aChcIi9cIikpIHtcbiAgICAgICAgdG8gPSBwb3NpeC5qb2luKHRvLCBwb3NpeC5iYXNlbmFtZSh1cmwucGF0aG5hbWUpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0byB8fCB0by5lbmRzV2l0aChcIi9cIikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRlc3RpbmF0aW9uIHBhdGg6ICR7dG99YCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVtb3RlRmlsZSh0bywgdXJsLmhyZWYpO1xuICAgICAgdGhpcy5zb3VyY2UuYWRkRmlsZSh0bywgdG8sIGNvcHkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEl0J3MgYSBwYXRoXG4gICAgaWYgKGZyb20uc3RhcnRzV2l0aChcIi4uL1wiKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSXQncyBub3QgcG9zc2libGUgdG8gY29weSBmaWxlcyBvdXRzaXRlIHRoZSBzcmMgZGlyZWN0b3J5IChcIiR7ZnJvbX1cIilgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnNvdXJjZS5hZGRGaWxlKFxuICAgICAgbm9ybWFsaXplUGF0aChmcm9tKSxcbiAgICAgIHRvID8/ICgoc3RyOiBzdHJpbmcpID0+IHN0ciksXG4gICAgICBjb3B5LFxuICAgICk7XG4gIH1cblxuICAvKiogSWdub3JlIG9uZSBvciBzZXZlcmFsIGZpbGVzIG9yIGRpcmVjdG9yaWVzICovXG4gIGlnbm9yZSguLi5wYXRoczogKHN0cmluZyB8IFNjb3BlRmlsdGVyKVtdKTogdGhpcyB7XG4gICAgcGF0aHMuZm9yRWFjaCgocGF0aCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBwYXRoID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHRoaXMuc291cmNlLmFkZElnbm9yZWRQYXRoKHBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zb3VyY2UuYWRkSWdub3JlRmlsdGVyKHBhdGgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIERlZmluZSBpbmRlcGVuZGVudCBzY29wZXMgdG8gb3B0aW1pemUgdGhlIHVwZGF0ZSBwcm9jZXNzICovXG4gIHNjb3BlZFVwZGF0ZXMoLi4uc2NvcGVzOiBTY29wZUZpbHRlcltdKTogdGhpcyB7XG4gICAgc2NvcGVzLmZvckVhY2goKHNjb3BlKSA9PiB0aGlzLnNjb3Blcy5zY29wZXMuYWRkKHNjb3BlKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogRGVmaW5lIGEgcmVtb3RlIGZhbGxiYWNrIGZvciBhIG1pc3NpbmcgbG9jYWwgZmlsZSAqL1xuICByZW1vdGVGaWxlKGZpbGVuYW1lOiBzdHJpbmcsIHVybDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5mcy5yZW1vdGVGaWxlcy5zZXQocG9zaXguam9pbihcIi9cIiwgZmlsZW5hbWUpLCB1cmwpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIENsZWFyIHRoZSBkZXN0IGRpcmVjdG9yeSBhbmQgYW55IGNhY2hlICovXG4gIGFzeW5jIGNsZWFyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMud3JpdGVyLmNsZWFyKCk7XG4gIH1cblxuICAvKiogQnVpbGQgdGhlIGVudGlyZSBzaXRlICovXG4gIGFzeW5jIGJ1aWxkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChhd2FpdCB0aGlzLmRpc3BhdGNoRXZlbnQoeyB0eXBlOiBcImJlZm9yZUJ1aWxkXCIgfSkgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5lbXB0eURlc3QpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBwZXJmb3JtYW5jZS5tYXJrKFwic3RhcnQtbG9hZGZpbGVzXCIpO1xuXG4gICAgLy8gTG9hZCBzb3VyY2UgZmlsZXNcbiAgICB0aGlzLmZzLmluaXQoKTtcblxuICAgIGlmIChhd2FpdCB0aGlzLmRpc3BhdGNoRXZlbnQoeyB0eXBlOiBcImFmdGVyTG9hZFwiIH0pID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEdldCB0aGUgc2l0ZSBjb250ZW50XG4gICAgY29uc3Qgc2hvd0RyYWZ0cyA9IGVudjxib29sZWFuPihcIkxVTUVfRFJBRlRTXCIpO1xuICAgIGNvbnN0IFtfcGFnZXMsIF9zdGF0aWNGaWxlc10gPSBhd2FpdCB0aGlzLnNvdXJjZS5idWlsZChcbiAgICAgIChfLCBwYWdlKSA9PiAhcGFnZT8uZGF0YS5kcmFmdCB8fCBzaG93RHJhZnRzID09PSB0cnVlLFxuICAgICk7XG5cbiAgICBwZXJmb3JtYW5jZS5tYXJrKFwiZW5kLWxvYWRmaWxlc1wiKTtcblxuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIGBQYWdlcyBsb2FkZWQgaW4gJHtcbiAgICAgICAgKHBlcmZvcm1hbmNlLm1lYXN1cmUoXCJkdXJhdGlvblwiLCBcInN0YXJ0LWxvYWRmaWxlc1wiLCBcImVuZC1sb2FkZmlsZXNcIilcbiAgICAgICAgICAuZHVyYXRpb24gL1xuICAgICAgICAgIDEwMDApLnRvRml4ZWQoMilcbiAgICAgIH0gc2Vjb25kc2AsXG4gICAgKTtcblxuICAgIC8vIFNhdmUgc3RhdGljIGZpbGVzIGludG8gc2l0ZS5maWxlc1xuICAgIHRoaXMuZmlsZXMuc3BsaWNlKDAsIHRoaXMuZmlsZXMubGVuZ3RoLCAuLi5fc3RhdGljRmlsZXMpO1xuXG4gICAgLy8gU3RvcCBpZiB0aGUgYnVpbGQgaXMgY2FuY2VsbGVkXG4gICAgaWYgKGF3YWl0IHRoaXMuI2J1aWxkUGFnZXMoX3BhZ2VzKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTYXZlIHRoZSBwYWdlcyBhbmQgY29weSBzdGF0aWMgZmlsZXMgaW4gdGhlIGRlc3QgZm9sZGVyXG4gICAgY29uc3QgcGFnZXMgPSBhd2FpdCB0aGlzLndyaXRlci5zYXZlUGFnZXModGhpcy5wYWdlcyk7XG4gICAgY29uc3Qgc3RhdGljRmlsZXMgPSBhd2FpdCB0aGlzLndyaXRlci5jb3B5RmlsZXModGhpcy5maWxlcyk7XG5cbiAgICBhd2FpdCB0aGlzLmRpc3BhdGNoRXZlbnQoeyB0eXBlOiBcImFmdGVyQnVpbGRcIiwgcGFnZXMsIHN0YXRpY0ZpbGVzIH0pO1xuICB9XG5cbiAgLyoqIFJlbG9hZCBzb21lIGZpbGVzIHRoYXQgbWlnaHQgYmUgY2hhbmdlZCAqL1xuICBhc3luYyB1cGRhdGUoZmlsZXM6IFNldDxzdHJpbmc+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKGF3YWl0IHRoaXMuZGlzcGF0Y2hFdmVudCh7IHR5cGU6IFwiYmVmb3JlVXBkYXRlXCIsIGZpbGVzIH0pID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VhcmNoLmRlbGV0ZUNhY2hlKCk7XG5cbiAgICAvLyBSZWxvYWQgdGhlIGNoYW5nZWQgZmlsZXNcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgIC8vIERlbGV0ZSB0aGUgZmlsZSBmcm9tIHRoZSBjYWNoZVxuICAgICAgdGhpcy5mb3JtYXRzLmRlbGV0ZUNhY2hlKGZpbGUpO1xuICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmZzLnVwZGF0ZShmaWxlKTtcblxuICAgICAgaWYgKCFlbnRyeSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gUmVtb3ZlIHBhZ2VzIG9yIHN0YXRpYyBmaWxlcyBkZXBlbmRpbmcgb24gdGhpcyBlbnRyeVxuICAgICAgY29uc3QgcGFnZXMgPSB0aGlzLnBhZ2VzXG4gICAgICAgIC5maWx0ZXIoKHBhZ2UpID0+IHBhdGhCZWxvbmdzKGVudHJ5LnBhdGgsIHBhZ2Uuc3JjLmVudHJ5Py5wYXRoKSlcbiAgICAgICAgLm1hcCgocGFnZSkgPT4gcGFnZS5vdXRwdXRQYXRoKTtcbiAgICAgIGNvbnN0IGZpbGVzID0gdGhpcy5maWxlc1xuICAgICAgICAuZmlsdGVyKChmaWxlKSA9PiBwYXRoQmVsb25ncyhlbnRyeS5wYXRoLCBmaWxlLnNyYy5lbnRyeT8ucGF0aCkpXG4gICAgICAgIC5tYXAoKGZpbGUpID0+IGZpbGUub3V0cHV0UGF0aCk7XG5cbiAgICAgIGF3YWl0IHRoaXMud3JpdGVyLnJlbW92ZUZpbGVzKFsuLi5wYWdlcywgLi4uZmlsZXNdKTtcbiAgICB9XG5cbiAgICBpZiAoYXdhaXQgdGhpcy5kaXNwYXRjaEV2ZW50KHsgdHlwZTogXCJhZnRlckxvYWRcIiB9KSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIHNpdGUgY29udGVudFxuICAgIGNvbnN0IHNob3dEcmFmdHMgPSBlbnY8Ym9vbGVhbj4oXCJMVU1FX0RSQUZUU1wiKTtcbiAgICBjb25zdCBbX3BhZ2VzLCBfc3RhdGljRmlsZXNdID0gYXdhaXQgdGhpcy5zb3VyY2UuYnVpbGQoXG4gICAgICAoXywgcGFnZSkgPT4gIXBhZ2U/LmRhdGEuZHJhZnQgfHwgc2hvd0RyYWZ0cyA9PT0gdHJ1ZSxcbiAgICAgIHRoaXMuc2NvcGVzLmdldEZpbHRlcihmaWxlcyksXG4gICAgKTtcblxuICAgIC8vIEJ1aWxkIHRoZSBwYWdlcyBhbmQgc2F2ZSBzdGF0aWMgZmlsZXMgaW50byBzaXRlLmZpbGVzXG4gICAgdGhpcy5maWxlcy5zcGxpY2UoMCwgdGhpcy5maWxlcy5sZW5ndGgsIC4uLl9zdGF0aWNGaWxlcyk7XG5cbiAgICBpZiAoYXdhaXQgdGhpcy4jYnVpbGRQYWdlcyhfcGFnZXMpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNhdmUgdGhlIHBhZ2VzIGFuZCBjb3B5IHN0YXRpYyBmaWxlcyBpbiB0aGUgZGVzdCBmb2xkZXJcbiAgICBjb25zdCBwYWdlcyA9IGF3YWl0IHRoaXMud3JpdGVyLnNhdmVQYWdlcyh0aGlzLnBhZ2VzKTtcbiAgICBjb25zdCBzdGF0aWNGaWxlcyA9IGF3YWl0IHRoaXMud3JpdGVyLmNvcHlGaWxlcyh0aGlzLmZpbGVzKTtcblxuICAgIGF3YWl0IHRoaXMuZGlzcGF0Y2hFdmVudCh7XG4gICAgICB0eXBlOiBcImFmdGVyVXBkYXRlXCIsXG4gICAgICBmaWxlcyxcbiAgICAgIHBhZ2VzLFxuICAgICAgc3RhdGljRmlsZXMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJuYWwgZnVuY3Rpb24gdG8gcmVuZGVyIHBhZ2VzXG4gICAqIFRoZSBjb21tb24gb3BlcmF0aW9ucyBvZiBidWlsZCBhbmQgdXBkYXRlXG4gICAqL1xuICBhc3luYyAjYnVpbGRQYWdlcyhwYWdlczogUGFnZVtdKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgLy8gUHJvbW90ZSB0aGUgZmlsZXMgdGhhdCBtdXN0IGJlIHByZXByb2Nlc3NlZCB0byBwYWdlc1xuICAgIGNvbnN0IHByZUV4dGVuc2lvbnMgPSB0aGlzLnByZXByb2Nlc3NvcnMuZXh0ZW5zaW9ucztcbiAgICBhd2FpdCBmaWxlc1RvUGFnZXMoXG4gICAgICB0aGlzLmZpbGVzLFxuICAgICAgcGFnZXMsXG4gICAgICAoZmlsZSkgPT4gIWZpbGUuaXNDb3B5ICYmIHByZUV4dGVuc2lvbnMuaGFzKGZpbGUuc3JjLmV4dCksXG4gICAgKTtcblxuICAgIGlmIChhd2FpdCB0aGlzLmRpc3BhdGNoRXZlbnQoeyB0eXBlOiBcImJlZm9yZVJlbmRlclwiLCBwYWdlcyB9KSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcGVyZm9ybWFuY2UubWFyayhcInN0YXJ0LXJlbmRlclwiKTtcblxuICAgIC8vIFJlbmRlciB0aGUgcGFnZXNcbiAgICB0aGlzLnBhZ2VzLnNwbGljZSgwKTtcbiAgICBhd2FpdCB0aGlzLnJlbmRlcmVyLnJlbmRlclBhZ2VzKHBhZ2VzLCB0aGlzLnBhZ2VzKTtcblxuICAgIC8vIEFkZCBleHRyYSBjb2RlIGdlbmVyYXRlZCBieSB0aGUgY29tcG9uZW50c1xuICAgIGZvciAoY29uc3QgeyBwYXRoLCBlbnRyaWVzIH0gb2YgdGhpcy5zb3VyY2UuZ2V0Q29tcG9uZW50c0V4dHJhQ29kZSgpKSB7XG4gICAgICBpZiAocGF0aC5lbmRzV2l0aChcIi5jc3NcIikpIHtcbiAgICAgICAgY29uc3QgcGFnZSA9IGF3YWl0IHRoaXMuZ2V0T3JDcmVhdGVQYWdlKHBhdGgpO1xuICAgICAgICBwYWdlLnRleHQgPSBpbnNlcnRDb250ZW50KFxuICAgICAgICAgIHBhZ2UudGV4dCxcbiAgICAgICAgICBhd2FpdCBjb21waWxlQ1NTKHBhdGgsIGVudHJpZXMsIHRoaXMuZnMuZW50cmllcyksXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmNvbXBvbmVudHMucGxhY2Vob2xkZXIsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAocGF0aC5lbmRzV2l0aChcIi5qc1wiKSkge1xuICAgICAgICBjb25zdCBwYWdlID0gYXdhaXQgdGhpcy5nZXRPckNyZWF0ZVBhZ2UocGF0aCk7XG4gICAgICAgIHBhZ2UudGV4dCA9IGluc2VydENvbnRlbnQoXG4gICAgICAgICAgcGFnZS50ZXh0LFxuICAgICAgICAgIGF3YWl0IGNvbXBpbGVKUyhwYXRoLCBlbnRyaWVzLCB0aGlzLmZzLmVudHJpZXMpLFxuICAgICAgICAgIHRoaXMub3B0aW9ucy5jb21wb25lbnRzLnBsYWNlaG9sZGVyLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlbW92ZSBlbXB0eSBwYWdlc1xuICAgIHRoaXMucGFnZXMuc3BsaWNlKFxuICAgICAgMCxcbiAgICAgIHRoaXMucGFnZXMubGVuZ3RoLFxuICAgICAgLi4udGhpcy5wYWdlcy5maWx0ZXIoKHBhZ2UpID0+IHtcbiAgICAgICAgaWYgKCFwYWdlLmNvbnRlbnQpIHtcbiAgICAgICAgICBsb2cud2FybihcbiAgICAgICAgICAgIGBbTHVtZV0gPGN5YW4+U2tpcHBlZCBwYWdlPC9jeWFuPiAke3BhZ2UuZGF0YS51cmx9IChmaWxlIGNvbnRlbnQgaXMgZW1wdHkpYCxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIHBlcmZvcm1hbmNlLm1hcmsoXCJlbmQtcmVuZGVyXCIpO1xuXG4gICAgbG9nLmRlYnVnKFxuICAgICAgYFBhZ2VzIHJlbmRlcmVkIGluICR7XG4gICAgICAgIChwZXJmb3JtYW5jZS5tZWFzdXJlKFwiZHVyYXRpb25cIiwgXCJzdGFydC1yZW5kZXJcIiwgXCJlbmQtcmVuZGVyXCIpXG4gICAgICAgICAgLmR1cmF0aW9uIC9cbiAgICAgICAgICAxMDAwKS50b0ZpeGVkKDIpXG4gICAgICB9IHNlY29uZHNgLFxuICAgICk7XG5cbiAgICBwZXJmb3JtYW5jZS5tYXJrKFwic3RhcnQtcHJvY2Vzc1wiKTtcbiAgICBpZiAoXG4gICAgICBhd2FpdCB0aGlzLmV2ZW50cy5kaXNwYXRjaEV2ZW50KHtcbiAgICAgICAgdHlwZTogXCJhZnRlclJlbmRlclwiLFxuICAgICAgICBwYWdlczogdGhpcy5wYWdlcyxcbiAgICAgIH0pID09PSBmYWxzZVxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFByb21vdGUgdGhlIGZpbGVzIHRoYXQgbXVzdCBiZSBwcm9jZXNzZWQgdG8gcGFnZXNcbiAgICBjb25zdCBleHRlbnNpb25zID0gdGhpcy5wcm9jZXNzb3JzLmV4dGVuc2lvbnM7XG4gICAgYXdhaXQgZmlsZXNUb1BhZ2VzKFxuICAgICAgdGhpcy5maWxlcyxcbiAgICAgIHRoaXMucGFnZXMsXG4gICAgICAoZmlsZSkgPT4gIWZpbGUuaXNDb3B5ICYmIGV4dGVuc2lvbnMuaGFzKGZpbGUuc3JjLmV4dCksXG4gICAgKTtcblxuICAgIC8vIFJ1biB0aGUgcHJvY2Vzc29ycyB0byB0aGUgcGFnZXNcbiAgICBhd2FpdCB0aGlzLnByb2Nlc3NvcnMucnVuKHRoaXMucGFnZXMpO1xuICAgIHBlcmZvcm1hbmNlLm1hcmsoXCJlbmQtcHJvY2Vzc1wiKTtcblxuICAgIGxvZy5kZWJ1ZyhcbiAgICAgIGBQYWdlcyBwcm9jZXNzZWQgaW4gJHtcbiAgICAgICAgKHBlcmZvcm1hbmNlLm1lYXN1cmUoXCJkdXJhdGlvblwiLCBcInN0YXJ0LXByb2Nlc3NcIiwgXCJlbmQtcHJvY2Vzc1wiKVxuICAgICAgICAgIC5kdXJhdGlvbiAvXG4gICAgICAgICAgMTAwMCkudG9GaXhlZCgyKVxuICAgICAgfSBzZWNvbmRzYCxcbiAgICApO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZGlzcGF0Y2hFdmVudCh7IHR5cGU6IFwiYmVmb3JlU2F2ZVwiIH0pO1xuICB9XG5cbiAgLyoqIFJldHVybiB0aGUgVVJMIG9mIGEgcGF0aCAqL1xuICB1cmwocGF0aDogc3RyaW5nLCBhYnNvbHV0ZSA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICBpZiAoXG4gICAgICBwYXRoLnN0YXJ0c1dpdGgoXCIuL1wiKSB8fCBwYXRoLnN0YXJ0c1dpdGgoXCIuLi9cIikgfHxcbiAgICAgIHBhdGguc3RhcnRzV2l0aChcIj9cIikgfHwgcGF0aC5zdGFydHNXaXRoKFwiI1wiKSB8fCBwYXRoLnN0YXJ0c1dpdGgoXCIvL1wiKVxuICAgICkge1xuICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuXG4gICAgLy8gSXQncyBhIHNvdXJjZSBmaWxlXG4gICAgaWYgKHBhdGguc3RhcnRzV2l0aChcIn4vXCIpKSB7XG4gICAgICBwYXRoID0gZGVjb2RlVVJJKHBhdGguc2xpY2UoMSkpO1xuXG4gICAgICAvLyBIYXMgYSBzZWFyY2ggcXVlcnlcbiAgICAgIGNvbnN0IG1hdGNoID0gcGF0aC5tYXRjaCgvXiguKilcXHMqXFwoKFteKV0rKVxcKSQvKTtcbiAgICAgIGNvbnN0IHNyY1BhdGggPSBtYXRjaCA/IG1hdGNoWzFdIDogcGF0aDtcbiAgICAgIGNvbnN0IHBhZ2VzID0gbWF0Y2hcbiAgICAgICAgPyB0aGlzLnNlYXJjaC5wYWdlcyhtYXRjaFsyXSkubWFwPFBhZ2U+KChkYXRhKSA9PiBkYXRhLnBhZ2UhKVxuICAgICAgICA6IHRoaXMucGFnZXM7XG5cbiAgICAgIC8vIEl0J3MgYSBwYWdlXG4gICAgICBjb25zdCBwYWdlID0gcGFnZXMuZmluZCgocGFnZSkgPT5cbiAgICAgICAgcGFnZS5zcmMucGF0aCArIHBhZ2Uuc3JjLmV4dCA9PT0gc3JjUGF0aFxuICAgICAgKTtcblxuICAgICAgaWYgKHBhZ2UpIHtcbiAgICAgICAgcGF0aCA9IHBhZ2UuZGF0YS51cmw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJdCdzIGEgc3RhdGljIGZpbGVcbiAgICAgICAgY29uc3QgZmlsZSA9IHRoaXMuZmlsZXMuZmluZCgoZmlsZSkgPT4gZmlsZS5zcmMuZW50cnkucGF0aCA9PT0gcGF0aCk7XG5cbiAgICAgICAgaWYgKGZpbGUpIHtcbiAgICAgICAgICBwYXRoID0gZmlsZS5vdXRwdXRQYXRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU291cmNlIGZpbGUgbm90IGZvdW5kOiAke3BhdGh9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQWJzb2x1dGUgVVJMcyBhcmUgcmV0dXJuZWQgYXMgaXNcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBuZXcgVVJMKHBhdGgpLmhyZWY7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gSWdub3JlIGVycm9yXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgodGhpcy5vcHRpb25zLmxvY2F0aW9uLnBhdGhuYW1lKSkge1xuICAgICAgcGF0aCA9IHBvc2l4LmpvaW4odGhpcy5vcHRpb25zLmxvY2F0aW9uLnBhdGhuYW1lLCBwYXRoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWJzb2x1dGUgPyB0aGlzLm9wdGlvbnMubG9jYXRpb24ub3JpZ2luICsgcGF0aCA6IHBhdGg7XG4gIH1cblxuICBhc3luYyBnZXRPckNyZWF0ZVBhZ2UodXJsOiBzdHJpbmcpOiBQcm9taXNlPFBhZ2U+IHtcbiAgICB1cmwgPSBub3JtYWxpemVQYXRoKHVybCk7XG5cbiAgICAvLyBJdCdzIGEgcGFnZVxuICAgIGNvbnN0IHBhZ2UgPSB0aGlzLnBhZ2VzLmZpbmQoKHBhZ2UpID0+IHBhZ2UuZGF0YS51cmwgPT09IHVybCk7XG5cbiAgICBpZiAocGFnZSkge1xuICAgICAgcmV0dXJuIHBhZ2U7XG4gICAgfVxuXG4gICAgLy8gSXQncyBhIHN0YXRpYyBmaWxlXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbGVzLmZpbmRJbmRleCgoZikgPT4gZi5vdXRwdXRQYXRoID09PSB1cmwpO1xuXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLmZpbGVzLnNwbGljZShpbmRleCwgMSlbMF07XG4gICAgICBjb25zdCBwYWdlID0gYXdhaXQgZmlsZS50b1BhZ2UoKTtcbiAgICAgIHRoaXMucGFnZXMucHVzaChwYWdlKTtcbiAgICAgIHJldHVybiBwYWdlO1xuICAgIH1cblxuICAgIC8vIFJlYWQgdGhlIHNvdXJjZSBmaWxlcyBkaXJlY3RseVxuICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5mcy5lbnRyaWVzLmdldCh1cmwpO1xuICAgIGlmIChlbnRyeSkge1xuICAgICAgY29uc3QgeyBjb250ZW50IH0gPSBhd2FpdCBlbnRyeS5nZXRDb250ZW50KGJpbmFyeUxvYWRlcik7XG4gICAgICBjb25zdCBwYWdlID0gUGFnZS5jcmVhdGUoeyB1cmwgfSwgeyBlbnRyeSB9KTtcbiAgICAgIHBhZ2UuY29udGVudCA9IGNvbnRlbnQgYXMgVWludDhBcnJheTtcbiAgICAgIHRoaXMucGFnZXMucHVzaChwYWdlKTtcbiAgICAgIHJldHVybiBwYWdlO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld1BhZ2UgPSBQYWdlLmNyZWF0ZSh7IHVybCB9KTtcbiAgICB0aGlzLnBhZ2VzLnB1c2gobmV3UGFnZSk7XG4gICAgcmV0dXJuIG5ld1BhZ2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjb250ZW50IG9mIGEgZmlsZS5cbiAgICogUmVzb2x2ZSB0aGUgcGF0aCBpZiBpdCdzIG5lZWRlZC5cbiAgICovXG4gIGFzeW5jIGdldENvbnRlbnQoZmlsZTogc3RyaW5nLCBiaW5hcnk6IHRydWUpOiBQcm9taXNlPFVpbnQ4QXJyYXkgfCB1bmRlZmluZWQ+O1xuICBhc3luYyBnZXRDb250ZW50KGZpbGU6IHN0cmluZywgYmluYXJ5OiBmYWxzZSk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPjtcbiAgYXN5bmMgZ2V0Q29udGVudChcbiAgICBmaWxlOiBzdHJpbmcsXG4gICAgYmluYXJ5OiBib29sZWFuLFxuICApOiBQcm9taXNlPHN0cmluZyB8IFVpbnQ4QXJyYXkgfCB1bmRlZmluZWQ+O1xuICBhc3luYyBnZXRDb250ZW50KFxuICAgIGZpbGU6IHN0cmluZyxcbiAgICBiaW5hcnk6IGJvb2xlYW4sXG4gICk6IFByb21pc2U8c3RyaW5nIHwgVWludDhBcnJheSB8IHVuZGVmaW5lZD4ge1xuICAgIGZpbGUgPSBub3JtYWxpemVQYXRoKGZpbGUpO1xuICAgIGNvbnN0IGJhc2VQYXRoID0gdGhpcy5zcmMoKTtcblxuICAgIGlmIChmaWxlLnN0YXJ0c1dpdGgoYmFzZVBhdGgpKSB7XG4gICAgICBmaWxlID0gbm9ybWFsaXplUGF0aChmaWxlLnNsaWNlKGJhc2VQYXRoLmxlbmd0aCkpO1xuICAgIH1cblxuICAgIGZpbGUgPSBkZWNvZGVVUkkoZmlsZSk7XG4gICAgY29uc3QgdXJsID0gZW5jb2RlVVJJKGZpbGUpO1xuXG4gICAgLy8gSXQncyBhIHBhZ2VcbiAgICBjb25zdCBwYWdlID0gdGhpcy5wYWdlcy5maW5kKChwYWdlKSA9PiBwYWdlLmRhdGEudXJsID09PSB1cmwpO1xuXG4gICAgaWYgKHBhZ2UpIHtcbiAgICAgIHJldHVybiBiaW5hcnkgPyBwYWdlLmJ5dGVzIDogcGFnZS50ZXh0O1xuICAgIH1cblxuICAgIC8vIEl0J3MgYSBzdGF0aWMgZmlsZVxuICAgIGNvbnN0IHN0YXRpY0ZpbGUgPSB0aGlzLmZpbGVzLmZpbmQoKGYpID0+IGYub3V0cHV0UGF0aCA9PT0gZmlsZSk7XG5cbiAgICBpZiAoc3RhdGljRmlsZSkge1xuICAgICAgcmV0dXJuIGJpbmFyeVxuICAgICAgICA/IChhd2FpdCBzdGF0aWNGaWxlLnNyYy5lbnRyeS5nZXRDb250ZW50KGJpbmFyeUxvYWRlcikpXG4gICAgICAgICAgLmNvbnRlbnQgYXMgVWludDhBcnJheVxuICAgICAgICA6IChhd2FpdCBzdGF0aWNGaWxlLnNyYy5lbnRyeS5nZXRDb250ZW50KHRleHRMb2FkZXIpKS5jb250ZW50IGFzIHN0cmluZztcbiAgICB9XG5cbiAgICAvLyBSZWFkIHRoZSBzb3VyY2UgZmlsZXMgZGlyZWN0bHlcbiAgICB0cnkge1xuICAgICAgY29uc3QgZW50cnkgPSB0aGlzLmZzLmVudHJpZXMuZ2V0KGZpbGUpO1xuICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgIHJldHVybiBiaW5hcnlcbiAgICAgICAgICA/IChhd2FpdCBlbnRyeS5nZXRDb250ZW50KGJpbmFyeUxvYWRlcikpLmNvbnRlbnQgYXMgVWludDhBcnJheVxuICAgICAgICAgIDogKGF3YWl0IGVudHJ5LmdldENvbnRlbnQodGV4dExvYWRlcikpLmNvbnRlbnQgYXMgc3RyaW5nO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gSWdub3JlIGVycm9yXG4gICAgfVxuICB9XG5cbiAgLyoqIFJldHVybnMgYSBGaWxlIHN5c3RlbSB3YXRjaGVyIG9mIHRoZSBzaXRlICovXG4gIGdldFdhdGNoZXIoKTogV2F0Y2hlciB7XG4gICAgcmV0dXJuIG5ldyBGU1dhdGNoZXIoe1xuICAgICAgcm9vdDogdGhpcy5zcmMoKSxcbiAgICAgIHBhdGhzOiB0aGlzLm9wdGlvbnMud2F0Y2hlci5pbmNsdWRlLFxuICAgICAgaWdub3JlOiB0aGlzLm9wdGlvbnMud2F0Y2hlci5pZ25vcmUsXG4gICAgICBkZWJvdW5jZTogdGhpcy5vcHRpb25zLndhdGNoZXIuZGVib3VuY2UsXG4gICAgfSk7XG4gIH1cblxuICAvKiogUmV0dXJucyBhIFdlYiBzZXJ2ZXIgb2YgdGhlIHNpdGUgKi9cbiAgZ2V0U2VydmVyKCk6IFNlcnZlciB7XG4gICAgY29uc3QgeyBwb3J0LCBob3N0bmFtZSwgcGFnZTQwNCwgbWlkZGxld2FyZXMgfSA9IHRoaXMub3B0aW9ucy5zZXJ2ZXI7XG4gICAgY29uc3Qgcm9vdCA9IHRoaXMub3B0aW9ucy5zZXJ2ZXIucm9vdCB8fCB0aGlzLmRlc3QoKTtcbiAgICBjb25zdCBzZXJ2ZXIgPSBuZXcgU2VydmVyKHsgcm9vdCwgcG9ydCwgaG9zdG5hbWUgfSk7XG5cbiAgICBzZXJ2ZXIudXNlKG5vdEZvdW5kKHtcbiAgICAgIHJvb3QsXG4gICAgICBwYWdlNDA0LFxuICAgICAgZGlyZWN0b3J5SW5kZXg6IHRydWUsXG4gICAgfSkpO1xuXG4gICAgaWYgKG1pZGRsZXdhcmVzKSB7XG4gICAgICBzZXJ2ZXIudXNlKC4uLm1pZGRsZXdhcmVzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VydmVyO1xuICB9XG59XG5cbi8qKiBUaGUgb3B0aW9ucyBmb3IgdGhlIHJlc29sdmUgZnVuY3Rpb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZU9wdGlvbnMge1xuICAvKiogV2hldGhlciBzZWFyY2ggaW4gdGhlIGluY2x1ZGVzIGZvbGRlciBvciBub3QgKi9cbiAgaW5jbHVkZXM/OiBib29sZWFuO1xuXG4gIC8qKiBEZWZhdWx0IGxvYWRlciAqL1xuICBsb2FkZXI/OiBMb2FkZXI7XG59XG5cbi8qKiBUaGUgb3B0aW9ucyB0byBjb25maWd1cmUgdGhlIHNpdGUgYnVpbGQgKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2l0ZU9wdGlvbnMge1xuICAvKiogVGhlIHBhdGggb2YgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgKi9cbiAgY3dkOiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBwYXRoIG9mIHRoZSBzaXRlIHNvdXJjZSAqL1xuICBzcmM6IHN0cmluZztcblxuICAvKiogVGhlIHBhdGggb2YgdGhlIGJ1aWx0IGRlc3RpbmF0aW9uICovXG4gIGRlc3Q6IHN0cmluZztcblxuICAvKiogV2hldGhlciB0aGUgZW1wdHkgZm9sZGVyIHNob3VsZCBiZSBlbXB0aWVkIGJlZm9yZSB0aGUgYnVpbGQgKi9cbiAgZW1wdHlEZXN0PzogYm9vbGVhbjtcblxuICAvKiogV2hldGhlciB0aGUgc2l0ZSBpcyBpbiBwcmV2aWV3IG1vZGUgKi9cbiAgcHJldmlldz86IGJvb2xlYW47XG5cbiAgLyoqIFRoZSBkZWZhdWx0IGluY2x1ZGVzIHBhdGggKi9cbiAgaW5jbHVkZXM6IHN0cmluZztcblxuICAvKiogVGhlIGRlZmF1bHQgY3NzIGZpbGUgKi9cbiAgY3NzRmlsZTogc3RyaW5nO1xuXG4gIC8qKiBUaGUgZGVmYXVsdCBqcyBmaWxlICovXG4gIGpzRmlsZTogc3RyaW5nO1xuXG4gIC8qKiBUaGUgZGVmYXVsdCBmb2xkZXIgZm9yIGZvbnRzICovXG4gIGZvbnRzRm9sZGVyOiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBzaXRlIGxvY2F0aW9uICh1c2VkIHRvIGdlbmVyYXRlIGZpbmFsIHVybHMpICovXG4gIGxvY2F0aW9uOiBVUkw7XG5cbiAgLyoqIFNldCB0cnVlIHRvIGdlbmVyYXRlIHByZXR0eSB1cmxzIChgL2Fib3V0LW1lL2ApICovXG4gIHByZXR0eVVybHM6IGJvb2xlYW47XG5cbiAgLyoqIFNldCB0cnVlIHRvIGRvbid0IGNvbnNpZGVyIHR3byB1cmxzIHRoZSBlcXVhbCBpZiB0aGUgb25seSBkaWZmZXJlbmNlIGlzIHRoZSBjYXNlICovXG4gIGNhc2VTZW5zaXRpdmVVcmxzOiBib29sZWFuO1xuXG4gIC8qKiBUaGUgbG9jYWwgc2VydmVyIG9wdGlvbnMgKi9cbiAgc2VydmVyOiBTZXJ2ZXJPcHRpb25zO1xuXG4gIC8qKiBUaGUgbG9jYWwgd2F0Y2hlciBvcHRpb25zICovXG4gIHdhdGNoZXI6IFdhdGNoZXJPcHRpb25zO1xuXG4gIC8qKiBUaGUgY29tcG9uZW50cyBvcHRpb25zICovXG4gIGNvbXBvbmVudHM6IENvbXBvbmVudHNPcHRpb25zO1xufVxuXG4vKiogVGhlIG9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBsb2NhbCBzZXJ2ZXIgKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgcm9vdCBkaXJlY3RvcnkgdG8gc2VydmUuXG4gICAqIEJ5IGRlZmF1bHQgaXMgdGhlIHNhbWUgYXMgdGhlIHNpdGUgZGVzdCBmb2xkZXIuXG4gICAqL1xuICByb290Pzogc3RyaW5nO1xuXG4gIC8qKiBUaGUgcG9ydCB0byBsaXN0ZW4gb24gKi9cbiAgcG9ydDogbnVtYmVyO1xuXG4gIC8qKiBUaGUgaG9zdG5hbWUgdG8gbGlzdGVuIG9uICovXG4gIGhvc3RuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIFRvIG9wZW4gdGhlIHNlcnZlciBpbiBhIGJyb3dzZXIgKi9cbiAgb3BlbjogYm9vbGVhbjtcblxuICAvKiogVGhlIGZpbGUgdG8gc2VydmUgb24gNDA0IGVycm9yICovXG4gIHBhZ2U0MDQ6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byB1c2UgdGhlIGRlYnVnIGJhciBvciBub3RcbiAgICogVXNlIGEgc3RyaW5nIHRvIHNwZWNpZnkgYSBjdXN0b20gVVJMIG9mIHRoZSA8bHVtZS1iYXI+IHdlYiBjb21wb25lbnRcbiAgICovXG4gIGRlYnVnQmFyPzogc3RyaW5nIHwgYm9vbGVhbjtcblxuICAvKiogT3B0aW9uYWwgZm9yIHRoZSBzZXJ2ZXIgKi9cbiAgbWlkZGxld2FyZXM6IE1pZGRsZXdhcmVbXTtcbn1cblxuLyoqIFRoZSBvcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgbG9jYWwgd2F0Y2hlciAqL1xuZXhwb3J0IGludGVyZmFjZSBXYXRjaGVyT3B0aW9ucyB7XG4gIC8qKiBQYXRocyB0byBpZ25vcmUgYnkgdGhlIHdhdGNoZXIgKi9cbiAgaWdub3JlOiAoc3RyaW5nIHwgKChwYXRoOiBzdHJpbmcpID0+IGJvb2xlYW4pKVtdO1xuXG4gIC8qKiBUaGUgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIHRvIGNoZWNrIGZvciBjaGFuZ2VzICovXG4gIGRlYm91bmNlOiBudW1iZXI7XG5cbiAgLyoqIEV4dHJhIGZpbGVzIGFuZCBmb2xkZXJzIHRvIHdhdGNoIChvdXNpZGUgdGhlIHNyYyBmb2xkZXIpICovXG4gIGluY2x1ZGU6IHN0cmluZ1tdO1xufVxuXG4vKiogVGhlIG9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBjb21wb25lbnRzICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudHNPcHRpb25zIHtcbiAgLyoqIFRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIHNhdmUgdGhlIGNvbXBvbmVudHMgY3NzIGNvZGUgKi9cbiAgY3NzRmlsZT86IHN0cmluZztcblxuICAvKiogVGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gc2F2ZSB0aGUgY29tcG9uZW50cyBqYXZhc2NyaXB0IGNvZGUgKi9cbiAganNGaWxlPzogc3RyaW5nO1xuXG4gIC8qKiBBbiBvcHRpb25hbCBwbGFjZWhvbGRlciB0byBpbnNlcnQgdGhlIENTUyBhbmQgSlMgY29kZSAqL1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgU2l0ZUV2ZW50TWFwID0ge1xuICAvLyBkZW5vLWxpbnQtaWdub3JlIGJhbi10eXBlc1xuICBhZnRlckxvYWQ6IHt9O1xuICBiZWZvcmVCdWlsZDoge1xuICAgIC8qKiB0aGUgbGlzdCBvZiBwYWdlcyB0aGF0IGhhdmUgYmVlbiBzYXZlZCAqL1xuICAgIHBhZ2VzOiBQYWdlW107XG4gIH07XG4gIGFmdGVyQnVpbGQ6IHtcbiAgICAvKiogdGhlIGxpc3Qgb2YgcGFnZXMgdGhhdCBoYXZlIGJlZW4gc2F2ZWQgKi9cbiAgICBwYWdlczogUGFnZVtdO1xuICAgIC8qKiBjb250YWlucyB0aGUgbGlzdCBvZiBzdGF0aWMgZmlsZXMgdGhhdCBoYXZlIGJlZW4gY29waWVkICovXG4gICAgc3RhdGljRmlsZXM6IFN0YXRpY0ZpbGVbXTtcbiAgfTtcbiAgYmVmb3JlVXBkYXRlOiB7XG4gICAgLyoqIHRoZSBmaWxlcyB0aGF0IHdlcmUgY2hhbmdlZCAqL1xuICAgIGZpbGVzOiBTZXQ8c3RyaW5nPjtcbiAgfTtcbiAgYWZ0ZXJVcGRhdGU6IHtcbiAgICAvKiogdGhlIGZpbGVzIHRoYXQgd2VyZSBjaGFuZ2VkICovXG4gICAgZmlsZXM6IFNldDxzdHJpbmc+O1xuICAgIC8qKiB0aGUgbGlzdCBvZiBwYWdlcyB0aGF0IGhhdmUgYmVlbiBzYXZlZCAqL1xuICAgIHBhZ2VzOiBQYWdlW107XG4gICAgLyoqIGNvbnRhaW5zIHRoZSBsaXN0IG9mIHN0YXRpYyBmaWxlcyB0aGF0IGhhdmUgYmVlbiBjb3BpZWQgKi9cbiAgICBzdGF0aWNGaWxlczogU3RhdGljRmlsZVtdO1xuICB9O1xuICBiZWZvcmVSZW5kZXI6IHtcbiAgICAvKiogdGhlIGxpc3Qgb2YgcGFnZXMgdGhhdCBhcmUgYWJvdXQgdG8gcmVuZGVyICovXG4gICAgcGFnZXM6IFBhZ2VbXTtcbiAgfTtcbiAgYWZ0ZXJSZW5kZXI6IHtcbiAgICAvKiogdGhlIGxpc3Qgb2YgcGFnZXMgdGhhdCBoYXZlIGJlZW4gcmVuZGVyZWQgKi9cbiAgICBwYWdlczogUGFnZVtdO1xuICB9O1xuICAvLyBkZW5vLWxpbnQtaWdub3JlIGJhbi10eXBlc1xuICBiZWZvcmVTYXZlOiB7fTtcbiAgLy8gZGVuby1saW50LWlnbm9yZSBiYW4tdHlwZXNcbiAgYWZ0ZXJTdGFydFNlcnZlcjoge307XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIExvYWRQYWdlc09wdGlvbnMge1xuICBsb2FkZXI/OiBMb2FkZXI7XG4gIGVuZ2luZT86IEVuZ2luZSB8IEVuZ2luZVtdO1xuICBwYWdlU3ViRXh0ZW5zaW9uPzogc3RyaW5nO1xufVxuXG4vKiogQ3VzdG9tIGV2ZW50cyBmb3Igc2l0ZSBidWlsZCAqL1xuZXhwb3J0IHR5cGUgU2l0ZUV2ZW50PFQgZXh0ZW5kcyBTaXRlRXZlbnRUeXBlID0gU2l0ZUV2ZW50VHlwZT4gPVxuICAmIEV2ZW50XG4gICYgU2l0ZUV2ZW50TWFwW1RdXG4gICYgeyB0eXBlOiBUIH07XG5cbi8qKiBUaGUgYXZhaWxhYmxlIGV2ZW50IHR5cGVzICovXG5leHBvcnQgdHlwZSBTaXRlRXZlbnRUeXBlID0ga2V5b2YgU2l0ZUV2ZW50TWFwO1xuXG4vKiogQSBnZW5lcmljIEx1bWUgcGx1Z2luICovXG5leHBvcnQgdHlwZSBQbHVnaW4gPSAoc2l0ZTogU2l0ZSkgPT4gdm9pZDtcblxuZnVuY3Rpb24gcGF0aEJlbG9uZ3MoYmFzZTogc3RyaW5nLCBwYXRoPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghcGF0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gYmFzZSA9PT0gcGF0aCB8fCBwYXRoPy5zdGFydHNXaXRoKGJhc2UgKyBcIi9cIik7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxJQUFJLEVBQUUsS0FBSyxRQUFRLGtCQUFrQjtBQUM5QyxTQUFTLEtBQUssUUFBUSxvQkFBb0I7QUFDMUMsU0FBUyxLQUFLLEVBQUUsYUFBYSxRQUFRLGtCQUFrQjtBQUN2RCxTQUFTLEdBQUcsUUFBUSxpQkFBaUI7QUFDckMsU0FBUyxHQUFHLFFBQVEsaUJBQWlCO0FBQ3JDLFNBQVMsYUFBYSxRQUFRLHNCQUFzQjtBQUNwRCxTQUFTLGFBQWEsUUFBUSwwQkFBMEI7QUFFeEQsT0FBTyxRQUFRLFVBQVU7QUFDekIsU0FBUyxVQUFVLEVBQUUsU0FBUyxFQUFFLGVBQWUsUUFBUSxrQkFBa0I7QUFDekUsT0FBTyxnQkFBZ0IsbUJBQW1CO0FBQzFDLE9BQU8sWUFBWSxjQUFjO0FBQ2pDLE9BQU8sWUFBWSxjQUFjO0FBQ2pDLE9BQU8sZ0JB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 +// denoCacheMetadata=7620427696009553412,7983631689289966972
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/8a5cef7308a79d18e459106207b7b2056b670cb0d75b75d23fd5da72b9dcc6ba.js b/vendor/gen/https/deno.land/8a5cef7308a79d18e459106207b7b2056b670cb0d75b75d23fd5da72b9dcc6ba.js new file mode 100644 index 0000000..eef6d27 --- /dev/null +++ b/vendor/gen/https/deno.land/8a5cef7308a79d18e459106207b7b2056b670cb0d75b75d23fd5da72b9dcc6ba.js @@ -0,0 +1,14 @@ +import { Environment } from "./src/environment.ts"; +import { FileLoader } from "./src/loader.ts"; +export default function(options = {}) { + const loader = typeof options.includes === "object" ? options.includes : new FileLoader(options.includes); + const env = new Environment({ + loader, + dataVarname: options.dataVarname || "it", + autoescape: options.autoescape ?? false, + autoDataVarname: options.autoDataVarname ?? true + }); + return env; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9iYXJlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSBcIi4vc3JjL2Vudmlyb25tZW50LnRzXCI7XG5pbXBvcnQgeyBGaWxlTG9hZGVyLCB0eXBlIExvYWRlciB9IGZyb20gXCIuL3NyYy9sb2FkZXIudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcbiAgaW5jbHVkZXM/OiBzdHJpbmcgfCBMb2FkZXI7XG4gIGF1dG9EYXRhVmFybmFtZT86IGJvb2xlYW47XG4gIGRhdGFWYXJuYW1lPzogc3RyaW5nO1xuICBhdXRvZXNjYXBlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKG9wdGlvbnM6IE9wdGlvbnMgPSB7fSk6IEVudmlyb25tZW50IHtcbiAgY29uc3QgbG9hZGVyID0gdHlwZW9mIG9wdGlvbnMuaW5jbHVkZXMgPT09IFwib2JqZWN0XCJcbiAgICA/IG9wdGlvbnMuaW5jbHVkZXNcbiAgICA6IG5ldyBGaWxlTG9hZGVyKG9wdGlvbnMuaW5jbHVkZXMpO1xuXG4gIGNvbnN0IGVudiA9IG5ldyBFbnZpcm9ubWVudCh7XG4gICAgbG9hZGVyLFxuICAgIGRhdGFWYXJuYW1lOiBvcHRpb25zLmRhdGFWYXJuYW1lIHx8IFwiaXRcIixcbiAgICBhdXRvZXNjYXBlOiBvcHRpb25zLmF1dG9lc2NhcGUgPz8gZmFsc2UsXG4gICAgYXV0b0RhdGFWYXJuYW1lOiBvcHRpb25zLmF1dG9EYXRhVmFybmFtZSA/PyB0cnVlLFxuICB9KTtcblxuICByZXR1cm4gZW52O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsV0FBVyxRQUFRLHVCQUF1QjtBQUNuRCxTQUFTLFVBQVUsUUFBcUIsa0JBQWtCO0FBUzFELGVBQWUsU0FBVSxVQUFtQixDQUFDLENBQUM7RUFDNUMsTUFBTSxTQUFTLE9BQU8sUUFBUSxRQUFRLEtBQUssV0FDdkMsUUFBUSxRQUFRLEdBQ2hCLElBQUksV0FBVyxRQUFRLFFBQVE7RUFFbkMsTUFBTSxNQUFNLElBQUksWUFBWTtJQUMxQjtJQUNBLGFBQWEsUUFBUSxXQUFXLElBQUk7SUFDcEMsWUFBWSxRQUFRLFVBQVUsSUFBSTtJQUNsQyxpQkFBaUIsUUFBUSxlQUFlLElBQUk7RUFDOUM7RUFFQSxPQUFPO0FBQ1QifQ== +// denoCacheMetadata=8203972905828276494,14459579729624302761
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/8b9e9160f3a0e54f0e5d702063871e91e1492c805e124a3f03472d58238d34cd.js b/vendor/gen/https/deno.land/8b9e9160f3a0e54f0e5d702063871e91e1492c805e124a3f03472d58238d34cd.js new file mode 100644 index 0000000..9057ba2 --- /dev/null +++ b/vendor/gen/https/deno.land/8b9e9160f3a0e54f0e5d702063871e91e1492c805e124a3f03472d58238d34cd.js @@ -0,0 +1,61 @@ +import { Cell } from "./cell.ts"; +/** + * Row representation. + */ export class Row extends Array { + options = {}; + /** + * Create a new row. If cells is a row, all cells and options of the row will + * be copied to the new row. + * @param cells Cells or row. + */ static from(cells) { + const row = new this(...cells); + if (cells instanceof Row) { + row.options = { + ...cells.options + }; + } + return row; + } + /** Clone row recursively with all options. */ clone() { + const row = new Row(...this.map((cell)=>cell instanceof Cell ? cell.clone() : cell)); + row.options = { + ...this.options + }; + return row; + } + /** + * Setter: + */ /** + * Enable/disable cell border. + * @param enable Enable/disable cell border. + * @param override Override existing value. + */ border(enable, override = true) { + if (override || typeof this.options.border === "undefined") { + this.options.border = enable; + } + return this; + } + /** + * Align row content. + * @param direction Align direction. + * @param override Override existing value. + */ align(direction, override = true) { + if (override || typeof this.options.align === "undefined") { + this.options.align = direction; + } + return this; + } + /** + * Getter: + */ /** Check if row has border. */ getBorder() { + return this.options.border === true; + } + /** Check if row or any child cell has border. */ hasBorder() { + return this.getBorder() || this.some((cell)=>cell instanceof Cell && cell.getBorder()); + } + /** Get row alignment. */ getAlign() { + return this.options.align ?? "left"; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvdGFibGUvcm93LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENlbGwsIERpcmVjdGlvbiwgSUNlbGwgfSBmcm9tIFwiLi9jZWxsLnRzXCI7XG5cbi8qKiBSb3cgdHlwZSAqL1xuZXhwb3J0IHR5cGUgSVJvdzxUIGV4dGVuZHMgSUNlbGwgfCB1bmRlZmluZWQgPSBJQ2VsbCB8IHVuZGVmaW5lZD4gPVxuICB8IFRbXVxuICB8IFJvdzxUPjtcbi8qKiBKc29uIHJvdy4gKi9cbmV4cG9ydCB0eXBlIElEYXRhUm93ID0gUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPjtcblxuLyoqIFJvdyBvcHRpb25zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUm93T3B0aW9ucyB7XG4gIGluZGVudD86IG51bWJlcjtcbiAgYm9yZGVyPzogYm9vbGVhbjtcbiAgYWxpZ24/OiBEaXJlY3Rpb247XG59XG5cbi8qKlxuICogUm93IHJlcHJlc2VudGF0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgUm93PFQgZXh0ZW5kcyBJQ2VsbCB8IHVuZGVmaW5lZCA9IElDZWxsIHwgdW5kZWZpbmVkPlxuICBleHRlbmRzIEFycmF5PFQ+IHtcbiAgcHJvdGVjdGVkIG9wdGlvbnM6IElSb3dPcHRpb25zID0ge307XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyByb3cuIElmIGNlbGxzIGlzIGEgcm93LCBhbGwgY2VsbHMgYW5kIG9wdGlvbnMgb2YgdGhlIHJvdyB3aWxsXG4gICAqIGJlIGNvcGllZCB0byB0aGUgbmV3IHJvdy5cbiAgICogQHBhcmFtIGNlbGxzIENlbGxzIG9yIHJvdy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbTxUIGV4dGVuZHMgSUNlbGwgfCB1bmRlZmluZWQ+KFxuICAgIGNlbGxzOiBJUm93PFQ+LFxuICApOiBSb3c8VD4ge1xuICAgIGNvbnN0IHJvdyA9IG5ldyB0aGlzKC4uLmNlbGxzKTtcbiAgICBpZiAoY2VsbHMgaW5zdGFuY2VvZiBSb3cpIHtcbiAgICAgIHJvdy5vcHRpb25zID0geyAuLi4oY2VsbHMgYXMgUm93KS5vcHRpb25zIH07XG4gICAgfVxuICAgIHJldHVybiByb3c7XG4gIH1cblxuICAvKiogQ2xvbmUgcm93IHJlY3Vyc2l2ZWx5IHdpdGggYWxsIG9wdGlvbnMuICovXG4gIHB1YmxpYyBjbG9uZSgpOiBSb3cge1xuICAgIGNvbnN0IHJvdyA9IG5ldyBSb3coXG4gICAgICAuLi50aGlzLm1hcCgoY2VsbDogVCkgPT4gY2VsbCBpbnN0YW5jZW9mIENlbGwgPyBjZWxsLmNsb25lKCkgOiBjZWxsKSxcbiAgICApO1xuICAgIHJvdy5vcHRpb25zID0geyAuLi50aGlzLm9wdGlvbnMgfTtcbiAgICByZXR1cm4gcm93O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHRlcjpcbiAgICovXG5cbiAgLyoqXG4gICAqIEVuYWJsZS9kaXNhYmxlIGNlbGwgYm9yZGVyLlxuICAgKiBAcGFyYW0gZW5hYmxlICAgIEVuYWJsZS9kaXNhYmxlIGNlbGwgYm9yZGVyLlxuICAgKiBAcGFyYW0gb3ZlcnJpZGUgIE92ZXJyaWRlIGV4aXN0aW5nIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIGJvcmRlcihlbmFibGU6IGJvb2xlYW4sIG92ZXJyaWRlID0gdHJ1ZSk6IHRoaXMge1xuICAgIGlmIChvdmVycmlkZSB8fCB0eXBlb2YgdGhpcy5vcHRpb25zLmJvcmRlciA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgdGhpcy5vcHRpb25zLmJvcmRlciA9IGVuYWJsZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWxpZ24gcm93IGNvbnRlbnQuXG4gICAqIEBwYXJhbSBkaXJlY3Rpb24gQWxpZ24gZGlyZWN0aW9uLlxuICAgKiBAcGFyYW0gb3ZlcnJpZGUgIE92ZXJyaWRlIGV4aXN0aW5nIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIGFsaWduKGRpcmVjdGlvbjogRGlyZWN0aW9uLCBvdmVycmlkZSA9IHRydWUpOiB0aGlzIHtcbiAgICBpZiAob3ZlcnJpZGUgfHwgdHlwZW9mIHRoaXMub3B0aW9ucy5hbGlnbiA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgdGhpcy5vcHRpb25zLmFsaWduID0gZGlyZWN0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXR0ZXI6XG4gICAqL1xuXG4gIC8qKiBDaGVjayBpZiByb3cgaGFzIGJvcmRlci4gKi9cbiAgcHVibGljIGdldEJvcmRlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmJvcmRlciA9PT0gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBDaGVjayBpZiByb3cgb3IgYW55IGNoaWxkIGNlbGwgaGFzIGJvcmRlci4gKi9cbiAgcHVibGljIGhhc0JvcmRlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRCb3JkZXIoKSB8fFxuICAgICAgdGhpcy5zb21lKChjZWxsKSA9PiBjZWxsIGluc3RhbmNlb2YgQ2VsbCAmJiBjZWxsLmdldEJvcmRlcigpKTtcbiAgfVxuXG4gIC8qKiBHZXQgcm93IGFsaWdubWVudC4gKi9cbiAgcHVibGljIGdldEFsaWduKCk6IERpcmVjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5hbGlnbiA/PyBcImxlZnRcIjtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsSUFBSSxRQUEwQixZQUFZO0FBZ0JuRDs7Q0FFQyxHQUNELE9BQU8sTUFBTSxZQUNIO0VBQ0UsVUFBdUIsQ0FBQyxFQUFFO0VBRXBDOzs7O0dBSUMsR0FDRCxPQUFjLEtBQ1osS0FBYyxFQUNOO0lBQ1IsTUFBTSxNQUFNLElBQUksSUFBSSxJQUFJO0lBQ3hCLElBQUksaUJBQWlCLEtBQUs7TUFDeEIsSUFBSSxPQUFPLEdBQUc7UUFBRSxHQUFHLEFBQUMsTUFBYyxPQUFPO01BQUM7SUFDNUM7SUFDQSxPQUFPO0VBQ1Q7RUFFQSw0Q0FBNEMsR0FDNUMsQUFBTyxRQUFhO0lBQ2xCLE1BQU0sTUFBTSxJQUFJLE9BQ1gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQVksZ0JBQWdCLE9BQU8sS0FBSyxLQUFLLEtBQUs7SUFFakUsSUFBSSxPQUFPLEdBQUc7TUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPO0lBQUM7SUFDaEMsT0FBTztFQUNUO0VBRUE7O0dBRUMsR0FFRDs7OztHQUlDLEdBQ0QsQUFBTyxPQUFPLE1BQWUsRUFBRSxXQUFXLElBQUksRUFBUTtJQUNwRCxJQUFJLFlBQVksT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxhQUFhO01BQzFELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHO0lBQ3hCO0lBQ0EsT0FBTyxJQUFJO0VBQ2I7RUFFQTs7OztHQUlDLEdBQ0QsQUFBTyxNQUFNLFNBQW9CLEVBQUUsV0FBVyxJQUFJLEVBQVE7SUFDeEQsSUFBSSxZQUFZLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEtBQUssYUFBYTtNQUN6RCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRztJQUN2QjtJQUNBLE9BQU8sSUFBSTtFQUNiO0VBRUE7O0dBRUMsR0FFRCw2QkFBNkIsR0FDN0IsQUFBTyxZQUFxQjtJQUMxQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLO0VBQ2pDO0VBRUEsK0NBQStDLEdBQy9DLEFBQU8sWUFBcUI7SUFDMUIsT0FBTyxJQUFJLENBQUMsU0FBUyxNQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBUyxnQkFBZ0IsUUFBUSxLQUFLLFNBQVM7RUFDOUQ7RUFFQSx1QkFBdUIsR0FDdkIsQUFBTyxXQUFzQjtJQUMzQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJO0VBQy9CO0FBQ0YifQ== +// denoCacheMetadata=215881043658159480,10804482753889458298
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/8bf0236b96f24c1623e587b7c0cf3c199557796529f434f101d5987a38f21a83.js b/vendor/gen/https/deno.land/8bf0236b96f24c1623e587b7c0cf3c199557796529f434f101d5987a38f21a83.js new file mode 100644 index 0000000..8c77cbb --- /dev/null +++ b/vendor/gen/https/deno.land/8bf0236b96f24c1623e587b7c0cf3c199557796529f434f101d5987a38f21a83.js @@ -0,0 +1,51 @@ +/** + * Define independent updates scopes + * This optimize the update process after any change + */ export default class Scopes { + scopes = new Set(); + /** Returns a function to filter the pages that must be rebuild */ getFilter(changedFiles) { + // There's no any scope, so rebuild all pages + if (this.scopes.size === 0) { + return ()=>true; + } + let noScoped = false; + const changed = new Set(); + for (const file of changedFiles){ + let found = false; + for (const scopeFn of this.scopes){ + if (scopeFn(file)) { + changed.add(scopeFn); + found = true; + break; + } + } + if (!found) { + noScoped = true; + } + } + // Calculate scoped extensions that didn't change + const notChanged = []; + for (const scopeFn of this.scopes){ + if (!changed.has(scopeFn)) { + notChanged.push(scopeFn); + } + } + // Generate the filter function + return function(entry) { + // Ignore directories + if (entry.type === "directory") { + return true; + } + // It matches with any scope that has changed + for (const scopeFn of changed){ + if (scopeFn(entry.path)) { + return true; + } + } + // It's not scoped + return noScoped && notChanged.every((scopeFn)=>!scopeFn(entry.path)); + }; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS9zY29wZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbnRyeSB9IGZyb20gXCIuL2ZzLnRzXCI7XG5cbi8qKlxuICogRGVmaW5lIGluZGVwZW5kZW50IHVwZGF0ZXMgc2NvcGVzXG4gKiBUaGlzIG9wdGltaXplIHRoZSB1cGRhdGUgcHJvY2VzcyBhZnRlciBhbnkgY2hhbmdlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjb3BlcyB7XG4gIHNjb3BlcyA9IG5ldyBTZXQ8U2NvcGVGaWx0ZXI+KCk7XG5cbiAgLyoqIFJldHVybnMgYSBmdW5jdGlvbiB0byBmaWx0ZXIgdGhlIHBhZ2VzIHRoYXQgbXVzdCBiZSByZWJ1aWxkICovXG4gIGdldEZpbHRlcihjaGFuZ2VkRmlsZXM6IEl0ZXJhYmxlPHN0cmluZz4pOiAoZW50cnk6IEVudHJ5KSA9PiBib29sZWFuIHtcbiAgICAvLyBUaGVyZSdzIG5vIGFueSBzY29wZSwgc28gcmVidWlsZCBhbGwgcGFnZXNcbiAgICBpZiAodGhpcy5zY29wZXMuc2l6ZSA9PT0gMCkge1xuICAgICAgcmV0dXJuICgpID0+IHRydWU7XG4gICAgfVxuXG4gICAgbGV0IG5vU2NvcGVkID0gZmFsc2U7XG4gICAgY29uc3QgY2hhbmdlZCA9IG5ldyBTZXQ8U2NvcGVGaWx0ZXI+KCk7XG5cbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgY2hhbmdlZEZpbGVzKSB7XG4gICAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICAgIGZvciAoY29uc3Qgc2NvcGVGbiBvZiB0aGlzLnNjb3Blcykge1xuICAgICAgICBpZiAoc2NvcGVGbihmaWxlKSkge1xuICAgICAgICAgIGNoYW5nZWQuYWRkKHNjb3BlRm4pO1xuICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgIG5vU2NvcGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDYWxjdWxhdGUgc2NvcGVkIGV4dGVuc2lvbnMgdGhhdCBkaWRuJ3QgY2hhbmdlXG4gICAgY29uc3Qgbm90Q2hhbmdlZDogU2NvcGVGaWx0ZXJbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBzY29wZUZuIG9mIHRoaXMuc2NvcGVzKSB7XG4gICAgICBpZiAoIWNoYW5nZWQuaGFzKHNjb3BlRm4pKSB7XG4gICAgICAgIG5vdENoYW5nZWQucHVzaChzY29wZUZuKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHZW5lcmF0ZSB0aGUgZmlsdGVyIGZ1bmN0aW9uXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChlbnRyeSkge1xuICAgICAgLy8gSWdub3JlIGRpcmVjdG9yaWVzXG4gICAgICBpZiAoZW50cnkudHlwZSA9PT0gXCJkaXJlY3RvcnlcIikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gSXQgbWF0Y2hlcyB3aXRoIGFueSBzY29wZSB0aGF0IGhhcyBjaGFuZ2VkXG4gICAgICBmb3IgKGNvbnN0IHNjb3BlRm4gb2YgY2hhbmdlZCkge1xuICAgICAgICBpZiAoc2NvcGVGbihlbnRyeS5wYXRoKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEl0J3Mgbm90IHNjb3BlZFxuICAgICAgcmV0dXJuIG5vU2NvcGVkICYmIG5vdENoYW5nZWQuZXZlcnkoKHNjb3BlRm4pID0+ICFzY29wZUZuKGVudHJ5LnBhdGgpKTtcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFNjb3BlRmlsdGVyID0gKHBhdGg6IHN0cmluZykgPT4gYm9vbGVhbjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7O0NBR0MsR0FDRCxlQUFlLE1BQU07RUFDbkIsU0FBUyxJQUFJLE1BQW1CO0VBRWhDLGdFQUFnRSxHQUNoRSxVQUFVLFlBQThCLEVBQTZCO0lBQ25FLDZDQUE2QztJQUM3QyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLEdBQUc7TUFDMUIsT0FBTyxJQUFNO0lBQ2Y7SUFFQSxJQUFJLFdBQVc7SUFDZixNQUFNLFVBQVUsSUFBSTtJQUVwQixLQUFLLE1BQU0sUUFBUSxhQUFjO01BQy9CLElBQUksUUFBUTtNQUNaLEtBQUssTUFBTSxXQUFXLElBQUksQ0FBQyxNQUFNLENBQUU7UUFDakMsSUFBSSxRQUFRLE9BQU87VUFDakIsUUFBUSxHQUFHLENBQUM7VUFDWixRQUFRO1VBQ1I7UUFDRjtNQUNGO01BRUEsSUFBSSxDQUFDLE9BQU87UUFDVixXQUFXO01BQ2I7SUFDRjtJQUVBLGlEQUFpRDtJQUNqRCxNQUFNLGFBQTRCLEVBQUU7SUFFcEMsS0FBSyxNQUFNLFdBQVcsSUFBSSxDQUFDLE1BQU0sQ0FBRTtNQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsVUFBVTtRQUN6QixXQUFXLElBQUksQ0FBQztNQUNsQjtJQUNGO0lBRUEsK0JBQStCO0lBQy9CLE9BQU8sU0FBVSxLQUFLO01BQ3BCLHFCQUFxQjtNQUNyQixJQUFJLE1BQU0sSUFBSSxLQUFLLGFBQWE7UUFDOUIsT0FBTztNQUNUO01BRUEsNkNBQTZDO01BQzdDLEtBQUssTUFBTSxXQUFXLFFBQVM7UUFDN0IsSUFBSSxRQUFRLE1BQU0sSUFBSSxHQUFHO1VBQ3ZCLE9BQU87UUFDVDtNQUNGO01BRUEsa0JBQWtCO01BQ2xCLE9BQU8sWUFBWSxXQUFXLEtBQUssQ0FBQyxDQUFDLFVBQVksQ0FBQyxRQUFRLE1BQU0sSUFBSTtJQUN0RTtFQUNGO0FBQ0YifQ== +// denoCacheMetadata=7570441935273296000,1708596329057633674
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/8c0b95919f52419042551a1d030a6b5807bdb565afecdc6eed51d31d0010a092.js b/vendor/gen/https/deno.land/8c0b95919f52419042551a1d030a6b5807bdb565afecdc6eed51d31d0010a092.js new file mode 100644 index 0000000..cb61182 --- /dev/null +++ b/vendor/gen/https/deno.land/8c0b95919f52419042551a1d030a6b5807bdb565afecdc6eed51d31d0010a092.js @@ -0,0 +1,853 @@ +// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. +import { CHAR_BACKWARD_SLASH, CHAR_COLON, CHAR_DOT, CHAR_QUESTION_MARK } from "./_constants.ts"; +import { _format, assertPath, encodeWhitespace, isPathSeparator, isWindowsDeviceRoot, normalizeString } from "./_util.ts"; +import { assert } from "../_util/asserts.ts"; +export const sep = "\\"; +export const delimiter = ";"; +/** + * Resolves path segments into a `path` + * @param pathSegments to process to path + */ export function resolve(...pathSegments) { + let resolvedDevice = ""; + let resolvedTail = ""; + let resolvedAbsolute = false; + for(let i = pathSegments.length - 1; i >= -1; i--){ + let path; + // deno-lint-ignore no-explicit-any + const { Deno } = globalThis; + if (i >= 0) { + path = pathSegments[i]; + } else if (!resolvedDevice) { + if (typeof Deno?.cwd !== "function") { + throw new TypeError("Resolved a drive-letter-less path without a CWD."); + } + path = Deno.cwd(); + } else { + if (typeof Deno?.env?.get !== "function" || typeof Deno?.cwd !== "function") { + throw new TypeError("Resolved a relative path without a CWD."); + } + path = Deno.cwd(); + // Verify that a cwd was found and that it actually points + // to our drive. If not, default to the drive's root. + if (path === undefined || path.slice(0, 3).toLowerCase() !== `${resolvedDevice.toLowerCase()}\\`) { + path = `${resolvedDevice}\\`; + } + } + assertPath(path); + const len = path.length; + // Skip empty entries + if (len === 0) continue; + let rootEnd = 0; + let device = ""; + let isAbsolute = false; + const code = path.charCodeAt(0); + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + // If we started with a separator, we know we at least have an + // absolute path of some kind (UNC or otherwise) + isAbsolute = true; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for(; j < len; ++j){ + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + device = `\\\\${firstPart}\\${path.slice(last)}`; + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator + rootEnd = 1; + isAbsolute = true; + } + if (device.length > 0 && resolvedDevice.length > 0 && device.toLowerCase() !== resolvedDevice.toLowerCase()) { + continue; + } + if (resolvedDevice.length === 0 && device.length > 0) { + resolvedDevice = device; + } + if (!resolvedAbsolute) { + resolvedTail = `${path.slice(rootEnd)}\\${resolvedTail}`; + resolvedAbsolute = isAbsolute; + } + if (resolvedAbsolute && resolvedDevice.length > 0) break; + } + // At this point the path should be resolved to a full absolute path, + // but handle relative paths to be safe (might happen when process.cwd() + // fails) + // Normalize the tail path + resolvedTail = normalizeString(resolvedTail, !resolvedAbsolute, "\\", isPathSeparator); + return resolvedDevice + (resolvedAbsolute ? "\\" : "") + resolvedTail || "."; +} +/** + * Normalizes a `path` + * @param path to normalize + */ export function normalize(path) { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = 0; + let device; + let isAbsolute = false; + const code = path.charCodeAt(0); + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + // If we started with a separator, we know we at least have an absolute + // path of some kind (UNC or otherwise) + isAbsolute = true; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for(; j < len; ++j){ + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + // Return the normalized version of the UNC root since there + // is nothing left to process + return `\\\\${firstPart}\\${path.slice(last)}\\`; + } else if (j !== last) { + // We matched a UNC root with leftovers + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid unnecessary + // work + return "\\"; + } + let tail; + if (rootEnd < len) { + tail = normalizeString(path.slice(rootEnd), !isAbsolute, "\\", isPathSeparator); + } else { + tail = ""; + } + if (tail.length === 0 && !isAbsolute) tail = "."; + if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) { + tail += "\\"; + } + if (device === undefined) { + if (isAbsolute) { + if (tail.length > 0) return `\\${tail}`; + else return "\\"; + } else if (tail.length > 0) { + return tail; + } else { + return ""; + } + } else if (isAbsolute) { + if (tail.length > 0) return `${device}\\${tail}`; + else return `${device}\\`; + } else if (tail.length > 0) { + return device + tail; + } else { + return device; + } +} +/** + * Verifies whether path is absolute + * @param path to verify + */ export function isAbsolute(path) { + assertPath(path); + const len = path.length; + if (len === 0) return false; + const code = path.charCodeAt(0); + if (isPathSeparator(code)) { + return true; + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + if (len > 2 && path.charCodeAt(1) === CHAR_COLON) { + if (isPathSeparator(path.charCodeAt(2))) return true; + } + } + return false; +} +/** + * Join all given a sequence of `paths`,then normalizes the resulting path. + * @param paths to be joined and normalized + */ export function join(...paths) { + const pathsCount = paths.length; + if (pathsCount === 0) return "."; + let joined; + let firstPart = null; + for(let i = 0; i < pathsCount; ++i){ + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (joined === undefined) joined = firstPart = path; + else joined += `\\${path}`; + } + } + if (joined === undefined) return "."; + // Make sure that the joined path doesn't start with two slashes, because + // normalize() will mistake it for an UNC path then. + // + // This step is skipped when it is very clear that the user actually + // intended to point at an UNC path. This is assumed when the first + // non-empty string arguments starts with exactly two slashes followed by + // at least one more non-slash character. + // + // Note that for normalize() to treat a path as an UNC path it needs to + // have at least 2 components, so we don't filter for that here. + // This means that the user can use join to construct UNC paths from + // a server name and a share name; for example: + // path.join('//server', 'share') -> '\\\\server\\share\\') + let needsReplace = true; + let slashCount = 0; + assert(firstPart != null); + if (isPathSeparator(firstPart.charCodeAt(0))) { + ++slashCount; + const firstLen = firstPart.length; + if (firstLen > 1) { + if (isPathSeparator(firstPart.charCodeAt(1))) { + ++slashCount; + if (firstLen > 2) { + if (isPathSeparator(firstPart.charCodeAt(2))) ++slashCount; + else { + // We matched a UNC path in the first part + needsReplace = false; + } + } + } + } + } + if (needsReplace) { + // Find any more consecutive slashes we need to replace + for(; slashCount < joined.length; ++slashCount){ + if (!isPathSeparator(joined.charCodeAt(slashCount))) break; + } + // Replace the slashes if needed + if (slashCount >= 2) joined = `\\${joined.slice(slashCount)}`; + } + return normalize(joined); +} +/** + * It will solve the relative path from `from` to `to`, for instance: + * from = 'C:\\orandea\\test\\aaa' + * to = 'C:\\orandea\\impl\\bbb' + * The output of the function should be: '..\\..\\impl\\bbb' + * @param from relative path + * @param to relative path + */ export function relative(from, to) { + assertPath(from); + assertPath(to); + if (from === to) return ""; + const fromOrig = resolve(from); + const toOrig = resolve(to); + if (fromOrig === toOrig) return ""; + from = fromOrig.toLowerCase(); + to = toOrig.toLowerCase(); + if (from === to) return ""; + // Trim any leading backslashes + let fromStart = 0; + let fromEnd = from.length; + for(; fromStart < fromEnd; ++fromStart){ + if (from.charCodeAt(fromStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for(; fromEnd - 1 > fromStart; --fromEnd){ + if (from.charCodeAt(fromEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const fromLen = fromEnd - fromStart; + // Trim any leading backslashes + let toStart = 0; + let toEnd = to.length; + for(; toStart < toEnd; ++toStart){ + if (to.charCodeAt(toStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for(; toEnd - 1 > toStart; --toEnd){ + if (to.charCodeAt(toEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const toLen = toEnd - toStart; + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for(; i <= length; ++i){ + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='C:\\foo\\bar'; to='C:\\foo\\bar\\baz' + return toOrig.slice(toStart + i + 1); + } else if (i === 2) { + // We get here if `from` is the device root. + // For example: from='C:\\'; to='C:\\foo' + return toOrig.slice(toStart + i); + } + } + if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='C:\\foo\\bar'; to='C:\\foo' + lastCommonSep = i; + } else if (i === 2) { + // We get here if `to` is the device root. + // For example: from='C:\\foo\\bar'; to='C:\\' + lastCommonSep = 3; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === CHAR_BACKWARD_SLASH) lastCommonSep = i; + } + // We found a mismatch before the first common path separator was seen, so + // return the original `to`. + if (i !== length && lastCommonSep === -1) { + return toOrig; + } + let out = ""; + if (lastCommonSep === -1) lastCommonSep = 0; + // Generate the relative path based on the path difference between `to` and + // `from` + for(i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i){ + if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) { + if (out.length === 0) out += ".."; + else out += "\\.."; + } + } + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) { + return out + toOrig.slice(toStart + lastCommonSep, toEnd); + } else { + toStart += lastCommonSep; + if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) ++toStart; + return toOrig.slice(toStart, toEnd); + } +} +/** + * Resolves path to a namespace path + * @param path to resolve to namespace + */ export function toNamespacedPath(path) { + // Note: this will *probably* throw somewhere. + if (typeof path !== "string") return path; + if (path.length === 0) return ""; + const resolvedPath = resolve(path); + if (resolvedPath.length >= 3) { + if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) { + // Possible UNC root + if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) { + const code = resolvedPath.charCodeAt(2); + if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) { + // Matched non-long UNC root, convert the path to a long UNC path + return `\\\\?\\UNC\\${resolvedPath.slice(2)}`; + } + } + } else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0))) { + // Possible device root + if (resolvedPath.charCodeAt(1) === CHAR_COLON && resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH) { + // Matched device root, convert the path to a long UNC path + return `\\\\?\\${resolvedPath}`; + } + } + } + return path; +} +/** + * Return the directory path of a `path`. + * @param path to determine the directory path for + */ export function dirname(path) { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = -1; + let end = -1; + let matchedSlash = true; + let offset = 0; + const code = path.charCodeAt(0); + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + rootEnd = offset = 1; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for(; j < len; ++j){ + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + return path; + } + if (j !== last) { + // We matched a UNC root with leftovers + // Offset by 1 to include the separator after the UNC root to + // treat it as a "normal root" on top of a (UNC) root + rootEnd = offset = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = offset = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) rootEnd = offset = 3; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + return path; + } + for(let i = len - 1; i >= offset; --i){ + if (isPathSeparator(path.charCodeAt(i))) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + if (end === -1) { + if (rootEnd === -1) return "."; + else end = rootEnd; + } + return path.slice(0, end); +} +/** + * Return the last portion of a `path`. Trailing directory separators are ignored. + * @param path to process + * @param ext of path directory + */ export function basename(path, ext = "") { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + assertPath(path); + let start = 0; + let end = -1; + let matchedSlash = true; + let i; + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + if (path.length >= 2) { + const drive = path.charCodeAt(0); + if (isWindowsDeviceRoot(drive)) { + if (path.charCodeAt(1) === CHAR_COLON) start = 2; + } + } + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for(i = path.length - 1; i >= start; --i){ + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + // We saw the first non-path separator, remember this index in case + // we need it if the extension ends up not matching + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + // Try to match the explicit extension + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + // We matched the extension, so mark this as the end of our path + // component + end = i; + } + } else { + // Extension does not match, so our result is the entire path + // component + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + if (start === end) end = firstNonSlashEnd; + else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for(i = path.length - 1; i >= start; --i){ + if (isPathSeparator(path.charCodeAt(i))) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // path component + matchedSlash = false; + end = i + 1; + } + } + if (end === -1) return ""; + return path.slice(start, end); + } +} +/** + * Return the extension of the `path` with leading period. + * @param path with extension + * @returns extension (ex. for `file.ts` returns `.ts`) + */ export function extname(path) { + assertPath(path); + let start = 0; + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + if (path.length >= 2 && path.charCodeAt(1) === CHAR_COLON && isWindowsDeviceRoot(path.charCodeAt(0))) { + start = startPart = 2; + } + for(let i = path.length - 1; i >= start; --i){ + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot + preDotState === 0 || // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + return ""; + } + return path.slice(startDot, end); +} +/** + * Generate a path from `FormatInputPathObject` object. + * @param pathObject with path + */ export function format(pathObject) { + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError(`The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`); + } + return _format("\\", pathObject); +} +/** + * Return a `ParsedPath` object of the `path`. + * @param path to process + */ export function parse(path) { + assertPath(path); + const ret = { + root: "", + dir: "", + base: "", + ext: "", + name: "" + }; + const len = path.length; + if (len === 0) return ret; + let rootEnd = 0; + let code = path.charCodeAt(0); + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + rootEnd = 1; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for(; j < len; ++j){ + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + rootEnd = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + if (len === 3) { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + rootEnd = 3; + } + } else { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + if (rootEnd > 0) ret.root = path.slice(0, rootEnd); + let startDot = -1; + let startPart = rootEnd; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + // Get non-dir info + for(; i >= rootEnd; --i){ + code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot + preDotState === 0 || // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + if (end !== -1) { + ret.base = ret.name = path.slice(startPart, end); + } + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + ret.ext = path.slice(startDot, end); + } + // If the directory is the root, use the entire root as the `dir` including + // the trailing slash if any (`C:\abc` -> `C:\`). Otherwise, strip out the + // trailing slash (`C:\abc\def` -> `C:\abc`). + if (startPart > 0 && startPart !== rootEnd) { + ret.dir = path.slice(0, startPart - 1); + } else ret.dir = ret.root; + return ret; +} +/** + * Converts a file URL to a path string. + * + * ```ts + * import { fromFileUrl } from "https://deno.land/std@$STD_VERSION/path/win32.ts"; + * fromFileUrl("file:///home/foo"); // "\\home\\foo" + * fromFileUrl("file:///C:/Users/foo"); // "C:\\Users\\foo" + * fromFileUrl("file://localhost/home/foo"); // "\\\\localhost\\home\\foo" + * ``` + * @param url of a file URL + */ export function fromFileUrl(url) { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + let path = decodeURIComponent(url.pathname.replace(/\//g, "\\").replace(/%(?![0-9A-Fa-f]{2})/g, "%25")).replace(/^\\*([A-Za-z]:)(\\|$)/, "$1\\"); + if (url.hostname != "") { + // Note: The `URL` implementation guarantees that the drive letter and + // hostname are mutually exclusive. Otherwise it would not have been valid + // to append the hostname and path like this. + path = `\\\\${url.hostname}${path}`; + } + return path; +} +/** + * Converts a path string to a file URL. + * + * ```ts + * import { toFileUrl } from "https://deno.land/std@$STD_VERSION/path/win32.ts"; + * toFileUrl("\\home\\foo"); // new URL("file:///home/foo") + * toFileUrl("C:\\Users\\foo"); // new URL("file:///C:/Users/foo") + * toFileUrl("\\\\127.0.0.1\\home\\foo"); // new URL("file://127.0.0.1/home/foo") + * ``` + * @param path to convert to file URL + */ export function toFileUrl(path) { + if (!isAbsolute(path)) { + throw new TypeError("Must be an absolute path."); + } + const [, hostname, pathname] = path.match(/^(?:[/\\]{2}([^/\\]+)(?=[/\\](?:[^/\\]|$)))?(.*)/); + const url = new URL("file:///"); + url.pathname = encodeWhitespace(pathname.replace(/%/g, "%25")); + if (hostname != null && hostname != "localhost") { + url.hostname = hostname; + if (!url.hostname) { + throw new TypeError("Invalid hostname."); + } + } + return url; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE3MC4wL3BhdGgvd2luMzIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyMiB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cbi8vIFBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9icm93c2VyaWZ5L3BhdGgtYnJvd3NlcmlmeS9cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHR5cGUgeyBGb3JtYXRJbnB1dFBhdGhPYmplY3QsIFBhcnNlZFBhdGggfSBmcm9tIFwiLi9faW50ZXJmYWNlLnRzXCI7XG5pbXBvcnQge1xuICBDSEFSX0JBQ0tXQVJEX1NMQVNILFxuICBDSEFSX0NPTE9OLFxuICBDSEFSX0RPVCxcbiAgQ0hBUl9RVUVTVElPTl9NQVJLLFxufSBmcm9tIFwiLi9fY29uc3RhbnRzLnRzXCI7XG5cbmltcG9ydCB7XG4gIF9mb3JtYXQsXG4gIGFzc2VydFBhdGgsXG4gIGVuY29kZVdoaXRlc3BhY2UsXG4gIGlzUGF0aFNlcGFyYXRvcixcbiAgaXNXaW5kb3dzRGV2aWNlUm9vdCxcbiAgbm9ybWFsaXplU3RyaW5nLFxufSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcIi4uL191dGlsL2Fzc2VydHMudHNcIjtcblxuZXhwb3J0IGNvbnN0IHNlcCA9IFwiXFxcXFwiO1xuZXhwb3J0IGNvbnN0IGRlbGltaXRlciA9IFwiO1wiO1xuXG4vKipcbiAqIFJlc29sdmVzIHBhdGggc2VnbWVudHMgaW50byBhIGBwYXRoYFxuICogQHBhcmFtIHBhdGhTZWdtZW50cyB0byBwcm9jZXNzIHRvIHBhdGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmUoLi4ucGF0aFNlZ21lbnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIGxldCByZXNvbHZlZERldmljZSA9IFwiXCI7XG4gIGxldCByZXNvbHZlZFRhaWwgPSBcIlwiO1xuICBsZXQgcmVzb2x2ZWRBYnNvbHV0ZSA9IGZhbHNlO1xuXG4gIGZvciAobGV0IGkgPSBwYXRoU2VnbWVudHMubGVuZ3RoIC0gMTsgaSA+PSAtMTsgaS0tKSB7XG4gICAgbGV0IHBhdGg6IHN0cmluZztcbiAgICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IHsgRGVubyB9ID0gZ2xvYmFsVGhpcyBhcyBhbnk7XG4gICAgaWYgKGkgPj0gMCkge1xuICAgICAgcGF0aCA9IHBhdGhTZWdtZW50c1tpXTtcbiAgICB9IGVsc2UgaWYgKCFyZXNvbHZlZERldmljZSkge1xuICAgICAgaWYgKHR5cGVvZiBEZW5vPy5jd2QgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUmVzb2x2ZWQgYSBkcml2ZS1sZXR0ZXItbGVzcyBwYXRoIHdpdGhvdXQgYSBDV0QuXCIpO1xuICAgICAgfVxuICAgICAgcGF0aCA9IERlbm8uY3dkKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChcbiAgICAgICAgdHlwZW9mIERlbm8/LmVudj8uZ2V0ICE9PSBcImZ1bmN0aW9uXCIgfHwgdHlwZW9mIERlbm8/LmN3ZCAhPT0gXCJmdW5jdGlvblwiXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlJlc29sdmVkIGEgcmVsYXRpdmUgcGF0aCB3aXRob3V0IGEgQ1dELlwiKTtcbiAgICAgIH1cbiAgICAgIHBhdGggPSBEZW5vLmN3ZCgpO1xuXG4gICAgICAvLyBWZXJpZnkgdGhhdCBhIGN3ZCB3YXMgZm91bmQgYW5kIHRoYXQgaXQgYWN0dWFsbHkgcG9pbnRzXG4gICAgICAvLyB0byBvdXIgZHJpdmUuIElmIG5vdCwgZGVmYXVsdCB0byB0aGUgZHJpdmUncyByb290LlxuICAgICAgaWYgKFxuICAgICAgICBwYXRoID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgcGF0aC5zbGljZSgwLCAzKS50b0xvd2VyQ2FzZSgpICE9PSBgJHtyZXNvbHZlZERldmljZS50b0xvd2VyQ2FzZSgpfVxcXFxgXG4gICAgICApIHtcbiAgICAgICAgcGF0aCA9IGAke3Jlc29sdmVkRGV2aWNlfVxcXFxgO1xuICAgICAgfVxuICAgIH1cblxuICAgIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgICBjb25zdCBsZW4gPSBwYXRoLmxlbmd0aDtcblxuICAgIC8vIFNraXAgZW1wdHkgZW50cmllc1xuICAgIGlmIChsZW4gPT09IDApIGNvbnRpbnVlO1xuXG4gICAgbGV0IHJvb3RFbmQgPSAwO1xuICAgIGxldCBkZXZpY2UgPSBcIlwiO1xuICAgIGxldCBpc0Fic29sdXRlID0gZmFsc2U7XG4gICAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdCgwKTtcblxuICAgIC8vIFRyeSB0byBtYXRjaCBhIHJvb3RcbiAgICBpZiAobGVuID4gMSkge1xuICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgICAvLyBQb3NzaWJsZSBVTkMgcm9vdFxuXG4gICAgICAgIC8vIElmIHdlIHN0YXJ0ZWQgd2l0aCBhIHNlcGFyYXRvciwgd2Uga25vdyB3ZSBhdCBsZWFzdCBoYXZlIGFuXG4gICAgICAgIC8vIGFic29sdXRlIHBhdGggb2Ygc29tZSBraW5kIChVTkMgb3Igb3RoZXJ3aXNlKVxuICAgICAgICBpc0Fic29sdXRlID0gdHJ1ZTtcblxuICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdCgxKSkpIHtcbiAgICAgICAgICAvLyBNYXRjaGVkIGRvdWJsZSBwYXRoIHNlcGFyYXRvciBhdCBiZWdpbm5pbmdcbiAgICAgICAgICBsZXQgaiA9IDI7XG4gICAgICAgICAgbGV0IGxhc3QgPSBqO1xuICAgICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBub24tcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGogPCBsZW4gJiYgaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RQYXJ0ID0gcGF0aC5zbGljZShsYXN0LCBqKTtcbiAgICAgICAgICAgIC8vIE1hdGNoZWQhXG4gICAgICAgICAgICBsYXN0ID0gajtcbiAgICAgICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBwYXRoIHNlcGFyYXRvcnNcbiAgICAgICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICAgICAgaWYgKCFpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGopKSkgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaiA8IGxlbiAmJiBqICE9PSBsYXN0KSB7XG4gICAgICAgICAgICAgIC8vIE1hdGNoZWQhXG4gICAgICAgICAgICAgIGxhc3QgPSBqO1xuICAgICAgICAgICAgICAvLyBNYXRjaCAxIG9yIG1vcmUgbm9uLXBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgICAgICBmb3IgKDsgaiA8IGxlbjsgKytqKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoaiA9PT0gbGVuKSB7XG4gICAgICAgICAgICAgICAgLy8gV2UgbWF0Y2hlZCBhIFVOQyByb290IG9ubHlcbiAgICAgICAgICAgICAgICBkZXZpY2UgPSBgXFxcXFxcXFwke2ZpcnN0UGFydH1cXFxcJHtwYXRoLnNsaWNlKGxhc3QpfWA7XG4gICAgICAgICAgICAgICAgcm9vdEVuZCA9IGo7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgYSBVTkMgcm9vdCB3aXRoIGxlZnRvdmVyc1xuXG4gICAgICAgICAgICAgICAgZGV2aWNlID0gYFxcXFxcXFxcJHtmaXJzdFBhcnR9XFxcXCR7cGF0aC5zbGljZShsYXN0LCBqKX1gO1xuICAgICAgICAgICAgICAgIHJvb3RFbmQgPSBqO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJvb3RFbmQgPSAxO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzV2luZG93c0RldmljZVJvb3QoY29kZSkpIHtcbiAgICAgICAgLy8gUG9zc2libGUgZGV2aWNlIHJvb3RcblxuICAgICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OKSB7XG4gICAgICAgICAgZGV2aWNlID0gcGF0aC5zbGljZSgwLCAyKTtcbiAgICAgICAgICByb290RW5kID0gMjtcbiAgICAgICAgICBpZiAobGVuID4gMikge1xuICAgICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMikpKSB7XG4gICAgICAgICAgICAgIC8vIFRyZWF0IHNlcGFyYXRvciBmb2xsb3dpbmcgZHJpdmUgbmFtZSBhcyBhbiBhYnNvbHV0ZSBwYXRoXG4gICAgICAgICAgICAgIC8vIGluZGljYXRvclxuICAgICAgICAgICAgICBpc0Fic29sdXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgcm9vdEVuZCA9IDM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1BhdGhTZXBhcmF0b3IoY29kZSkpIHtcbiAgICAgIC8vIGBwYXRoYCBjb250YWlucyBqdXN0IGEgcGF0aCBzZXBhcmF0b3JcbiAgICAgIHJvb3RFbmQgPSAxO1xuICAgICAgaXNBYnNvbHV0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgZGV2aWNlLmxlbmd0aCA+IDAgJiZcbiAgICAgIHJlc29sdmVkRGV2aWNlLmxlbmd0aCA+IDAgJiZcbiAgICAgIGRldmljZS50b0xvd2VyQ2FzZSgpICE9PSByZXNvbHZlZERldmljZS50b0xvd2VyQ2FzZSgpXG4gICAgKSB7XG4gICAgICAvLyBUaGlzIHBhdGggcG9pbnRzIHRvIGFub3RoZXIgZGV2aWNlIHNvIGl0IGlzIG5vdCBhcHBsaWNhYmxlXG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAocmVzb2x2ZWREZXZpY2UubGVuZ3RoID09PSAwICYmIGRldmljZS5sZW5ndGggPiAwKSB7XG4gICAgICByZXNvbHZlZERldmljZSA9IGRldmljZTtcbiAgICB9XG4gICAgaWYgKCFyZXNvbHZlZEFic29sdXRlKSB7XG4gICAgICByZXNvbHZlZFRhaWwgPSBgJHtwYXRoLnNsaWNlKHJvb3RFbmQpfVxcXFwke3Jlc29sdmVkVGFpbH1gO1xuICAgICAgcmVzb2x2ZWRBYnNvbHV0ZSA9IGlzQWJzb2x1dGU7XG4gICAgfVxuXG4gICAgaWYgKHJlc29sdmVkQWJzb2x1dGUgJiYgcmVzb2x2ZWREZXZpY2UubGVuZ3RoID4gMCkgYnJlYWs7XG4gIH1cblxuICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwYXRoIHNob3VsZCBiZSByZXNvbHZlZCB0byBhIGZ1bGwgYWJzb2x1dGUgcGF0aCxcbiAgLy8gYnV0IGhhbmRsZSByZWxhdGl2ZSBwYXRocyB0byBiZSBzYWZlIChtaWdodCBoYXBwZW4gd2hlbiBwcm9jZXNzLmN3ZCgpXG4gIC8vIGZhaWxzKVxuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgdGFpbCBwYXRoXG4gIHJlc29sdmVkVGFpbCA9IG5vcm1hbGl6ZVN0cmluZyhcbiAgICByZXNvbHZlZFRhaWwsXG4gICAgIXJlc29sdmVkQWJzb2x1dGUsXG4gICAgXCJcXFxcXCIsXG4gICAgaXNQYXRoU2VwYXJhdG9yLFxuICApO1xuXG4gIHJldHVybiByZXNvbHZlZERldmljZSArIChyZXNvbHZlZEFic29sdXRlID8gXCJcXFxcXCIgOiBcIlwiKSArIHJlc29sdmVkVGFpbCB8fCBcIi5cIjtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgYHBhdGhgXG4gKiBAcGFyYW0gcGF0aCB0byBub3JtYWxpemVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuICBjb25zdCBsZW4gPSBwYXRoLmxlbmd0aDtcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIFwiLlwiO1xuICBsZXQgcm9vdEVuZCA9IDA7XG4gIGxldCBkZXZpY2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgbGV0IGlzQWJzb2x1dGUgPSBmYWxzZTtcbiAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdCgwKTtcblxuICAvLyBUcnkgdG8gbWF0Y2ggYSByb290XG4gIGlmIChsZW4gPiAxKSB7XG4gICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgLy8gUG9zc2libGUgVU5DIHJvb3RcblxuICAgICAgLy8gSWYgd2Ugc3RhcnRlZCB3aXRoIGEgc2VwYXJhdG9yLCB3ZSBrbm93IHdlIGF0IGxlYXN0IGhhdmUgYW4gYWJzb2x1dGVcbiAgICAgIC8vIHBhdGggb2Ygc29tZSBraW5kIChVTkMgb3Igb3RoZXJ3aXNlKVxuICAgICAgaXNBYnNvbHV0ZSA9IHRydWU7XG5cbiAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDEpKSkge1xuICAgICAgICAvLyBNYXRjaGVkIGRvdWJsZSBwYXRoIHNlcGFyYXRvciBhdCBiZWdpbm5pbmdcbiAgICAgICAgbGV0IGogPSAyO1xuICAgICAgICBsZXQgbGFzdCA9IGo7XG4gICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBub24tcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChqIDwgbGVuICYmIGogIT09IGxhc3QpIHtcbiAgICAgICAgICBjb25zdCBmaXJzdFBhcnQgPSBwYXRoLnNsaWNlKGxhc3QsIGopO1xuICAgICAgICAgIC8vIE1hdGNoZWQhXG4gICAgICAgICAgbGFzdCA9IGo7XG4gICAgICAgICAgLy8gTWF0Y2ggMSBvciBtb3JlIHBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICAgIGlmICghaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaiA8IGxlbiAmJiBqICE9PSBsYXN0KSB7XG4gICAgICAgICAgICAvLyBNYXRjaGVkIVxuICAgICAgICAgICAgbGFzdCA9IGo7XG4gICAgICAgICAgICAvLyBNYXRjaCAxIG9yIG1vcmUgbm9uLXBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGogPT09IGxlbikge1xuICAgICAgICAgICAgICAvLyBXZSBtYXRjaGVkIGEgVU5DIHJvb3Qgb25seVxuICAgICAgICAgICAgICAvLyBSZXR1cm4gdGhlIG5vcm1hbGl6ZWQgdmVyc2lvbiBvZiB0aGUgVU5DIHJvb3Qgc2luY2UgdGhlcmVcbiAgICAgICAgICAgICAgLy8gaXMgbm90aGluZyBsZWZ0IHRvIHByb2Nlc3NcblxuICAgICAgICAgICAgICByZXR1cm4gYFxcXFxcXFxcJHtmaXJzdFBhcnR9XFxcXCR7cGF0aC5zbGljZShsYXN0KX1cXFxcYDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgICAvLyBXZSBtYXRjaGVkIGEgVU5DIHJvb3Qgd2l0aCBsZWZ0b3ZlcnNcblxuICAgICAgICAgICAgICBkZXZpY2UgPSBgXFxcXFxcXFwke2ZpcnN0UGFydH1cXFxcJHtwYXRoLnNsaWNlKGxhc3QsIGopfWA7XG4gICAgICAgICAgICAgIHJvb3RFbmQgPSBqO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm9vdEVuZCA9IDE7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KGNvZGUpKSB7XG4gICAgICAvLyBQb3NzaWJsZSBkZXZpY2Ugcm9vdFxuXG4gICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OKSB7XG4gICAgICAgIGRldmljZSA9IHBhdGguc2xpY2UoMCwgMik7XG4gICAgICAgIHJvb3RFbmQgPSAyO1xuICAgICAgICBpZiAobGVuID4gMikge1xuICAgICAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDIpKSkge1xuICAgICAgICAgICAgLy8gVHJlYXQgc2VwYXJhdG9yIGZvbGxvd2luZyBkcml2ZSBuYW1lIGFzIGFuIGFic29sdXRlIHBhdGhcbiAgICAgICAgICAgIC8vIGluZGljYXRvclxuICAgICAgICAgICAgaXNBYnNvbHV0ZSA9IHRydWU7XG4gICAgICAgICAgICByb290RW5kID0gMztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgLy8gYHBhdGhgIGNvbnRhaW5zIGp1c3QgYSBwYXRoIHNlcGFyYXRvciwgZXhpdCBlYXJseSB0byBhdm9pZCB1bm5lY2Vzc2FyeVxuICAgIC8vIHdvcmtcbiAgICByZXR1cm4gXCJcXFxcXCI7XG4gIH1cblxuICBsZXQgdGFpbDogc3RyaW5nO1xuICBpZiAocm9vdEVuZCA8IGxlbikge1xuICAgIHRhaWwgPSBub3JtYWxpemVTdHJpbmcoXG4gICAgICBwYXRoLnNsaWNlKHJvb3RFbmQpLFxuICAgICAgIWlzQWJzb2x1dGUsXG4gICAgICBcIlxcXFxcIixcbiAgICAgIGlzUGF0aFNlcGFyYXRvcixcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIHRhaWwgPSBcIlwiO1xuICB9XG4gIGlmICh0YWlsLmxlbmd0aCA9PT0gMCAmJiAhaXNBYnNvbHV0ZSkgdGFpbCA9IFwiLlwiO1xuICBpZiAodGFpbC5sZW5ndGggPiAwICYmIGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQobGVuIC0gMSkpKSB7XG4gICAgdGFpbCArPSBcIlxcXFxcIjtcbiAgfVxuICBpZiAoZGV2aWNlID09PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoaXNBYnNvbHV0ZSkge1xuICAgICAgaWYgKHRhaWwubGVuZ3RoID4gMCkgcmV0dXJuIGBcXFxcJHt0YWlsfWA7XG4gICAgICBlbHNlIHJldHVybiBcIlxcXFxcIjtcbiAgICB9IGVsc2UgaWYgKHRhaWwubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRhaWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc0Fic29sdXRlKSB7XG4gICAgaWYgKHRhaWwubGVuZ3RoID4gMCkgcmV0dXJuIGAke2RldmljZX1cXFxcJHt0YWlsfWA7XG4gICAgZWxzZSByZXR1cm4gYCR7ZGV2aWNlfVxcXFxgO1xuICB9IGVsc2UgaWYgKHRhaWwubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBkZXZpY2UgKyB0YWlsO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkZXZpY2U7XG4gIH1cbn1cblxuLyoqXG4gKiBWZXJpZmllcyB3aGV0aGVyIHBhdGggaXMgYWJzb2x1dGVcbiAqIEBwYXJhbSBwYXRoIHRvIHZlcmlmeVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBYnNvbHV0ZShwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgYXNzZXJ0UGF0aChwYXRoKTtcbiAgY29uc3QgbGVuID0gcGF0aC5sZW5ndGg7XG4gIGlmIChsZW4gPT09IDApIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KDApO1xuICBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoaXNXaW5kb3dzRGV2aWNlUm9vdChjb2RlKSkge1xuICAgIC8vIFBvc3NpYmxlIGRldmljZSByb290XG5cbiAgICBpZiAobGVuID4gMiAmJiBwYXRoLmNoYXJDb2RlQXQoMSkgPT09IENIQVJfQ09MT04pIHtcbiAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDIpKSkgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBKb2luIGFsbCBnaXZlbiBhIHNlcXVlbmNlIG9mIGBwYXRoc2AsdGhlbiBub3JtYWxpemVzIHRoZSByZXN1bHRpbmcgcGF0aC5cbiAqIEBwYXJhbSBwYXRocyB0byBiZSBqb2luZWQgYW5kIG5vcm1hbGl6ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpvaW4oLi4ucGF0aHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgY29uc3QgcGF0aHNDb3VudCA9IHBhdGhzLmxlbmd0aDtcbiAgaWYgKHBhdGhzQ291bnQgPT09IDApIHJldHVybiBcIi5cIjtcblxuICBsZXQgam9pbmVkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGxldCBmaXJzdFBhcnQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGhzQ291bnQ7ICsraSkge1xuICAgIGNvbnN0IHBhdGggPSBwYXRoc1tpXTtcbiAgICBhc3NlcnRQYXRoKHBhdGgpO1xuICAgIGlmIChwYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmIChqb2luZWQgPT09IHVuZGVmaW5lZCkgam9pbmVkID0gZmlyc3RQYXJ0ID0gcGF0aDtcbiAgICAgIGVsc2Ugam9pbmVkICs9IGBcXFxcJHtwYXRofWA7XG4gICAgfVxuICB9XG5cbiAgaWYgKGpvaW5lZCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gXCIuXCI7XG5cbiAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGpvaW5lZCBwYXRoIGRvZXNuJ3Qgc3RhcnQgd2l0aCB0d28gc2xhc2hlcywgYmVjYXVzZVxuICAvLyBub3JtYWxpemUoKSB3aWxsIG1pc3Rha2UgaXQgZm9yIGFuIFVOQyBwYXRoIHRoZW4uXG4gIC8vXG4gIC8vIFRoaXMgc3RlcCBpcyBza2lwcGVkIHdoZW4gaXQgaXMgdmVyeSBjbGVhciB0aGF0IHRoZSB1c2VyIGFjdHVhbGx5XG4gIC8vIGludGVuZGVkIHRvIHBvaW50IGF0IGFuIFVOQyBwYXRoLiBUaGlzIGlzIGFzc3VtZWQgd2hlbiB0aGUgZmlyc3RcbiAgLy8gbm9uLWVtcHR5IHN0cmluZyBhcmd1bWVudHMgc3RhcnRzIHdpdGggZXhhY3RseSB0d28gc2xhc2hlcyBmb2xsb3dlZCBieVxuICAvLyBhdCBsZWFzdCBvbmUgbW9yZSBub24tc2xhc2ggY2hhcmFjdGVyLlxuICAvL1xuICAvLyBOb3RlIHRoYXQgZm9yIG5vcm1hbGl6ZSgpIHRvIHRyZWF0IGEgcGF0aCBhcyBhbiBVTkMgcGF0aCBpdCBuZWVkcyB0b1xuICAvLyBoYXZlIGF0IGxlYXN0IDIgY29tcG9uZW50cywgc28gd2UgZG9uJ3QgZmlsdGVyIGZvciB0aGF0IGhlcmUuXG4gIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGUgdXNlciBjYW4gdXNlIGpvaW4gdG8gY29uc3RydWN0IFVOQyBwYXRocyBmcm9tXG4gIC8vIGEgc2VydmVyIG5hbWUgYW5kIGEgc2hhcmUgbmFtZTsgZm9yIGV4YW1wbGU6XG4gIC8vICAgcGF0aC5qb2luKCcvL3NlcnZlcicsICdzaGFyZScpIC0+ICdcXFxcXFxcXHNlcnZlclxcXFxzaGFyZVxcXFwnKVxuICBsZXQgbmVlZHNSZXBsYWNlID0gdHJ1ZTtcbiAgbGV0IHNsYXNoQ291bnQgPSAwO1xuICBhc3NlcnQoZmlyc3RQYXJ0ICE9IG51bGwpO1xuICBpZiAoaXNQYXRoU2VwYXJhdG9yKGZpcnN0UGFydC5jaGFyQ29kZUF0KDApKSkge1xuICAgICsrc2xhc2hDb3VudDtcbiAgICBjb25zdCBmaXJzdExlbiA9IGZpcnN0UGFydC5sZW5ndGg7XG4gICAgaWYgKGZpcnN0TGVuID4gMSkge1xuICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihmaXJzdFBhcnQuY2hhckNvZGVBdCgxKSkpIHtcbiAgICAgICAgKytzbGFzaENvdW50O1xuICAgICAgICBpZiAoZmlyc3RMZW4gPiAyKSB7XG4gICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihmaXJzdFBhcnQuY2hhckNvZGVBdCgyKSkpICsrc2xhc2hDb3VudDtcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgYSBVTkMgcGF0aCBpbiB0aGUgZmlyc3QgcGFydFxuICAgICAgICAgICAgbmVlZHNSZXBsYWNlID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChuZWVkc1JlcGxhY2UpIHtcbiAgICAvLyBGaW5kIGFueSBtb3JlIGNvbnNlY3V0aXZlIHNsYXNoZXMgd2UgbmVlZCB0byByZXBsYWNlXG4gICAgZm9yICg7IHNsYXNoQ291bnQgPCBqb2luZWQubGVuZ3RoOyArK3NsYXNoQ291bnQpIHtcbiAgICAgIGlmICghaXNQYXRoU2VwYXJhdG9yKGpvaW5lZC5jaGFyQ29kZUF0KHNsYXNoQ291bnQpKSkgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gUmVwbGFjZSB0aGUgc2xhc2hlcyBpZiBuZWVkZWRcbiAgICBpZiAoc2xhc2hDb3VudCA+PSAyKSBqb2luZWQgPSBgXFxcXCR7am9pbmVkLnNsaWNlKHNsYXNoQ291bnQpfWA7XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplKGpvaW5lZCk7XG59XG5cbi8qKlxuICogSXQgd2lsbCBzb2x2ZSB0aGUgcmVsYXRpdmUgcGF0aCBmcm9tIGBmcm9tYCB0byBgdG9gLCBmb3IgaW5zdGFuY2U6XG4gKiAgZnJvbSA9ICdDOlxcXFxvcmFuZGVhXFxcXHRlc3RcXFxcYWFhJ1xuICogIHRvID0gJ0M6XFxcXG9yYW5kZWFcXFxcaW1wbFxcXFxiYmInXG4gKiBUaGUgb3V0cHV0IG9mIHRoZSBmdW5jdGlvbiBzaG91bGQgYmU6ICcuLlxcXFwuLlxcXFxpbXBsXFxcXGJiYidcbiAqIEBwYXJhbSBmcm9tIHJlbGF0aXZlIHBhdGhcbiAqIEBwYXJhbSB0byByZWxhdGl2ZSBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWxhdGl2ZShmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcpOiBzdHJpbmcge1xuICBhc3NlcnRQYXRoKGZyb20pO1xuICBhc3NlcnRQYXRoKHRvKTtcblxuICBpZiAoZnJvbSA9PT0gdG8pIHJldHVybiBcIlwiO1xuXG4gIGNvbnN0IGZyb21PcmlnID0gcmVzb2x2ZShmcm9tKTtcbiAgY29uc3QgdG9PcmlnID0gcmVzb2x2ZSh0byk7XG5cbiAgaWYgKGZyb21PcmlnID09PSB0b09yaWcpIHJldHVybiBcIlwiO1xuXG4gIGZyb20gPSBmcm9tT3JpZy50b0xvd2VyQ2FzZSgpO1xuICB0byA9IHRvT3JpZy50b0xvd2VyQ2FzZSgpO1xuXG4gIGlmIChmcm9tID09PSB0bykgcmV0dXJuIFwiXCI7XG5cbiAgLy8gVHJpbSBhbnkgbGVhZGluZyBiYWNrc2xhc2hlc1xuICBsZXQgZnJvbVN0YXJ0ID0gMDtcbiAgbGV0IGZyb21FbmQgPSBmcm9tLmxlbmd0aDtcbiAgZm9yICg7IGZyb21TdGFydCA8IGZyb21FbmQ7ICsrZnJvbVN0YXJ0KSB7XG4gICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQpICE9PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSBicmVhaztcbiAgfVxuICAvLyBUcmltIHRyYWlsaW5nIGJhY2tzbGFzaGVzIChhcHBsaWNhYmxlIHRvIFVOQyBwYXRocyBvbmx5KVxuICBmb3IgKDsgZnJvbUVuZCAtIDEgPiBmcm9tU3RhcnQ7IC0tZnJvbUVuZCkge1xuICAgIGlmIChmcm9tLmNoYXJDb2RlQXQoZnJvbUVuZCAtIDEpICE9PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSBicmVhaztcbiAgfVxuICBjb25zdCBmcm9tTGVuID0gZnJvbUVuZCAtIGZyb21TdGFydDtcblxuICAvLyBUcmltIGFueSBsZWFkaW5nIGJhY2tzbGFzaGVzXG4gIGxldCB0b1N0YXJ0ID0gMDtcbiAgbGV0IHRvRW5kID0gdG8ubGVuZ3RoO1xuICBmb3IgKDsgdG9TdGFydCA8IHRvRW5kOyArK3RvU3RhcnQpIHtcbiAgICBpZiAodG8uY2hhckNvZGVBdCh0b1N0YXJ0KSAhPT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkgYnJlYWs7XG4gIH1cbiAgLy8gVHJpbSB0cmFpbGluZyBiYWNrc2xhc2hlcyAoYXBwbGljYWJsZSB0byBVTkMgcGF0aHMgb25seSlcbiAgZm9yICg7IHRvRW5kIC0gMSA+IHRvU3RhcnQ7IC0tdG9FbmQpIHtcbiAgICBpZiAodG8uY2hhckNvZGVBdCh0b0VuZCAtIDEpICE9PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSBicmVhaztcbiAgfVxuICBjb25zdCB0b0xlbiA9IHRvRW5kIC0gdG9TdGFydDtcblxuICAvLyBDb21wYXJlIHBhdGhzIHRvIGZpbmQgdGhlIGxvbmdlc3QgY29tbW9uIHBhdGggZnJvbSByb290XG4gIGNvbnN0IGxlbmd0aCA9IGZyb21MZW4gPCB0b0xlbiA/IGZyb21MZW4gOiB0b0xlbjtcbiAgbGV0IGxhc3RDb21tb25TZXAgPSAtMTtcbiAgbGV0IGkgPSAwO1xuICBmb3IgKDsgaSA8PSBsZW5ndGg7ICsraSkge1xuICAgIGlmIChpID09PSBsZW5ndGgpIHtcbiAgICAgIGlmICh0b0xlbiA+IGxlbmd0aCkge1xuICAgICAgICBpZiAodG8uY2hhckNvZGVBdCh0b1N0YXJ0ICsgaSkgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgZnJvbWAgaXMgdGhlIGV4YWN0IGJhc2UgcGF0aCBmb3IgYHRvYC5cbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nQzpcXFxcZm9vXFxcXGJhcic7IHRvPSdDOlxcXFxmb29cXFxcYmFyXFxcXGJheidcbiAgICAgICAgICByZXR1cm4gdG9PcmlnLnNsaWNlKHRvU3RhcnQgKyBpICsgMSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gMikge1xuICAgICAgICAgIC8vIFdlIGdldCBoZXJlIGlmIGBmcm9tYCBpcyB0aGUgZGV2aWNlIHJvb3QuXG4gICAgICAgICAgLy8gRm9yIGV4YW1wbGU6IGZyb209J0M6XFxcXCc7IHRvPSdDOlxcXFxmb28nXG4gICAgICAgICAgcmV0dXJuIHRvT3JpZy5zbGljZSh0b1N0YXJ0ICsgaSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChmcm9tTGVuID4gbGVuZ3RoKSB7XG4gICAgICAgIGlmIChmcm9tLmNoYXJDb2RlQXQoZnJvbVN0YXJ0ICsgaSkgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgdG9gIGlzIHRoZSBleGFjdCBiYXNlIHBhdGggZm9yIGBmcm9tYC5cbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nQzpcXFxcZm9vXFxcXGJhcic7IHRvPSdDOlxcXFxmb28nXG4gICAgICAgICAgbGFzdENvbW1vblNlcCA9IGk7XG4gICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gMikge1xuICAgICAgICAgIC8vIFdlIGdldCBoZXJlIGlmIGB0b2AgaXMgdGhlIGRldmljZSByb290LlxuICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPSdDOlxcXFxmb29cXFxcYmFyJzsgdG89J0M6XFxcXCdcbiAgICAgICAgICBsYXN0Q29tbW9uU2VwID0gMztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNvbnN0IGZyb21Db2RlID0gZnJvbS5jaGFyQ29kZUF0KGZyb21TdGFydCArIGkpO1xuICAgIGNvbnN0IHRvQ29kZSA9IHRvLmNoYXJDb2RlQXQodG9TdGFydCArIGkpO1xuICAgIGlmIChmcm9tQ29kZSAhPT0gdG9Db2RlKSBicmVhaztcbiAgICBlbHNlIGlmIChmcm9tQ29kZSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkgbGFzdENvbW1vblNlcCA9IGk7XG4gIH1cblxuICAvLyBXZSBmb3VuZCBhIG1pc21hdGNoIGJlZm9yZSB0aGUgZmlyc3QgY29tbW9uIHBhdGggc2VwYXJhdG9yIHdhcyBzZWVuLCBzb1xuICAvLyByZXR1cm4gdGhlIG9yaWdpbmFsIGB0b2AuXG4gIGlmIChpICE9PSBsZW5ndGggJiYgbGFzdENvbW1vblNlcCA9PT0gLTEpIHtcbiAgICByZXR1cm4gdG9PcmlnO1xuICB9XG5cbiAgbGV0IG91dCA9IFwiXCI7XG4gIGlmIChsYXN0Q29tbW9uU2VwID09PSAtMSkgbGFzdENvbW1vblNlcCA9IDA7XG4gIC8vIEdlbmVyYXRlIHRoZSByZWxhdGl2ZSBwYXRoIGJhc2VkIG9uIHRoZSBwYXRoIGRpZmZlcmVuY2UgYmV0d2VlbiBgdG9gIGFuZFxuICAvLyBgZnJvbWBcbiAgZm9yIChpID0gZnJvbVN0YXJ0ICsgbGFzdENvbW1vblNlcCArIDE7IGkgPD0gZnJvbUVuZDsgKytpKSB7XG4gICAgaWYgKGkgPT09IGZyb21FbmQgfHwgZnJvbS5jaGFyQ29kZUF0KGkpID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSB7XG4gICAgICBpZiAob3V0Lmxlbmd0aCA9PT0gMCkgb3V0ICs9IFwiLi5cIjtcbiAgICAgIGVsc2Ugb3V0ICs9IFwiXFxcXC4uXCI7XG4gICAgfVxuICB9XG5cbiAgLy8gTGFzdGx5LCBhcHBlbmQgdGhlIHJlc3Qgb2YgdGhlIGRlc3RpbmF0aW9uIChgdG9gKSBwYXRoIHRoYXQgY29tZXMgYWZ0ZXJcbiAgLy8gdGhlIGNvbW1vbiBwYXRoIHBhcnRzXG4gIGlmIChvdXQubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBvdXQgKyB0b09yaWcuc2xpY2UodG9TdGFydCArIGxhc3RDb21tb25TZXAsIHRvRW5kKTtcbiAgfSBlbHNlIHtcbiAgICB0b1N0YXJ0ICs9IGxhc3RDb21tb25TZXA7XG4gICAgaWYgKHRvT3JpZy5jaGFyQ29kZUF0KHRvU3RhcnQpID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSArK3RvU3RhcnQ7XG4gICAgcmV0dXJuIHRvT3JpZy5zbGljZSh0b1N0YXJ0LCB0b0VuZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXNvbHZlcyBwYXRoIHRvIGEgbmFtZXNwYWNlIHBhdGhcbiAqIEBwYXJhbSBwYXRoIHRvIHJlc29sdmUgdG8gbmFtZXNwYWNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b05hbWVzcGFjZWRQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIE5vdGU6IHRoaXMgd2lsbCAqcHJvYmFibHkqIHRocm93IHNvbWV3aGVyZS5cbiAgaWYgKHR5cGVvZiBwYXRoICE9PSBcInN0cmluZ1wiKSByZXR1cm4gcGF0aDtcbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSByZXR1cm4gXCJcIjtcblxuICBjb25zdCByZXNvbHZlZFBhdGggPSByZXNvbHZlKHBhdGgpO1xuXG4gIGlmIChyZXNvbHZlZFBhdGgubGVuZ3RoID49IDMpIHtcbiAgICBpZiAocmVzb2x2ZWRQYXRoLmNoYXJDb2RlQXQoMCkgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHtcbiAgICAgIC8vIFBvc3NpYmxlIFVOQyByb290XG5cbiAgICAgIGlmIChyZXNvbHZlZFBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkge1xuICAgICAgICBjb25zdCBjb2RlID0gcmVzb2x2ZWRQYXRoLmNoYXJDb2RlQXQoMik7XG4gICAgICAgIGlmIChjb2RlICE9PSBDSEFSX1FVRVNUSU9OX01BUksgJiYgY29kZSAhPT0gQ0hBUl9ET1QpIHtcbiAgICAgICAgICAvLyBNYXRjaGVkIG5vbi1sb25nIFVOQyByb290LCBjb252ZXJ0IHRoZSBwYXRoIHRvIGEgbG9uZyBVTkMgcGF0aFxuICAgICAgICAgIHJldHVybiBgXFxcXFxcXFw/XFxcXFVOQ1xcXFwke3Jlc29sdmVkUGF0aC5zbGljZSgyKX1gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KHJlc29sdmVkUGF0aC5jaGFyQ29kZUF0KDApKSkge1xuICAgICAgLy8gUG9zc2libGUgZGV2aWNlIHJvb3RcblxuICAgICAgaWYgKFxuICAgICAgICByZXNvbHZlZFBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9DT0xPTiAmJlxuICAgICAgICByZXNvbHZlZFBhdGguY2hhckNvZGVBdCgyKSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSFxuICAgICAgKSB7XG4gICAgICAgIC8vIE1hdGNoZWQgZGV2aWNlIHJvb3QsIGNvbnZlcnQgdGhlIHBhdGggdG8gYSBsb25nIFVOQyBwYXRoXG4gICAgICAgIHJldHVybiBgXFxcXFxcXFw/XFxcXCR7cmVzb2x2ZWRQYXRofWA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhdGg7XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSBkaXJlY3RvcnkgcGF0aCBvZiBhIGBwYXRoYC5cbiAqIEBwYXJhbSBwYXRoIHRvIGRldGVybWluZSB0aGUgZGlyZWN0b3J5IHBhdGggZm9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXJuYW1lKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGFzc2VydFBhdGgocGF0aCk7XG4gIGNvbnN0IGxlbiA9IHBhdGgubGVuZ3RoO1xuICBpZiAobGVuID09PSAwKSByZXR1cm4gXCIuXCI7XG4gIGxldCByb290RW5kID0gLTE7XG4gIGxldCBlbmQgPSAtMTtcbiAgbGV0IG1hdGNoZWRTbGFzaCA9IHRydWU7XG4gIGxldCBvZmZzZXQgPSAwO1xuICBjb25zdCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KDApO1xuXG4gIC8vIFRyeSB0byBtYXRjaCBhIHJvb3RcbiAgaWYgKGxlbiA+IDEpIHtcbiAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgICAvLyBQb3NzaWJsZSBVTkMgcm9vdFxuXG4gICAgICByb290RW5kID0gb2Zmc2V0ID0gMTtcblxuICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMSkpKSB7XG4gICAgICAgIC8vIE1hdGNoZWQgZG91YmxlIHBhdGggc2VwYXJhdG9yIGF0IGJlZ2lubmluZ1xuICAgICAgICBsZXQgaiA9IDI7XG4gICAgICAgIGxldCBsYXN0ID0gajtcbiAgICAgICAgLy8gTWF0Y2ggMSBvciBtb3JlIG5vbi1wYXRoIHNlcGFyYXRvcnNcbiAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGopKSkgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGogPCBsZW4gJiYgaiAhPT0gbGFzdCkge1xuICAgICAgICAgIC8vIE1hdGNoZWQhXG4gICAgICAgICAgbGFzdCA9IGo7XG4gICAgICAgICAgLy8gTWF0Y2ggMSBvciBtb3JlIHBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICAgIGlmICghaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaiA8IGxlbiAmJiBqICE9PSBsYXN0KSB7XG4gICAgICAgICAgICAvLyBNYXRjaGVkIVxuICAgICAgICAgICAgbGFzdCA9IGo7XG4gICAgICAgICAgICAvLyBNYXRjaCAxIG9yIG1vcmUgbm9uLXBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGogPT09IGxlbikge1xuICAgICAgICAgICAgICAvLyBXZSBtYXRjaGVkIGEgVU5DIHJvb3Qgb25seVxuICAgICAgICAgICAgICByZXR1cm4gcGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChqICE9PSBsYXN0KSB7XG4gICAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgYSBVTkMgcm9vdCB3aXRoIGxlZnRvdmVyc1xuXG4gICAgICAgICAgICAgIC8vIE9mZnNldCBieSAxIHRvIGluY2x1ZGUgdGhlIHNlcGFyYXRvciBhZnRlciB0aGUgVU5DIHJvb3QgdG9cbiAgICAgICAgICAgICAgLy8gdHJlYXQgaXQgYXMgYSBcIm5vcm1hbCByb290XCIgb24gdG9wIG9mIGEgKFVOQykgcm9vdFxuICAgICAgICAgICAgICByb290RW5kID0gb2Zmc2V0ID0gaiArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KGNvZGUpKSB7XG4gICAgICAvLyBQb3NzaWJsZSBkZXZpY2Ugcm9vdFxuXG4gICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OKSB7XG4gICAgICAgIHJvb3RFbmQgPSBvZmZzZXQgPSAyO1xuICAgICAgICBpZiAobGVuID4gMikge1xuICAgICAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDIpKSkgcm9vdEVuZCA9IG9mZnNldCA9IDM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgLy8gYHBhdGhgIGNvbnRhaW5zIGp1c3QgYSBwYXRoIHNlcGFyYXRvciwgZXhpdCBlYXJseSB0byBhdm9pZFxuICAgIC8vIHVubmVjZXNzYXJ5IHdvcmtcbiAgICByZXR1cm4gcGF0aDtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSBsZW4gLSAxOyBpID49IG9mZnNldDsgLS1pKSB7XG4gICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaSkpKSB7XG4gICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICBlbmQgPSBpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3JcbiAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChlbmQgPT09IC0xKSB7XG4gICAgaWYgKHJvb3RFbmQgPT09IC0xKSByZXR1cm4gXCIuXCI7XG4gICAgZWxzZSBlbmQgPSByb290RW5kO1xuICB9XG4gIHJldHVybiBwYXRoLnNsaWNlKDAsIGVuZCk7XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSBsYXN0IHBvcnRpb24gb2YgYSBgcGF0aGAuIFRyYWlsaW5nIGRpcmVjdG9yeSBzZXBhcmF0b3JzIGFyZSBpZ25vcmVkLlxuICogQHBhcmFtIHBhdGggdG8gcHJvY2Vzc1xuICogQHBhcmFtIGV4dCBvZiBwYXRoIGRpcmVjdG9yeVxuICovXG5leHBvcnQgZnVuY3Rpb24gYmFzZW5hbWUocGF0aDogc3RyaW5nLCBleHQgPSBcIlwiKTogc3RyaW5nIHtcbiAgaWYgKGV4dCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBleHQgIT09IFwic3RyaW5nXCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImV4dFwiIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcnKTtcbiAgfVxuXG4gIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgbGV0IHN0YXJ0ID0gMDtcbiAgbGV0IGVuZCA9IC0xO1xuICBsZXQgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgbGV0IGk6IG51bWJlcjtcblxuICAvLyBDaGVjayBmb3IgYSBkcml2ZSBsZXR0ZXIgcHJlZml4IHNvIGFzIG5vdCB0byBtaXN0YWtlIHRoZSBmb2xsb3dpbmdcbiAgLy8gcGF0aCBzZXBhcmF0b3IgYXMgYW4gZXh0cmEgc2VwYXJhdG9yIGF0IHRoZSBlbmQgb2YgdGhlIHBhdGggdGhhdCBjYW4gYmVcbiAgLy8gZGlzcmVnYXJkZWRcbiAgaWYgKHBhdGgubGVuZ3RoID49IDIpIHtcbiAgICBjb25zdCBkcml2ZSA9IHBhdGguY2hhckNvZGVBdCgwKTtcbiAgICBpZiAoaXNXaW5kb3dzRGV2aWNlUm9vdChkcml2ZSkpIHtcbiAgICAgIGlmIChwYXRoLmNoYXJDb2RlQXQoMSkgPT09IENIQVJfQ09MT04pIHN0YXJ0ID0gMjtcbiAgICB9XG4gIH1cblxuICBpZiAoZXh0ICE9PSB1bmRlZmluZWQgJiYgZXh0Lmxlbmd0aCA+IDAgJiYgZXh0Lmxlbmd0aCA8PSBwYXRoLmxlbmd0aCkge1xuICAgIGlmIChleHQubGVuZ3RoID09PSBwYXRoLmxlbmd0aCAmJiBleHQgPT09IHBhdGgpIHJldHVybiBcIlwiO1xuICAgIGxldCBleHRJZHggPSBleHQubGVuZ3RoIC0gMTtcbiAgICBsZXQgZmlyc3ROb25TbGFzaEVuZCA9IC0xO1xuICAgIGZvciAoaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSBzdGFydDsgLS1pKSB7XG4gICAgICBjb25zdCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgICAvLyBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZywgc3RvcCBub3dcbiAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICBzdGFydCA9IGkgKyAxO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZmlyc3ROb25TbGFzaEVuZCA9PT0gLTEpIHtcbiAgICAgICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgcmVtZW1iZXIgdGhpcyBpbmRleCBpbiBjYXNlXG4gICAgICAgICAgLy8gd2UgbmVlZCBpdCBpZiB0aGUgZXh0ZW5zaW9uIGVuZHMgdXAgbm90IG1hdGNoaW5nXG4gICAgICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgICAgICAgZmlyc3ROb25TbGFzaEVuZCA9IGkgKyAxO1xuICAgICAgICB9XG4gICAgICAgIGlmIChleHRJZHggPj0gMCkge1xuICAgICAgICAgIC8vIFRyeSB0byBtYXRjaCB0aGUgZXhwbGljaXQgZXh0ZW5zaW9uXG4gICAgICAgICAgaWYgKGNvZGUgPT09IGV4dC5jaGFyQ29kZUF0KGV4dElkeCkpIHtcbiAgICAgICAgICAgIGlmICgtLWV4dElkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgLy8gV2UgbWF0Y2hlZCB0aGUgZXh0ZW5zaW9uLCBzbyBtYXJrIHRoaXMgYXMgdGhlIGVuZCBvZiBvdXIgcGF0aFxuICAgICAgICAgICAgICAvLyBjb21wb25lbnRcbiAgICAgICAgICAgICAgZW5kID0gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRXh0ZW5zaW9uIGRvZXMgbm90IG1hdGNoLCBzbyBvdXIgcmVzdWx0IGlzIHRoZSBlbnRpcmUgcGF0aFxuICAgICAgICAgICAgLy8gY29tcG9uZW50XG4gICAgICAgICAgICBleHRJZHggPSAtMTtcbiAgICAgICAgICAgIGVuZCA9IGZpcnN0Tm9uU2xhc2hFbmQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0ID09PSBlbmQpIGVuZCA9IGZpcnN0Tm9uU2xhc2hFbmQ7XG4gICAgZWxzZSBpZiAoZW5kID09PSAtMSkgZW5kID0gcGF0aC5sZW5ndGg7XG4gICAgcmV0dXJuIHBhdGguc2xpY2Uoc3RhcnQsIGVuZCk7XG4gIH0gZWxzZSB7XG4gICAgZm9yIChpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IHN0YXJ0OyAtLWkpIHtcbiAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGkpKSkge1xuICAgICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgICAvLyBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZywgc3RvcCBub3dcbiAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICBzdGFydCA9IGkgKyAxO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGVuZCA9PT0gLTEpIHtcbiAgICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91clxuICAgICAgICAvLyBwYXRoIGNvbXBvbmVudFxuICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgICAgZW5kID0gaSArIDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVuZCA9PT0gLTEpIHJldHVybiBcIlwiO1xuICAgIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSBleHRlbnNpb24gb2YgdGhlIGBwYXRoYCB3aXRoIGxlYWRpbmcgcGVyaW9kLlxuICogQHBhcmFtIHBhdGggd2l0aCBleHRlbnNpb25cbiAqIEByZXR1cm5zIGV4dGVuc2lvbiAoZXguIGZvciBgZmlsZS50c2AgcmV0dXJucyBgLnRzYClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dG5hbWUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgYXNzZXJ0UGF0aChwYXRoKTtcbiAgbGV0IHN0YXJ0ID0gMDtcbiAgbGV0IHN0YXJ0RG90ID0gLTE7XG4gIGxldCBzdGFydFBhcnQgPSAwO1xuICBsZXQgZW5kID0gLTE7XG4gIGxldCBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICAvLyBUcmFjayB0aGUgc3RhdGUgb2YgY2hhcmFjdGVycyAoaWYgYW55KSB3ZSBzZWUgYmVmb3JlIG91ciBmaXJzdCBkb3QgYW5kXG4gIC8vIGFmdGVyIGFueSBwYXRoIHNlcGFyYXRvciB3ZSBmaW5kXG4gIGxldCBwcmVEb3RTdGF0ZSA9IDA7XG5cbiAgLy8gQ2hlY2sgZm9yIGEgZHJpdmUgbGV0dGVyIHByZWZpeCBzbyBhcyBub3QgdG8gbWlzdGFrZSB0aGUgZm9sbG93aW5nXG4gIC8vIHBhdGggc2VwYXJhdG9yIGFzIGFuIGV4dHJhIHNlcGFyYXRvciBhdCB0aGUgZW5kIG9mIHRoZSBwYXRoIHRoYXQgY2FuIGJlXG4gIC8vIGRpc3JlZ2FyZGVkXG5cbiAgaWYgKFxuICAgIHBhdGgubGVuZ3RoID49IDIgJiZcbiAgICBwYXRoLmNoYXJDb2RlQXQoMSkgPT09IENIQVJfQ09MT04gJiZcbiAgICBpc1dpbmRvd3NEZXZpY2VSb290KHBhdGguY2hhckNvZGVBdCgwKSlcbiAgKSB7XG4gICAgc3RhcnQgPSBzdGFydFBhcnQgPSAyO1xuICB9XG5cbiAgZm9yIChsZXQgaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSBzdGFydDsgLS1pKSB7XG4gICAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICBzdGFydFBhcnQgPSBpICsgMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGVuZCA9PT0gLTEpIHtcbiAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCBtYXJrIHRoaXMgYXMgdGhlIGVuZCBvZiBvdXJcbiAgICAgIC8vIGV4dGVuc2lvblxuICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgICBlbmQgPSBpICsgMTtcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IENIQVJfRE9UKSB7XG4gICAgICAvLyBJZiB0aGlzIGlzIG91ciBmaXJzdCBkb3QsIG1hcmsgaXQgYXMgdGhlIHN0YXJ0IG9mIG91ciBleHRlbnNpb25cbiAgICAgIGlmIChzdGFydERvdCA9PT0gLTEpIHN0YXJ0RG90ID0gaTtcbiAgICAgIGVsc2UgaWYgKHByZURvdFN0YXRlICE9PSAxKSBwcmVEb3RTdGF0ZSA9IDE7XG4gICAgfSBlbHNlIGlmIChzdGFydERvdCAhPT0gLTEpIHtcbiAgICAgIC8vIFdlIHNhdyBhIG5vbi1kb3QgYW5kIG5vbi1wYXRoIHNlcGFyYXRvciBiZWZvcmUgb3VyIGRvdCwgc28gd2Ugc2hvdWxkXG4gICAgICAvLyBoYXZlIGEgZ29vZCBjaGFuY2UgYXQgaGF2aW5nIGEgbm9uLWVtcHR5IGV4dGVuc2lvblxuICAgICAgcHJlRG90U3RhdGUgPSAtMTtcbiAgICB9XG4gIH1cblxuICBpZiAoXG4gICAgc3RhcnREb3QgPT09IC0xIHx8XG4gICAgZW5kID09PSAtMSB8fFxuICAgIC8vIFdlIHNhdyBhIG5vbi1kb3QgY2hhcmFjdGVyIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgZG90XG4gICAgcHJlRG90U3RhdGUgPT09IDAgfHxcbiAgICAvLyBUaGUgKHJpZ2h0LW1vc3QpIHRyaW1tZWQgcGF0aCBjb21wb25lbnQgaXMgZXhhY3RseSAnLi4nXG4gICAgKHByZURvdFN0YXRlID09PSAxICYmIHN0YXJ0RG90ID09PSBlbmQgLSAxICYmIHN0YXJ0RG90ID09PSBzdGFydFBhcnQgKyAxKVxuICApIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuICByZXR1cm4gcGF0aC5zbGljZShzdGFydERvdCwgZW5kKTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHBhdGggZnJvbSBgRm9ybWF0SW5wdXRQYXRoT2JqZWN0YCBvYmplY3QuXG4gKiBAcGFyYW0gcGF0aE9iamVjdCB3aXRoIHBhdGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdChwYXRoT2JqZWN0OiBGb3JtYXRJbnB1dFBhdGhPYmplY3QpOiBzdHJpbmcge1xuICBpZiAocGF0aE9iamVjdCA9PT0gbnVsbCB8fCB0eXBlb2YgcGF0aE9iamVjdCAhPT0gXCJvYmplY3RcIikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBgVGhlIFwicGF0aE9iamVjdFwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgJHt0eXBlb2YgcGF0aE9iamVjdH1gLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIF9mb3JtYXQoXCJcXFxcXCIsIHBhdGhPYmplY3QpO1xufVxuXG4vKipcbiAqIFJldHVybiBhIGBQYXJzZWRQYXRoYCBvYmplY3Qgb2YgdGhlIGBwYXRoYC5cbiAqIEBwYXJhbSBwYXRoIHRvIHByb2Nlc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKHBhdGg6IHN0cmluZyk6IFBhcnNlZFBhdGgge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuXG4gIGNvbnN0IHJldDogUGFyc2VkUGF0aCA9IHsgcm9vdDogXCJcIiwgZGlyOiBcIlwiLCBiYXNlOiBcIlwiLCBleHQ6IFwiXCIsIG5hbWU6IFwiXCIgfTtcblxuICBjb25zdCBsZW4gPSBwYXRoLmxlbmd0aDtcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIHJldDtcblxuICBsZXQgcm9vdEVuZCA9IDA7XG4gIGxldCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KDApO1xuXG4gIC8vIFRyeSB0byBtYXRjaCBhIHJvb3RcbiAgaWYgKGxlbiA+IDEpIHtcbiAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgICAvLyBQb3NzaWJsZSBVTkMgcm9vdFxuXG4gICAgICByb290RW5kID0gMTtcbiAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDEpKSkge1xuICAgICAgICAvLyBNYXRjaGVkIGRvdWJsZSBwYXRoIHNlcGFyYXRvciBhdCBiZWdpbm5pbmdcbiAgICAgICAgbGV0IGogPSAyO1xuICAgICAgICBsZXQgbGFzdCA9IGo7XG4gICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBub24tcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChqIDwgbGVuICYmIGogIT09IGxhc3QpIHtcbiAgICAgICAgICAvLyBNYXRjaGVkIVxuICAgICAgICAgIGxhc3QgPSBqO1xuICAgICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBwYXRoIHNlcGFyYXRvcnNcbiAgICAgICAgICBmb3IgKDsgaiA8IGxlbjsgKytqKSB7XG4gICAgICAgICAgICBpZiAoIWlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGogPCBsZW4gJiYgaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgLy8gTWF0Y2hlZCFcbiAgICAgICAgICAgIGxhc3QgPSBqO1xuICAgICAgICAgICAgLy8gTWF0Y2ggMSBvciBtb3JlIG5vbi1wYXRoIHNlcGFyYXRvcnNcbiAgICAgICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChqID09PSBsZW4pIHtcbiAgICAgICAgICAgICAgLy8gV2UgbWF0Y2hlZCBhIFVOQyByb290IG9ubHlcblxuICAgICAgICAgICAgICByb290RW5kID0gajtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgICAvLyBXZSBtYXRjaGVkIGEgVU5DIHJvb3Qgd2l0aCBsZWZ0b3ZlcnNcblxuICAgICAgICAgICAgICByb290RW5kID0gaiArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KGNvZGUpKSB7XG4gICAgICAvLyBQb3NzaWJsZSBkZXZpY2Ugcm9vdFxuXG4gICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OKSB7XG4gICAgICAgIHJvb3RFbmQgPSAyO1xuICAgICAgICBpZiAobGVuID4gMikge1xuICAgICAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDIpKSkge1xuICAgICAgICAgICAgaWYgKGxlbiA9PT0gMykge1xuICAgICAgICAgICAgICAvLyBgcGF0aGAgY29udGFpbnMganVzdCBhIGRyaXZlIHJvb3QsIGV4aXQgZWFybHkgdG8gYXZvaWRcbiAgICAgICAgICAgICAgLy8gdW5uZWNlc3Nhcnkgd29ya1xuICAgICAgICAgICAgICByZXQucm9vdCA9IHJldC5kaXIgPSBwYXRoO1xuICAgICAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcm9vdEVuZCA9IDM7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGBwYXRoYCBjb250YWlucyBqdXN0IGEgZHJpdmUgcm9vdCwgZXhpdCBlYXJseSB0byBhdm9pZFxuICAgICAgICAgIC8vIHVubmVjZXNzYXJ5IHdvcmtcbiAgICAgICAgICByZXQucm9vdCA9IHJldC5kaXIgPSBwYXRoO1xuICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgLy8gYHBhdGhgIGNvbnRhaW5zIGp1c3QgYSBwYXRoIHNlcGFyYXRvciwgZXhpdCBlYXJseSB0byBhdm9pZFxuICAgIC8vIHVubmVjZXNzYXJ5IHdvcmtcbiAgICByZXQucm9vdCA9IHJldC5kaXIgPSBwYXRoO1xuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBpZiAocm9vdEVuZCA+IDApIHJldC5yb290ID0gcGF0aC5zbGljZSgwLCByb290RW5kKTtcblxuICBsZXQgc3RhcnREb3QgPSAtMTtcbiAgbGV0IHN0YXJ0UGFydCA9IHJvb3RFbmQ7XG4gIGxldCBlbmQgPSAtMTtcbiAgbGV0IG1hdGNoZWRTbGFzaCA9IHRydWU7XG4gIGxldCBpID0gcGF0aC5sZW5ndGggLSAxO1xuXG4gIC8vIFRyYWNrIHRoZSBzdGF0ZSBvZiBjaGFyYWN0ZXJzIChpZiBhbnkpIHdlIHNlZSBiZWZvcmUgb3VyIGZpcnN0IGRvdCBhbmRcbiAgLy8gYWZ0ZXIgYW55IHBhdGggc2VwYXJhdG9yIHdlIGZpbmRcbiAgbGV0IHByZURvdFN0YXRlID0gMDtcblxuICAvLyBHZXQgbm9uLWRpciBpbmZvXG4gIGZvciAoOyBpID49IHJvb3RFbmQ7IC0taSkge1xuICAgIGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgc3RhcnRQYXJ0ID0gaSArIDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAvLyBleHRlbnNpb25cbiAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgZW5kID0gaSArIDE7XG4gICAgfVxuICAgIGlmIChjb2RlID09PSBDSEFSX0RPVCkge1xuICAgICAgLy8gSWYgdGhpcyBpcyBvdXIgZmlyc3QgZG90LCBtYXJrIGl0IGFzIHRoZSBzdGFydCBvZiBvdXIgZXh0ZW5zaW9uXG4gICAgICBpZiAoc3RhcnREb3QgPT09IC0xKSBzdGFydERvdCA9IGk7XG4gICAgICBlbHNlIGlmIChwcmVEb3RTdGF0ZSAhPT0gMSkgcHJlRG90U3RhdGUgPSAxO1xuICAgIH0gZWxzZSBpZiAoc3RhcnREb3QgIT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgYSBub24tZG90IGFuZCBub24tcGF0aCBzZXBhcmF0b3IgYmVmb3JlIG91ciBkb3QsIHNvIHdlIHNob3VsZFxuICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb25cbiAgICAgIHByZURvdFN0YXRlID0gLTE7XG4gICAgfVxuICB9XG5cbiAgaWYgKFxuICAgIHN0YXJ0RG90ID09PSAtMSB8fFxuICAgIGVuZCA9PT0gLTEgfHxcbiAgICAvLyBXZSBzYXcgYSBub24tZG90IGNoYXJhY3RlciBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGRvdFxuICAgIHByZURvdFN0YXRlID09PSAwIHx8XG4gICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgJy4uJ1xuICAgIChwcmVEb3RTdGF0ZSA9PT0gMSAmJiBzdGFydERvdCA9PT0gZW5kIC0gMSAmJiBzdGFydERvdCA9PT0gc3RhcnRQYXJ0ICsgMSlcbiAgKSB7XG4gICAgaWYgKGVuZCAhPT0gLTEpIHtcbiAgICAgIHJldC5iYXNlID0gcmV0Lm5hbWUgPSBwYXRoLnNsaWNlKHN0YXJ0UGFydCwgZW5kKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0Lm5hbWUgPSBwYXRoLnNsaWNlKHN0YXJ0UGFydCwgc3RhcnREb3QpO1xuICAgIHJldC5iYXNlID0gcGF0aC5zbGljZShzdGFydFBhcnQsIGVuZCk7XG4gICAgcmV0LmV4dCA9IHBhdGguc2xpY2Uoc3RhcnREb3QsIGVuZCk7XG4gIH1cblxuICAvLyBJZiB0aGUgZGlyZWN0b3J5IGlzIHRoZSByb290LCB1c2UgdGhlIGVudGlyZSByb290IGFzIHRoZSBgZGlyYCBpbmNsdWRpbmdcbiAgLy8gdGhlIHRyYWlsaW5nIHNsYXNoIGlmIGFueSAoYEM6XFxhYmNgIC0+IGBDOlxcYCkuIE90aGVyd2lzZSwgc3RyaXAgb3V0IHRoZVxuICAvLyB0cmFpbGluZyBzbGFzaCAoYEM6XFxhYmNcXGRlZmAgLT4gYEM6XFxhYmNgKS5cbiAgaWYgKHN0YXJ0UGFydCA+IDAgJiYgc3RhcnRQYXJ0ICE9PSByb290RW5kKSB7XG4gICAgcmV0LmRpciA9IHBhdGguc2xpY2UoMCwgc3RhcnRQYXJ0IC0gMSk7XG4gIH0gZWxzZSByZXQuZGlyID0gcmV0LnJvb3Q7XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZpbGUgVVJMIHRvIGEgcGF0aCBzdHJpbmcuXG4gKlxuICogYGBgdHNcbiAqICAgICAgaW1wb3J0IHsgZnJvbUZpbGVVcmwgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9wYXRoL3dpbjMyLnRzXCI7XG4gKiAgICAgIGZyb21GaWxlVXJsKFwiZmlsZTovLy9ob21lL2Zvb1wiKTsgLy8gXCJcXFxcaG9tZVxcXFxmb29cIlxuICogICAgICBmcm9tRmlsZVVybChcImZpbGU6Ly8vQzovVXNlcnMvZm9vXCIpOyAvLyBcIkM6XFxcXFVzZXJzXFxcXGZvb1wiXG4gKiAgICAgIGZyb21GaWxlVXJsKFwiZmlsZTovL2xvY2FsaG9zdC9ob21lL2Zvb1wiKTsgLy8gXCJcXFxcXFxcXGxvY2FsaG9zdFxcXFxob21lXFxcXGZvb1wiXG4gKiBgYGBcbiAqIEBwYXJhbSB1cmwgb2YgYSBmaWxlIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbUZpbGVVcmwodXJsOiBzdHJpbmcgfCBVUkwpOiBzdHJpbmcge1xuICB1cmwgPSB1cmwgaW5zdGFuY2VvZiBVUkwgPyB1cmwgOiBuZXcgVVJMKHVybCk7XG4gIGlmICh1cmwucHJvdG9jb2wgIT0gXCJmaWxlOlwiKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk11c3QgYmUgYSBmaWxlIFVSTC5cIik7XG4gIH1cbiAgbGV0IHBhdGggPSBkZWNvZGVVUklDb21wb25lbnQoXG4gICAgdXJsLnBhdGhuYW1lLnJlcGxhY2UoL1xcLy9nLCBcIlxcXFxcIikucmVwbGFjZSgvJSg/IVswLTlBLUZhLWZdezJ9KS9nLCBcIiUyNVwiKSxcbiAgKS5yZXBsYWNlKC9eXFxcXCooW0EtWmEtel06KShcXFxcfCQpLywgXCIkMVxcXFxcIik7XG4gIGlmICh1cmwuaG9zdG5hbWUgIT0gXCJcIikge1xuICAgIC8vIE5vdGU6IFRoZSBgVVJMYCBpbXBsZW1lbnRhdGlvbiBndWFyYW50ZWVzIHRoYXQgdGhlIGRyaXZlIGxldHRlciBhbmRcbiAgICAvLyBob3N0bmFtZSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiBPdGhlcndpc2UgaXQgd291bGQgbm90IGhhdmUgYmVlbiB2YWxpZFxuICAgIC8vIHRvIGFwcGVuZCB0aGUgaG9zdG5hbWUgYW5kIHBhdGggbGlrZSB0aGlzLlxuICAgIHBhdGggPSBgXFxcXFxcXFwke3VybC5ob3N0bmFtZX0ke3BhdGh9YDtcbiAgfVxuICByZXR1cm4gcGF0aDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHBhdGggc3RyaW5nIHRvIGEgZmlsZSBVUkwuXG4gKlxuICogYGBgdHNcbiAqICAgICAgaW1wb3J0IHsgdG9GaWxlVXJsIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vcGF0aC93aW4zMi50c1wiO1xuICogICAgICB0b0ZpbGVVcmwoXCJcXFxcaG9tZVxcXFxmb29cIik7IC8vIG5ldyBVUkwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpXG4gKiAgICAgIHRvRmlsZVVybChcIkM6XFxcXFVzZXJzXFxcXGZvb1wiKTsgLy8gbmV3IFVSTChcImZpbGU6Ly8vQzovVXNlcnMvZm9vXCIpXG4gKiAgICAgIHRvRmlsZVVybChcIlxcXFxcXFxcMTI3LjAuMC4xXFxcXGhvbWVcXFxcZm9vXCIpOyAvLyBuZXcgVVJMKFwiZmlsZTovLzEyNy4wLjAuMS9ob21lL2Zvb1wiKVxuICogYGBgXG4gKiBAcGFyYW0gcGF0aCB0byBjb252ZXJ0IHRvIGZpbGUgVVJMXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0ZpbGVVcmwocGF0aDogc3RyaW5nKTogVVJMIHtcbiAgaWYgKCFpc0Fic29sdXRlKHBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC5cIik7XG4gIH1cbiAgY29uc3QgWywgaG9zdG5hbWUsIHBhdGhuYW1lXSA9IHBhdGgubWF0Y2goXG4gICAgL14oPzpbL1xcXFxdezJ9KFteL1xcXFxdKykoPz1bL1xcXFxdKD86W14vXFxcXF18JCkpKT8oLiopLyxcbiAgKSE7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoXCJmaWxlOi8vL1wiKTtcbiAgdXJsLnBhdGhuYW1lID0gZW5jb2RlV2hpdGVzcGFjZShwYXRobmFtZS5yZXBsYWNlKC8lL2csIFwiJTI1XCIpKTtcbiAgaWYgKGhvc3RuYW1lICE9IG51bGwgJiYgaG9zdG5hbWUgIT0gXCJsb2NhbGhvc3RcIikge1xuICAgIHVybC5ob3N0bmFtZSA9IGhvc3RuYW1lO1xuICAgIGlmICghdXJsLmhvc3RuYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBob3N0bmFtZS5cIik7XG4gICAgfVxuICB9XG4gIHJldHVybiB1cmw7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLGlEQUFpRDtBQUNqRCw2REFBNkQ7QUFDN0QscUNBQXFDO0FBR3JDLFNBQ0UsbUJBQW1C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 +// denoCacheMetadata=5334482375933601715,3386009256447851835
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/8d1fde568a3fee9c1f33208eacfe737e03a3bfd24d84ee53a6a8b314e529a341.js b/vendor/gen/https/deno.land/8d1fde568a3fee9c1f33208eacfe737e03a3bfd24d84ee53a6a8b314e529a341.js new file mode 100644 index 0000000..c7e1f58 --- /dev/null +++ b/vendor/gen/https/deno.land/8d1fde568a3fee9c1f33208eacfe737e03a3bfd24d84ee53a6a8b314e529a341.js @@ -0,0 +1,35 @@ +export function localIp() { + // Try/catch for https://github.com/denoland/deno/issues/25420 + try { + for (const info of Deno.networkInterfaces()){ + if (info.family !== "IPv4" || info.address.startsWith("127.")) { + continue; + } + return info.address; + } + } catch { + return undefined; + } +} +export async function openBrowser(url) { + const commands = { + darwin: "open", + linux: "xdg-open", + freebsd: "xdg-open", + netbsd: "xdg-open", + aix: "xdg-open", + solaris: "xdg-open", + illumos: "xdg-open", + windows: "explorer", + android: "xdg-open" + }; + await new Deno.Command(commands[Deno.build.os], { + args: [ + url + ], + stdout: "inherit", + stderr: "inherit" + }).output(); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS91dGlscy9uZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGxvY2FsSXAoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgLy8gVHJ5L2NhdGNoIGZvciBodHRwczovL2dpdGh1Yi5jb20vZGVub2xhbmQvZGVuby9pc3N1ZXMvMjU0MjBcbiAgdHJ5IHtcbiAgICBmb3IgKGNvbnN0IGluZm8gb2YgRGVuby5uZXR3b3JrSW50ZXJmYWNlcygpKSB7XG4gICAgICBpZiAoaW5mby5mYW1pbHkgIT09IFwiSVB2NFwiIHx8IGluZm8uYWRkcmVzcy5zdGFydHNXaXRoKFwiMTI3LlwiKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluZm8uYWRkcmVzcztcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5Ccm93c2VyKHVybDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGNvbW1hbmRzOiBSZWNvcmQ8dHlwZW9mIERlbm8uYnVpbGQub3MsIHN0cmluZz4gPSB7XG4gICAgZGFyd2luOiBcIm9wZW5cIixcbiAgICBsaW51eDogXCJ4ZGctb3BlblwiLFxuICAgIGZyZWVic2Q6IFwieGRnLW9wZW5cIixcbiAgICBuZXRic2Q6IFwieGRnLW9wZW5cIixcbiAgICBhaXg6IFwieGRnLW9wZW5cIixcbiAgICBzb2xhcmlzOiBcInhkZy1vcGVuXCIsXG4gICAgaWxsdW1vczogXCJ4ZGctb3BlblwiLFxuICAgIHdpbmRvd3M6IFwiZXhwbG9yZXJcIixcbiAgICBhbmRyb2lkOiBcInhkZy1vcGVuXCIsXG4gIH07XG5cbiAgYXdhaXQgbmV3IERlbm8uQ29tbWFuZChjb21tYW5kc1tEZW5vLmJ1aWxkLm9zXSwge1xuICAgIGFyZ3M6IFt1cmxdLFxuICAgIHN0ZG91dDogXCJpbmhlcml0XCIsXG4gICAgc3RkZXJyOiBcImluaGVyaXRcIixcbiAgfSkub3V0cHV0KCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxTQUFTO0VBQ2QsOERBQThEO0VBQzlELElBQUk7SUFDRixLQUFLLE1BQU0sUUFBUSxLQUFLLGlCQUFpQixHQUFJO01BQzNDLElBQUksS0FBSyxNQUFNLEtBQUssVUFBVSxLQUFLLE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUztRQUM3RDtNQUNGO01BRUEsT0FBTyxLQUFLLE9BQU87SUFDckI7RUFDRixFQUFFLE9BQU07SUFDTixPQUFPO0VBQ1Q7QUFDRjtBQUVBLE9BQU8sZUFBZSxZQUFZLEdBQVc7RUFDM0MsTUFBTSxXQUFpRDtJQUNyRCxRQUFRO0lBQ1IsT0FBTztJQUNQLFNBQVM7SUFDVCxRQUFRO0lBQ1IsS0FBSztJQUNMLFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7RUFDWDtFQUVBLE1BQU0sSUFBSSxLQUFLLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDOUMsTUFBTTtNQUFDO0tBQUk7SUFDWCxRQUFRO0lBQ1IsUUFBUTtFQUNWLEdBQUcsTUFBTTtBQUNYIn0= +// denoCacheMetadata=16256158211398553603,14260453024118385112
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/8e13e56efc0ab70a1829248301d4a2d1f1cd8ed308f40336a4a4372cb31de324.js b/vendor/gen/https/deno.land/8e13e56efc0ab70a1829248301d4a2d1f1cd8ed308f40336a4a4372cb31de324.js new file mode 100644 index 0000000..bc3ddbb --- /dev/null +++ b/vendor/gen/https/deno.land/8e13e56efc0ab70a1829248301d4a2d1f1cd8ed308f40336a4a4372cb31de324.js @@ -0,0 +1,1383 @@ +// deno-lint-ignore-file no-explicit-any +import { UnknownTypeError, ValidationError as FlagsValidationError } from "../flags/_errors.ts"; +import { MissingRequiredEnvVarError } from "./_errors.ts"; +import { parseFlags } from "../flags/flags.ts"; +import { getDescription, parseArgumentsDefinition, splitArguments } from "./_utils.ts"; +import { bold, brightBlue, red, yellow } from "./deps.ts"; +import { CommandExecutableNotFoundError, CommandNotFoundError, DefaultCommandNotFoundError, DuplicateCommandAliasError, DuplicateCommandNameError, DuplicateCompletionError, DuplicateEnvVarError, DuplicateExampleError, DuplicateOptionNameError, DuplicateTypeError, MissingArgumentError, MissingArgumentsError, MissingCommandNameError, NoArgumentsAllowedError, TooManyArgumentsError, TooManyEnvVarValuesError, UnexpectedOptionalEnvVarValueError, UnexpectedVariadicEnvVarValueError, UnknownCommandError, ValidationError } from "./_errors.ts"; +import { BooleanType } from "./types/boolean.ts"; +import { FileType } from "./types/file.ts"; +import { NumberType } from "./types/number.ts"; +import { StringType } from "./types/string.ts"; +import { Type } from "./type.ts"; +import { HelpGenerator } from "./help/_help_generator.ts"; +import { IntegerType } from "./types/integer.ts"; +import { underscoreToCamelCase } from "../flags/_utils.ts"; +export class Command { + types = new Map(); + rawArgs = []; + literalArgs = []; + // @TODO: get script name: https://github.com/denoland/deno/pull/5034 + // private name: string = location.pathname.split( '/' ).pop() as string; + _name = "COMMAND"; + _parent; + _globalParent; + ver; + desc = ""; + _usage; + fn; + options = []; + commands = new Map(); + examples = []; + envVars = []; + aliases = []; + completions = new Map(); + cmd = this; + argsDefinition; + isExecutable = false; + throwOnError = false; + _allowEmpty = false; + _stopEarly = false; + defaultCommand; + _useRawArgs = false; + args = []; + isHidden = false; + isGlobal = false; + hasDefaults = false; + _versionOptions; + _helpOptions; + _versionOption; + _helpOption; + _help; + _shouldExit; + _meta = {}; + _groupName; + _noGlobals = false; + errorHandler; + versionOption(flags, desc, opts) { + this._versionOptions = flags === false ? flags : { + flags, + desc, + opts: typeof opts === "function" ? { + action: opts + } : opts + }; + return this; + } + helpOption(flags, desc, opts) { + this._helpOptions = flags === false ? flags : { + flags, + desc, + opts: typeof opts === "function" ? { + action: opts + } : opts + }; + return this; + } + /** + * Add new sub-command. + * @param nameAndArguments Command definition. E.g: `my-command <input-file:string> <output-file:string>` + * @param cmdOrDescription The description of the new child command. + * @param override Override existing child command. + */ command(nameAndArguments, cmdOrDescription, override) { + this.reset(); + const result = splitArguments(nameAndArguments); + const name = result.flags.shift(); + const aliases = result.flags; + if (!name) { + throw new MissingCommandNameError(); + } + if (this.getBaseCommand(name, true)) { + if (!override) { + throw new DuplicateCommandNameError(name); + } + this.removeCommand(name); + } + let description; + let cmd; + if (typeof cmdOrDescription === "string") { + description = cmdOrDescription; + } + if (cmdOrDescription instanceof Command) { + cmd = cmdOrDescription.reset(); + } else { + cmd = new Command(); + } + cmd._name = name; + cmd._parent = this; + if (description) { + cmd.description(description); + } + if (result.typeDefinition) { + cmd.arguments(result.typeDefinition); + } + aliases.forEach((alias)=>cmd.alias(alias)); + this.commands.set(name, cmd); + this.select(name); + return this; + } + /** + * Add new command alias. + * @param alias Tha name of the alias. + */ alias(alias) { + if (this.cmd._name === alias || this.cmd.aliases.includes(alias)) { + throw new DuplicateCommandAliasError(alias); + } + this.cmd.aliases.push(alias); + return this; + } + /** Reset internal command reference to main command. */ reset() { + this._groupName = undefined; + this.cmd = this; + return this; + } + /** + * Set internal command pointer to child command with given name. + * @param name The name of the command to select. + */ select(name) { + const cmd = this.getBaseCommand(name, true); + if (!cmd) { + throw new CommandNotFoundError(name, this.getBaseCommands(true)); + } + this.cmd = cmd; + return this; + } + /***************************************************************************** + **** SUB HANDLER ************************************************************ + *****************************************************************************/ /** Set command name. */ name(name) { + this.cmd._name = name; + return this; + } + /** + * Set command version. + * @param version Semantic version string string or method that returns the version string. + */ version(version) { + if (typeof version === "string") { + this.cmd.ver = ()=>version; + } else if (typeof version === "function") { + this.cmd.ver = version; + } + return this; + } + meta(name, value) { + this.cmd._meta[name] = value; + return this; + } + getMeta(name) { + return typeof name === "undefined" ? this._meta : this._meta[name]; + } + /** + * Set command help. + * @param help Help string, method, or config for generator that returns the help string. + */ help(help) { + if (typeof help === "string") { + this.cmd._help = ()=>help; + } else if (typeof help === "function") { + this.cmd._help = help; + } else { + this.cmd._help = (cmd, options)=>HelpGenerator.generate(cmd, { + ...help, + ...options + }); + } + return this; + } + /** + * Set the long command description. + * @param description The command description. + */ description(description) { + this.cmd.desc = description; + return this; + } + /** + * Set the command usage. Defaults to arguments. + * @param usage The command usage. + */ usage(usage) { + this.cmd._usage = usage; + return this; + } + /** + * Hide command from help, completions, etc. + */ hidden() { + this.cmd.isHidden = true; + return this; + } + /** Make command globally available. */ global() { + this.cmd.isGlobal = true; + return this; + } + /** Make command executable. */ executable() { + this.cmd.isExecutable = true; + return this; + } + /** + * Set command arguments: + * + * <requiredArg:string> [optionalArg: number] [...restArgs:string] + */ arguments(args) { + this.cmd.argsDefinition = args; + return this; + } + /** + * Set command callback method. + * @param fn Command action handler. + */ action(fn) { + this.cmd.fn = fn; + return this; + } + /** + * Don't throw an error if the command was called without arguments. + * @param allowEmpty Enable/disable allow empty. + */ // public allowEmpty<TAllowEmpty extends boolean | undefined = undefined>( + // allowEmpty?: TAllowEmpty, + // ): false extends TAllowEmpty ? this + // : Command< + // Partial<TParentCommandGlobals>, + // TParentCommandTypes, + // Partial<TCommandOptions>, + // TCommandArguments, + // TCommandGlobals, + // TCommandTypes, + // TCommandGlobalTypes, + // TParentCommand + // > { + // this.cmd._allowEmpty = allowEmpty !== false; + // return this; + // } + allowEmpty(allowEmpty) { + this.cmd._allowEmpty = allowEmpty !== false; + return this; + } + /** + * Enable stop early. If enabled, all arguments starting from the first non + * option argument will be passed as arguments with type string to the command + * action handler. + * + * For example: + * `command --debug-level warning server --port 80` + * + * Will result in: + * - options: `{debugLevel: 'warning'}` + * - args: `['server', '--port', '80']` + * + * @param stopEarly Enable/disable stop early. + */ stopEarly(stopEarly = true) { + this.cmd._stopEarly = stopEarly; + return this; + } + /** + * Disable parsing arguments. If enabled the raw arguments will be passed to + * the action handler. This has no effect for parent or child commands. Only + * for the command on which this method was called. + * @param useRawArgs Enable/disable raw arguments. + */ useRawArgs(useRawArgs = true) { + this.cmd._useRawArgs = useRawArgs; + return this; + } + /** + * Set default command. The default command is executed when the program + * was called without any argument and if no action handler is registered. + * @param name Name of the default command. + */ default(name) { + this.cmd.defaultCommand = name; + return this; + } + globalType(name, handler, options) { + return this.type(name, handler, { + ...options, + global: true + }); + } + /** + * Register custom type. + * @param name The name of the type. + * @param handler The callback method to parse the type. + * @param options Type options. + */ type(name, handler, options) { + if (this.cmd.types.get(name) && !options?.override) { + throw new DuplicateTypeError(name); + } + this.cmd.types.set(name, { + ...options, + name, + handler: handler + }); + if (handler instanceof Type && (typeof handler.complete !== "undefined" || typeof handler.values !== "undefined")) { + const completeHandler = (cmd, parent)=>handler.complete?.(cmd, parent) || []; + this.complete(name, completeHandler, options); + } + return this; + } + globalComplete(name, complete, options) { + return this.complete(name, complete, { + ...options, + global: true + }); + } + complete(name, complete, options) { + if (this.cmd.completions.has(name) && !options?.override) { + throw new DuplicateCompletionError(name); + } + this.cmd.completions.set(name, { + name, + complete, + ...options + }); + return this; + } + /** + * Throw validation errors instead of calling `Deno.exit()` to handle + * validation errors manually. + * + * A validation error is thrown when the command is wrongly used by the user. + * For example: If the user passes some invalid options or arguments to the + * command. + * + * This has no effect for parent commands. Only for the command on which this + * method was called and all child commands. + * + * **Example:** + * + * ``` + * try { + * cmd.parse(); + * } catch(error) { + * if (error instanceof ValidationError) { + * cmd.showHelp(); + * Deno.exit(1); + * } + * throw error; + * } + * ``` + * + * @see ValidationError + */ throwErrors() { + this.cmd.throwOnError = true; + return this; + } + error(handler) { + this.cmd.errorHandler = handler; + return this; + } + getErrorHandler() { + return this.errorHandler ?? this._parent?.errorHandler; + } + /** + * Same as `.throwErrors()` but also prevents calling `Deno.exit` after + * printing help or version with the --help and --version option. + */ noExit() { + this.cmd._shouldExit = false; + this.throwErrors(); + return this; + } + /** + * Disable inheriting global commands, options and environment variables from + * parent commands. + */ noGlobals() { + this.cmd._noGlobals = true; + return this; + } + /** Check whether the command should throw errors or exit. */ shouldThrowErrors() { + return this.throwOnError || !!this._parent?.shouldThrowErrors(); + } + /** Check whether the command should exit after printing help or version. */ shouldExit() { + return this._shouldExit ?? this._parent?.shouldExit() ?? true; + } + globalOption(flags, desc, opts) { + if (typeof opts === "function") { + return this.option(flags, desc, { + value: opts, + global: true + }); + } + return this.option(flags, desc, { + ...opts, + global: true + }); + } + /** + * Enable grouping of options and set the name of the group. + * All option which are added after calling the `.group()` method will be + * grouped in the help output. If the `.group()` method can be use multiple + * times to create more groups. + * + * @param name The name of the option group. + */ group(name) { + this.cmd._groupName = name; + return this; + } + option(flags, desc, opts) { + if (typeof opts === "function") { + return this.option(flags, desc, { + value: opts + }); + } + const result = splitArguments(flags); + const args = result.typeDefinition ? parseArgumentsDefinition(result.typeDefinition) : []; + const option = { + ...opts, + name: "", + description: desc, + args, + flags: result.flags, + equalsSign: result.equalsSign, + typeDefinition: result.typeDefinition, + groupName: this._groupName + }; + if (option.separator) { + for (const arg of args){ + if (arg.list) { + arg.separator = option.separator; + } + } + } + for (const part of option.flags){ + const arg = part.trim(); + const isLong = /^--/.test(arg); + const name = isLong ? arg.slice(2) : arg.slice(1); + if (this.cmd.getBaseOption(name, true)) { + if (opts?.override) { + this.removeOption(name); + } else { + throw new DuplicateOptionNameError(name); + } + } + if (!option.name && isLong) { + option.name = name; + } else if (!option.aliases) { + option.aliases = [ + name + ]; + } else { + option.aliases.push(name); + } + } + if (option.prepend) { + this.cmd.options.unshift(option); + } else { + this.cmd.options.push(option); + } + return this; + } + /** + * Add new command example. + * @param name Name of the example. + * @param description The content of the example. + */ example(name, description) { + if (this.cmd.hasExample(name)) { + throw new DuplicateExampleError(name); + } + this.cmd.examples.push({ + name, + description + }); + return this; + } + globalEnv(name, description, options) { + return this.env(name, description, { + ...options, + global: true + }); + } + env(name, description, options) { + const result = splitArguments(name); + if (!result.typeDefinition) { + result.typeDefinition = "<value:boolean>"; + } + if (result.flags.some((envName)=>this.cmd.getBaseEnvVar(envName, true))) { + throw new DuplicateEnvVarError(name); + } + const details = parseArgumentsDefinition(result.typeDefinition); + if (details.length > 1) { + throw new TooManyEnvVarValuesError(name); + } else if (details.length && details[0].optionalValue) { + throw new UnexpectedOptionalEnvVarValueError(name); + } else if (details.length && details[0].variadic) { + throw new UnexpectedVariadicEnvVarValueError(name); + } + this.cmd.envVars.push({ + name: result.flags[0], + names: result.flags, + description, + type: details[0].type, + details: details.shift(), + ...options + }); + return this; + } + /***************************************************************************** + **** MAIN HANDLER *********************************************************** + *****************************************************************************/ /** + * Parse command line arguments and execute matched command. + * @param args Command line args to parse. Ex: `cmd.parse( Deno.args )` + */ parse(args = Deno.args) { + const ctx = { + unknown: args.slice(), + flags: {}, + env: {}, + literal: [], + stopEarly: false, + stopOnUnknown: false + }; + return this.parseCommand(ctx); + } + async parseCommand(ctx) { + try { + this.reset(); + this.registerDefaults(); + this.rawArgs = ctx.unknown.slice(); + if (this.isExecutable) { + await this.executeExecutable(ctx.unknown); + return { + options: {}, + args: [], + cmd: this, + literal: [] + }; + } else if (this._useRawArgs) { + await this.parseEnvVars(ctx, this.envVars); + return this.execute(ctx.env, ...ctx.unknown); + } + let preParseGlobals = false; + let subCommand; + // Pre parse globals to support: cmd --global-option sub-command --option + if (ctx.unknown.length > 0) { + // Detect sub command. + subCommand = this.getSubCommand(ctx); + if (!subCommand) { + // Only pre parse globals if first arg ist a global option. + const optionName = ctx.unknown[0].replace(/^-+/, ""); + const option = this.getOption(optionName, true); + if (option?.global) { + preParseGlobals = true; + await this.parseGlobalOptionsAndEnvVars(ctx); + } + } + } + if (subCommand || ctx.unknown.length > 0) { + subCommand ??= this.getSubCommand(ctx); + if (subCommand) { + subCommand._globalParent = this; + return subCommand.parseCommand(ctx); + } + } + // Parse rest options & env vars. + await this.parseOptionsAndEnvVars(ctx, preParseGlobals); + const options = { + ...ctx.env, + ...ctx.flags + }; + const args = this.parseArguments(ctx, options); + this.literalArgs = ctx.literal; + // Execute option action. + if (ctx.action) { + await ctx.action.action.call(this, options, ...args); + if (ctx.action.standalone) { + return { + options, + args, + cmd: this, + literal: this.literalArgs + }; + } + } + return await this.execute(options, ...args); + } catch (error) { + this.handleError(error); + } + } + getSubCommand(ctx) { + const subCommand = this.getCommand(ctx.unknown[0], true); + if (subCommand) { + ctx.unknown.shift(); + } + return subCommand; + } + async parseGlobalOptionsAndEnvVars(ctx) { + const isHelpOption = this.getHelpOption()?.flags.includes(ctx.unknown[0]); + // Parse global env vars. + const envVars = [ + ...this.envVars.filter((envVar)=>envVar.global), + ...this.getGlobalEnvVars(true) + ]; + await this.parseEnvVars(ctx, envVars, !isHelpOption); + // Parse global options. + const options = [ + ...this.options.filter((option)=>option.global), + ...this.getGlobalOptions(true) + ]; + this.parseOptions(ctx, options, { + stopEarly: true, + stopOnUnknown: true, + dotted: false + }); + } + async parseOptionsAndEnvVars(ctx, preParseGlobals) { + const helpOption = this.getHelpOption(); + const isVersionOption = this._versionOption?.flags.includes(ctx.unknown[0]); + const isHelpOption = helpOption && ctx.flags?.[helpOption.name] === true; + // Parse env vars. + const envVars = preParseGlobals ? this.envVars.filter((envVar)=>!envVar.global) : this.getEnvVars(true); + await this.parseEnvVars(ctx, envVars, !isHelpOption && !isVersionOption); + // Parse options. + const options = this.getOptions(true); + this.parseOptions(ctx, options); + } + /** Register default options like `--version` and `--help`. */ registerDefaults() { + if (this.hasDefaults || this.getParent()) { + return this; + } + this.hasDefaults = true; + this.reset(); + !this.types.has("string") && this.type("string", new StringType(), { + global: true + }); + !this.types.has("number") && this.type("number", new NumberType(), { + global: true + }); + !this.types.has("integer") && this.type("integer", new IntegerType(), { + global: true + }); + !this.types.has("boolean") && this.type("boolean", new BooleanType(), { + global: true + }); + !this.types.has("file") && this.type("file", new FileType(), { + global: true + }); + if (!this._help) { + this.help({ + hints: true, + types: false + }); + } + if (this._versionOptions !== false && (this._versionOptions || this.ver)) { + this.option(this._versionOptions?.flags || "-V, --version", this._versionOptions?.desc || "Show the version number for this program.", { + standalone: true, + prepend: true, + action: async function() { + const long = this.getRawArgs().includes(`--${this._versionOption?.name}`); + if (long) { + await this.checkVersion(); + this.showLongVersion(); + } else { + this.showVersion(); + } + this.exit(); + }, + ...this._versionOptions?.opts ?? {} + }); + this._versionOption = this.options[0]; + } + if (this._helpOptions !== false) { + this.option(this._helpOptions?.flags || "-h, --help", this._helpOptions?.desc || "Show this help.", { + standalone: true, + global: true, + prepend: true, + action: async function() { + const long = this.getRawArgs().includes(`--${this.getHelpOption()?.name}`); + await this.checkVersion(); + this.showHelp({ + long + }); + this.exit(); + }, + ...this._helpOptions?.opts ?? {} + }); + this._helpOption = this.options[0]; + } + return this; + } + /** + * Execute command. + * @param options A map of options. + * @param args Command arguments. + */ async execute(options, ...args) { + if (this.fn) { + await this.fn(options, ...args); + } else if (this.defaultCommand) { + const cmd = this.getCommand(this.defaultCommand, true); + if (!cmd) { + throw new DefaultCommandNotFoundError(this.defaultCommand, this.getCommands()); + } + cmd._globalParent = this; + return cmd.execute(options, ...args); + } + return { + options, + args, + cmd: this, + literal: this.literalArgs + }; + } + /** + * Execute external sub-command. + * @param args Raw command line arguments. + */ async executeExecutable(args) { + const command = this.getPath().replace(/\s+/g, "-"); + await Deno.permissions.request({ + name: "run", + command + }); + try { + const process = Deno.run({ + cmd: [ + command, + ...args + ] + }); + const status = await process.status(); + if (!status.success) { + Deno.exit(status.code); + } + } catch (error) { + if (error instanceof Deno.errors.NotFound) { + throw new CommandExecutableNotFoundError(command); + } + throw error; + } + } + /** Parse raw command line arguments. */ parseOptions(ctx, options, { stopEarly = this._stopEarly, stopOnUnknown = false, dotted = true } = {}) { + parseFlags(ctx, { + stopEarly, + stopOnUnknown, + dotted, + allowEmpty: this._allowEmpty, + flags: options, + ignoreDefaults: ctx.env, + parse: (type)=>this.parseType(type), + option: (option)=>{ + if (!ctx.action && option.action) { + ctx.action = option; + } + } + }); + } + /** Parse argument type. */ parseType(type) { + const typeSettings = this.getType(type.type); + if (!typeSettings) { + throw new UnknownTypeError(type.type, this.getTypes().map((type)=>type.name)); + } + return typeSettings.handler instanceof Type ? typeSettings.handler.parse(type) : typeSettings.handler(type); + } + /** + * Read and validate environment variables. + * @param ctx Parse context. + * @param envVars env vars defined by the command. + * @param validate when true, throws an error if a required env var is missing. + */ async parseEnvVars(ctx, envVars, validate = true) { + for (const envVar of envVars){ + const env = await this.findEnvVar(envVar.names); + if (env) { + const parseType = (value)=>{ + return this.parseType({ + label: "Environment variable", + type: envVar.type, + name: env.name, + value + }); + }; + const propertyName = underscoreToCamelCase(envVar.prefix ? envVar.names[0].replace(new RegExp(`^${envVar.prefix}`), "") : envVar.names[0]); + if (envVar.details.list) { + ctx.env[propertyName] = env.value.split(envVar.details.separator ?? ",").map(parseType); + } else { + ctx.env[propertyName] = parseType(env.value); + } + if (envVar.value && typeof ctx.env[propertyName] !== "undefined") { + ctx.env[propertyName] = envVar.value(ctx.env[propertyName]); + } + } else if (envVar.required && validate) { + throw new MissingRequiredEnvVarError(envVar); + } + } + } + async findEnvVar(names) { + for (const name of names){ + const status = await Deno.permissions.query({ + name: "env", + variable: name + }); + if (status.state === "granted") { + const value = Deno.env.get(name); + if (value) { + return { + name, + value + }; + } + } + } + return undefined; + } + /** + * Parse command-line arguments. + * @param ctx Parse context. + * @param options Parsed command line options. + */ parseArguments(ctx, options) { + const params = []; + const args = ctx.unknown.slice(); + if (!this.hasArguments()) { + if (args.length) { + if (this.hasCommands(true)) { + if (this.hasCommand(args[0], true)) { + // e.g: command --global-foo --foo sub-command + throw new TooManyArgumentsError(args); + } else { + throw new UnknownCommandError(args[0], this.getCommands()); + } + } else { + throw new NoArgumentsAllowedError(this.getPath()); + } + } + } else { + if (!args.length) { + const required = this.getArguments().filter((expectedArg)=>!expectedArg.optionalValue).map((expectedArg)=>expectedArg.name); + if (required.length) { + const optionNames = Object.keys(options); + const hasStandaloneOption = !!optionNames.find((name)=>this.getOption(name, true)?.standalone); + if (!hasStandaloneOption) { + throw new MissingArgumentsError(required); + } + } + } else { + for (const expectedArg of this.getArguments()){ + if (!args.length) { + if (expectedArg.optionalValue) { + break; + } + throw new MissingArgumentError(expectedArg.name); + } + let arg; + const parseArgValue = (value)=>{ + return expectedArg.list ? value.split(",").map((value)=>parseArgType(value)) : parseArgType(value); + }; + const parseArgType = (value)=>{ + return this.parseType({ + label: "Argument", + type: expectedArg.type, + name: expectedArg.name, + value + }); + }; + if (expectedArg.variadic) { + arg = args.splice(0, args.length).map((value)=>parseArgValue(value)); + } else { + arg = parseArgValue(args.shift()); + } + if (expectedArg.variadic && Array.isArray(arg)) { + params.push(...arg); + } else if (typeof arg !== "undefined") { + params.push(arg); + } + } + if (args.length) { + throw new TooManyArgumentsError(args); + } + } + } + return params; + } + handleError(error) { + this.throw(error instanceof FlagsValidationError ? new ValidationError(error.message) : error instanceof Error ? error : new Error(`[non-error-thrown] ${error}`)); + } + /** + * Handle error. If `throwErrors` is enabled the error will be thrown, + * otherwise a formatted error message will be printed and `Deno.exit(1)` + * will be called. This will also trigger registered error handlers. + * + * @param error The error to handle. + */ throw(error) { + if (error instanceof ValidationError) { + error.cmd = this; + } + this.getErrorHandler()?.(error, this); + if (this.shouldThrowErrors() || !(error instanceof ValidationError)) { + throw error; + } + this.showHelp(); + console.error(red(` ${bold("error")}: ${error.message}\n`)); + Deno.exit(error instanceof ValidationError ? error.exitCode : 1); + } + /***************************************************************************** + **** GETTER ***************************************************************** + *****************************************************************************/ /** Get command name. */ getName() { + return this._name; + } + /** Get parent command. */ getParent() { + return this._parent; + } + /** + * Get parent command from global executed command. + * Be sure, to call this method only inside an action handler. Unless this or any child command was executed, + * this method returns always undefined. + */ getGlobalParent() { + return this._globalParent; + } + /** Get main command. */ getMainCommand() { + return this._parent?.getMainCommand() ?? this; + } + /** Get command name aliases. */ getAliases() { + return this.aliases; + } + /** Get full command path. */ getPath() { + return this._parent ? this._parent.getPath() + " " + this._name : this._name; + } + /** Get arguments definition. E.g: <input-file:string> <output-file:string> */ getArgsDefinition() { + return this.argsDefinition; + } + /** + * Get argument by name. + * @param name Name of the argument. + */ getArgument(name) { + return this.getArguments().find((arg)=>arg.name === name); + } + /** Get arguments. */ getArguments() { + if (!this.args.length && this.argsDefinition) { + this.args = parseArgumentsDefinition(this.argsDefinition); + } + return this.args; + } + /** Check if command has arguments. */ hasArguments() { + return !!this.argsDefinition; + } + /** Get command version. */ getVersion() { + return this.getVersionHandler()?.call(this, this); + } + /** Get help handler method. */ getVersionHandler() { + return this.ver ?? this._parent?.getVersionHandler(); + } + /** Get command description. */ getDescription() { + // call description method only once + return typeof this.desc === "function" ? this.desc = this.desc() : this.desc; + } + getUsage() { + return this._usage ?? this.getArgsDefinition(); + } + /** Get short command description. This is the first line of the description. */ getShortDescription() { + return getDescription(this.getDescription(), true); + } + /** Get original command-line arguments. */ getRawArgs() { + return this.rawArgs; + } + /** Get all arguments defined after the double dash. */ getLiteralArgs() { + return this.literalArgs; + } + /** Output generated help without exiting. */ showVersion() { + console.log(this.getVersion()); + } + /** Returns command name, version and meta data. */ getLongVersion() { + return `${bold(this.getMainCommand().getName())} ${brightBlue(this.getVersion() ?? "")}` + Object.entries(this.getMeta()).map(([k, v])=>`\n${bold(k)} ${brightBlue(v)}`).join(""); + } + /** Outputs command name, version and meta data. */ showLongVersion() { + console.log(this.getLongVersion()); + } + /** Output generated help without exiting. */ showHelp(options) { + console.log(this.getHelp(options)); + } + /** Get generated help. */ getHelp(options) { + this.registerDefaults(); + return this.getHelpHandler().call(this, this, options ?? {}); + } + /** Get help handler method. */ getHelpHandler() { + return this._help ?? this._parent?.getHelpHandler(); + } + exit(code = 0) { + if (this.shouldExit()) { + Deno.exit(code); + } + } + /** Check if new version is available and add hint to version. */ async checkVersion() { + const mainCommand = this.getMainCommand(); + const upgradeCommand = mainCommand.getCommand("upgrade"); + if (!isUpgradeCommand(upgradeCommand)) { + return; + } + const latestVersion = await upgradeCommand.getLatestVersion(); + const currentVersion = mainCommand.getVersion(); + if (currentVersion === latestVersion) { + return; + } + const versionHelpText = `(New version available: ${latestVersion}. Run '${mainCommand.getName()} upgrade' to upgrade to the latest version!)`; + mainCommand.version(`${currentVersion} ${bold(yellow(versionHelpText))}`); + } + /***************************************************************************** + **** Options GETTER ********************************************************* + *****************************************************************************/ /** + * Checks whether the command has options or not. + * @param hidden Include hidden options. + */ hasOptions(hidden) { + return this.getOptions(hidden).length > 0; + } + /** + * Get options. + * @param hidden Include hidden options. + */ getOptions(hidden) { + return this.getGlobalOptions(hidden).concat(this.getBaseOptions(hidden)); + } + /** + * Get base options. + * @param hidden Include hidden options. + */ getBaseOptions(hidden) { + if (!this.options.length) { + return []; + } + return hidden ? this.options.slice(0) : this.options.filter((opt)=>!opt.hidden); + } + /** + * Get global options. + * @param hidden Include hidden options. + */ getGlobalOptions(hidden) { + const helpOption = this.getHelpOption(); + const getGlobals = (cmd, noGlobals, options = [], names = [])=>{ + if (cmd.options.length) { + for (const option of cmd.options){ + if (option.global && !this.options.find((opt)=>opt.name === option.name) && names.indexOf(option.name) === -1 && (hidden || !option.hidden)) { + if (noGlobals && option !== helpOption) { + continue; + } + names.push(option.name); + options.push(option); + } + } + } + return cmd._parent ? getGlobals(cmd._parent, noGlobals || cmd._noGlobals, options, names) : options; + }; + return this._parent ? getGlobals(this._parent, this._noGlobals) : []; + } + /** + * Checks whether the command has an option with given name or not. + * @param name Name of the option. Must be in param-case. + * @param hidden Include hidden options. + */ hasOption(name, hidden) { + return !!this.getOption(name, hidden); + } + /** + * Get option by name. + * @param name Name of the option. Must be in param-case. + * @param hidden Include hidden options. + */ getOption(name, hidden) { + return this.getBaseOption(name, hidden) ?? this.getGlobalOption(name, hidden); + } + /** + * Get base option by name. + * @param name Name of the option. Must be in param-case. + * @param hidden Include hidden options. + */ getBaseOption(name, hidden) { + const option = this.options.find((option)=>option.name === name || option.aliases?.includes(name)); + return option && (hidden || !option.hidden) ? option : undefined; + } + /** + * Get global option from parent commands by name. + * @param name Name of the option. Must be in param-case. + * @param hidden Include hidden options. + */ getGlobalOption(name, hidden) { + const helpOption = this.getHelpOption(); + const getGlobalOption = (parent, noGlobals)=>{ + const option = parent.getBaseOption(name, hidden); + if (!option?.global) { + return parent._parent && getGlobalOption(parent._parent, noGlobals || parent._noGlobals); + } + if (noGlobals && option !== helpOption) { + return; + } + return option; + }; + return this._parent && getGlobalOption(this._parent, this._noGlobals); + } + /** + * Remove option by name. + * @param name Name of the option. Must be in param-case. + */ removeOption(name) { + const index = this.options.findIndex((option)=>option.name === name); + if (index === -1) { + return; + } + return this.options.splice(index, 1)[0]; + } + /** + * Checks whether the command has sub-commands or not. + * @param hidden Include hidden commands. + */ hasCommands(hidden) { + return this.getCommands(hidden).length > 0; + } + /** + * Get commands. + * @param hidden Include hidden commands. + */ getCommands(hidden) { + return this.getGlobalCommands(hidden).concat(this.getBaseCommands(hidden)); + } + /** + * Get base commands. + * @param hidden Include hidden commands. + */ getBaseCommands(hidden) { + const commands = Array.from(this.commands.values()); + return hidden ? commands : commands.filter((cmd)=>!cmd.isHidden); + } + /** + * Get global commands. + * @param hidden Include hidden commands. + */ getGlobalCommands(hidden) { + const getCommands = (command, noGlobals, commands = [], names = [])=>{ + if (command.commands.size) { + for (const [_, cmd] of command.commands){ + if (cmd.isGlobal && this !== cmd && !this.commands.has(cmd._name) && names.indexOf(cmd._name) === -1 && (hidden || !cmd.isHidden)) { + if (noGlobals && cmd?.getName() !== "help") { + continue; + } + names.push(cmd._name); + commands.push(cmd); + } + } + } + return command._parent ? getCommands(command._parent, noGlobals || command._noGlobals, commands, names) : commands; + }; + return this._parent ? getCommands(this._parent, this._noGlobals) : []; + } + /** + * Checks whether a child command exists by given name or alias. + * @param name Name or alias of the command. + * @param hidden Include hidden commands. + */ hasCommand(name, hidden) { + return !!this.getCommand(name, hidden); + } + /** + * Get command by name or alias. + * @param name Name or alias of the command. + * @param hidden Include hidden commands. + */ getCommand(name, hidden) { + return this.getBaseCommand(name, hidden) ?? this.getGlobalCommand(name, hidden); + } + /** + * Get base command by name or alias. + * @param name Name or alias of the command. + * @param hidden Include hidden commands. + */ getBaseCommand(name, hidden) { + for (const cmd of this.commands.values()){ + if (cmd._name === name || cmd.aliases.includes(name)) { + return cmd && (hidden || !cmd.isHidden) ? cmd : undefined; + } + } + } + /** + * Get global command by name or alias. + * @param name Name or alias of the command. + * @param hidden Include hidden commands. + */ getGlobalCommand(name, hidden) { + const getGlobalCommand = (parent, noGlobals)=>{ + const cmd = parent.getBaseCommand(name, hidden); + if (!cmd?.isGlobal) { + return parent._parent && getGlobalCommand(parent._parent, noGlobals || parent._noGlobals); + } + if (noGlobals && cmd.getName() !== "help") { + return; + } + return cmd; + }; + return this._parent && getGlobalCommand(this._parent, this._noGlobals); + } + /** + * Remove sub-command by name or alias. + * @param name Name or alias of the command. + */ removeCommand(name) { + const command = this.getBaseCommand(name, true); + if (command) { + this.commands.delete(command._name); + } + return command; + } + /** Get types. */ getTypes() { + return this.getGlobalTypes().concat(this.getBaseTypes()); + } + /** Get base types. */ getBaseTypes() { + return Array.from(this.types.values()); + } + /** Get global types. */ getGlobalTypes() { + const getTypes = (cmd, types = [], names = [])=>{ + if (cmd) { + if (cmd.types.size) { + cmd.types.forEach((type)=>{ + if (type.global && !this.types.has(type.name) && names.indexOf(type.name) === -1) { + names.push(type.name); + types.push(type); + } + }); + } + return getTypes(cmd._parent, types, names); + } + return types; + }; + return getTypes(this._parent); + } + /** + * Get type by name. + * @param name Name of the type. + */ getType(name) { + return this.getBaseType(name) ?? this.getGlobalType(name); + } + /** + * Get base type by name. + * @param name Name of the type. + */ getBaseType(name) { + return this.types.get(name); + } + /** + * Get global type by name. + * @param name Name of the type. + */ getGlobalType(name) { + if (!this._parent) { + return; + } + const cmd = this._parent.getBaseType(name); + if (!cmd?.global) { + return this._parent.getGlobalType(name); + } + return cmd; + } + /** Get completions. */ getCompletions() { + return this.getGlobalCompletions().concat(this.getBaseCompletions()); + } + /** Get base completions. */ getBaseCompletions() { + return Array.from(this.completions.values()); + } + /** Get global completions. */ getGlobalCompletions() { + const getCompletions = (cmd, completions = [], names = [])=>{ + if (cmd) { + if (cmd.completions.size) { + cmd.completions.forEach((completion)=>{ + if (completion.global && !this.completions.has(completion.name) && names.indexOf(completion.name) === -1) { + names.push(completion.name); + completions.push(completion); + } + }); + } + return getCompletions(cmd._parent, completions, names); + } + return completions; + }; + return getCompletions(this._parent); + } + /** + * Get completion by name. + * @param name Name of the completion. + */ getCompletion(name) { + return this.getBaseCompletion(name) ?? this.getGlobalCompletion(name); + } + /** + * Get base completion by name. + * @param name Name of the completion. + */ getBaseCompletion(name) { + return this.completions.get(name); + } + /** + * Get global completions by name. + * @param name Name of the completion. + */ getGlobalCompletion(name) { + if (!this._parent) { + return; + } + const completion = this._parent.getBaseCompletion(name); + if (!completion?.global) { + return this._parent.getGlobalCompletion(name); + } + return completion; + } + /** + * Checks whether the command has environment variables or not. + * @param hidden Include hidden environment variable. + */ hasEnvVars(hidden) { + return this.getEnvVars(hidden).length > 0; + } + /** + * Get environment variables. + * @param hidden Include hidden environment variable. + */ getEnvVars(hidden) { + return this.getGlobalEnvVars(hidden).concat(this.getBaseEnvVars(hidden)); + } + /** + * Get base environment variables. + * @param hidden Include hidden environment variable. + */ getBaseEnvVars(hidden) { + if (!this.envVars.length) { + return []; + } + return hidden ? this.envVars.slice(0) : this.envVars.filter((env)=>!env.hidden); + } + /** + * Get global environment variables. + * @param hidden Include hidden environment variable. + */ getGlobalEnvVars(hidden) { + if (this._noGlobals) { + return []; + } + const getEnvVars = (cmd, envVars = [], names = [])=>{ + if (cmd) { + if (cmd.envVars.length) { + cmd.envVars.forEach((envVar)=>{ + if (envVar.global && !this.envVars.find((env)=>env.names[0] === envVar.names[0]) && names.indexOf(envVar.names[0]) === -1 && (hidden || !envVar.hidden)) { + names.push(envVar.names[0]); + envVars.push(envVar); + } + }); + } + return getEnvVars(cmd._parent, envVars, names); + } + return envVars; + }; + return getEnvVars(this._parent); + } + /** + * Checks whether the command has an environment variable with given name or not. + * @param name Name of the environment variable. + * @param hidden Include hidden environment variable. + */ hasEnvVar(name, hidden) { + return !!this.getEnvVar(name, hidden); + } + /** + * Get environment variable by name. + * @param name Name of the environment variable. + * @param hidden Include hidden environment variable. + */ getEnvVar(name, hidden) { + return this.getBaseEnvVar(name, hidden) ?? this.getGlobalEnvVar(name, hidden); + } + /** + * Get base environment variable by name. + * @param name Name of the environment variable. + * @param hidden Include hidden environment variable. + */ getBaseEnvVar(name, hidden) { + const envVar = this.envVars.find((env)=>env.names.indexOf(name) !== -1); + return envVar && (hidden || !envVar.hidden) ? envVar : undefined; + } + /** + * Get global environment variable by name. + * @param name Name of the environment variable. + * @param hidden Include hidden environment variable. + */ getGlobalEnvVar(name, hidden) { + if (!this._parent || this._noGlobals) { + return; + } + const envVar = this._parent.getBaseEnvVar(name, hidden); + if (!envVar?.global) { + return this._parent.getGlobalEnvVar(name, hidden); + } + return envVar; + } + /** Checks whether the command has examples or not. */ hasExamples() { + return this.examples.length > 0; + } + /** Get all examples. */ getExamples() { + return this.examples; + } + /** Checks whether the command has an example with given name or not. */ hasExample(name) { + return !!this.getExample(name); + } + /** Get example with given name. */ getExample(name) { + return this.examples.find((example)=>example.name === name); + } + getHelpOption() { + return this._helpOption ?? this._parent?.getHelpOption(); + } +} +function isUpgradeCommand(command) { + return command instanceof Command && "getLatestVersion" in command; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC9jb21tYW5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGRlbm8tbGludC1pZ25vcmUtZmlsZSBuby1leHBsaWNpdC1hbnlcbmltcG9ydCB7XG4gIFVua25vd25UeXBlRXJyb3IsXG4gIFZhbGlkYXRpb25FcnJvciBhcyBGbGFnc1ZhbGlkYXRpb25FcnJvcixcbn0gZnJvbSBcIi4uL2ZsYWdzL19lcnJvcnMudHNcIjtcbmltcG9ydCB7IE1pc3NpbmdSZXF1aXJlZEVudlZhckVycm9yIH0gZnJvbSBcIi4vX2Vycm9ycy50c1wiO1xuaW1wb3J0IHsgcGFyc2VGbGFncyB9IGZyb20gXCIuLi9mbGFncy9mbGFncy50c1wiO1xuaW1wb3J0IHR5cGUgeyBQYXJzZUZsYWdzQ29udGV4dCB9IGZyb20gXCIuLi9mbGFncy90eXBlcy50c1wiO1xuaW1wb3J0IHtcbiAgZ2V0RGVzY3JpcHRpb24sXG4gIHBhcnNlQXJndW1lbnRzRGVmaW5pdGlvbixcbiAgc3BsaXRBcmd1bWVudHMsXG59IGZyb20gXCIuL191dGlscy50c1wiO1xuaW1wb3J0IHsgYm9sZCwgYnJpZ2h0Qmx1ZSwgcmVkLCB5ZWxsb3cgfSBmcm9tIFwiLi9kZXBzLnRzXCI7XG5pbXBvcnQge1xuICBDb21tYW5kRXhlY3V0YWJsZU5vdEZvdW5kRXJyb3IsXG4gIENvbW1hbmROb3RGb3VuZEVycm9yLFxuICBEZWZhdWx0Q29tbWFuZE5vdEZvdW5kRXJyb3IsXG4gIER1cGxpY2F0ZUNvbW1hbmRBbGlhc0Vycm9yLFxuICBEdXBsaWNhdGVDb21tYW5kTmFtZUVycm9yLFxuICBEdXBsaWNhdGVDb21wbGV0aW9uRXJyb3IsXG4gIER1cGxpY2F0ZUVudlZhckVycm9yLFxuICBEdXBsaWNhdGVFeGFtcGxlRXJyb3IsXG4gIER1cGxpY2F0ZU9wdGlvbk5hbWVFcnJvcixcbiAgRHVwbGljYXRlVHlwZUVycm9yLFxuICBNaXNzaW5nQXJndW1lbnRFcnJvcixcbiAgTWlzc2luZ0FyZ3VtZW50c0Vycm9yLFxuICBNaXNzaW5nQ29tbWFuZE5hbWVFcnJvcixcbiAgTm9Bcmd1bWVudHNBbGxvd2VkRXJyb3IsXG4gIFRvb01hbnlBcmd1bWVudHNFcnJvcixcbiAgVG9vTWFueUVudlZhclZhbHVlc0Vycm9yLFxuICBVbmV4cGVjdGVkT3B0aW9uYWxFbnZWYXJWYWx1ZUVycm9yLFxuICBVbmV4cGVjdGVkVmFyaWFkaWNFbnZWYXJWYWx1ZUVycm9yLFxuICBVbmtub3duQ29tbWFuZEVycm9yLFxuICBWYWxpZGF0aW9uRXJyb3IsXG59IGZyb20gXCIuL19lcnJvcnMudHNcIjtcbmltcG9ydCB7IERlZmF1bHRWYWx1ZSwgRXJyb3JIYW5kbGVyLCBPcHRpb25WYWx1ZUhhbmRsZXIgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuaW1wb3J0IHsgQm9vbGVhblR5cGUgfSBmcm9tIFwiLi90eXBlcy9ib29sZWFuLnRzXCI7XG5pbXBvcnQgeyBGaWxlVHlwZSB9IGZyb20gXCIuL3R5cGVzL2ZpbGUudHNcIjtcbmltcG9ydCB7IE51bWJlclR5cGUgfSBmcm9tIFwiLi90eXBlcy9udW1iZXIudHNcIjtcbmltcG9ydCB7IFN0cmluZ1R5cGUgfSBmcm9tIFwiLi90eXBlcy9zdHJpbmcudHNcIjtcbmltcG9ydCB7IFR5cGUgfSBmcm9tIFwiLi90eXBlLnRzXCI7XG5pbXBvcnQgeyBIZWxwR2VuZXJhdG9yIH0gZnJvbSBcIi4vaGVscC9faGVscF9nZW5lcmF0b3IudHNcIjtcbmltcG9ydCB0eXBlIHsgSGVscE9wdGlvbnMgfSBmcm9tIFwiLi9oZWxwL19oZWxwX2dlbmVyYXRvci50c1wiO1xuaW1wb3J0IHR5cGUge1xuICBBY3Rpb25IYW5kbGVyLFxuICBBcmd1bWVudCxcbiAgQXJndW1lbnRWYWx1ZSxcbiAgQ29tbWFuZFJlc3VsdCxcbiAgQ29tcGxldGVIYW5kbGVyLFxuICBDb21wbGV0ZU9wdGlvbnMsXG4gIENvbXBsZXRpb24sXG4gIERlc2NyaXB0aW9uLFxuICBFbnZWYXIsXG4gIEVudlZhck9wdGlvbnMsXG4gIEVudlZhclZhbHVlSGFuZGxlcixcbiAgRXhhbXBsZSxcbiAgR2xvYmFsRW52VmFyT3B0aW9ucyxcbiAgR2xvYmFsT3B0aW9uT3B0aW9ucyxcbiAgSGVscEhhbmRsZXIsXG4gIE1hcFR5cGVzLFxuICBPcHRpb24sXG4gIE9wdGlvbk9wdGlvbnMsXG4gIFR5cGVEZWYsXG4gIFR5cGVPcHRpb25zLFxuICBUeXBlT3JUeXBlSGFuZGxlcixcbiAgVmVyc2lvbkhhbmRsZXIsXG59IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5pbXBvcnQgeyBJbnRlZ2VyVHlwZSB9IGZyb20gXCIuL3R5cGVzL2ludGVnZXIudHNcIjtcbmltcG9ydCB7IHVuZGVyc2NvcmVUb0NhbWVsQ2FzZSB9IGZyb20gXCIuLi9mbGFncy9fdXRpbHMudHNcIjtcblxuZXhwb3J0IGNsYXNzIENvbW1hbmQ8XG4gIFRQYXJlbnRDb21tYW5kR2xvYmFscyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdm9pZCA9IHZvaWQsXG4gIFRQYXJlbnRDb21tYW5kVHlwZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHZvaWQgPVxuICAgIFRQYXJlbnRDb21tYW5kR2xvYmFscyBleHRlbmRzIG51bWJlciA/IGFueSA6IHZvaWQsXG4gIFRDb21tYW5kT3B0aW9ucyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdm9pZCA9XG4gICAgVFBhcmVudENvbW1hbmRHbG9iYWxzIGV4dGVuZHMgbnVtYmVyID8gYW55IDogdm9pZCxcbiAgVENvbW1hbmRBcmd1bWVudHMgZXh0ZW5kcyBBcnJheTx1bmtub3duPiA9IFRQYXJlbnRDb21tYW5kR2xvYmFscyBleHRlbmRzXG4gICAgbnVtYmVyID8gYW55IDogW10sXG4gIFRDb21tYW5kR2xvYmFscyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdm9pZCA9XG4gICAgVFBhcmVudENvbW1hbmRHbG9iYWxzIGV4dGVuZHMgbnVtYmVyID8gYW55IDogdm9pZCxcbiAgVENvbW1hbmRUeXBlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdm9pZCA9XG4gICAgVFBhcmVudENvbW1hbmRHbG9iYWxzIGV4dGVuZHMgbnVtYmVyID8gYW55IDoge1xuICAgICAgbnVtYmVyOiBudW1iZXI7XG4gICAgICBpbnRlZ2VyOiBudW1iZXI7XG4gICAgICBzdHJpbmc6IHN0cmluZztcbiAgICAgIGJvb2xlYW46IGJvb2xlYW47XG4gICAgICBmaWxlOiBzdHJpbmc7XG4gICAgfSxcbiAgVENvbW1hbmRHbG9iYWxUeXBlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdm9pZCA9XG4gICAgVFBhcmVudENvbW1hbmRHbG9iYWxzIGV4dGVuZHMgbnVtYmVyID8gYW55IDogdm9pZCxcbiAgVFBhcmVudENvbW1hbmQgZXh0ZW5kcyBDb21tYW5kPGFueT4gfCB1bmRlZmluZWQgPVxuICAgIFRQYXJlbnRDb21tYW5kR2xvYmFscyBleHRlbmRzIG51bWJlciA/IGFueSA6IHVuZGVmaW5lZCxcbj4ge1xuICBwcml2YXRlIHR5cGVzOiBNYXA8c3RyaW5nLCBUeXBlRGVmPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSByYXdBcmdzOiBBcnJheTxzdHJpbmc+ID0gW107XG4gIHByaXZhdGUgbGl0ZXJhbEFyZ3M6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgLy8gQFRPRE86IGdldCBzY3JpcHQgbmFtZTogaHR0cHM6Ly9naXRodWIuY29tL2Rlbm9sYW5kL2Rlbm8vcHVsbC81MDM0XG4gIC8vIHByaXZhdGUgbmFtZTogc3RyaW5nID0gbG9jYXRpb24ucGF0aG5hbWUuc3BsaXQoICcvJyApLnBvcCgpIGFzIHN0cmluZztcbiAgcHJpdmF0ZSBfbmFtZSA9IFwiQ09NTUFORFwiO1xuICBwcml2YXRlIF9wYXJlbnQ/OiBUUGFyZW50Q29tbWFuZDtcbiAgcHJpdmF0ZSBfZ2xvYmFsUGFyZW50PzogQ29tbWFuZDxhbnk+O1xuICBwcml2YXRlIHZlcj86IFZlcnNpb25IYW5kbGVyO1xuICBwcml2YXRlIGRlc2M6IERlc2NyaXB0aW9uID0gXCJcIjtcbiAgcHJpdmF0ZSBfdXNhZ2U/OiBzdHJpbmc7XG4gIHByaXZhdGUgZm4/OiBBY3Rpb25IYW5kbGVyO1xuICBwcml2YXRlIG9wdGlvbnM6IEFycmF5PE9wdGlvbj4gPSBbXTtcbiAgcHJpdmF0ZSBjb21tYW5kczogTWFwPHN0cmluZywgQ29tbWFuZDxhbnk+PiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBleGFtcGxlczogQXJyYXk8RXhhbXBsZT4gPSBbXTtcbiAgcHJpdmF0ZSBlbnZWYXJzOiBBcnJheTxFbnZWYXI+ID0gW107XG4gIHByaXZhdGUgYWxpYXNlczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICBwcml2YXRlIGNvbXBsZXRpb25zOiBNYXA8c3RyaW5nLCBDb21wbGV0aW9uPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBjbWQ6IENvbW1hbmQ8YW55PiA9IHRoaXM7XG4gIHByaXZhdGUgYXJnc0RlZmluaXRpb24/OiBzdHJpbmc7XG4gIHByaXZhdGUgaXNFeGVjdXRhYmxlID0gZmFsc2U7XG4gIHByaXZhdGUgdGhyb3dPbkVycm9yID0gZmFsc2U7XG4gIHByaXZhdGUgX2FsbG93RW1wdHkgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc3RvcEVhcmx5ID0gZmFsc2U7XG4gIHByaXZhdGUgZGVmYXVsdENvbW1hbmQ/OiBzdHJpbmc7XG4gIHByaXZhdGUgX3VzZVJhd0FyZ3MgPSBmYWxzZTtcbiAgcHJpdmF0ZSBhcmdzOiBBcnJheTxBcmd1bWVudD4gPSBbXTtcbiAgcHJpdmF0ZSBpc0hpZGRlbiA9IGZhbHNlO1xuICBwcml2YXRlIGlzR2xvYmFsID0gZmFsc2U7XG4gIHByaXZhdGUgaGFzRGVmYXVsdHMgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfdmVyc2lvbk9wdGlvbnM/OiBEZWZhdWx0T3B0aW9uIHwgZmFsc2U7XG4gIHByaXZhdGUgX2hlbHBPcHRpb25zPzogRGVmYXVsdE9wdGlvbiB8IGZhbHNlO1xuICBwcml2YXRlIF92ZXJzaW9uT3B0aW9uPzogT3B0aW9uO1xuICBwcml2YXRlIF9oZWxwT3B0aW9uPzogT3B0aW9uO1xuICBwcml2YXRlIF9oZWxwPzogSGVscEhhbmRsZXI7XG4gIHByaXZhdGUgX3Nob3VsZEV4aXQ/OiBib29sZWFuO1xuICBwcml2YXRlIF9tZXRhOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIHByaXZhdGUgX2dyb3VwTmFtZT86IHN0cmluZztcbiAgcHJpdmF0ZSBfbm9HbG9iYWxzID0gZmFsc2U7XG4gIHByaXZhdGUgZXJyb3JIYW5kbGVyPzogRXJyb3JIYW5kbGVyO1xuXG4gIC8qKiBEaXNhYmxlIHZlcnNpb24gb3B0aW9uLiAqL1xuICBwdWJsaWMgdmVyc2lvbk9wdGlvbihlbmFibGU6IGZhbHNlKTogdGhpcztcblxuICAvKipcbiAgICogU2V0IGdsb2JhbCB2ZXJzaW9uIG9wdGlvbi5cbiAgICogQHBhcmFtIGZsYWdzIFRoZSBmbGFncyBvZiB0aGUgdmVyc2lvbiBvcHRpb24uXG4gICAqIEBwYXJhbSBkZXNjICBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIHZlcnNpb24gb3B0aW9uLlxuICAgKiBAcGFyYW0gb3B0cyAgVmVyc2lvbiBvcHRpb24gb3B0aW9ucy5cbiAgICovXG4gIHB1YmxpYyB2ZXJzaW9uT3B0aW9uKFxuICAgIGZsYWdzOiBzdHJpbmcsXG4gICAgZGVzYz86IHN0cmluZyxcbiAgICBvcHRzPzpcbiAgICAgICYgT3B0aW9uT3B0aW9uczxcbiAgICAgICAgUGFydGlhbDxUQ29tbWFuZE9wdGlvbnM+LFxuICAgICAgICBUQ29tbWFuZEFyZ3VtZW50cyxcbiAgICAgICAgVENvbW1hbmRHbG9iYWxzLFxuICAgICAgICBUUGFyZW50Q29tbWFuZEdsb2JhbHMsXG4gICAgICAgIFRDb21tYW5kVHlwZXMsXG4gICAgICAgIFRDb21tYW5kR2xvYmFsVHlwZXMsXG4gICAgICAgIFRQYXJlbnRDb21tYW5kVHlwZXMsXG4gICAgICAgIFRQYXJlbnRDb21tYW5kXG4gICAgICA+XG4gICAgICAmIHtcbiAgICAgICAgZ2xvYmFsOiB0cnVlO1xuICAgICAgfSxcbiAgKTogdGhpcztcblxuICAvKipcbiAgICogU2V0IHZlcnNpb24gb3B0aW9uLlxuICAgKiBAcGFyYW0gZmxhZ3MgVGhlIGZsYWdzIG9mIHRoZSB2ZXJzaW9uIG9wdGlvbi5cbiAgICogQHBhcmFtIGRlc2MgIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgdmVyc2lvbiBvcHRpb24uXG4gICAqIEBwYXJhbSBvcHRzICBWZXJzaW9uIG9wdGlvbiBvcHRpb25zLlxuICAgKi9cbiAgcHVibGljIHZlcnNpb25PcHRpb24oXG4gICAgZmxhZ3M6IHN0cmluZyxcbiAgICBkZXNjPzogc3RyaW5nLFxuICAgIG9wdHM/OiBPcHRpb25PcHRpb25zPFxuICAgICAgVENvbW1hbmRPcHRpb25zLFxuICAgICAgVENvbW1hbmRBcmd1bWVudHMsXG4gICAgICBUQ29tbWFuZEdsb2JhbHMsXG4gICAgICBUUGFyZW50Q29tbWFuZEdsb2JhbHMsXG4gICAgICBUQ29tbWFuZFR5cGVzLFxuICAgICAgVENvbW1hbmRHbG9iYWxUeXBlcyxcbiAgICAgIFRQYXJlbnRDb21tYW5kVHlwZXMsXG4gICAgICBUUGFyZW50Q29tbWFuZFxuICAgID4sXG4gICk6IHRoaXM7XG5cbiAgLyoqXG4gICAqIFNldCB2ZXJzaW9uIG9wdGlvbi5cbiAgICogQHBhcmFtIGZsYWdzIFRoZSBmbGFncyBvZiB0aGUgdmVyc2lvbiBvcHRpb24uXG4gICAqIEBwYXJhbSBkZXNjICBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIHZlcnNpb24gb3B0aW9uLlxuICAgKiBAcGFyYW0gb3B0cyAgVGhlIGFjdGlvbiBvZiB0aGUgdmVyc2lvbiBvcHRpb24uXG4gICAqL1xuICBwdWJsaWMgdmVyc2lvbk9wdGlvbihcbiAgICBmbGFnczogc3RyaW5nLFxuICAgIGRlc2M/OiBzdHJpbmcsXG4gICAgb3B0cz86IEFjdGlvbkhhbmRsZXI8XG4gICAgICBUQ29tbWFuZE9wdGlvbnMsXG4gICAgICBUQ29tbWFuZEFyZ3VtZW50cyxcbiAgICAgIFRDb21tYW5kR2xvYmFscyxcbiAgICAgIFRQYXJlbnRDb21tYW5kR2xvYmFscyxcbiAgICAgIFRDb21tYW5kVHlwZXMsXG4gICAgICBUQ29tbWFuZEdsb2JhbFR5cGVzLFxuICAgICAgVFBhcmVudENvbW1hbmRUeXBlcyxcbiAgICAgIFRQYXJlbnRDb21tYW5kXG4gICAgPixcbiAgKTogdGhpcztcblxuICBwdWJsaWMgdmVyc2lvbk9wdGlvbihcbiAgICBmbGFnczogc3RyaW5nIHwgZmFsc2UsXG4gICAgZGVzYz86IHN0cmluZyxcbiAgICBvcHRzPzpcbiAgICAgIHwgQWN0aW9uSGFuZGxlcjxcbiAgICAgICAgVENvbW1hbmRPcHRpb25zLFxuICAgICAgICBUQ29tbWFuZEFyZ3VtZW50cyxcbiAgICAgICAgVENvbW1hbmRHbG9iYWxzLFxuICAgICAgICBUUGFyZW50Q29tbWFuZEdsb2JhbHMsXG4gICAgICAgIFRDb21tYW5kVHlwZXMsXG4gICAgICAgIFRDb21tYW5kR2xvYmFsVHlwZXMsXG4gICAgICAgIFRQYXJlbnRDb21tYW5kVHlwZXMsXG4gICAgICAgIFRQYXJlbnRDb21tYW5kXG4gICAgICA+XG4gICAgICB8IE9wdGlvbk9wdGlvbnM8XG4gICAgICAgIFRDb21tYW5kT3B0aW9ucyxcbiAgICAgICAgVENvbW1hbmRBcmd1bWVudHMsXG4gICAgICAgIFRDb21tYW5kR2xvYmFscyxcbiAgICAgICAgVFBhcmVudENvbW1hbmRHbG9iYWxzLFxuICAgICAgICBUQ29tbWFuZFR5cGVzLFxuICAgICAgICBUQ29tbWFuZEdsb2JhbFR5cGVzLFxuICAgICAgICBUUGFyZW50Q29tbWFuZFR5cGVzLFxuICAgICAgICBUUGFyZW50Q29tbWFuZFxuICAgICAgPlxuICAgICAgfCBPcHRpb25PcHRpb25zPFxuICAgICAgICBQYXJ0aWFsPFRDb21tYW5kT3B0aW9ucz4sXG4gICAgICAgIFRDb21tYW5kQXJndW1lbnRzLFxuICAgICAgICBUQ29tbWFuZEdsb2JhbHMsXG4gICAgICAgIFRQYXJlbnRDb21tYW5kR2xvYmFscyxcbiAgICAgICAgVENvbW1hbmRUeXBlcyxcbiAgICAgICAgVENvbW1hbmRHbG9iYWxUeXBlcyxcbiAgICAgICAgVFBhcmVudENvbW1hbmRUeXBlcyxcbiAgICAgICAgVFBhcmVudENvbW1hbmRcbiAgICAgID5cbiAgICAgICAgJiB7XG4gICAgICAgICAgZ2xvYmFsOiB0cnVlO1xuICAgICAgICB9LFxuICApOiB0aGlzIHtcbiAgICB0aGlzLl92ZXJzaW9uT3B0aW9ucyA9IGZsYWdzID09PSBmYWxzZSA/IGZsYWdzIDoge1xuICAgICAgZmxhZ3MsXG4gICAgICBkZXNjLFxuICAgICAgb3B0czogdHlwZW9mIG9wdHMgPT09IFwiZnVuY3Rpb25cIiA/IHsgYWN0aW9uOiBvcHRzIH0gOiBvcHRzLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogRGlzYWJsZSBoZWxwIG9wdGlvbi4gKi9cbiAgcHVibGljIGhlbHBPcHRpb24oZW5hYmxlOiBmYWxzZSk6IHRoaXM7XG5cbiAgLyoqXG4gICAqIFNldCBnbG9iYWwgaGVscCBvcHRpb24uXG4gICAqIEBwYXJhbSBmbGFncyBUaGUgZmxhZ3Mgb2YgdGhlIGhlbHAgb3B0aW9uLlxuICAgKiBAcGFyYW0gZGVzYyAgVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBoZWxwIG9wdGlvbi5cbiAgICogQHBhcmFtIG9wdHMgIEhlbHAgb3B0aW9uIG9wdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgaGVscE9wdGlvbihcbiAgICBmbGFnczogc3RyaW5nLFxuICAgIGRlc2M/OiBzdHJpbmcsXG4gICAgb3B0cz86XG4gICAgICAmIE9wdGlvbk9wdGlvbnM8XG4gICAgICAgIFBhcnRpYWw8VENvbW1hbmRPcHRpb25zPixcbiAgICAgICAgVENvbW1hbmRBcmd1bWVudHMsXG4gICAgICAgIFRDb21tYW5kR2xvYmFscyxcbiAgICAgICAgVFBhcmVudENvbW1hbmRHbG9iYWxzLFxuICAgICAgICBUQ29tbWFuZFR5cGVzLFxuICAgICAgICBUQ29tbWFuZEdsb2JhbFR5cGVzLFxuICAgICAgICBUUGFyZW50Q29tbWFuZFR5cGVzLFxuICAgICAgICBUUGFyZW50Q29tbWFuZFxuICAgICAgPlxuICAgICAgJiB7XG4gICAgICAgIGdsb2JhbDogdHJ1ZTtcbiAgICAgIH0sXG4gICk6IHRoaXM7XG5cbiAgLyoqXG4gICAqIFNldCBoZWxwIG9wdGlvbi5cbiAgICogQHBhcmFtIGZsYWdzIFRoZSBmbGFncyBvZiB0aGUgaGVscCBvcHRpb24uXG4gICAqIEBwYXJhbSBkZXNjICBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGhlbHAgb3B0aW9uLlxuICAgKiBAcGFyYW0gb3B0cyAgSGVscCBvcHRpb24gb3B0aW9ucy5cbiAgICovXG4gIHB1YmxpYyBoZWxwT3B0aW9uKFxuICAgIGZsYWdzOiBzdHJpbmcsXG4gICAgZGVzYz86IHN0cmluZyxcbiAgICBvcHRzPzogT3B0aW9uT3B0aW9uczxcbiAgICAgIFRDb21tYW5kT3B0aW9ucyxcbiAgICAgIFRDb21tYW5kQXJndW1lbnRzLFxuICAgICAgVENvbW1hbmRHbG9iYWxzLFxuICAgICAgVFBhcmVudENvbW1hbmRHbG9iYWxzLFxuICAgICAgVENvbW1hbmRUeXBlcyxcbiAgICAgIFRDb21tYW5kR2xvYmFsVHlwZXMsXG4gICAgICBUUGFyZW50Q29tbWFuZFR5cGVzLFxuICAgICAgVFBhcmVudENvbW1hbmRcbiAgICA+LFxuICApOiB0aGlzO1xuXG4gIC8qKlxuICAgKiBTZXQgaGVscCBvcHRpb24uXG4gICAqIEBwYXJhbSBmbGFncyBUaGUgZmxhZ3Mgb2YgdGhlIGhlbHAgb3B0aW9uLlxuICAgKiBAcGFyYW0gZGVzYyAgVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBoZWxwIG9wdGlvbi5cbiAgICogQHBhcmFtIG9wdHMgIFRoZSBhY3Rpb24gb2YgdGhlIGhlbHAgb3B0aW9uLlxuICAgKi9cbiAgcHVibGljIGhlbHBPcHRpb24oXG4gICAgZmxhZ3M6IHN0cmluZyxcbiAgICBkZXNjPzogc3RyaW5nLFxuICAgIG9wdHM/OiBBY3Rpb25IYW5kbGVyPFxuICAgICAgVENvbW1hbmRPcHRpb25zLFxuICAgICAgVENvbW1hbmRBcmd1bWVudHMsXG4gICAgICBUQ29tbWFuZEdsb2JhbHMsXG4gICAgICBUUGFyZW50Q29tbWFuZEdsb2JhbHMsXG4gICAgICBUQ29tbWFuZFR5cGVzLFxuICAgICAgVENvbW1hbmRHbG9iYWxUeXBlcyxcbiAgICAgIFRQYXJlbnRDb21tYW5kVHlwZXMsXG4gICAgICBUUGFyZW50Q29tbWFuZFxuICAgID4sXG4gICk6IHRoaXM7XG5cbiAgcHVibGljIGhlbHBPcHRpb24oXG4gICAgZmxhZ3M6IHN0cmluZyB8IGZhbHNlLFxuICAgIGRlc2M/OiBzdHJpbmcsXG4gICAgb3B0cz86XG4gICAgICB8IEFjdGlvbkhhbmRsZXI8XG4gICAgICAgIFRDb21tYW5kT3B0aW9ucyxcbiAgICAgICAgVENvbW1hbmRBcmd1bWVudHMsXG4gICAgICAgIFRDb21tYW5kR2xvYmFscyxcbiAgICAgICAgVFBhcmVudENvbW1hbmRHbG9iYWxzLFxuICAgICAgICBUQ29tbWFuZFR5cGVzLFxuICAgICAgICBUQ29tbWFuZEdsb2JhbFR5cGVzLFxuICAgICAgICBUUGFyZW50Q29tbWFuZFR5cGVzLFxuICAgICAgICBUUGFyZW50Q29tbWFuZFxuICAgICAgPlxuICAgICAgfCBPcHRpb25PcHRpb25zPFxuICAgICAgICBUQ29tbWFuZE9wdGlvbnMsXG4gICAgICAgIFRDb21tYW5kQXJndW1lbnRzLFxuICAgICAgICBUQ29tbWFuZEdsb2JhbHMsXG4gICAgICAgIFRQYXJlbnRDb21tYW5kR2xvYmFscyxcbiAgICAgICAgVENvbW1hbmRUeXBlcyxcbiAgICAgICAgVENvbW1hbmRHbG9iYWxUeXBlcyxcbiAgICAgICAgVFBhcmVudENvbW1hbmRUeXBlcyxcbiAgICAgICAgVFBhcmVudENvbW1hbmRcbiAgICAgID5cbiAgICAgIHwgT3B0aW9uT3B0aW9uczxcbiAgICAgICAgUGFydGlhbDxUQ29tbWFuZE9wdGlvbnM+LFxuICAgICAgICBUQ29tbWFuZEFyZ3VtZW50cyxcbiAgICAgICAgVENvbW1hbmRHbG9iYWxzLFxuICAgICAgICBUUGFyZW50Q29tbWFuZEdsb2JhbHMsXG4gICAgICAgIFRDb21tYW5kVHlwZXMsXG4gICAgICAgIFRDb21tYW5kR2xvYmFsVHlwZXMsXG4gICAgICAgIFRQYXJlbnRDb21tYW5kVHlwZXMsXG4gICAgICAgIFRQYXJlbnRDb21tYW5kXG4gICAgICA+XG4gICAgICAgICYge1xuICAgICAgICAgIGdsb2JhbDogdHJ1ZTtcbiAgICAgICAgfSxcbiAgKTogdGhpcyB7XG4gICAgdGhpcy5faGVscE9wdGlvbnMgPSBmbGFncyA9PT0gZmFsc2UgPyBmbGFncyA6IHtcbiAgICAgIGZsYWdzLFxuICAgICAgZGVzYyxcbiAgICAgIG9wdHM6IHR5cGVvZiBvcHRzID09PSBcImZ1bmN0aW9uXCIgPyB7IGFjdGlvbjogb3B0cyB9IDogb3B0cyxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBuZXcgc3ViLWNvbW1hbmQuXG4gICAqIEBwYXJhbSBuYW1lICAgICAgQ29tbWFuZCBkZWZpbml0aW9uLiBFLmc6IGBteS1jb21tYW5kIDxpbnB1dC1maWxlOnN0cmluZz4gPG91dHB1dC1maWxlOnN0cmluZz5gXG4gICAqIEBwYXJhbSBjbWQgICAgICAgVGhlIG5ldyBjaGlsZCBjb21tYW5kIHRvIHJlZ2lzdGVyLlxuICAgKiBAcGFyYW0gb3ZlcnJpZGUgIE92ZXJyaWRlIGV4aXN0aW5nIGNoaWxkIGNvbW1hbmQuXG4gICAqL1xuICBwdWJsaWMgY29tbWFuZDxcbiAgICBUQ29tbWFuZCBleHRlbmRzIENvbW1hbmQ8XG4gICAgICAoVEdsb2JhbE9wdGlvbnMgJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgfCB2b2lkIHwgdW5kZWZpbmVkLFxuICAgICAgVEdsb2JhbFR5cGVzIHwgdm9pZCB8IHVuZGVmaW5lZCxcbiAgICAgIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdm9pZCxcbiAgICAgIEFycmF5PHVua25vd24+LFxuICAgICAgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB2b2lkLFxuICAgICAgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB2b2lkLFxuICAgICAgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB2b2lkLFxuICAgICAgQ29tbWFuZDxcbiAgICAgICAgVEdsb2JhbE9wdGlvbnMgfCB2b2lkIHwgdW5kZWZpbmVkLFxuICAgICAgICBUR2xvYmFsVHlwZXMgfCB2b2lkIHwgdW5kZWZpbmVkLFxuICAgICAgICBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHZvaWQsXG4gICAgICAgIEFycmF5PHVua25vd24+LFxuICAgICAgICBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHZvaWQsXG4gICAgICAgIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdm9pZCxcbiAgICAgICAgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB2b2lkLFxuICAgICAgICB1bmRlZmluZWRcbiAgICAgID5cbiAgICA+LFxuICAgIFRHbG9iYWxPcHRpb25zXG4gICAgICBleHRlbmRzIChUUGFyZW50Q29tbWFuZCBleHRlbmRzIENvbW1hbmQ8YW55PiA/IFRQYXJlbnRDb21tYW5kR2xvYmFsc1xuICAgICAgICA6IE1lcmdlPFRQYXJlbnRDb21tYW5kR2xvYmFscywgVENvbW1hbmRHbG9iYWxzPiksXG4gICAgVEdsb2JhbFR5cGVzXG4gICAgICBleHRlbmRzIChUUGFyZW50Q29tbWFuZCBleHRlbmRzIENvbW1hbmQ8YW55PiA/IFRQYXJlbnRDb21tYW5kVHlwZXNcbiAgICAgICAgOiBNZXJnZTxUUGFyZW50Q29tbWFuZFR5cGVzLCBUQ29tbWFuZFR5cGVzPiksXG4gID4oXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGNtZDogVENvbW1hbmQsXG4gICAgb3ZlcnJpZGU/OiBib29sZWFuLFxuICApOiBSZXR1cm5UeXBlPFRDb21tYW5kW1wicmVzZXRcIl0+IGV4dGVuZHMgQ29tbWFuZDxcbiAgICBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHZvaWQsXG4gICAgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB2b2lkLFxuICAgIGluZmVyIE9wdGlvbnMsXG4gICAgaW5mZXIgQXJndW1lbnRzLFxuICAgIGluZmVyIEdsb2JhbE9wdGlvbnMsXG4gICAgaW5mZXIgVHlwZXMsXG4gICAgaW5mZXIgR2xvYmFsVHlwZXMsXG4gICAgdW5kZWZpbmVkXG4gID4gPyBDb21tYW5kPFxuICAgICAgVEdsb2JhbE9wdGlvbnMsXG4gICAgICBUR2xvYmFsVHlwZXMsXG4gICAgICBPcHRpb25zLFxuICAgICAgQXJndW1lbnRzLFxuICAgICAgR2xvYmFsT3B0aW9ucyxcbiAgICAgIFR5cGVzLFxuICAgICAgR2xvYmFsVHlwZXMsXG4gICAgICBPbmVPZjxUUGFyZW50Q29tbWFuZCwgdGhpcz5cbiAgICA+XG4gICAgOiBuZXZlcjtcblxuICAvKipcbiAgICogQWRkIG5ldyBzdWItY29tbWFuZC5cbiAgICogQHBhcmFtIG5hbWUgICAgICBDb21tYW5kIGRlZmluaXRpb24uIEUuZzogYG15LWNvbW1hbmQgPGlucHV0LWZpbGU6c3RyaW5nPiA8b3V0cHV0LWZpbGU6c3RyaW5nPmBcbiAgICogQHBhcmFtIGNtZCAgICAgICBUaGUgbmV3IGNoaWxkIGNvbW1hbmQgdG8gcmVnaXN0ZXIuXG4gICAqIEBwYXJhbSBvdmVycmlkZSAgT3ZlcnJpZGUgZXhpc3RpbmcgY2hpbGQgY29tbWFuZC5cbiAgICovXG4gIHB1YmxpYyBjb21tYW5kPFxuICAgIFRDb21tYW5kIGV4dGVuZHMgQ29tbWFuZDxcbiAgICAgIFRHbG9iYWxPcHRpb25zIHwgdm9pZCB8IHVuZGVmaW5lZCxcbiAgICAgIFRHbG9iYWxUeXBlcyB8IHZvaWQgfCB1bmRlZmluZWQsXG4gICAgICBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHZvaWQsXG4gICAgICBBcnJheTx1bmtub3duPixcbiAgICAgIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdm9pZCxcbiAgICAgIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdm9pZCxcbiAgICAgIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdm9pZCxcbiAgICAgIE9uZU9mPFRQYXJlbnRDb21tYW5kLCB0aGlzPiB8IHVuZGVmaW5lZFxuICAgID4sXG4gICAgVEdsb2JhbE9wdGlvbnNcbiAgICAgIGV4dGVuZHMgKFRQYXJlbnRDb21tYW5kIGV4dGVuZHMgQ29tbWFuZDxhbnk+ID8gVFBhcmVudENvbW1hbmRHbG9iYWxzXG4gICAgICAgIDogTWVyZ2U8VFBhcmVudENvbW1hbmRHbG9iYWxzLCBUQ29tbWFuZEdsb2JhbHM+KSxcbiAgICBUR2xvYmFsVHlwZXNcbiAgICAgIGV4dGVuZHMgKFRQYXJlbnRDb21tYW5kIGV4dGVuZHMgQ29tbWFuZDxhbnk+ID8gVFBhcmVudENvbW1hbmRUeXBlc1xuICAgICAgICA6IE1lcmdlPFRQYXJlbnRDb21tYW5kVHlwZXMsIFRDb21tYW5kVHlwZXM+KSxcbiAgPihcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgY21kOiBUQ29tbWFuZCxcbiAgICBvdmVycmlkZT86IGJvb2xlYW4sXG4gICk6IFRDb21tYW5kIGV4dGVuZHMgQ29tbWFuZDxcbiAgICBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHZvaWQsXG4gICAgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB2b2lkLFxuICAgIGluZmVyIE9wdGlvbnMsXG4gICAgaW5mZXIgQXJndW1lbnRzLFxuICAgIGluZmVyIEdsb2JhbE9wdGlvbnMsXG4gICAgaW5mZXIgVHlwZXMsXG4gICAgaW5mZXIgR2xvYmFsVHlwZXMsXG4gICAgT25lT2Y8VFBhcmVudENvbW1hbmQsIHRoaXM+IHwgdW5kZWZpbmVkXG4gID4gPyBDb21tYW5kPFxuICAgICAgVEdsb2JhbE9wdGlvbnMsXG4gICAgICBUR2xvYmFsVHlwZXMsXG4gICAgICBPcHRpb25zLFxuICAgICAgQXJndW1lbnRzLFxuICAgICAgR2xvYmFsT3B0aW9ucyxcbiAgICAgIFR5cGVzLFxuICAgICAgR2xvYmFsVHlwZXMsXG4gICAgICBPbmVPZjxUUGFyZW50Q29tbWFuZCwgdGhpcz5cbiAgICA+XG4gICAgOiBuZXZlcjtcblxuICAvKipcbiAgICogQWRkIG5ldyBzdWItY29tbWFuZC5cbiAgICogQHBhcmFtIG5hbWVBbmRBcmd1bWVudHMgIENvbW1hbmQgZGVmaW5pdGlvbi4gRS5nOiBgbXktY29tbWFuZCA8aW5wdXQtZmlsZTpzdHJpbmc+IDxvdXRwdXQtZmlsZTpzdHJpbmc+YFxuICAgKiBAcGFyYW0gZGVzYyAgICAgICAgICAgICAgVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBuZXcgY2hpbGQgY29tbWFuZC5cbiAgICogQHBhcmFtIG92ZXJyaWRlICAgICAgICAgIE92ZXJyaWRlIGV4aXN0aW5nIGNoaWxkIGNvbW1hbmQuXG4gICAqL1xuICBwdWJsaWMgY29tbWFuZDxcbiAgICBUTmFtZUFuZEFyZ3VtZW50cyBleHRlbmRzIHN0cmluZyxcbiAgICBUQXJndW1lbnRzIGV4dGVuZHMgVHlwZWRDb21tYW5kQXJndW1lbnRzPFxuICAgICAgVE5hbWVBbmRBcmd1bWVudHMsXG4gICAgICBUUGFyZW50Q29tbWFuZCBleHRlbmRzIENvbW1hbmQ8YW55PiA/IFRQYXJlbnRDb21tYW5kVHlwZXNcbiAgICAgICAgOiBNZXJnZTxUUGFyZW50Q29tbWFuZFR5cGVzLCBUQ29tbWFuZEdsb2JhbFR5cGVzPlxuICAgID4sXG4gID4oXG4gICAgbmFtZUFuZEFyZ3VtZW50czogVE5hbWVBbmRBcmd1bWVudHMsXG4gICAgZGVzYz86IHN0cmluZyxcbiAgICBvdmVycmlkZT86IGJvb2xlYW4sXG4gICk6IFRQYXJlbnRDb21tYW5kR2xvYmFscyBleHRlbmRzIG51bWJlciA/IENvbW1hbmQ8YW55PiA6IENvbW1hbmQ8XG4gICAgVFBhcmVudENvbW1hbmQgZXh0ZW5kcyBDb21tYW5kPGFueT4gPyBUUGFyZW50Q29tbWFuZEdsb2JhbHNcbiAgICAgIDogTWVyZ2U8VFBhcmVudENvbW1hbmRHbG9iYWxzLCBUQ29tbWFuZEdsb2JhbHM+LFxuICAgIFRQYXJlbnRDb21tYW5kIGV4dGVuZHMgQ29tbWFuZDxhbnk+ID8gVFBhcmVudENvbW1hbmRUeXBlc1xuICAgICAgOiBNZXJnZTxUUGFyZW50Q29tbWFuZFR5cGVzLCBUQ29tbWFuZEdsb2JhbFR5cGVzPixcbiAgICB2b2lkLFxuICAgIFRBcmd1bWVudHMsXG4gICAgdm9pZCxcbiAgICB2b2lkLFxuICAgIHZvaWQsXG4gICAgT25lT2Y8VFBhcmVudENvbW1hbmQsIHRoaXM+XG4gID47XG5cbiAgLyoqXG4gICAqIEFkZCBuZXcgc3ViLWNvbW1hbmQuXG4gICAqIEBwYXJhbSBuYW1lQW5kQXJndW1lbnRzICBDb21tYW5kIGRlZmluaXRpb24uIEUuZzogYG15LWNvbW1hbmQgPGlucHV0LWZpbGU6c3RyaW5nPiA8b3V0cHV0LWZpbGU6c3RyaW5nPmBcbiAgICogQHBhcmFtIGNtZE9yRGVzY3JpcHRpb24gIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgbmV3IGNoaWxkIGNvbW1hbmQuXG4gICAqIEBwYXJhbSBvdmVycmlkZSAgICAgICAgICBPdmVycmlkZSBleGlzdGluZyBjaGlsZCBjb21tYW5kLlxuICAgKi9cbiAgY29tbWFuZChcbiAgICBuYW1lQW5kQXJndW1lbnRzOiBzdHJpbmcsXG4gICAgY21kT3JEZXNjcmlwdGlvbj86IENvbW1hbmQ8YW55PiB8IHN0cmluZyxcbiAgICBvdmVycmlkZT86IGJvb2xlYW4sXG4gICk6IENvbW1hbmQ8YW55PiB7XG4gICAgdGhpcy5yZXNldCgpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gc3BsaXRBcmd1bWVudHMobmFtZUFuZEFyZ3VtZW50cyk7XG5cbiAgICBjb25zdCBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQgPSByZXN1bHQuZmxhZ3Muc2hpZnQoKTtcbiAgICBjb25zdCBhbGlhc2VzOiBzdHJpbmdbXSA9IHJlc3VsdC5mbGFncztcblxuICAgIGlmICghbmFtZSkge1xuICAgICAgdGhyb3cgbmV3IE1pc3NpbmdDb21tYW5kTmFtZUVycm9yKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZ2V0QmFzZUNvbW1hbmQobmFtZSwgdHJ1ZSkpIHtcbiAgICAgIGlmICghb3ZlcnJpZGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IER1cGxpY2F0ZUNvbW1hbmROYW1lRXJyb3IobmFtZSk7XG4gICAgICB9XG4gICAgICB0aGlzLnJlbW92ZUNvbW1hbmQobmFtZSk7XG4gICAgfVxuXG4gICAgbGV0IGRlc2NyaXB0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGNtZDogQ29tbWFuZDxhbnk+O1xuXG4gICAgaWYgKHR5cGVvZiBjbWRPckRlc2NyaXB0aW9uID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBkZXNjcmlwdGlvbiA9IGNtZE9yRGVzY3JpcHRpb247XG4gICAgfVxuXG4gICAgaWYgKGNtZE9yRGVzY3JpcHRpb24gaW5zdGFuY2VvZiBDb21tYW5kKSB7XG4gICAgICBjbWQgPSBjbWRPckRlc2NyaXB0aW9uLnJlc2V0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNtZCA9IG5ldyBDb21tYW5kKCk7XG4gICAgfVxuXG4gICAgY21kLl9uYW1lID0gbmFtZTtcbiAgICBjbWQuX3BhcmVudCA9IHRoaXM7XG5cbiAgICBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICAgIGNtZC5kZXNjcmlwdGlvbihkZXNjcmlwdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdC50eXBlRGVmaW5pdGlvbikge1xuICAgICAgY21kLmFyZ3VtZW50cyhyZXN1bHQudHlwZURlZmluaXRpb24pO1xuICAgIH1cblxuICAgIGFsaWFzZXMuZm9yRWFjaCgoYWxpYXM6IHN0cmluZykgPT4gY21kLmFsaWFzKGFsaWFzKSk7XG5cbiAgICB0aGlzLmNvbW1hbmRzLnNldChuYW1lLCBjbWQpO1xuXG4gICAgdGhpcy5zZWxlY3QobmFtZSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgbmV3IGNvbW1hbmQgYWxpYXMuXG4gICAqIEBwYXJhbSBhbGlhcyBUaGEgbmFtZSBvZiB0aGUgYWxpYXMuXG4gICAqL1xuICBwdWJsaWMgYWxpYXMoYWxpYXM6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICh0aGlzLmNtZC5fbmFtZSA9PT0gYWxpYXMgfHwgdGhpcy5jbWQuYWxpYXNlcy5pbmNsdWRlcyhhbGlhcykpIHtcbiAgICAgIHRocm93IG5ldyBEdXBsaWNhdGVDb21tYW5kQWxpYXNFcnJvcihhbGlhcyk7XG4gICAgfVxuXG4gICAgdGhpcy5jbWQuYWxpYXNlcy5wdXNoKGFsaWFzKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFJlc2V0IGludGVybmFsIGNvbW1hbmQgcmVmZXJlbmNlIHRvIG1haW4gY29tbWFuZC4gKi9cbiAgcHVibGljIHJlc2V0KCk6IE9uZU9mPFRQYXJlbnRDb21tYW5kLCB0aGlzPiB7XG4gICAgdGhpcy5fZ3JvdXBOYW1lID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY21kID0gdGhpcztcbiAgICByZXR1cm4gdGhpcyBhcyBPbmVPZjxUUGFyZW50Q29tbWFuZCwgdGhpcz47XG4gIH1cblxuICAvKipcbiAgICogU2V0IGludGVybmFsIGNvbW1hbmQgcG9pbnRlciB0byBjaGlsZCBjb21tYW5kIHdpdGggZ2l2ZW4gbmFtZS5cbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGNvbW1hbmQgdG8gc2VsZWN0LlxuICAgKi9cbiAgcHVibGljIHNlbGVjdDxcbiAgICBUT3B0aW9ucyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdm9pZCA9IGFueSxcbiAgICBUQXJndW1lbnRzIGV4dGVuZHMgQXJyYXk8dW5rbm93bj4gPSBhbnksXG4gICAgVEdsb2JhbE9wdGlvbnMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHZvaWQgPSBhbnksXG4gID4oXG4gICAgbmFtZTogc3RyaW5nLFxuICApOiBDb21tYW5kPFxuICAgIFRQYXJlbnRDb21tYW5kR2xvYmFscyxcbiAgICBUUGFyZW50Q29tbWFuZFR5cGVzLFxuICAgIFRPcHRpb25zLFxuICAgIFRBcmd1bWVudHMsXG4gICAgVEdsb2JhbE9wdGlvbnMsXG4gICAgVENvbW1hbmRUeXBlcyxcbiAgICBUQ29tbWFuZEdsb2JhbFR5cGVzLFxuICAgIFRQYXJlbnRDb21tYW5kXG4gID4ge1xuICAgIGNvbnN0IGNtZCA9IHRoaXMuZ2V0QmFzZUNvbW1hbmQobmFtZSwgdHJ1ZSk7XG5cbiAgICBpZiAoIWNtZCkge1xuICAgICAgdGhyb3cgbmV3IENvbW1hbmROb3RGb3VuZEVycm9yKG5hbWUsIHRoaXMuZ2V0QmFzZUNvbW1hbmRzKHRydWUpKTtcbiAgICB9XG5cbiAgICB0aGlzLmNtZCA9IGNtZDtcblxuICAgIHJldHVybiB0aGlzIGFzIENvbW1hbmQ8YW55PjtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKioqKiBTVUIgSEFORExFUiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKiBTZXQgY29tbWFuZCBuYW1lLiAqL1xuICBwdWJsaWMgbmFtZShuYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLmNtZC5fbmFtZSA9IG5hbWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGNvbW1hbmQgdmVyc2lvbi5cbiAgICogQHBhcmFtIHZlcnNpb24gU2VtYW50aWMgdmVyc2lvbiBzdHJpbmcgc3RyaW5nIG9yIG1ldGhvZCB0aGF0IHJldHVybnMgdGhlIHZlcnNpb24gc3RyaW5nLlxuICAgKi9cbiAgcHVibGljIHZlcnNpb24oXG4gICAgdmVyc2lvbjpcbiAgICAgIHwgc3RyaW5nXG4gICAgICB8IFZlcnNpb25IYW5kbGVyPFxuICAgICAgICBQYXJ0aWFsPFRDb21tYW5kT3B0aW9ucz4sXG4gICAgICAgIFBhcnRpYWw8VENvbW1hbmRBcmd1bWVudHM+LFxuICAgICAgICBUQ29tbWFuZEdsb2JhbHMsXG4gICAgICAgIFRQYXJlbnRDb21tYW5kR2xvYmFscyxcbiAgICAgICAgVENvbW1hbmRUeXBlcyxcbiAgICAgICAgVENvbW1hbmRHbG9iYWxUeXBlcyxcbiAgICAgICAgVFBhcmVudENvbW1hbmRUeXBlcyxcbiAgICAgICAgVFBhcmVudENvbW1hbmRcbiAgICAgID4sXG4gICk6IHRoaXMge1xuICAgIGlmICh0eXBlb2YgdmVyc2lvbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgdGhpcy5jbWQudmVyID0gKCkgPT4gdmVyc2lvbjtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ZXJzaW9uID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHRoaXMuY21kLnZlciA9IHZlcnNpb247XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIG1ldGEobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5jbWQuX21ldGFbbmFtZV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBnZXRNZXRhKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHB1YmxpYyBnZXRNZXRhKG5hbWU6IHN0cmluZyk6IHN0cmluZztcbiAgcHVibGljIGdldE1ldGEobmFtZT86IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBzdHJpbmcge1xuICAgIHJldHVybiB0eXBlb2YgbmFtZSA9PT0gXCJ1bmRlZmluZWRcIiA/IHRoaXMuX21ldGEgOiB0aGlzLl9tZXRhW25hbWVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBjb21tYW5kIGhlbHAuXG4gICAqIEBwYXJhbSBoZWxwIEhlbHAgc3RyaW5nLCBtZXRob2QsIG9yIGNvbmZpZyBmb3IgZ2VuZXJhdG9yIHRoYXQgcmV0dXJucyB0aGUgaGVscCBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgaGVscChcbiAgICBoZWxwOlxuICAgICAgfCBzdHJpbmdcbiAgICAgIHwgSGVscEhhbmRsZXI8XG4gICAgICAgIFBhcnRpYWw8VENvbW1hbmRPcHRpb25zPixcbiAgICAgICAgUGFydGlhbDxUQ29tbWFuZEFyZ3VtZW50cz4sXG4gICAgICAgIFRDb21tYW5kR2xvYmFscyxcbiAgICAgICAgVFBhcmVudENvbW1hbmRHbG9iYWxzXG4gICAgICA+XG4gICAgICB8IEhlbHBPcHRpb25zLFxuICApOiB0aGlzIHtcbiAgICBpZiAodHlwZW9mIGhlbHAgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRoaXMuY21kLl9oZWxwID0gKCkgPT4gaGVscDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBoZWxwID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHRoaXMuY21kLl9oZWxwID0gaGVscDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbWQuX2hlbHAgPSAoY21kOiBDb21tYW5kLCBvcHRpb25zOiBIZWxwT3B0aW9ucyk6IHN0cmluZyA9PlxuICAgICAgICBIZWxwR2VuZXJhdG9yLmdlbmVyYXRlKGNtZCwgeyAuLi5oZWxwLCAuLi5vcHRpb25zIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGxvbmcgY29tbWFuZCBkZXNjcmlwdGlvbi5cbiAgICogQHBhcmFtIGRlc2NyaXB0aW9uIFRoZSBjb21tYW5kIGRlc2NyaXB0aW9uLlxuICAgKi9cbiAgcHVibGljIGRlc2NyaXB0aW9uKFxuICAgIGRlc2NyaXB0aW9uOiBEZXNjcmlwdGlvbjxcbiAgICAgIFRDb21tYW5kT3B0aW9ucyxcbiAgICAgIFRDb21tYW5kQXJndW1lbnRzLFxuICAgICAgVENvbW1hbmRHbG9iYWxzLFxuICAgICAgVFBhcmVudENvbW1hbmRHbG9iYWxzLFxuICAgICAgVENvbW1hbmRUeXBlcyxcbiAgICAgIFRDb21tYW5kR2xvYmFsVHlwZXMsXG4gICAgICBUUGFyZW50Q29tbWFuZFR5cGVzLFxuICAgICAgVFBhcmVudENvbW1hbmRcbiAgICA+LFxuICApOiB0aGlzIHtcbiAgICB0aGlzLmNtZC5kZXNjID0gZGVzY3JpcHRpb247XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBjb21tYW5kIHVzYWdlLiBEZWZhdWx0cyB0byBhcmd1bWVudHMuXG4gICAqIEBwYXJhbSB1c2FnZSBUaGUgY29tbWFuZCB1c2FnZS5cbiAgICovXG4gIHB1YmxpYyB1c2FnZSh1c2FnZTogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5jbWQuX3VzYWdlID0gdXNhZ2U7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogSGlkZSBjb21tYW5kIGZyb20gaGVscCwgY29tcGxldGlvbnMsIGV0Yy5cbiAgICovXG4gIHB1YmxpYyBoaWRkZW4oKTogdGhpcyB7XG4gICAgdGhpcy5jbWQuaXNIaWRkZW4gPSB0cnVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIE1ha2UgY29tbWFuZCBnbG9iYWxseSBhdmFpbGFibGUuICovXG4gIHB1YmxpYyBnbG9iYWwoKTogdGhpcyB7XG4gICAgdGhpcy5jbWQuaXNHbG9iYWwgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIE1ha2UgY29tbWFuZCBleGVjdXRhYmxlLiAqL1xuICBwdWJsaWMgZXhlY3V0YWJsZSgpOiB0aGlzIHtcbiAgICB0aGlzLmNtZC5pc0V4ZWN1dGFibGUgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBjb21tYW5kIGFyZ3VtZW50czpcbiAgICpcbiAgICogICA8cmVxdWlyZWRBcmc6c3RyaW5nPiBbb3B0aW9uYWxBcmc6IG51bWJlcl0gWy4uLnJlc3RBcmdzOnN0cmluZ11cbiAgICovXG4gIHB1YmxpYyBhcmd1bWVudHM8XG4gICAgVEFyZ3VtZW50cyBleHRlbmRzIFR5cGVkQXJndW1lbnRzPFxuICAgICAgVEFyZ3MsXG4gICAgICBNZXJnZTxUUGFyZW50Q29tbWFuZFR5cGVzLCBNZXJnZTxUQ29tbWFuZEdsb2JhbFR5cGVzLCBUQ29tbWFuZFR5cGVzPj5cbiAgICA+LFxuICAgIFRBcmdzIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLFxuICA+KFxuICAgIGFyZ3M6IFRBcmdzLFxuICApOiBDb21tYW5kPFxuICAgIFRQYXJlbnRDb21tYW5kR2xvYmFscyxcbiAgICBUUGFyZW50Q29tbWFuZFR5cGVzLFxuICAgIFRDb21tYW5kT3B0aW9ucyxcbiAgICBUQXJndW1lbnRzLFxuICAgIFRDb21tYW5kR2xvYmFscyxcbiAgICBUQ29tbWFuZFR5cGVzLFxuICAgIFRDb21tYW5kR2xvYmFsVHlwZXMsXG4gICAgVFBhcmVudENvbW1hbmRcbiAgPiB7XG4gICAgdGhpcy5jbWQuYXJnc0RlZmluaXRpb24gPSBhcmdzO1xuICAgIHJldHVybiB0aGlzIGFzIENvbW1hbmQ8YW55PjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgY29tbWFuZCBjYWxsYmFjayBtZXRob2QuXG4gICAqIEBwYXJhbSBmbiBDb21tYW5kIGFjdGlvbiBoYW5kbGVyLlxuICAgKi9cbiAgcHVibGljIGFjdGlvbihcbiAgICBmbjogQWN0aW9uSGFuZGxlcjxcbiAgICAgIFRDb21tYW5kT3B0aW9ucyxcbiAgICAgIFRDb21tYW5kQXJndW1lbnRzLFxuICAgICAgVENvbW1hbmRHbG9iYWxzLFxuICAgICAgVFBhcmVudENvbW1hbmRHbG9iYWxzLFxuICAgICAgVENvbW1hbmRUeXBlcyxcbiAgICAgIFRDb21tYW5kR2xvYmFsVHlwZXMsXG4gICAgICBUUGFyZW50Q29tbWFuZFR5cGVzLFxuICAgICAgVFBhcmVudENvbW1hbmRcbiAgICA+LFxuICApOiB0aGlzIHtcbiAgICB0aGlzLmNtZC5mbiA9IGZuO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIERvbid0IHRocm93IGFuIGVycm9yIGlmIHRoZSBjb21tYW5kIHdhcyBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMuXG4gICAqIEBwYXJhbSBhbGxvd0VtcHR5IEVuYWJsZS9kaXNhYmxlIGFsbG93IGVtcHR5LlxuICAgKi9cbiAgLy8gcHVibGljIGFsbG93RW1wdHk8VEFsbG93RW1wdHkgZXh0ZW5kcyBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgLy8gICBhbGxvd0VtcHR5PzogVEFsbG93RW1wdHksXG4gIC8vICk6IGZhbHNlIGV4dGVuZHMgVEFsbG93RW1wdHkgPyB0aGlzXG4gIC8vICAgOiBDb21tYW5kPFxuICAvLyAgICAgUGFydGlhbDxUUGFyZW50Q29tbWFuZEdsb2JhbHM+LFxuICAvLyAgICAgVFBhcmVudENvbW1hbmRUeXBlcyxcbiAgLy8gICAgIFBhcnRpYWw8VENvbW1hbmRPcHRpb25zPixcbiAgLy8gICAgIFRDb21tYW5kQXJndW1lbnRzLFxuICAvLyAgICAgVENvbW1hbmRHbG9iYWxzLFxuICAvLyAgICAgVENvbW1hbmRUeXBlcyxcbiAgLy8gICAgIFRDb21tYW5kR2xvYmFsVHlwZXMsXG4gIC8vICAgICBUUGFyZW50Q29tbWFuZFxuICAvLyAgID4ge1xuICAvLyAgIHRoaXMuY21kLl9hbGxvd0VtcHR5ID0gYWxsb3dFbXB0eSAhPT0gZmFsc2U7XG4gIC8vICAgcmV0dXJuIHRoaXM7XG4gIC8vIH1cblxuICBwdWJsaWMgYWxsb3dFbXB0eTxUQWxsb3dFbXB0eSBleHRlbmRzIGJvb2xlYW4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ+KFxuICAgIGFsbG93RW1wdHk/OiBUQWxsb3dFbXB0eSxcbiAgKTogZmFsc2UgZXh0ZW5kcyBUQWxsb3dFbXB0eSA/IHRoaXNcbiAgICA6IENvbW1hbmQ8XG4gICAgICBQYXJ0aWFsPFRQYXJlbnRDb21tYW5kR2xvYmFscz4sXG4gICAgICBUUGFyZW50Q29tbWFuZFR5cGVzLFxuICAgICAgUGFydGlhbDxUQ29tbWFuZE9wdGlvbnM+LFxuICAgICAgVENvbW1hbmRBcmd1bWVudHMsXG4gICAgICBUQ29tbWFuZEdsb2JhbHMsXG4gICAgICBUQ29tbWFuZFR5cGVzLFxuICAgICAgVENvbW1hbmRHbG9iYWxUeXBlcyxcbiAgICAgIFRQYXJlbnRDb21tYW5kXG4gICAgPiB7XG4gICAgdGhpcy5jbWQuX2FsbG93RW1wdHkgPSBhbGxvd0VtcHR5ICE9PSBmYWxzZTtcbiAgICByZXR1cm4gdGhpcyBhcyBmYWxzZSBleHRlbmRzIFRBbGxvd0VtcHR5ID8gdGhpc1xuICAgICAgOiBDb21tYW5kPFxuICAgICAgICBQYXJ0aWFsPFRQYXJlbnRDb21tYW5kR2xvYmFscz4sXG4gICAgICAgIFRQYXJlbnRDb21tYW5kVHlwZXMsXG4gICAgICAgIFBhcnRpYWw8VENvbW1hbmRPcHRpb25zPixcbiAgICAgICAgVENvbW1hbmRBcmd1bWVudHMsXG4gICAgICAgIFRDb21tYW5kR2xvYmFscyxcbiAgICAgICAgVENvbW1hbmRUeXBlcyxcbiAgICAgICAgVENvbW1hbmRHbG9iYWxUeXBlcyxcbiAgICAgICAgVFBhcmVudENvbW1hbmRcbiAgICAgID47XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlIHN0b3AgZWFybHkuIElmIGVuYWJsZWQsIGFsbCBhcmd1bWVudHMgc3RhcnRpbmcgZnJvbSB0aGUgZmlyc3Qgbm9uXG4gICAqIG9wdGlvbiBhcmd1bWVudCB3aWxsIGJlIHBhc3NlZCBhcyBhcmd1bWVudHMgd2l0aCB0eXBlIHN0cmluZyB0byB0aGUgY29tbWFuZFxuICAgKiBhY3Rpb24gaGFuZGxlci5cbiAgICpcbiAgICogRm9yIGV4YW1wbGU6XG4gICAqICAgICBgY29tbWFuZCAtLWRlYnVnLWxldmVsIHdhcm5pbmcgc2VydmVyIC0tcG9ydCA4MGBcbiAgICpcbiAgICogV2lsbCByZXN1bHQgaW46XG4gICAqICAgICAtIG9wdGlvbnM6IGB7ZGVidWdMZXZlbDogJ3dhcm5pbmcnfWBcbiAgICogICAgIC0gYXJnczogYFsnc2VydmVyJywgJy0tcG9ydCcsICc4MCddYFxuICAgKlxuICAgKiBAcGFyYW0gc3RvcEVhcmx5IEVuYWJsZS9kaXNhYmxlIHN0b3AgZWFybHkuXG4gICAqL1xuICBwdWJsaWMgc3RvcEVhcmx5KHN0b3BFYXJseSA9IHRydWUpOiB0aGlzIHtcbiAgICB0aGlzLmNtZC5fc3RvcEVhcmx5ID0gc3RvcEVhcmx5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc2FibGUgcGFyc2luZyBhcmd1bWVudHMuIElmIGVuYWJsZWQgdGhlIHJhdyBhcmd1bWVudHMgd2lsbCBiZSBwYXNzZWQgdG9cbiAgICogdGhlIGFjdGlvbiBoYW5kbGVyLiBUaGlzIGhhcyBubyBlZmZlY3QgZm9yIHBhcmVudCBvciBjaGlsZCBjb21tYW5kcy4gT25seVxuICAgKiBmb3IgdGhlIGNvbW1hbmQgb24gd2hpY2ggdGhpcyBtZXRob2Qgd2FzIGNhbGxlZC5cbiAgICogQHBhcmFtIHVzZVJhd0FyZ3MgRW5hYmxlL2Rpc2FibGUgcmF3IGFyZ3VtZW50cy5cbiAgICovXG4gIHB1YmxpYyB1c2VSYXdBcmdzKFxuICAgIHVzZVJhd0FyZ3MgPSB0cnVlLFxuICApOiBDb21tYW5kPFxuICAgIHZvaWQsXG4gICAgdm9pZCxcbiAgICB2b2lkLFxuICAgIEFycmF5PHN0cmluZz4sXG4gICAgdm9pZCxcbiAgICB2b2lkLFxuICAgIHZvaWQsXG4gICAgVFBhcmVudENvbW1hbmRcbiAgPiB7XG4gICAgdGhpcy5jbWQuX3VzZVJhd0FyZ3MgPSB1c2VSYXdBcmdzO1xuICAgIHJldHVybiB0aGlzIGFzIENvbW1hbmQ8YW55PjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgZGVmYXVsdCBjb21tYW5kLiBUaGUgZGVmYXVsdCBjb21tYW5kIGlzIGV4ZWN1dGVkIHdoZW4gdGhlIHByb2dyYW1cbiAgICogd2FzIGNhbGxlZCB3aXRob3V0IGFueSBhcmd1bWVudCBhbmQgaWYgbm8gYWN0aW9uIGhhbmRsZXIgaXMgcmVnaXN0ZXJlZC5cbiAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgZGVmYXVsdCBjb21tYW5kLlxuICAgKi9cbiAgcHVibGljIGRlZmF1bHQobmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5jbWQuZGVmYXVsdENvbW1hbmQgPSBuYW1lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGdsb2JhbFR5cGU8XG4gICAgVEhhbmRsZXIgZXh0ZW5kcyBUeXBlT3JUeXBlSGFuZGxlcjx1bmtub3duPixcbiAgICBUTmFtZSBleHRlbmRzIHN0cmluZyA9IHN0cmluZyxcbiAgPihcbiAgICBuYW1lOiBUTmFtZSxcbiAgICBoYW5kbGVyOiBUSGFuZGxlcixcbiAgICBvcHRpb25zPzogT21pdDxUeXBlT3B0aW9ucywgXCJnbG9iYWxcIj4sXG4gICk6IENvbW1hbmQ8XG4gICAgVFBhcmVudENvbW1hbmRHbG9iYWxzLFxuICAgIFRQYXJlbnRDb21tYW5kVHlwZXMsXG4gICAgVENvbW1hbmRPcHRpb25zLFxuICAgIFRDb21tYW5kQXJndW1lbnRzLFxuICAgIFRDb21tYW5kR2xvYmFscyxcbiAgICBUQ29tbWFuZFR5cGVzLFxuICAgIE1lcmdlPFRDb21tYW5kR2xvYmFsVHlwZXMsIFR5cGVkVHlwZTxUTmFtZSwgVEhhbmRsZXI+PixcbiAgICBUUGFyZW50Q29tbWFuZFxuICA+IHtcbiAgICByZXR1cm4gdGhpcy50eXBlKG5hbWUsIGhhbmRsZXIsIHsgLi4ub3B0aW9ucywgZ2xvYmFsOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGN1c3RvbSB0eXBlLlxuICAgKiBAcGFyYW0gbmFtZSAgICBUaGUgbmFtZSBvZiB0aGUgdHlwZS5cbiAgICogQHBhcmFtIGhhbmRsZXIgVGhlIGNhbGxiYWNrIG1ldGhvZCB0byBwYXJzZSB0aGUgdHlwZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgVHlwZSBvcHRpb25zLlxuICAgKi9cbiAgcHVibGljIHR5cGU8XG4gICAgVEhhbmRsZXIgZXh0ZW5kcyBUeXBlT3JUeXBlSGFuZGxlcjx1bmtub3duPixcbiAgICBUTmFtZSBleHRlbmRzIHN0cmluZyA9IHN0cmluZyxcbiAgPihcbiAgICBuYW1lOiBUTmFtZSxcbiAgICBoYW5kbGVyOiBUSGFuZGxlcixcbiAgICBvcHRpb25zPzogVHlwZU9wdGlvbnMsXG4gICk6IENvbW1hbmQ8XG4gICAgVFBhcmVudENvbW1hbmRHbG9iYWxzLFxuICAgIFRQYXJlbnRDb21tYW5kVHlwZXMsXG4gICAgVENvbW1hbmRPcHRpb25zLFxuICAgIFRDb21tYW5kQXJndW1lbnRzLFxuICAgIFRDb21tYW5kR2xvYmFscyxcbiAgICBNZXJnZTxUQ29tbWFuZFR5cGVzLCBUeXBlZFR5cGU8VE5hbWUsIFRIYW5kbGVyPj4sXG4gICAgVENvbW1hbmRHbG9iYWxUeXBlcyxcbiAgICBUUGFyZW50Q29tbWFuZFxuICA+IHtcbiAgICBpZiAodGhpcy5jbWQudHlwZXMuZ2V0KG5hbWUpICYmICFvcHRpb25zPy5vdmVycmlkZSkge1xuICAgICAgdGhyb3cgbmV3IER1cGxpY2F0ZVR5cGVFcnJvcihuYW1lKTtcbiAgICB9XG5cbiAgICB0aGlzLmNtZC50eXBlcy5zZXQobmFtZSwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG5hbWUsXG4gICAgICBoYW5kbGVyOiBoYW5kbGVyIGFzIFR5cGVPclR5cGVIYW5kbGVyPHVua25vd24+LFxuICAgIH0pO1xuXG4gICAgaWYgKFxuICAgICAgaGFuZGxlciBpbnN0YW5jZW9mIFR5cGUgJiZcbiAgICAgICh0eXBlb2YgaGFuZGxlci5jb21wbGV0ZSAhPT0gXCJ1bmRlZmluZWRcIiB8fFxuICAgICAgICB0eXBlb2YgaGFuZGxlci52YWx1ZXMgIT09IFwidW5kZWZpbmVkXCIpXG4gICAgKSB7XG4gICAgICBjb25zdCBjb21wbGV0ZUhhbmRsZXI6IENvbXBsZXRlSGFuZGxlciA9IChcbiAgICAgICAgY21kOiBDb21tYW5kLFxuICAgICAgICBwYXJlbnQ/OiBDb21tYW5kLFxuICAgICAgKSA9PiBoYW5kbGVyLmNvbXBsZXRlPy4oY21kLCBwYXJlbnQpIHx8IFtdO1xuICAgICAgdGhpcy5jb21wbGV0ZShuYW1lLCBjb21wbGV0ZUhhbmRsZXIsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzIGFzIENvbW1hbmQ8YW55PjtcbiAgfVxuXG4gIHB1YmxpYyBnbG9iYWxDb21wbGV0ZShcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgY29tcGxldGU6IENvbXBsZXRlSGFuZGxlcixcbiAgICBvcHRpb25zPzogT21pdDxDb21wbGV0ZU9wdGlvbnMsIFwiZ2xvYmFsXCI+LFxuICApOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5jb21wbGV0ZShuYW1lLCBjb21wbGV0ZSwgeyAuLi5vcHRpb25zLCBnbG9iYWw6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgY29tbWFuZCBzcGVjaWZpYyBjdXN0b20gdHlwZS5cbiAgICogQHBhcmFtIG5hbWUgICAgICBUaGUgbmFtZSBvZiB0aGUgY29tcGxldGlvbi5cbiAgICogQHBhcmFtIGNvbXBsZXRlICBUaGUgY2FsbGJhY2sgbWV0aG9kIHRvIGNvbXBsZXRlIHRoZSB0eXBlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAgIENvbXBsZXRlIG9wdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgY29tcGxldGUoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGNvbXBsZXRlOiBDb21wbGV0ZUhhbmRsZXI8XG4gICAgICBQYXJ0aWFsPFRDb21tYW5kT3B0aW9ucz4sXG4gICAgICBQYXJ0aWFsPFRDb21tYW5kQXJndW1lbnRzPixcbiAgICAgIFRDb21tYW5kR2xvYmFscyxcbiAgICAgIFRQYXJlbnRDb21tYW5kR2xvYmFscyxcbiAgICAgIFRDb21tYW5kVHlwZXMsXG4gICAgICBUQ29tbWFuZEdsb2JhbFR5cGVzLFxuICAgICAgVFBhcmVudENvbW1hbmRUeXBlcyxcbiAgICAgIGFueVxuICAgID4sXG4gICAgb3B0aW9uczogQ29tcGxldGVPcHRpb25zICYgeyBnbG9iYWw6IGJvb2xlYW4gfSxcbiAgKTogdGhpcztcbiAgcHVibGljIGNvbXBsZXRlKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBjb21wbGV0ZTogQ29tcGxldGVIYW5kbGVyPFxuICAgICAgVENvbW1hbmRPcHRpb25zLFxuICAgICAgVENvbW1hbmRBcmd1bWVudHMsXG4gICAgICBUQ29tbWFuZEdsb2JhbHMsXG4gICAgICBUUGFyZW50Q29tbWFuZEdsb2JhbHMsXG4gICAgICBUQ29tbWFuZFR5cGVzLFxuICAgICAgVENvbW1hbmRHbG9iYWxUeXBlcyxcbiAgICAgIFRQYXJlbnRDb21tYW5kVHlwZXMsXG4gICAgICBUUGFyZW50Q29tbWFuZFxuICAgID4sXG4gICAgb3B0aW9ucz86IENvbXBsZXRlT3B0aW9ucyxcbiAgKTogdGhpcztcblxuICBwdWJsaWMgY29tcGxldGUoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGNvbXBsZXRlOlxuICAgICAgfCBDb21wbGV0ZUhhbmRsZXI8XG4gICAgICAgIFRDb21tYW5kT3B0aW9ucyxcbiAgICAgICAgVENvbW1hbmRBcmd1bWVudHMsXG4gICAgICAgIFRDb21tYW5kR2xvYmFscyxcbiAgICAgICAgVFBhcmVudENvbW1hbmRHbG9iYWxzLFxuICAgICAgICBUQ29tbWFuZFR5cGVzLFxuICAgICAgICBUQ29tbWFuZEdsb2JhbFR5cGVzLFxuICAgICAgICBUUGFyZW50Q29tbWFuZFR5cGVzLFxuICAgICAgICBUUGFyZW50Q29tbWFuZFxuICAgICAgPlxuICAgICAgfCBDb21wbGV0ZUhhbmRsZXI8XG4gICAgICAgIFBhcnRpYWw8VENvbW1hbmRPcHRpb25zPixcbiAgICAgICAgUGFydGlhbDxUQ29tbWFuZEFyZ3VtZW50cz4sXG4gICAgICAgIFRDb21tYW5kR2xvYmFscyxcbiAgICAgICAgVFBhcmVudENvbW1hbmRHbG9iYWxzLFxuICAgICAgICBUQ29tbWFuZFR5cGVzLFxuICAgICAgICBUQ29tbWFuZEdsb2JhbFR5cGVzLFxuICAgICAgICBUUGFyZW50Q29tbWFuZFR5cGVzLFxuICAgICAgICBhbnlcbiAgICAgID4sXG4gICAgb3B0aW9ucz86IENvbXBsZXRlT3B0aW9ucyxcbiAgKTogdGhpcyB7XG4gICAgaWYgKHRoaXMuY21kLmNvbXBsZXRpb25zLmhhcyhuYW1lKSAmJiAhb3B0aW9ucz8ub3ZlcnJpZGUpIHtcbiAgICAgIHRocm93IG5ldyBEdXBsaWNhdGVDb21wbGV0aW9uRXJyb3IobmFtZSk7XG4gICAgfVxuXG4gICAgdGhpcy5jbWQuY29tcGxldGlvbnMuc2V0KG5hbWUsIHtcbiAgICAgIG5hbWUsXG4gICAgICBjb21wbGV0ZSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaHJvdyB2YWxpZGF0aW9uIGVycm9ycyBpbnN0ZWFkIG9mIGNhbGxpbmcgYERlbm8uZXhpdCgpYCB0byBoYW5kbGVcbiAgICogdmFsaWRhdGlvbiBlcnJvcnMgbWFudWFsbHkuXG4gICAqXG4gICAqIEEgdmFsaWRhdGlvbiBlcnJvciBpcyB0aHJvd24gd2hlbiB0aGUgY29tbWFuZCBpcyB3cm9uZ2x5IHVzZWQgYnkgdGhlIHVzZXIuXG4gICAqIEZvciBleGFtcGxlOiBJZiB0aGUgdXNlciBwYXNzZXMgc29tZSBpbnZhbGlkIG9wdGlvbnMgb3IgYXJndW1lbnRzIHRvIHRoZVxuICAgKiBjb21tYW5kLlxuICAgKlxuICAgKiBUaGlzIGhhcyBubyBlZmZlY3QgZm9yIHBhcmVudCBjb21tYW5kcy4gT25seSBmb3IgdGhlIGNvbW1hbmQgb24gd2hpY2ggdGhpc1xuICAgKiBtZXRob2Qgd2FzIGNhbGxlZCBhbmQgYWxsIGNoaWxkIGNvbW1hbmRzLlxuICAgKlxuICAgKiAqKkV4YW1wbGU6KipcbiAgICpcbiAgICogYGBgXG4gICAqIHRyeSB7XG4gICAqICAgY21kLnBhcnNlKCk7XG4gICAqIH0gY2F0Y2goZXJyb3IpIHtcbiAgICogICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBWYWxpZGF0aW9uRXJyb3IpIHtcbiAgICogICAgIGNtZC5zaG93SGVscCgpO1xuICAgKiAgICAgRGVuby5leGl0KDEpO1xuICAgKiAgIH1cbiAgICogICB0aHJvdyBlcnJvcjtcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogQHNlZSBWYWxpZGF0aW9uRXJyb3JcbiAgICovXG4gIHB1YmxpYyB0aHJvd0Vycm9ycygpOiB0aGlzIHtcbiAgICB0aGlzLmNtZC50aHJvd09uRXJyb3IgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGVycm9yKGhhbmRsZXI6IEVycm9ySGFuZGxlcik6IHRoaXMge1xuICAgIHRoaXMuY21kLmVycm9ySGFuZGxlciA9IGhhbmRsZXI7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcml2YXRlIGdldEVycm9ySGFuZGxlcigpOiBFcnJvckhhbmRsZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmVycm9ySGFuZGxlciA/PyB0aGlzLl9wYXJlbnQ/LmVycm9ySGFuZGxlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYW1lIGFzIGAudGhyb3dFcnJvcnMoKWAgYnV0IGFsc28gcHJldmVudHMgY2FsbGluZyBgRGVuby5leGl0YCBhZnRlclxuICAgKiBwcmludGluZyBoZWxwIG9yIHZlcnNpb24gd2l0aCB0aGUgLS1oZWxwIGFuZCAtLXZlcnNpb24gb3B0aW9uLlxuICAgKi9cbiAgcHVibGljIG5vRXhpdCgpOiB0aGlzIHtcbiAgICB0aGlzLmNtZC5fc2hvdWxkRXhpdCA9IGZhbHNlO1xuICAgIHRoaXMudGhyb3dFcnJvcnMoKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlIGluaGVyaXRpbmcgZ2xvYmFsIGNvbW1hbmRzLCBvcHRpb25zIGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZnJvbVxuICAgKiBwYXJlbnQgY29tbWFuZHMuXG4gICAqL1xuICBwdWJsaWMgbm9HbG9iYWxzKCk6IHRoaXMge1xuICAgIHRoaXMuY21kLl9ub0dsb2JhbHMgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIENoZWNrIHdoZXRoZXIgdGhlIGNvbW1hbmQgc2hvdWxkIHRocm93IGVycm9ycyBvciBleGl0LiAqL1xuICBwcm90ZWN0ZWQgc2hvdWxkVGhyb3dFcnJvcnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGhyb3dPbkVycm9yIHx8ICEhdGhpcy5fcGFyZW50Py5zaG91bGRUaHJvd0Vycm9ycygpO1xuICB9XG5cbiAgLyoqIENoZWNrIHdoZXRoZXIgdGhlIGNvbW1hbmQgc2hvdWxkIGV4aXQgYWZ0ZXIgcHJpbnRpbmcgaGVscCBvciB2ZXJzaW9uLiAqL1xuICBwcm90ZWN0ZWQgc2hvdWxkRXhpdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2hvdWxkRXhpdCA/PyB0aGlzLl9wYXJlbnQ/LnNob3VsZEV4aXQoKSA/PyB0cnVlO1xuICB9XG5cbiAgcHVibGljIGdsb2JhbE9wdGlvbjxcbiAgICBURmxhZ3MgZXh0ZW5kcyBzdHJpbmcsXG4gICAgVEdsb2JhbE9wdGlvbnMgZXh0ZW5kcyBUeXBlZE9wdGlvbjxcbiAgICAgIFRGbGFncyxcbiAgICAgIFRDb21tYW5kT3B0aW9ucyxcbiAgICAgIE1lcmdlPFRQYXJlbnRDb21tYW5kVHlwZXMsIE1lcmdlPFRDb21tYW5kR2xvYmFsVHlwZXMsIFRDb21tYW5kVHlwZXM+PixcbiAgICAgIHVuZGVmaW5lZCBleHRlbmRzIFRDb25mbGljdHMgPyBUUmVxdWlyZWQgOiBmYWxzZSxcbiAgICAgIFREZWZhdWx0VmFsdWVcbiAgICA+LFxuICAgIFRNYXBwZWRHbG9iYWxPcHRpb25zIGV4dGVuZHMgTWFwVmFsdWU8XG4gICAgICBUR2xvYmFsT3B0aW9ucyxcbiAgICAgIFRNYXBwZWRWYWx1ZSxcbiAgICAgIFRDb2xsZWN0XG4gICAgPixcbiAgICBUUmVxdWlyZWQgZXh0ZW5kcyBPcHRpb25PcHRpb25zW1wicmVxdWlyZWRcIl0gPSB1bmRlZmluZWQsXG4gICAgVENvbGxlY3QgZXh0ZW5kcyBPcHRpb25PcHRpb25zW1wiY29sbGVjdFwiXSA9IHVuZGVmaW5lZCxcbiAgICBUQ29uZmxpY3RzIGV4dGVuZHMgT3B0aW9uT3B0aW9uc1tcImNvbmZsaWN0c1wiXSA9IHVuZGVmaW5lZCxcbiAgICBURGVmYXVsdFZhbHVlID0gdW5kZWZpbmVkLFxuICAgIFRNYXBwZWRWYWx1ZSA9IHVuZGVmaW5lZCxcbiAgPihcbiAgICBmbGFnczogVEZsYWdzLFxuICAgIGRlc2M6IHN0cmluZyxcbiAgICBvcHRzPzpcbiAgICAgIHwgT21pdDxcbiAgICAgICAgR2xvYmFsT3B0aW9uT3B0aW9uczxcbiAgICAgICAgICBQYXJ0aWFsPFRDb21tYW5kT3B0aW9ucz4sXG4gICAgICAgICAgVENvbW1hbmRBcmd1bWVudHMsXG4gICAgICAgICAgTWVyZ2VPcHRpb25zPFRGbGFncywgVENvbW1hbmRHbG9iYWxzLCBUR2xvYmFsT3B0aW9ucz4sXG4gICAgICAgICAgVFBhcmVudENvbW1hbmRHbG9iYWxzLFxuICAgICAgICAgIFRDb21tYW5kVHlwZXMsXG4gICAgICAgICAgVENvbW1hbmRHbG9iYWxUeXBlcyxcbiAgICAgICAgICBUUGFyZW50Q29tbWFuZFR5cGVzLFxuICAgICAgICAgIFRQYXJlbnRDb21tYW5kXG4gICAgICAgID4sXG4gICAgICAgIFwidmFsdWVcIlxuICAgICAgPlxuICAgICAgICAmIHtcbiAgICAgICAgICBkZWZhdWx0PzogRGVmYXVsdFZhbHVlPFREZWZhdWx0VmFsdWU+O1xuICAgICAgICAgIHJlcXVpcmVkPzogVFJlcXVpcmVkO1xuICAgICAgICAgIGNvbGxlY3Q/OiBUQ29sbGVjdDtcbiAgICAgICAgICB2YWx1ZT86IE9wdGlvblZhbHVlSGFuZGxlcjxcbiAgICAgICAgICAgIE1hcFR5cGVzPFZhbHVlT2Y8VEdsb2JhbE9wdGlvbnM+PixcbiAgICAgICAgICAgIFRNYXBwZWRWYWx1ZVxuICAgICAgICAgID47XG4gICAgICAgIH1cbiAgICAgIHwgT3B0aW9uVmFsdWVIYW5kbGVyPE1hcFR5cGVzPFZhbHVlT2Y8VEdsb2JhbE9wdGlvbnM+PiwgVE1hcHBlZFZhbHVlPixcbiAgKTogQ29tbWFuZDxcbiAgICBUUGFyZW50Q29tbWFuZEdsb2JhbHMsXG4gICAgVFBhcmVudENvbW1hbmRUeXBlcyxcbiAgICBUQ29tbWFuZE9wdGlvbnMsXG4gICAgVENvbW1hbmRBcmd1bWVudHMsXG4gICAgTWVyZ2VPcHRpb25zPFRGbGFncywgVENvbW1hbmRHbG9iYWxzLCBUTWFwcGVkR2xvYmFsT3B0aW9ucz4sXG4gICAgVENvbW1hbmRUeXBlcyxcbiAgICBUQ29tbWFuZEdsb2JhbFR5cGVzLFxuICAgIFRQYXJlbnRDb21tYW5kXG4gID4ge1xuICAgIGlmICh0eXBlb2Ygb3B0cyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb24oXG4gICAgICAgIGZsYWdzLFxuICAgICAgICBkZXNjLFxuICAgICAgICB7IHZhbHVlOiBvcHRzLCBnbG9iYWw6IHRydWUgfSBhcyBPcHRpb25PcHRpb25zLFxuICAgICAgKSBhcyBDb21tYW5kPGFueT47XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm9wdGlvbihcbiAgICAgIGZsYWdzLFxuICAgICAgZGVzYyxcbiAgICAgIHsgLi4ub3B0cywgZ2xvYmFsOiB0cnVlIH0gYXMgT3B0aW9uT3B0aW9ucyxcbiAgICApIGFzIENvbW1hbmQ8YW55PjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGUgZ3JvdXBpbmcgb2Ygb3B0aW9ucyBhbmQgc2V0IHRoZSBuYW1lIG9mIHRoZSBncm91cC5cbiAgICogQWxsIG9wdGlvbiB3aGljaCBhcmUgYWRkZWQgYWZ0ZXIgY2FsbGluZyB0aGUgYC5ncm91cCgpYCBtZXRob2Qgd2lsbCBiZVxuICAgKiBncm91cGVkIGluIHRoZSBoZWxwIG91dHB1dC4gSWYgdGhlIGAuZ3JvdXAoKWAgbWV0aG9kIGNhbiBiZSB1c2UgbXVsdGlwbGVcbiAgICogdGltZXMgdG8gY3JlYXRlIG1vcmUgZ3JvdXBzLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgb3B0aW9uIGdyb3VwLlxuICAgKi9cbiAgcHVibGljIGdyb3VwKG5hbWU6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuY21kLl9ncm91cE5hbWUgPSBuYW1lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIG5ldyBvcHRpb24uXG4gICAqIEBwYXJhbSBmbGFncyBGbGFncyBzdHJpbmcgZS5nOiAtaCwgLS1oZWxwLCAtLW1hbnVhbCA8cmVxdWlyZWRBcmc6c3RyaW5nPiBbb3B0aW9uYWxBcmc6bnVtYmVyXSBbLi4ucmVzdEFyZ3M6c3RyaW5nXVxuICAgKiBAcGFyYW0gZGVzYyBGbGFnIGRlc2NyaXB0aW9uLlxuICAgKiBAcGFyYW0gb3B0cyBGbGFnIG9wdGlvbnMgb3IgY3VzdG9tIGhhbmRsZXIgZm9yIHByb2Nlc3NpbmcgZmxhZyB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBvcHRpb248XG4gICAgVEZsYWdzIGV4dGVuZHMgc3RyaW5nLFxuICAgIFRHbG9iYWxPcHRpb25zIGV4dGVuZHMgVHlwZWRPcHRpb248XG4gICAgICBURmxhZ3MsXG4gICAgICBUQ29tbWFuZE9wdGlvbnMsXG4gICAgICBNZXJnZTxUUGFyZW50Q29tbWFuZFR5cGVzLCBNZXJnZTxUQ29tbWFuZEdsb2JhbFR5cGVzLCBUQ29tbWFuZFR5cGVzPj4sXG4gICAgICB1bmRlZmluZWQgZXh0ZW5kcyBUQ29uZmxpY3RzID8gVFJlcXVpcmVkIDogZmFsc2UsXG4gICAgICBURGVmYXVsdFxuICAgID4sXG4gICAgVE1hcHBlZEdsb2JhbE9wdGlvbnMgZXh0ZW5kcyBNYXBWYWx1ZTxcbiAgICAgIFRHbG9iYWxPcHRpb25zLFxuICAgICAgVE1hcHBlZFZhbHVlLFxuICAgICAgVENvbGxlY3RcbiAgICA+LFxuICAgIFRSZXF1aXJlZCBleHRlbmRzIE9wdGlvbk9wdGlvbnNbXCJyZXF1aXJlZFwiXSA9IHVuZGVmaW5lZCxcbiAgICBUQ29sbGVjdCBleHRlbmRzIE9wdGlvbk9wdGlvbnNbXCJjb2xsZWN0XCJdID0gdW5kZWZpbmVkLFxuICAgIFRDb25mbGljdHMgZXh0ZW5kcyBPcHRpb25PcHRpb25zW1wiY29uZmxpY3RzXCJdID0gdW5kZWZpbmVkLFxuICAgIFREZWZhdWx0ID0gdW5kZWZpbmVkLFxuICAgIFRNYXBwZWRWYWx1ZSA9IHVuZGVmaW5lZCxcbiAgPihcbiAgICBmbGFnczogVEZsYWdzLFxuICAgIGRlc2M6IHN0cmluZyxcbiAgICBvcHRzOlxuICAgICAgfCBPbWl0PFxuICAgICAgICBPcHRpb25PcHRpb25zPFxuICAgICAgICAgIFBhcnRpYWw8VENvbW1hbmRPcHRpb25zPixcbiAgICAgICAgICBUQ29tbWFuZEFyZ3VtZW50cyxcbiAgICAgICAgICBNZXJnZU9wdGlvbnM8VEZsYWdzLCBUQ29tbWFuZEdsb2JhbHMsIFRHbG9iYWxPcHRpb25zPixcbiAgICAgICAgICBUUGFyZW50Q29tbWFuZEdsb2JhbHMsXG4gICAgICAgICAgVENvbW1hbmRUeXBlcyxcbiAgICAgICAgICBUQ29tbWFuZEdsb2JhbFR5cGVzLFxuICAgICAgICAgIFRQYXJlbnRDb21tYW5kVHlwZXMsXG4gICAgICAgICAgVFBhcmVudENvbW1hbmRcbiAgICAgICAgPixcbiAgICAgICAgXCJ2YWx1ZVwiXG4gICAgICA+XG4gICAgICAgICYge1xuICAgICAgICAgIGdsb2JhbDogdHJ1ZTtcbiAgICAgICAgICBkZWZhdWx0PzogRGVmYXVsdFZhbHVlPFREZWZhdWx0PjtcbiAgICAgICAgICByZXF1aXJlZD86IFRSZXF1aXJlZDtcbiAgICAgICAgICBjb2xsZWN0PzogVENvbGxlY3Q7XG4gICAgICAgICAgdmFsdWU/OiBPcHRpb25WYWx1ZUhhbmRsZXI8XG4gICAgICAgICAgICBNYXBUeXBlczxWYWx1ZU9mPFRHbG9iYWxPcHRpb25zPj4sXG4gICAgICAgICAgICBUTWFwcGVkVmFsdWVcbiAgICAgICAgICA+O1xuICAgICAgICB9XG4gICAgICB8IE9wdGlvblZhbHVlSGFuZGxlcjxNYXBUeXBlczxWYWx1ZU9mPFRHbG9iYWxPcHRpb25zPj4sIFRNYXBwZWRWYWx1ZT4sXG4gICk6IENvbW1hbmQ8XG4gICAgVFBhcmVudENvbW1hbmRHbG9iYWxzLFxuICAgIFRQYXJlbnRDb21tYW5kVHlwZXMsXG4gICAgVENvbW1hbmRPcHRpb25zLFxuICAgIFRDb21tYW5kQXJndW1lbnRzLFxuICAgIE1lcmdlT3B0aW9uczxURmxhZ3MsIFRDb21tYW5kR2xvYmFscywgVE1hcHBlZEdsb2JhbE9wdGlvbnM+LFxuICAgIFRDb21tYW5kVHlwZXMsXG4gICAgVENvbW1hbmRHbG9iYWxUeXBlcyxcbiAgICBUUGFyZW50Q29tbWFuZFxuICA+O1xuXG4gIHB1YmxpYyBvcHRpb248XG4gICAgVEZsYWdzIGV4dGVuZHMgc3RyaW5nLFxuICAgIFRPcHRpb25zIGV4dGVuZHMgVHlwZWRPcHRpb248XG4gICAgICBURmxhZ3MsXG4gICAgICBUQ29tbWFuZE9wdGlvbnMsXG4gICAgICBNZXJnZTxUUGFyZW50Q29tbWFuZFR5cGVzLCBNZXJnZTxUQ29tbWFuZEdsb2JhbFR5cGVzLCBUQ29tbWFuZFR5cGVzPj4sXG4gICAgICB1bmRlZmluZWQgZXh0ZW5kcyBUQ29uZmxpY3RzID8gVFJlcXVpcmVkIDogZmFsc2UsXG4gICAgICBURGVmYXVsdFZhbHVlXG4gICAgPixcbiAgICBUTWFwcGVkT3B0aW9ucyBleHRlbmRzIE1hcFZhbHVlPFRPcHRpb25zLCBUTWFwcGVkVmFsdWUsIFRDb2xsZWN0PixcbiAgICBUUmVxdWlyZWQgZXh0ZW5kcyBPcHRpb25PcHRpb25zW1wicmVxdWlyZWRcIl0gPSB1bmRlZmluZWQsXG4gICAgVENvbGxlY3QgZXh0ZW5kcyBPcHRpb25PcHRpb25zW1wiY29sbGVjdFwiXSA9IHVuZGVmaW5lZCxcbiAgICBUQ29uZmxpY3RzIGV4dGVuZHMgT3B0aW9uT3B0aW9uc1tcImNvbmZsaWN0c1wiXSA9IHVuZGVmaW5lZCxcbiAgICBURGVmYXVsdFZhbHVlID0gdW5kZWZpbmVkLFxuICAgIFRNYXBwZWRWYWx1ZSA9IHVuZGVmaW5lZCxcbiAgPihcbiAgICBmbGFnczogVEZsYWdzLFxuICAgIGRlc2M6IHN0cmluZyxcbiAgICBvcHRzPzpcbiAgICAgIHwgT21pdDxcbiAgICAgICAgT3B0aW9uT3B0aW9uczxcbiAgICAgICAgICBNZXJnZU9wdGlvbnM8VEZsYWdzLCBUQ29tbWFuZE9wdGlvbnMsIFRNYXBwZWRPcHRpb25zPixcbiAgICAgICAgICBUQ29tbWFuZEFyZ3VtZW50cyxcbiAgICAgICAgICBUQ29tbWFuZEdsb2JhbHMsXG4gICAgICAgICAgVFBhcmVudENvbW1hbmRHbG9iYWxzLFxuICAgICAgICAgIFRDb21tYW5kVHlwZXMsXG4gICAgICAgICAgVENvbW1hbmRHbG9iYWxUeXBlcyxcbiAgICAgICAgICBUUGFyZW50Q29tbWFuZFR5cGVzLFxuICAgICAgICAgIFRQYXJlbnRDb21tYW5kXG4gICAgICAgID4sXG4gICAgICAgIFwidmFsdWVcIlxuICAgICAgPlxuICAgICAgICAmIHtcbiAgICAgICAgICBkZWZhdWx0PzogRGVmYXVsdFZhbHVlPFREZWZhdWx0VmFsdWU+O1xuICAgICAgICAgIHJlcXVpcmVkPzogVFJlcXVpcmVkO1xuICAgICAgICAgIGNvbGxlY3Q/OiBUQ29sbGVjdDtcbiAgICAgICAgICBjb25mbGljdHM/OiBUQ29uZmxpY3RzO1xuICAgICAgICAgIHZhbHVlPzogT3B0aW9uVmFsdWVIYW5kbGVyPE1hcFR5cGVzPFZhbHVlT2Y8VE9wdGlvbnM+PiwgVE1hcHBlZFZhbHVlPjtcbiAgICAgICAgfVxuICAgICAgfCBPcHRpb25WYWx1ZUhhbmRsZXI8TWFwVHlwZXM8VmFsdWVPZjxUT3B0aW9ucz4+LCBUTWFwcGVkVmFsdWU+LFxuICApOiBDb21tYW5kPFxuICAgIFRQYXJlbnRDb21tYW5kR2xvYmFscyxcbiAgICBUUGFyZW50Q29tbWFuZFR5cGVzLFxuICAgIE1lcmdlT3B0aW9uczxURmxhZ3MsIFRDb21tYW5kT3B0aW9ucywgVE1hcHBlZE9wdGlvbnM+LFxuICAgIFRDb21tYW5kQXJndW1lbnRzLFxuICAgIFRDb21tYW5kR2xvYmFscyxcbiAgICBUQ29tbWFuZFR5cGVzLFxuICAgIFRDb21tYW5kR2xvYmFsVHlwZXMsXG4gICAgVFBhcmVudENvbW1hbmRcbiAgPjtcblxuICBwdWJsaWMgb3B0aW9uKFxuICAgIGZsYWdzOiBzdHJpbmcsXG4gICAgZGVzYzogc3RyaW5nLFxuICAgIG9wdHM/OiBPcHRpb25PcHRpb25zIHwgT3B0aW9uVmFsdWVIYW5kbGVyLFxuICApOiBDb21tYW5kPGFueT4ge1xuICAgIGlmICh0eXBlb2Ygb3B0cyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb24oZmxhZ3MsIGRlc2MsIHsgdmFsdWU6IG9wdHMgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gc3BsaXRBcmd1bWVudHMoZmxhZ3MpO1xuXG4gICAgY29uc3QgYXJnczogQXJndW1lbnRbXSA9IHJlc3VsdC50eXBlRGVmaW5pdGlvblxuICAgICAgPyBwYXJzZUFyZ3VtZW50c0RlZmluaXRpb24ocmVzdWx0LnR5cGVEZWZpbml0aW9uKVxuICAgICAgOiBbXTtcblxuICAgIGNvbnN0IG9wdGlvbjogT3B0aW9uID0ge1xuICAgICAgLi4ub3B0cyxcbiAgICAgIG5hbWU6IFwiXCIsXG4gICAgICBkZXNjcmlwdGlvbjogZGVzYyxcbiAgICAgIGFyZ3MsXG4gICAgICBmbGFnczogcmVzdWx0LmZsYWdzLFxuICAgICAgZXF1YWxzU2lnbjogcmVzdWx0LmVxdWFsc1NpZ24sXG4gICAgICB0eXBlRGVmaW5pdGlvbjogcmVzdWx0LnR5cGVEZWZpbml0aW9uLFxuICAgICAgZ3JvdXBOYW1lOiB0aGlzLl9ncm91cE5hbWUsXG4gICAgfTtcblxuICAgIGlmIChvcHRpb24uc2VwYXJhdG9yKSB7XG4gICAgICBmb3IgKGNvbnN0IGFyZyBvZiBhcmdzKSB7XG4gICAgICAgIGlmIChhcmcubGlzdCkge1xuICAgICAgICAgIGFyZy5zZXBhcmF0b3IgPSBvcHRpb24uc2VwYXJhdG9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwYXJ0IG9mIG9wdGlvbi5mbGFncykge1xuICAgICAgY29uc3QgYXJnID0gcGFydC50cmltKCk7XG4gICAgICBjb25zdCBpc0xvbmcgPSAvXi0tLy50ZXN0KGFyZyk7XG4gICAgICBjb25zdCBuYW1lID0gaXNMb25nID8gYXJnLnNsaWNlKDIpIDogYXJnLnNsaWNlKDEpO1xuXG4gICAgICBpZiAodGhpcy5jbWQuZ2V0QmFzZU9wdGlvbihuYW1lLCB0cnVlKSkge1xuICAgICAgICBpZiAob3B0cz8ub3ZlcnJpZGUpIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZU9wdGlvbihuYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRHVwbGljYXRlT3B0aW9uTmFtZUVycm9yKG5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghb3B0aW9uLm5hbWUgJiYgaXNMb25nKSB7XG4gICAgICAgIG9wdGlvbi5uYW1lID0gbmFtZTtcbiAgICAgIH0gZWxzZSBpZiAoIW9wdGlvbi5hbGlhc2VzKSB7XG4gICAgICAgIG9wdGlvbi5hbGlhc2VzID0gW25hbWVdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9uLmFsaWFzZXMucHVzaChuYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9uLnByZXBlbmQpIHtcbiAgICAgIHRoaXMuY21kLm9wdGlvbnMudW5zaGlmdChvcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNtZC5vcHRpb25zLnB1c2gob3B0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgbmV3IGNvbW1hbmQgZXhhbXBsZS5cbiAgICogQHBhcmFtIG5hbWUgICAgICAgICAgTmFtZSBvZiB0aGUgZXhhbXBsZS5cbiAgICogQHBhcmFtIGRlc2NyaXB0aW9uICAgVGhlIGNvbnRlbnQgb2YgdGhlIGV4YW1wbGUuXG4gICAqL1xuICBwdWJsaWMgZXhhbXBsZShuYW1lOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAodGhpcy5jbWQuaGFzRXhhbXBsZShuYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IER1cGxpY2F0ZUV4YW1wbGVFcnJvcihuYW1lKTtcbiAgICB9XG5cbiAgICB0aGlzLmNtZC5leGFtcGxlcy5wdXNoKHsgbmFtZSwgZGVzY3JpcHRpb24gfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBnbG9iYWxFbnY8XG4gICAgVE5hbWVBbmRWYWx1ZSBleHRlbmRzIHN0cmluZyxcbiAgICBUR2xvYmFsRW52VmFycyBleHRlbmRzIFR5cGVkRW52PFxuICAgICAgVE5hbWVBbmRWYWx1ZSxcbiAgICAgIFRQcmVmaXgsXG4gICAgICBUQ29tbWFuZE9wdGlvbnMsXG4gICAgICBNZXJnZTxUUGFyZW50Q29tbWFuZFR5cGVzLCBNZXJnZTxUQ29tbWFuZEdsb2JhbFR5cGVzLCBUQ29tbWFuZFR5cGVzPj4sXG4gICAgICBUUmVxdWlyZWRcbiAgICA+LFxuICAgIFRNYXBwZWRHbG9iYWxFbnZWYXJzIGV4dGVuZHMgTWFwVmFsdWU8VEdsb2JhbEVudlZhcnMsIFRNYXBwZWRWYWx1ZT4sXG4gICAgVFJlcXVpcmVkIGV4dGVuZHMgRW52VmFyT3B0aW9uc1tcInJlcXVpcmVkXCJdID0gdW5kZWZpbmVkLFxuICAgIFRQcmVmaXggZXh0ZW5kcyBFbnZWYXJPcHRpb25zW1wicHJlZml4XCJdID0gdW5kZWZpbmVkLFxuICAgIFRNYXBwZWRWYWx1ZSA9IHVuZGVmaW5lZCxcbiAgPihcbiAgICBuYW1lOiBUTmFtZUFuZFZhbHVlLFxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IE9taXQ8R2xvYmFsRW52VmFyT3B0aW9ucywgXCJ2YWx1ZVwiPiAmIHtcbiAgICAgIHJlcXVpcmVkPzogVFJlcXVpcmVkO1xuICAgICAgcHJlZml4PzogVFByZWZpeDtcbiAgICAgIHZhbHVlPzogRW52VmFyVmFsdWVIYW5kbGVyPFxuICAgICAgICBNYXBUeXBlczxWYWx1ZU9mPFRHbG9iYWxFbnZWYXJzPj4sXG4gICAgICAgIFRNYXBwZWRWYWx1ZVxuICAgICAgPjtcbiAgICB9LFxuICApOiBDb21tYW5kPFxuICAgIFRQYXJlbnRDb21tYW5kR2xvYmFscyxcbiAgICBUUGFyZW50Q29tbWFuZFR5cGVzLFxuICAgIFRDb21tYW5kT3B0aW9ucyxcbiAgICBUQ29tbWFuZEFyZ3VtZW50cyxcbiAgICBNZXJnZTxUQ29tbWFuZEdsb2JhbHMsIFRNYXBwZWRHbG9iYWxFbnZWYXJzPixcbiAgICBUQ29tbWFuZFR5cGVzLFxuICAgIFRDb21tYW5kR2xvYmFsVHlwZXMsXG4gICAgVFBhcmVudENvbW1hbmRcbiAgPiB7XG4gICAgcmV0dXJuIHRoaXMuZW52KFxuICAgICAgbmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgeyAuLi5vcHRpb25zLCBnbG9iYWw6IHRydWUgfSBhcyBFbnZWYXJPcHRpb25zLFxuICAgICkgYXMgQ29tbWFuZDxhbnk+O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBuZXcgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqIEBwYXJhbSBuYW1lICAgICAgICAgIE5hbWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKiBAcGFyYW0gZGVzY3JpcHRpb24gICBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAgICAgICBFbnZpcm9ubWVudCB2YXJpYWJsZSBvcHRpb25zLlxuICAgKi9cbiAgcHVibGljIGVudjxcbiAgICBOIGV4dGVuZHMgc3RyaW5nLFxuICAgIEcgZXh0ZW5kcyBUeXBlZEVudjxcbiAgICAgIE4sXG4gICAgICBQLFxuICAgICAgVENvbW1hbmRPcHRpb25zLFxuICAgICAgTWVyZ2U8VFBhcmVudENvbW1hbmRUeXBlcywgTWVyZ2U8VENvbW1hbmRHbG9iYWxUeXBlcywgVENvbW1hbmRUeXBlcz4+LFxuICAgICAgUlxuICAgID4sXG4gICAgTUcgZXh0ZW5kcyBNYXBWYWx1ZTxHLCBWPixcbiAgICBSIGV4dGVuZHMgRW52VmFyT3B0aW9uc1tcInJlcXVpcmVkXCJdID0gdW5kZWZpbmVkLFxuICAgIFAgZXh0ZW5kcyBFbnZWYXJPcHRpb25zW1wicHJlZml4XCJdID0gdW5kZWZpbmVkLFxuICAgIFYgPSB1bmRlZmluZWQsXG4gID4oXG4gICAgbmFtZTogTixcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nLFxuICAgIG9wdGlvbnM6IE9taXQ8RW52VmFyT3B0aW9ucywgXCJ2YWx1ZVwiPiAmIHtcbiAgICAgIGdsb2JhbDogdHJ1ZTtcbiAgICAgIHJlcXVpcmVkPzogUjtcbiAgICAgIHByZWZpeD86IFA7XG4gICAgICB2YWx1ZT86IEVudlZhclZhbHVlSGFuZGxlcjxNYXBUeXBlczxWYWx1ZU9mPEc+PiwgVj47XG4gICAgfSxcbiAgKTogQ29tbWFuZDxcbiAgICBUUGFyZW50Q29tbWFuZEdsb2JhbHMsXG4gICAgVFBhcmVudENvbW1hbmRUeXBlcyxcbiAgICBUQ29tbWFuZE9wdGlvbnMsXG4gICAgVENvbW1hbmRBcmd1bWVudHMsXG4gICAgTWVyZ2U8VENvbW1hbmRHbG9iYWxzLCBNRz4sXG4gICAgVENvbW1hbmRUeXBlcyxcbiAgICBUQ29tbWFuZEdsb2JhbFR5cGVzLFxuICAgIFRQYXJlbnRDb21tYW5kXG4gID47XG5cbiAgcHVibGljIGVudjxcbiAgICBUTmFtZUFuZFZhbHVlIGV4dGVuZHMgc3RyaW5nLFxuICAgIFRFbnZWYXIgZXh0ZW5kcyBUeXBlZEVudjxcbiAgICAgIFROYW1lQW5kVmFsdWUsXG4gICAgICBUUHJlZml4LFxuICAgICAgVENvbW1hbmRPcHRpb25zLFxuICAgICAgTWVyZ2U8VFBhcmVudENvbW1hbmRUeXBlcywgTWVyZ2U8VENvbW1hbmRHbG9iYWxUeXBlcywgVENvbW1hbmRUeXBlcz4+LFxuICAgICAgVFJlcXVpcmVkXG4gICAgPixcbiAgICBUTWFwcGVkRW52VmFyIGV4dGVuZHMgTWFwVmFsdWU8VEVudlZhciwgVE1hcHBlZFZhbHVlPixcbiAgICBUUmVxdWlyZWQgZXh0ZW5kcyBFbnZWYXJPcHRpb25zW1wicmVxdWlyZWRcIl0gPSB1bmRlZmluZWQsXG4gICAgVFByZWZpeCBleHRlbmRzIEVudlZhck9wdGlvbnNbXCJwcmVmaXhcIl0gPSB1bmRlZmluZWQsXG4gICAgVE1hcHBlZFZhbHVlID0gdW5kZWZpbmVkLFxuICA+KFxuICAgIG5hbWU6IFROYW1lQW5kVmFsdWUsXG4gICAgZGVzY3JpcHRpb246IHN0cmluZyxcbiAgICBvcHRpb25zPzogT21pdDxFbnZWYXJPcHRpb25zLCBcInZhbHVlXCI+ICYge1xuICAgICAgcmVxdWlyZWQ/OiBUUmVxdWlyZWQ7XG4gICAgICBwcmVmaXg/OiBUUHJlZml4O1xuICAgICAgdmFsdWU/OiBFbnZWYXJWYWx1ZUhhbmRsZXI8TWFwVHlwZXM8VmFsdWVPZjxURW52VmFyPj4sIFRNYXBwZWRWYWx1ZT47XG4gICAgfSxcbiAgKTogQ29tbWFuZDxcbiAgICBUUGFyZW50Q29tbWFuZEdsb2JhbHMsXG4gICAgVFBhcmVudENvbW1hbmRUeXBlcyxcbiAgICBNZXJnZTxUQ29tbWFuZE9wdGlvbnMsIFRNYXBwZWRFbnZWYXI+LFxuICAgIFRDb21tYW5kQXJndW1lbnRzLFxuICAgIFRDb21tYW5kR2xvYmFscyxcbiAgICBUQ29tbWFuZFR5cGVzLFxuICAgIFRDb21tYW5kR2xvYmFsVHlwZXMsXG4gICAgVFBhcmVudENvbW1hbmRcbiAgPjtcblxuICBwdWJsaWMgZW52KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBFbnZWYXJPcHRpb25zLFxuICApOiBDb21tYW5kPGFueT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHNwbGl0QXJndW1lbnRzKG5hbWUpO1xuXG4gICAgaWYgKCFyZXN1bHQudHlwZURlZmluaXRpb24pIHtcbiAgICAgIHJlc3VsdC50eXBlRGVmaW5pdGlvbiA9IFwiPHZhbHVlOmJvb2xlYW4+XCI7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdC5mbGFncy5zb21lKChlbnZOYW1lKSA9PiB0aGlzLmNtZC5nZXRCYXNlRW52VmFyKGVudk5hbWUsIHRydWUpKSkge1xuICAgICAgdGhyb3cgbmV3IER1cGxpY2F0ZUVudlZhckVycm9yKG5hbWUpO1xuICAgIH1cblxuICAgIGNvbnN0IGRldGFpbHM6IEFyZ3VtZW50W10gPSBwYXJzZUFyZ3VtZW50c0RlZmluaXRpb24oXG4gICAgICByZXN1bHQudHlwZURlZmluaXRpb24sXG4gICAgKTtcblxuICAgIGlmIChkZXRhaWxzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBUb29NYW55RW52VmFyVmFsdWVzRXJyb3IobmFtZSk7XG4gICAgfSBlbHNlIGlmIChkZXRhaWxzLmxlbmd0aCAmJiBkZXRhaWxzWzBdLm9wdGlvbmFsVmFsdWUpIHtcbiAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkT3B0aW9uYWxFbnZWYXJWYWx1ZUVycm9yKG5hbWUpO1xuICAgIH0gZWxzZSBpZiAoZGV0YWlscy5sZW5ndGggJiYgZGV0YWlsc1swXS52YXJpYWRpYykge1xuICAgICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRWYXJpYWRpY0VudlZhclZhbHVlRXJyb3IobmFtZSk7XG4gICAgfVxuXG4gICAgdGhpcy5jbWQuZW52VmFycy5wdXNoKHtcbiAgICAgIG5hbWU6IHJlc3VsdC5mbGFnc1swXSxcbiAgICAgIG5hbWVzOiByZXN1bHQuZmxhZ3MsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIHR5cGU6IGRldGFpbHNbMF0udHlwZSxcbiAgICAgIGRldGFpbHM6IGRldGFpbHMuc2hpZnQoKSBhcyBBcmd1bWVudCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKioqKiBNQUlOIEhBTkRMRVIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBQYXJzZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGFuZCBleGVjdXRlIG1hdGNoZWQgY29tbWFuZC5cbiAgICogQHBhcmFtIGFyZ3MgQ29tbWFuZCBsaW5lIGFyZ3MgdG8gcGFyc2UuIEV4OiBgY21kLnBhcnNlKCBEZW5vLmFyZ3MgKWBcbiAgICovXG4gIHB1YmxpYyBwYXJzZShcbiAgICBhcmdzOiBzdHJpbmdbXSA9IERlbm8uYXJncyxcbiAgKTogUHJvbWlzZTxcbiAgICBUUGFyZW50Q29tbWFuZCBleHRlbmRzIENvbW1hbmQ8YW55PiA/IENvbW1hbmRSZXN1bHQ8XG4gICAgICAgIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICBBcnJheTx1bmtub3duPixcbiAgICAgICAgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICB1bmRlZmluZWRcbiAgICAgID5cbiAgICAgIDogQ29tbWFuZFJlc3VsdDxcbiAgICAgICAgTWFwVHlwZXM8VENvbW1hbmRPcHRpb25zPixcbiAgICAgICAgTWFwVHlwZXM8VENvbW1hbmRBcmd1bWVudHM+LFxuICAgICAgICBNYXBUeXBlczxUQ29tbWFuZEdsb2JhbHM+LFxuICAgICAgICBNYXBUeXBlczxUUGFyZW50Q29tbWFuZEdsb2JhbHM+LFxuICAgICAgICBUQ29tbWFuZFR5cGVzLFxuICAgICAgICBUQ29tbWFuZEdsb2JhbFR5cGVzLFxuICAgICAgICBUUGFyZW50Q29tbWFuZFR5cGVzLFxuICAgICAgICBUUGFyZW50Q29tbWFuZFxuICAgICAgPlxuICA+IHtcbiAgICBjb25zdCBjdHg6IFBhcnNlQ29udGV4dCA9IHtcbiAgICAgIHVua25vd246IGFyZ3Muc2xpY2UoKSxcbiAgICAgIGZsYWdzOiB7fSxcbiAgICAgIGVudjoge30sXG4gICAgICBsaXRlcmFsOiBbXSxcbiAgICAgIHN0b3BFYXJseTogZmFsc2UsXG4gICAgICBzdG9wT25Vbmtub3duOiBmYWxzZSxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLnBhcnNlQ29tbWFuZChjdHgpIGFzIGFueTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcGFyc2VDb21tYW5kKGN0eDogUGFyc2VDb250ZXh0KTogUHJvbWlzZTxDb21tYW5kUmVzdWx0PiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgIHRoaXMucmVnaXN0ZXJEZWZhdWx0cygpO1xuICAgICAgdGhpcy5yYXdBcmdzID0gY3R4LnVua25vd24uc2xpY2UoKTtcblxuICAgICAgaWYgKHRoaXMuaXNFeGVjdXRhYmxlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZXhlY3V0ZUV4ZWN1dGFibGUoY3R4LnVua25vd24pO1xuICAgICAgICByZXR1cm4geyBvcHRpb25zOiB7fSwgYXJnczogW10sIGNtZDogdGhpcywgbGl0ZXJhbDogW10gfSBhcyBhbnk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX3VzZVJhd0FyZ3MpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5wYXJzZUVudlZhcnMoY3R4LCB0aGlzLmVudlZhcnMpO1xuICAgICAgICByZXR1cm4gdGhpcy5leGVjdXRlKGN0eC5lbnYsIC4uLmN0eC51bmtub3duKSBhcyBhbnk7XG4gICAgICB9XG5cbiAgICAgIGxldCBwcmVQYXJzZUdsb2JhbHMgPSBmYWxzZTtcbiAgICAgIGxldCBzdWJDb21tYW5kOiBDb21tYW5kPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICAgIC8vIFByZSBwYXJzZSBnbG9iYWxzIHRvIHN1cHBvcnQ6IGNtZCAtLWdsb2JhbC1vcHRpb24gc3ViLWNvbW1hbmQgLS1vcHRpb25cbiAgICAgIGlmIChjdHgudW5rbm93bi5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIERldGVjdCBzdWIgY29tbWFuZC5cbiAgICAgICAgc3ViQ29tbWFuZCA9IHRoaXMuZ2V0U3ViQ29tbWFuZChjdHgpO1xuXG4gICAgICAgIGlmICghc3ViQ29tbWFuZCkge1xuICAgICAgICAgIC8vIE9ubHkgcHJlIHBhcnNlIGdsb2JhbHMgaWYgZmlyc3QgYXJnIGlzdCBhIGdsb2JhbCBvcHRpb24uXG4gICAgICAgICAgY29uc3Qgb3B0aW9uTmFtZSA9IGN0eC51bmtub3duWzBdLnJlcGxhY2UoL14tKy8sIFwiXCIpO1xuICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuZ2V0T3B0aW9uKG9wdGlvbk5hbWUsIHRydWUpO1xuXG4gICAgICAgICAgaWYgKG9wdGlvbj8uZ2xvYmFsKSB7XG4gICAgICAgICAgICBwcmVQYXJzZUdsb2JhbHMgPSB0cnVlO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5wYXJzZUdsb2JhbE9wdGlvbnNBbmRFbnZWYXJzKGN0eCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzdWJDb21tYW5kIHx8IGN0eC51bmtub3duLmxlbmd0aCA+IDApIHtcbiAgICAgICAgc3ViQ29tbWFuZCA/Pz0gdGhpcy5nZXRTdWJDb21tYW5kKGN0eCk7XG5cbiAgICAgICAgaWYgKHN1YkNvbW1hbmQpIHtcbiAgICAgICAgICBzdWJDb21tYW5kLl9nbG9iYWxQYXJlbnQgPSB0aGlzO1xuICAgICAgICAgIHJldHVybiBzdWJDb21tYW5kLnBhcnNlQ29tbWFuZChjdHgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFBhcnNlIHJlc3Qgb3B0aW9ucyAmIGVudiB2YXJzLlxuICAgICAgYXdhaXQgdGhpcy5wYXJzZU9wdGlvbnNBbmRFbnZWYXJzKGN0eCwgcHJlUGFyc2VHbG9iYWxzKTtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7IC4uLmN0eC5lbnYsIC4uLmN0eC5mbGFncyB9O1xuICAgICAgY29uc3QgYXJncyA9IHRoaXMucGFyc2VBcmd1bWVudHMoY3R4LCBvcHRpb25zKTtcbiAgICAgIHRoaXMubGl0ZXJhbEFyZ3MgPSBjdHgubGl0ZXJhbDtcblxuICAgICAgLy8gRXhlY3V0ZSBvcHRpb24gYWN0aW9uLlxuICAgICAgaWYgKGN0eC5hY3Rpb24pIHtcbiAgICAgICAgYXdhaXQgY3R4LmFjdGlvbi5hY3Rpb24uY2FsbCh0aGlzLCBvcHRpb25zLCAuLi5hcmdzKTtcblxuICAgICAgICBpZiAoY3R4LmFjdGlvbi5zdGFuZGFsb25lKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBhcmdzLFxuICAgICAgICAgICAgY21kOiB0aGlzLFxuICAgICAgICAgICAgbGl0ZXJhbDogdGhpcy5saXRlcmFsQXJncyxcbiAgICAgICAgICB9IGFzIGFueTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlKG9wdGlvbnMsIC4uLmFyZ3MpIGFzIGFueTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdWJDb21tYW5kKGN0eDogUGFyc2VDb250ZXh0KSB7XG4gICAgY29uc3Qgc3ViQ29tbWFuZCA9IHRoaXMuZ2V0Q29tbWFuZChjdHgudW5rbm93blswXSwgdHJ1ZSk7XG5cbiAgICBpZiAoc3ViQ29tbWFuZCkge1xuICAgICAgY3R4LnVua25vd24uc2hpZnQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3ViQ29tbWFuZDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcGFyc2VHbG9iYWxPcHRpb25zQW5kRW52VmFycyhcbiAgICBjdHg6IFBhcnNlQ29udGV4dCxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaXNIZWxwT3B0aW9uID0gdGhpcy5nZXRIZWxwT3B0aW9uKCk/LmZsYWdzLmluY2x1ZGVzKGN0eC51bmtub3duWzBdKTtcblxuICAgIC8vIFBhcnNlIGdsb2JhbCBlbnYgdmFycy5cbiAgICBjb25zdCBlbnZWYXJzID0gW1xuICAgICAgLi4udGhpcy5lbnZWYXJzLmZpbHRlcigoZW52VmFyKSA9PiBlbnZWYXIuZ2xvYmFsKSxcbiAgICAgIC4uLnRoaXMuZ2V0R2xvYmFsRW52VmFycyh0cnVlKSxcbiAgICBdO1xuXG4gICAgYXdhaXQgdGhpcy5wYXJzZUVudlZhcnMoY3R4LCBlbnZWYXJzLCAhaXNIZWxwT3B0aW9uKTtcblxuICAgIC8vIFBhcnNlIGdsb2JhbCBvcHRpb25zLlxuICAgIGNvbnN0IG9wdGlvbnMgPSBbXG4gICAgICAuLi50aGlzLm9wdGlvbnMuZmlsdGVyKChvcHRpb24pID0+IG9wdGlvbi5nbG9iYWwpLFxuICAgICAgLi4udGhpcy5nZXRHbG9iYWxPcHRpb25zKHRydWUpLFxuICAgIF07XG5cbiAgICB0aGlzLnBhcnNlT3B0aW9ucyhjdHgsIG9wdGlvbnMsIHtcbiAgICAgIHN0b3BFYXJseTogdHJ1ZSxcbiAgICAgIHN0b3BPblVua25vd246IHRydWUsXG4gICAgICBkb3R0ZWQ6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwYXJzZU9wdGlvbnNBbmRFbnZWYXJzKFxuICAgIGN0eDogUGFyc2VDb250ZXh0LFxuICAgIHByZVBhcnNlR2xvYmFsczogYm9vbGVhbixcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaGVscE9wdGlvbiA9IHRoaXMuZ2V0SGVscE9wdGlvbigpO1xuICAgIGNvbnN0IGlzVmVyc2lvbk9wdGlvbiA9IHRoaXMuX3ZlcnNpb25PcHRpb24/LmZsYWdzLmluY2x1ZGVzKGN0eC51bmtub3duWzBdKTtcbiAgICBjb25zdCBpc0hlbHBPcHRpb24gPSBoZWxwT3B0aW9uICYmIGN0eC5mbGFncz8uW2hlbHBPcHRpb24ubmFtZV0gPT09IHRydWU7XG5cbiAgICAvLyBQYXJzZSBlbnYgdmFycy5cbiAgICBjb25zdCBlbnZWYXJzID0gcHJlUGFyc2VHbG9iYWxzXG4gICAgICA/IHRoaXMuZW52VmFycy5maWx0ZXIoKGVudlZhcikgPT4gIWVudlZhci5nbG9iYWwpXG4gICAgICA6IHRoaXMuZ2V0RW52VmFycyh0cnVlKTtcblxuICAgIGF3YWl0IHRoaXMucGFyc2VFbnZWYXJzKFxuICAgICAgY3R4LFxuICAgICAgZW52VmFycyxcbiAgICAgICFpc0hlbHBPcHRpb24gJiYgIWlzVmVyc2lvbk9wdGlvbixcbiAgICApO1xuXG4gICAgLy8gUGFyc2Ugb3B0aW9ucy5cbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5nZXRPcHRpb25zKHRydWUpO1xuXG4gICAgdGhpcy5wYXJzZU9wdGlvbnMoY3R4LCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKiBSZWdpc3RlciBkZWZhdWx0IG9wdGlvbnMgbGlrZSBgLS12ZXJzaW9uYCBhbmQgYC0taGVscGAuICovXG4gIHByaXZhdGUgcmVnaXN0ZXJEZWZhdWx0cygpOiB0aGlzIHtcbiAgICBpZiAodGhpcy5oYXNEZWZhdWx0cyB8fCB0aGlzLmdldFBhcmVudCgpKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgdGhpcy5oYXNEZWZhdWx0cyA9IHRydWU7XG5cbiAgICB0aGlzLnJlc2V0KCk7XG5cbiAgICAhdGhpcy50eXBlcy5oYXMoXCJzdHJpbmdcIikgJiZcbiAgICAgIHRoaXMudHlwZShcInN0cmluZ1wiLCBuZXcgU3RyaW5nVHlwZSgpLCB7IGdsb2JhbDogdHJ1ZSB9KTtcbiAgICAhdGhpcy50eXBlcy5oYXMoXCJudW1iZXJcIikgJiZcbiAgICAgIHRoaXMudHlwZShcIm51bWJlclwiLCBuZXcgTnVtYmVyVHlwZSgpLCB7IGdsb2JhbDogdHJ1ZSB9KTtcbiAgICAhdGhpcy50eXBlcy5oYXMoXCJpbnRlZ2VyXCIpICYmXG4gICAgICB0aGlzLnR5cGUoXCJpbnRlZ2VyXCIsIG5ldyBJbnRlZ2VyVHlwZSgpLCB7IGdsb2JhbDogdHJ1ZSB9KTtcbiAgICAhdGhpcy50eXBlcy5oYXMoXCJib29sZWFuXCIpICYmXG4gICAgICB0aGlzLnR5cGUoXCJib29sZWFuXCIsIG5ldyBCb29sZWFuVHlwZSgpLCB7IGdsb2JhbDogdHJ1ZSB9KTtcbiAgICAhdGhpcy50eXBlcy5oYXMoXCJmaWxlXCIpICYmXG4gICAgICB0aGlzLnR5cGUoXCJmaWxlXCIsIG5ldyBGaWxlVHlwZSgpLCB7IGdsb2JhbDogdHJ1ZSB9KTtcblxuICAgIGlmICghdGhpcy5faGVscCkge1xuICAgICAgdGhpcy5oZWxwKHtcbiAgICAgICAgaGludHM6IHRydWUsXG4gICAgICAgIHR5cGVzOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl92ZXJzaW9uT3B0aW9ucyAhPT0gZmFsc2UgJiYgKHRoaXMuX3ZlcnNpb25PcHRpb25zIHx8IHRoaXMudmVyKSkge1xuICAgICAgdGhpcy5vcHRpb24oXG4gICAgICAgIHRoaXMuX3ZlcnNpb25PcHRpb25zPy5mbGFncyB8fCBcIi1WLCAtLXZlcnNpb25cIixcbiAgICAgICAgdGhpcy5fdmVyc2lvbk9wdGlvbnM/LmRlc2MgfHxcbiAgICAgICAgICBcIlNob3cgdGhlIHZlcnNpb24gbnVtYmVyIGZvciB0aGlzIHByb2dyYW0uXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgICAgICAgIHByZXBlbmQ6IHRydWUsXG4gICAgICAgICAgYWN0aW9uOiBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjb25zdCBsb25nID0gdGhpcy5nZXRSYXdBcmdzKCkuaW5jbHVkZXMoXG4gICAgICAgICAgICAgIGAtLSR7dGhpcy5fdmVyc2lvbk9wdGlvbj8ubmFtZX1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChsb25nKSB7XG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMuY2hlY2tWZXJzaW9uKCk7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0xvbmdWZXJzaW9uKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnNob3dWZXJzaW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmV4aXQoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLih0aGlzLl92ZXJzaW9uT3B0aW9ucz8ub3B0cyA/PyB7fSksXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgdGhpcy5fdmVyc2lvbk9wdGlvbiA9IHRoaXMub3B0aW9uc1swXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faGVscE9wdGlvbnMgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLm9wdGlvbihcbiAgICAgICAgdGhpcy5faGVscE9wdGlvbnM/LmZsYWdzIHx8IFwiLWgsIC0taGVscFwiLFxuICAgICAgICB0aGlzLl9oZWxwT3B0aW9ucz8uZGVzYyB8fCBcIlNob3cgdGhpcyBoZWxwLlwiLFxuICAgICAgICB7XG4gICAgICAgICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICAgICAgICBnbG9iYWw6IHRydWUsXG4gICAgICAgICAgcHJlcGVuZDogdHJ1ZSxcbiAgICAgICAgICBhY3Rpb246IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvbmcgPSB0aGlzLmdldFJhd0FyZ3MoKS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgYC0tJHt0aGlzLmdldEhlbHBPcHRpb24oKT8ubmFtZX1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY2hlY2tWZXJzaW9uKCk7XG4gICAgICAgICAgICB0aGlzLnNob3dIZWxwKHsgbG9uZyB9KTtcbiAgICAgICAgICAgIHRoaXMuZXhpdCgpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgLi4uKHRoaXMuX2hlbHBPcHRpb25zPy5vcHRzID8/IHt9KSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgICB0aGlzLl9oZWxwT3B0aW9uID0gdGhpcy5vcHRpb25zWzBdO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgY29tbWFuZC5cbiAgICogQHBhcmFtIG9wdGlvbnMgQSBtYXAgb2Ygb3B0aW9ucy5cbiAgICogQHBhcmFtIGFyZ3MgQ29tbWFuZCBhcmd1bWVudHMuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgZXhlY3V0ZShcbiAgICBvcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAuLi5hcmdzOiBBcnJheTx1bmtub3duPlxuICApOiBQcm9taXNlPENvbW1hbmRSZXN1bHQ+IHtcbiAgICBpZiAodGhpcy5mbikge1xuICAgICAgYXdhaXQgdGhpcy5mbihvcHRpb25zLCAuLi5hcmdzKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGVmYXVsdENvbW1hbmQpIHtcbiAgICAgIGNvbnN0IGNtZCA9IHRoaXMuZ2V0Q29tbWFuZCh0aGlzLmRlZmF1bHRDb21tYW5kLCB0cnVlKTtcblxuICAgICAgaWYgKCFjbWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IERlZmF1bHRDb21tYW5kTm90Rm91bmRFcnJvcihcbiAgICAgICAgICB0aGlzLmRlZmF1bHRDb21tYW5kLFxuICAgICAgICAgIHRoaXMuZ2V0Q29tbWFuZHMoKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNtZC5fZ2xvYmFsUGFyZW50ID0gdGhpcztcblxuICAgICAgcmV0dXJuIGNtZC5leGVjdXRlKG9wdGlvbnMsIC4uLmFyZ3MpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBvcHRpb25zLFxuICAgICAgYXJncyxcbiAgICAgIGNtZDogdGhpcyxcbiAgICAgIGxpdGVyYWw6IHRoaXMubGl0ZXJhbEFyZ3MsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGV4dGVybmFsIHN1Yi1jb21tYW5kLlxuICAgKiBAcGFyYW0gYXJncyBSYXcgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBleGVjdXRlRXhlY3V0YWJsZShhcmdzOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IGNvbW1hbmQgPSB0aGlzLmdldFBhdGgoKS5yZXBsYWNlKC9cXHMrL2csIFwiLVwiKTtcblxuICAgIGF3YWl0IERlbm8ucGVybWlzc2lvbnMucmVxdWVzdCh7IG5hbWU6IFwicnVuXCIsIGNvbW1hbmQgfSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcHJvY2VzczogRGVuby5Qcm9jZXNzID0gRGVuby5ydW4oe1xuICAgICAgICBjbWQ6IFtjb21tYW5kLCAuLi5hcmdzXSxcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgc3RhdHVzOiBEZW5vLlByb2Nlc3NTdGF0dXMgPSBhd2FpdCBwcm9jZXNzLnN0YXR1cygpO1xuXG4gICAgICBpZiAoIXN0YXR1cy5zdWNjZXNzKSB7XG4gICAgICAgIERlbm8uZXhpdChzdGF0dXMuY29kZSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIERlbm8uZXJyb3JzLk5vdEZvdW5kKSB7XG4gICAgICAgIHRocm93IG5ldyBDb21tYW5kRXhlY3V0YWJsZU5vdEZvdW5kRXJyb3IoY29tbWFuZCk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICAvKiogUGFyc2UgcmF3IGNvbW1hbmQgbGluZSBhcmd1bWVudHMuICovXG4gIHByb3RlY3RlZCBwYXJzZU9wdGlvbnMoXG4gICAgY3R4OiBQYXJzZUNvbnRleHQsXG4gICAgb3B0aW9uczogT3B0aW9uW10sXG4gICAge1xuICAgICAgc3RvcEVhcmx5ID0gdGhpcy5fc3RvcEVhcmx5LFxuICAgICAgc3RvcE9uVW5rbm93biA9IGZhbHNlLFxuICAgICAgZG90dGVkID0gdHJ1ZSxcbiAgICB9OiBQYXJzZU9wdGlvbnNPcHRpb25zID0ge30sXG4gICk6IHZvaWQge1xuICAgIHBhcnNlRmxhZ3MoY3R4LCB7XG4gICAgICBzdG9wRWFybHksXG4gICAgICBzdG9wT25Vbmtub3duLFxuICAgICAgZG90dGVkLFxuICAgICAgYWxsb3dFbXB0eTogdGhpcy5fYWxsb3dFbXB0eSxcbiAgICAgIGZsYWdzOiBvcHRpb25zLFxuICAgICAgaWdub3JlRGVmYXVsdHM6IGN0eC5lbnYsXG4gICAgICBwYXJzZTogKHR5cGU6IEFyZ3VtZW50VmFsdWUpID0+IHRoaXMucGFyc2VUeXBlKHR5cGUpLFxuICAgICAgb3B0aW9uOiAob3B0aW9uOiBPcHRpb24pID0+IHtcbiAgICAgICAgaWYgKCFjdHguYWN0aW9uICYmIG9wdGlvbi5hY3Rpb24pIHtcbiAgICAgICAgICBjdHguYWN0aW9uID0gb3B0aW9uIGFzIEFjdGlvbk9wdGlvbjtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBQYXJzZSBhcmd1bWVudCB0eXBlLiAqL1xuICBwcm90ZWN0ZWQgcGFyc2VUeXBlKHR5cGU6IEFyZ3VtZW50VmFsdWUpOiB1bmtub3duIHtcbiAgICBjb25zdCB0eXBlU2V0dGluZ3M6IFR5cGVEZWYgfCB1bmRlZmluZWQgPSB0aGlzLmdldFR5cGUodHlwZS50eXBlKTtcblxuICAgIGlmICghdHlwZVNldHRpbmdzKSB7XG4gICAgICB0aHJvdyBuZXcgVW5rbm93blR5cGVFcnJvcihcbiAgICAgICAgdHlwZS50eXBlLFxuICAgICAgICB0aGlzLmdldFR5cGVzKCkubWFwKCh0eXBlKSA9PiB0eXBlLm5hbWUpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZVNldHRpbmdzLmhhbmRsZXIgaW5zdGFuY2VvZiBUeXBlXG4gICAgICA/IHR5cGVTZXR0aW5ncy5oYW5kbGVyLnBhcnNlKHR5cGUpXG4gICAgICA6IHR5cGVTZXR0aW5ncy5oYW5kbGVyKHR5cGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlYWQgYW5kIHZhbGlkYXRlIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICogQHBhcmFtIGN0eCBQYXJzZSBjb250ZXh0LlxuICAgKiBAcGFyYW0gZW52VmFycyBlbnYgdmFycyBkZWZpbmVkIGJ5IHRoZSBjb21tYW5kLlxuICAgKiBAcGFyYW0gdmFsaWRhdGUgd2hlbiB0cnVlLCB0aHJvd3MgYW4gZXJyb3IgaWYgYSByZXF1aXJlZCBlbnYgdmFyIGlzIG1pc3NpbmcuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgcGFyc2VFbnZWYXJzKFxuICAgIGN0eDogUGFyc2VDb250ZXh0LFxuICAgIGVudlZhcnM6IEFycmF5PEVudlZhcj4sXG4gICAgdmFsaWRhdGUgPSB0cnVlLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IGVudlZhciBvZiBlbnZWYXJzKSB7XG4gICAgICBjb25zdCBlbnYgPSBhd2FpdCB0aGlzLmZpbmRFbnZWYXIoZW52VmFyLm5hbWVzKTtcblxuICAgICAgaWYgKGVudikge1xuICAgICAgICBjb25zdCBwYXJzZVR5cGUgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlVHlwZSh7XG4gICAgICAgICAgICBsYWJlbDogXCJFbnZpcm9ubWVudCB2YXJpYWJsZVwiLFxuICAgICAgICAgICAgdHlwZTogZW52VmFyLnR5cGUsXG4gICAgICAgICAgICBuYW1lOiBlbnYubmFtZSxcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IHVuZGVyc2NvcmVUb0NhbWVsQ2FzZShcbiAgICAgICAgICBlbnZWYXIucHJlZml4XG4gICAgICAgICAgICA/IGVudlZhci5uYW1lc1swXS5yZXBsYWNlKG5ldyBSZWdFeHAoYF4ke2VudlZhci5wcmVmaXh9YCksIFwiXCIpXG4gICAgICAgICAgICA6IGVudlZhci5uYW1lc1swXSxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoZW52VmFyLmRldGFpbHMubGlzdCkge1xuICAgICAgICAgIGN0eC5lbnZbcHJvcGVydHlOYW1lXSA9IGVudi52YWx1ZVxuICAgICAgICAgICAgLnNwbGl0KGVudlZhci5kZXRhaWxzLnNlcGFyYXRvciA/PyBcIixcIilcbiAgICAgICAgICAgIC5tYXAocGFyc2VUeXBlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjdHguZW52W3Byb3BlcnR5TmFtZV0gPSBwYXJzZVR5cGUoZW52LnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbnZWYXIudmFsdWUgJiYgdHlwZW9mIGN0eC5lbnZbcHJvcGVydHlOYW1lXSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgIGN0eC5lbnZbcHJvcGVydHlOYW1lXSA9IGVudlZhci52YWx1ZShjdHguZW52W3Byb3BlcnR5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGVudlZhci5yZXF1aXJlZCAmJiB2YWxpZGF0ZSkge1xuICAgICAgICB0aHJvdyBuZXcgTWlzc2luZ1JlcXVpcmVkRW52VmFyRXJyb3IoZW52VmFyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZmluZEVudlZhcihcbiAgICBuYW1lczogcmVhZG9ubHkgc3RyaW5nW10sXG4gICk6IFByb21pc2U8eyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfSB8IHVuZGVmaW5lZD4ge1xuICAgIGZvciAoY29uc3QgbmFtZSBvZiBuYW1lcykge1xuICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgRGVuby5wZXJtaXNzaW9ucy5xdWVyeSh7XG4gICAgICAgIG5hbWU6IFwiZW52XCIsXG4gICAgICAgIHZhcmlhYmxlOiBuYW1lLFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChzdGF0dXMuc3RhdGUgPT09IFwiZ3JhbnRlZFwiKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gRGVuby5lbnYuZ2V0KG5hbWUpO1xuXG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiB7IG5hbWUsIHZhbHVlIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuXG4gICAqIEBwYXJhbSBjdHggICAgIFBhcnNlIGNvbnRleHQuXG4gICAqIEBwYXJhbSBvcHRpb25zIFBhcnNlZCBjb21tYW5kIGxpbmUgb3B0aW9ucy5cbiAgICovXG4gIHByb3RlY3RlZCBwYXJzZUFyZ3VtZW50cyhcbiAgICBjdHg6IFBhcnNlQ29udGV4dCxcbiAgICBvcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgKTogVENvbW1hbmRBcmd1bWVudHMge1xuICAgIGNvbnN0IHBhcmFtczogQXJyYXk8dW5rbm93bj4gPSBbXTtcbiAgICBjb25zdCBhcmdzID0gY3R4LnVua25vd24uc2xpY2UoKTtcblxuICAgIGlmICghdGhpcy5oYXNBcmd1bWVudHMoKSkge1xuICAgICAgaWYgKGFyZ3MubGVuZ3RoKSB7XG4gICAgICAgIGlmICh0aGlzLmhhc0NvbW1hbmRzKHRydWUpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuaGFzQ29tbWFuZChhcmdzWzBdLCB0cnVlKSkge1xuICAgICAgICAgICAgLy8gZS5nOiBjb21tYW5kIC0tZ2xvYmFsLWZvbyAtLWZvbyBzdWItY29tbWFuZFxuICAgICAgICAgICAgdGhyb3cgbmV3IFRvb01hbnlBcmd1bWVudHNFcnJvcihhcmdzKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFVua25vd25Db21tYW5kRXJyb3IoYXJnc1swXSwgdGhpcy5nZXRDb21tYW5kcygpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IE5vQXJndW1lbnRzQWxsb3dlZEVycm9yKHRoaXMuZ2V0UGF0aCgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWFyZ3MubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHJlcXVpcmVkID0gdGhpcy5nZXRBcmd1bWVudHMoKVxuICAgICAgICAgIC5maWx0ZXIoKGV4cGVjdGVkQXJnKSA9PiAhZXhwZWN0ZWRBcmcub3B0aW9uYWxWYWx1ZSlcbiAgICAgICAgICAubWFwKChleHBlY3RlZEFyZykgPT4gZXhwZWN0ZWRBcmcubmFtZSk7XG5cbiAgICAgICAgaWYgKHJlcXVpcmVkLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IG9wdGlvbk5hbWVzOiBzdHJpbmdbXSA9IE9iamVjdC5rZXlzKG9wdGlvbnMpO1xuICAgICAgICAgIGNvbnN0IGhhc1N0YW5kYWxvbmVPcHRpb24gPSAhIW9wdGlvbk5hbWVzLmZpbmQoKG5hbWUpID0+XG4gICAgICAgICAgICB0aGlzLmdldE9wdGlvbihuYW1lLCB0cnVlKT8uc3RhbmRhbG9uZVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoIWhhc1N0YW5kYWxvbmVPcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBNaXNzaW5nQXJndW1lbnRzRXJyb3IocmVxdWlyZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChjb25zdCBleHBlY3RlZEFyZyBvZiB0aGlzLmdldEFyZ3VtZW50cygpKSB7XG4gICAgICAgICAgaWYgKCFhcmdzLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKGV4cGVjdGVkQXJnLm9wdGlvbmFsVmFsdWUpIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgTWlzc2luZ0FyZ3VtZW50RXJyb3IoZXhwZWN0ZWRBcmcubmFtZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IGFyZzogdW5rbm93bjtcblxuICAgICAgICAgIGNvbnN0IHBhcnNlQXJnVmFsdWUgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGVkQXJnLmxpc3RcbiAgICAgICAgICAgICAgPyB2YWx1ZS5zcGxpdChcIixcIikubWFwKCh2YWx1ZSkgPT4gcGFyc2VBcmdUeXBlKHZhbHVlKSlcbiAgICAgICAgICAgICAgOiBwYXJzZUFyZ1R5cGUodmFsdWUpO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBwYXJzZUFyZ1R5cGUgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VUeXBlKHtcbiAgICAgICAgICAgICAgbGFiZWw6IFwiQXJndW1lbnRcIixcbiAgICAgICAgICAgICAgdHlwZTogZXhwZWN0ZWRBcmcudHlwZSxcbiAgICAgICAgICAgICAgbmFtZTogZXhwZWN0ZWRBcmcubmFtZSxcbiAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgaWYgKGV4cGVjdGVkQXJnLnZhcmlhZGljKSB7XG4gICAgICAgICAgICBhcmcgPSBhcmdzLnNwbGljZSgwLCBhcmdzLmxlbmd0aCkubWFwKCh2YWx1ZSkgPT5cbiAgICAgICAgICAgICAgcGFyc2VBcmdWYWx1ZSh2YWx1ZSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFyZyA9IHBhcnNlQXJnVmFsdWUoYXJncy5zaGlmdCgpIGFzIHN0cmluZyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGV4cGVjdGVkQXJnLnZhcmlhZGljICYmIEFycmF5LmlzQXJyYXkoYXJnKSkge1xuICAgICAgICAgICAgcGFyYW1zLnB1c2goLi4uYXJnKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBhcmcgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHBhcmFtcy5wdXNoKGFyZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFRvb01hbnlBcmd1bWVudHNFcnJvcihhcmdzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwYXJhbXMgYXMgVENvbW1hbmRBcmd1bWVudHM7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiB1bmtub3duKTogbmV2ZXIge1xuICAgIHRoaXMudGhyb3coXG4gICAgICBlcnJvciBpbnN0YW5jZW9mIEZsYWdzVmFsaWRhdGlvbkVycm9yXG4gICAgICAgID8gbmV3IFZhbGlkYXRpb25FcnJvcihlcnJvci5tZXNzYWdlKVxuICAgICAgICA6IGVycm9yIGluc3RhbmNlb2YgRXJyb3JcbiAgICAgICAgPyBlcnJvclxuICAgICAgICA6IG5ldyBFcnJvcihgW25vbi1lcnJvci10aHJvd25dICR7ZXJyb3J9YCksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgZXJyb3IuIElmIGB0aHJvd0Vycm9yc2AgaXMgZW5hYmxlZCB0aGUgZXJyb3Igd2lsbCBiZSB0aHJvd24sXG4gICAqIG90aGVyd2lzZSBhIGZvcm1hdHRlZCBlcnJvciBtZXNzYWdlIHdpbGwgYmUgcHJpbnRlZCBhbmQgYERlbm8uZXhpdCgxKWBcbiAgICogd2lsbCBiZSBjYWxsZWQuIFRoaXMgd2lsbCBhbHNvIHRyaWdnZXIgcmVnaXN0ZXJlZCBlcnJvciBoYW5kbGVycy5cbiAgICpcbiAgICogQHBhcmFtIGVycm9yIFRoZSBlcnJvciB0byBoYW5kbGUuXG4gICAqL1xuICBwdWJsaWMgdGhyb3coZXJyb3I6IEVycm9yKTogbmV2ZXIge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFZhbGlkYXRpb25FcnJvcikge1xuICAgICAgZXJyb3IuY21kID0gdGhpcyBhcyB1bmtub3duIGFzIENvbW1hbmQ7XG4gICAgfVxuICAgIHRoaXMuZ2V0RXJyb3JIYW5kbGVyKCk/LihlcnJvciwgdGhpcyBhcyB1bmtub3duIGFzIENvbW1hbmQpO1xuXG4gICAgaWYgKHRoaXMuc2hvdWxkVGhyb3dFcnJvcnMoKSB8fCAhKGVycm9yIGluc3RhbmNlb2YgVmFsaWRhdGlvbkVycm9yKSkge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIHRoaXMuc2hvd0hlbHAoKTtcblxuICAgIGNvbnNvbGUuZXJyb3IocmVkKGAgICR7Ym9sZChcImVycm9yXCIpfTogJHtlcnJvci5tZXNzYWdlfVxcbmApKTtcblxuICAgIERlbm8uZXhpdChlcnJvciBpbnN0YW5jZW9mIFZhbGlkYXRpb25FcnJvciA/IGVycm9yLmV4aXRDb2RlIDogMSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICoqKiogR0VUVEVSICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKiogR2V0IGNvbW1hbmQgbmFtZS4gKi9cbiAgcHVibGljIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcbiAgfVxuXG4gIC8qKiBHZXQgcGFyZW50IGNvbW1hbmQuICovXG4gIHB1YmxpYyBnZXRQYXJlbnQoKTogVFBhcmVudENvbW1hbmQge1xuICAgIHJldHVybiB0aGlzLl9wYXJlbnQgYXMgVFBhcmVudENvbW1hbmQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHBhcmVudCBjb21tYW5kIGZyb20gZ2xvYmFsIGV4ZWN1dGVkIGNvbW1hbmQuXG4gICAqIEJlIHN1cmUsIHRvIGNhbGwgdGhpcyBtZXRob2Qgb25seSBpbnNpZGUgYW4gYWN0aW9uIGhhbmRsZXIuIFVubGVzcyB0aGlzIG9yIGFueSBjaGlsZCBjb21tYW5kIHdhcyBleGVjdXRlZCxcbiAgICogdGhpcyBtZXRob2QgcmV0dXJucyBhbHdheXMgdW5kZWZpbmVkLlxuICAgKi9cbiAgcHVibGljIGdldEdsb2JhbFBhcmVudCgpOiBDb21tYW5kPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9nbG9iYWxQYXJlbnQ7XG4gIH1cblxuICAvKiogR2V0IG1haW4gY29tbWFuZC4gKi9cbiAgcHVibGljIGdldE1haW5Db21tYW5kKCk6IENvbW1hbmQ8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcmVudD8uZ2V0TWFpbkNvbW1hbmQoKSA/PyB0aGlzO1xuICB9XG5cbiAgLyoqIEdldCBjb21tYW5kIG5hbWUgYWxpYXNlcy4gKi9cbiAgcHVibGljIGdldEFsaWFzZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmFsaWFzZXM7XG4gIH1cblxuICAvKiogR2V0IGZ1bGwgY29tbWFuZCBwYXRoLiAqL1xuICBwdWJsaWMgZ2V0UGF0aCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wYXJlbnRcbiAgICAgID8gdGhpcy5fcGFyZW50LmdldFBhdGgoKSArIFwiIFwiICsgdGhpcy5fbmFtZVxuICAgICAgOiB0aGlzLl9uYW1lO1xuICB9XG5cbiAgLyoqIEdldCBhcmd1bWVudHMgZGVmaW5pdGlvbi4gRS5nOiA8aW5wdXQtZmlsZTpzdHJpbmc+IDxvdXRwdXQtZmlsZTpzdHJpbmc+ICovXG4gIHB1YmxpYyBnZXRBcmdzRGVmaW5pdGlvbigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmFyZ3NEZWZpbml0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhcmd1bWVudCBieSBuYW1lLlxuICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBhcmd1bWVudC5cbiAgICovXG4gIHB1YmxpYyBnZXRBcmd1bWVudChuYW1lOiBzdHJpbmcpOiBBcmd1bWVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QXJndW1lbnRzKCkuZmluZCgoYXJnKSA9PiBhcmcubmFtZSA9PT0gbmFtZSk7XG4gIH1cblxuICAvKiogR2V0IGFyZ3VtZW50cy4gKi9cbiAgcHVibGljIGdldEFyZ3VtZW50cygpOiBBcmd1bWVudFtdIHtcbiAgICBpZiAoIXRoaXMuYXJncy5sZW5ndGggJiYgdGhpcy5hcmdzRGVmaW5pdGlvbikge1xuICAgICAgdGhpcy5hcmdzID0gcGFyc2VBcmd1bWVudHNEZWZpbml0aW9uKHRoaXMuYXJnc0RlZmluaXRpb24pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFyZ3M7XG4gIH1cblxuICAvKiogQ2hlY2sgaWYgY29tbWFuZCBoYXMgYXJndW1lbnRzLiAqL1xuICBwdWJsaWMgaGFzQXJndW1lbnRzKCkge1xuICAgIHJldHVybiAhIXRoaXMuYXJnc0RlZmluaXRpb247XG4gIH1cblxuICAvKiogR2V0IGNvbW1hbmQgdmVyc2lvbi4gKi9cbiAgcHVibGljIGdldFZlcnNpb24oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5nZXRWZXJzaW9uSGFuZGxlcigpPy5jYWxsKHRoaXMsIHRoaXMpO1xuICB9XG5cbiAgLyoqIEdldCBoZWxwIGhhbmRsZXIgbWV0aG9kLiAqL1xuICBwcml2YXRlIGdldFZlcnNpb25IYW5kbGVyKCk6IFZlcnNpb25IYW5kbGVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy52ZXIgPz8gdGhpcy5fcGFyZW50Py5nZXRWZXJzaW9uSGFuZGxlcigpO1xuICB9XG5cbiAgLyoqIEdldCBjb21tYW5kIGRlc2NyaXB0aW9uLiAqL1xuICBwdWJsaWMgZ2V0RGVzY3JpcHRpb24oKTogc3RyaW5nIHtcbiAgICAvLyBjYWxsIGRlc2NyaXB0aW9uIG1ldGhvZCBvbmx5IG9uY2VcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuZGVzYyA9PT0gXCJmdW5jdGlvblwiXG4gICAgICA/IHRoaXMuZGVzYyA9IHRoaXMuZGVzYygpXG4gICAgICA6IHRoaXMuZGVzYztcbiAgfVxuXG4gIHB1YmxpYyBnZXRVc2FnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdXNhZ2UgPz8gdGhpcy5nZXRBcmdzRGVmaW5pdGlvbigpO1xuICB9XG5cbiAgLyoqIEdldCBzaG9ydCBjb21tYW5kIGRlc2NyaXB0aW9uLiBUaGlzIGlzIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBkZXNjcmlwdGlvbi4gKi9cbiAgcHVibGljIGdldFNob3J0RGVzY3JpcHRpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0RGVzY3JpcHRpb24odGhpcy5nZXREZXNjcmlwdGlvbigpLCB0cnVlKTtcbiAgfVxuXG4gIC8qKiBHZXQgb3JpZ2luYWwgY29tbWFuZC1saW5lIGFyZ3VtZW50cy4gKi9cbiAgcHVibGljIGdldFJhd0FyZ3MoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLnJhd0FyZ3M7XG4gIH1cblxuICAvKiogR2V0IGFsbCBhcmd1bWVudHMgZGVmaW5lZCBhZnRlciB0aGUgZG91YmxlIGRhc2guICovXG4gIHB1YmxpYyBnZXRMaXRlcmFsQXJncygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMubGl0ZXJhbEFyZ3M7XG4gIH1cblxuICAvKiogT3V0cHV0IGdlbmVyYXRlZCBoZWxwIHdpdGhvdXQgZXhpdGluZy4gKi9cbiAgcHVibGljIHNob3dWZXJzaW9uKCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKHRoaXMuZ2V0VmVyc2lvbigpKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIGNvbW1hbmQgbmFtZSwgdmVyc2lvbiBhbmQgbWV0YSBkYXRhLiAqL1xuICBwdWJsaWMgZ2V0TG9uZ1ZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7Ym9sZCh0aGlzLmdldE1haW5Db21tYW5kKCkuZ2V0TmFtZSgpKX0gJHtcbiAgICAgIGJyaWdodEJsdWUodGhpcy5nZXRWZXJzaW9uKCkgPz8gXCJcIilcbiAgICB9YCArXG4gICAgICBPYmplY3QuZW50cmllcyh0aGlzLmdldE1ldGEoKSkubWFwKFxuICAgICAgICAoW2ssIHZdKSA9PiBgXFxuJHtib2xkKGspfSAke2JyaWdodEJsdWUodil9YCxcbiAgICAgICkuam9pbihcIlwiKTtcbiAgfVxuXG4gIC8qKiBPdXRwdXRzIGNvbW1hbmQgbmFtZSwgdmVyc2lvbiBhbmQgbWV0YSBkYXRhLiAqL1xuICBwdWJsaWMgc2hvd0xvbmdWZXJzaW9uKCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKHRoaXMuZ2V0TG9uZ1ZlcnNpb24oKSk7XG4gIH1cblxuICAvKiogT3V0cHV0IGdlbmVyYXRlZCBoZWxwIHdpdGhvdXQgZXhpdGluZy4gKi9cbiAgcHVibGljIHNob3dIZWxwKG9wdGlvbnM/OiBIZWxwT3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKHRoaXMuZ2V0SGVscChvcHRpb25zKSk7XG4gIH1cblxuICAvKiogR2V0IGdlbmVyYXRlZCBoZWxwLiAqL1xuICBwdWJsaWMgZ2V0SGVscChvcHRpb25zPzogSGVscE9wdGlvbnMpOiBzdHJpbmcge1xuICAgIHRoaXMucmVnaXN0ZXJEZWZhdWx0cygpO1xuICAgIHJldHVybiB0aGlzLmdldEhlbHBIYW5kbGVyKCkuY2FsbCh0aGlzLCB0aGlzLCBvcHRpb25zID8/IHt9KTtcbiAgfVxuXG4gIC8qKiBHZXQgaGVscCBoYW5kbGVyIG1ldGhvZC4gKi9cbiAgcHJpdmF0ZSBnZXRIZWxwSGFuZGxlcigpOiBIZWxwSGFuZGxlciB7XG4gICAgcmV0dXJuIHRoaXMuX2hlbHAgPz8gdGhpcy5fcGFyZW50Py5nZXRIZWxwSGFuZGxlcigpIGFzIEhlbHBIYW5kbGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBleGl0KGNvZGUgPSAwKSB7XG4gICAgaWYgKHRoaXMuc2hvdWxkRXhpdCgpKSB7XG4gICAgICBEZW5vLmV4aXQoY29kZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENoZWNrIGlmIG5ldyB2ZXJzaW9uIGlzIGF2YWlsYWJsZSBhbmQgYWRkIGhpbnQgdG8gdmVyc2lvbi4gKi9cbiAgcHVibGljIGFzeW5jIGNoZWNrVmVyc2lvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBtYWluQ29tbWFuZCA9IHRoaXMuZ2V0TWFpbkNvbW1hbmQoKTtcbiAgICBjb25zdCB1cGdyYWRlQ29tbWFuZCA9IG1haW5Db21tYW5kLmdldENvbW1hbmQoXCJ1cGdyYWRlXCIpO1xuXG4gICAgaWYgKCFpc1VwZ3JhZGVDb21tYW5kKHVwZ3JhZGVDb21tYW5kKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBsYXRlc3RWZXJzaW9uID0gYXdhaXQgdXBncmFkZUNvbW1hbmQuZ2V0TGF0ZXN0VmVyc2lvbigpO1xuICAgIGNvbnN0IGN1cnJlbnRWZXJzaW9uID0gbWFpbkNvbW1hbmQuZ2V0VmVyc2lvbigpO1xuXG4gICAgaWYgKGN1cnJlbnRWZXJzaW9uID09PSBsYXRlc3RWZXJzaW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHZlcnNpb25IZWxwVGV4dCA9XG4gICAgICBgKE5ldyB2ZXJzaW9uIGF2YWlsYWJsZTogJHtsYXRlc3RWZXJzaW9ufS4gUnVuICcke21haW5Db21tYW5kLmdldE5hbWUoKX0gdXBncmFkZScgdG8gdXBncmFkZSB0byB0aGUgbGF0ZXN0IHZlcnNpb24hKWA7XG5cbiAgICBtYWluQ29tbWFuZC52ZXJzaW9uKGAke2N1cnJlbnRWZXJzaW9ufSAgJHtib2xkKHllbGxvdyh2ZXJzaW9uSGVscFRleHQpKX1gKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKioqKiBPcHRpb25zIEdFVFRFUiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgY29tbWFuZCBoYXMgb3B0aW9ucyBvciBub3QuXG4gICAqIEBwYXJhbSBoaWRkZW4gSW5jbHVkZSBoaWRkZW4gb3B0aW9ucy5cbiAgICovXG4gIHB1YmxpYyBoYXNPcHRpb25zKGhpZGRlbj86IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRPcHRpb25zKGhpZGRlbikubGVuZ3RoID4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgb3B0aW9ucy5cbiAgICogQHBhcmFtIGhpZGRlbiBJbmNsdWRlIGhpZGRlbiBvcHRpb25zLlxuICAgKi9cbiAgcHVibGljIGdldE9wdGlvbnMoaGlkZGVuPzogYm9vbGVhbik6IE9wdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRHbG9iYWxPcHRpb25zKGhpZGRlbikuY29uY2F0KHRoaXMuZ2V0QmFzZU9wdGlvbnMoaGlkZGVuKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGJhc2Ugb3B0aW9ucy5cbiAgICogQHBhcmFtIGhpZGRlbiBJbmNsdWRlIGhpZGRlbiBvcHRpb25zLlxuICAgKi9cbiAgcHVibGljIGdldEJhc2VPcHRpb25zKGhpZGRlbj86IGJvb2xlYW4pOiBPcHRpb25bXSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIGhpZGRlblxuICAgICAgPyB0aGlzLm9wdGlvbnMuc2xpY2UoMClcbiAgICAgIDogdGhpcy5vcHRpb25zLmZpbHRlcigob3B0KSA9PiAhb3B0LmhpZGRlbik7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGdsb2JhbCBvcHRpb25zLlxuICAgKiBAcGFyYW0gaGlkZGVuIEluY2x1ZGUgaGlkZGVuIG9wdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgZ2V0R2xvYmFsT3B0aW9ucyhoaWRkZW4/OiBib29sZWFuKTogT3B0aW9uW10ge1xuICAgIGNvbnN0IGhlbHBPcHRpb24gPSB0aGlzLmdldEhlbHBPcHRpb24oKTtcbiAgICBjb25zdCBnZXRHbG9iYWxzID0gKFxuICAgICAgY21kOiBDb21tYW5kPGFueT4sXG4gICAgICBub0dsb2JhbHM6IGJvb2xlYW4sXG4gICAgICBvcHRpb25zOiBPcHRpb25bXSA9IFtdLFxuICAgICAgbmFtZXM6IHN0cmluZ1tdID0gW10sXG4gICAgKTogT3B0aW9uW10gPT4ge1xuICAgICAgaWYgKGNtZC5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBjbWQub3B0aW9ucykge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG9wdGlvbi5nbG9iYWwgJiZcbiAgICAgICAgICAgICF0aGlzLm9wdGlvbnMuZmluZCgob3B0KSA9PiBvcHQubmFtZSA9PT0gb3B0aW9uLm5hbWUpICYmXG4gICAgICAgICAgICBuYW1lcy5pbmRleE9mKG9wdGlvbi5uYW1lKSA9PT0gLTEgJiZcbiAgICAgICAgICAgIChoaWRkZW4gfHwgIW9wdGlvbi5oaWRkZW4pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAobm9HbG9iYWxzICYmIG9wdGlvbiAhPT0gaGVscE9wdGlvbikge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbmFtZXMucHVzaChvcHRpb24ubmFtZSk7XG4gICAgICAgICAgICBvcHRpb25zLnB1c2gob3B0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNtZC5fcGFyZW50XG4gICAgICAgID8gZ2V0R2xvYmFscyhcbiAgICAgICAgICBjbWQuX3BhcmVudCxcbiAgICAgICAgICBub0dsb2JhbHMgfHwgY21kLl9ub0dsb2JhbHMsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBuYW1lcyxcbiAgICAgICAgKVxuICAgICAgICA6IG9wdGlvbnM7XG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLl9wYXJlbnQgPyBnZXRHbG9iYWxzKHRoaXMuX3BhcmVudCwgdGhpcy5fbm9HbG9iYWxzKSA6IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoZSBjb21tYW5kIGhhcyBhbiBvcHRpb24gd2l0aCBnaXZlbiBuYW1lIG9yIG5vdC5cbiAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgb3B0aW9uLiBNdXN0IGJlIGluIHBhcmFtLWNhc2UuXG4gICAqIEBwYXJhbSBoaWRkZW4gSW5jbHVkZSBoaWRkZW4gb3B0aW9ucy5cbiAgICovXG4gIHB1YmxpYyBoYXNPcHRpb24obmFtZTogc3RyaW5nLCBoaWRkZW4/OiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5nZXRPcHRpb24obmFtZSwgaGlkZGVuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgb3B0aW9uIGJ5IG5hbWUuXG4gICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgdGhlIG9wdGlvbi4gTXVzdCBiZSBpbiBwYXJhbS1jYXNlLlxuICAgKiBAcGFyYW0gaGlkZGVuIEluY2x1ZGUgaGlkZGVuIG9wdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgZ2V0T3B0aW9uKG5hbWU6IHN0cmluZywgaGlkZGVuPzogYm9vbGVhbik6IE9wdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QmFzZU9wdGlvbihuYW1lLCBoaWRkZW4pID8/XG4gICAgICB0aGlzLmdldEdsb2JhbE9wdGlvbihuYW1lLCBoaWRkZW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBiYXNlIG9wdGlvbiBieSBuYW1lLlxuICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBvcHRpb24uIE11c3QgYmUgaW4gcGFyYW0tY2FzZS5cbiAgICogQHBhcmFtIGhpZGRlbiBJbmNsdWRlIGhpZGRlbiBvcHRpb25zLlxuICAgKi9cbiAgcHVibGljIGdldEJhc2VPcHRpb24obmFtZTogc3RyaW5nLCBoaWRkZW4/OiBib29sZWFuKTogT3B0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBvcHRpb24gPSB0aGlzLm9wdGlvbnMuZmluZCgob3B0aW9uKSA9PlxuICAgICAgb3B0aW9uLm5hbWUgPT09IG5hbWUgfHwgb3B0aW9uLmFsaWFzZXM/LmluY2x1ZGVzKG5hbWUpXG4gICAgKTtcblxuICAgIHJldHVybiBvcHRpb24gJiYgKGhpZGRlbiB8fCAhb3B0aW9uLmhpZGRlbikgPyBvcHRpb24gOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGdsb2JhbCBvcHRpb24gZnJvbSBwYXJlbnQgY29tbWFuZHMgYnkgbmFtZS5cbiAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgb3B0aW9uLiBNdXN0IGJlIGluIHBhcmFtLWNhc2UuXG4gICAqIEBwYXJhbSBoaWRkZW4gSW5jbHVkZSBoaWRkZW4gb3B0aW9ucy5cbiAgICovXG4gIHB1YmxpYyBnZXRHbG9iYWxPcHRpb24obmFtZTogc3RyaW5nLCBoaWRkZW4/OiBib29sZWFuKTogT3B0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBoZWxwT3B0aW9uID0gdGhpcy5nZXRIZWxwT3B0aW9uKCk7XG4gICAgY29uc3QgZ2V0R2xvYmFsT3B0aW9uID0gKFxuICAgICAgcGFyZW50OiBDb21tYW5kLFxuICAgICAgbm9HbG9iYWxzOiBib29sZWFuLFxuICAgICk6IE9wdGlvbiB8IHVuZGVmaW5lZCA9PiB7XG4gICAgICBjb25zdCBvcHRpb246IE9wdGlvbiB8IHVuZGVmaW5lZCA9IHBhcmVudC5nZXRCYXNlT3B0aW9uKFxuICAgICAgICBuYW1lLFxuICAgICAgICBoaWRkZW4sXG4gICAgICApO1xuXG4gICAgICBpZiAoIW9wdGlvbj8uZ2xvYmFsKSB7XG4gICAgICAgIHJldHVybiBwYXJlbnQuX3BhcmVudCAmJiBnZXRHbG9iYWxPcHRpb24oXG4gICAgICAgICAgcGFyZW50Ll9wYXJlbnQsXG4gICAgICAgICAgbm9HbG9iYWxzIHx8IHBhcmVudC5fbm9HbG9iYWxzLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKG5vR2xvYmFscyAmJiBvcHRpb24gIT09IGhlbHBPcHRpb24pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3B0aW9uO1xuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5fcGFyZW50ICYmIGdldEdsb2JhbE9wdGlvbihcbiAgICAgIHRoaXMuX3BhcmVudCxcbiAgICAgIHRoaXMuX25vR2xvYmFscyxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBvcHRpb24gYnkgbmFtZS5cbiAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgb3B0aW9uLiBNdXN0IGJlIGluIHBhcmFtLWNhc2UuXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlT3B0aW9uKG5hbWU6IHN0cmluZyk6IE9wdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLm9wdGlvbnMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi5uYW1lID09PSBuYW1lKTtcblxuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNwbGljZShpbmRleCwgMSlbMF07XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGNvbW1hbmQgaGFzIHN1Yi1jb21tYW5kcyBvciBub3QuXG4gICAqIEBwYXJhbSBoaWRkZW4gSW5jbHVkZSBoaWRkZW4gY29tbWFuZHMuXG4gICAqL1xuICBwdWJsaWMgaGFzQ29tbWFuZHMoaGlkZGVuPzogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldENvbW1hbmRzKGhpZGRlbikubGVuZ3RoID4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY29tbWFuZHMuXG4gICAqIEBwYXJhbSBoaWRkZW4gSW5jbHVkZSBoaWRkZW4gY29tbWFuZHMuXG4gICAqL1xuICBwdWJsaWMgZ2V0Q29tbWFuZHMoaGlkZGVuPzogYm9vbGVhbik6IEFycmF5PENvbW1hbmQ8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLmdldEdsb2JhbENvbW1hbmRzKGhpZGRlbikuY29uY2F0KHRoaXMuZ2V0QmFzZUNvbW1hbmRzKGhpZGRlbikpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBiYXNlIGNvbW1hbmRzLlxuICAgKiBAcGFyYW0gaGlkZGVuIEluY2x1ZGUgaGlkZGVuIGNvbW1hbmRzLlxuICAgKi9cbiAgcHVibGljIGdldEJhc2VDb21tYW5kcyhoaWRkZW4/OiBib29sZWFuKTogQXJyYXk8Q29tbWFuZDxhbnk+PiB7XG4gICAgY29uc3QgY29tbWFuZHMgPSBBcnJheS5mcm9tKHRoaXMuY29tbWFuZHMudmFsdWVzKCkpO1xuICAgIHJldHVybiBoaWRkZW4gPyBjb21tYW5kcyA6IGNvbW1hbmRzLmZpbHRlcigoY21kKSA9PiAhY21kLmlzSGlkZGVuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZ2xvYmFsIGNvbW1hbmRzLlxuICAgKiBAcGFyYW0gaGlkZGVuIEluY2x1ZGUgaGlkZGVuIGNvbW1hbmRzLlxuICAgKi9cbiAgcHVibGljIGdldEdsb2JhbENvbW1hbmRzKGhpZGRlbj86IGJvb2xlYW4pOiBBcnJheTxDb21tYW5kPGFueT4+IHtcbiAgICBjb25zdCBnZXRDb21tYW5kcyA9IChcbiAgICAgIGNvbW1hbmQ6IENvbW1hbmQ8YW55PixcbiAgICAgIG5vR2xvYmFsczogYm9vbGVhbixcbiAgICAgIGNvbW1hbmRzOiBBcnJheTxDb21tYW5kPGFueT4+ID0gW10sXG4gICAgICBuYW1lczogc3RyaW5nW10gPSBbXSxcbiAgICApOiBBcnJheTxDb21tYW5kPGFueT4+ID0+IHtcbiAgICAgIGlmIChjb21tYW5kLmNvbW1hbmRzLnNpemUpIHtcbiAgICAgICAgZm9yIChjb25zdCBbXywgY21kXSBvZiBjb21tYW5kLmNvbW1hbmRzKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgY21kLmlzR2xvYmFsICYmXG4gICAgICAgICAgICB0aGlzICE9PSBjbWQgJiZcbiAgICAgICAgICAgICF0aGlzLmNvbW1hbmRzLmhhcyhjbWQuX25hbWUpICYmXG4gICAgICAgICAgICBuYW1lcy5pbmRleE9mKGNtZC5fbmFtZSkgPT09IC0xICYmXG4gICAgICAgICAgICAoaGlkZGVuIHx8ICFjbWQuaXNIaWRkZW4pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAobm9HbG9iYWxzICYmIGNtZD8uZ2V0TmFtZSgpICE9PSBcImhlbHBcIikge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbmFtZXMucHVzaChjbWQuX25hbWUpO1xuICAgICAgICAgICAgY29tbWFuZHMucHVzaChjbWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tbWFuZC5fcGFyZW50XG4gICAgICAgID8gZ2V0Q29tbWFuZHMoXG4gICAgICAgICAgY29tbWFuZC5fcGFyZW50LFxuICAgICAgICAgIG5vR2xvYmFscyB8fCBjb21tYW5kLl9ub0dsb2JhbHMsXG4gICAgICAgICAgY29tbWFuZHMsXG4gICAgICAgICAgbmFtZXMsXG4gICAgICAgIClcbiAgICAgICAgOiBjb21tYW5kcztcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuX3BhcmVudCA/IGdldENvbW1hbmRzKHRoaXMuX3BhcmVudCwgdGhpcy5fbm9HbG9iYWxzKSA6IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgY2hpbGQgY29tbWFuZCBleGlzdHMgYnkgZ2l2ZW4gbmFtZSBvciBhbGlhcy5cbiAgICogQHBhcmFtIG5hbWUgTmFtZSBvciBhbGlhcyBvZiB0aGUgY29tbWFuZC5cbiAgICogQHBhcmFtIGhpZGRlbiBJbmNsdWRlIGhpZGRlbiBjb21tYW5kcy5cbiAgICovXG4gIHB1YmxpYyBoYXNDb21tYW5kKG5hbWU6IHN0cmluZywgaGlkZGVuPzogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZ2V0Q29tbWFuZChuYW1lLCBoaWRkZW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb21tYW5kIGJ5IG5hbWUgb3IgYWxpYXMuXG4gICAqIEBwYXJhbSBuYW1lIE5hbWUgb3IgYWxpYXMgb2YgdGhlIGNvbW1hbmQuXG4gICAqIEBwYXJhbSBoaWRkZW4gSW5jbHVkZSBoaWRkZW4gY29tbWFuZHMuXG4gICAqL1xuICBwdWJsaWMgZ2V0Q29tbWFuZDxUQ29tbWFuZCBleHRlbmRzIENvbW1hbmQ8YW55Pj4oXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGhpZGRlbj86IGJvb2xlYW4sXG4gICk6IFRDb21tYW5kIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5nZXRCYXNlQ29tbWFuZChuYW1lLCBoaWRkZW4pID8/XG4gICAgICB0aGlzLmdldEdsb2JhbENvbW1hbmQobmFtZSwgaGlkZGVuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYmFzZSBjb21tYW5kIGJ5IG5hbWUgb3IgYWxpYXMuXG4gICAqIEBwYXJhbSBuYW1lIE5hbWUgb3IgYWxpYXMgb2YgdGhlIGNvbW1hbmQuXG4gICAqIEBwYXJhbSBoaWRkZW4gSW5jbHVkZSBoaWRkZW4gY29tbWFuZHMuXG4gICAqL1xuICBwdWJsaWMgZ2V0QmFzZUNvbW1hbmQ8VENvbW1hbmQgZXh0ZW5kcyBDb21tYW5kPGFueT4+KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBoaWRkZW4/OiBib29sZWFuLFxuICApOiBUQ29tbWFuZCB8IHVuZGVmaW5lZCB7XG4gICAgZm9yIChjb25zdCBjbWQgb2YgdGhpcy5jb21tYW5kcy52YWx1ZXMoKSkge1xuICAgICAgaWYgKGNtZC5fbmFtZSA9PT0gbmFtZSB8fCBjbWQuYWxpYXNlcy5pbmNsdWRlcyhuYW1lKSkge1xuICAgICAgICByZXR1cm4gKGNtZCAmJiAoaGlkZGVuIHx8ICFjbWQuaXNIaWRkZW4pID8gY21kIDogdW5kZWZpbmVkKSBhc1xuICAgICAgICAgIHwgVENvbW1hbmRcbiAgICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGdsb2JhbCBjb21tYW5kIGJ5IG5hbWUgb3IgYWxpYXMuXG4gICAqIEBwYXJhbSBuYW1lIE5hbWUgb3IgYWxpYXMgb2YgdGhlIGNvbW1hbmQuXG4gICAqIEBwYXJhbSBoaWRkZW4gSW5jbHVkZSBoaWRkZW4gY29tbWFuZHMuXG4gICAqL1xuICBwdWJsaWMgZ2V0R2xvYmFsQ29tbWFuZDxUQ29tbWFuZCBleHRlbmRzIENvbW1hbmQ8YW55Pj4oXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGhpZGRlbj86IGJvb2xlYW4sXG4gICk6IFRDb21tYW5kIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBnZXRHbG9iYWxDb21tYW5kID0gKFxuICAgICAgcGFyZW50OiBDb21tYW5kLFxuICAgICAgbm9HbG9iYWxzOiBib29sZWFuLFxuICAgICk6IENvbW1hbmQgfCB1bmRlZmluZWQgPT4ge1xuICAgICAgY29uc3QgY21kOiBDb21tYW5kIHwgdW5kZWZpbmVkID0gcGFyZW50LmdldEJhc2VDb21tYW5kKG5hbWUsIGhpZGRlbik7XG5cbiAgICAgIGlmICghY21kPy5pc0dsb2JhbCkge1xuICAgICAgICByZXR1cm4gcGFyZW50Ll9wYXJlbnQgJiZcbiAgICAgICAgICBnZXRHbG9iYWxDb21tYW5kKHBhcmVudC5fcGFyZW50LCBub0dsb2JhbHMgfHwgcGFyZW50Ll9ub0dsb2JhbHMpO1xuICAgICAgfVxuICAgICAgaWYgKG5vR2xvYmFscyAmJiBjbWQuZ2V0TmFtZSgpICE9PSBcImhlbHBcIikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjbWQ7XG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLl9wYXJlbnQgJiZcbiAgICAgIGdldEdsb2JhbENvbW1hbmQodGhpcy5fcGFyZW50LCB0aGlzLl9ub0dsb2JhbHMpIGFzIFRDb21tYW5kO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBzdWItY29tbWFuZCBieSBuYW1lIG9yIGFsaWFzLlxuICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9yIGFsaWFzIG9mIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcHVibGljIHJlbW92ZUNvbW1hbmQobmFtZTogc3RyaW5nKTogQ29tbWFuZDxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjb21tYW5kID0gdGhpcy5nZXRCYXNlQ29tbWFuZChuYW1lLCB0cnVlKTtcblxuICAgIGlmIChjb21tYW5kKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzLmRlbGV0ZShjb21tYW5kLl9uYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tbWFuZDtcbiAgfVxuXG4gIC8qKiBHZXQgdHlwZXMuICovXG4gIHB1YmxpYyBnZXRUeXBlcygpOiBBcnJheTxUeXBlRGVmPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0R2xvYmFsVHlwZXMoKS5jb25jYXQodGhpcy5nZXRCYXNlVHlwZXMoKSk7XG4gIH1cblxuICAvKiogR2V0IGJhc2UgdHlwZXMuICovXG4gIHB1YmxpYyBnZXRCYXNlVHlwZXMoKTogQXJyYXk8VHlwZURlZj4ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMudHlwZXMudmFsdWVzKCkpO1xuICB9XG5cbiAgLyoqIEdldCBnbG9iYWwgdHlwZXMuICovXG4gIHB1YmxpYyBnZXRHbG9iYWxUeXBlcygpOiBBcnJheTxUeXBlRGVmPiB7XG4gICAgY29uc3QgZ2V0VHlwZXMgPSAoXG4gICAgICBjbWQ6IENvbW1hbmQ8YW55PiB8IHVuZGVmaW5lZCxcbiAgICAgIHR5cGVzOiBBcnJheTxUeXBlRGVmPiA9IFtdLFxuICAgICAgbmFtZXM6IEFycmF5PHN0cmluZz4gPSBbXSxcbiAgICApOiBBcnJheTxUeXBlRGVmPiA9PiB7XG4gICAgICBpZiAoY21kKSB7XG4gICAgICAgIGlmIChjbWQudHlwZXMuc2l6ZSkge1xuICAgICAgICAgIGNtZC50eXBlcy5mb3JFYWNoKCh0eXBlOiBUeXBlRGVmKSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHR5cGUuZ2xvYmFsICYmXG4gICAgICAgICAgICAgICF0aGlzLnR5cGVzLmhhcyh0eXBlLm5hbWUpICYmXG4gICAgICAgICAgICAgIG5hbWVzLmluZGV4T2YodHlwZS5uYW1lKSA9PT0gLTFcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBuYW1lcy5wdXNoKHR5cGUubmFtZSk7XG4gICAgICAgICAgICAgIHR5cGVzLnB1c2godHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0VHlwZXMoY21kLl9wYXJlbnQsIHR5cGVzLCBuYW1lcyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0eXBlcztcbiAgICB9O1xuXG4gICAgcmV0dXJuIGdldFR5cGVzKHRoaXMuX3BhcmVudCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHR5cGUgYnkgbmFtZS5cbiAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgdHlwZS5cbiAgICovXG4gIHB1YmxpYyBnZXRUeXBlKG5hbWU6IHN0cmluZyk6IFR5cGVEZWYgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmdldEJhc2VUeXBlKG5hbWUpID8/IHRoaXMuZ2V0R2xvYmFsVHlwZShuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYmFzZSB0eXBlIGJ5IG5hbWUuXG4gICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgdGhlIHR5cGUuXG4gICAqL1xuICBwdWJsaWMgZ2V0QmFzZVR5cGUobmFtZTogc3RyaW5nKTogVHlwZURlZiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudHlwZXMuZ2V0KG5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBnbG9iYWwgdHlwZSBieSBuYW1lLlxuICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSB0eXBlLlxuICAgKi9cbiAgcHVibGljIGdldEdsb2JhbFR5cGUobmFtZTogc3RyaW5nKTogVHlwZURlZiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLl9wYXJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjbWQ6IFR5cGVEZWYgfCB1bmRlZmluZWQgPSB0aGlzLl9wYXJlbnQuZ2V0QmFzZVR5cGUobmFtZSk7XG5cbiAgICBpZiAoIWNtZD8uZ2xvYmFsKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcGFyZW50LmdldEdsb2JhbFR5cGUobmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNtZDtcbiAgfVxuXG4gIC8qKiBHZXQgY29tcGxldGlvbnMuICovXG4gIHB1YmxpYyBnZXRDb21wbGV0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRHbG9iYWxDb21wbGV0aW9ucygpLmNvbmNhdCh0aGlzLmdldEJhc2VDb21wbGV0aW9ucygpKTtcbiAgfVxuXG4gIC8qKiBHZXQgYmFzZSBjb21wbGV0aW9ucy4gKi9cbiAgcHVibGljIGdldEJhc2VDb21wbGV0aW9ucygpOiBDb21wbGV0aW9uW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuY29tcGxldGlvbnMudmFsdWVzKCkpO1xuICB9XG5cbiAgLyoqIEdldCBnbG9iYWwgY29tcGxldGlvbnMuICovXG4gIHB1YmxpYyBnZXRHbG9iYWxDb21wbGV0aW9ucygpOiBDb21wbGV0aW9uW10ge1xuICAgIGNvbnN0IGdldENvbXBsZXRpb25zID0gKFxuICAgICAgY21kOiBDb21tYW5kPGFueT4gfCB1bmRlZmluZWQsXG4gICAgICBjb21wbGV0aW9uczogQ29tcGxldGlvbltdID0gW10sXG4gICAgICBuYW1lczogc3RyaW5nW10gPSBbXSxcbiAgICApOiBDb21wbGV0aW9uW10gPT4ge1xuICAgICAgaWYgKGNtZCkge1xuICAgICAgICBpZiAoY21kLmNvbXBsZXRpb25zLnNpemUpIHtcbiAgICAgICAgICBjbWQuY29tcGxldGlvbnMuZm9yRWFjaCgoY29tcGxldGlvbjogQ29tcGxldGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBjb21wbGV0aW9uLmdsb2JhbCAmJlxuICAgICAgICAgICAgICAhdGhpcy5jb21wbGV0aW9ucy5oYXMoY29tcGxldGlvbi5uYW1lKSAmJlxuICAgICAgICAgICAgICBuYW1lcy5pbmRleE9mKGNvbXBsZXRpb24ubmFtZSkgPT09IC0xXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgbmFtZXMucHVzaChjb21wbGV0aW9uLm5hbWUpO1xuICAgICAgICAgICAgICBjb21wbGV0aW9ucy5wdXNoKGNvbXBsZXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldENvbXBsZXRpb25zKGNtZC5fcGFyZW50LCBjb21wbGV0aW9ucywgbmFtZXMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tcGxldGlvbnM7XG4gICAgfTtcblxuICAgIHJldHVybiBnZXRDb21wbGV0aW9ucyh0aGlzLl9wYXJlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb21wbGV0aW9uIGJ5IG5hbWUuXG4gICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgdGhlIGNvbXBsZXRpb24uXG4gICAqL1xuICBwdWJsaWMgZ2V0Q29tcGxldGlvbihuYW1lOiBzdHJpbmcpOiBDb21wbGV0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5nZXRCYXNlQ29tcGxldGlvbihuYW1lKSA/PyB0aGlzLmdldEdsb2JhbENvbXBsZXRpb24obmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGJhc2UgY29tcGxldGlvbiBieSBuYW1lLlxuICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBjb21wbGV0aW9uLlxuICAgKi9cbiAgcHVibGljIGdldEJhc2VDb21wbGV0aW9uKG5hbWU6IHN0cmluZyk6IENvbXBsZXRpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNvbXBsZXRpb25zLmdldChuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZ2xvYmFsIGNvbXBsZXRpb25zIGJ5IG5hbWUuXG4gICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgdGhlIGNvbXBsZXRpb24uXG4gICAqL1xuICBwdWJsaWMgZ2V0R2xvYmFsQ29tcGxldGlvbihuYW1lOiBzdHJpbmcpOiBDb21wbGV0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMuX3BhcmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbXBsZXRpb246IENvbXBsZXRpb24gfCB1bmRlZmluZWQgPSB0aGlzLl9wYXJlbnQuZ2V0QmFzZUNvbXBsZXRpb24oXG4gICAgICBuYW1lLFxuICAgICk7XG5cbiAgICBpZiAoIWNvbXBsZXRpb24/Lmdsb2JhbCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudC5nZXRHbG9iYWxDb21wbGV0aW9uKG5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBjb21wbGV0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoZSBjb21tYW5kIGhhcyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb3Igbm90LlxuICAgKiBAcGFyYW0gaGlkZGVuIEluY2x1ZGUgaGlkZGVuIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcHVibGljIGhhc0VudlZhcnMoaGlkZGVuPzogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldEVudlZhcnMoaGlkZGVuKS5sZW5ndGggPiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAqIEBwYXJhbSBoaWRkZW4gSW5jbHVkZSBoaWRkZW4gZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqL1xuICBwdWJsaWMgZ2V0RW52VmFycyhoaWRkZW4/OiBib29sZWFuKTogRW52VmFyW10ge1xuICAgIHJldHVybiB0aGlzLmdldEdsb2JhbEVudlZhcnMoaGlkZGVuKS5jb25jYXQodGhpcy5nZXRCYXNlRW52VmFycyhoaWRkZW4pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYmFzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAqIEBwYXJhbSBoaWRkZW4gSW5jbHVkZSBoaWRkZW4gZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqL1xuICBwdWJsaWMgZ2V0QmFzZUVudlZhcnMoaGlkZGVuPzogYm9vbGVhbik6IEVudlZhcltdIHtcbiAgICBpZiAoIXRoaXMuZW52VmFycy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGlkZGVuXG4gICAgICA/IHRoaXMuZW52VmFycy5zbGljZSgwKVxuICAgICAgOiB0aGlzLmVudlZhcnMuZmlsdGVyKChlbnYpID0+ICFlbnYuaGlkZGVuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZ2xvYmFsIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICogQHBhcmFtIGhpZGRlbiBJbmNsdWRlIGhpZGRlbiBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHB1YmxpYyBnZXRHbG9iYWxFbnZWYXJzKGhpZGRlbj86IGJvb2xlYW4pOiBFbnZWYXJbXSB7XG4gICAgaWYgKHRoaXMuX25vR2xvYmFscykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGdldEVudlZhcnMgPSAoXG4gICAgICBjbWQ6IENvbW1hbmQ8YW55PiB8IHVuZGVmaW5lZCxcbiAgICAgIGVudlZhcnM6IEVudlZhcltdID0gW10sXG4gICAgICBuYW1lczogc3RyaW5nW10gPSBbXSxcbiAgICApOiBFbnZWYXJbXSA9PiB7XG4gICAgICBpZiAoY21kKSB7XG4gICAgICAgIGlmIChjbWQuZW52VmFycy5sZW5ndGgpIHtcbiAgICAgICAgICBjbWQuZW52VmFycy5mb3JFYWNoKChlbnZWYXI6IEVudlZhcikgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBlbnZWYXIuZ2xvYmFsICYmXG4gICAgICAgICAgICAgICF0aGlzLmVudlZhcnMuZmluZCgoZW52KSA9PiBlbnYubmFtZXNbMF0gPT09IGVudlZhci5uYW1lc1swXSkgJiZcbiAgICAgICAgICAgICAgbmFtZXMuaW5kZXhPZihlbnZWYXIubmFtZXNbMF0pID09PSAtMSAmJlxuICAgICAgICAgICAgICAoaGlkZGVuIHx8ICFlbnZWYXIuaGlkZGVuKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIG5hbWVzLnB1c2goZW52VmFyLm5hbWVzWzBdKTtcbiAgICAgICAgICAgICAgZW52VmFycy5wdXNoKGVudlZhcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0RW52VmFycyhjbWQuX3BhcmVudCwgZW52VmFycywgbmFtZXMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZW52VmFycztcbiAgICB9O1xuXG4gICAgcmV0dXJuIGdldEVudlZhcnModGhpcy5fcGFyZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgY29tbWFuZCBoYXMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgd2l0aCBnaXZlbiBuYW1lIG9yIG5vdC5cbiAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqIEBwYXJhbSBoaWRkZW4gSW5jbHVkZSBoaWRkZW4gZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gICAqL1xuICBwdWJsaWMgaGFzRW52VmFyKG5hbWU6IHN0cmluZywgaGlkZGVuPzogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZ2V0RW52VmFyKG5hbWUsIGhpZGRlbik7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGVudmlyb25tZW50IHZhcmlhYmxlIGJ5IG5hbWUuXG4gICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKiBAcGFyYW0gaGlkZGVuIEluY2x1ZGUgaGlkZGVuIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgKi9cbiAgcHVibGljIGdldEVudlZhcihuYW1lOiBzdHJpbmcsIGhpZGRlbj86IGJvb2xlYW4pOiBFbnZWYXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmdldEJhc2VFbnZWYXIobmFtZSwgaGlkZGVuKSA/P1xuICAgICAgdGhpcy5nZXRHbG9iYWxFbnZWYXIobmFtZSwgaGlkZGVuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYmFzZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBieSBuYW1lLlxuICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICogQHBhcmFtIGhpZGRlbiBJbmNsdWRlIGhpZGRlbiBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHB1YmxpYyBnZXRCYXNlRW52VmFyKG5hbWU6IHN0cmluZywgaGlkZGVuPzogYm9vbGVhbik6IEVudlZhciB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZW52VmFyOiBFbnZWYXIgfCB1bmRlZmluZWQgPSB0aGlzLmVudlZhcnMuZmluZCgoZW52KSA9PlxuICAgICAgZW52Lm5hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xXG4gICAgKTtcblxuICAgIHJldHVybiBlbnZWYXIgJiYgKGhpZGRlbiB8fCAhZW52VmFyLmhpZGRlbikgPyBlbnZWYXIgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGdsb2JhbCBlbnZpcm9ubWVudCB2YXJpYWJsZSBieSBuYW1lLlxuICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICogQHBhcmFtIGhpZGRlbiBJbmNsdWRlIGhpZGRlbiBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAgICovXG4gIHB1YmxpYyBnZXRHbG9iYWxFbnZWYXIobmFtZTogc3RyaW5nLCBoaWRkZW4/OiBib29sZWFuKTogRW52VmFyIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMuX3BhcmVudCB8fCB0aGlzLl9ub0dsb2JhbHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlbnZWYXI6IEVudlZhciB8IHVuZGVmaW5lZCA9IHRoaXMuX3BhcmVudC5nZXRCYXNlRW52VmFyKFxuICAgICAgbmFtZSxcbiAgICAgIGhpZGRlbixcbiAgICApO1xuXG4gICAgaWYgKCFlbnZWYXI/Lmdsb2JhbCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudC5nZXRHbG9iYWxFbnZWYXIobmFtZSwgaGlkZGVuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW52VmFyO1xuICB9XG5cbiAgLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBjb21tYW5kIGhhcyBleGFtcGxlcyBvciBub3QuICovXG4gIHB1YmxpYyBoYXNFeGFtcGxlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5leGFtcGxlcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgLyoqIEdldCBhbGwgZXhhbXBsZXMuICovXG4gIHB1YmxpYyBnZXRFeGFtcGxlcygpOiBFeGFtcGxlW10ge1xuICAgIHJldHVybiB0aGlzLmV4YW1wbGVzO1xuICB9XG5cbiAgLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBjb21tYW5kIGhhcyBhbiBleGFtcGxlIHdpdGggZ2l2ZW4gbmFtZSBvciBub3QuICovXG4gIHB1YmxpYyBoYXNFeGFtcGxlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZ2V0RXhhbXBsZShuYW1lKTtcbiAgfVxuXG4gIC8qKiBHZXQgZXhhbXBsZSB3aXRoIGdpdmVuIG5hbWUuICovXG4gIHB1YmxpYyBnZXRFeGFtcGxlKG5hbWU6IHN0cmluZyk6IEV4YW1wbGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmV4YW1wbGVzLmZpbmQoKGV4YW1wbGUpID0+IGV4YW1wbGUubmFtZSA9PT0gbmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGdldEhlbHBPcHRpb24oKTogT3B0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5faGVscE9wdGlvbiA/PyB0aGlzLl9wYXJlbnQ/LmdldEhlbHBPcHRpb24oKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc1VwZ3JhZGVDb21tYW5kKGNvbW1hbmQ6IHVua25vd24pOiBjb21tYW5kIGlzIFVwZ3JhZGVDb21tYW5kSW1wbCB7XG4gIHJldHVybiBjb21tYW5kIGluc3RhbmNlb2YgQ29tbWFuZCAmJiBcImdldExhdGVzdFZlcnNpb25cIiBpbiBjb21tYW5kO1xufVxuXG5pbnRlcmZhY2UgVXBncmFkZUNvbW1hbmRJbXBsIHtcbiAgZ2V0TGF0ZXN0VmVyc2lvbigpOiBQcm9taXNlPHN0cmluZz47XG59XG5cbmludGVyZmFjZSBEZWZhdWx0T3B0aW9uIHtcbiAgZmxhZ3M6IHN0cmluZztcbiAgZGVzYz86IHN0cmluZztcbiAgb3B0cz86IE9wdGlvbk9wdGlvbnM7XG59XG5cbnR5cGUgQWN0aW9uT3B0aW9uID0gT3B0aW9uICYgeyBhY3Rpb246IEFjdGlvbkhhbmRsZXIgfTtcblxuaW50ZXJmYWNlIFBhcnNlQ29udGV4dCBleHRlbmRzIFBhcnNlRmxhZ3NDb250ZXh0PFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIGFjdGlvbj86IEFjdGlvbk9wdGlvbjtcbiAgZW52OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuaW50ZXJmYWNlIFBhcnNlT3B0aW9uc09wdGlvbnMge1xuICBzdG9wRWFybHk/OiBib29sZWFuO1xuICBzdG9wT25Vbmtub3duPzogYm9vbGVhbjtcbiAgZG90dGVkPzogYm9vbGVhbjtcbn1cblxudHlwZSBUcmltTGVmdDxUVmFsdWUgZXh0ZW5kcyBzdHJpbmcsIFRUcmltVmFsdWUgZXh0ZW5kcyBzdHJpbmcgfCB1bmRlZmluZWQ+ID1cbiAgVFZhbHVlIGV4dGVuZHMgYCR7VFRyaW1WYWx1ZX0ke2luZmVyIFRSZXN0fWAgPyBUUmVzdFxuICAgIDogVFZhbHVlO1xuXG50eXBlIFRyaW1SaWdodDxUVmFsdWUgZXh0ZW5kcyBzdHJpbmcsIFRUcmltVmFsdWUgZXh0ZW5kcyBzdHJpbmc+ID1cbiAgVFZhbHVlIGV4dGVuZHMgYCR7aW5mZXIgVFJlc3R9JHtUVHJpbVZhbHVlfWAgPyBUUmVzdFxuICAgIDogVFZhbHVlO1xuXG50eXBlIExvd2VyPFRWYWx1ZSBleHRlbmRzIHN0cmluZz4gPSBUVmFsdWUgZXh0ZW5kcyBVcHBlcmNhc2U8VFZhbHVlPlxuICA/IExvd2VyY2FzZTxUVmFsdWU+XG4gIDogVW5jYXBpdGFsaXplPFRWYWx1ZT47XG5cbnR5cGUgQ2FtZWxDYXNlPFRWYWx1ZSBleHRlbmRzIHN0cmluZz4gPSBUVmFsdWUgZXh0ZW5kc1xuICBgJHtpbmZlciBUUGFydH1fJHtpbmZlciBUUmVzdH1gXG4gID8gYCR7TG93ZXI8VFBhcnQ+fSR7Q2FwaXRhbGl6ZTxDYW1lbENhc2U8VFJlc3Q+Pn1gXG4gIDogVFZhbHVlIGV4dGVuZHMgYCR7aW5mZXIgVFBhcnR9LSR7aW5mZXIgVFJlc3R9YFxuICAgID8gYCR7TG93ZXI8VFBhcnQ+fSR7Q2FwaXRhbGl6ZTxDYW1lbENhc2U8VFJlc3Q+Pn1gXG4gIDogTG93ZXI8VFZhbHVlPjtcblxudHlwZSBPbmVPZjxUVmFsdWUsIFREZWZhdWx0PiA9IFRWYWx1ZSBleHRlbmRzIHZvaWQgPyBURGVmYXVsdCA6IFRWYWx1ZTtcblxudHlwZSBNZXJnZTxUTGVmdCwgVFJpZ2h0PiA9IFRMZWZ0IGV4dGVuZHMgdm9pZCA/IFRSaWdodFxuICA6IFRSaWdodCBleHRlbmRzIHZvaWQgPyBUTGVmdFxuICA6IFRMZWZ0ICYgVFJpZ2h0O1xuXG4vLyB0eXBlIE1lcmdlPEwsIFI+ID0gTCBleHRlbmRzIHZvaWQgPyBSXG4vLyAgIDogUiBleHRlbmRzIHZvaWQgPyBMXG4vLyAgIDogT21pdDxMLCBrZXlvZiBSPiAmIFI7XG5cbnR5cGUgTWVyZ2VSZWN1cnNpdmU8VExlZnQsIFRSaWdodD4gPSBUTGVmdCBleHRlbmRzIHZvaWQgPyBUUmlnaHRcbiAgOiBUUmlnaHQgZXh0ZW5kcyB2b2lkID8gVExlZnRcbiAgOiBUTGVmdCAmIFRSaWdodDtcblxudHlwZSBPcHRpb25hbE9yUmVxdWlyZWRWYWx1ZTxUVHlwZSBleHRlbmRzIHN0cmluZz4gPVxuICB8IGBbJHtUVHlwZX1dYFxuICB8IGA8JHtUVHlwZX0+YDtcbnR5cGUgUmVzdFZhbHVlID0gYC4uLiR7c3RyaW5nfWAgfCBgJHtzdHJpbmd9Li4uYDtcblxuLyoqXG4gKiBSZXN0IGFyZ3Mgd2l0aCBsaXN0IHR5cGUgYW5kIGNvbXBsZXRpb25zLlxuICpcbiAqIC0gYFsuLi5uYW1lOnR5cGVbXTpjb21wbGV0aW9uXWBcbiAqIC0gYDwuLi5uYW1lOnR5cGVbXTpjb21wbGV0aW9uPmBcbiAqIC0gYFtuYW1lLi4uOnR5cGVbXTpjb21wbGV0aW9uXWBcbiAqIC0gYDxuYW1lLi4uOnR5cGVbXTpjb21wbGV0aW9uPmBcbiAqL1xudHlwZSBSZXN0QXJnc0xpc3RUeXBlQ29tcGxldGlvbjxUVHlwZSBleHRlbmRzIHN0cmluZz4gPSBPcHRpb25hbE9yUmVxdWlyZWRWYWx1ZTxcbiAgYCR7UmVzdFZhbHVlfToke1RUeXBlfVtdOiR7c3RyaW5nfWBcbj47XG5cbi8qKlxuICogUmVzdCBhcmdzIHdpdGggbGlzdCB0eXBlLlxuICpcbiAqIC0gYFsuLi5uYW1lOnR5cGVbXV1gXG4gKiAtIGA8Li4ubmFtZTp0eXBlW10+YFxuICogLSBgW25hbWUuLi46dHlwZVtdXWBcbiAqIC0gYDxuYW1lLi4uOnR5cGVbXT5gXG4gKi9cbnR5cGUgUmVzdEFyZ3NMaXN0VHlwZTxUVHlwZSBleHRlbmRzIHN0cmluZz4gPSBPcHRpb25hbE9yUmVxdWlyZWRWYWx1ZTxcbiAgYCR7UmVzdFZhbHVlfToke1RUeXBlfVtdYFxuPjtcblxuLyoqXG4gKiBSZXN0IGFyZ3Mgd2l0aCB0eXBlIGFuZCBjb21wbGV0aW9ucy5cbiAqXG4gKiAtIGBbLi4ubmFtZTp0eXBlOmNvbXBsZXRpb25dYFxuICogLSBgPC4uLm5hbWU6dHlwZTpjb21wbGV0aW9uPmBcbiAqIC0gYFtuYW1lLi4uOnR5cGU6Y29tcGxldGlvbl1gXG4gKiAtIGA8bmFtZS4uLjp0eXBlOmNvbXBsZXRpb24+YFxuICovXG50eXBlIFJlc3RBcmdzVHlwZUNvbXBsZXRpb248VFR5cGUgZXh0ZW5kcyBzdHJpbmc+ID0gT3B0aW9uYWxPclJlcXVpcmVkVmFsdWU8XG4gIGAke1Jlc3RWYWx1ZX06JHtUVHlwZX06JHtzdHJpbmd9YFxuPjtcblxuLyoqXG4gKiBSZXN0IGFyZ3Mgd2l0aCB0eXBlLlxuICpcbiAqIC0gYFsuLi5uYW1lOnR5cGVdYFxuICogLSBgPC4uLm5hbWU6dHlwZT5gXG4gKiAtIGBbbmFtZS4uLjp0eXBlXWBcbiAqIC0gYDxuYW1lLi4uOnR5cGU+YFxuICovXG50eXBlIFJlc3RBcmdzVHlwZTxUVHlwZSBleHRlbmRzIHN0cmluZz4gPSBPcHRpb25hbE9yUmVxdWlyZWRWYWx1ZTxcbiAgYCR7UmVzdFZhbHVlfToke1RUeXBlfWBcbj47XG5cbi8qKlxuICogUmVzdCBhcmdzLlxuICogLSBgWy4uLm5hbWVdYFxuICogLSBgPC4uLm5hbWU+YFxuICogLSBgW25hbWUuLi5dYFxuICogLSBgPG5hbWUuLi4+YFxuICovXG50eXBlIFJlc3RBcmdzID0gT3B0aW9uYWxPclJlcXVpcmVkVmFsdWU8XG4gIGAke1Jlc3RWYWx1ZX1gXG4+O1xuXG4vKipcbiAqIFNpbmdsZSBhcmcgd2l0aCBsaXN0IHR5cGUgYW5kIGNvbXBsZXRpb25zLlxuICpcbiAqIC0gYFtuYW1lOnR5cGVbXTpjb21wbGV0aW9uXWBcbiAqIC0gYDxuYW1lOnR5cGVbXTpjb21wbGV0aW9uPmBcbiAqL1xudHlwZSBTaW5nbGVBcmdMaXN0VHlwZUNvbXBsZXRpb248VFR5cGUgZXh0ZW5kcyBzdHJpbmc+ID1cbiAgT3B0aW9uYWxPclJlcXVpcmVkVmFsdWU8XG4gICAgYCR7c3RyaW5nfToke1RUeXBlfVtdOiR7c3RyaW5nfWBcbiAgPjtcblxuLyoqXG4gKiBTaW5nbGUgYXJnIHdpdGggbGlzdCB0eXBlLlxuICpcbiAqIC0gYFtuYW1lOnR5cGVbXV1gXG4gKiAtIGA8bmFtZTp0eXBlW10+YFxuICovXG50eXBlIFNpbmdsZUFyZ0xpc3RUeXBlPFRUeXBlIGV4dGVuZHMgc3RyaW5nPiA9IE9wdGlvbmFsT3JSZXF1aXJlZFZhbHVlPFxuICBgJHtzdHJpbmd9OiR7VFR5cGV9W11gXG4+O1xuXG4vKipcbiAqIFNpbmdsZSBhcmcgIHdpdGggdHlwZSBhbmQgY29tcGxldGlvbi5cbiAqXG4gKiAtIGBbbmFtZTp0eXBlOmNvbXBsZXRpb25dYFxuICogLSBgPG5hbWU6dHlwZTpjb21wbGV0aW9uPmBcbiAqL1xudHlwZSBTaW5nbGVBcmdUeXBlQ29tcGxldGlvbjxUVHlwZSBleHRlbmRzIHN0cmluZz4gPSBPcHRpb25hbE9yUmVxdWlyZWRWYWx1ZTxcbiAgYCR7c3RyaW5nfToke1RUeXBlfToke3N0cmluZ31gXG4+O1xuXG4vKipcbiAqIFNpbmdsZSBhcmcgd2l0aCB0eXBlLlxuICpcbiAqIC0gYFtuYW1lOnR5cGVdYFxuICogLSBgPG5hbWU6dHlwZT5gXG4gKi9cbnR5cGUgU2luZ2xlQXJnVHlwZTxUVHlwZSBleHRlbmRzIHN0cmluZz4gPSBPcHRpb25hbE9yUmVxdWlyZWRWYWx1ZTxcbiAgYCR7c3RyaW5nfToke1RUeXBlfWBcbj47XG5cbi8qKlxuICogU2luZ2xlIGFyZy5cbiAqXG4gKiAtIGBbbmFtZV1gXG4gKiAtIGA8bmFtZT5gXG4gKi9cbnR5cGUgU2luZ2xlQXJnID0gT3B0aW9uYWxPclJlcXVpcmVkVmFsdWU8XG4gIGAke3N0cmluZ31gXG4+O1xuXG50eXBlIERlZmF1bHRUeXBlcyA9IHtcbiAgbnVtYmVyOiBOdW1iZXJUeXBlO1xuICBpbnRlZ2VyOiBJbnRlZ2VyVHlwZTtcbiAgc3RyaW5nOiBTdHJpbmdUeXBlO1xuICBib29sZWFuOiBCb29sZWFuVHlwZTtcbiAgZmlsZTogRmlsZVR5cGU7XG59O1xuXG50eXBlIEFyZ3VtZW50VHlwZTxcbiAgVEFyZyBleHRlbmRzIHN0cmluZyxcbiAgVEN1c3RvbVR5cGVzLFxuICBUVHlwZXMgPSBNZXJnZTxEZWZhdWx0VHlwZXMsIFRDdXN0b21UeXBlcz4sXG4+ID0gVEFyZyBleHRlbmRzIFJlc3RBcmdzTGlzdFR5cGVDb21wbGV0aW9uPGluZmVyIFR5cGU+XG4gID8gVFR5cGVzIGV4dGVuZHMgUmVjb3JkPFR5cGUsIGluZmVyIFI+ID8gQXJyYXk8QXJyYXk8Uj4+IDogdW5rbm93blxuICA6IFRBcmcgZXh0ZW5kcyBSZXN0QXJnc0xpc3RUeXBlPGluZmVyIFR5cGU+XG4gICAgPyBUVHlwZXMgZXh0ZW5kcyBSZWNvcmQ8VHlwZSwgaW5mZXIgUj4gPyBBcnJheTxBcnJheTxSPj4gOiB1bmtub3duXG4gIDogVEFyZyBleHRlbmRzIFJlc3RBcmdzVHlwZUNvbXBsZXRpb248aW5mZXIgVHlwZT5cbiAgICA/IFRUeXBlcyBleHRlbmRzIFJlY29yZDxUeXBlLCBpbmZlciBSPiA/IEFycmF5PFI+IDogdW5rbm93blxuICA6IFRBcmcgZXh0ZW5kcyBSZXN0QXJnc1R5cGU8aW5mZXIgVHlwZT5cbiAgICA/IFRUeXBlcyBleHRlbmRzIFJlY29yZDxUeXBlLCBpbmZlciBSPiA/IEFycmF5PFI+IDogdW5rbm93blxuICA6IFRBcmcgZXh0ZW5kcyBSZXN0QXJncyA/IEFycmF5PHN0cmluZz5cbiAgOiBUQXJnIGV4dGVuZHMgU2luZ2xlQXJnTGlzdFR5cGVDb21wbGV0aW9uPGluZmVyIFR5cGU+XG4gICAgPyBUVHlwZXMgZXh0ZW5kcyBSZWNvcmQ8VHlwZSwgaW5mZXIgUj4gPyBBcnJheTxSPiA6IHVua25vd25cbiAgOiBUQXJnIGV4dGVuZHMgU2luZ2xlQXJnTGlzdFR5cGU8aW5mZXIgVHlwZT5cbiAgICA/IFRUeXBlcyBleHRlbmRzIFJlY29yZDxUeXBlLCBpbmZlciBSPiA/IEFycmF5PFI+IDogdW5rbm93blxuICA6IFRBcmcgZXh0ZW5kcyBTaW5nbGVBcmdUeXBlQ29tcGxldGlvbjxpbmZlciBUeXBlPlxuICAgID8gVFR5cGVzIGV4dGVuZHMgUmVjb3JkPFR5cGUsIGluZmVyIFI+ID8gUiA6IHVua25vd25cbiAgOiBUQXJnIGV4dGVuZHMgU2luZ2xlQXJnVHlwZTxpbmZlciBUeXBlPlxuICAgID8gVFR5cGVzIGV4dGVuZHMgUmVjb3JkPFR5cGUsIGluZmVyIFI+ID8gUiA6IHVua25vd25cbiAgOiBUQXJnIGV4dGVuZHMgU2luZ2xlQXJnID8gc3RyaW5nXG4gIDogdW5rbm93bjtcblxudHlwZSBBcmd1bWVudFR5cGVzPFRGbGFncyBleHRlbmRzIHN0cmluZywgVD4gPSBURmxhZ3MgZXh0ZW5kc1xuICBgJHtzdHJpbmd9ICR7c3RyaW5nfWAgPyBUeXBlZEFyZ3VtZW50czxURmxhZ3MsIFQ+XG4gIDogQXJndW1lbnRUeXBlPFRGbGFncywgVD47XG5cbnR5cGUgR2V0QXJndW1lbnRzPFRGbGFncyBleHRlbmRzIHN0cmluZz4gPSBURmxhZ3MgZXh0ZW5kc1xuICBgLSR7c3RyaW5nfT0ke2luZmVyIFJlc3RGbGFnc31gID8gR2V0QXJndW1lbnRzPFJlc3RGbGFncz5cbiAgOiBURmxhZ3MgZXh0ZW5kcyBgLSR7c3RyaW5nfSAke2luZmVyIFJlc3RGbGFnc31gID8gR2V0QXJndW1lbnRzPFJlc3RGbGFncz5cbiAgOiBURmxhZ3M7XG5cbnR5cGUgT3B0aW9uTmFtZTxOYW1lIGV4dGVuZHMgc3RyaW5nPiA9IE5hbWUgZXh0ZW5kcyBcIipcIiA/IHN0cmluZ1xuICA6IENhbWVsQ2FzZTxUcmltUmlnaHQ8TmFtZSwgXCIsXCI+PjtcblxudHlwZSBJc1JlcXVpcmVkPFRSZXF1aXJlZCBleHRlbmRzIGJvb2xlYW4gfCB1bmRlZmluZWQsIFREZWZhdWx0PiA9XG4gIFRSZXF1aXJlZCBleHRlbmRzIHRydWUgPyB0cnVlXG4gICAgOiBURGVmYXVsdCBleHRlbmRzIHVuZGVmaW5lZCA/IGZhbHNlXG4gICAgOiB0cnVlO1xuXG50eXBlIE5lZ2F0YWJsZU9wdGlvbjxcbiAgVE5hbWUgZXh0ZW5kcyBzdHJpbmcsXG4gIFRPcHRpb25zLFxuICBURGVmYXVsdCxcbj4gPSBURGVmYXVsdCBleHRlbmRzIHVuZGVmaW5lZFxuICA/IE9wdGlvbk5hbWU8VE5hbWU+IGV4dGVuZHMga2V5b2YgVE9wdGlvbnNcbiAgICA/IHsgW0tleSBpbiBPcHRpb25OYW1lPFROYW1lPl0/OiBmYWxzZSB9XG4gIDogeyBbS2V5IGluIE9wdGlvbk5hbWU8VE5hbWU+XTogYm9vbGVhbiB9XG4gIDogeyBbS2V5IGluIE9wdGlvbk5hbWU8VE5hbWU+XTogTm9uTnVsbGFibGU8VERlZmF1bHQ+IHwgZmFsc2UgfTtcblxudHlwZSBCb29sZWFuT3B0aW9uPFxuICBUTmFtZSBleHRlbmRzIHN0cmluZyxcbiAgVE9wdGlvbnMsXG4gIFRSZXF1aXJlZCBleHRlbmRzIGJvb2xlYW4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsXG4gIFREZWZhdWx0ID0gdW5kZWZpbmVkLFxuPiA9IFROYW1lIGV4dGVuZHMgYG5vLSR7aW5mZXIgTmFtZX1gID8gTmVnYXRhYmxlT3B0aW9uPE5hbWUsIFRPcHRpb25zLCBURGVmYXVsdD5cbiAgOiBUTmFtZSBleHRlbmRzIGAke2luZmVyIE5hbWV9LiR7aW5mZXIgUmVzdH1gID8gKFRSZXF1aXJlZCBleHRlbmRzIHRydWUgPyB7XG4gICAgICAgIFtLZXkgaW4gT3B0aW9uTmFtZTxOYW1lPl06IEJvb2xlYW5PcHRpb248XG4gICAgICAgICAgUmVzdCxcbiAgICAgICAgICBUT3B0aW9ucyxcbiAgICAgICAgICBUUmVxdWlyZWQsXG4gICAgICAgICAgVERlZmF1bHRcbiAgICAgICAgPjtcbiAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICBbS2V5IGluIE9wdGlvbk5hbWU8TmFtZT5dPzogQm9vbGVhbk9wdGlvbjxcbiAgICAgICAgICBSZXN0LFxuICAgICAgICAgIFRPcHRpb25zLFxuICAgICAgICAgIFRSZXF1aXJlZCxcbiAgICAgICAgICBURGVmYXVsdFxuICAgICAgICA+O1xuICAgICAgfSlcbiAgOiAoVFJlcXVpcmVkIGV4dGVuZHMgdHJ1ZSA/IHsgW0tleSBpbiBPcHRpb25OYW1lPFROYW1lPl06IHRydWUgfCBURGVmYXVsdCB9XG4gICAgOiB7IFtLZXkgaW4gT3B0aW9uTmFtZTxUTmFtZT5dPzogdHJ1ZSB8IFREZWZhdWx0IH0pO1xuXG50eXBlIFZhbHVlT3B0aW9uPFxuICBUTmFtZSBleHRlbmRzIHN0cmluZyxcbiAgVFJlc3RGbGFncyBleHRlbmRzIHN0cmluZyxcbiAgVFR5cGVzLFxuICBUUmVxdWlyZWQgZXh0ZW5kcyBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICBURGVmYXVsdCA9IHVuZGVmaW5lZCxcbj4gPSBUTmFtZSBleHRlbmRzIGAke2luZmVyIE5hbWV9LiR7aW5mZXIgUmVzdE5hbWV9YFxuICA/IChUUmVxdWlyZWQgZXh0ZW5kcyB0cnVlID8ge1xuICAgICAgW0tleSBpbiBPcHRpb25OYW1lPE5hbWU+XTogVmFsdWVPcHRpb248XG4gICAgICAgIFJlc3ROYW1lLFxuICAgICAgICBUUmVzdEZsYWdzLFxuICAgICAgICBUVHlwZXMsXG4gICAgICAgIFRSZXF1aXJlZCxcbiAgICAgICAgVERlZmF1bHRcbiAgICAgID47XG4gICAgfVxuICAgIDoge1xuICAgICAgW0tleSBpbiBPcHRpb25OYW1lPE5hbWU+XT86IFZhbHVlT3B0aW9uPFxuICAgICAgICBSZXN0TmFtZSxcbiAgICAgICAgVFJlc3RGbGFncyxcbiAgICAgICAgVFR5cGVzLFxuICAgICAgICBUUmVxdWlyZWQsXG4gICAgICAgIFREZWZhdWx0XG4gICAgICA+O1xuICAgIH0pXG4gIDogKFRSZXF1aXJlZCBleHRlbmRzIHRydWUgPyB7XG4gICAgICBbS2V5IGluIE9wdGlvbk5hbWU8VE5hbWU+XTogR2V0QXJndW1lbnRzPFRSZXN0RmxhZ3M+IGV4dGVuZHMgYFske3N0cmluZ31dYFxuICAgICAgICA/IFxuICAgICAgICAgIHwgTm9uTnVsbGFibGU8VERlZmF1bHQ+XG4gICAgICAgICAgfCB0cnVlXG4gICAgICAgICAgfCBBcmd1bWVudFR5cGU8R2V0QXJndW1lbnRzPFRSZXN0RmxhZ3M+LCBUVHlwZXM+XG4gICAgICAgIDogXG4gICAgICAgICAgfCBOb25OdWxsYWJsZTxURGVmYXVsdD5cbiAgICAgICAgICB8IEFyZ3VtZW50VHlwZTxHZXRBcmd1bWVudHM8VFJlc3RGbGFncz4sIFRUeXBlcz47XG4gICAgfVxuICAgIDoge1xuICAgICAgW0tleSBpbiBPcHRpb25OYW1lPFROYW1lPl0/OiBHZXRBcmd1bWVudHM8VFJlc3RGbGFncz4gZXh0ZW5kc1xuICAgICAgICBgWyR7c3RyaW5nfV1gID8gXG4gICAgICAgICAgfCBOb25OdWxsYWJsZTxURGVmYXVsdD5cbiAgICAgICAgICB8IHRydWVcbiAgICAgICAgICB8IEFyZ3VtZW50VHlwZTxHZXRBcmd1bWVudHM8VFJlc3RGbGFncz4sIFRUeXBlcz5cbiAgICAgICAgOiBcbiAgICAgICAgICB8IE5vbk51bGxhYmxlPFREZWZhdWx0PlxuICAgICAgICAgIHwgQXJndW1lbnRUeXBlPEdldEFyZ3VtZW50czxUUmVzdEZsYWdzPiwgVFR5cGVzPjtcbiAgICB9KTtcblxudHlwZSBWYWx1ZXNPcHRpb248XG4gIFROYW1lIGV4dGVuZHMgc3RyaW5nLFxuICBUUmVzdEZsYWdzIGV4dGVuZHMgc3RyaW5nLFxuICBUVHlwZXMsXG4gIFRSZXF1aXJlZCBleHRlbmRzIGJvb2xlYW4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsXG4gIFREZWZhdWx0ID0gdW5kZWZpbmVkLFxuPiA9IFROYW1lIGV4dGVuZHMgYCR7aW5mZXIgTmFtZX0uJHtpbmZlciBSZXN0TmFtZX1gXG4gID8gKFRSZXF1aXJlZCBleHRlbmRzIHRydWUgPyB7XG4gICAgICBbS2V5IGluIE9wdGlvbk5hbWU8TmFtZT5dOiBWYWx1ZXNPcHRpb248XG4gICAgICAgIFJlc3ROYW1lLFxuICAgICAgICBUUmVzdEZsYWdzLFxuICAgICAgICBUVHlwZXMsXG4gICAgICAgIFRSZXF1aXJlZCxcbiAgICAgICAgVERlZmF1bHRcbiAgICAgID47XG4gICAgfVxuICAgIDoge1xuICAgICAgW0tleSBpbiBPcHRpb25OYW1lPE5hbWU+XT86IFZhbHVlc09wdGlvbjxcbiAgICAgICAgUmVzdE5hbWUsXG4gICAgICAgIFRSZXN0RmxhZ3MsXG4gICAgICAgIFRUeXBlcyxcbiAgICAgICAgVFJlcXVpcmVkLFxuICAgICAgICBURGVmYXVsdFxuICAgICAgPjtcbiAgICB9KVxuICA6IChUUmVxdWlyZWQgZXh0ZW5kcyB0cnVlID8ge1xuICAgICAgW0tleSBpbiBPcHRpb25OYW1lPFROYW1lPl06IEdldEFyZ3VtZW50czxUUmVzdEZsYWdzPiBleHRlbmRzIGBbJHtzdHJpbmd9XWBcbiAgICAgICAgPyBcbiAgICAgICAgICB8IE5vbk51bGxhYmxlPFREZWZhdWx0PlxuICAgICAgICAgIHwgdHJ1ZVxuICAgICAgICAgIHwgQXJndW1lbnRUeXBlczxHZXRBcmd1bWVudHM8VFJlc3RGbGFncz4sIFRUeXBlcz5cbiAgICAgICAgOiBcbiAgICAgICAgICB8IE5vbk51bGxhYmxlPFREZWZhdWx0PlxuICAgICAgICAgIHwgQXJndW1lbnRUeXBlczxHZXRBcmd1bWVudHM8VFJlc3RGbGFncz4sIFRUeXBlcz47XG4gICAgfVxuICAgIDoge1xuICAgICAgW0tleSBpbiBPcHRpb25OYW1lPFROYW1lPl0/OiBHZXRBcmd1bWVudHM8VFJlc3RGbGFncz4gZXh0ZW5kc1xuICAgICAgICBgWyR7c3RyaW5nfV1gID8gXG4gICAgICAgICAgfCBOb25OdWxsYWJsZTxURGVmYXVsdD5cbiAgICAgICAgICB8IHRydWVcbiAgICAgICAgICB8IEFyZ3VtZW50VHlwZXM8R2V0QXJndW1lbnRzPFRSZXN0RmxhZ3M+LCBUVHlwZXM+XG4gICAgICAgIDogXG4gICAgICAgICAgfCBOb25OdWxsYWJsZTxURGVmYXVsdD5cbiAgICAgICAgICB8IEFyZ3VtZW50VHlwZXM8R2V0QXJndW1lbnRzPFRSZXN0RmxhZ3M+LCBUVHlwZXM+O1xuICAgIH0pO1xuXG50eXBlIE1hcFZhbHVlPFRPcHRpb25zLCBUTWFwcGVkT3B0aW9ucywgVENvbGxlY3QgPSB1bmRlZmluZWQ+ID1cbiAgVE1hcHBlZE9wdGlvbnMgZXh0ZW5kcyB1bmRlZmluZWQgPyBUQ29sbGVjdCBleHRlbmRzIHRydWUgPyB7XG4gICAgICAgIFtLZXkgaW4ga2V5b2YgVE9wdGlvbnNdOiBUT3B0aW9uc1tLZXldIGV4dGVuZHNcbiAgICAgICAgICAoUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQpXG4gICAgICAgICAgPyBNYXBWYWx1ZTxUT3B0aW9uc1tLZXldLCBUTWFwcGVkT3B0aW9ucz5cbiAgICAgICAgICA6IEFycmF5PE5vbk51bGxhYmxlPFRPcHRpb25zW0tleV0+PjtcbiAgICAgIH1cbiAgICA6IFRPcHRpb25zXG4gICAgOiB7XG4gICAgICBbS2V5IGluIGtleW9mIFRPcHRpb25zXTogVE9wdGlvbnNbS2V5XSBleHRlbmRzXG4gICAgICAgIChSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZClcbiAgICAgICAgPyBNYXBWYWx1ZTxUT3B0aW9uc1tLZXldLCBUTWFwcGVkT3B0aW9ucz5cbiAgICAgICAgOiBUTWFwcGVkT3B0aW9ucztcbiAgICB9O1xuXG50eXBlIEdldE9wdGlvbk5hbWU8VEZsYWdzPiA9IFRGbGFncyBleHRlbmRzIGAke3N0cmluZ30tLSR7aW5mZXIgTmFtZX09JHtzdHJpbmd9YFxuICA/IFRyaW1SaWdodDxOYW1lLCBcIixcIj5cbiAgOiBURmxhZ3MgZXh0ZW5kcyBgJHtzdHJpbmd9LS0ke2luZmVyIE5hbWV9ICR7c3RyaW5nfWAgPyBUcmltUmlnaHQ8TmFtZSwgXCIsXCI+XG4gIDogVEZsYWdzIGV4dGVuZHMgYCR7c3RyaW5nfS0tJHtpbmZlciBOYW1lfWAgPyBOYW1lXG4gIDogVEZsYWdzIGV4dGVuZHMgYC0ke2luZmVyIE5hbWV9PSR7c3RyaW5nfWAgPyBUcmltUmlnaHQ8TmFtZSwgXCIsXCI+XG4gIDogVEZsYWdzIGV4dGVuZHMgYC0ke2luZmVyIE5hbWV9ICR7c3RyaW5nfWAgPyBUcmltUmlnaHQ8TmFtZSwgXCIsXCI+XG4gIDogVEZsYWdzIGV4dGVuZHMgYC0ke2luZmVyIE5hbWV9YCA/IE5hbWVcbiAgOiB1bmtub3duO1xuXG50eXBlIE1lcmdlT3B0aW9uczxcbiAgVEZsYWdzLFxuICBUT3B0aW9ucyxcbiAgVE1hcHBlZE9wdGlvbnMsXG4gIFROYW1lID0gR2V0T3B0aW9uTmFtZTxURmxhZ3M+LFxuPiA9IFROYW1lIGV4dGVuZHMgYG5vLSR7c3RyaW5nfWAgPyBTcHJlYWQ8VE9wdGlvbnMsIFRNYXBwZWRPcHRpb25zPlxuICA6IFROYW1lIGV4dGVuZHMgYCR7c3RyaW5nfS4ke3N0cmluZ31gXG4gICAgPyBNZXJnZVJlY3Vyc2l2ZTxUT3B0aW9ucywgVE1hcHBlZE9wdGlvbnM+XG4gIDogTWVyZ2U8VE9wdGlvbnMsIFRNYXBwZWRPcHRpb25zPjtcblxuLy8gdHlwZSBNZXJnZU9wdGlvbnM8VCwgQ08sIE8sIE4gPSBHZXRPcHRpb25OYW1lPFQ+PiA9IE4gZXh0ZW5kcyBgbm8tJHtzdHJpbmd9YFxuLy8gICA/IFNwcmVhZDxDTywgTz5cbi8vICAgOiBOIGV4dGVuZHMgYCR7aW5mZXIgTmFtZX0uJHtpbmZlciBDaGlsZH1gXG4vLyAgICAgPyAoT3B0aW9uTmFtZTxOYW1lPiBleHRlbmRzIGtleW9mIE1lcmdlPENPLCBPPlxuLy8gICAgICAgPyBPcHRpb25OYW1lPENoaWxkPiBleHRlbmRzXG4vLyAgICAgICAgIGtleW9mIE5vbk51bGxhYmxlPE1lcmdlPENPLCBPPltPcHRpb25OYW1lPE5hbWU+XT4gPyBTcHJlYWRUd288Q08sIE8+XG4vLyAgICAgICA6IE1lcmdlUmVjdXJzaXZlPENPLCBPPlxuLy8gICAgICAgOiBNZXJnZVJlY3Vyc2l2ZTxDTywgTz4pXG4vLyAgIDogTWVyZ2U8Q08sIE8+O1xuXG50eXBlIFR5cGVkT3B0aW9uPFxuICBURmxhZ3MgZXh0ZW5kcyBzdHJpbmcsXG4gIFRPcHRpb25zLFxuICBUVHlwZXMsXG4gIFRSZXF1aXJlZCBleHRlbmRzIGJvb2xlYW4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsXG4gIFREZWZhdWx0ID0gdW5kZWZpbmVkLFxuPiA9IG51bWJlciBleHRlbmRzIFRUeXBlcyA/IGFueVxuICA6IFRGbGFncyBleHRlbmRzIGAke3N0cmluZ30tLSR7aW5mZXIgTmFtZX09JHtpbmZlciBUUmVzdEZsYWdzfWBcbiAgICA/IFZhbHVlc09wdGlvbjxcbiAgICAgIE5hbWUsXG4gICAgICBUUmVzdEZsYWdzLFxuICAgICAgVFR5cGVzLFxuICAgICAgSXNSZXF1aXJlZDxUUmVxdWlyZWQsIFREZWZhdWx0PixcbiAgICAgIFREZWZhdWx0XG4gICAgPlxuICA6IFRGbGFncyBleHRlbmRzIGAke3N0cmluZ30tLSR7aW5mZXIgTmFtZX0gJHtpbmZlciBUUmVzdEZsYWdzfWBcbiAgICA/IFZhbHVlc09wdGlvbjxcbiAgICAgIE5hbWUsXG4gICAgICBUUmVzdEZsYWdzLFxuICAgICAgVFR5cGVzLFxuICAgICAgSXNSZXF1aXJlZDxUUmVxdWlyZWQsIFREZWZhdWx0PixcbiAgICAgIFREZWZhdWx0XG4gICAgPlxuICA6IFRGbGFncyBleHRlbmRzIGAke3N0cmluZ30tLSR7aW5mZXIgTmFtZX1gXG4gICAgPyBCb29sZWFuT3B0aW9uPE5hbWUsIFRPcHRpb25zLCBJc1JlcXVpcmVkPFRSZXF1aXJlZCwgVERlZmF1bHQ+LCBURGVmYXVsdD5cbiAgOiBURmxhZ3MgZXh0ZW5kcyBgLSR7aW5mZXIgTmFtZX09JHtpbmZlciBUUmVzdEZsYWdzfWAgPyBWYWx1ZXNPcHRpb248XG4gICAgICBOYW1lLFxuICAgICAgVFJlc3RGbGFncyxcbiAgICAgIFRUeXBlcyxcbiAgICAgIElzUmVxdWlyZWQ8VFJlcXVpcmVkLCBURGVmYXVsdD4sXG4gICAgICBURGVmYXVsdFxuICAgID5cbiAgOiBURmxhZ3MgZXh0ZW5kcyBgLSR7aW5mZXIgTmFtZX0gJHtpbmZlciBUUmVzdEZsYWdzfWAgPyBWYWx1ZXNPcHRpb248XG4gICAgICBOYW1lLFxuICAgICAgVFJlc3RGbGFncyxcbiAgICAgIFRUeXBlcyxcbiAgICAgIElzUmVxdWlyZWQ8VFJlcXVpcmVkLCBURGVmYXVsdD4sXG4gICAgICBURGVmYXVsdFxuICAgID5cbiAgOiBURmxhZ3MgZXh0ZW5kcyBgLSR7aW5mZXIgTmFtZX1gXG4gICAgPyBCb29sZWFuT3B0aW9uPE5hbWUsIFRPcHRpb25zLCBJc1JlcXVpcmVkPFRSZXF1aXJlZCwgVERlZmF1bHQ+LCBURGVmYXVsdD5cbiAgOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxudHlwZSBUeXBlZEFyZ3VtZW50czxUQXJncyBleHRlbmRzIHN0cmluZywgVFR5cGVzPiA9IG51bWJlciBleHRlbmRzIFRUeXBlcyA/IGFueVxuICA6IFRBcmdzIGV4dGVuZHMgYCR7aW5mZXIgVEFyZ30gJHtpbmZlciBUUmVzdEFyZ3N9YFxuICAgID8gVEFyZyBleHRlbmRzIGBbJHtzdHJpbmd9XWBcbiAgICAgID8gW0FyZ3VtZW50VHlwZTxUQXJnLCBUVHlwZXM+PywgLi4uVHlwZWRBcmd1bWVudHM8VFJlc3RBcmdzLCBUVHlwZXM+XVxuICAgIDogW0FyZ3VtZW50VHlwZTxUQXJnLCBUVHlwZXM+LCAuLi5UeXBlZEFyZ3VtZW50czxUUmVzdEFyZ3MsIFRUeXBlcz5dXG4gIDogVEFyZ3MgZXh0ZW5kcyBgJHtzdHJpbmd9Li4uJHtzdHJpbmd9YCA/IFtcbiAgICAgIC4uLkFyZ3VtZW50VHlwZTxUQXJncywgVFR5cGVzPiBleHRlbmRzIEFycmF5PGluZmVyIFRWYWx1ZT5cbiAgICAgICAgPyBUQXJncyBleHRlbmRzIGBbJHtzdHJpbmd9XWAgPyBBcnJheTxUVmFsdWU+XG4gICAgICAgIDogW1RWYWx1ZSwgLi4uQXJyYXk8VFZhbHVlPl1cbiAgICAgICAgOiBuZXZlcixcbiAgICBdXG4gIDogVEFyZ3MgZXh0ZW5kcyBgWyR7c3RyaW5nfV1gID8gW0FyZ3VtZW50VHlwZTxUQXJncywgVFR5cGVzPj9dXG4gIDogW0FyZ3VtZW50VHlwZTxUQXJncywgVFR5cGVzPl07XG5cbnR5cGUgVHlwZWRDb21tYW5kQXJndW1lbnRzPFROYW1lQW5kQXJndW1lbnRzIGV4dGVuZHMgc3RyaW5nLCBUVHlwZXM+ID1cbiAgbnVtYmVyIGV4dGVuZHMgVFR5cGVzID8gYW55XG4gICAgOiBUTmFtZUFuZEFyZ3VtZW50cyBleHRlbmRzIGAke3N0cmluZ30gJHtpbmZlciBURmxhZ3N9YFxuICAgICAgPyBUeXBlZEFyZ3VtZW50czxURmxhZ3MsIFRUeXBlcz5cbiAgICA6IFtdO1xuXG50eXBlIFR5cGVkRW52PFxuICBUTmFtZUFuZFZhbHVlIGV4dGVuZHMgc3RyaW5nLFxuICBUUHJlZml4IGV4dGVuZHMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBUT3B0aW9ucyxcbiAgVFR5cGVzLFxuICBUUmVxdWlyZWQgZXh0ZW5kcyBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICBURGVmYXVsdCA9IHVuZGVmaW5lZCxcbj4gPSBudW1iZXIgZXh0ZW5kcyBUVHlwZXMgPyBhbnlcbiAgOiBUTmFtZUFuZFZhbHVlIGV4dGVuZHMgYCR7aW5mZXIgTmFtZX09JHtpbmZlciBSZXN0fWBcbiAgICA/IFZhbHVlT3B0aW9uPFRyaW1MZWZ0PE5hbWUsIFRQcmVmaXg+LCBSZXN0LCBUVHlwZXMsIFRSZXF1aXJlZCwgVERlZmF1bHQ+XG4gIDogVE5hbWVBbmRWYWx1ZSBleHRlbmRzIGAke2luZmVyIE5hbWV9ICR7aW5mZXIgUmVzdH1gXG4gICAgPyBWYWx1ZU9wdGlvbjxUcmltTGVmdDxOYW1lLCBUUHJlZml4PiwgUmVzdCwgVFR5cGVzLCBUUmVxdWlyZWQsIFREZWZhdWx0PlxuICA6IFROYW1lQW5kVmFsdWUgZXh0ZW5kcyBgJHtpbmZlciBOYW1lfWBcbiAgICA/IEJvb2xlYW5PcHRpb248VHJpbUxlZnQ8TmFtZSwgVFByZWZpeD4sIFRPcHRpb25zLCBUUmVxdWlyZWQsIFREZWZhdWx0PlxuICA6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG50eXBlIFR5cGVkVHlwZTxcbiAgVE5hbWUgZXh0ZW5kcyBzdHJpbmcsXG4gIFRIYW5kbGVyIGV4dGVuZHMgVHlwZU9yVHlwZUhhbmRsZXI8dW5rbm93bj4sXG4+ID0geyBbTmFtZSBpbiBUTmFtZV06IFRIYW5kbGVyIH07XG5cbnR5cGUgUmVxdWlyZWRLZXlzPFRSZWNvcmQ+ID0ge1xuICAvLyBkZW5vLWxpbnQtaWdub3JlIGJhbi10eXBlc1xuICBbS2V5IGluIGtleW9mIFRSZWNvcmRdLT86IHt9IGV4dGVuZHMgUGljazxUUmVjb3JkLCBLZXk+ID8gbmV2ZXIgOiBLZXk7XG59W2tleW9mIFRSZWNvcmRdO1xuXG50eXBlIE9wdGlvbmFsS2V5czxUUmVjb3JkPiA9IHtcbiAgLy8gZGVuby1saW50LWlnbm9yZSBiYW4tdHlwZXNcbiAgW0tleSBpbiBrZXlvZiBUUmVjb3JkXS0/OiB7fSBleHRlbmRzIFBpY2s8VFJlY29yZCwgS2V5PiA/IEtleSA6IG5ldmVyO1xufVtrZXlvZiBUUmVjb3JkXTtcblxudHlwZSBTcHJlYWRSZXF1aXJlZFByb3BlcnRpZXM8XG4gIFRUYXJnZXQsXG4gIFRTb3VyY2UsXG4gIFRLZXlzIGV4dGVuZHMga2V5b2YgVFRhcmdldCAmIGtleW9mIFRTb3VyY2UsXG4+ID0ge1xuICBbS2V5IGluIFRLZXlzXTpcbiAgICB8IEV4Y2x1ZGU8VFRhcmdldFtLZXldLCB1bmRlZmluZWQ+XG4gICAgfCBFeGNsdWRlPFRTb3VyY2VbS2V5XSwgdW5kZWZpbmVkPjtcbn07XG5cbnR5cGUgU3ByZWFkT3B0aW9uYWxQcm9wZXJ0aWVzPFxuICBUVGFyZ2V0LFxuICBUU291cmNlLFxuICBUS2V5cyBleHRlbmRzIGtleW9mIFRUYXJnZXQgJiBrZXlvZiBUU291cmNlLFxuPiA9IHtcbiAgW0tleSBpbiBUS2V5c10/OiBUVGFyZ2V0W0tleV0gfCBUU291cmNlW0tleV07XG59O1xuXG4vKiogTWVyZ2UgdHlwZXMgb2YgdHdvIG9iamVjdHMuICovXG50eXBlIFNwcmVhZDxUVGFyZ2V0LCBUU291cmNlPiA9IFRUYXJnZXQgZXh0ZW5kcyB2b2lkID8gVFNvdXJjZVxuICA6IFRTb3VyY2UgZXh0ZW5kcyB2b2lkID8gVFRhcmdldFxuICAvLyBQcm9wZXJ0aWVzIGluIEwgdGhhdCBkb24ndCBleGlzdCBpbiBSLlxuICA6IFxuICAgICYgT21pdDxUVGFyZ2V0LCBrZXlvZiBUU291cmNlPlxuICAgIC8vIFByb3BlcnRpZXMgaW4gUiB0aGF0IGRvbid0IGV4aXN0IGluIEwuXG4gICAgJiBPbWl0PFRTb3VyY2UsIGtleW9mIFRUYXJnZXQ+XG4gICAgLy8gUmVxdWlyZWQgcHJvcGVydGllcyBpbiBSIHRoYXQgZXhpc3QgaW4gTC5cbiAgICAmIFNwcmVhZFJlcXVpcmVkUHJvcGVydGllczxcbiAgICAgIFRUYXJnZXQsXG4gICAgICBUU291cmNlLFxuICAgICAgUmVxdWlyZWRLZXlzPFRTb3VyY2U+ICYga2V5b2YgVFRhcmdldFxuICAgID5cbiAgICAvLyBSZXF1aXJlZCBwcm9wZXJ0aWVzIGluIEwgdGhhdCBleGlzdCBpbiBSLlxuICAgICYgU3ByZWFkUmVxdWlyZWRQcm9wZXJ0aWVzPFxuICAgICAgVFRhcmdldCxcbiAgICAgIFRTb3VyY2UsXG4gICAgICBSZXF1aXJlZEtleXM8VFRhcmdldD4gJiBrZXlvZiBUU291cmNlXG4gICAgPlxuICAgIC8vIE9wdGlvbmFsIHByb3BlcnRpZXMgaW4gTCBhbmQgUi5cbiAgICAmIFNwcmVhZE9wdGlvbmFsUHJvcGVydGllczxcbiAgICAgIFRUYXJnZXQsXG4gICAgICBUU291cmNlLFxuICAgICAgT3B0aW9uYWxLZXlzPFRUYXJnZXQ+ICYgT3B0aW9uYWxLZXlzPFRTb3VyY2U+XG4gICAgPjtcblxudHlwZSBWYWx1ZU9mPFRWYWx1ZT4gPSBUVmFsdWUgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBpbmZlciBWPiA/IFZhbHVlT2Y8Vj5cbiAgOiBUVmFsdWU7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0NBQXdDO0FBQ3hDLFNBQ0UsZ0JBQWdCLEVBQ2hCLG1CQUFtQixvQkFBb0IsUUFDbEMsc0JBQXNCO0FBQzdCLFNBQVMsMEJBQTBCLFFBQVEsZUFBZTtBQUMxRCxTQUFTLFVBQVUsUUFBUSxvQkFBb0I7QUFFL0MsU0FDRSxjQUFjLEVBQ2Qsd0JBQXdCLEVBQ3hCLGNBQWMsUUFDVCxjQUFjO0FBQ3JCLFNBQVMsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFH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 +// denoCacheMetadata=7163494972557327759,4152170276387220143
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/8ff2624c5c21ed0dc87c654d08bd72bd8d37a89508b0a29c64ec3448bb2af726.js b/vendor/gen/https/deno.land/8ff2624c5c21ed0dc87c654d08bd72bd8d37a89508b0a29c64ec3448bb2af726.js new file mode 100644 index 0000000..7736863 --- /dev/null +++ b/vendor/gen/https/deno.land/8ff2624c5c21ed0dc87c654d08bd72bd8d37a89508b0a29c64ec3448bb2af726.js @@ -0,0 +1,25 @@ +import tomlLoader from "../core/loaders/toml.ts"; +import { merge } from "../core/utils/object.ts"; +// Default options +export const defaults = { + extensions: [ + ".toml" + ], + pageSubExtension: ".page" +}; +/** + * A plugin to load TOML data files and pages + * @see https://lume.land/plugins/toml/ + */ export function toml(userOptions) { + const options = merge(defaults, userOptions); + return (site)=>{ + site.loadData(options.extensions, tomlLoader); + site.loadPages(options.extensions, { + loader: tomlLoader, + pageSubExtension: options.pageSubExtension + }); + }; +} +export default toml; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvcGx1Z2lucy90b21sLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0b21sTG9hZGVyIGZyb20gXCIuLi9jb3JlL2xvYWRlcnMvdG9tbC50c1wiO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tIFwiLi4vY29yZS91dGlscy9vYmplY3QudHNcIjtcblxuaW1wb3J0IHR5cGUgU2l0ZSBmcm9tIFwiLi4vY29yZS9zaXRlLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIC8qKiBGaWxlIGV4dGVuc2lvbnMgdG8gbG9hZCAqL1xuICBleHRlbnNpb25zPzogc3RyaW5nW107XG5cbiAgLyoqIE9wdGlvbmFsIHN1Yi1leHRlbnNpb24gZm9yIHBhZ2UgZmlsZXMgKi9cbiAgcGFnZVN1YkV4dGVuc2lvbj86IHN0cmluZztcbn1cblxuLy8gRGVmYXVsdCBvcHRpb25zXG5leHBvcnQgY29uc3QgZGVmYXVsdHM6IE9wdGlvbnMgPSB7XG4gIGV4dGVuc2lvbnM6IFtcIi50b21sXCJdLFxuICBwYWdlU3ViRXh0ZW5zaW9uOiBcIi5wYWdlXCIsXG59O1xuXG4vKipcbiAqIEEgcGx1Z2luIHRvIGxvYWQgVE9NTCBkYXRhIGZpbGVzIGFuZCBwYWdlc1xuICogQHNlZSBodHRwczovL2x1bWUubGFuZC9wbHVnaW5zL3RvbWwvXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b21sKHVzZXJPcHRpb25zPzogT3B0aW9ucykge1xuICBjb25zdCBvcHRpb25zID0gbWVyZ2UoZGVmYXVsdHMsIHVzZXJPcHRpb25zKTtcblxuICByZXR1cm4gKHNpdGU6IFNpdGUpID0+IHtcbiAgICBzaXRlLmxvYWREYXRhKG9wdGlvbnMuZXh0ZW5zaW9ucywgdG9tbExvYWRlcik7XG4gICAgc2l0ZS5sb2FkUGFnZXMob3B0aW9ucy5leHRlbnNpb25zLCB7XG4gICAgICBsb2FkZXI6IHRvbWxMb2FkZXIsXG4gICAgICBwYWdlU3ViRXh0ZW5zaW9uOiBvcHRpb25zLnBhZ2VTdWJFeHRlbnNpb24sXG4gICAgfSk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRvbWw7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxnQkFBZ0IsMEJBQTBCO0FBQ2pELFNBQVMsS0FBSyxRQUFRLDBCQUEwQjtBQVloRCxrQkFBa0I7QUFDbEIsT0FBTyxNQUFNLFdBQW9CO0VBQy9CLFlBQVk7SUFBQztHQUFRO0VBQ3JCLGtCQUFrQjtBQUNwQixFQUFFO0FBRUY7OztDQUdDLEdBQ0QsT0FBTyxTQUFTLEtBQUssV0FBcUI7RUFDeEMsTUFBTSxVQUFVLE1BQU0sVUFBVTtFQUVoQyxPQUFPLENBQUM7SUFDTixLQUFLLFFBQVEsQ0FBQyxRQUFRLFVBQVUsRUFBRTtJQUNsQyxLQUFLLFNBQVMsQ0FBQyxRQUFRLFVBQVUsRUFBRTtNQUNqQyxRQUFRO01BQ1Isa0JBQWtCLFFBQVEsZ0JBQWdCO0lBQzVDO0VBQ0Y7QUFDRjtBQUVBLGVBQWUsS0FBSyJ9 +// denoCacheMetadata=1217915538899810810,4434902150761336048
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/9013a95f0c5758768ae5a9fd8fcfb1b10de82e26b90888065d0add44087bee29.js b/vendor/gen/https/deno.land/9013a95f0c5758768ae5a9fd8fcfb1b10de82e26b90888065d0add44087bee29.js new file mode 100644 index 0000000..02c5418 --- /dev/null +++ b/vendor/gen/https/deno.land/9013a95f0c5758768ae5a9fd8fcfb1b10de82e26b90888065d0add44087bee29.js @@ -0,0 +1,37 @@ +import create from "./bare.ts"; +import ifTag from "./plugins/if.ts"; +import forTag from "./plugins/for.ts"; +import includeTag from "./plugins/include.ts"; +import setTag from "./plugins/set.ts"; +import jsTag from "./plugins/js.ts"; +import layoutTag from "./plugins/layout.ts"; +import functionTag from "./plugins/function.ts"; +import importTag from "./plugins/import.ts"; +import exportTag from "./plugins/export.ts"; +import echoTag from "./plugins/echo.ts"; +import escape from "./plugins/escape.ts"; +import unescape from "./plugins/unescape.ts"; +import trim from "./plugins/trim.ts"; +export default function(options = {}) { + const env = create({ + ...options, + autoDataVarname: options.autoDataVarname ?? options.useWith ?? true + }); + // Register basic plugins + env.use(ifTag()); + env.use(forTag()); + env.use(jsTag()); + env.use(includeTag()); + env.use(setTag()); + env.use(layoutTag()); + env.use(functionTag()); + env.use(importTag()); + env.use(exportTag()); + env.use(echoTag()); + env.use(escape()); + env.use(unescape()); + env.use(trim()); + return env; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9tb2QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNyZWF0ZSwgeyBPcHRpb25zIGFzIEJhcmVPcHRpb25zIH0gZnJvbSBcIi4vYmFyZS50c1wiO1xuaW1wb3J0IHsgdHlwZSBFbnZpcm9ubWVudCB9IGZyb20gXCIuL3NyYy9lbnZpcm9ubWVudC50c1wiO1xuaW1wb3J0IGlmVGFnIGZyb20gXCIuL3BsdWdpbnMvaWYudHNcIjtcbmltcG9ydCBmb3JUYWcgZnJvbSBcIi4vcGx1Z2lucy9mb3IudHNcIjtcbmltcG9ydCBpbmNsdWRlVGFnIGZyb20gXCIuL3BsdWdpbnMvaW5jbHVkZS50c1wiO1xuaW1wb3J0IHNldFRhZyBmcm9tIFwiLi9wbHVnaW5zL3NldC50c1wiO1xuaW1wb3J0IGpzVGFnIGZyb20gXCIuL3BsdWdpbnMvanMudHNcIjtcbmltcG9ydCBsYXlvdXRUYWcgZnJvbSBcIi4vcGx1Z2lucy9sYXlvdXQudHNcIjtcbmltcG9ydCBmdW5jdGlvblRhZyBmcm9tIFwiLi9wbHVnaW5zL2Z1bmN0aW9uLnRzXCI7XG5pbXBvcnQgaW1wb3J0VGFnIGZyb20gXCIuL3BsdWdpbnMvaW1wb3J0LnRzXCI7XG5pbXBvcnQgZXhwb3J0VGFnIGZyb20gXCIuL3BsdWdpbnMvZXhwb3J0LnRzXCI7XG5pbXBvcnQgZWNob1RhZyBmcm9tIFwiLi9wbHVnaW5zL2VjaG8udHNcIjtcbmltcG9ydCBlc2NhcGUgZnJvbSBcIi4vcGx1Z2lucy9lc2NhcGUudHNcIjtcbmltcG9ydCB1bmVzY2FwZSBmcm9tIFwiLi9wbHVnaW5zL3VuZXNjYXBlLnRzXCI7XG5pbXBvcnQgdHJpbSBmcm9tIFwiLi9wbHVnaW5zL3RyaW0udHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIGV4dGVuZHMgQmFyZU9wdGlvbnMge1xuICAvKiogQGRlcHJlY2F0ZWQgVXNlIGF1dG9EYXRhVmFybmFtZSAqL1xuICB1c2VXaXRoPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKG9wdGlvbnM6IE9wdGlvbnMgPSB7fSk6IEVudmlyb25tZW50IHtcbiAgY29uc3QgZW52ID0gY3JlYXRlKHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGF1dG9EYXRhVmFybmFtZTogb3B0aW9ucy5hdXRvRGF0YVZhcm5hbWUgPz8gb3B0aW9ucy51c2VXaXRoID8/IHRydWUsXG4gIH0pO1xuXG4gIC8vIFJlZ2lzdGVyIGJhc2ljIHBsdWdpbnNcbiAgZW52LnVzZShpZlRhZygpKTtcbiAgZW52LnVzZShmb3JUYWcoKSk7XG4gIGVudi51c2UoanNUYWcoKSk7XG4gIGVudi51c2UoaW5jbHVkZVRhZygpKTtcbiAgZW52LnVzZShzZXRUYWcoKSk7XG4gIGVudi51c2UobGF5b3V0VGFnKCkpO1xuICBlbnYudXNlKGZ1bmN0aW9uVGFnKCkpO1xuICBlbnYudXNlKGltcG9ydFRhZygpKTtcbiAgZW52LnVzZShleHBvcnRUYWcoKSk7XG4gIGVudi51c2UoZWNob1RhZygpKTtcbiAgZW52LnVzZShlc2NhcGUoKSk7XG4gIGVudi51c2UodW5lc2NhcGUoKSk7XG4gIGVudi51c2UodHJpbSgpKTtcblxuICByZXR1cm4gZW52O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sWUFBd0MsWUFBWTtBQUUzRCxPQUFPLFdBQVcsa0JBQWtCO0FBQ3BDLE9BQU8sWUFBWSxtQkFBbUI7QUFDdEMsT0FBTyxnQkFBZ0IsdUJBQXVCO0FBQzlDLE9BQU8sWUFBWSxtQkFBbUI7QUFDdEMsT0FBTyxXQUFXLGtCQUFrQjtBQUNwQyxPQUFPLGVBQWUsc0JBQXNCO0FBQzVDLE9BQU8saUJBQWlCLHdCQUF3QjtBQUNoRCxPQUFPLGVBQWUsc0JBQXNCO0FBQzVDLE9BQU8sZUFBZSxzQkFBc0I7QUFDNUMsT0FBTyxhQUFhLG9CQUFvQjtBQUN4QyxPQUFPLFlBQVksc0JBQXNCO0FBQ3pDLE9BQU8sY0FBYyx3QkFBd0I7QUFDN0MsT0FBTyxVQUFVLG9CQUFvQjtBQU9yQyxlQUFlLFNBQVUsVUFBbUIsQ0FBQyxDQUFDO0VBQzVDLE1BQU0sTUFBTSxPQUFPO0lBQ2pCLEdBQUcsT0FBTztJQUNWLGlCQUFpQixRQUFRLGVBQWUsSUFBSSxRQUFRLE9BQU8sSUFBSTtFQUNqRTtFQUVBLHlCQUF5QjtFQUN6QixJQUFJLEdBQUcsQ0FBQztFQUNSLElBQUksR0FBRyxDQUFDO0VBQ1IsSUFBSSxHQUFHLENBQUM7RUFDUixJQUFJLEdBQUcsQ0FBQztFQUNSLElBQUksR0FBRyxDQUFDO0VBQ1IsSUFBSSxHQUFHLENBQUM7RUFDUixJQUFJLEdBQUcsQ0FBQztFQUNSLElBQUksR0FBRyxDQUFDO0VBQ1IsSUFBSSxHQUFHLENBQUM7RUFDUixJQUFJLEdBQUcsQ0FBQztFQUNSLElBQUksR0FBRyxDQUFDO0VBQ1IsSUFBSSxHQUFHLENBQUM7RUFDUixJQUFJLEdBQUcsQ0FBQztFQUVSLE9BQU87QUFDVCJ9 +// denoCacheMetadata=4683514964064964297,5667045177061146746
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/92479c3c048c7fe77aff827f925bec1558c2307c8c96d5cec7b9808beb910699.js b/vendor/gen/https/deno.land/92479c3c048c7fe77aff827f925bec1558c2307c8c96d5cec7b9808beb910699.js new file mode 100644 index 0000000..f6832bd --- /dev/null +++ b/vendor/gen/https/deno.land/92479c3c048c7fe77aff827f925bec1558c2307c8c96d5cec7b9808beb910699.js @@ -0,0 +1,33 @@ +// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. +// Copyright the Browserify authors. MIT License. +// Ported mostly from https://github.com/browserify/path-browserify/ +/** + * Utilities for working with OS-specific file paths. + * + * Codes in the examples uses POSIX path but it automatically use Windows path + * on Windows. Use methods under `posix` or `win32` object instead to handle non + * platform specific path like: + * ```ts + * import { posix, win32 } from "https://deno.land/std@$STD_VERSION/path/mod.ts"; + * const p1 = posix.fromFileUrl("file:///home/foo"); + * const p2 = win32.fromFileUrl("file:///home/foo"); + * console.log(p1); // "/home/foo" + * console.log(p2); // "\\home\\foo" + * ``` + * + * This module is browser compatible. + * + * @module + */ import { isWindows } from "../_util/os.ts"; +import * as _win32 from "./win32.ts"; +import * as _posix from "./posix.ts"; +const path = isWindows ? _win32 : _posix; +export const win32 = _win32; +export const posix = _posix; +export const { basename, delimiter, dirname, extname, format, fromFileUrl, isAbsolute, join, normalize, parse, relative, resolve, sep, toFileUrl, toNamespacedPath } = path; +export * from "./common.ts"; +export { SEP, SEP_PATTERN } from "./separator.ts"; +export * from "./_interface.ts"; +export * from "./glob.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE3MC4wL3BhdGgvbW9kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjIgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgdGhlIEJyb3dzZXJpZnkgYXV0aG9ycy4gTUlUIExpY2Vuc2UuXG4vLyBQb3J0ZWQgbW9zdGx5IGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2Jyb3dzZXJpZnkvcGF0aC1icm93c2VyaWZ5L1xuXG4vKipcbiAqIFV0aWxpdGllcyBmb3Igd29ya2luZyB3aXRoIE9TLXNwZWNpZmljIGZpbGUgcGF0aHMuXG4gKlxuICogQ29kZXMgaW4gdGhlIGV4YW1wbGVzIHVzZXMgUE9TSVggcGF0aCBidXQgaXQgYXV0b21hdGljYWxseSB1c2UgV2luZG93cyBwYXRoXG4gKiBvbiBXaW5kb3dzLiBVc2UgbWV0aG9kcyB1bmRlciBgcG9zaXhgIG9yIGB3aW4zMmAgb2JqZWN0IGluc3RlYWQgdG8gaGFuZGxlIG5vblxuICogcGxhdGZvcm0gc3BlY2lmaWMgcGF0aCBsaWtlOlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHBvc2l4LCB3aW4zMiB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL3BhdGgvbW9kLnRzXCI7XG4gKiBjb25zdCBwMSA9IHBvc2l4LmZyb21GaWxlVXJsKFwiZmlsZTovLy9ob21lL2Zvb1wiKTtcbiAqIGNvbnN0IHAyID0gd2luMzIuZnJvbUZpbGVVcmwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpO1xuICogY29uc29sZS5sb2cocDEpOyAvLyBcIi9ob21lL2Zvb1wiXG4gKiBjb25zb2xlLmxvZyhwMik7IC8vIFwiXFxcXGhvbWVcXFxcZm9vXCJcbiAqIGBgYFxuICpcbiAqIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgaXNXaW5kb3dzIH0gZnJvbSBcIi4uL191dGlsL29zLnRzXCI7XG5pbXBvcnQgKiBhcyBfd2luMzIgZnJvbSBcIi4vd2luMzIudHNcIjtcbmltcG9ydCAqIGFzIF9wb3NpeCBmcm9tIFwiLi9wb3NpeC50c1wiO1xuXG5jb25zdCBwYXRoID0gaXNXaW5kb3dzID8gX3dpbjMyIDogX3Bvc2l4O1xuXG5leHBvcnQgY29uc3Qgd2luMzIgPSBfd2luMzI7XG5leHBvcnQgY29uc3QgcG9zaXggPSBfcG9zaXg7XG5leHBvcnQgY29uc3Qge1xuICBiYXNlbmFtZSxcbiAgZGVsaW1pdGVyLFxuICBkaXJuYW1lLFxuICBleHRuYW1lLFxuICBmb3JtYXQsXG4gIGZyb21GaWxlVXJsLFxuICBpc0Fic29sdXRlLFxuICBqb2luLFxuICBub3JtYWxpemUsXG4gIHBhcnNlLFxuICByZWxhdGl2ZSxcbiAgcmVzb2x2ZSxcbiAgc2VwLFxuICB0b0ZpbGVVcmwsXG4gIHRvTmFtZXNwYWNlZFBhdGgsXG59ID0gcGF0aDtcblxuZXhwb3J0ICogZnJvbSBcIi4vY29tbW9uLnRzXCI7XG5leHBvcnQgeyBTRVAsIFNFUF9QQVRURVJOIH0gZnJvbSBcIi4vc2VwYXJhdG9yLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9faW50ZXJmYWNlLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9nbG9iLnRzXCI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLGlEQUFpRDtBQUNqRCxvRUFBb0U7QUFFcEU7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBaUJDLEdBRUQsU0FBUyxTQUFTLFFBQVEsaUJBQWlCO0FBQzNDLFlBQVksWUFBWSxhQUFhO0FBQ3JDLFlBQVksWUFBWSxhQUFhO0FBRXJDLE1BQU0sT0FBTyxZQUFZLFNBQVM7QUFFbEMsT0FBTyxNQUFNLFFBQVEsT0FBTztBQUM1QixPQUFPLE1BQU0sUUFBUSxPQUFPO0FBQzVCLE9BQU8sTUFBTSxFQUNYLFFBQVEsRUFDUixTQUFTLEVBQ1QsT0FBTyxFQUNQLE9BQU8sRUFDUCxNQUFNLEVBQ04sV0FBVyxFQUNYLFVBQVUsRUFDVixJQUFJLEVBQ0osU0FBUyxFQUNULEtBQUssRUFDTCxRQUFRLEVBQ1IsT0FBTyxFQUNQLEdBQUcsRUFDSCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2pCLEdBQUcsS0FBSztBQUVULGNBQWMsY0FBYztBQUM1QixTQUFTLEdBQUcsRUFBRSxXQUFXLFFBQVEsaUJBQWlCO0FBQ2xELGNBQWMsa0JBQWtCO0FBQ2hDLGNBQWMsWUFBWSJ9 +// denoCacheMetadata=8277751481651470362,3736611333096358374
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/933fa6a8c6ed95819acdfaf57f66e8539ff8f18769af26fef468b2f111eb7b1d.js b/vendor/gen/https/deno.land/933fa6a8c6ed95819acdfaf57f66e8539ff8f18769af26fef468b2f111eb7b1d.js new file mode 100644 index 0000000..f444660 --- /dev/null +++ b/vendor/gen/https/deno.land/933fa6a8c6ed95819acdfaf57f66e8539ff8f18769af26fef468b2f111eb7b1d.js @@ -0,0 +1,99 @@ +import { GenericPrompt } from "./_generic_prompt.ts"; +import { brightBlue, dim, stripColor, underline } from "./deps.ts"; +/** Generic input prompt representation. */ export class GenericInput extends GenericPrompt { + inputValue = ""; + inputIndex = 0; + /** + * Prompt constructor. + * @param settings Prompt settings. + */ constructor(settings){ + super({ + ...settings, + keys: { + moveCursorLeft: [ + "left" + ], + moveCursorRight: [ + "right" + ], + deleteCharLeft: [ + "backspace" + ], + deleteCharRight: [ + "delete" + ], + ...settings.keys ?? {} + } + }); + } + getCurrentInputValue() { + return this.inputValue; + } + message() { + const message = super.message() + " " + this.settings.pointer + " "; + this.cursor.x = stripColor(message).length + this.inputIndex + 1; + return message + this.input(); + } + input() { + return underline(this.inputValue); + } + highlight(value, color1 = dim, color2 = brightBlue) { + value = value.toString(); + const inputLowerCase = this.getCurrentInputValue().toLowerCase(); + const valueLowerCase = value.toLowerCase(); + const index = valueLowerCase.indexOf(inputLowerCase); + const matched = value.slice(index, index + inputLowerCase.length); + return index >= 0 ? color1(value.slice(0, index)) + color2(matched) + color1(value.slice(index + inputLowerCase.length)) : value; + } + /** + * Handle user input event. + * @param event Key event. + */ async handleEvent(event) { + switch(true){ + case this.isKey(this.settings.keys, "moveCursorLeft", event): + this.moveCursorLeft(); + break; + case this.isKey(this.settings.keys, "moveCursorRight", event): + this.moveCursorRight(); + break; + case this.isKey(this.settings.keys, "deleteCharRight", event): + this.deleteCharRight(); + break; + case this.isKey(this.settings.keys, "deleteCharLeft", event): + this.deleteChar(); + break; + case event.char && !event.meta && !event.ctrl: + this.addChar(event.char); + break; + default: + await super.handleEvent(event); + } + } + /** Add character to current input. */ addChar(char) { + this.inputValue = this.inputValue.slice(0, this.inputIndex) + char + this.inputValue.slice(this.inputIndex); + this.inputIndex++; + } + /** Move prompt cursor left. */ moveCursorLeft() { + if (this.inputIndex > 0) { + this.inputIndex--; + } + } + /** Move prompt cursor right. */ moveCursorRight() { + if (this.inputIndex < this.inputValue.length) { + this.inputIndex++; + } + } + /** Delete char left. */ deleteChar() { + if (this.inputIndex > 0) { + this.inputIndex--; + this.deleteCharRight(); + } + } + /** Delete char right. */ deleteCharRight() { + if (this.inputIndex < this.inputValue.length) { + this.inputValue = this.inputValue.slice(0, this.inputIndex) + this.inputValue.slice(this.inputIndex + 1); + } + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvcHJvbXB0L19nZW5lcmljX2lucHV0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgS2V5Q29kZSB9IGZyb20gXCIuLi9rZXljb2RlL2tleV9jb2RlLnRzXCI7XG5pbXBvcnQge1xuICBHZW5lcmljUHJvbXB0LFxuICBHZW5lcmljUHJvbXB0S2V5cyxcbiAgR2VuZXJpY1Byb21wdE9wdGlvbnMsXG4gIEdlbmVyaWNQcm9tcHRTZXR0aW5ncyxcbn0gZnJvbSBcIi4vX2dlbmVyaWNfcHJvbXB0LnRzXCI7XG5pbXBvcnQgeyBicmlnaHRCbHVlLCBkaW0sIHN0cmlwQ29sb3IsIHVuZGVybGluZSB9IGZyb20gXCIuL2RlcHMudHNcIjtcblxuLyoqIElucHV0IGtleXMgb3B0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJpY0lucHV0S2V5cyBleHRlbmRzIEdlbmVyaWNQcm9tcHRLZXlzIHtcbiAgbW92ZUN1cnNvckxlZnQ/OiBzdHJpbmdbXTtcbiAgbW92ZUN1cnNvclJpZ2h0Pzogc3RyaW5nW107XG4gIGRlbGV0ZUNoYXJMZWZ0Pzogc3RyaW5nW107XG4gIGRlbGV0ZUNoYXJSaWdodD86IHN0cmluZ1tdO1xufVxuXG4vKiogR2VuZXJpYyBpbnB1dCBwcm9tcHQgb3B0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJpY0lucHV0UHJvbXB0T3B0aW9uczxUVmFsdWUsIFRSYXdWYWx1ZT5cbiAgZXh0ZW5kcyBHZW5lcmljUHJvbXB0T3B0aW9uczxUVmFsdWUsIFRSYXdWYWx1ZT4ge1xuICBrZXlzPzogR2VuZXJpY0lucHV0S2V5cztcbn1cblxuLyoqIEdlbmVyaWMgaW5wdXQgcHJvbXB0IHNldHRpbmdzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZW5lcmljSW5wdXRQcm9tcHRTZXR0aW5nczxUVmFsdWUsIFRSYXdWYWx1ZT5cbiAgZXh0ZW5kcyBHZW5lcmljUHJvbXB0U2V0dGluZ3M8VFZhbHVlLCBUUmF3VmFsdWU+IHtcbiAga2V5cz86IEdlbmVyaWNJbnB1dEtleXM7XG59XG5cbi8qKiBHZW5lcmljIGlucHV0IHByb21wdCByZXByZXNlbnRhdGlvbi4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHZW5lcmljSW5wdXQ8XG4gIFRWYWx1ZSxcbiAgVFJhd1ZhbHVlLFxuICBUU2V0dGluZ3MgZXh0ZW5kcyBHZW5lcmljSW5wdXRQcm9tcHRTZXR0aW5nczxUVmFsdWUsIFRSYXdWYWx1ZT4sXG4+IGV4dGVuZHMgR2VuZXJpY1Byb21wdDxUVmFsdWUsIFRSYXdWYWx1ZSwgVFNldHRpbmdzPiB7XG4gIHByb3RlY3RlZCBpbnB1dFZhbHVlID0gXCJcIjtcbiAgcHJvdGVjdGVkIGlucHV0SW5kZXggPSAwO1xuXG4gIC8qKlxuICAgKiBQcm9tcHQgY29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSBzZXR0aW5ncyBQcm9tcHQgc2V0dGluZ3MuXG4gICAqL1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3Ioc2V0dGluZ3M6IFRTZXR0aW5ncykge1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLnNldHRpbmdzLFxuICAgICAga2V5czoge1xuICAgICAgICBtb3ZlQ3Vyc29yTGVmdDogW1wibGVmdFwiXSxcbiAgICAgICAgbW92ZUN1cnNvclJpZ2h0OiBbXCJyaWdodFwiXSxcbiAgICAgICAgZGVsZXRlQ2hhckxlZnQ6IFtcImJhY2tzcGFjZVwiXSxcbiAgICAgICAgZGVsZXRlQ2hhclJpZ2h0OiBbXCJkZWxldGVcIl0sXG4gICAgICAgIC4uLihzZXR0aW5ncy5rZXlzID8/IHt9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Q3VycmVudElucHV0VmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dFZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICBjb25zdCBtZXNzYWdlOiBzdHJpbmcgPSBzdXBlci5tZXNzYWdlKCkgKyBcIiBcIiArIHRoaXMuc2V0dGluZ3MucG9pbnRlciArIFwiIFwiO1xuICAgIHRoaXMuY3Vyc29yLnggPSBzdHJpcENvbG9yKG1lc3NhZ2UpLmxlbmd0aCArIHRoaXMuaW5wdXRJbmRleCArIDE7XG4gICAgcmV0dXJuIG1lc3NhZ2UgKyB0aGlzLmlucHV0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5wdXQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdW5kZXJsaW5lKHRoaXMuaW5wdXRWYWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGlnaGxpZ2h0KFxuICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgY29sb3IxOiAodmFsOiBzdHJpbmcpID0+IHN0cmluZyA9IGRpbSxcbiAgICBjb2xvcjI6ICh2YWw6IHN0cmluZykgPT4gc3RyaW5nID0gYnJpZ2h0Qmx1ZSxcbiAgKTogc3RyaW5nIHtcbiAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgaW5wdXRMb3dlckNhc2UgPSB0aGlzLmdldEN1cnJlbnRJbnB1dFZhbHVlKCkudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCB2YWx1ZUxvd2VyQ2FzZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgaW5kZXggPSB2YWx1ZUxvd2VyQ2FzZS5pbmRleE9mKGlucHV0TG93ZXJDYXNlKTtcbiAgICBjb25zdCBtYXRjaGVkOiBzdHJpbmcgPSB2YWx1ZS5zbGljZShpbmRleCwgaW5kZXggKyBpbnB1dExvd2VyQ2FzZS5sZW5ndGgpO1xuICAgIHJldHVybiBpbmRleCA+PSAwXG4gICAgICA/IGNvbG9yMSh2YWx1ZS5zbGljZSgwLCBpbmRleCkpICsgY29sb3IyKG1hdGNoZWQpICtcbiAgICAgICAgY29sb3IxKHZhbHVlLnNsaWNlKGluZGV4ICsgaW5wdXRMb3dlckNhc2UubGVuZ3RoKSlcbiAgICAgIDogdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIHVzZXIgaW5wdXQgZXZlbnQuXG4gICAqIEBwYXJhbSBldmVudCBLZXkgZXZlbnQuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlRXZlbnQoZXZlbnQ6IEtleUNvZGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgIGNhc2UgdGhpcy5pc0tleSh0aGlzLnNldHRpbmdzLmtleXMsIFwibW92ZUN1cnNvckxlZnRcIiwgZXZlbnQpOlxuICAgICAgICB0aGlzLm1vdmVDdXJzb3JMZWZ0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLmlzS2V5KHRoaXMuc2V0dGluZ3Mua2V5cywgXCJtb3ZlQ3Vyc29yUmlnaHRcIiwgZXZlbnQpOlxuICAgICAgICB0aGlzLm1vdmVDdXJzb3JSaWdodCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5pc0tleSh0aGlzLnNldHRpbmdzLmtleXMsIFwiZGVsZXRlQ2hhclJpZ2h0XCIsIGV2ZW50KTpcbiAgICAgICAgdGhpcy5kZWxldGVDaGFyUmlnaHQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuaXNLZXkodGhpcy5zZXR0aW5ncy5rZXlzLCBcImRlbGV0ZUNoYXJMZWZ0XCIsIGV2ZW50KTpcbiAgICAgICAgdGhpcy5kZWxldGVDaGFyKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBldmVudC5jaGFyICYmICFldmVudC5tZXRhICYmICFldmVudC5jdHJsOlxuICAgICAgICB0aGlzLmFkZENoYXIoZXZlbnQuY2hhciEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGF3YWl0IHN1cGVyLmhhbmRsZUV2ZW50KGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvKiogQWRkIGNoYXJhY3RlciB0byBjdXJyZW50IGlucHV0LiAqL1xuICBwcm90ZWN0ZWQgYWRkQ2hhcihjaGFyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLmlucHV0VmFsdWUuc2xpY2UoMCwgdGhpcy5pbnB1dEluZGV4KSArIGNoYXIgK1xuICAgICAgdGhpcy5pbnB1dFZhbHVlLnNsaWNlKHRoaXMuaW5wdXRJbmRleCk7XG4gICAgdGhpcy5pbnB1dEluZGV4Kys7XG4gIH1cblxuICAvKiogTW92ZSBwcm9tcHQgY3Vyc29yIGxlZnQuICovXG4gIHByb3RlY3RlZCBtb3ZlQ3Vyc29yTGVmdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnB1dEluZGV4ID4gMCkge1xuICAgICAgdGhpcy5pbnB1dEluZGV4LS07XG4gICAgfVxuICB9XG5cbiAgLyoqIE1vdmUgcHJvbXB0IGN1cnNvciByaWdodC4gKi9cbiAgcHJvdGVjdGVkIG1vdmVDdXJzb3JSaWdodCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnB1dEluZGV4IDwgdGhpcy5pbnB1dFZhbHVlLmxlbmd0aCkge1xuICAgICAgdGhpcy5pbnB1dEluZGV4Kys7XG4gICAgfVxuICB9XG5cbiAgLyoqIERlbGV0ZSBjaGFyIGxlZnQuICovXG4gIHByb3RlY3RlZCBkZWxldGVDaGFyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlucHV0SW5kZXggPiAwKSB7XG4gICAgICB0aGlzLmlucHV0SW5kZXgtLTtcbiAgICAgIHRoaXMuZGVsZXRlQ2hhclJpZ2h0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIERlbGV0ZSBjaGFyIHJpZ2h0LiAqL1xuICBwcm90ZWN0ZWQgZGVsZXRlQ2hhclJpZ2h0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlucHV0SW5kZXggPCB0aGlzLmlucHV0VmFsdWUubGVuZ3RoKSB7XG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLmlucHV0VmFsdWUuc2xpY2UoMCwgdGhpcy5pbnB1dEluZGV4KSArXG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZS5zbGljZSh0aGlzLmlucHV0SW5kZXggKyAxKTtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxTQUNFLGFBQWEsUUFJUix1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 +// denoCacheMetadata=8818798192649543924,17999905195180302821
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/934dc04fa84b83650a23ea29851bb29cc527105c156123c5ce5212f4cc4dfe45.js b/vendor/gen/https/deno.land/934dc04fa84b83650a23ea29851bb29cc527105c156123c5ce5212f4cc4dfe45.js new file mode 100644 index 0000000..6a10af8 --- /dev/null +++ b/vendor/gen/https/deno.land/934dc04fa84b83650a23ea29851bb29cc527105c156123c5ce5212f4cc4dfe45.js @@ -0,0 +1,485 @@ +import { CTOR_KEY } from "../constructor-lock.ts"; +import { NodeList, nodeListMutatorSym } from "./node-list.ts"; +import { insertBeforeAfter, isDocumentFragment, moveDocumentFragmentChildren } from "./utils.ts"; +export var NodeType = /*#__PURE__*/ function(NodeType) { + NodeType[NodeType["ELEMENT_NODE"] = 1] = "ELEMENT_NODE"; + NodeType[NodeType["ATTRIBUTE_NODE"] = 2] = "ATTRIBUTE_NODE"; + NodeType[NodeType["TEXT_NODE"] = 3] = "TEXT_NODE"; + NodeType[NodeType["CDATA_SECTION_NODE"] = 4] = "CDATA_SECTION_NODE"; + NodeType[NodeType["ENTITY_REFERENCE_NODE"] = 5] = "ENTITY_REFERENCE_NODE"; + NodeType[NodeType["ENTITY_NODE"] = 6] = "ENTITY_NODE"; + NodeType[NodeType["PROCESSING_INSTRUCTION_NODE"] = 7] = "PROCESSING_INSTRUCTION_NODE"; + NodeType[NodeType["COMMENT_NODE"] = 8] = "COMMENT_NODE"; + NodeType[NodeType["DOCUMENT_NODE"] = 9] = "DOCUMENT_NODE"; + NodeType[NodeType["DOCUMENT_TYPE_NODE"] = 10] = "DOCUMENT_TYPE_NODE"; + NodeType[NodeType["DOCUMENT_FRAGMENT_NODE"] = 11] = "DOCUMENT_FRAGMENT_NODE"; + NodeType[NodeType["NOTATION_NODE"] = 12] = "NOTATION_NODE"; + return NodeType; +}({}); +/** + * Throws if any of the nodes are an ancestor + * of `parentNode` + */ export function nodesAndTextNodes(nodes, parentNode) { + return nodes.flatMap((n)=>{ + if (isDocumentFragment(n)) { + const children = Array.from(n.childNodes); + moveDocumentFragmentChildren(n, parentNode); + return children; + } else { + const node = n instanceof Node ? n : new Text(String(n)); + // Make sure the node isn't an ancestor of parentNode + if (n === node && parentNode) { + parentNode._assertNotAncestor(node); + } + // Remove from parentNode (if any) + node._remove(true); + // Set new parent + node._setParent(parentNode, true); + return [ + node + ]; + } + }); +} +export class Node extends EventTarget { + nodeName; + nodeType; + #nodeValue; + parentNode; + #ownerDocument; + get parentElement() { + if (this.parentNode?.nodeType === NodeType.ELEMENT_NODE) { + return this.parentNode; + } + return null; + } + // Instance constants defined after Node + // class body below to avoid clutter + static ELEMENT_NODE = NodeType.ELEMENT_NODE; + static ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE; + static TEXT_NODE = NodeType.TEXT_NODE; + static CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE; + static ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE; + static ENTITY_NODE = NodeType.ENTITY_NODE; + static PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE; + static COMMENT_NODE = NodeType.COMMENT_NODE; + static DOCUMENT_NODE = NodeType.DOCUMENT_NODE; + static DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE; + static DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE; + static NOTATION_NODE = NodeType.NOTATION_NODE; + constructor(nodeName, nodeType, parentNode, key){ + if (key !== CTOR_KEY) { + throw new TypeError("Illegal constructor."); + } + super(), this.nodeName = nodeName, this.nodeType = nodeType, this.#nodeValue = null, this.parentNode = null, this.#ownerDocument = null, this.#childNodes = null; + this.#nodeValue = null; + if (parentNode) { + parentNode.appendChild(this); + } + } + #childNodes; + get childNodes() { + return this.#childNodes || (this.#childNodes = new NodeList()); + } + _getChildNodesMutator() { + return this.childNodes[nodeListMutatorSym](); + } + _hasInitializedChildNodes() { + return Boolean(this.#childNodes); + } + /** + * Update ancestor chain & owner document for this child + * and all its children. + */ _setParent(newParent, force = false) { + const sameParent = this.parentNode === newParent; + const shouldUpdateParentAndAncestors = !sameParent || force; + if (shouldUpdateParentAndAncestors) { + this.parentNode = newParent; + if (newParent) { + if (!sameParent) { + this._setOwnerDocument(newParent.#ownerDocument); + } + } + // Update ancestors for child nodes + if (this._hasInitializedChildNodes()) { + for (const child of this.childNodes){ + child._setParent(this, shouldUpdateParentAndAncestors); + } + } + } + } + _assertNotAncestor(child) { + // Check this child isn't an ancestor + if (child.contains(this)) { + throw new DOMException("The new child is an ancestor of the parent"); + } + } + _setOwnerDocument(document) { + if (this.#ownerDocument !== document) { + this.#ownerDocument = document; + if (this._hasInitializedChildNodes()) { + for (const child of this.childNodes){ + child._setOwnerDocument(document); + } + } + } + } + contains(child) { + let node = child; + while(node){ + if (node === this) { + return true; + } + node = node.parentNode; + } + return false; + } + get ownerDocument() { + return this.#ownerDocument; + } + get nodeValue() { + return this.#nodeValue; + } + set nodeValue(value) { + // Setting is ignored + } + get textContent() { + let out = ""; + for (const child of this.childNodes){ + switch(child.nodeType){ + case NodeType.TEXT_NODE: + out += child.nodeValue; + break; + case NodeType.ELEMENT_NODE: + out += child.textContent; + break; + } + } + return out; + } + set textContent(content) { + for (const child of this.childNodes){ + child._setParent(null); + } + this._getChildNodesMutator().splice(0, this.childNodes.length); + this.appendChild(new Text(content)); + } + get firstChild() { + if (!this._hasInitializedChildNodes()) { + return null; + } + return this.childNodes[0] || null; + } + get lastChild() { + if (!this._hasInitializedChildNodes()) { + return null; + } + return this.childNodes[this.childNodes.length - 1] || null; + } + hasChildNodes() { + return this._hasInitializedChildNodes() && Boolean(this.childNodes.length); + } + cloneNode(deep = false) { + const copy = this._shallowClone(); + copy._setOwnerDocument(this.ownerDocument); + if (deep && this._hasInitializedChildNodes()) { + for (const child of this.childNodes){ + copy.appendChild(child.cloneNode(true)); + } + } + return copy; + } + _shallowClone() { + throw new Error("Illegal invocation"); + } + _remove(skipSetParent = false) { + const parent = this.parentNode; + if (parent) { + const nodeList = parent._getChildNodesMutator(); + const idx = nodeList.indexOf(this); + nodeList.splice(idx, 1); + if (!skipSetParent) { + this._setParent(null); + } + } + } + appendChild(child) { + if (isDocumentFragment(child)) { + const mutator = this._getChildNodesMutator(); + mutator.push(...child.childNodes); + moveDocumentFragmentChildren(child, this); + return child; + } else { + return child._appendTo(this); + } + } + _appendTo(parentNode) { + parentNode._assertNotAncestor(this); // FIXME: Should this really be a method? + const oldParentNode = this.parentNode; + // Check if we already own this child + if (oldParentNode === parentNode) { + if (parentNode._getChildNodesMutator().indexOf(this) !== -1) { + return this; + } + } else if (oldParentNode) { + this._remove(); + } + this._setParent(parentNode, true); + parentNode._getChildNodesMutator().push(this); + return this; + } + removeChild(child) { + // Just copy Firefox's error messages + if (child && typeof child === "object") { + if (child.parentNode === this) { + child._remove(); + return child; + } else { + throw new DOMException("Node.removeChild: The node to be removed is not a child of this node"); + } + } else { + throw new TypeError("Node.removeChild: Argument 1 is not an object."); + } + } + replaceChild(newChild, oldChild) { + if (oldChild.parentNode !== this) { + throw new Error("Old child's parent is not the current node."); + } + oldChild._replaceWith(newChild); + return oldChild; + } + insertBefore(newNode, refNode) { + this._assertNotAncestor(newNode); + const mutator = this._getChildNodesMutator(); + if (refNode === null) { + this.appendChild(newNode); + return newNode; + } + const index = mutator.indexOf(refNode); + if (index === -1) { + throw new Error("DOMException: Child to insert before is not a child of this node"); + } + if (isDocumentFragment(newNode)) { + mutator.splice(index, 0, ...newNode.childNodes); + moveDocumentFragmentChildren(newNode, this); + } else { + const oldParentNode = newNode.parentNode; + const oldMutator = oldParentNode?._getChildNodesMutator(); + if (oldMutator) { + oldMutator.splice(oldMutator.indexOf(newNode), 1); + } + newNode._setParent(this, oldParentNode !== this); + mutator.splice(index, 0, newNode); + } + return newNode; + } + _replaceWith(...nodes) { + if (this.parentNode) { + const parentNode = this.parentNode; + const mutator = parentNode._getChildNodesMutator(); + let viableNextSibling = null; + { + const thisIndex = mutator.indexOf(this); + for(let i = thisIndex + 1; i < parentNode.childNodes.length; i++){ + if (!nodes.includes(parentNode.childNodes[i])) { + viableNextSibling = parentNode.childNodes[i]; + break; + } + } + } + nodes = nodesAndTextNodes(nodes, parentNode); + let index = viableNextSibling ? mutator.indexOf(viableNextSibling) : parentNode.childNodes.length; + let deleteNumber; + if (parentNode.childNodes[index - 1] === this) { + index--; + deleteNumber = 1; + } else { + deleteNumber = 0; + } + mutator.splice(index, deleteNumber, ...nodes); + this._setParent(null); + } + } + get nextSibling() { + const parent = this.parentNode; + if (!parent) { + return null; + } + const index = parent._getChildNodesMutator().indexOf(this); + const next = parent.childNodes[index + 1] || null; + return next; + } + get previousSibling() { + const parent = this.parentNode; + if (!parent) { + return null; + } + const index = parent._getChildNodesMutator().indexOf(this); + const prev = parent.childNodes[index - 1] || null; + return prev; + } + // Node.compareDocumentPosition()'s bitmask values + static DOCUMENT_POSITION_DISCONNECTED = 1; + static DOCUMENT_POSITION_PRECEDING = 2; + static DOCUMENT_POSITION_FOLLOWING = 4; + static DOCUMENT_POSITION_CONTAINS = 8; + static DOCUMENT_POSITION_CONTAINED_BY = 16; + static DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 32; + /** + * FIXME: Does not implement attribute node checks + * ref: https://dom.spec.whatwg.org/#dom-node-comparedocumentposition + * MDN: https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition + */ compareDocumentPosition(other) { + if (other === this) { + return 0; + } + // Note: major browser implementations differ in their rejection error of + // non-Node or nullish values so we just copy the most relevant error message + // from Firefox + if (!(other instanceof Node)) { + throw new TypeError("Node.compareDocumentPosition: Argument 1 does not implement interface Node."); + } + let node1Root = other; + let node2Root = this; + const node1Hierarchy = [ + node1Root + ]; + const node2Hierarchy = [ + node2Root + ]; + while(node1Root.parentNode ?? node2Root.parentNode){ + node1Root = node1Root.parentNode ? (node1Hierarchy.push(node1Root.parentNode), node1Root.parentNode) : node1Root; + node2Root = node2Root.parentNode ? (node2Hierarchy.push(node2Root.parentNode), node2Root.parentNode) : node2Root; + } + // Check if they don't share the same root node + if (node1Root !== node2Root) { + return Node.DOCUMENT_POSITION_DISCONNECTED | Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC | Node.DOCUMENT_POSITION_PRECEDING; + } + const longerHierarchy = node1Hierarchy.length > node2Hierarchy.length ? node1Hierarchy : node2Hierarchy; + const shorterHierarchy = longerHierarchy === node1Hierarchy ? node2Hierarchy : node1Hierarchy; + // Check if either is a container of the other + if (longerHierarchy[longerHierarchy.length - shorterHierarchy.length] === shorterHierarchy[0]) { + return longerHierarchy === node1Hierarchy ? Node.DOCUMENT_POSITION_CONTAINED_BY | Node.DOCUMENT_POSITION_FOLLOWING : Node.DOCUMENT_POSITION_CONTAINS | Node.DOCUMENT_POSITION_PRECEDING; + } + // Find their first common ancestor and see whether they + // are preceding or following + const longerStart = longerHierarchy.length - shorterHierarchy.length; + for(let i = shorterHierarchy.length - 1; i >= 0; i--){ + const shorterHierarchyNode = shorterHierarchy[i]; + const longerHierarchyNode = longerHierarchy[longerStart + i]; + // We found the first common ancestor + if (longerHierarchyNode !== shorterHierarchyNode) { + const siblings = shorterHierarchyNode.parentNode._getChildNodesMutator(); + if (siblings.indexOf(shorterHierarchyNode) < siblings.indexOf(longerHierarchyNode)) { + // Shorter is before longer + if (shorterHierarchy === node1Hierarchy) { + // Other is before this + return Node.DOCUMENT_POSITION_PRECEDING; + } else { + // This is before other + return Node.DOCUMENT_POSITION_FOLLOWING; + } + } else { + // Longer is before shorter + if (longerHierarchy === node1Hierarchy) { + // Other is before this + return Node.DOCUMENT_POSITION_PRECEDING; + } else { + // Other is after this + return Node.DOCUMENT_POSITION_FOLLOWING; + } + } + } + } + // FIXME: Should probably throw here because this + // point should be unreachable code as per the + // intended logic + return Node.DOCUMENT_POSITION_FOLLOWING; + } + getRootNode(opts = {}) { + if (this.parentNode) { + return this.parentNode.getRootNode(opts); + } + if (opts.composed && this.host) { + return this.host.getRootNode(opts); + } + return this; + } +} +Node.prototype.ELEMENT_NODE = NodeType.ELEMENT_NODE; +Node.prototype.ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE; +Node.prototype.TEXT_NODE = NodeType.TEXT_NODE; +Node.prototype.CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE; +Node.prototype.ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE; +Node.prototype.ENTITY_NODE = NodeType.ENTITY_NODE; +Node.prototype.PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE; +Node.prototype.COMMENT_NODE = NodeType.COMMENT_NODE; +Node.prototype.DOCUMENT_NODE = NodeType.DOCUMENT_NODE; +Node.prototype.DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE; +Node.prototype.DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE; +Node.prototype.NOTATION_NODE = NodeType.NOTATION_NODE; +export class CharacterData extends Node { + #nodeValue = ""; + constructor(data, nodeName, nodeType, parentNode, key){ + super(nodeName, nodeType, parentNode, key); + this.#nodeValue = data; + } + get nodeValue() { + return this.#nodeValue; + } + set nodeValue(value) { + this.#nodeValue = String(value ?? ""); + } + get data() { + return this.#nodeValue; + } + set data(value) { + this.nodeValue = value; + } + get textContent() { + return this.#nodeValue; + } + set textContent(value) { + this.nodeValue = value; + } + get length() { + return this.data.length; + } + before(...nodes) { + if (this.parentNode) { + insertBeforeAfter(this, nodes, true); + } + } + after(...nodes) { + if (this.parentNode) { + insertBeforeAfter(this, nodes, false); + } + } + remove() { + this._remove(); + } + replaceWith(...nodes) { + this._replaceWith(...nodes); + } +} +export class Text extends CharacterData { + constructor(text = ""){ + super(String(text), "#text", NodeType.TEXT_NODE, null, CTOR_KEY); + } + _shallowClone() { + return new Text(this.textContent); + } +} +export class Comment extends CharacterData { + constructor(text = ""){ + super(String(text), "#comment", NodeType.COMMENT_NODE, null, CTOR_KEY); + } + _shallowClone() { + return new Comment(this.textContent); + } + get textContent() { + return this.nodeValue; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvZGVub19kb21AdjAuMS40OS9zcmMvZG9tL25vZGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1RPUl9LRVkgfSBmcm9tIFwiLi4vY29uc3RydWN0b3ItbG9jay50c1wiO1xuaW1wb3J0IHsgTm9kZUxpc3QsIE5vZGVMaXN0TXV0YXRvciwgbm9kZUxpc3RNdXRhdG9yU3ltIH0gZnJvbSBcIi4vbm9kZS1saXN0LnRzXCI7XG5pbXBvcnQge1xuICBpbnNlcnRCZWZvcmVBZnRlcixcbiAgaXNEb2N1bWVudEZyYWdtZW50LFxuICBtb3ZlRG9jdW1lbnRGcmFnbWVudENoaWxkcmVuLFxufSBmcm9tIFwiLi91dGlscy50c1wiO1xuaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSBcIi4vZWxlbWVudC50c1wiO1xuaW1wb3J0IHR5cGUgeyBEb2N1bWVudCB9IGZyb20gXCIuL2RvY3VtZW50LnRzXCI7XG5pbXBvcnQgdHlwZSB7IERvY3VtZW50RnJhZ21lbnQgfSBmcm9tIFwiLi9kb2N1bWVudC1mcmFnbWVudC50c1wiO1xuXG5leHBvcnQgZW51bSBOb2RlVHlwZSB7XG4gIEVMRU1FTlRfTk9ERSA9IDEsXG4gIEFUVFJJQlVURV9OT0RFID0gMixcbiAgVEVYVF9OT0RFID0gMyxcbiAgQ0RBVEFfU0VDVElPTl9OT0RFID0gNCxcbiAgRU5USVRZX1JFRkVSRU5DRV9OT0RFID0gNSxcbiAgRU5USVRZX05PREUgPSA2LFxuICBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUgPSA3LFxuICBDT01NRU5UX05PREUgPSA4LFxuICBET0NVTUVOVF9OT0RFID0gOSxcbiAgRE9DVU1FTlRfVFlQRV9OT0RFID0gMTAsXG4gIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUgPSAxMSxcbiAgTk9UQVRJT05fTk9ERSA9IDEyLFxufVxuXG4vKipcbiAqIFRocm93cyBpZiBhbnkgb2YgdGhlIG5vZGVzIGFyZSBhbiBhbmNlc3RvclxuICogb2YgYHBhcmVudE5vZGVgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub2Rlc0FuZFRleHROb2RlcyhcbiAgbm9kZXM6IChOb2RlIHwgdW5rbm93bilbXSxcbiAgcGFyZW50Tm9kZTogTm9kZSxcbik6IE5vZGVbXSB7XG4gIHJldHVybiBub2Rlcy5mbGF0TWFwKChuKSA9PiB7XG4gICAgaWYgKGlzRG9jdW1lbnRGcmFnbWVudChuIGFzIE5vZGUpKSB7XG4gICAgICBjb25zdCBjaGlsZHJlbiA9IEFycmF5LmZyb20oKG4gYXMgTm9kZSkuY2hpbGROb2Rlcyk7XG4gICAgICBtb3ZlRG9jdW1lbnRGcmFnbWVudENoaWxkcmVuKG4gYXMgRG9jdW1lbnRGcmFnbWVudCwgcGFyZW50Tm9kZSk7XG4gICAgICByZXR1cm4gY2hpbGRyZW47XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5vZGU6IE5vZGUgPSBuIGluc3RhbmNlb2YgTm9kZSA/IG4gOiBuZXcgVGV4dChTdHJpbmcobikpO1xuXG4gICAgICAvLyBNYWtlIHN1cmUgdGhlIG5vZGUgaXNuJ3QgYW4gYW5jZXN0b3Igb2YgcGFyZW50Tm9kZVxuICAgICAgaWYgKG4gPT09IG5vZGUgJiYgcGFyZW50Tm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLl9hc3NlcnROb3RBbmNlc3Rvcihub2RlKTtcbiAgICAgIH1cblxuICAgICAgLy8gUmVtb3ZlIGZyb20gcGFyZW50Tm9kZSAoaWYgYW55KVxuICAgICAgbm9kZS5fcmVtb3ZlKHRydWUpO1xuXG4gICAgICAvLyBTZXQgbmV3IHBhcmVudFxuICAgICAgbm9kZS5fc2V0UGFyZW50KHBhcmVudE5vZGUsIHRydWUpO1xuICAgICAgcmV0dXJuIFtub2RlXTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgY2xhc3MgTm9kZSBleHRlbmRzIEV2ZW50VGFyZ2V0IHtcbiAgI25vZGVWYWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyBwYXJlbnROb2RlOiBOb2RlIHwgbnVsbCA9IG51bGw7XG4gICNvd25lckRvY3VtZW50OiBEb2N1bWVudCB8IG51bGwgPSBudWxsO1xuXG4gIGdldCBwYXJlbnRFbGVtZW50KCk6IEVsZW1lbnQgfCBudWxsIHtcbiAgICBpZiAodGhpcy5wYXJlbnROb2RlPy5ub2RlVHlwZSA9PT0gTm9kZVR5cGUuRUxFTUVOVF9OT0RFKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJlbnROb2RlIGFzIEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBJbnN0YW5jZSBjb25zdGFudHMgZGVmaW5lZCBhZnRlciBOb2RlXG4gIC8vIGNsYXNzIGJvZHkgYmVsb3cgdG8gYXZvaWQgY2x1dHRlclxuICBzdGF0aWMgRUxFTUVOVF9OT0RFID0gTm9kZVR5cGUuRUxFTUVOVF9OT0RFO1xuICBzdGF0aWMgQVRUUklCVVRFX05PREUgPSBOb2RlVHlwZS5BVFRSSUJVVEVfTk9ERTtcbiAgc3RhdGljIFRFWFRfTk9ERSA9IE5vZGVUeXBlLlRFWFRfTk9ERTtcbiAgc3RhdGljIENEQVRBX1NFQ1RJT05fTk9ERSA9IE5vZGVUeXBlLkNEQVRBX1NFQ1RJT05fTk9ERTtcbiAgc3RhdGljIEVOVElUWV9SRUZFUkVOQ0VfTk9ERSA9IE5vZGVUeXBlLkVOVElUWV9SRUZFUkVOQ0VfTk9ERTtcbiAgc3RhdGljIEVOVElUWV9OT0RFID0gTm9kZVR5cGUuRU5USVRZX05PREU7XG4gIHN0YXRpYyBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUgPSBOb2RlVHlwZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU7XG4gIHN0YXRpYyBDT01NRU5UX05PREUgPSBOb2RlVHlwZS5DT01NRU5UX05PREU7XG4gIHN0YXRpYyBET0NVTUVOVF9OT0RFID0gTm9kZVR5cGUuRE9DVU1FTlRfTk9ERTtcbiAgc3RhdGljIERPQ1VNRU5UX1RZUEVfTk9ERSA9IE5vZGVUeXBlLkRPQ1VNRU5UX1RZUEVfTk9ERTtcbiAgc3RhdGljIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUgPSBOb2RlVHlwZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFO1xuICBzdGF0aWMgTk9UQVRJT05fTk9ERSA9IE5vZGVUeXBlLk5PVEFUSU9OX05PREU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG5vZGVOYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIG5vZGVUeXBlOiBOb2RlVHlwZSxcbiAgICBwYXJlbnROb2RlOiBOb2RlIHwgbnVsbCxcbiAgICBrZXk6IHR5cGVvZiBDVE9SX0tFWSxcbiAgKSB7XG4gICAgaWYgKGtleSAhPT0gQ1RPUl9LRVkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbGxlZ2FsIGNvbnN0cnVjdG9yLlwiKTtcbiAgICB9XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuI25vZGVWYWx1ZSA9IG51bGw7XG5cbiAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0aGlzKTtcbiAgICB9XG4gIH1cblxuICAjY2hpbGROb2RlczogTm9kZUxpc3QgfCBudWxsID0gbnVsbDtcbiAgZ2V0IGNoaWxkTm9kZXMoKTogTm9kZUxpc3Qge1xuICAgIHJldHVybiB0aGlzLiNjaGlsZE5vZGVzIHx8ICh0aGlzLiNjaGlsZE5vZGVzID0gbmV3IE5vZGVMaXN0KCkpO1xuICB9XG5cbiAgX2dldENoaWxkTm9kZXNNdXRhdG9yKCk6IE5vZGVMaXN0TXV0YXRvciB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGROb2Rlc1tub2RlTGlzdE11dGF0b3JTeW1dKCk7XG4gIH1cblxuICBfaGFzSW5pdGlhbGl6ZWRDaGlsZE5vZGVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMuI2NoaWxkTm9kZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBhbmNlc3RvciBjaGFpbiAmIG93bmVyIGRvY3VtZW50IGZvciB0aGlzIGNoaWxkXG4gICAqIGFuZCBhbGwgaXRzIGNoaWxkcmVuLlxuICAgKi9cbiAgX3NldFBhcmVudChuZXdQYXJlbnQ6IE5vZGUgfCBudWxsLCBmb3JjZSA9IGZhbHNlKSB7XG4gICAgY29uc3Qgc2FtZVBhcmVudCA9IHRoaXMucGFyZW50Tm9kZSA9PT0gbmV3UGFyZW50O1xuICAgIGNvbnN0IHNob3VsZFVwZGF0ZVBhcmVudEFuZEFuY2VzdG9ycyA9ICFzYW1lUGFyZW50IHx8IGZvcmNlO1xuXG4gICAgaWYgKHNob3VsZFVwZGF0ZVBhcmVudEFuZEFuY2VzdG9ycykge1xuICAgICAgdGhpcy5wYXJlbnROb2RlID0gbmV3UGFyZW50O1xuXG4gICAgICBpZiAobmV3UGFyZW50KSB7XG4gICAgICAgIGlmICghc2FtZVBhcmVudCkge1xuICAgICAgICAgIHRoaXMuX3NldE93bmVyRG9jdW1lbnQobmV3UGFyZW50LiNvd25lckRvY3VtZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBVcGRhdGUgYW5jZXN0b3JzIGZvciBjaGlsZCBub2Rlc1xuICAgICAgaWYgKHRoaXMuX2hhc0luaXRpYWxpemVkQ2hpbGROb2RlcygpKSB7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZE5vZGVzKSB7XG4gICAgICAgICAgY2hpbGQuX3NldFBhcmVudCh0aGlzLCBzaG91bGRVcGRhdGVQYXJlbnRBbmRBbmNlc3RvcnMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX2Fzc2VydE5vdEFuY2VzdG9yKGNoaWxkOiBOb2RlKSB7XG4gICAgLy8gQ2hlY2sgdGhpcyBjaGlsZCBpc24ndCBhbiBhbmNlc3RvclxuICAgIGlmIChjaGlsZC5jb250YWlucyh0aGlzKSkge1xuICAgICAgdGhyb3cgbmV3IERPTUV4Y2VwdGlvbihcIlRoZSBuZXcgY2hpbGQgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIHBhcmVudFwiKTtcbiAgICB9XG4gIH1cblxuICBfc2V0T3duZXJEb2N1bWVudChkb2N1bWVudDogRG9jdW1lbnQgfCBudWxsKSB7XG4gICAgaWYgKHRoaXMuI293bmVyRG9jdW1lbnQgIT09IGRvY3VtZW50KSB7XG4gICAgICB0aGlzLiNvd25lckRvY3VtZW50ID0gZG9jdW1lbnQ7XG5cbiAgICAgIGlmICh0aGlzLl9oYXNJbml0aWFsaXplZENoaWxkTm9kZXMoKSkge1xuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGROb2Rlcykge1xuICAgICAgICAgIGNoaWxkLl9zZXRPd25lckRvY3VtZW50KGRvY3VtZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnRhaW5zKGNoaWxkOiBOb2RlKTogYm9vbGVhbiB7XG4gICAgbGV0IG5vZGU6IE5vZGUgfCBudWxsID0gY2hpbGQ7XG4gICAgd2hpbGUgKG5vZGUpIHtcbiAgICAgIGlmIChub2RlID09PSB0aGlzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldCBvd25lckRvY3VtZW50KCk6IERvY3VtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuI293bmVyRG9jdW1lbnQ7XG4gIH1cblxuICBnZXQgbm9kZVZhbHVlKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLiNub2RlVmFsdWU7XG4gIH1cblxuICBzZXQgbm9kZVZhbHVlKHZhbHVlOiB1bmtub3duKSB7XG4gICAgLy8gU2V0dGluZyBpcyBpZ25vcmVkXG4gIH1cblxuICBnZXQgdGV4dENvbnRlbnQoKTogc3RyaW5nIHtcbiAgICBsZXQgb3V0ID0gXCJcIjtcblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZE5vZGVzKSB7XG4gICAgICBzd2l0Y2ggKGNoaWxkLm5vZGVUeXBlKSB7XG4gICAgICAgIGNhc2UgTm9kZVR5cGUuVEVYVF9OT0RFOlxuICAgICAgICAgIG91dCArPSBjaGlsZC5ub2RlVmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTm9kZVR5cGUuRUxFTUVOVF9OT0RFOlxuICAgICAgICAgIG91dCArPSBjaGlsZC50ZXh0Q29udGVudDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb3V0O1xuICB9XG5cbiAgc2V0IHRleHRDb250ZW50KGNvbnRlbnQ6IHN0cmluZykge1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZE5vZGVzKSB7XG4gICAgICBjaGlsZC5fc2V0UGFyZW50KG51bGwpO1xuICAgIH1cblxuICAgIHRoaXMuX2dldENoaWxkTm9kZXNNdXRhdG9yKCkuc3BsaWNlKDAsIHRoaXMuY2hpbGROb2Rlcy5sZW5ndGgpO1xuICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IFRleHQoY29udGVudCkpO1xuICB9XG5cbiAgZ2V0IGZpcnN0Q2hpbGQoKTogTm9kZSB8IG51bGwge1xuICAgIGlmICghdGhpcy5faGFzSW5pdGlhbGl6ZWRDaGlsZE5vZGVzKCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXNbMF0gfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBsYXN0Q2hpbGQoKTogTm9kZSB8IG51bGwge1xuICAgIGlmICghdGhpcy5faGFzSW5pdGlhbGl6ZWRDaGlsZE5vZGVzKCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXNbdGhpcy5jaGlsZE5vZGVzLmxlbmd0aCAtIDFdIHx8IG51bGw7XG4gIH1cblxuICBoYXNDaGlsZE5vZGVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oYXNJbml0aWFsaXplZENoaWxkTm9kZXMoKSAmJiBCb29sZWFuKHRoaXMuY2hpbGROb2Rlcy5sZW5ndGgpO1xuICB9XG5cbiAgY2xvbmVOb2RlKGRlZXAgPSBmYWxzZSk6IE5vZGUge1xuICAgIGNvbnN0IGNvcHkgPSB0aGlzLl9zaGFsbG93Q2xvbmUoKTtcblxuICAgIGNvcHkuX3NldE93bmVyRG9jdW1lbnQodGhpcy5vd25lckRvY3VtZW50KTtcblxuICAgIGlmIChkZWVwICYmIHRoaXMuX2hhc0luaXRpYWxpemVkQ2hpbGROb2RlcygpKSB7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGROb2Rlcykge1xuICAgICAgICBjb3B5LmFwcGVuZENoaWxkKGNoaWxkLmNsb25lTm9kZSh0cnVlKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvcHkgYXMgdGhpcztcbiAgfVxuXG4gIF9zaGFsbG93Q2xvbmUoKTogTm9kZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiSWxsZWdhbCBpbnZvY2F0aW9uXCIpO1xuICB9XG5cbiAgX3JlbW92ZShza2lwU2V0UGFyZW50ID0gZmFsc2UpIHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7XG5cbiAgICBpZiAocGFyZW50KSB7XG4gICAgICBjb25zdCBub2RlTGlzdCA9IHBhcmVudC5fZ2V0Q2hpbGROb2Rlc011dGF0b3IoKTtcbiAgICAgIGNvbnN0IGlkeCA9IG5vZGVMaXN0LmluZGV4T2YodGhpcyk7XG4gICAgICBub2RlTGlzdC5zcGxpY2UoaWR4LCAxKTtcblxuICAgICAgaWYgKCFza2lwU2V0UGFyZW50KSB7XG4gICAgICAgIHRoaXMuX3NldFBhcmVudChudWxsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhcHBlbmRDaGlsZChjaGlsZDogTm9kZSk6IE5vZGUge1xuICAgIGlmIChpc0RvY3VtZW50RnJhZ21lbnQoY2hpbGQpKSB7XG4gICAgICBjb25zdCBtdXRhdG9yID0gdGhpcy5fZ2V0Q2hpbGROb2Rlc011dGF0b3IoKTtcbiAgICAgIG11dGF0b3IucHVzaCguLi5jaGlsZC5jaGlsZE5vZGVzKTtcbiAgICAgIG1vdmVEb2N1bWVudEZyYWdtZW50Q2hpbGRyZW4oY2hpbGQsIHRoaXMpO1xuXG4gICAgICByZXR1cm4gY2hpbGQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjaGlsZC5fYXBwZW5kVG8odGhpcyk7XG4gICAgfVxuICB9XG5cbiAgX2FwcGVuZFRvKHBhcmVudE5vZGU6IE5vZGUpOiB0aGlzIHtcbiAgICBwYXJlbnROb2RlLl9hc3NlcnROb3RBbmNlc3Rvcih0aGlzKTsgLy8gRklYTUU6IFNob3VsZCB0aGlzIHJlYWxseSBiZSBhIG1ldGhvZD9cbiAgICBjb25zdCBvbGRQYXJlbnROb2RlID0gdGhpcy5wYXJlbnROb2RlO1xuXG4gICAgLy8gQ2hlY2sgaWYgd2UgYWxyZWFkeSBvd24gdGhpcyBjaGlsZFxuICAgIGlmIChvbGRQYXJlbnROb2RlID09PSBwYXJlbnROb2RlKSB7XG4gICAgICBpZiAocGFyZW50Tm9kZS5fZ2V0Q2hpbGROb2Rlc011dGF0b3IoKS5pbmRleE9mKHRoaXMpICE9PSAtMSkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG9sZFBhcmVudE5vZGUpIHtcbiAgICAgIHRoaXMuX3JlbW92ZSgpO1xuICAgIH1cblxuICAgIHRoaXMuX3NldFBhcmVudChwYXJlbnROb2RlLCB0cnVlKTtcbiAgICBwYXJlbnROb2RlLl9nZXRDaGlsZE5vZGVzTXV0YXRvcigpLnB1c2godGhpcyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJlbW92ZUNoaWxkKGNoaWxkOiBOb2RlKTogTm9kZSB7XG4gICAgLy8gSnVzdCBjb3B5IEZpcmVmb3gncyBlcnJvciBtZXNzYWdlc1xuICAgIGlmIChjaGlsZCAmJiB0eXBlb2YgY2hpbGQgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIGlmIChjaGlsZC5wYXJlbnROb2RlID09PSB0aGlzKSB7XG4gICAgICAgIGNoaWxkLl9yZW1vdmUoKTtcbiAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IERPTUV4Y2VwdGlvbihcbiAgICAgICAgICBcIk5vZGUucmVtb3ZlQ2hpbGQ6IFRoZSBub2RlIHRvIGJlIHJlbW92ZWQgaXMgbm90IGEgY2hpbGQgb2YgdGhpcyBub2RlXCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJOb2RlLnJlbW92ZUNoaWxkOiBBcmd1bWVudCAxIGlzIG5vdCBhbiBvYmplY3QuXCIpO1xuICAgIH1cbiAgfVxuXG4gIHJlcGxhY2VDaGlsZChuZXdDaGlsZDogTm9kZSwgb2xkQ2hpbGQ6IE5vZGUpOiBOb2RlIHtcbiAgICBpZiAob2xkQ2hpbGQucGFyZW50Tm9kZSAhPT0gdGhpcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiT2xkIGNoaWxkJ3MgcGFyZW50IGlzIG5vdCB0aGUgY3VycmVudCBub2RlLlwiKTtcbiAgICB9XG5cbiAgICBvbGRDaGlsZC5fcmVwbGFjZVdpdGgobmV3Q2hpbGQpO1xuICAgIHJldHVybiBvbGRDaGlsZDtcbiAgfVxuXG4gIGluc2VydEJlZm9yZShuZXdOb2RlOiBOb2RlLCByZWZOb2RlOiBOb2RlIHwgbnVsbCk6IE5vZGUge1xuICAgIHRoaXMuX2Fzc2VydE5vdEFuY2VzdG9yKG5ld05vZGUpO1xuICAgIGNvbnN0IG11dGF0b3IgPSB0aGlzLl9nZXRDaGlsZE5vZGVzTXV0YXRvcigpO1xuXG4gICAgaWYgKHJlZk5vZGUgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3Tm9kZSk7XG4gICAgICByZXR1cm4gbmV3Tm9kZTtcbiAgICB9XG5cbiAgICBjb25zdCBpbmRleCA9IG11dGF0b3IuaW5kZXhPZihyZWZOb2RlKTtcbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiRE9NRXhjZXB0aW9uOiBDaGlsZCB0byBpbnNlcnQgYmVmb3JlIGlzIG5vdCBhIGNoaWxkIG9mIHRoaXMgbm9kZVwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoaXNEb2N1bWVudEZyYWdtZW50KG5ld05vZGUpKSB7XG4gICAgICBtdXRhdG9yLnNwbGljZShpbmRleCwgMCwgLi4ubmV3Tm9kZS5jaGlsZE5vZGVzKTtcbiAgICAgIG1vdmVEb2N1bWVudEZyYWdtZW50Q2hpbGRyZW4obmV3Tm9kZSwgdGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG9sZFBhcmVudE5vZGUgPSBuZXdOb2RlLnBhcmVudE5vZGU7XG4gICAgICBjb25zdCBvbGRNdXRhdG9yID0gb2xkUGFyZW50Tm9kZT8uX2dldENoaWxkTm9kZXNNdXRhdG9yKCk7XG5cbiAgICAgIGlmIChvbGRNdXRhdG9yKSB7XG4gICAgICAgIG9sZE11dGF0b3Iuc3BsaWNlKG9sZE11dGF0b3IuaW5kZXhPZihuZXdOb2RlKSwgMSk7XG4gICAgICB9XG5cbiAgICAgIG5ld05vZGUuX3NldFBhcmVudCh0aGlzLCBvbGRQYXJlbnROb2RlICE9PSB0aGlzKTtcbiAgICAgIG11dGF0b3Iuc3BsaWNlKGluZGV4LCAwLCBuZXdOb2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Tm9kZTtcbiAgfVxuXG4gIF9yZXBsYWNlV2l0aCguLi5ub2RlczogKE5vZGUgfCBzdHJpbmcpW10pIHtcbiAgICBpZiAodGhpcy5wYXJlbnROb2RlKSB7XG4gICAgICBjb25zdCBwYXJlbnROb2RlID0gdGhpcy5wYXJlbnROb2RlO1xuICAgICAgY29uc3QgbXV0YXRvciA9IHBhcmVudE5vZGUuX2dldENoaWxkTm9kZXNNdXRhdG9yKCk7XG4gICAgICBsZXQgdmlhYmxlTmV4dFNpYmxpbmc6IE5vZGUgfCBudWxsID0gbnVsbDtcbiAgICAgIHtcbiAgICAgICAgY29uc3QgdGhpc0luZGV4ID0gbXV0YXRvci5pbmRleE9mKHRoaXMpO1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpc0luZGV4ICsgMTsgaSA8IHBhcmVudE5vZGUuY2hpbGROb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmICghbm9kZXMuaW5jbHVkZXMocGFyZW50Tm9kZS5jaGlsZE5vZGVzW2ldKSkge1xuICAgICAgICAgICAgdmlhYmxlTmV4dFNpYmxpbmcgPSBwYXJlbnROb2RlLmNoaWxkTm9kZXNbaV07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG5vZGVzID0gbm9kZXNBbmRUZXh0Tm9kZXMobm9kZXMsIHBhcmVudE5vZGUpO1xuXG4gICAgICBsZXQgaW5kZXggPSB2aWFibGVOZXh0U2libGluZ1xuICAgICAgICA/IG11dGF0b3IuaW5kZXhPZih2aWFibGVOZXh0U2libGluZylcbiAgICAgICAgOiBwYXJlbnROb2RlLmNoaWxkTm9kZXMubGVuZ3RoO1xuICAgICAgbGV0IGRlbGV0ZU51bWJlcjtcbiAgICAgIGlmIChwYXJlbnROb2RlLmNoaWxkTm9kZXNbaW5kZXggLSAxXSA9PT0gdGhpcykge1xuICAgICAgICBpbmRleC0tO1xuICAgICAgICBkZWxldGVOdW1iZXIgPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVsZXRlTnVtYmVyID0gMDtcbiAgICAgIH1cbiAgICAgIG11dGF0b3Iuc3BsaWNlKGluZGV4LCBkZWxldGVOdW1iZXIsIC4uLihub2RlcyBhcyBOb2RlW10pKTtcbiAgICAgIHRoaXMuX3NldFBhcmVudChudWxsKTtcbiAgICB9XG4gIH1cblxuICBnZXQgbmV4dFNpYmxpbmcoKTogTm9kZSB8IG51bGwge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTtcblxuICAgIGlmICghcGFyZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBpbmRleCA9IHBhcmVudC5fZ2V0Q2hpbGROb2Rlc011dGF0b3IoKS5pbmRleE9mKHRoaXMpO1xuICAgIGNvbnN0IG5leHQ6IE5vZGUgfCBudWxsID0gcGFyZW50LmNoaWxkTm9kZXNbaW5kZXggKyAxXSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIG5leHQ7XG4gIH1cblxuICBnZXQgcHJldmlvdXNTaWJsaW5nKCk6IE5vZGUgfCBudWxsIHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7XG5cbiAgICBpZiAoIXBhcmVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgaW5kZXggPSBwYXJlbnQuX2dldENoaWxkTm9kZXNNdXRhdG9yKCkuaW5kZXhPZih0aGlzKTtcbiAgICBjb25zdCBwcmV2OiBOb2RlIHwgbnVsbCA9IHBhcmVudC5jaGlsZE5vZGVzW2luZGV4IC0gMV0gfHwgbnVsbDtcblxuICAgIHJldHVybiBwcmV2O1xuICB9XG5cbiAgLy8gTm9kZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbigpJ3MgYml0bWFzayB2YWx1ZXNcbiAgcHVibGljIHN0YXRpYyBET0NVTUVOVF9QT1NJVElPTl9ESVNDT05ORUNURUQgPSAxIGFzIGNvbnN0O1xuICBwdWJsaWMgc3RhdGljIERPQ1VNRU5UX1BPU0lUSU9OX1BSRUNFRElORyA9IDIgYXMgY29uc3Q7XG4gIHB1YmxpYyBzdGF0aWMgRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HID0gNCBhcyBjb25zdDtcbiAgcHVibGljIHN0YXRpYyBET0NVTUVOVF9QT1NJVElPTl9DT05UQUlOUyA9IDggYXMgY29uc3Q7XG4gIHB1YmxpYyBzdGF0aWMgRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZID0gMTYgYXMgY29uc3Q7XG4gIHB1YmxpYyBzdGF0aWMgRE9DVU1FTlRfUE9TSVRJT05fSU1QTEVNRU5UQVRJT05fU1BFQ0lGSUMgPSAzMiBhcyBjb25zdDtcblxuICAvKipcbiAgICogRklYTUU6IERvZXMgbm90IGltcGxlbWVudCBhdHRyaWJ1dGUgbm9kZSBjaGVja3NcbiAgICogcmVmOiBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvbS1ub2RlLWNvbXBhcmVkb2N1bWVudHBvc2l0aW9uXG4gICAqIE1ETjogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL05vZGUvY29tcGFyZURvY3VtZW50UG9zaXRpb25cbiAgICovXG4gIGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKG90aGVyOiBOb2RlKTogbnVtYmVyIHtcbiAgICBpZiAob3RoZXIgPT09IHRoaXMpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIC8vIE5vdGU6IG1ham9yIGJyb3dzZXIgaW1wbGVtZW50YXRpb25zIGRpZmZlciBpbiB0aGVpciByZWplY3Rpb24gZXJyb3Igb2ZcbiAgICAvLyBub24tTm9kZSBvciBudWxsaXNoIHZhbHVlcyBzbyB3ZSBqdXN0IGNvcHkgdGhlIG1vc3QgcmVsZXZhbnQgZXJyb3IgbWVzc2FnZVxuICAgIC8vIGZyb20gRmlyZWZveFxuICAgIGlmICghKG90aGVyIGluc3RhbmNlb2YgTm9kZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgIFwiTm9kZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjogQXJndW1lbnQgMSBkb2VzIG5vdCBpbXBsZW1lbnQgaW50ZXJmYWNlIE5vZGUuXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBub2RlMVJvb3QgPSBvdGhlcjtcbiAgICBsZXQgbm9kZTJSb290ID0gdGhpcyBhcyBOb2RlO1xuICAgIGNvbnN0IG5vZGUxSGllcmFyY2h5ID0gW25vZGUxUm9vdF07XG4gICAgY29uc3Qgbm9kZTJIaWVyYXJjaHkgPSBbbm9kZTJSb290XTtcbiAgICB3aGlsZSAobm9kZTFSb290LnBhcmVudE5vZGUgPz8gbm9kZTJSb290LnBhcmVudE5vZGUpIHtcbiAgICAgIG5vZGUxUm9vdCA9IG5vZGUxUm9vdC5wYXJlbnROb2RlXG4gICAgICAgID8gKG5vZGUxSGllcmFyY2h5LnB1c2gobm9kZTFSb290LnBhcmVudE5vZGUpLCBub2RlMVJvb3QucGFyZW50Tm9kZSlcbiAgICAgICAgOiBub2RlMVJvb3Q7XG4gICAgICBub2RlMlJvb3QgPSBub2RlMlJvb3QucGFyZW50Tm9kZVxuICAgICAgICA/IChub2RlMkhpZXJhcmNoeS5wdXNoKG5vZGUyUm9vdC5wYXJlbnROb2RlKSwgbm9kZTJSb290LnBhcmVudE5vZGUpXG4gICAgICAgIDogbm9kZTJSb290O1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHRoZXkgZG9uJ3Qgc2hhcmUgdGhlIHNhbWUgcm9vdCBub2RlXG4gICAgaWYgKG5vZGUxUm9vdCAhPT0gbm9kZTJSb290KSB7XG4gICAgICByZXR1cm4gTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9ESVNDT05ORUNURUQgfFxuICAgICAgICBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0lNUExFTUVOVEFUSU9OX1NQRUNJRklDIHxcbiAgICAgICAgTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkc7XG4gICAgfVxuXG4gICAgY29uc3QgbG9uZ2VySGllcmFyY2h5ID0gbm9kZTFIaWVyYXJjaHkubGVuZ3RoID4gbm9kZTJIaWVyYXJjaHkubGVuZ3RoXG4gICAgICA/IG5vZGUxSGllcmFyY2h5XG4gICAgICA6IG5vZGUySGllcmFyY2h5O1xuICAgIGNvbnN0IHNob3J0ZXJIaWVyYXJjaHkgPSBsb25nZXJIaWVyYXJjaHkgPT09IG5vZGUxSGllcmFyY2h5XG4gICAgICA/IG5vZGUySGllcmFyY2h5XG4gICAgICA6IG5vZGUxSGllcmFyY2h5O1xuXG4gICAgLy8gQ2hlY2sgaWYgZWl0aGVyIGlzIGEgY29udGFpbmVyIG9mIHRoZSBvdGhlclxuICAgIGlmIChcbiAgICAgIGxvbmdlckhpZXJhcmNoeVtsb25nZXJIaWVyYXJjaHkubGVuZ3RoIC0gc2hvcnRlckhpZXJhcmNoeS5sZW5ndGhdID09PVxuICAgICAgICBzaG9ydGVySGllcmFyY2h5WzBdXG4gICAgKSB7XG4gICAgICByZXR1cm4gbG9uZ2VySGllcmFyY2h5ID09PSBub2RlMUhpZXJhcmNoeVxuICAgICAgICAvLyBvdGhlciBpcyBhIGNoaWxkIG9mIHRoaXNcbiAgICAgICAgPyBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSB8IE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HXG4gICAgICAgIC8vIHRoaXMgaXMgYSBjaGlsZCBvZiBvdGhlclxuICAgICAgICA6IE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTlMgfCBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX1BSRUNFRElORztcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZWlyIGZpcnN0IGNvbW1vbiBhbmNlc3RvciBhbmQgc2VlIHdoZXRoZXIgdGhleVxuICAgIC8vIGFyZSBwcmVjZWRpbmcgb3IgZm9sbG93aW5nXG4gICAgY29uc3QgbG9uZ2VyU3RhcnQgPSBsb25nZXJIaWVyYXJjaHkubGVuZ3RoIC0gc2hvcnRlckhpZXJhcmNoeS5sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IHNob3J0ZXJIaWVyYXJjaHkubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGNvbnN0IHNob3J0ZXJIaWVyYXJjaHlOb2RlID0gc2hvcnRlckhpZXJhcmNoeVtpXTtcbiAgICAgIGNvbnN0IGxvbmdlckhpZXJhcmNoeU5vZGUgPSBsb25nZXJIaWVyYXJjaHlbbG9uZ2VyU3RhcnQgKyBpXTtcblxuICAgICAgLy8gV2UgZm91bmQgdGhlIGZpcnN0IGNvbW1vbiBhbmNlc3RvclxuICAgICAgaWYgKGxvbmdlckhpZXJhcmNoeU5vZGUgIT09IHNob3J0ZXJIaWVyYXJjaHlOb2RlKSB7XG4gICAgICAgIGNvbnN0IHNpYmxpbmdzID0gc2hvcnRlckhpZXJhcmNoeU5vZGUucGFyZW50Tm9kZSFcbiAgICAgICAgICAuX2dldENoaWxkTm9kZXNNdXRhdG9yKCk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHNpYmxpbmdzLmluZGV4T2Yoc2hvcnRlckhpZXJhcmNoeU5vZGUpIDxcbiAgICAgICAgICAgIHNpYmxpbmdzLmluZGV4T2YobG9uZ2VySGllcmFyY2h5Tm9kZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gU2hvcnRlciBpcyBiZWZvcmUgbG9uZ2VyXG4gICAgICAgICAgaWYgKHNob3J0ZXJIaWVyYXJjaHkgPT09IG5vZGUxSGllcmFyY2h5KSB7XG4gICAgICAgICAgICAvLyBPdGhlciBpcyBiZWZvcmUgdGhpc1xuICAgICAgICAgICAgcmV0dXJuIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUaGlzIGlzIGJlZm9yZSBvdGhlclxuICAgICAgICAgICAgcmV0dXJuIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBMb25nZXIgaXMgYmVmb3JlIHNob3J0ZXJcbiAgICAgICAgICBpZiAobG9uZ2VySGllcmFyY2h5ID09PSBub2RlMUhpZXJhcmNoeSkge1xuICAgICAgICAgICAgLy8gT3RoZXIgaXMgYmVmb3JlIHRoaXNcbiAgICAgICAgICAgIHJldHVybiBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX1BSRUNFRElORztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gT3RoZXIgaXMgYWZ0ZXIgdGhpc1xuICAgICAgICAgICAgcmV0dXJuIE5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZJWE1FOiBTaG91bGQgcHJvYmFibHkgdGhyb3cgaGVyZSBiZWNhdXNlIHRoaXNcbiAgICAvLyBwb2ludCBzaG91bGQgYmUgdW5yZWFjaGFibGUgY29kZSBhcyBwZXIgdGhlXG4gICAgLy8gaW50ZW5kZWQgbG9naWNcbiAgICByZXR1cm4gTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkc7XG4gIH1cblxuICBnZXRSb290Tm9kZShvcHRzOiB7IGNvbXBvc2VkPzogYm9vbGVhbiB9ID0ge30pOiBOb2RlIHtcbiAgICBpZiAodGhpcy5wYXJlbnROb2RlKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJlbnROb2RlLmdldFJvb3ROb2RlKG9wdHMpO1xuICAgIH1cbiAgICBpZiAob3B0cy5jb21wb3NlZCAmJiAodGhpcyBhcyBhbnkpLmhvc3QpIHtcbiAgICAgIHJldHVybiAodGhpcyBhcyBhbnkpLmhvc3QuZ2V0Um9vdE5vZGUob3B0cyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbi8vIE5vZGUgaW5zdGFuY2UgYG5vZGVUeXBlYCBlbnVtIGNvbnN0YW50c1xuZXhwb3J0IGludGVyZmFjZSBOb2RlIHtcbiAgRUxFTUVOVF9OT0RFOiBOb2RlVHlwZTtcbiAgQVRUUklCVVRFX05PREU6IE5vZGVUeXBlO1xuICBURVhUX05PREU6IE5vZGVUeXBlO1xuICBDREFUQV9TRUNUSU9OX05PREU6IE5vZGVUeXBlO1xuICBFTlRJVFlfUkVGRVJFTkNFX05PREU6IE5vZGVUeXBlO1xuICBFTlRJVFlfTk9ERTogTm9kZVR5cGU7XG4gIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERTogTm9kZVR5cGU7XG4gIENPTU1FTlRfTk9ERTogTm9kZVR5cGU7XG4gIERPQ1VNRU5UX05PREU6IE5vZGVUeXBlO1xuICBET0NVTUVOVF9UWVBFX05PREU6IE5vZGVUeXBlO1xuICBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOiBOb2RlVHlwZTtcbiAgTk9UQVRJT05fTk9ERTogTm9kZVR5cGU7XG59XG5cbk5vZGUucHJvdG90eXBlLkVMRU1FTlRfTk9ERSA9IE5vZGVUeXBlLkVMRU1FTlRfTk9ERTtcbk5vZGUucHJvdG90eXBlLkFUVFJJQlVURV9OT0RFID0gTm9kZVR5cGUuQVRUUklCVVRFX05PREU7XG5Ob2RlLnByb3RvdHlwZS5URVhUX05PREUgPSBOb2RlVHlwZS5URVhUX05PREU7XG5Ob2RlLnByb3RvdHlwZS5DREFUQV9TRUNUSU9OX05PREUgPSBOb2RlVHlwZS5DREFUQV9TRUNUSU9OX05PREU7XG5Ob2RlLnByb3RvdHlwZS5FTlRJVFlfUkVGRVJFTkNFX05PREUgPSBOb2RlVHlwZS5FTlRJVFlfUkVGRVJFTkNFX05PREU7XG5Ob2RlLnByb3RvdHlwZS5FTlRJVFlfTk9ERSA9IE5vZGVUeXBlLkVOVElUWV9OT0RFO1xuTm9kZS5wcm90b3R5cGUuUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFID1cbiAgTm9kZVR5cGUuUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFO1xuTm9kZS5wcm90b3R5cGUuQ09NTUVOVF9OT0RFID0gTm9kZVR5cGUuQ09NTUVOVF9OT0RFO1xuTm9kZS5wcm90b3R5cGUuRE9DVU1FTlRfTk9ERSA9IE5vZGVUeXBlLkRPQ1VNRU5UX05PREU7XG5Ob2RlLnByb3RvdHlwZS5ET0NVTUVOVF9UWVBFX05PREUgPSBOb2RlVHlwZS5ET0NVTUVOVF9UWVBFX05PREU7XG5Ob2RlLnByb3RvdHlwZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFID0gTm9kZVR5cGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERTtcbk5vZGUucHJvdG90eXBlLk5PVEFUSU9OX05PREUgPSBOb2RlVHlwZS5OT1RBVElPTl9OT0RFO1xuXG5leHBvcnQgY2xhc3MgQ2hhcmFjdGVyRGF0YSBleHRlbmRzIE5vZGUge1xuICAjbm9kZVZhbHVlID0gXCJcIjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBkYXRhOiBzdHJpbmcsXG4gICAgbm9kZU5hbWU6IHN0cmluZyxcbiAgICBub2RlVHlwZTogTm9kZVR5cGUsXG4gICAgcGFyZW50Tm9kZTogTm9kZSB8IG51bGwsXG4gICAga2V5OiB0eXBlb2YgQ1RPUl9LRVksXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgbm9kZU5hbWUsXG4gICAgICBub2RlVHlwZSxcbiAgICAgIHBhcmVudE5vZGUsXG4gICAgICBrZXksXG4gICAgKTtcblxuICAgIHRoaXMuI25vZGVWYWx1ZSA9IGRhdGE7XG4gIH1cblxuICBvdmVycmlkZSBnZXQgbm9kZVZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI25vZGVWYWx1ZTtcbiAgfVxuXG4gIG92ZXJyaWRlIHNldCBub2RlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMuI25vZGVWYWx1ZSA9IFN0cmluZyh2YWx1ZSA/PyBcIlwiKTtcbiAgfVxuXG4gIGdldCBkYXRhKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI25vZGVWYWx1ZTtcbiAgfVxuXG4gIHNldCBkYXRhKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLm5vZGVWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0IHRleHRDb250ZW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI25vZGVWYWx1ZTtcbiAgfVxuXG4gIG92ZXJyaWRlIHNldCB0ZXh0Q29udGVudCh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5ub2RlVmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmxlbmd0aDtcbiAgfVxuXG4gIGJlZm9yZSguLi5ub2RlczogKE5vZGUgfCBzdHJpbmcpW10pIHtcbiAgICBpZiAodGhpcy5wYXJlbnROb2RlKSB7XG4gICAgICBpbnNlcnRCZWZvcmVBZnRlcih0aGlzLCBub2RlcywgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgYWZ0ZXIoLi4ubm9kZXM6IChOb2RlIHwgc3RyaW5nKVtdKSB7XG4gICAgaWYgKHRoaXMucGFyZW50Tm9kZSkge1xuICAgICAgaW5zZXJ0QmVmb3JlQWZ0ZXIodGhpcywgbm9kZXMsIGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmUoKSB7XG4gICAgdGhpcy5fcmVtb3ZlKCk7XG4gIH1cblxuICByZXBsYWNlV2l0aCguLi5ub2RlczogKE5vZGUgfCBzdHJpbmcpW10pIHtcbiAgICB0aGlzLl9yZXBsYWNlV2l0aCguLi5ub2Rlcyk7XG4gIH1cblxuICAvLyBUT0RPOiBJbXBsZW1lbnQgTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlLm5leHRFbGVtZW50U2libGluZywgZXRjXG4gIC8vIHJlZjogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0NoYXJhY3RlckRhdGFcbn1cblxuZXhwb3J0IGNsYXNzIFRleHQgZXh0ZW5kcyBDaGFyYWN0ZXJEYXRhIHtcbiAgY29uc3RydWN0b3IoXG4gICAgdGV4dDogc3RyaW5nID0gXCJcIixcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBTdHJpbmcodGV4dCksXG4gICAgICBcIiN0ZXh0XCIsXG4gICAgICBOb2RlVHlwZS5URVhUX05PREUsXG4gICAgICBudWxsLFxuICAgICAgQ1RPUl9LRVksXG4gICAgKTtcbiAgfVxuXG4gIG92ZXJyaWRlIF9zaGFsbG93Q2xvbmUoKTogTm9kZSB7XG4gICAgcmV0dXJuIG5ldyBUZXh0KHRoaXMudGV4dENvbnRlbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21tZW50IGV4dGVuZHMgQ2hhcmFjdGVyRGF0YSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHRleHQ6IHN0cmluZyA9IFwiXCIsXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgU3RyaW5nKHRleHQpLFxuICAgICAgXCIjY29tbWVudFwiLFxuICAgICAgTm9kZVR5cGUuQ09NTUVOVF9OT0RFLFxuICAgICAgbnVsbCxcbiAgICAgIENUT1JfS0VZLFxuICAgICk7XG4gIH1cblxuICBvdmVycmlkZSBfc2hhbGxvd0Nsb25lKCk6IE5vZGUge1xuICAgIHJldHVybiBuZXcgQ29tbWVudCh0aGlzLnRleHRDb250ZW50KTtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldCB0ZXh0Q29udGVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiA8c3RyaW5nPiB0aGlzLm5vZGVWYWx1ZTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsUUFBUSxRQUFRLHlCQUF5QjtBQUNsRCxTQUFTLFFBQVEsRUFBbUIsa0JBQWtCLFFBQVEsaUJBQWlCO0FBQy9FLFNBQ0UsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQiw0QkFBNEIsUUFDdkIsYUFBYTtBQUtwQixPQUFPLElBQUEsQUFBSyxrQ0FBQTs7Ozs7Ozs7Ozs7OztTQUFBO01BYVg7QUFFRDs7O0NBR0MsR0FDRCxPQUFP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 +// denoCacheMetadata=12839600816431781389,13149568153198503621
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/9357f4868ca6ed11b518750d43038b4ab81a79b38ffd4e0f5dd2b6ac0b825b52.js b/vendor/gen/https/deno.land/9357f4868ca6ed11b518750d43038b4ab81a79b38ffd4e0f5dd2b6ac0b825b52.js new file mode 100644 index 0000000..0335201 --- /dev/null +++ b/vendor/gen/https/deno.land/9357f4868ca6ed11b518750d43038b4ab81a79b38ffd4e0f5dd2b6ac0b825b52.js @@ -0,0 +1,67 @@ +import { GenericPrompt } from "./_generic_prompt.ts"; +import { GenericSuggestions } from "./_generic_suggestions.ts"; +import { brightBlue, normalize, yellow } from "./deps.ts"; +import { Figures } from "./figures.ts"; +/** Input prompt representation. */ export class Input extends GenericSuggestions { + /** Execute the prompt and show cursor on end. */ static prompt(options) { + if (typeof options === "string") { + options = { + message: options + }; + } + return new this({ + pointer: brightBlue(Figures.POINTER_SMALL), + prefix: yellow("? "), + indent: " ", + listPointer: brightBlue(Figures.POINTER), + maxRows: 8, + minLength: 0, + maxLength: Infinity, + ...options + }).prompt(); + } + /** + * Inject prompt value. Can be used for unit tests or pre selections. + * @param value Input value. + */ static inject(value) { + GenericPrompt.inject(value); + } + success(value) { + this.saveSuggestions(value); + return super.success(value); + } + /** Get input value. */ getValue() { + return this.settings.files ? normalize(this.inputValue) : this.inputValue; + } + /** + * Validate input value. + * @param value User input value. + * @return True on success, false or error message on error. + */ validate(value) { + if (typeof value !== "string") { + return false; + } + if (value.length < this.settings.minLength) { + return `Value must be longer than ${this.settings.minLength} but has a length of ${value.length}.`; + } + if (value.length > this.settings.maxLength) { + return `Value can't be longer than ${this.settings.maxLength} but has a length of ${value.length}.`; + } + return true; + } + /** + * Map input value to output value. + * @param value Input value. + * @return Output value. + */ transform(value) { + return value.trim(); + } + /** + * Format output value. + * @param value Output value. + */ format(value) { + return value; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvcHJvbXB0L2lucHV0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdlbmVyaWNQcm9tcHQgfSBmcm9tIFwiLi9fZ2VuZXJpY19wcm9tcHQudHNcIjtcbmltcG9ydCB7XG4gIEdlbmVyaWNTdWdnZXN0aW9ucyxcbiAgR2VuZXJpY1N1Z2dlc3Rpb25zS2V5cyxcbiAgR2VuZXJpY1N1Z2dlc3Rpb25zT3B0aW9ucyxcbiAgR2VuZXJpY1N1Z2dlc3Rpb25zU2V0dGluZ3MsXG59IGZyb20gXCIuL19nZW5lcmljX3N1Z2dlc3Rpb25zLnRzXCI7XG5pbXBvcnQgeyBicmlnaHRCbHVlLCBub3JtYWxpemUsIHllbGxvdyB9IGZyb20gXCIuL2RlcHMudHNcIjtcbmltcG9ydCB7IEZpZ3VyZXMgfSBmcm9tIFwiLi9maWd1cmVzLnRzXCI7XG5cbmV4cG9ydCB0eXBlIElucHV0S2V5cyA9IEdlbmVyaWNTdWdnZXN0aW9uc0tleXM7XG5cbi8qKiBJbnB1dCBwcm9tcHQgb3B0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRPcHRpb25zXG4gIGV4dGVuZHMgR2VuZXJpY1N1Z2dlc3Rpb25zT3B0aW9uczxzdHJpbmcsIHN0cmluZz4ge1xuICBtaW5MZW5ndGg/OiBudW1iZXI7XG4gIG1heExlbmd0aD86IG51bWJlcjtcbiAga2V5cz86IElucHV0S2V5cztcbn1cblxuLyoqIElucHV0IHByb21wdCBzZXR0aW5ncy4gKi9cbmludGVyZmFjZSBJbnB1dFNldHRpbmdzIGV4dGVuZHMgR2VuZXJpY1N1Z2dlc3Rpb25zU2V0dGluZ3M8c3RyaW5nLCBzdHJpbmc+IHtcbiAgbWluTGVuZ3RoOiBudW1iZXI7XG4gIG1heExlbmd0aDogbnVtYmVyO1xuICBrZXlzPzogSW5wdXRLZXlzO1xufVxuXG4vKiogSW5wdXQgcHJvbXB0IHJlcHJlc2VudGF0aW9uLiAqL1xuZXhwb3J0IGNsYXNzIElucHV0IGV4dGVuZHMgR2VuZXJpY1N1Z2dlc3Rpb25zPHN0cmluZywgc3RyaW5nLCBJbnB1dFNldHRpbmdzPiB7XG4gIC8qKiBFeGVjdXRlIHRoZSBwcm9tcHQgYW5kIHNob3cgY3Vyc29yIG9uIGVuZC4gKi9cbiAgcHVibGljIHN0YXRpYyBwcm9tcHQob3B0aW9uczogc3RyaW5nIHwgSW5wdXRPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIG9wdGlvbnMgPSB7IG1lc3NhZ2U6IG9wdGlvbnMgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IHRoaXMoe1xuICAgICAgcG9pbnRlcjogYnJpZ2h0Qmx1ZShGaWd1cmVzLlBPSU5URVJfU01BTEwpLFxuICAgICAgcHJlZml4OiB5ZWxsb3coXCI/IFwiKSxcbiAgICAgIGluZGVudDogXCIgXCIsXG4gICAgICBsaXN0UG9pbnRlcjogYnJpZ2h0Qmx1ZShGaWd1cmVzLlBPSU5URVIpLFxuICAgICAgbWF4Um93czogOCxcbiAgICAgIG1pbkxlbmd0aDogMCxcbiAgICAgIG1heExlbmd0aDogSW5maW5pdHksXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pLnByb21wdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluamVjdCBwcm9tcHQgdmFsdWUuIENhbiBiZSB1c2VkIGZvciB1bml0IHRlc3RzIG9yIHByZSBzZWxlY3Rpb25zLlxuICAgKiBAcGFyYW0gdmFsdWUgSW5wdXQgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGluamVjdCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgR2VuZXJpY1Byb21wdC5pbmplY3QodmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN1Y2Nlc3ModmFsdWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgdGhpcy5zYXZlU3VnZ2VzdGlvbnModmFsdWUpO1xuICAgIHJldHVybiBzdXBlci5zdWNjZXNzKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBHZXQgaW5wdXQgdmFsdWUuICovXG4gIHByb3RlY3RlZCBnZXRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdzLmZpbGVzID8gbm9ybWFsaXplKHRoaXMuaW5wdXRWYWx1ZSkgOiB0aGlzLmlucHV0VmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgaW5wdXQgdmFsdWUuXG4gICAqIEBwYXJhbSB2YWx1ZSBVc2VyIGlucHV0IHZhbHVlLlxuICAgKiBAcmV0dXJuIFRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3IgZXJyb3IgbWVzc2FnZSBvbiBlcnJvci5cbiAgICovXG4gIHByb3RlY3RlZCB2YWxpZGF0ZSh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB8IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodmFsdWUubGVuZ3RoIDwgdGhpcy5zZXR0aW5ncy5taW5MZW5ndGgpIHtcbiAgICAgIHJldHVybiBgVmFsdWUgbXVzdCBiZSBsb25nZXIgdGhhbiAke3RoaXMuc2V0dGluZ3MubWluTGVuZ3RofSBidXQgaGFzIGEgbGVuZ3RoIG9mICR7dmFsdWUubGVuZ3RofS5gO1xuICAgIH1cbiAgICBpZiAodmFsdWUubGVuZ3RoID4gdGhpcy5zZXR0aW5ncy5tYXhMZW5ndGgpIHtcbiAgICAgIHJldHVybiBgVmFsdWUgY2FuJ3QgYmUgbG9uZ2VyIHRoYW4gJHt0aGlzLnNldHRpbmdzLm1heExlbmd0aH0gYnV0IGhhcyBhIGxlbmd0aCBvZiAke3ZhbHVlLmxlbmd0aH0uYDtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogTWFwIGlucHV0IHZhbHVlIHRvIG91dHB1dCB2YWx1ZS5cbiAgICogQHBhcmFtIHZhbHVlIElucHV0IHZhbHVlLlxuICAgKiBAcmV0dXJuIE91dHB1dCB2YWx1ZS5cbiAgICovXG4gIHByb3RlY3RlZCB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHZhbHVlLnRyaW0oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXQgb3V0cHV0IHZhbHVlLlxuICAgKiBAcGFyYW0gdmFsdWUgT3V0cHV0IHZhbHVlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGZvcm1hdCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLGFBQWEsUUFBUSx1QkFBdUI7QUFDckQsU0FDRSxrQkFBa0IsUUFJYiw0QkFBNEI7QUFDbkMsU0FBUyxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxZQUFZO0FBQzFELFNBQVMsT0FBTyxRQUFRLGVBQWU7QUFtQnZDLGlDQUFpQyxHQUNqQyxPQUFPLE1BQU0sY0FBYztFQUN6QiwrQ0FBK0MsR0FDL0MsT0FBYyxPQUFPLE9BQThCLEVBQW1CO0lBQ3BFLElBQUksT0FBTyxZQUFZLFVBQVU7TUFDL0IsVUFBVTtRQUFFLFNBQVM7TUFBUTtJQUMvQjtJQUVBLE9BQU8sSUFBSSxJQUFJLENBQUM7TUFDZCxTQUFTLFdBQVcsUUFBUSxhQUFhO01BQ3pDLFFBQVEsT0FBTztNQUNmLFFBQVE7TUFDUixhQUFhLFdBQVcsUUFBUSxPQUFPO01BQ3ZDLFNBQVM7TUFDVCxXQUFXO01BQ1gsV0FBVztNQUNYLEdBQUcsT0FBTztJQUNaLEdBQUcsTUFBTTtFQUNYO0VBRUE7OztHQUdDLEdBQ0QsT0FBYyxPQUFPLEtBQWEsRUFBUTtJQUN4QyxjQUFjLE1BQU0sQ0FBQztFQUN2QjtFQUVVLFFBQVEsS0FBYSxFQUFzQjtJQUNuRCxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ3JCLE9BQU8sS0FBSyxDQUFDLFFBQVE7RUFDdkI7RUFFQSxxQkFBcUIsR0FDckIsQUFBVSxXQUFtQjtJQUMzQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLFVBQVUsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVTtFQUMzRTtFQUVBOzs7O0dBSUMsR0FDRCxBQUFVLFNBQVMsS0FBYSxFQUFvQjtJQUNsRCxJQUFJLE9BQU8sVUFBVSxVQUFVO01BQzdCLE9BQU87SUFDVDtJQUNBLElBQUksTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUU7TUFDMUMsT0FBTyxDQUFDLDBCQUEwQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLHFCQUFxQixFQUFFLE1BQU0sTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRztJQUNBLElBQUksTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUU7TUFDMUMsT0FBTyxDQUFDLDJCQUEyQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLHFCQUFxQixFQUFFLE1BQU0sTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRztJQUNBLE9BQU87RUFDVDtFQUVBOzs7O0dBSUMsR0FDRCxBQUFVLFVBQVUsS0FBYSxFQUFzQjtJQUNyRCxPQUFPLE1BQU0sSUFBSTtFQUNuQjtFQUVBOzs7R0FHQyxHQUNELEFBQVUsT0FBTyxLQUFhLEVBQVU7SUFDdEMsT0FBTztFQUNUO0FBQ0YifQ== +// denoCacheMetadata=9931490778005018295,14940612991006410141
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/936428dffbff71b213bd57d419fcb8b7be2b58766cef7c6e31478b4cf92d9d03.js b/vendor/gen/https/deno.land/936428dffbff71b213bd57d419fcb8b7be2b58766cef7c6e31478b4cf92d9d03.js new file mode 100644 index 0000000..0e4c3ed --- /dev/null +++ b/vendor/gen/https/deno.land/936428dffbff71b213bd57d419fcb8b7be2b58766cef7c6e31478b4cf92d9d03.js @@ -0,0 +1,5 @@ +/// <reference lib="dom" /> +/// <reference lib="dom.iterable" /> +export * from "https://deno.land/x/deno_dom@v0.1.49/deno-dom-wasm.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvZGVwcy9kb20udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIgLz5cbi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbS5pdGVyYWJsZVwiIC8+XG5leHBvcnQgKiBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQveC9kZW5vX2RvbUB2MC4xLjQ5L2Rlbm8tZG9tLXdhc20udHNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQkFBMkI7QUFDM0Isb0NBQW9DO0FBQ3BDLGNBQWMsd0RBQXdEIn0= +// denoCacheMetadata=15843156102399148250,10821655885244681950
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/96837a0d8b9fa98caa6242855b2236f19c5c8132a4048efeb3e0037fe24644f4.js b/vendor/gen/https/deno.land/96837a0d8b9fa98caa6242855b2236f19c5c8132a4048efeb3e0037fe24644f4.js new file mode 100644 index 0000000..126e14c --- /dev/null +++ b/vendor/gen/https/deno.land/96837a0d8b9fa98caa6242855b2236f19c5c8132a4048efeb3e0037fe24644f4.js @@ -0,0 +1,5 @@ +/** + * Used to enforce illegal constructors + */ export const CTOR_KEY = Symbol("CTOR_KEY"); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvZGVub19kb21AdjAuMS40OS9zcmMvY29uc3RydWN0b3ItbG9jay50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFVzZWQgdG8gZW5mb3JjZSBpbGxlZ2FsIGNvbnN0cnVjdG9yc1xuICovXG5cbmV4cG9ydCBjb25zdCBDVE9SX0tFWSA9IFN5bWJvbChcIkNUT1JfS0VZXCIpO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztDQUVDLEdBRUQsT0FBTyxNQUFNLFdBQVcsT0FBTyxZQUFZIn0= +// denoCacheMetadata=16982866296210629238,16468744999704106686
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/978202d32ddc6b8ca33e7a4952d156af6f8470aad796d45d91b4153c0c4abda6.js b/vendor/gen/https/deno.land/978202d32ddc6b8ca33e7a4952d156af6f8470aad796d45d91b4153c0c4abda6.js new file mode 100644 index 0000000..531b0df --- /dev/null +++ b/vendor/gen/https/deno.land/978202d32ddc6b8ca33e7a4952d156af6f8470aad796d45d91b4153c0c4abda6.js @@ -0,0 +1,48 @@ +import { CTOR_KEY } from "../constructor-lock.ts"; +import { nodesFromString } from "../deserialize.ts"; +import { DocumentType, HTMLDocument } from "./document.ts"; +export class DOMParser { + parseFromString(source, mimeType) { + if (mimeType !== "text/html") { + throw new Error(`DOMParser: "${mimeType}" unimplemented`); // TODO + } + const doc = new HTMLDocument(CTOR_KEY); + const fakeDoc = nodesFromString(source); + let htmlNode = null; + let hasDoctype = false; + for (const child of [ + ...fakeDoc.childNodes + ]){ + doc.appendChild(child); + if (child instanceof DocumentType) { + hasDoctype = true; + } else if (child.nodeName === "HTML") { + htmlNode = child; + } + } + if (!hasDoctype) { + const docType = new DocumentType("html", "", "", CTOR_KEY); + // doc.insertBefore(docType, doc.firstChild); + if (doc.childNodes.length === 0) { + doc.appendChild(docType); + } else { + doc.insertBefore(docType, doc.childNodes[0]); + } + } + if (htmlNode) { + for (const child of htmlNode.childNodes){ + switch(child.tagName){ + case "HEAD": + doc.head = child; + break; + case "BODY": + doc.body = child; + break; + } + } + } + return doc; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvZGVub19kb21AdjAuMS40OS9zcmMvZG9tL2RvbS1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1RPUl9LRVkgfSBmcm9tIFwiLi4vY29uc3RydWN0b3ItbG9jay50c1wiO1xuaW1wb3J0IHsgbm9kZXNGcm9tU3RyaW5nIH0gZnJvbSBcIi4uL2Rlc2VyaWFsaXplLnRzXCI7XG5pbXBvcnQgeyBEb2N1bWVudFR5cGUsIEhUTUxEb2N1bWVudCB9IGZyb20gXCIuL2RvY3VtZW50LnRzXCI7XG5pbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tIFwiLi9lbGVtZW50LnRzXCI7XG5cbmV4cG9ydCB0eXBlIERPTVBhcnNlck1pbWVUeXBlID1cbiAgfCBcInRleHQvaHRtbFwiXG4gIHwgXCJ0ZXh0L3htbFwiXG4gIHwgXCJhcHBsaWNhdGlvbi94bWxcIlxuICB8IFwiYXBwbGljYXRpb24veGh0bWwreG1sXCJcbiAgfCBcImltYWdlL3N2Zyt4bWxcIjtcblxuZXhwb3J0IGNsYXNzIERPTVBhcnNlciB7XG4gIHBhcnNlRnJvbVN0cmluZyhcbiAgICBzb3VyY2U6IHN0cmluZyxcbiAgICBtaW1lVHlwZTogRE9NUGFyc2VyTWltZVR5cGUsXG4gICk6IEhUTUxEb2N1bWVudCB7XG4gICAgaWYgKG1pbWVUeXBlICE9PSBcInRleHQvaHRtbFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERPTVBhcnNlcjogXCIke21pbWVUeXBlfVwiIHVuaW1wbGVtZW50ZWRgKTsgLy8gVE9ET1xuICAgIH1cblxuICAgIGNvbnN0IGRvYyA9IG5ldyBIVE1MRG9jdW1lbnQoQ1RPUl9LRVkpO1xuXG4gICAgY29uc3QgZmFrZURvYyA9IG5vZGVzRnJvbVN0cmluZyhzb3VyY2UpO1xuICAgIGxldCBodG1sTm9kZTogRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBoYXNEb2N0eXBlID0gZmFsc2U7XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIFsuLi5mYWtlRG9jLmNoaWxkTm9kZXNdKSB7XG4gICAgICBkb2MuYXBwZW5kQ2hpbGQoY2hpbGQpO1xuXG4gICAgICBpZiAoY2hpbGQgaW5zdGFuY2VvZiBEb2N1bWVudFR5cGUpIHtcbiAgICAgICAgaGFzRG9jdHlwZSA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKGNoaWxkLm5vZGVOYW1lID09PSBcIkhUTUxcIikge1xuICAgICAgICBodG1sTm9kZSA9IDxFbGVtZW50PiBjaGlsZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWhhc0RvY3R5cGUpIHtcbiAgICAgIGNvbnN0IGRvY1R5cGUgPSBuZXcgRG9jdW1lbnRUeXBlKFwiaHRtbFwiLCBcIlwiLCBcIlwiLCBDVE9SX0tFWSk7XG4gICAgICAvLyBkb2MuaW5zZXJ0QmVmb3JlKGRvY1R5cGUsIGRvYy5maXJzdENoaWxkKTtcbiAgICAgIGlmIChkb2MuY2hpbGROb2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZG9jLmFwcGVuZENoaWxkKGRvY1R5cGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZG9jLmluc2VydEJlZm9yZShkb2NUeXBlLCBkb2MuY2hpbGROb2Rlc1swXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGh0bWxOb2RlKSB7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGh0bWxOb2RlLmNoaWxkTm9kZXMpIHtcbiAgICAgICAgc3dpdGNoICgoPEVsZW1lbnQ+IGNoaWxkKS50YWdOYW1lKSB7XG4gICAgICAgICAgY2FzZSBcIkhFQURcIjpcbiAgICAgICAgICAgIGRvYy5oZWFkID0gPEVsZW1lbnQ+IGNoaWxkO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcIkJPRFlcIjpcbiAgICAgICAgICAgIGRvYy5ib2R5ID0gPEVsZW1lbnQ+IGNoaWxkO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZG9jO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxRQUFRLFFBQVEseUJBQXlCO0FBQ2xELFNBQVMsZUFBZSxRQUFRLG9CQUFvQjtBQUNwRCxTQUFTLFlBQVksRUFBRSxZQUFZLFFBQVEsZ0JBQWdCO0FBVTNELE9BQU8sTUFBTTtFQUNYLGdCQUNFLE1BQWMsRUFDZCxRQUEyQixFQUNiO0lBQ2QsSUFBSSxhQUFhLGFBQWE7TUFDNUIsTUFBTSxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsU0FBUyxlQUFlLENBQUMsR0FBRyxPQUFPO0lBQ3BFO0lBRUEsTUFBTSxNQUFNLElBQUksYUFBYTtJQUU3QixNQUFNLFVBQVUsZ0JBQWdCO0lBQ2hDLElBQUksV0FBMkI7SUFDL0IsSUFBSSxhQUFhO0lBRWpCLEtBQUssTUFBTSxTQUFTO1NBQUksUUFBUSxVQUFVO0tBQUMsQ0FBRTtNQUMzQyxJQUFJLFdBQVcsQ0FBQztNQUVoQixJQUFJLGlCQUFpQixjQUFjO1FBQ2pDLGFBQWE7TUFDZixPQUFPLElBQUksTUFBTSxRQUFRLEtBQUssUUFBUTtRQUNwQyxXQUFxQjtNQUN2QjtJQUNGO0lBRUEsSUFBSSxDQUFDLFlBQVk7TUFDZixNQUFNLFVBQVUsSUFBSSxhQUFhLFFBQVEsSUFBSSxJQUFJO01BQ2pELDZDQUE2QztNQUM3QyxJQUFJLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxHQUFHO1FBQy9CLElBQUksV0FBVyxDQUFDO01BQ2xCLE9BQU87UUFDTCxJQUFJLFlBQVksQ0FBQyxTQUFTLElBQUksVUFBVSxDQUFDLEVBQUU7TUFDN0M7SUFDRjtJQUVBLElBQUksVUFBVTtNQUNaLEtBQUssTUFBTSxTQUFTLFNBQVMsVUFBVSxDQUFFO1FBQ3ZDLE9BQVEsQUFBVyxNQUFPLE9BQU87VUFDL0IsS0FBSztZQUNILElBQUksSUFBSSxHQUFhO1lBQ3JCO1VBQ0YsS0FBSztZQUNILElBQUksSUFBSSxHQUFhO1lBQ3JCO1FBQ0o7TUFDRjtJQUNGO0lBRUEsT0FBTztFQUNUO0FBQ0YifQ== +// denoCacheMetadata=15918585765417562359,15756952364380734859
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/98009cf0d9b7bf8c93ccedf9d4efb562d421fed638e1c6419615658575f37e70.js b/vendor/gen/https/deno.land/98009cf0d9b7bf8c93ccedf9d4efb562d421fed638e1c6419615658575f37e70.js new file mode 100644 index 0000000..a49bbb9 --- /dev/null +++ b/vendor/gen/https/deno.land/98009cf0d9b7bf8c93ccedf9d4efb562d421fed638e1c6419615658575f37e70.js @@ -0,0 +1,3 @@ +// deno-lint-ignore-file no-explicit-any +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBkZW5vLWxpbnQtaWdub3JlLWZpbGUgbm8tZXhwbGljaXQtYW55XG5cbmltcG9ydCB0eXBlIHtcbiAgQXJndW1lbnRPcHRpb25zLFxuICBBcmd1bWVudFZhbHVlLFxuICBEZWZhdWx0VmFsdWUsXG4gIEZsYWdPcHRpb25zLFxuICBUeXBlSGFuZGxlcixcbiAgVmFsdWVIYW5kbGVyLFxufSBmcm9tIFwiLi4vZmxhZ3MvdHlwZXMudHNcIjtcbmltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSBcIi4vX2Vycm9ycy50c1wiO1xuaW1wb3J0IHR5cGUgeyBDb21tYW5kIH0gZnJvbSBcIi4vY29tbWFuZC50c1wiO1xuaW1wb3J0IHR5cGUgeyBIZWxwT3B0aW9ucyB9IGZyb20gXCIuL2hlbHAvX2hlbHBfZ2VuZXJhdG9yLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFR5cGUgfSBmcm9tIFwiLi90eXBlLnRzXCI7XG5cbmV4cG9ydCB0eXBlIHsgQXJndW1lbnRWYWx1ZSwgRGVmYXVsdFZhbHVlLCBUeXBlSGFuZGxlciB9O1xuXG50eXBlIE1lcmdlPFQsIFY+ID0gVCBleHRlbmRzIHZvaWQgPyBWIDogViBleHRlbmRzIHZvaWQgPyBUIDogVCAmIFY7XG5cbmV4cG9ydCB0eXBlIFR5cGVPclR5cGVIYW5kbGVyPFRWYWx1ZT4gPSBUeXBlPFRWYWx1ZT4gfCBUeXBlSGFuZGxlcjxUVmFsdWU+O1xuXG50eXBlIElkPFRWYWx1ZT4gPSBUVmFsdWUgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICA/IFRWYWx1ZSBleHRlbmRzIGluZmVyIFUgPyB7IFtLIGluIGtleW9mIFVdOiBJZDxVW0tdPiB9IDogbmV2ZXJcbiAgOiBUVmFsdWU7XG5cbmV4cG9ydCB0eXBlIE1hcFR5cGVzPFQ+ID0gVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgQXJyYXk8dW5rbm93bj5cbiAgPyB7IFtLIGluIGtleW9mIFRdOiBNYXBUeXBlczxUW0tdPiB9XG4gIDogVHlwZS5pbmZlcjxUPjtcblxuLyogQ09NTUFORCBUWVBFUyAqL1xuXG4vKiogRGVzY3JpcHRpb24gaGFuZGxlci4gKi9cbmV4cG9ydCB0eXBlIERlc2NyaXB0aW9uPFxuICBUT3B0aW9ucyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gYW55LFxuICBUQXJndW1lbnRzIGV4dGVuZHMgQXJyYXk8dW5rbm93bj4gPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlciA/IGFueSA6IFtdLFxuICBUR2xvYmFscyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXIgPyBhbnlcbiAgICA6IHZvaWQsXG4gIFRQYXJlbnRHbG9iYWxzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlclxuICAgID8gYW55XG4gICAgOiB2b2lkLFxuICBUVHlwZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyID8gYW55XG4gICAgOiB2b2lkLFxuICBUR2xvYmFsVHlwZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyXG4gICAgPyBhbnlcbiAgICA6IHZvaWQsXG4gIFRQYXJlbnRUeXBlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXJcbiAgICA/IGFueVxuICAgIDogdm9pZCxcbiAgVFBhcmVudENvbW1hbmQgZXh0ZW5kcyBDb21tYW5kPGFueT4gfCB1bmRlZmluZWQgPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlclxuICAgID8gYW55XG4gICAgOiB1bmRlZmluZWQsXG4+ID1cbiAgfCBzdHJpbmdcbiAgfCBEZXNjcmlwdGlvbkhhbmRsZXI8XG4gICAgVE9wdGlvbnMsXG4gICAgVEFyZ3VtZW50cyxcbiAgICBUR2xvYmFscyxcbiAgICBUUGFyZW50R2xvYmFscyxcbiAgICBUVHlwZXMsXG4gICAgVEdsb2JhbFR5cGVzLFxuICAgIFRQYXJlbnRUeXBlcyxcbiAgICBUUGFyZW50Q29tbWFuZFxuICA+O1xuXG4vKiogRGVzY3JpcHRpb24gaGFuZGxlci4gKi9cbmV4cG9ydCB0eXBlIERlc2NyaXB0aW9uSGFuZGxlcjxcbiAgVE9wdGlvbnMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IGFueSxcbiAgVEFyZ3VtZW50cyBleHRlbmRzIEFycmF5PHVua25vd24+ID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiBbXSxcbiAgVEdsb2JhbHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyID8gYW55XG4gICAgOiB2b2lkLFxuICBUUGFyZW50R2xvYmFscyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXJcbiAgICA/IGFueVxuICAgIDogdm9pZCxcbiAgVFR5cGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlciA/IGFueVxuICAgIDogdm9pZCxcbiAgVEdsb2JhbFR5cGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlclxuICAgID8gYW55XG4gICAgOiB2b2lkLFxuICBUUGFyZW50VHlwZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyXG4gICAgPyBhbnlcbiAgICA6IHZvaWQsXG4gIFRQYXJlbnRDb21tYW5kIGV4dGVuZHMgQ29tbWFuZDxhbnk+IHwgdW5kZWZpbmVkID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXJcbiAgICA/IGFueVxuICAgIDogdW5kZWZpbmVkLFxuPiA9IChcbiAgdGhpczogQ29tbWFuZDxcbiAgICBUUGFyZW50R2xvYmFscyxcbiAgICBUUGFyZW50VHlwZXMsXG4gICAgVE9wdGlvbnMsXG4gICAgVEFyZ3VtZW50cyxcbiAgICBUR2xvYmFscyxcbiAgICBUVHlwZXMsXG4gICAgVEdsb2JhbFR5cGVzLFxuICAgIFRQYXJlbnRDb21tYW5kXG4gID4sXG4pID0+IHN0cmluZztcblxuLyoqIEFjdGlvbiBoYW5kbGVyIGZvciBjb21tYW5kcyBhbmQgb3B0aW9ucy4gKi9cbmV4cG9ydCB0eXBlIEFjdGlvbkhhbmRsZXI8XG4gIFRPcHRpb25zIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBhbnksXG4gIFRBcmd1bWVudHMgZXh0ZW5kcyBBcnJheTx1bmtub3duPiA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyID8gYW55IDogW10sXG4gIFRHbG9iYWxzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlciA/IGFueVxuICAgIDogdm9pZCxcbiAgVFBhcmVudEdsb2JhbHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyXG4gICAgPyBhbnlcbiAgICA6IHZvaWQsXG4gIFRUeXBlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXIgPyBhbnlcbiAgICA6IHZvaWQsXG4gIFRHbG9iYWxUeXBlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXJcbiAgICA/IGFueVxuICAgIDogdm9pZCxcbiAgVFBhcmVudFR5cGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlclxuICAgID8gYW55XG4gICAgOiB2b2lkLFxuICBUUGFyZW50Q29tbWFuZCBleHRlbmRzIENvbW1hbmQ8YW55PiB8IHVuZGVmaW5lZCA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyXG4gICAgPyBhbnlcbiAgICA6IHVuZGVmaW5lZCxcbj4gPSAoXG4gIHRoaXM6IENvbW1hbmQ8XG4gICAgVFBhcmVudEdsb2JhbHMsXG4gICAgVFBhcmVudFR5cGVzLFxuICAgIFRPcHRpb25zLFxuICAgIFRBcmd1bWVudHMsXG4gICAgVEdsb2JhbHMsXG4gICAgVFR5cGVzLFxuICAgIFRHbG9iYWxUeXBlcyxcbiAgICBUUGFyZW50Q29tbWFuZFxuICA+LFxuICBvcHRpb25zOiBNYXBUeXBlczxNZXJnZTxUUGFyZW50R2xvYmFscywgTWVyZ2U8VEdsb2JhbHMsIFRPcHRpb25zPj4+LFxuICAuLi5hcmdzOiBNYXBUeXBlczxUQXJndW1lbnRzPlxuKSA9PiB1bmtub3duIHwgUHJvbWlzZTx1bmtub3duPjtcblxuLyoqIEFyZ3VtZW50IGRldGFpbHMuICovXG5leHBvcnQgaW50ZXJmYWNlIEFyZ3VtZW50IGV4dGVuZHMgQXJndW1lbnRPcHRpb25zIHtcbiAgLyoqIEFyZ3VtZW50IG5hbWUuICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIFNoZWxsIGNvbXBsZXRpb24gYWN0aW9uLiAqL1xuICBhY3Rpb246IHN0cmluZztcbiAgLyoqIEFyZ3VtZW50cyB0eXBlLiAqL1xuICB0eXBlOiBzdHJpbmc7XG59XG5cbi8qKiBSZXN1bHQgb2YgYGNtZC5wYXJzZSgpYCBtZXRob2QuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbW1hbmRSZXN1bHQ8XG4gIFRPcHRpb25zIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBhbnksXG4gIFRBcmd1bWVudHMgZXh0ZW5kcyBBcnJheTx1bmtub3duPiA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyID8gYW55IDogW10sXG4gIFRHbG9iYWxzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlciA/IGFueVxuICAgIDogdm9pZCxcbiAgVFBhcmVudEdsb2JhbHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyXG4gICAgPyBhbnlcbiAgICA6IHZvaWQsXG4gIFRUeXBlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXIgPyBhbnlcbiAgICA6IHZvaWQsXG4gIFRHbG9iYWxUeXBlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXJcbiAgICA/IGFueVxuICAgIDogdm9pZCxcbiAgVFBhcmVudFR5cGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlclxuICAgID8gYW55XG4gICAgOiB2b2lkLFxuICBUUGFyZW50Q29tbWFuZCBleHRlbmRzIENvbW1hbmQ8YW55PiB8IHVuZGVmaW5lZCA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyXG4gICAgPyBhbnlcbiAgICA6IHVuZGVmaW5lZCxcbj4ge1xuICBvcHRpb25zOiBJZDxNZXJnZTxNZXJnZTxUUGFyZW50R2xvYmFscywgVEdsb2JhbHM+LCBUT3B0aW9ucz4+O1xuICBhcmdzOiBUQXJndW1lbnRzO1xuICBsaXRlcmFsOiBzdHJpbmdbXTtcbiAgY21kOiBDb21tYW5kPFxuICAgIFRQYXJlbnRHbG9iYWxzLFxuICAgIFRQYXJlbnRUeXBlcyxcbiAgICBUT3B0aW9ucyxcbiAgICBUQXJndW1lbnRzLFxuICAgIFRHbG9iYWxzLFxuICAgIFRUeXBlcyxcbiAgICBUR2xvYmFsVHlwZXMsXG4gICAgVFBhcmVudENvbW1hbmRcbiAgPjtcbn1cblxuLyogT1BUSU9OIFRZUEVTICovXG5cbmV4cG9ydCB0eXBlIE9wdGlvblZhbHVlSGFuZGxlcjxUVmFsdWUgPSBhbnksIFRSZXR1cm4gPSBUVmFsdWU+ID0gVmFsdWVIYW5kbGVyPFxuICBUVmFsdWUsXG4gIFRSZXR1cm5cbj47XG5cbnR5cGUgRXhjbHVkZWRDb21tYW5kT3B0aW9ucyA9XG4gIHwgXCJuYW1lXCJcbiAgfCBcImFyZ3NcIlxuICB8IFwidHlwZVwiXG4gIHwgXCJvcHRpb25hbFZhbHVlXCJcbiAgfCBcInJlcXVpcmVkVmFsdWVcIlxuICB8IFwiYWxpYXNlc1wiXG4gIHwgXCJ2YXJpYWRpY1wiXG4gIHwgXCJsaXN0XCJcbiAgfCBcInZhbHVlXCJcbiAgfCBcImRlZmF1bHRcIjtcblxuLyoqIENvbW1hbmQgb3B0aW9uIG9wdGlvbnMuICovXG5leHBvcnQgaW50ZXJmYWNlIEdsb2JhbE9wdGlvbk9wdGlvbnM8XG4gIFRPcHRpb25zIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBhbnksXG4gIFRBcmd1bWVudHMgZXh0ZW5kcyBBcnJheTx1bmtub3duPiA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyID8gYW55IDogW10sXG4gIFRHbG9iYWxzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlciA/IGFueVxuICAgIDogdm9pZCxcbiAgVFBhcmVudEdsb2JhbHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyXG4gICAgPyBhbnlcbiAgICA6IHZvaWQsXG4gIFRUeXBlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXIgPyBhbnlcbiAgICA6IHZvaWQsXG4gIFRHbG9iYWxUeXBlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXJcbiAgICA/IGFueVxuICAgIDogdm9pZCxcbiAgVFBhcmVudFR5cGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlclxuICAgID8gYW55XG4gICAgOiB2b2lkLFxuICBUUGFyZW50Q29tbWFuZCBleHRlbmRzIENvbW1hbmQ8YW55PiB8IHVuZGVmaW5lZCA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyXG4gICAgPyBhbnlcbiAgICA6IHVuZGVmaW5lZCxcbj4gZXh0ZW5kcyBPbWl0PEZsYWdPcHRpb25zLCBFeGNsdWRlZENvbW1hbmRPcHRpb25zPiB7XG4gIG92ZXJyaWRlPzogYm9vbGVhbjtcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgYWN0aW9uPzogQWN0aW9uSGFuZGxlcjxcbiAgICBUT3B0aW9ucyxcbiAgICBUQXJndW1lbnRzLFxuICAgIFRHbG9iYWxzLFxuICAgIFRQYXJlbnRHbG9iYWxzLFxuICAgIFRUeXBlcyxcbiAgICBUR2xvYmFsVHlwZXMsXG4gICAgVFBhcmVudFR5cGVzLFxuICAgIFRQYXJlbnRDb21tYW5kXG4gID47XG4gIHByZXBlbmQ/OiBib29sZWFuO1xuICB2YWx1ZT86IE9wdGlvblZhbHVlSGFuZGxlcjtcbiAgZGVmYXVsdD86IERlZmF1bHRWYWx1ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcHRpb25PcHRpb25zPFxuICBUT3B0aW9ucyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gYW55LFxuICBUQXJndW1lbnRzIGV4dGVuZHMgQXJyYXk8dW5rbm93bj4gPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlciA/IGFueSA6IFtdLFxuICBUR2xvYmFscyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXIgPyBhbnlcbiAgICA6IHZvaWQsXG4gIFRQYXJlbnRHbG9iYWxzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlclxuICAgID8gYW55XG4gICAgOiB2b2lkLFxuICBUVHlwZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyID8gYW55XG4gICAgOiB2b2lkLFxuICBUR2xvYmFsVHlwZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyXG4gICAgPyBhbnlcbiAgICA6IHZvaWQsXG4gIFRQYXJlbnRUeXBlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXJcbiAgICA/IGFueVxuICAgIDogdm9pZCxcbiAgVFBhcmVudENvbW1hbmQgZXh0ZW5kcyBDb21tYW5kPGFueT4gfCB1bmRlZmluZWQgPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlclxuICAgID8gYW55XG4gICAgOiB1bmRlZmluZWQsXG4+IGV4dGVuZHNcbiAgR2xvYmFsT3B0aW9uT3B0aW9uczxcbiAgICBUT3B0aW9ucyxcbiAgICBUQXJndW1lbnRzLFxuICAgIFRHbG9iYWxzLFxuICAgIFRQYXJlbnRHbG9iYWxzLFxuICAgIFRUeXBlcyxcbiAgICBUR2xvYmFsVHlwZXMsXG4gICAgVFBhcmVudFR5cGVzLFxuICAgIFRQYXJlbnRDb21tYW5kXG4gID4ge1xuICBnbG9iYWw/OiBib29sZWFuO1xufVxuXG4vKiogQ29tbWFuZCBvcHRpb24gc2V0dGluZ3MuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbjxcbiAgVE9wdGlvbnMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IGFueSxcbiAgVEFyZ3VtZW50cyBleHRlbmRzIEFycmF5PHVua25vd24+ID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiBbXSxcbiAgVEdsb2JhbHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyID8gYW55XG4gICAgOiB2b2lkLFxuICBUUGFyZW50R2xvYmFscyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXJcbiAgICA/IGFueVxuICAgIDogdm9pZCxcbiAgVFR5cGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlciA/IGFueVxuICAgIDogdm9pZCxcbiAgVEdsb2JhbFR5cGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlclxuICAgID8gYW55XG4gICAgOiB2b2lkLFxuICBUUGFyZW50VHlwZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyXG4gICAgPyBhbnlcbiAgICA6IHZvaWQsXG4gIFRQYXJlbnRDb21tYW5kIGV4dGVuZHMgQ29tbWFuZDxhbnk+IHwgdW5kZWZpbmVkID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXJcbiAgICA/IGFueVxuICAgIDogdW5kZWZpbmVkLFxuPiBleHRlbmRzXG4gIE9wdGlvbk9wdGlvbnM8XG4gICAgVE9wdGlvbnMsXG4gICAgVEFyZ3VtZW50cyxcbiAgICBUR2xvYmFscyxcbiAgICBUUGFyZW50R2xvYmFscyxcbiAgICBUVHlwZXMsXG4gICAgVEdsb2JhbFR5cGVzLFxuICAgIFRQYXJlbnRUeXBlcyxcbiAgICBUUGFyZW50Q29tbWFuZFxuICA+LFxuICBPbWl0PEZsYWdPcHRpb25zLCBcInZhbHVlXCI+IHtcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgZmxhZ3M6IEFycmF5PHN0cmluZz47XG4gIHR5cGVEZWZpbml0aW9uPzogc3RyaW5nO1xuICBhcmdzOiBBcmd1bWVudFtdO1xuICBncm91cE5hbWU/OiBzdHJpbmc7XG59XG5cbi8qIEVOViBWQVJTIFRZUEVTICovXG5cbmV4cG9ydCB0eXBlIEVudlZhclZhbHVlSGFuZGxlcjxUVmFsdWUgPSBhbnksIFRSZXR1cm4gPSBUVmFsdWU+ID0gKFxuICB2YWw6IFRWYWx1ZSxcbikgPT4gVFJldHVybjtcblxuLyoqIEVudmlyb25tZW50IHZhcmlhYmxlIG9wdGlvbnMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2xvYmFsRW52VmFyT3B0aW9ucyB7XG4gIGhpZGRlbj86IGJvb2xlYW47XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgcHJlZml4Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB2YWx1ZT86IEVudlZhclZhbHVlSGFuZGxlcjtcbn1cblxuLyoqIEVudmlyb25tZW50IHZhcmlhYmxlIG9wdGlvbnMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW52VmFyT3B0aW9ucyBleHRlbmRzIEdsb2JhbEVudlZhck9wdGlvbnMge1xuICBnbG9iYWw/OiBib29sZWFuO1xufVxuXG4vKiogRW52aXJvbm1lbnQgdmFyaWFibGUgc2V0dGluZ3MuICovXG5leHBvcnQgaW50ZXJmYWNlIEVudlZhciBleHRlbmRzIEVudlZhck9wdGlvbnMge1xuICBuYW1lOiBzdHJpbmc7XG4gIG5hbWVzOiBzdHJpbmdbXTtcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBkZXRhaWxzOiBBcmd1bWVudDtcbn1cblxuLyogVFlQRSBUWVBFUyAqL1xuXG4vKiogVHlwZSBvcHRpb25zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeXBlT3B0aW9ucyB7XG4gIG92ZXJyaWRlPzogYm9vbGVhbjtcbiAgZ2xvYmFsPzogYm9vbGVhbjtcbn1cblxuLyoqIFR5cGUgc2V0dGluZ3MuICovXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVEZWYgZXh0ZW5kcyBUeXBlT3B0aW9ucyB7XG4gIG5hbWU6IHN0cmluZztcbiAgaGFuZGxlcjogVHlwZTx1bmtub3duPiB8IFR5cGVIYW5kbGVyPHVua25vd24+O1xufVxuXG4vKiBFWEFNUExFIFRZUEVTICovXG5cbi8qKiBFeGFtcGxlIHNldHRpbmdzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGFtcGxlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xufVxuXG4vKiBDT01QTEVUSU9OIFRZUEVTICovXG5cbi8qKiBDb21wbGV0aW9uIG9wdGlvbnMuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBsZXRlT3B0aW9ucyB7XG4gIG92ZXJyaWRlPzogYm9vbGVhbjtcbiAgZ2xvYmFsPzogYm9vbGVhbjtcbn1cblxuLyoqIENvbXBsZXRpb24gc2V0dGluZ3MuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBsZXRpb248XG4gIFRPcHRpb25zIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBhbnksXG4gIFRBcmd1bWVudHMgZXh0ZW5kcyBBcnJheTx1bmtub3duPiA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyID8gYW55IDogW10sXG4gIFRHbG9iYWxzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlciA/IGFueVxuICAgIDogdm9pZCxcbiAgVFBhcmVudEdsb2JhbHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyXG4gICAgPyBhbnlcbiAgICA6IHZvaWQsXG4gIFRUeXBlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXIgPyBhbnlcbiAgICA6IHZvaWQsXG4gIFRHbG9iYWxUeXBlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXJcbiAgICA/IGFueVxuICAgIDogdm9pZCxcbiAgVFBhcmVudFR5cGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlclxuICAgID8gYW55XG4gICAgOiB2b2lkLFxuICBUUGFyZW50Q29tbWFuZCBleHRlbmRzIENvbW1hbmQ8YW55PiB8IHVuZGVmaW5lZCA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyXG4gICAgPyBhbnlcbiAgICA6IHVuZGVmaW5lZCxcbj4gZXh0ZW5kcyBDb21wbGV0ZU9wdGlvbnMge1xuICBuYW1lOiBzdHJpbmc7XG4gIGNvbXBsZXRlOiBDb21wbGV0ZUhhbmRsZXI8XG4gICAgVE9wdGlvbnMsXG4gICAgVEFyZ3VtZW50cyxcbiAgICBUR2xvYmFscyxcbiAgICBUUGFyZW50R2xvYmFscyxcbiAgICBUVHlwZXMsXG4gICAgVEdsb2JhbFR5cGVzLFxuICAgIFRQYXJlbnRUeXBlcyxcbiAgICBUUGFyZW50Q29tbWFuZFxuICA+O1xufVxuXG5leHBvcnQgdHlwZSBDb21wbGV0ZUhhbmRsZXJSZXN1bHQgPVxuICB8IEFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+XG4gIHwgUHJvbWlzZTxBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPj47XG5cbmV4cG9ydCB0eXBlIFZhbHVlc0hhbmRsZXJSZXN1bHQgPSBBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcblxuLyoqIFR5cGUgcGFyc2VyIG1ldGhvZC4gKi9cbmV4cG9ydCB0eXBlIENvbXBsZXRlSGFuZGxlcjxcbiAgVE9wdGlvbnMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IGFueSxcbiAgVEFyZ3VtZW50cyBleHRlbmRzIEFycmF5PHVua25vd24+ID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiBbXSxcbiAgVEdsb2JhbHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyID8gYW55XG4gICAgOiB2b2lkLFxuICBUUGFyZW50R2xvYmFscyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXJcbiAgICA/IGFueVxuICAgIDogdm9pZCxcbiAgVFR5cGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlciA/IGFueVxuICAgIDogdm9pZCxcbiAgVEdsb2JhbFR5cGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlclxuICAgID8gYW55XG4gICAgOiB2b2lkLFxuICBUUGFyZW50VHlwZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyXG4gICAgPyBhbnlcbiAgICA6IHZvaWQsXG4gIFRQYXJlbnRDb21tYW5kIGV4dGVuZHMgQ29tbWFuZDxhbnk+IHwgdW5kZWZpbmVkID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXJcbiAgICA/IGFueVxuICAgIDogdW5kZWZpbmVkLFxuPiA9IChcbiAgY21kOiBDb21tYW5kPFxuICAgIFRQYXJlbnRHbG9iYWxzLFxuICAgIFRQYXJlbnRUeXBlcyxcbiAgICBUT3B0aW9ucyxcbiAgICBUQXJndW1lbnRzLFxuICAgIFRHbG9iYWxzLFxuICAgIFRUeXBlcyxcbiAgICBUR2xvYmFsVHlwZXMsXG4gICAgVFBhcmVudENvbW1hbmRcbiAgPixcbiAgcGFyZW50PzogQ29tbWFuZDxhbnk+LFxuKSA9PiBDb21wbGV0ZUhhbmRsZXJSZXN1bHQ7XG5cbi8qKlxuICogSGVscCBjYWxsYmFjayBtZXRob2QgdG8gcHJpbnQgdGhlIGhlbHAuXG4gKiBJbnZva2VkIGJ5IHRoZSBgLS1oZWxwYCBvcHRpb24gYW5kIGBoZWxwYCBjb21tYW5kIGFuZCB0aGUgYC5nZXRIZWxwKClgIGFuZCBgLnNob3dIZWxwKClgIG1ldGhvZHMuXG4gKi9cbmV4cG9ydCB0eXBlIEhlbHBIYW5kbGVyPFxuICBUT3B0aW9ucyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gYW55LFxuICBUQXJndW1lbnRzIGV4dGVuZHMgQXJyYXk8dW5rbm93bj4gPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlciA/IGFueSA6IFtdLFxuICBUR2xvYmFscyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXIgPyBhbnlcbiAgICA6IHZvaWQsXG4gIFRQYXJlbnRHbG9iYWxzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlclxuICAgID8gYW55XG4gICAgOiB2b2lkLFxuICBUVHlwZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyID8gYW55XG4gICAgOiB2b2lkLFxuICBUR2xvYmFsVHlwZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyXG4gICAgPyBhbnlcbiAgICA6IHZvaWQsXG4gIFRQYXJlbnRUeXBlcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXJcbiAgICA/IGFueVxuICAgIDogdm9pZCxcbiAgVFBhcmVudENvbW1hbmQgZXh0ZW5kcyBDb21tYW5kPGFueT4gfCB1bmRlZmluZWQgPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlclxuICAgID8gYW55XG4gICAgOiB1bmRlZmluZWQsXG4gIFRDb21tYW5kIGV4dGVuZHMgQ29tbWFuZDxcbiAgICBUUGFyZW50R2xvYmFscyxcbiAgICBUUGFyZW50VHlwZXMsXG4gICAgVE9wdGlvbnMsXG4gICAgVEFyZ3VtZW50cyxcbiAgICBUR2xvYmFscyxcbiAgICBUVHlwZXMsXG4gICAgVEdsb2JhbFR5cGVzLFxuICAgIFRQYXJlbnRDb21tYW5kXG4gID4gPSBDb21tYW5kPFxuICAgIFRQYXJlbnRHbG9iYWxzLFxuICAgIFRQYXJlbnRUeXBlcyxcbiAgICBUT3B0aW9ucyxcbiAgICBUQXJndW1lbnRzLFxuICAgIFRHbG9iYWxzLFxuICAgIFRUeXBlcyxcbiAgICBUR2xvYmFsVHlwZXMsXG4gICAgVFBhcmVudENvbW1hbmRcbiAgPixcbj4gPSAodGhpczogVENvbW1hbmQsIGNtZDogVENvbW1hbmQsIG9wdGlvbnM6IEhlbHBPcHRpb25zKSA9PiBzdHJpbmc7XG5cbi8qKlxuICogVmVyc2lvbiBjYWxsYmFjayBtZXRob2QgdG8gcHJpbnQgdGhlIHZlcnNpb24uXG4gKiBJbnZva2VkIGJ5IHRoZSBgLS1oZWxwYCBvcHRpb24gY29tbWFuZCBhbmQgdGhlIGAuZ2V0VmVyc2lvbigpYCBhbmQgYC5zaG93SGVscCgpYCBtZXRob2RzLlxuICovXG5leHBvcnQgdHlwZSBWZXJzaW9uSGFuZGxlcjxcbiAgVE9wdGlvbnMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IGFueSxcbiAgVEFyZ3VtZW50cyBleHRlbmRzIEFycmF5PHVua25vd24+ID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXIgPyBhbnkgOiBbXSxcbiAgVEdsb2JhbHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyID8gYW55XG4gICAgOiB2b2lkLFxuICBUUGFyZW50R2xvYmFscyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCB2b2lkID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXJcbiAgICA/IGFueVxuICAgIDogdm9pZCxcbiAgVFR5cGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlciA/IGFueVxuICAgIDogdm9pZCxcbiAgVEdsb2JhbFR5cGVzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiB8IHZvaWQgPSBUT3B0aW9ucyBleHRlbmRzIG51bWJlclxuICAgID8gYW55XG4gICAgOiB2b2lkLFxuICBUUGFyZW50VHlwZXMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdm9pZCA9IFRPcHRpb25zIGV4dGVuZHMgbnVtYmVyXG4gICAgPyBhbnlcbiAgICA6IHZvaWQsXG4gIFRQYXJlbnRDb21tYW5kIGV4dGVuZHMgQ29tbWFuZDxhbnk+IHwgdW5kZWZpbmVkID0gVE9wdGlvbnMgZXh0ZW5kcyBudW1iZXJcbiAgICA/IGFueVxuICAgIDogdW5kZWZpbmVkLFxuICBUQ29tbWFuZCBleHRlbmRzIENvbW1hbmQ8XG4gICAgVFBhcmVudEdsb2JhbHMsXG4gICAgVFBhcmVudFR5cGVzLFxuICAgIFRPcHRpb25zLFxuICAgIFRBcmd1bWVudHMsXG4gICAgVEdsb2JhbHMsXG4gICAgVFR5cGVzLFxuICAgIFRHbG9iYWxUeXBlcyxcbiAgICBUUGFyZW50Q29tbWFuZFxuICA+ID0gQ29tbWFuZDxcbiAgICBUUGFyZW50R2xvYmFscyxcbiAgICBUUGFyZW50VHlwZXMsXG4gICAgVE9wdGlvbnMsXG4gICAgVEFyZ3VtZW50cyxcbiAgICBUR2xvYmFscyxcbiAgICBUVHlwZXMsXG4gICAgVEdsb2JhbFR5cGVzLFxuICAgIFRQYXJlbnRDb21tYW5kXG4gID4sXG4+ID0gKHRoaXM6IFRDb21tYW5kLCBjbWQ6IFRDb21tYW5kKSA9PiBzdHJpbmc7XG5cbmV4cG9ydCB0eXBlIEVycm9ySGFuZGxlciA9IChcbiAgZXJyb3I6IEVycm9yIHwgVmFsaWRhdGlvbkVycm9yLFxuICBjbWQ6IENvbW1hbmQsXG4pID0+IHVua25vd247XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0NBQXdDIn0= +// denoCacheMetadata=14817219252458872749,2876757959492578688
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/9c1f5cb3e2801bc4ef15fa27426125f58e1320b663e89fd95558c870717dfcbf.js b/vendor/gen/https/deno.land/9c1f5cb3e2801bc4ef15fa27426125f58e1320b663e89fd95558c870717dfcbf.js new file mode 100644 index 0000000..ecb11a3 --- /dev/null +++ b/vendor/gen/https/deno.land/9c1f5cb3e2801bc4ef15fa27426125f58e1320b663e89fd95558c870717dfcbf.js @@ -0,0 +1,7 @@ +export * as path from "jsr:@std/path@1.0.8"; +export * as html from "jsr:@std/html@1.0.3"; +export * as astring from "jsr:@davidbonnet/astring@1.8.6"; +export * as meriyah from "npm:meriyah@6.0.5"; +export * as walker from "npm:estree-walker@3.0.3"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9kZXBzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGFzIHBhdGggZnJvbSBcImpzcjpAc3RkL3BhdGhAMS4wLjhcIjtcbmV4cG9ydCAqIGFzIGh0bWwgZnJvbSBcImpzcjpAc3RkL2h0bWxAMS4wLjNcIjtcblxuZXhwb3J0ICogYXMgYXN0cmluZyBmcm9tIFwianNyOkBkYXZpZGJvbm5ldC9hc3RyaW5nQDEuOC42XCI7XG5leHBvcnQgKiBhcyBtZXJpeWFoIGZyb20gXCJucG06bWVyaXlhaEA2LjAuNVwiO1xuZXhwb3J0ICogYXMgd2Fsa2VyIGZyb20gXCJucG06ZXN0cmVlLXdhbGtlckAzLjAuM1wiO1xuZXhwb3J0IHR5cGUgKiBhcyBFU1RyZWUgZnJvbSBcIm5wbTpAdHlwZXMvZXN0cmVlQDEuMC42XCI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxzQkFBc0I7QUFDNUMsT0FBTyxLQUFLLElBQUksTUFBTSxzQkFBc0I7QUFFNUMsT0FBTyxLQUFLLE9BQU8sTUFBTSxpQ0FBaUM7QUFDMUQsT0FBTyxLQUFLLE9BQU8sTUFBTSxvQkFBb0I7QUFDN0MsT0FBTyxLQUFLLE1BQU0sTUFBTSwwQkFBMEIifQ== +// denoCacheMetadata=13951551029396770186,5013503144350320255
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/9cb036abadad5dc481f4e8049fd5c5f7711b3b5cc8d0d11c4a03005fdcb41560.js b/vendor/gen/https/deno.land/9cb036abadad5dc481f4e8049fd5c5f7711b3b5cc8d0d11c4a03005fdcb41560.js new file mode 100644 index 0000000..bcc5455 --- /dev/null +++ b/vendor/gen/https/deno.land/9cb036abadad5dc481f4e8049fd5c5f7711b3b5cc8d0d11c4a03005fdcb41560.js @@ -0,0 +1,43 @@ +import * as stdColors from "https://deno.land/std@0.170.0/fmt/colors.ts"; +const proto = Object.create(null); +const methodNames = Object.keys(stdColors); +for (const name of methodNames){ + if (name === "setColorEnabled" || name === "getColorEnabled") { + continue; + } + Object.defineProperty(proto, name, { + get () { + return factory([ + ...this._stack, + name + ]); + } + }); +} +export const colors = factory(); +/** + * Chainable colors module. + * ``` + * console.log(colors.blue.bgRed.bold('Welcome to Deno.Land!')); + * ``` + * If invoked as method, a new Ansi instance will be returned. + * ``` + * const myColors: Colors = colors(); + * console.log(myColors.blue.bgRed.bold('Welcome to Deno.Land!')); + * ``` + */ function factory(stack = []) { + const colors = function(str, ...args) { + if (str) { + const lastIndex = stack.length - 1; + return stack.reduce((str, name, index)=>index === lastIndex ? stdColors[name](str, ...args) : stdColors[name](str), str); + } + const tmp = stack.slice(); + stack = []; + return factory(tmp); + }; + Object.setPrototypeOf(colors, proto); + colors._stack = stack; + return colors; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvYW5zaS9jb2xvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgc3RkQ29sb3JzIGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xNzAuMC9mbXQvY29sb3JzLnRzXCI7XG5cbnR5cGUgRXhjbHVkZWRDb2xvck1ldGhvZHMgPSBcInNldENvbG9yRW5hYmxlZFwiIHwgXCJnZXRDb2xvckVuYWJsZWRcIjtcbnR5cGUgUHJvcGVydHlOYW1lcyA9IGtleW9mIHR5cGVvZiBzdGRDb2xvcnM7XG50eXBlIENvbG9yTWV0aG9kID0gKHN0cjogc3RyaW5nLCAuLi5hcmdzOiBBcnJheTx1bmtub3duPikgPT4gc3RyaW5nO1xudHlwZSBDb2xvck1ldGhvZHMgPSBFeGNsdWRlPFByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVkQ29sb3JNZXRob2RzPjtcbnR5cGUgQ2hhaW5hYmxlPFQsIEUgZXh0ZW5kcyBrZXlvZiBUIHwgbnVsbCA9IG51bGw+ID0ge1xuICBbUCBpbiBrZXlvZiBUXTogUCBleHRlbmRzIEUgPyBUW1BdIDogQ2hhaW5hYmxlPFQsIEU+ICYgVFtQXTtcbn07XG5cbi8qKiBDaGFpbmFibGUgY29sb3JzIGluc3RhbmNlIHJldHVybmVkIGJ5IGFsbCBhbnNpIGVzY2FwZSBwcm9wZXJ0aWVzLiAqL1xuZXhwb3J0IHR5cGUgQ29sb3JzQ2hhaW4gPVxuICAmIENoYWluYWJsZTx0eXBlb2Ygc3RkQ29sb3JzLCBFeGNsdWRlZENvbG9yTWV0aG9kcz5cbiAgJiB7IF9zdGFjazogQXJyYXk8Q29sb3JNZXRob2RzPiB9O1xuXG4vKiogQ3JlYXRlIG5ldyBgQ29sb3JzYCBpbnN0YW5jZS4gKi9cbmV4cG9ydCB0eXBlIENvbG9yc0ZhY3RvcnkgPSAoKSA9PiBDb2xvcnM7XG5cbi8qKlxuICogQ2hhaW5hYmxlIGNvbG9ycyBtb2R1bGUuXG4gKiBJZiBpbnZva2VkIGFzIG1ldGhvZCwgYSBuZXcgYENvbG9yc2AgaW5zdGFuY2Ugd2lsbCBiZSByZXR1cm5lZC5cbiAqL1xuZXhwb3J0IHR5cGUgQ29sb3JzID0gQ29sb3JzRmFjdG9yeSAmIENvbG9yc0NoYWluO1xuXG5jb25zdCBwcm90byA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5jb25zdCBtZXRob2ROYW1lcyA9IE9iamVjdC5rZXlzKHN0ZENvbG9ycykgYXMgQXJyYXk8UHJvcGVydHlOYW1lcz47XG5mb3IgKGNvbnN0IG5hbWUgb2YgbWV0aG9kTmFtZXMpIHtcbiAgaWYgKG5hbWUgPT09IFwic2V0Q29sb3JFbmFibGVkXCIgfHwgbmFtZSA9PT0gXCJnZXRDb2xvckVuYWJsZWRcIikge1xuICAgIGNvbnRpbnVlO1xuICB9XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90bywgbmFtZSwge1xuICAgIGdldCh0aGlzOiBDb2xvcnNDaGFpbikge1xuICAgICAgcmV0dXJuIGZhY3RvcnkoWy4uLnRoaXMuX3N0YWNrLCBuYW1lXSk7XG4gICAgfSxcbiAgfSk7XG59XG5cbmV4cG9ydCBjb25zdCBjb2xvcnM6IENvbG9ycyA9IGZhY3RvcnkoKTtcblxuLyoqXG4gKiBDaGFpbmFibGUgY29sb3JzIG1vZHVsZS5cbiAqIGBgYFxuICogY29uc29sZS5sb2coY29sb3JzLmJsdWUuYmdSZWQuYm9sZCgnV2VsY29tZSB0byBEZW5vLkxhbmQhJykpO1xuICogYGBgXG4gKiBJZiBpbnZva2VkIGFzIG1ldGhvZCwgYSBuZXcgQW5zaSBpbnN0YW5jZSB3aWxsIGJlIHJldHVybmVkLlxuICogYGBgXG4gKiBjb25zdCBteUNvbG9yczogQ29sb3JzID0gY29sb3JzKCk7XG4gKiBjb25zb2xlLmxvZyhteUNvbG9ycy5ibHVlLmJnUmVkLmJvbGQoJ1dlbGNvbWUgdG8gRGVuby5MYW5kIScpKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBmYWN0b3J5KHN0YWNrOiBBcnJheTxDb2xvck1ldGhvZHM+ID0gW10pOiBDb2xvcnMge1xuICBjb25zdCBjb2xvcnM6IENvbG9ycyA9IGZ1bmN0aW9uIChcbiAgICB0aGlzOiBDb2xvcnNDaGFpbiB8IHVuZGVmaW5lZCxcbiAgICBzdHI/OiBzdHJpbmcsXG4gICAgLi4uYXJnczogQXJyYXk8dW5rbm93bj5cbiAgKTogc3RyaW5nIHwgQ29sb3JzQ2hhaW4ge1xuICAgIGlmIChzdHIpIHtcbiAgICAgIGNvbnN0IGxhc3RJbmRleCA9IHN0YWNrLmxlbmd0aCAtIDE7XG4gICAgICByZXR1cm4gc3RhY2sucmVkdWNlKFxuICAgICAgICAoc3RyOiBzdHJpbmcsIG5hbWU6IFByb3BlcnR5TmFtZXMsIGluZGV4OiBudW1iZXIpID0+XG4gICAgICAgICAgaW5kZXggPT09IGxhc3RJbmRleFxuICAgICAgICAgICAgPyAoc3RkQ29sb3JzW25hbWVdIGFzIENvbG9yTWV0aG9kKShzdHIsIC4uLmFyZ3MpXG4gICAgICAgICAgICA6IChzdGRDb2xvcnNbbmFtZV0gYXMgQ29sb3JNZXRob2QpKHN0ciksXG4gICAgICAgIHN0cixcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHRtcCA9IHN0YWNrLnNsaWNlKCk7XG4gICAgc3RhY2sgPSBbXTtcbiAgICByZXR1cm4gZmFjdG9yeSh0bXApO1xuICB9IGFzIENvbG9ycztcblxuICBPYmplY3Quc2V0UHJvdG90eXBlT2YoY29sb3JzLCBwcm90byk7XG4gIGNvbG9ycy5fc3RhY2sgPSBzdGFjaztcbiAgcmV0dXJuIGNvbG9ycztcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLGVBQWUsOENBQThDO0FBd0J6RSxNQUFNLFFBQVEsT0FBTyxNQUFNLENBQUM7QUFDNUIsTUFBTSxjQUFjLE9BQU8sSUFBSSxDQUFDO0FBQ2hDLEtBQUssTUFBTSxRQUFRLFlBQWE7RUFDOUIsSUFBSSxTQUFTLHFCQUFxQixTQUFTLG1CQUFtQjtJQUM1RDtFQUNGO0VBQ0EsT0FBTyxjQUFjLENBQUMsT0FBTyxNQUFNO0lBQ2pDO01BQ0UsT0FBTyxRQUFRO1dBQUksSUFBSSxDQUFDLE1BQU07UUFBRTtPQUFLO0lBQ3ZDO0VBQ0Y7QUFDRjtBQUVBLE9BQU8sTUFBTSxTQUFpQixVQUFVO0FBRXhDOzs7Ozs7Ozs7O0NBVUMsR0FDRCxTQUFTLFFBQVEsUUFBNkIsRUFBRTtFQUM5QyxNQUFNLFNBQWlCLFNBRXJCLEdBQVksRUFDWixHQUFHLElBQW9CO0lBRXZCLElBQUksS0FBSztNQUNQLE1BQU0sWUFBWSxNQUFNLE1BQU0sR0FBRztNQUNqQyxPQUFPLE1BQU0sTUFBTSxDQUNqQixDQUFDLEtBQWEsTUFBcUIsUUFDakMsVUFBVSxZQUNOLEFBQUMsU0FBUyxDQUFDLEtBQUssQ0FBaUIsUUFBUSxRQUN6QyxBQUFDLFNBQVMsQ0FBQyxLQUFLLENBQWlCLE1BQ3ZDO0lBRUo7SUFDQSxNQUFNLE1BQU0sTUFBTSxLQUFLO0lBQ3ZCLFFBQVEsRUFBRTtJQUNWLE9BQU8sUUFBUTtFQUNqQjtFQUVBLE9BQU8sY0FBYyxDQUFDLFFBQVE7RUFDOUIsT0FBTyxNQUFNLEdBQUc7RUFDaEIsT0FBTztBQUNUIn0= +// denoCacheMetadata=14330092040106725988,14797678348196684716
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/9d6d5c7bf6e94259ee1cbf067e9c79b6901e0161a772b9bc6ac1ed9aa53c4487.js b/vendor/gen/https/deno.land/9d6d5c7bf6e94259ee1cbf067e9c79b6901e0161a772b9bc6ac1ed9aa53c4487.js new file mode 100644 index 0000000..bd6e39e --- /dev/null +++ b/vendor/gen/https/deno.land/9d6d5c7bf6e94259ee1cbf067e9c79b6901e0161a772b9bc6ac1ed9aa53c4487.js @@ -0,0 +1,42 @@ +export default function() { + return (env)=>{ + env.tags.push(setTag); + }; +} +function setTag(env, code, _output, tokens) { + if (!code.startsWith("set ")) { + return; + } + const expression = code.replace(/^set\s+/, ""); + const { dataVarname } = env.options; + // Value is set (e.g. {{ set foo = "bar" }}) + if (expression.includes("=")) { + const match = code.match(/^set\s+([\w]+)\s*=\s*([\s\S]+)$/); + if (!match) { + throw new Error(`Invalid set tag: ${code}`); + } + const [, variable, value] = match; + const val = env.compileFilters(tokens, value); + return ` + var ${variable} = ${val}; + ${dataVarname}["${variable}"] = ${variable}; + `; + } + // Value is captured (eg: {{ set foo }}bar{{ /set }}) + const compiled = []; + const compiledFilters = env.compileFilters(tokens, expression); + compiled.push(`var ${expression} = "";`); + compiled.push(...env.compileTokens(tokens, expression, [ + "/set" + ])); + compiled.push(`${dataVarname}["${expression}"] = ${expression};`); + if (tokens.length && (tokens[0][0] !== "tag" || tokens[0][1] !== "/set")) { + throw new Error(`Missing closing tag for set tag: ${code}`); + } + tokens.shift(); + compiled.push(`${expression} = ${compiledFilters};`); + compiled.push(`${dataVarname}["${expression.trim()}"] = ${expression};`); + return compiled.join("\n"); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9wbHVnaW5zL3NldC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFRva2VuIH0gZnJvbSBcIi4uL3NyYy90b2tlbml6ZXIudHNcIjtcbmltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnQsIFBsdWdpbiB9IGZyb20gXCIuLi9zcmMvZW52aXJvbm1lbnQudHNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCk6IFBsdWdpbiB7XG4gIHJldHVybiAoZW52OiBFbnZpcm9ubWVudCkgPT4ge1xuICAgIGVudi50YWdzLnB1c2goc2V0VGFnKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gc2V0VGFnKFxuICBlbnY6IEVudmlyb25tZW50LFxuICBjb2RlOiBzdHJpbmcsXG4gIF9vdXRwdXQ6IHN0cmluZyxcbiAgdG9rZW5zOiBUb2tlbltdLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFjb2RlLnN0YXJ0c1dpdGgoXCJzZXQgXCIpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZXhwcmVzc2lvbiA9IGNvZGUucmVwbGFjZSgvXnNldFxccysvLCBcIlwiKTtcbiAgY29uc3QgeyBkYXRhVmFybmFtZSB9ID0gZW52Lm9wdGlvbnM7XG5cbiAgLy8gVmFsdWUgaXMgc2V0IChlLmcuIHt7IHNldCBmb28gPSBcImJhclwiIH19KVxuICBpZiAoZXhwcmVzc2lvbi5pbmNsdWRlcyhcIj1cIikpIHtcbiAgICBjb25zdCBtYXRjaCA9IGNvZGUubWF0Y2goL15zZXRcXHMrKFtcXHddKylcXHMqPVxccyooW1xcc1xcU10rKSQvKTtcblxuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzZXQgdGFnOiAke2NvZGV9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgWywgdmFyaWFibGUsIHZhbHVlXSA9IG1hdGNoO1xuICAgIGNvbnN0IHZhbCA9IGVudi5jb21waWxlRmlsdGVycyh0b2tlbnMsIHZhbHVlKTtcblxuICAgIHJldHVybiBgXG4gICAgdmFyICR7dmFyaWFibGV9ID0gJHt2YWx9O1xuICAgICR7ZGF0YVZhcm5hbWV9W1wiJHt2YXJpYWJsZX1cIl0gPSAke3ZhcmlhYmxlfTtcbiAgICBgO1xuICB9XG5cbiAgLy8gVmFsdWUgaXMgY2FwdHVyZWQgKGVnOiB7eyBzZXQgZm9vIH19YmFye3sgL3NldCB9fSlcbiAgY29uc3QgY29tcGlsZWQ6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IGNvbXBpbGVkRmlsdGVycyA9IGVudi5jb21waWxlRmlsdGVycyh0b2tlbnMsIGV4cHJlc3Npb24pO1xuXG4gIGNvbXBpbGVkLnB1c2goYHZhciAke2V4cHJlc3Npb259ID0gXCJcIjtgKTtcbiAgY29tcGlsZWQucHVzaCguLi5lbnYuY29tcGlsZVRva2Vucyh0b2tlbnMsIGV4cHJlc3Npb24sIFtcIi9zZXRcIl0pKTtcbiAgY29tcGlsZWQucHVzaChgJHtkYXRhVmFybmFtZX1bXCIke2V4cHJlc3Npb259XCJdID0gJHtleHByZXNzaW9ufTtgKTtcblxuICBpZiAodG9rZW5zLmxlbmd0aCAmJiAodG9rZW5zWzBdWzBdICE9PSBcInRhZ1wiIHx8IHRva2Vuc1swXVsxXSAhPT0gXCIvc2V0XCIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGNsb3NpbmcgdGFnIGZvciBzZXQgdGFnOiAke2NvZGV9YCk7XG4gIH1cblxuICB0b2tlbnMuc2hpZnQoKTtcbiAgY29tcGlsZWQucHVzaChgJHtleHByZXNzaW9ufSA9ICR7Y29tcGlsZWRGaWx0ZXJzfTtgKTtcbiAgY29tcGlsZWQucHVzaChgJHtkYXRhVmFybmFtZX1bXCIke2V4cHJlc3Npb24udHJpbSgpfVwiXSA9ICR7ZXhwcmVzc2lvbn07YCk7XG4gIHJldHVybiBjb21waWxlZC5qb2luKFwiXFxuXCIpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLGVBQWU7RUFDYixPQUFPLENBQUM7SUFDTixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7RUFDaEI7QUFDRjtBQUVBLFNBQVMsT0FDUCxHQUFnQixFQUNoQixJQUFZLEVBQ1osT0FBZSxFQUNmLE1BQWU7RUFFZixJQUFJLENBQUMsS0FBSyxVQUFVLENBQUMsU0FBUztJQUM1QjtFQUNGO0VBRUEsTUFBTSxhQUFhLEtBQUssT0FBTyxDQUFDLFdBQVc7RUFDM0MsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksT0FBTztFQUVuQyw0Q0FBNEM7RUFDNUMsSUFBSSxXQUFXLFFBQVEsQ0FBQyxNQUFNO0lBQzVCLE1BQU0sUUFBUSxLQUFLLEtBQUssQ0FBQztJQUV6QixJQUFJLENBQUMsT0FBTztNQUNWLE1BQU0sSUFBSSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsTUFBTTtJQUM1QztJQUVBLE1BQU0sR0FBRyxVQUFVLE1BQU0sR0FBRztJQUM1QixNQUFNLE1BQU0sSUFBSSxjQUFjLENBQUMsUUFBUTtJQUV2QyxPQUFPLENBQUM7UUFDSixFQUFFLFNBQVMsR0FBRyxFQUFFLElBQUk7SUFDeEIsRUFBRSxZQUFZLEVBQUUsRUFBRSxTQUFTLEtBQUssRUFBRSxTQUFTO0lBQzNDLENBQUM7RUFDSDtFQUVBLHFEQUFxRDtFQUNyRCxNQUFNLFdBQXFCLEVBQUU7RUFDN0IsTUFBTSxrQkFBa0IsSUFBSSxjQUFjLENBQUMsUUFBUTtFQUVuRCxTQUFTLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxXQUFXLE1BQU0sQ0FBQztFQUN2QyxTQUFTLElBQUksSUFBSSxJQUFJLGFBQWEsQ0FBQyxRQUFRLFlBQVk7SUFBQztHQUFPO0VBQy9ELFNBQVMsSUFBSSxDQUFDLEdBQUcsWUFBWSxFQUFFLEVBQUUsV0FBVyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7RUFFaEUsSUFBSSxPQUFPLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLFNBQVMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssTUFBTSxHQUFHO0lBQ3hFLE1BQU0sSUFBSSxNQUFNLENBQUMsaUNBQWlDLEVBQUUsTUFBTTtFQUM1RDtFQUVBLE9BQU8sS0FBSztFQUNaLFNBQVMsSUFBSSxDQUFDLEdBQUcsV0FBVyxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztFQUNuRCxTQUFTLElBQUksQ0FBQyxHQUFHLFlBQVksRUFBRSxFQUFFLFdBQVcsSUFBSSxHQUFHLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztFQUN2RSxPQUFPLFNBQVMsSUFBSSxDQUFDO0FBQ3ZCIn0= +// denoCacheMetadata=3864222844877195401,9260727916331799357
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/9e76f64c85bbd2191baef628b4355a88bce06fd0aacc5861a3db29bf6d805ad5.js b/vendor/gen/https/deno.land/9e76f64c85bbd2191baef628b4355a88bce06fd0aacc5861a3db29bf6d805ad5.js new file mode 100644 index 0000000..f08f3b9 --- /dev/null +++ b/vendor/gen/https/deno.land/9e76f64c85bbd2191baef628b4355a88bce06fd0aacc5861a3db29bf6d805ad5.js @@ -0,0 +1,195 @@ +import tokenize from "./tokenizer.ts"; +import { transformTemplateCode } from "./transformer.ts"; +import { TemplateError, TransformError } from "./errors.ts"; +export class Environment { + cache = new Map(); + options; + tags = []; + tokenPreprocessors = []; + filters = {}; + utils = { + callMethod + }; + constructor(options){ + this.options = options; + } + use(plugin) { + plugin(this); + } + async run(file, data, from) { + const template = await this.load(file, from); + return await template(data); + } + async runString(source, data, file) { + if (file) { + const cached = this.cache.get(file); + if (cached) { + return await cached(data); + } + const template = this.compile(source, file); + this.cache.set(file, template); + return await template(data); + } + const template = this.compile(source, file); + return await template(data); + } + runStringSync(source, data) { + const template = this.compile(source, "", {}, true); + return template(data); + } + compile(source, path, defaults, sync = false) { + if (typeof source !== "string") { + throw new Error(`The source code of "${path}" must be a string. Got ${typeof source}`); + } + const tokens = this.tokenize(source, path); + let code = this.compileTokens(tokens).join("\n"); + const { dataVarname, autoDataVarname } = this.options; + if (autoDataVarname) { + try { + code = transformTemplateCode(code, dataVarname); + } catch (cause) { + if (cause instanceof TransformError) { + throw new TemplateError(path, source, cause.position, cause); + } + throw new Error(`Unknown error while transforming ${path}`, { + cause + }); + } + } + const constructor = new Function("__file", "__env", "__defaults", "__err", `return${sync ? "" : " async"} function (${dataVarname}) { + let __pos = 0; + try { + ${dataVarname} = Object.assign({}, __defaults, ${dataVarname}); + const __exports = { content: "" }; + ${code} + return __exports; + } catch (cause) { + const template = __env.cache.get(__file); + throw new __err(__file, template?.source, __pos, cause); + } + } + `); + const template = constructor(path, this, defaults, TemplateError); + template.file = path; + template.code = code; + template.source = source; + return template; + } + tokenize(source, path) { + const result = tokenize(source); + let { tokens } = result; + const { position, error } = result; + if (error) { + throw new TemplateError(path, source, position, error); + } + for (const tokenPreprocessor of this.tokenPreprocessors){ + const result = tokenPreprocessor(this, tokens, path); + if (result !== undefined) { + tokens = result; + } + } + return tokens; + } + async load(file, from) { + const path = this.options.loader.resolve(from || "", file); + if (!this.cache.has(path)) { + // Remove query and hash params from path before loading + const cleanPath = path.split("?")[0].split("#")[0]; + const { source, data } = await this.options.loader.load(cleanPath); + const template = this.compile(source, path, data); + this.cache.set(path, template); + } + return this.cache.get(path); + } + compileTokens(tokens, outputVar = "__exports.content", stopAt) { + const compiled = []; + tokens: while(tokens.length > 0){ + if (stopAt && tokens[0][0] === "tag" && stopAt.includes(tokens[0][1])) { + break; + } + const [type, code, pos] = tokens.shift(); + if (type === "comment") { + continue; + } + if (type === "string") { + if (code !== "") { + compiled.push(`${outputVar} += ${JSON.stringify(code)};`); + } + continue; + } + if (type === "tag") { + compiled.push(`__pos = ${pos};`); + for (const tag of this.tags){ + const compiledTag = tag(this, code, outputVar, tokens); + if (typeof compiledTag === "string") { + compiled.push(compiledTag); + continue tokens; + } + } + // Unknown tag, just print it + const expression = this.compileFilters(tokens, code, this.options.autoescape); + compiled.push(`${outputVar} += (${expression}) ?? "";`); + continue; + } + throw new Error(`Unknown token type "${type}"`); + } + return compiled; + } + compileFilters(tokens, output, autoescape = false) { + let unescaped = false; + while(tokens.length > 0 && tokens[0][0] === "filter"){ + const [, code] = tokens.shift(); + const match = code.match(/^(await\s+)?([\w.]+)(?:\((.*)\))?$/); + if (!match) { + throw new Error(`Invalid filter: ${code}`); + } + const [_, isAsync, name, args] = match; + if (!Object.hasOwn(this.filters, name)) { + if (name === "safe") { + unescaped = true; + } else if (isGlobal(name)) { + // If a global function + output = `${isAsync ? "await " : ""}${name}(${output}${args ? `, ${args}` : ""})`; + } else { + // It's a prototype's method (e.g. `String.toUpperCase()`) + output = `${isAsync ? "await " : ""}__env.utils.callMethod(${output}, "${name}", ${args ? args : ""})`; + } + } else { + // It's a filter (e.g. filters.upper()) + const { dataVarname } = this.options; + output = `${isAsync || checkAsync(this.filters[name]) ? "await " : ""}__env.filters.${name}.call({data:${dataVarname},env:__env}, ${output}${args ? `, ${args}` : ""})`; + } + } + // Escape by default + if (autoescape && !unescaped) { + output = `__env.filters.escape(${output})`; + } + return output; + } +} +function isGlobal(name) { + // @ts-ignore TS doesn't know about globalThis + if (Object.hasOwn(globalThis, name)) { + return true; + } + if (name.includes(".")) { + const [obj, prop] = name.split("."); + // @ts-ignore TS doesn't know about globalThis + return Object.hasOwn(globalThis[obj], prop); + } +} +// deno-lint-ignore no-explicit-any +function callMethod(thisObject, method, ...args) { + if (thisObject === null || thisObject === undefined) { + return thisObject; + } + if (typeof thisObject[method] === "function") { + return thisObject[method](...args); + } + throw new Error(`"${method}" is not a valid filter, global object or a method of a ${typeof thisObject} variable`); +} +function checkAsync(fn) { + return fn.constructor?.name === "AsyncFunction"; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9zcmMvZW52aXJvbm1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRva2VuaXplLCB7IFRva2VuIH0gZnJvbSBcIi4vdG9rZW5pemVyLnRzXCI7XG5cbmltcG9ydCB0eXBlIHsgTG9hZGVyIH0gZnJvbSBcIi4vbG9hZGVyLnRzXCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1UZW1wbGF0ZUNvZGUgfSBmcm9tIFwiLi90cmFuc2Zvcm1lci50c1wiO1xuaW1wb3J0IHsgVGVtcGxhdGVFcnJvciwgVHJhbnNmb3JtRXJyb3IgfSBmcm9tIFwiLi9lcnJvcnMudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZVJlc3VsdCB7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZSB7XG4gIChkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBQcm9taXNlPFRlbXBsYXRlUmVzdWx0PjtcbiAgc291cmNlOiBzdHJpbmc7XG4gIGNvZGU6IHN0cmluZztcbiAgZmlsZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZVN5bmMge1xuICAoZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogVGVtcGxhdGVSZXN1bHQ7XG4gIHNvdXJjZTogc3RyaW5nO1xuICBjb2RlOiBzdHJpbmc7XG4gIGZpbGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFRva2VuUHJlcHJvY2Vzc29yID0gKFxuICBlbnY6IEVudmlyb25tZW50LFxuICB0b2tlbnM6IFRva2VuW10sXG4gIHBhdGg/OiBzdHJpbmcsXG4pID0+IFRva2VuW10gfCB2b2lkO1xuXG5leHBvcnQgdHlwZSBUYWcgPSAoXG4gIGVudjogRW52aXJvbm1lbnQsXG4gIGNvZGU6IHN0cmluZyxcbiAgb3V0cHV0OiBzdHJpbmcsXG4gIHRva2VuczogVG9rZW5bXSxcbikgPT4gc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgdHlwZSBGaWx0ZXJUaGlzID0ge1xuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgZW52OiBFbnZpcm9ubWVudDtcbn07XG5cbi8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG5leHBvcnQgdHlwZSBGaWx0ZXIgPSAodGhpczogRmlsdGVyVGhpcywgLi4uYXJnczogYW55W10pID0+IGFueTtcblxuZXhwb3J0IHR5cGUgUGx1Z2luID0gKGVudjogRW52aXJvbm1lbnQpID0+IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIGxvYWRlcjogTG9hZGVyO1xuICBkYXRhVmFybmFtZTogc3RyaW5nO1xuICBhdXRvZXNjYXBlOiBib29sZWFuO1xuICBhdXRvRGF0YVZhcm5hbWU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBFbnZpcm9ubWVudCB7XG4gIGNhY2hlOiBNYXA8c3RyaW5nLCBUZW1wbGF0ZT4gPSBuZXcgTWFwKCk7XG4gIG9wdGlvbnM6IE9wdGlvbnM7XG4gIHRhZ3M6IFRhZ1tdID0gW107XG4gIHRva2VuUHJlcHJvY2Vzc29yczogVG9rZW5QcmVwcm9jZXNzb3JbXSA9IFtdO1xuICBmaWx0ZXJzOiBSZWNvcmQ8c3RyaW5nLCBGaWx0ZXI+ID0ge307XG4gIHV0aWxzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICBjYWxsTWV0aG9kLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICB9XG5cbiAgdXNlKHBsdWdpbjogUGx1Z2luKSB7XG4gICAgcGx1Z2luKHRoaXMpO1xuICB9XG5cbiAgYXN5bmMgcnVuKFxuICAgIGZpbGU6IHN0cmluZyxcbiAgICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICBmcm9tPzogc3RyaW5nLFxuICApOiBQcm9taXNlPFRlbXBsYXRlUmVzdWx0PiB7XG4gICAgY29uc3QgdGVtcGxhdGUgPSBhd2FpdCB0aGlzLmxvYWQoZmlsZSwgZnJvbSk7XG4gICAgcmV0dXJuIGF3YWl0IHRlbXBsYXRlKGRhdGEpO1xuICB9XG5cbiAgYXN5bmMgcnVuU3RyaW5nKFxuICAgIHNvdXJjZTogc3RyaW5nLFxuICAgIGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICBmaWxlPzogc3RyaW5nLFxuICApOiBQcm9taXNlPFRlbXBsYXRlUmVzdWx0PiB7XG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMuY2FjaGUuZ2V0KGZpbGUpO1xuXG4gICAgICBpZiAoY2FjaGVkKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBjYWNoZWQoZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRlbXBsYXRlID0gdGhpcy5jb21waWxlKHNvdXJjZSwgZmlsZSk7XG4gICAgICB0aGlzLmNhY2hlLnNldChmaWxlLCB0ZW1wbGF0ZSk7XG5cbiAgICAgIHJldHVybiBhd2FpdCB0ZW1wbGF0ZShkYXRhKTtcbiAgICB9XG5cbiAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMuY29tcGlsZShzb3VyY2UsIGZpbGUpO1xuICAgIHJldHVybiBhd2FpdCB0ZW1wbGF0ZShkYXRhKTtcbiAgfVxuXG4gIHJ1blN0cmluZ1N5bmMoXG4gICAgc291cmNlOiBzdHJpbmcsXG4gICAgZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICApOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgdGVtcGxhdGUgPSB0aGlzLmNvbXBpbGUoc291cmNlLCBcIlwiLCB7fSwgdHJ1ZSk7XG4gICAgcmV0dXJuIHRlbXBsYXRlKGRhdGEpO1xuICB9XG5cbiAgY29tcGlsZShcbiAgICBzb3VyY2U6IHN0cmluZyxcbiAgICBwYXRoPzogc3RyaW5nLFxuICAgIGRlZmF1bHRzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgc3luYz86IGZhbHNlLFxuICApOiBUZW1wbGF0ZTtcbiAgY29tcGlsZShcbiAgICBzb3VyY2U6IHN0cmluZyxcbiAgICBwYXRoPzogc3RyaW5nLFxuICAgIGRlZmF1bHRzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgc3luYz86IHRydWUsXG4gICk6IFRlbXBsYXRlU3luYztcbiAgY29tcGlsZShcbiAgICBzb3VyY2U6IHN0cmluZyxcbiAgICBwYXRoPzogc3RyaW5nLFxuICAgIGRlZmF1bHRzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgc3luYyA9IGZhbHNlLFxuICApOiBUZW1wbGF0ZSB8IFRlbXBsYXRlU3luYyB7XG4gICAgaWYgKHR5cGVvZiBzb3VyY2UgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFRoZSBzb3VyY2UgY29kZSBvZiBcIiR7cGF0aH1cIiBtdXN0IGJlIGEgc3RyaW5nLiBHb3QgJHt0eXBlb2Ygc291cmNlfWAsXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCB0b2tlbnMgPSB0aGlzLnRva2VuaXplKHNvdXJjZSwgcGF0aCk7XG4gICAgbGV0IGNvZGUgPSB0aGlzLmNvbXBpbGVUb2tlbnModG9rZW5zKS5qb2luKFwiXFxuXCIpO1xuXG4gICAgY29uc3QgeyBkYXRhVmFybmFtZSwgYXV0b0RhdGFWYXJuYW1lIH0gPSB0aGlzLm9wdGlvbnM7XG5cbiAgICBpZiAoYXV0b0RhdGFWYXJuYW1lKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb2RlID0gdHJhbnNmb3JtVGVtcGxhdGVDb2RlKGNvZGUsIGRhdGFWYXJuYW1lKTtcbiAgICAgIH0gY2F0Y2ggKGNhdXNlKSB7XG4gICAgICAgIGlmIChjYXVzZSBpbnN0YW5jZW9mIFRyYW5zZm9ybUVycm9yKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFRlbXBsYXRlRXJyb3IocGF0aCwgc291cmNlLCBjYXVzZS5wb3NpdGlvbiwgY2F1c2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGVycm9yIHdoaWxlIHRyYW5zZm9ybWluZyAke3BhdGh9YCwgeyBjYXVzZSB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb25zdHJ1Y3RvciA9IG5ldyBGdW5jdGlvbihcbiAgICAgIFwiX19maWxlXCIsXG4gICAgICBcIl9fZW52XCIsXG4gICAgICBcIl9fZGVmYXVsdHNcIixcbiAgICAgIFwiX19lcnJcIixcbiAgICAgIGByZXR1cm4ke3N5bmMgPyBcIlwiIDogXCIgYXN5bmNcIn0gZnVuY3Rpb24gKCR7ZGF0YVZhcm5hbWV9KSB7XG4gICAgICAgIGxldCBfX3BvcyA9IDA7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgJHtkYXRhVmFybmFtZX0gPSBPYmplY3QuYXNzaWduKHt9LCBfX2RlZmF1bHRzLCAke2RhdGFWYXJuYW1lfSk7XG4gICAgICAgICAgY29uc3QgX19leHBvcnRzID0geyBjb250ZW50OiBcIlwiIH07XG4gICAgICAgICAgJHtjb2RlfVxuICAgICAgICAgIHJldHVybiBfX2V4cG9ydHM7XG4gICAgICAgIH0gY2F0Y2ggKGNhdXNlKSB7XG4gICAgICAgICAgY29uc3QgdGVtcGxhdGUgPSBfX2Vudi5jYWNoZS5nZXQoX19maWxlKTtcbiAgICAgICAgICB0aHJvdyBuZXcgX19lcnIoX19maWxlLCB0ZW1wbGF0ZT8uc291cmNlLCBfX3BvcywgY2F1c2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBgLFxuICAgICk7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZTogVGVtcGxhdGUgPSBjb25zdHJ1Y3RvcihwYXRoLCB0aGlzLCBkZWZhdWx0cywgVGVtcGxhdGVFcnJvcik7XG4gICAgdGVtcGxhdGUuZmlsZSA9IHBhdGg7XG4gICAgdGVtcGxhdGUuY29kZSA9IGNvZGU7XG4gICAgdGVtcGxhdGUuc291cmNlID0gc291cmNlO1xuICAgIHJldHVybiB0ZW1wbGF0ZTtcbiAgfVxuXG4gIHRva2VuaXplKHNvdXJjZTogc3RyaW5nLCBwYXRoPzogc3RyaW5nKTogVG9rZW5bXSB7XG4gICAgY29uc3QgcmVzdWx0ID0gdG9rZW5pemUoc291cmNlKTtcbiAgICBsZXQgeyB0b2tlbnMgfSA9IHJlc3VsdDtcbiAgICBjb25zdCB7IHBvc2l0aW9uLCBlcnJvciB9ID0gcmVzdWx0O1xuXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgVGVtcGxhdGVFcnJvcihwYXRoLCBzb3VyY2UsIHBvc2l0aW9uLCBlcnJvcik7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB0b2tlblByZXByb2Nlc3NvciBvZiB0aGlzLnRva2VuUHJlcHJvY2Vzc29ycykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gdG9rZW5QcmVwcm9jZXNzb3IodGhpcywgdG9rZW5zLCBwYXRoKTtcblxuICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRva2VucyA9IHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdG9rZW5zO1xuICB9XG5cbiAgYXN5bmMgbG9hZChmaWxlOiBzdHJpbmcsIGZyb20/OiBzdHJpbmcpOiBQcm9taXNlPFRlbXBsYXRlPiB7XG4gICAgY29uc3QgcGF0aCA9IHRoaXMub3B0aW9ucy5sb2FkZXIucmVzb2x2ZShmcm9tIHx8IFwiXCIsIGZpbGUpO1xuXG4gICAgaWYgKCF0aGlzLmNhY2hlLmhhcyhwYXRoKSkge1xuICAgICAgLy8gUmVtb3ZlIHF1ZXJ5IGFuZCBoYXNoIHBhcmFtcyBmcm9tIHBhdGggYmVmb3JlIGxvYWRpbmdcbiAgICAgIGNvbnN0IGNsZWFuUGF0aCA9IHBhdGhcbiAgICAgICAgLnNwbGl0KFwiP1wiKVswXVxuICAgICAgICAuc3BsaXQoXCIjXCIpWzBdO1xuXG4gICAgICBjb25zdCB7IHNvdXJjZSwgZGF0YSB9ID0gYXdhaXQgdGhpcy5vcHRpb25zLmxvYWRlci5sb2FkKGNsZWFuUGF0aCk7XG4gICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMuY29tcGlsZShzb3VyY2UsIHBhdGgsIGRhdGEpO1xuXG4gICAgICB0aGlzLmNhY2hlLnNldChwYXRoLCB0ZW1wbGF0ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY2FjaGUuZ2V0KHBhdGgpITtcbiAgfVxuXG4gIGNvbXBpbGVUb2tlbnMoXG4gICAgdG9rZW5zOiBUb2tlbltdLFxuICAgIG91dHB1dFZhciA9IFwiX19leHBvcnRzLmNvbnRlbnRcIixcbiAgICBzdG9wQXQ/OiBzdHJpbmdbXSxcbiAgKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGNvbXBpbGVkOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgdG9rZW5zOlxuICAgIHdoaWxlICh0b2tlbnMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHN0b3BBdCAmJiB0b2tlbnNbMF1bMF0gPT09IFwidGFnXCIgJiYgc3RvcEF0LmluY2x1ZGVzKHRva2Vuc1swXVsxXSkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IFt0eXBlLCBjb2RlLCBwb3NdID0gdG9rZW5zLnNoaWZ0KCkhO1xuXG4gICAgICBpZiAodHlwZSA9PT0gXCJjb21tZW50XCIpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGlmIChjb2RlICE9PSBcIlwiKSB7XG4gICAgICAgICAgY29tcGlsZWQucHVzaChgJHtvdXRwdXRWYXJ9ICs9ICR7SlNPTi5zdHJpbmdpZnkoY29kZSl9O2ApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZSA9PT0gXCJ0YWdcIikge1xuICAgICAgICBjb21waWxlZC5wdXNoKGBfX3BvcyA9ICR7cG9zfTtgKTtcbiAgICAgICAgZm9yIChjb25zdCB0YWcgb2YgdGhpcy50YWdzKSB7XG4gICAgICAgICAgY29uc3QgY29tcGlsZWRUYWcgPSB0YWcodGhpcywgY29kZSwgb3V0cHV0VmFyLCB0b2tlbnMpO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBjb21waWxlZFRhZyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgY29tcGlsZWQucHVzaChjb21waWxlZFRhZyk7XG4gICAgICAgICAgICBjb250aW51ZSB0b2tlbnM7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVW5rbm93biB0YWcsIGp1c3QgcHJpbnQgaXRcbiAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9IHRoaXMuY29tcGlsZUZpbHRlcnMoXG4gICAgICAgICAgdG9rZW5zLFxuICAgICAgICAgIGNvZGUsXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmF1dG9lc2NhcGUsXG4gICAgICAgICk7XG4gICAgICAgIGNvbXBpbGVkLnB1c2goYCR7b3V0cHV0VmFyfSArPSAoJHtleHByZXNzaW9ufSkgPz8gXCJcIjtgKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0b2tlbiB0eXBlIFwiJHt0eXBlfVwiYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBpbGVkO1xuICB9XG5cbiAgY29tcGlsZUZpbHRlcnModG9rZW5zOiBUb2tlbltdLCBvdXRwdXQ6IHN0cmluZywgYXV0b2VzY2FwZSA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICBsZXQgdW5lc2NhcGVkID0gZmFsc2U7XG5cbiAgICB3aGlsZSAodG9rZW5zLmxlbmd0aCA+IDAgJiYgdG9rZW5zWzBdWzBdID09PSBcImZpbHRlclwiKSB7XG4gICAgICBjb25zdCBbLCBjb2RlXSA9IHRva2Vucy5zaGlmdCgpITtcblxuICAgICAgY29uc3QgbWF0Y2ggPSBjb2RlLm1hdGNoKC9eKGF3YWl0XFxzKyk/KFtcXHcuXSspKD86XFwoKC4qKVxcKSk/JC8pO1xuXG4gICAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBmaWx0ZXI6ICR7Y29kZX1gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgW18sIGlzQXN5bmMsIG5hbWUsIGFyZ3NdID0gbWF0Y2g7XG5cbiAgICAgIGlmICghT2JqZWN0Lmhhc093bih0aGlzLmZpbHRlcnMsIG5hbWUpKSB7XG4gICAgICAgIGlmIChuYW1lID09PSBcInNhZmVcIikge1xuICAgICAgICAgIHVuZXNjYXBlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNHbG9iYWwobmFtZSkpIHtcbiAgICAgICAgICAvLyBJZiBhIGdsb2JhbCBmdW5jdGlvblxuICAgICAgICAgIG91dHB1dCA9IGAke2lzQXN5bmMgPyBcImF3YWl0IFwiIDogXCJcIn0ke25hbWV9KCR7b3V0cHV0fSR7XG4gICAgICAgICAgICBhcmdzID8gYCwgJHthcmdzfWAgOiBcIlwiXG4gICAgICAgICAgfSlgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEl0J3MgYSBwcm90b3R5cGUncyBtZXRob2QgKGUuZy4gYFN0cmluZy50b1VwcGVyQ2FzZSgpYClcbiAgICAgICAgICBvdXRwdXQgPSBgJHtcbiAgICAgICAgICAgIGlzQXN5bmMgPyBcImF3YWl0IFwiIDogXCJcIlxuICAgICAgICAgIH1fX2Vudi51dGlscy5jYWxsTWV0aG9kKCR7b3V0cHV0fSwgXCIke25hbWV9XCIsICR7YXJncyA/IGFyZ3MgOiBcIlwifSlgO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJdCdzIGEgZmlsdGVyIChlLmcuIGZpbHRlcnMudXBwZXIoKSlcbiAgICAgICAgY29uc3QgeyBkYXRhVmFybmFtZSB9ID0gdGhpcy5vcHRpb25zO1xuICAgICAgICBvdXRwdXQgPSBgJHtcbiAgICAgICAgICAoaXNBc3luYyB8fCBjaGVja0FzeW5jKHRoaXMuZmlsdGVyc1tuYW1lXSkpID8gXCJhd2FpdCBcIiA6IFwiXCJcbiAgICAgICAgfV9fZW52LmZpbHRlcnMuJHtuYW1lfS5jYWxsKHtkYXRhOiR7ZGF0YVZhcm5hbWV9LGVudjpfX2Vudn0sICR7b3V0cHV0fSR7XG4gICAgICAgICAgYXJncyA/IGAsICR7YXJnc31gIDogXCJcIlxuICAgICAgICB9KWA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXNjYXBlIGJ5IGRlZmF1bHRcbiAgICBpZiAoYXV0b2VzY2FwZSAmJiAhdW5lc2NhcGVkKSB7XG4gICAgICBvdXRwdXQgPSBgX19lbnYuZmlsdGVycy5lc2NhcGUoJHtvdXRwdXR9KWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0dsb2JhbChuYW1lOiBzdHJpbmcpIHtcbiAgLy8gQHRzLWlnbm9yZSBUUyBkb2Vzbid0IGtub3cgYWJvdXQgZ2xvYmFsVGhpc1xuICBpZiAoT2JqZWN0Lmhhc093bihnbG9iYWxUaGlzLCBuYW1lKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKG5hbWUuaW5jbHVkZXMoXCIuXCIpKSB7XG4gICAgY29uc3QgW29iaiwgcHJvcF0gPSBuYW1lLnNwbGl0KFwiLlwiKTtcbiAgICAvLyBAdHMtaWdub3JlIFRTIGRvZXNuJ3Qga25vdyBhYm91dCBnbG9iYWxUaGlzXG4gICAgcmV0dXJuIE9iamVjdC5oYXNPd24oZ2xvYmFsVGhpc1tvYmpdLCBwcm9wKTtcbiAgfVxufVxuXG4vLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuZnVuY3Rpb24gY2FsbE1ldGhvZCh0aGlzT2JqZWN0OiBhbnksIG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgaWYgKHRoaXNPYmplY3QgPT09IG51bGwgfHwgdGhpc09iamVjdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHRoaXNPYmplY3Q7XG4gIH1cblxuICBpZiAodHlwZW9mIHRoaXNPYmplY3RbbWV0aG9kXSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcmV0dXJuIHRoaXNPYmplY3RbbWV0aG9kXSguLi5hcmdzKTtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgXCIke21ldGhvZH1cIiBpcyBub3QgYSB2YWxpZCBmaWx0ZXIsIGdsb2JhbCBvYmplY3Qgb3IgYSBtZXRob2Qgb2YgYSAke3R5cGVvZiB0aGlzT2JqZWN0fSB2YXJpYWJsZWAsXG4gICk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrQXN5bmMoZm46ICgpID0+IHVua25vd24pOiBib29sZWFuIHtcbiAgcmV0dXJuIGZuLmNvbnN0cnVjdG9yPy5uYW1lID09PSBcIkFzeW5jRnVuY3Rpb25cIjtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLGNBQXlCLGlCQUFpQjtBQUdqRCxTQUFTLHFCQUFxQixRQUFRLG1CQUFtQjtBQUN6RCxTQUFTLGFBQWEsRUFBRSxjQUFjLFFBQVEsY0FBYztBQW1ENUQsT0FBTyxNQUFNO0VBQ1gsUUFBK0IsSUFBSSxNQUFNO0VBQ3pDLFFBQWlCO0VBQ2pCLE9BQWMsRUFBRSxDQUFDO0VBQ2pCLHFCQUEwQyxFQUFFLENBQUM7RUFDN0MsVUFBa0MsQ0FBQyxFQUFFO0VBQ3JDLFFBQWlDO0lBQy9CO0VBQ0YsRUFBRTtFQUVGLFlBQVksT0FBZ0IsQ0FBRTtJQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHO0VBQ2pCO0VBRUEsSUFBSSxNQUFjLEVBQUU7SUFDbEIsT0FBTyxJQUFJO0VBQ2I7RUFFQSxNQUFNLElBQ0osSUFBWSxFQUNaLElBQTZCLEVBQzdCLElBQWEsRUFDWTtJQUN6QixNQUFNLFdBQVcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07SUFDdkMsT0FBTyxNQUFNLFNBQVM7RUFDeEI7RUFFQSxNQUFNLFVBQ0osTUFBYyxFQUNkLElBQThCLEVBQzlCLElBQWEsRUFDWTtJQUN6QixJQUFJLE1BQU07TUFDUixNQUFNLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7TUFFOUIsSUFBSSxRQUFRO1FBQ1YsT0FBTyxNQUFNLE9BQU87TUFDdEI7TUFFQSxNQUFNLFdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRO01BQ3RDLElBQUksQ0FBQyxLQUFLLENB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 +// denoCacheMetadata=10722073564790835336,17743246261904758588
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/a0fab84dd7db3361dc01a7e9adb6a56c8687824456dee2e7bda560162e212af5.js b/vendor/gen/https/deno.land/a0fab84dd7db3361dc01a7e9adb6a56c8687824456dee2e7bda560162e212af5.js new file mode 100644 index 0000000..939a1ff --- /dev/null +++ b/vendor/gen/https/deno.land/a0fab84dd7db3361dc01a7e9adb6a56c8687824456dee2e7bda560162e212af5.js @@ -0,0 +1,57 @@ +import { merge } from "../core/utils/object.ts"; +export const defaults = { + options: { + size: 10 + } +}; +/** + * A plugin to paginate pages + * Installed by default + * @see https://lume.land/plugins/paginate/ + */ export function paginate(userOptions) { + const options = merge(defaults, userOptions); + return (site)=>{ + if (!userOptions?.options?.url) { + const ext = site.options.prettyUrls ? "/index.html" : ".html"; + options.options.url = (page)=>`./page-${page}${ext}`; + } + // Register the helper + site.data("paginate", createPaginator(options.options)); + }; +} +/** Create a paginator function */ export function createPaginator(defaults) { + return function paginate(results, userOptions = {}) { + const options = merge(defaults, userOptions); + const totalResults = results.length; + const totalPages = Math.ceil(results.length / options.size); + const result = []; + let page = 0; + while(++page <= totalPages){ + const data = createPageData(page); + const from = (page - 1) * options.size; + const to = from + options.size; + data.results = results.slice(from, to); + if (options.each) { + options.each(data, page); + } + result.push(data); + } + return result; + function createPageData(page) { + return { + url: options.url(page), + results: [], + pagination: { + page, + totalPages, + totalResults, + previous: page > 1 ? options.url(page - 1) : null, + next: totalPages > page ? options.url(page + 1) : null + } + }; + } + }; +} +export default paginate; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvcGx1Z2lucy9wYWdpbmF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtZXJnZSB9IGZyb20gXCIuLi9jb3JlL3V0aWxzL29iamVjdC50c1wiO1xuXG5pbXBvcnQgdHlwZSBTaXRlIGZyb20gXCIuLi9jb3JlL3NpdGUudHNcIjtcblxuLyoqIFRoZSBvcHRpb25zIGZvciB0aGUgcGFnaW5hdGUgaGVscGVyICovXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRlT3B0aW9ucyB7XG4gIC8qKiBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHBlciBwYWdlICovXG4gIHNpemU/OiBudW1iZXI7XG5cbiAgLyoqIFRoZSBmdW5jdGlvbiB0byBnZW5lcmF0ZSB0aGUgdXJsIG9mIHRoZSBwYWdlcyAqL1xuICB1cmw/OiAocGFnZTogbnVtYmVyKSA9PiBzdHJpbmc7XG5cbiAgLyoqIEZ1bmN0aW9uIHRvIG1vZGlmeSBvciBhZGQgZXh0cmEgZGF0YSB0byBlYWNoIHBhZ2UgKi9cbiAgZWFjaD86IChkYXRhOiBQYWdpbmF0ZVJlc3VsdDx1bmtub3duPiwgcGFnZTogbnVtYmVyKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBQYWdpbmF0b3IgPSA8VD4oXG4gIHJlc3VsdHM6IFRbXSxcbiAgdXNlck9wdGlvbnM/OiBQYXJ0aWFsPFBhZ2luYXRlT3B0aW9ucz4sXG4pID0+IFBhZ2luYXRlUmVzdWx0PFQ+W107XG5cbi8qKiBQYWdpbmF0aW9uIGluZm8gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGlvbkluZm8ge1xuICAvKiogVGhlIGN1cnJlbnQgcGFnZSBudW1iZXIgKi9cbiAgcGFnZTogbnVtYmVyO1xuXG4gIC8qKiBUaGUgdG90YWwgbnVtYmVyIG9mIHBhZ2VzICovXG4gIHRvdGFsUGFnZXM6IG51bWJlcjtcblxuICAvKiogVGhlIHRvdGFsIG51bWJlciBvZiBlbGVtZW50cyAqL1xuICB0b3RhbFJlc3VsdHM6IG51bWJlcjtcblxuICAvKiogVGhlIHVybCBvZiB0aGUgcHJldmlvdXMgcGFnZSAqL1xuICBwcmV2aW91czogc3RyaW5nIHwgbnVsbDtcblxuICAvKiogVGhlIHVybCBvZiB0aGUgbmV4dCBwYWdlICovXG4gIG5leHQ6IHN0cmluZyB8IG51bGw7XG59XG5cbi8qKiBUaGUgcGFnaW5hdGUgcmVzdWx0ICovXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRlUmVzdWx0PFQ+IHtcbiAgLyoqIFRoZSBwYWdlIHVybCAqL1xuICB1cmw6IHN0cmluZztcblxuICAvKiogVGhlIGVsZW1lbnRzIGluIHRoaXMgcGFnZSAqL1xuICByZXN1bHRzOiBUW107XG5cbiAgLyoqIFRoZSBwYWdpbmF0aW9uIGluZm8gKi9cbiAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbkluZm87XG5cbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcbiAgLyoqIFRoZSBkZWZhdWx0IHBhZ2luYXRpb24gb3B0aW9ucyAqL1xuICBvcHRpb25zPzogUGFnaW5hdGVPcHRpb25zO1xufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdHM6IE9wdGlvbnMgPSB7XG4gIG9wdGlvbnM6IHtcbiAgICBzaXplOiAxMCxcbiAgfSxcbn07XG5cbi8qKlxuICogQSBwbHVnaW4gdG8gcGFnaW5hdGUgcGFnZXNcbiAqIEluc3RhbGxlZCBieSBkZWZhdWx0XG4gKiBAc2VlIGh0dHBzOi8vbHVtZS5sYW5kL3BsdWdpbnMvcGFnaW5hdGUvXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYWdpbmF0ZSh1c2VyT3B0aW9ucz86IE9wdGlvbnMpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IG1lcmdlKGRlZmF1bHRzLCB1c2VyT3B0aW9ucyk7XG5cbiAgcmV0dXJuIChzaXRlOiBTaXRlKSA9PiB7XG4gICAgaWYgKCF1c2VyT3B0aW9ucz8ub3B0aW9ucz8udXJsKSB7XG4gICAgICBjb25zdCBleHQgPSBzaXRlLm9wdGlvbnMucHJldHR5VXJscyA/IFwiL2luZGV4Lmh0bWxcIiA6IFwiLmh0bWxcIjtcbiAgICAgIG9wdGlvbnMub3B0aW9ucy51cmwgPSAocGFnZTogbnVtYmVyKSA9PiBgLi9wYWdlLSR7cGFnZX0ke2V4dH1gO1xuICAgIH1cblxuICAgIC8vIFJlZ2lzdGVyIHRoZSBoZWxwZXJcbiAgICBzaXRlLmRhdGEoXCJwYWdpbmF0ZVwiLCBjcmVhdGVQYWdpbmF0b3Iob3B0aW9ucy5vcHRpb25zKSk7XG4gIH07XG59XG5cbi8qKiBDcmVhdGUgYSBwYWdpbmF0b3IgZnVuY3Rpb24gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQYWdpbmF0b3IoZGVmYXVsdHM6IFBhZ2luYXRlT3B0aW9ucyk6IFBhZ2luYXRvciB7XG4gIHJldHVybiBmdW5jdGlvbiBwYWdpbmF0ZTxUPihcbiAgICByZXN1bHRzOiBUW10sXG4gICAgdXNlck9wdGlvbnM6IFBhcnRpYWw8UGFnaW5hdGVPcHRpb25zPiA9IHt9LFxuICApIHtcbiAgICBjb25zdCBvcHRpb25zID0gbWVyZ2UoZGVmYXVsdHMsIHVzZXJPcHRpb25zKTtcbiAgICBjb25zdCB0b3RhbFJlc3VsdHMgPSByZXN1bHRzLmxlbmd0aDtcbiAgICBjb25zdCB0b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHJlc3VsdHMubGVuZ3RoIC8gb3B0aW9ucy5zaXplKTtcblxuICAgIGNvbnN0IHJlc3VsdDogUGFnaW5hdGVSZXN1bHQ8VD5bXSA9IFtdO1xuICAgIGxldCBwYWdlID0gMDtcblxuICAgIHdoaWxlICgrK3BhZ2UgPD0gdG90YWxQYWdlcykge1xuICAgICAgY29uc3QgZGF0YSA9IGNyZWF0ZVBhZ2VEYXRhKHBhZ2UpO1xuICAgICAgY29uc3QgZnJvbSA9IChwYWdlIC0gMSkgKiBvcHRpb25zLnNpemU7XG4gICAgICBjb25zdCB0byA9IGZyb20gKyBvcHRpb25zLnNpemU7XG4gICAgICBkYXRhLnJlc3VsdHMgPSByZXN1bHRzLnNsaWNlKGZyb20sIHRvKTtcblxuICAgICAgaWYgKG9wdGlvbnMuZWFjaCkge1xuICAgICAgICBvcHRpb25zLmVhY2goZGF0YSwgcGFnZSk7XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdC5wdXNoKGRhdGEpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVQYWdlRGF0YShwYWdlOiBudW1iZXIpOiBQYWdpbmF0ZVJlc3VsdDxUPiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB1cmw6IG9wdGlvbnMudXJsKHBhZ2UpLFxuICAgICAgICByZXN1bHRzOiBbXSxcbiAgICAgICAgcGFnaW5hdGlvbjoge1xuICAgICAgICAgIHBhZ2UsXG4gICAgICAgICAgdG90YWxQYWdlcyxcbiAgICAgICAgICB0b3RhbFJlc3VsdHMsXG4gICAgICAgICAgcHJldmlvdXM6IHBhZ2UgPiAxID8gb3B0aW9ucy51cmwocGFnZSAtIDEpIDogbnVsbCxcbiAgICAgICAgICBuZXh0OiB0b3RhbFBhZ2VzID4gcGFnZSA/IG9wdGlvbnMudXJsKHBhZ2UgKyAxKSA6IG51bGwsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgcGFnaW5hdGU7XG5cbi8qKiBFeHRlbmRzIERhdGEgaW50ZXJmYWNlICovXG5kZWNsYXJlIGdsb2JhbCB7XG4gIG5hbWVzcGFjZSBMdW1lIHtcbiAgICBleHBvcnQgdHlwZSB7IFBhZ2luYXRlUmVzdWx0IH07XG5cbiAgICBleHBvcnQgaW50ZXJmYWNlIERhdGEge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgcGFnaW5hdG9yIGhlbHBlclxuICAgICAgICogQHNlZSBodHRwczovL2x1bWUubGFuZC9wbHVnaW5zL3BhZ2luYXRlL1xuICAgICAgICovXG4gICAgICBwYWdpbmF0ZTogUGFnaW5hdG9yO1xuXG4gICAgICAvKipcbiAgICAgICAqIFRoZSBwYWdpbmF0aW9uIGluZm9cbiAgICAgICAqIEBzZWUgaHR0cHM6Ly9sdW1lLmxhbmQvcGx1Z2lucy9wYWdpbmF0ZS9cbiAgICAgICAqL1xuICAgICAgcGFnaW5hdGlvbj86IFBhZ2luYXRpb25JbmZvO1xuXG4gICAgICAvKipcbiAgICAgICAqIFRoZSBwYWdpbmF0aW9uIHJlc3VsdFxuICAgICAgICogQHNlZSBodHRwczovL2x1bWUubGFuZC9wbHVnaW5zL3BhZ2luYXRlL1xuICAgICAgICovXG4gICAgICByZXN1bHRzPzogRGF0YVtdO1xuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsS0FBSyxRQUFRLDBCQUEwQjtBQTBEaEQsT0FBTyxNQUFNLFdBQW9CO0VBQy9CLFNBQVM7SUFDUCxNQUFNO0VBQ1I7QUFDRixFQUFFO0FBRUY7Ozs7Q0FJQyxHQUNELE9BQU8sU0FBUyxTQUFTLFdBQXFCO0VBQzVDLE1BQU0sVUFBVSxNQUFNLFVBQVU7RUFFaEMsT0FBTyxDQUFDO0lBQ04sSUFBSSxDQUFDLGFBQWEsU0FBUyxLQUFLO01BQzlCLE1BQU0sTUFBTSxLQUFLLE9BQU8sQ0FBQyxVQUFVLEdBQUcsZ0JBQWdCO01BQ3RELFFBQVEsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQWlCLENBQUMsT0FBTyxFQUFFLE9BQU8sS0FBSztJQUNoRTtJQUVBLHNCQUFzQjtJQUN0QixLQUFLLElBQUksQ0FBQyxZQUFZLGdCQUFnQixRQUFRLE9BQU87RUFDdkQ7QUFDRjtBQUVBLGdDQUFnQyxHQUNoQyxPQUFPLFNBQVMsZ0JBQWdCLFFBQXlCO0VBQ3ZELE9BQU8sU0FBUyxTQUNkLE9BQVksRUFDWixjQUF3QyxDQUFDLENBQUM7SUFFMUMsTUFBTSxVQUFVLE1BQU0sVUFBVTtJQUNoQyxNQUFNLGVBQWUsUUFBUSxNQUFNO0lBQ25DLE1BQU0sYUFBYSxLQUFLLElBQUksQ0FBQyxRQUFRLE1BQU0sR0FBRyxRQUFRLElBQUk7SUFFMUQsTUFBTSxTQUE4QixFQUFFO0lBQ3RDLElBQUksT0FBTztJQUVYLE1BQU8sRUFBRSxRQUFRLFdBQVk7TUFDM0IsTUFBTSxPQUFPLGVBQWU7TUFDNUIsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksUUFBUSxJQUFJO01BQ3RDLE1BQU0sS0FBSyxPQUFPLFFBQVEsSUFBSTtNQUM5QixLQUFLLE9BQU8sR0FBRyxRQUFRLEtBQUssQ0FBQyxNQUFNO01BRW5DLElBQUksUUFBUSxJQUFJLEVBQUU7UUFDaEIsUUFBUSxJQUFJLENBQUMsTUFBTTtNQUNyQjtNQUVBLE9BQU8sSUFBSSxDQUFDO0lBQ2Q7SUFFQSxPQUFPO0lBRVAsU0FBUyxlQUFlLElBQVk7TUFDbEMsT0FBTztRQUNMLEtBQUssUUFBUSxHQUFHLENBQUM7UUFDakIsU0FBUyxFQUFFO1FBQ1gsWUFBWTtVQUNWO1VBQ0E7VUFDQTtVQUNBLFVBQVUsT0FBTyxJQUFJLFFBQVEsR0FBRyxDQUFDLE9BQU8sS0FBSztVQUM3QyxNQUFNLGFBQWEsT0FBTyxRQUFRLEdBQUcsQ0FBQyxPQUFPLEtBQUs7UUFDcEQ7TUFDRjtJQUNGO0VBQ0Y7QUFDRjtBQUVBLGVBQWUsU0FBUyJ9 +// denoCacheMetadata=3363691232633183071,14298317539027376755
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/a1d7e697a2ce1b02191959f5519b60b7a0cff44624326e60882d91c949eb6e1a.js b/vendor/gen/https/deno.land/a1d7e697a2ce1b02191959f5519b60b7a0cff44624326e60882d91c949eb6e1a.js new file mode 100644 index 0000000..b863efb --- /dev/null +++ b/vendor/gen/https/deno.land/a1d7e697a2ce1b02191959f5519b60b7a0cff44624326e60882d91c949eb6e1a.js @@ -0,0 +1,4 @@ +export * from "jsr:@std/path@1.0.9"; +export * as posix from "jsr:@std/path@1.0.9/posix"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvZGVwcy9wYXRoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCJqc3I6QHN0ZC9wYXRoQDEuMC45XCI7XG5leHBvcnQgKiBhcyBwb3NpeCBmcm9tIFwianNyOkBzdGQvcGF0aEAxLjAuOS9wb3NpeFwiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCO0FBQ3BDLE9BQU8sS0FBSyxLQUFLLE1BQU0sNEJBQTRCIn0= +// denoCacheMetadata=11973340054162728824,17203654548082326383
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/a1ecf01679e9a072e3fcb67fdc0c72bd9f0cb869e0da64dcaaa6d66c6426485d.js b/vendor/gen/https/deno.land/a1ecf01679e9a072e3fcb67fdc0c72bd9f0cb869e0da64dcaaa6d66c6426485d.js new file mode 100644 index 0000000..c8c17ec --- /dev/null +++ b/vendor/gen/https/deno.land/a1ecf01679e9a072e3fcb67fdc0c72bd9f0cb869e0da64dcaaa6d66c6426485d.js @@ -0,0 +1,45 @@ +import lume from "../mod.ts"; +import { toFileUrl } from "../deps/path.ts"; +import { isUrl } from "../core/utils/path.ts"; +import { getConfigFile } from "../core/utils/lume_config.ts"; +import { log } from "../core/utils/log.ts"; +import Site from "../core/site.ts"; +/** Create a site instance */ export async function createSite(config) { + let url; + const watchInclude = []; + if (config && isUrl(config)) { + url = config; + } else { + const path = await getConfigFile(config); + if (path) { + watchInclude.push(path); + url = toFileUrl(path).href; + } + } + if (url) { + log.info(`Loading config file <gray>${url}</gray>`); + const mod = await import(url); + const site = mod.default; + if (!(site instanceof Site)) { + log.fatal(`[Lume] Missing Site instance! Ensure your config file does export the Site instance as default.`); + throw new Error("Site instance is not found"); + } + site._data.configFile = url; + site.options.watcher.include.push(...watchInclude); + return site; + } + return lume(); +} +/** Create a site intance and build it */ export async function buildSite(config) { + const site = await createSite(config); + performance.mark("start"); + await site.build(); + performance.mark("end"); + log.info(`🍾 Site built into <gray>${site.options.dest}</gray>`); + const duration = performance.measure("duration", "start", "end").duration / 1000; + const total = site.pages.length + site.files.length; + log.info(` <gray>${total} files generated in ${duration.toFixed(2)} seconds</gray>`); + return site; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY2xpL3V0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsdW1lIGZyb20gXCIuLi9tb2QudHNcIjtcbmltcG9ydCB7IHRvRmlsZVVybCB9IGZyb20gXCIuLi9kZXBzL3BhdGgudHNcIjtcbmltcG9ydCB7IGlzVXJsIH0gZnJvbSBcIi4uL2NvcmUvdXRpbHMvcGF0aC50c1wiO1xuaW1wb3J0IHsgZ2V0Q29uZmlnRmlsZSB9IGZyb20gXCIuLi9jb3JlL3V0aWxzL2x1bWVfY29uZmlnLnRzXCI7XG5pbXBvcnQgeyBsb2cgfSBmcm9tIFwiLi4vY29yZS91dGlscy9sb2cudHNcIjtcbmltcG9ydCBTaXRlIGZyb20gXCIuLi9jb3JlL3NpdGUudHNcIjtcblxuLyoqIENyZWF0ZSBhIHNpdGUgaW5zdGFuY2UgKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVTaXRlKGNvbmZpZz86IHN0cmluZyk6IFByb21pc2U8U2l0ZT4ge1xuICBsZXQgdXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHdhdGNoSW5jbHVkZSA9IFtdO1xuXG4gIGlmIChjb25maWcgJiYgaXNVcmwoY29uZmlnKSkge1xuICAgIHVybCA9IGNvbmZpZztcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBwYXRoID0gYXdhaXQgZ2V0Q29uZmlnRmlsZShjb25maWcpO1xuXG4gICAgaWYgKHBhdGgpIHtcbiAgICAgIHdhdGNoSW5jbHVkZS5wdXNoKHBhdGgpO1xuICAgICAgdXJsID0gdG9GaWxlVXJsKHBhdGgpLmhyZWY7XG4gICAgfVxuICB9XG5cbiAgaWYgKHVybCkge1xuICAgIGxvZy5pbmZvKGBMb2FkaW5nIGNvbmZpZyBmaWxlIDxncmF5PiR7dXJsfTwvZ3JheT5gKTtcbiAgICBjb25zdCBtb2QgPSBhd2FpdCBpbXBvcnQodXJsKTtcbiAgICBjb25zdCBzaXRlID0gbW9kLmRlZmF1bHQgYXMgU2l0ZSB8IHVuZGVmaW5lZDtcbiAgICBpZiAoIShzaXRlIGluc3RhbmNlb2YgU2l0ZSkpIHtcbiAgICAgIGxvZy5mYXRhbChcbiAgICAgICAgYFtMdW1lXSBNaXNzaW5nIFNpdGUgaW5zdGFuY2UhIEVuc3VyZSB5b3VyIGNvbmZpZyBmaWxlIGRvZXMgZXhwb3J0IHRoZSBTaXRlIGluc3RhbmNlIGFzIGRlZmF1bHQuYCxcbiAgICAgICk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTaXRlIGluc3RhbmNlIGlzIG5vdCBmb3VuZFwiKTtcbiAgICB9XG5cbiAgICBzaXRlLl9kYXRhLmNvbmZpZ0ZpbGUgPSB1cmw7XG4gICAgc2l0ZS5vcHRpb25zLndhdGNoZXIuaW5jbHVkZS5wdXNoKC4uLndhdGNoSW5jbHVkZSk7XG4gICAgcmV0dXJuIHNpdGU7XG4gIH1cblxuICByZXR1cm4gbHVtZSgpO1xufVxuXG4vKiogQ3JlYXRlIGEgc2l0ZSBpbnRhbmNlIGFuZCBidWlsZCBpdCAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkU2l0ZShjb25maWc/OiBzdHJpbmcpOiBQcm9taXNlPFNpdGU+IHtcbiAgY29uc3Qgc2l0ZSA9IGF3YWl0IGNyZWF0ZVNpdGUoY29uZmlnKTtcblxuICBwZXJmb3JtYW5jZS5tYXJrKFwic3RhcnRcIik7XG4gIGF3YWl0IHNpdGUuYnVpbGQoKTtcbiAgcGVyZm9ybWFuY2UubWFyayhcImVuZFwiKTtcblxuICBsb2cuaW5mbyhg8J+NviBTaXRlIGJ1aWx0IGludG8gPGdyYXk+JHtzaXRlLm9wdGlvbnMuZGVzdH08L2dyYXk+YCk7XG4gIGNvbnN0IGR1cmF0aW9uID0gcGVyZm9ybWFuY2UubWVhc3VyZShcImR1cmF0aW9uXCIsIFwic3RhcnRcIiwgXCJlbmRcIikuZHVyYXRpb24gL1xuICAgIDEwMDA7XG4gIGNvbnN0IHRvdGFsID0gc2l0ZS5wYWdlcy5sZW5ndGggKyBzaXRlLmZpbGVzLmxlbmd0aDtcbiAgbG9nLmluZm8oXG4gICAgYCAgPGdyYXk+JHt0b3RhbH0gZmlsZXMgZ2VuZXJhdGVkIGluICR7ZHVyYXRpb24udG9GaXhlZCgyKX0gc2Vjb25kczwvZ3JheT5gLFxuICApO1xuXG4gIHJldHVybiBzaXRlO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sVUFBVSxZQUFZO0FBQzdCLFNBQVMsU0FBUyxRQUFRLGtCQUFrQjtBQUM1QyxTQUFTLEtBQUssUUFBUSx3QkFBd0I7QUFDOUMsU0FBUyxhQUFhLFFBQVEsK0JBQStCO0FBQzdELFNBQVMsR0FBRyxRQUFRLHVCQUF1QjtBQUMzQyxPQUFPLFVBQVUsa0JBQWtCO0FBRW5DLDJCQUEyQixHQUMzQixPQUFPLGVBQWUsV0FBVyxNQUFlO0VBQzlDLElBQUk7RUFDSixNQUFNLGVBQWUsRUFBRTtFQUV2QixJQUFJLFVBQVUsTUFBTSxTQUFTO0lBQzNCLE1BQU07RUFDUixPQUFPO0lBQ0wsTUFBTSxPQUFPLE1BQU0sY0FBYztJQUVqQyxJQUFJLE1BQU07TUFDUixhQUFhLElBQUksQ0FBQztNQUNsQixNQUFNLFVBQVUsTUFBTSxJQUFJO0lBQzVCO0VBQ0Y7RUFFQSxJQUFJLEtBQUs7SUFDUCxJQUFJLElBQUksQ0FBQyxDQUFDLDBCQUEwQixFQUFFLElBQUksT0FBTyxDQUFDO0lBQ2xELE1BQU0sTUFBTSxNQUFNLE1BQU0sQ0FBQztJQUN6QixNQUFNLE9BQU8sSUFBSSxPQUFPO0lBQ3hCLElBQUksQ0FBQyxDQUFDLGdCQUFnQixJQUFJLEdBQUc7TUFDM0IsSUFBSSxLQUFLLENBQ1AsQ0FBQywrRkFBK0YsQ0FBQztNQUVuRyxNQUFNLElBQUksTUFBTTtJQUNsQjtJQUVBLEtBQUssS0FBSyxDQUFDLFVBQVUsR0FBRztJQUN4QixLQUFLLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSTtJQUNyQyxPQUFPO0VBQ1Q7RUFFQSxPQUFPO0FBQ1Q7QUFFQSx1Q0FBdUMsR0FDdkMsT0FBTyxlQUFlLFVBQVUsTUFBZTtFQUM3QyxNQUFNLE9BQU8sTUFBTSxXQUFXO0VBRTlCLFlBQVksSUFBSSxDQUFDO0VBQ2pCLE1BQU0sS0FBSyxLQUFLO0VBQ2hCLFlBQVksSUFBSSxDQUFDO0VBRWpCLElBQUksSUFBSSxDQUFDLENBQUMseUJBQXlCLEVBQUUsS0FBSyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztFQUMvRCxNQUFNLFdBQVcsWUFBWSxPQUFPLENBQUMsWUFBWSxTQUFTLE9BQU8sUUFBUSxHQUN2RTtFQUNGLE1BQU0sUUFBUSxLQUFLLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxLQUFLLENBQUMsTUFBTTtFQUNuRCxJQUFJLElBQUksQ0FDTixDQUFDLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixFQUFFLFNBQVMsT0FBTyxDQUFDLEdBQUcsZUFBZSxDQUFDO0VBRzdFLE9BQU87QUFDVCJ9 +// denoCacheMetadata=2042069628751175414,4204658886903053925
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/a1f0a3b1767fb95b49e43ce38f4e77a0b6d2a5f812e7292dff495ef6dcc715ae.js b/vendor/gen/https/deno.land/a1f0a3b1767fb95b49e43ce38f4e77a0b6d2a5f812e7292dff495ef6dcc715ae.js new file mode 100644 index 0000000..71ce4ce --- /dev/null +++ b/vendor/gen/https/deno.land/a1f0a3b1767fb95b49e43ce38f4e77a0b6d2a5f812e7292dff495ef6dcc715ae.js @@ -0,0 +1,28 @@ +import { brightGreen, gray, red } from "../deps/colors.ts"; +/** Log the request/responses */ export function log() { + return async (request, next)=>{ + try { + const response = await next(request); + const url = new URL(request.url); + const pathname = decodeURIComponent(url.pathname); + const { status } = response; + if (status === 404 || status === 500) { + console.log(`${red(status.toString())} ${pathname}`); + } else if (status === 200) { + console.log(`${brightGreen(status.toString())} ${pathname}`); + } else if (status === 301 || status === 302) { + console.log(`${gray(status.toString())} ${pathname} => ${response.headers?.get("location")}`); + } else { + console.log(`${gray(status.toString())} ${pathname}`); + } + return response; + } catch (cause) { + return new Response(`Error: ${cause.toString()}`, { + status: 500 + }); + } + }; +} +export default log; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvbWlkZGxld2FyZXMvbG9nZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJyaWdodEdyZWVuLCBncmF5LCByZWQgfSBmcm9tIFwiLi4vZGVwcy9jb2xvcnMudHNcIjtcblxuaW1wb3J0IHR5cGUgeyBNaWRkbGV3YXJlIH0gZnJvbSBcIi4uL2NvcmUvc2VydmVyLnRzXCI7XG5cbi8qKiBMb2cgdGhlIHJlcXVlc3QvcmVzcG9uc2VzICovXG5leHBvcnQgZnVuY3Rpb24gbG9nKCk6IE1pZGRsZXdhcmUge1xuICByZXR1cm4gYXN5bmMgKHJlcXVlc3QsIG5leHQpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBuZXh0KHJlcXVlc3QpO1xuICAgICAgY29uc3QgdXJsID0gbmV3IFVSTChyZXF1ZXN0LnVybCk7XG4gICAgICBjb25zdCBwYXRobmFtZSA9IGRlY29kZVVSSUNvbXBvbmVudCh1cmwucGF0aG5hbWUpO1xuICAgICAgY29uc3QgeyBzdGF0dXMgfSA9IHJlc3BvbnNlO1xuXG4gICAgICBpZiAoc3RhdHVzID09PSA0MDQgfHwgc3RhdHVzID09PSA1MDApIHtcbiAgICAgICAgY29uc29sZS5sb2coYCR7cmVkKHN0YXR1cy50b1N0cmluZygpKX0gJHtwYXRobmFtZX1gKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgY29uc29sZS5sb2coYCR7YnJpZ2h0R3JlZW4oc3RhdHVzLnRvU3RyaW5nKCkpfSAke3BhdGhuYW1lfWApO1xuICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT09IDMwMSB8fCBzdGF0dXMgPT09IDMwMikge1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBgJHtncmF5KHN0YXR1cy50b1N0cmluZygpKX0gJHtwYXRobmFtZX0gPT4gJHtcbiAgICAgICAgICAgIHJlc3BvbnNlLmhlYWRlcnM/LmdldChcbiAgICAgICAgICAgICAgXCJsb2NhdGlvblwiLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1gLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coYCR7Z3JheShzdGF0dXMudG9TdHJpbmcoKSl9ICR7cGF0aG5hbWV9YCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9IGNhdGNoIChjYXVzZSkge1xuICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZShcbiAgICAgICAgYEVycm9yOiAke2NhdXNlLnRvU3RyaW5nKCl9YCxcbiAgICAgICAgeyBzdGF0dXM6IDUwMCB9LFxuICAgICAgKTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGxvZztcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLFdBQVcsRUFBRSxJQUFJLEVBQUUsR0FBRyxRQUFRLG9CQUFvQjtBQUkzRCw4QkFBOEIsR0FDOUIsT0FBTyxTQUFTO0VBQ2QsT0FBTyxPQUFPLFNBQVM7SUFDckIsSUFBSTtNQUNGLE1BQU0sV0FBVyxNQUFNLEtBQUs7TUFDNUIsTUFBTSxNQUFNLElBQUksSUFBSSxRQUFRLEdBQUc7TUFDL0IsTUFBTSxXQUFXLG1CQUFtQixJQUFJLFFBQVE7TUFDaEQsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHO01BRW5CLElBQUksV0FBVyxPQUFPLFdBQVcsS0FBSztRQUNwQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLElBQUksT0FBTyxRQUFRLElBQUksQ0FBQyxFQUFFLFVBQVU7TUFDckQsT0FBTyxJQUFJLFdBQVcsS0FBSztRQUN6QixRQUFRLEdBQUcsQ0FBQyxHQUFHLFlBQVksT0FBTyxRQUFRLElBQUksQ0FBQyxFQUFFLFVBQVU7TUFDN0QsT0FBTyxJQUFJLFdBQVcsT0FBTyxXQUFXLEtBQUs7UUFDM0MsUUFBUSxHQUFHLENBQ1QsR0FBRyxLQUFLLE9BQU8sUUFBUSxJQUFJLENBQUMsRUFBRSxTQUFTLElBQUksRUFDekMsU0FBUyxPQUFPLEVBQUUsSUFDaEIsYUFFRjtNQUVOLE9BQU87UUFDTCxRQUFRLEdBQUcsQ0FBQyxHQUFHLEtBQUssT0FBTyxRQUFRLElBQUksQ0FBQyxFQUFFLFVBQVU7TUFDdEQ7TUFFQSxPQUFPO0lBQ1QsRUFBRSxPQUFPLE9BQU87TUFDZCxPQUFPLElBQUksU0FDVCxDQUFDLE9BQU8sRUFBRSxNQUFNLFFBQVEsSUFBSSxFQUM1QjtRQUFFLFFBQVE7TUFBSTtJQUVsQjtFQUNGO0FBQ0Y7QUFFQSxlQUFlLElBQUkifQ== +// denoCacheMetadata=16544281629193175687,3939433164643484295
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/a1ffddb82c7c3d3a654ac3cae5af0c27137ea544999726961b8a861fc3d109af.js b/vendor/gen/https/deno.land/a1ffddb82c7c3d3a654ac3cae5af0c27137ea544999726961b8a861fc3d109af.js new file mode 100644 index 0000000..4393d7c --- /dev/null +++ b/vendor/gen/https/deno.land/a1ffddb82c7c3d3a654ac3cae5af0c27137ea544999726961b8a861fc3d109af.js @@ -0,0 +1,115 @@ +import { posix } from "../deps/path.ts"; +import Events from "./events.ts"; +import { serveFile as httpServeFile } from "../deps/http.ts"; +import { decodeURIComponentSafe } from "./utils/path.ts"; +import { merge } from "./utils/object.ts"; +export const defaults = { + root: `${Deno.cwd()}/_site`, + port: 8000, + serveFile +}; +export default class Server { + events = new Events(); + options; + middlewares = []; + #server; + fetch; + constructor(options = {}){ + this.options = merge(defaults, options); + if (this.options.hostname === "localhost") { + this.options.hostname = "0.0.0.0"; + } + // Create the fetch function for `deno serve` + this.fetch = (request, info)=>{ + return this.handle(request, info); + }; + } + /** The local address this server is listening on. */ get addr() { + return this.#server?.addr; + } + /** Register one or more middlewares */ use(...middleware) { + this.middlewares.push(...middleware); + return this; + } + /** Add a listener to an event */ addEventListener(type, listener, options) { + this.events.addEventListener(type, listener, options); + return this; + } + /** Dispatch an event */ dispatchEvent(event) { + return this.events.dispatchEvent(event); + } + /** Start the server */ start(signal) { + this.#server = Deno.serve({ + ...this.options, + signal, + onListen: ()=>this.dispatchEvent({ + type: "start" + }) + }, this.handle.bind(this)); + } + /** Stops the server */ stop() { + try { + this.#server?.shutdown(); + } catch (err) { + this.dispatchEvent({ + type: "error", + error: err + }); + } + } + /** Handle a http request event */ async handle(request, info) { + const middlewares = [ + ...this.middlewares + ]; + const next = async (request)=>{ + const middleware = middlewares.shift(); + if (middleware) { + return await middleware(request, next, info); + } + return await this.options.serveFile(this.options.root, request); + }; + return await next(request); + } +} +/** Serve a static file */ export async function serveFile(root, request) { + const url = new URL(request.url); + const pathname = decodeURIComponentSafe(url.pathname); + const path = posix.join(root, pathname); + try { + const file = path.endsWith("/") ? path + "index.html" : path; + // Redirect /example to /example/ + const info = await Deno.stat(file); + if (info.isDirectory) { + return new Response(null, { + status: 301, + headers: { + location: posix.join(pathname, "/") + } + }); + } + // Serve the static file + return await fixServeFile(request, file); + } catch { + try { + // Exists a HTML file with this name? + if (!posix.extname(path)) { + return await fixServeFile(request, path + ".html"); + } + } catch { + // Continue + } + return new Response("Not found", { + status: 404 + }); + } +} +async function fixServeFile(request, path) { + const response = await httpServeFile(request, path); + // Fix for https://github.com/lumeland/lume/issues/734 + if (response.headers.get("content-type") === "application/rss+xml") { + response.headers.set("content-type", "application/xml"); + } + return response; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS9zZXJ2ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcG9zaXggfSBmcm9tIFwiLi4vZGVwcy9wYXRoLnRzXCI7XG5pbXBvcnQgRXZlbnRzIGZyb20gXCIuL2V2ZW50cy50c1wiO1xuaW1wb3J0IHsgc2VydmVGaWxlIGFzIGh0dHBTZXJ2ZUZpbGUgfSBmcm9tIFwiLi4vZGVwcy9odHRwLnRzXCI7XG5cbmltcG9ydCB0eXBlIHsgRXZlbnQsIEV2ZW50TGlzdGVuZXIsIEV2ZW50T3B0aW9ucyB9IGZyb20gXCIuL2V2ZW50cy50c1wiO1xuaW1wb3J0IHsgZGVjb2RlVVJJQ29tcG9uZW50U2FmZSB9IGZyb20gXCIuL3V0aWxzL3BhdGgudHNcIjtcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSBcIi4vdXRpbHMvb2JqZWN0LnRzXCI7XG5cbi8qKiBUaGUgb3B0aW9ucyB0byBjb25maWd1cmUgdGhlIGxvY2FsIHNlcnZlciAqL1xuZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIGV4dGVuZHMgRGVuby5TZXJ2ZU9wdGlvbnMge1xuICAvKiogVGhlIHJvb3QgcGF0aCAqL1xuICByb290OiBzdHJpbmc7XG4gIHBvcnQ/OiBudW1iZXI7XG4gIGhvc3RuYW1lPzogc3RyaW5nO1xuICBzZXJ2ZUZpbGU/OiAocm9vdDogc3RyaW5nLCByZXF1ZXN0OiBSZXF1ZXN0KSA9PiBQcm9taXNlPFJlc3BvbnNlPjtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRzOiBPcHRpb25zID0ge1xuICByb290OiBgJHtEZW5vLmN3ZCgpfS9fc2l0ZWAsXG4gIHBvcnQ6IDgwMDAsXG4gIHNlcnZlRmlsZSxcbn07XG5cbmV4cG9ydCB0eXBlIFJlcXVlc3RIYW5kbGVyID0gKHJlcTogUmVxdWVzdCkgPT4gUHJvbWlzZTxSZXNwb25zZT47XG5leHBvcnQgdHlwZSBNaWRkbGV3YXJlID0gKFxuICByZXE6IFJlcXVlc3QsXG4gIG5leHQ6IFJlcXVlc3RIYW5kbGVyLFxuICBpbmZvOiBEZW5vLlNlcnZlSGFuZGxlckluZm8sXG4pID0+IFByb21pc2U8UmVzcG9uc2U+O1xuXG4vKiogQ3VzdG9tIGV2ZW50cyBmb3Igc2VydmVyICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlckV2ZW50IGV4dGVuZHMgRXZlbnQge1xuICAvKiogVGhlIGV2ZW50IHR5cGUgKi9cbiAgdHlwZTogU2VydmVyRXZlbnRUeXBlO1xuXG4gIC8qKiBUaGUgcmVxdWVzdCBvYmplY3QgKi9cbiAgcmVxdWVzdD86IFJlcXVlc3Q7XG5cbiAgLyoqIFRoZSBlcnJvciBvYmplY3QgKG9ubHkgZm9yIFwiZXJyb3JcIiBldmVudHMpICovXG4gIGVycm9yPzogRXJyb3I7XG59XG5cbi8qKiBUaGUgYXZhaWxhYmxlIGV2ZW50IHR5cGVzICovXG5leHBvcnQgdHlwZSBTZXJ2ZXJFdmVudFR5cGUgPVxuICB8IFwic3RhcnRcIlxuICB8IFwiZXJyb3JcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VydmVyIHtcbiAgZXZlbnRzOiBFdmVudHM8U2VydmVyRXZlbnQ+ID0gbmV3IEV2ZW50czxTZXJ2ZXJFdmVudD4oKTtcbiAgb3B0aW9uczogUmVxdWlyZWQ8T3B0aW9ucz47XG4gIG1pZGRsZXdhcmVzOiBNaWRkbGV3YXJlW10gPSBbXTtcbiAgI3NlcnZlcj86IERlbm8uSHR0cFNlcnZlcjtcbiAgZmV0Y2g6IERlbm8uU2VydmVIYW5kbGVyO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFBhcnRpYWw8T3B0aW9ucz4gPSB7fSkge1xuICAgIHRoaXMub3B0aW9ucyA9IG1lcmdlKGRlZmF1bHRzLCBvcHRpb25zKTtcblxuICAgIGlmICh0aGlzLm9wdGlvbnMuaG9zdG5hbWUgPT09IFwibG9jYWxob3N0XCIpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5ob3N0bmFtZSA9IFwiMC4wLjAuMFwiO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgZmV0Y2ggZnVuY3Rpb24gZm9yIGBkZW5vIHNlcnZlYFxuICAgIHRoaXMuZmV0Y2ggPSAocmVxdWVzdDogUmVxdWVzdCwgaW5mbzogRGVuby5TZXJ2ZUhhbmRsZXJJbmZvKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGUocmVxdWVzdCwgaW5mbyk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBUaGUgbG9jYWwgYWRkcmVzcyB0aGlzIHNlcnZlciBpcyBsaXN0ZW5pbmcgb24uICovXG4gIGdldCBhZGRyKCk6IERlbm8uQWRkciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI3NlcnZlcj8uYWRkcjtcbiAgfVxuXG4gIC8qKiBSZWdpc3RlciBvbmUgb3IgbW9yZSBtaWRkbGV3YXJlcyAqL1xuICB1c2UoLi4ubWlkZGxld2FyZTogTWlkZGxld2FyZVtdKSB7XG4gICAgdGhpcy5taWRkbGV3YXJlcy5wdXNoKC4uLm1pZGRsZXdhcmUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEFkZCBhIGxpc3RlbmVyIHRvIGFuIGV2ZW50ICovXG4gIGFkZEV2ZW50TGlzdGVuZXIoXG4gICAgdHlwZTogU2VydmVyRXZlbnRUeXBlLFxuICAgIGxpc3RlbmVyOiBFdmVudExpc3RlbmVyPFNlcnZlckV2ZW50PixcbiAgICBvcHRpb25zPzogRXZlbnRPcHRpb25zLFxuICApIHtcbiAgICB0aGlzLmV2ZW50cy5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBEaXNwYXRjaCBhbiBldmVudCAqL1xuICBkaXNwYXRjaEV2ZW50KGV2ZW50OiBTZXJ2ZXJFdmVudCkge1xuICAgIHJldHVybiB0aGlzLmV2ZW50cy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgfVxuXG4gIC8qKiBTdGFydCB0aGUgc2VydmVyICovXG4gIHN0YXJ0KHNpZ25hbD86IERlbm8uU2VydmVPcHRpb25zW1wic2lnbmFsXCJdKSB7XG4gICAgdGhpcy4jc2VydmVyID0gRGVuby5zZXJ2ZSh7XG4gICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgICBzaWduYWwsXG4gICAgICBvbkxpc3RlbjogKCkgPT4gdGhpcy5kaXNwYXRjaEV2ZW50KHsgdHlwZTogXCJzdGFydFwiIH0pLFxuICAgIH0sIHRoaXMuaGFuZGxlLmJpbmQodGhpcykpO1xuICB9XG5cbiAgLyoqIFN0b3BzIHRoZSBzZXJ2ZXIgKi9cbiAgc3RvcCgpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy4jc2VydmVyPy5zaHV0ZG93bigpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KHtcbiAgICAgICAgdHlwZTogXCJlcnJvclwiLFxuICAgICAgICBlcnJvcjogZXJyIGFzIEVycm9yLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEhhbmRsZSBhIGh0dHAgcmVxdWVzdCBldmVudCAqL1xuICBhc3luYyBoYW5kbGUoXG4gICAgcmVxdWVzdDogUmVxdWVzdCxcbiAgICBpbmZvOiBEZW5vLlNlcnZlSGFuZGxlckluZm8sXG4gICk6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBjb25zdCBtaWRkbGV3YXJlcyA9IFsuLi50aGlzLm1pZGRsZXdhcmVzXTtcblxuICAgIGNvbnN0IG5leHQ6IFJlcXVlc3RIYW5kbGVyID0gYXN5bmMgKFxuICAgICAgcmVxdWVzdDogUmVxdWVzdCxcbiAgICApOiBQcm9taXNlPFJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBtaWRkbGV3YXJlID0gbWlkZGxld2FyZXMuc2hpZnQoKTtcblxuICAgICAgaWYgKG1pZGRsZXdhcmUpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG1pZGRsZXdhcmUocmVxdWVzdCwgbmV4dCwgaW5mbyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLm9wdGlvbnMuc2VydmVGaWxlKHRoaXMub3B0aW9ucy5yb290LCByZXF1ZXN0KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGF3YWl0IG5leHQocmVxdWVzdCk7XG4gIH1cbn1cblxuLyoqIFNlcnZlIGEgc3RhdGljIGZpbGUgKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXJ2ZUZpbGUoXG4gIHJvb3Q6IHN0cmluZyxcbiAgcmVxdWVzdDogUmVxdWVzdCxcbik6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChyZXF1ZXN0LnVybCk7XG4gIGNvbnN0IHBhdGhuYW1lID0gZGVjb2RlVVJJQ29tcG9uZW50U2FmZSh1cmwucGF0aG5hbWUpO1xuICBjb25zdCBwYXRoID0gcG9zaXguam9pbihyb290LCBwYXRobmFtZSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBmaWxlID0gcGF0aC5lbmRzV2l0aChcIi9cIikgPyBwYXRoICsgXCJpbmRleC5odG1sXCIgOiBwYXRoO1xuXG4gICAgLy8gUmVkaXJlY3QgL2V4YW1wbGUgdG8gL2V4YW1wbGUvXG4gICAgY29uc3QgaW5mbyA9IGF3YWl0IERlbm8uc3RhdChmaWxlKTtcblxuICAgIGlmIChpbmZvLmlzRGlyZWN0b3J5KSB7XG4gICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHtcbiAgICAgICAgc3RhdHVzOiAzMDEsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBsb2NhdGlvbjogcG9zaXguam9pbihwYXRobmFtZSwgXCIvXCIpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gU2VydmUgdGhlIHN0YXRpYyBmaWxlXG4gICAgcmV0dXJuIGF3YWl0IGZpeFNlcnZlRmlsZShyZXF1ZXN0LCBmaWxlKTtcbiAgfSBjYXRjaCB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEV4aXN0cyBhIEhUTUwgZmlsZSB3aXRoIHRoaXMgbmFtZT9cbiAgICAgIGlmICghcG9zaXguZXh0bmFtZShwYXRoKSkge1xuICAgICAgICByZXR1cm4gYXdhaXQgZml4U2VydmVGaWxlKHJlcXVlc3QsIHBhdGggKyBcIi5odG1sXCIpO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gQ29udGludWVcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKFxuICAgICAgXCJOb3QgZm91bmRcIixcbiAgICAgIHsgc3RhdHVzOiA0MDQgfSxcbiAgICApO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZpeFNlcnZlRmlsZShyZXF1ZXN0OiBSZXF1ZXN0LCBwYXRoOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgaHR0cFNlcnZlRmlsZShyZXF1ZXN0LCBwYXRoKTtcblxuICAvLyBGaXggZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9sdW1lbGFuZC9sdW1lL2lzc3Vlcy83MzRcbiAgaWYgKHJlc3BvbnNlLmhlYWRlcnMuZ2V0KFwiY29udGVudC10eXBlXCIpID09PSBcImFwcGxpY2F0aW9uL3Jzcyt4bWxcIikge1xuICAgIHJlc3BvbnNlLmhlYWRlcnMuc2V0KFwiY29udGVudC10eXBlXCIsIFwiYXBwbGljYXRpb24veG1sXCIpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsS0FBSyxRQUFRLGtCQUFrQjtBQUN4QyxPQUFPLFlBQVksY0FBYztBQUNqQyxTQUFTLGFBQWEsYUFBYSxRQUFRLGtCQUFrQjtBQUc3RCxTQUFTLHNCQUFzQixRQUFRLGtCQUFrQjtBQUN6RCxTQUFTLEtBQUssUUFBUSxvQkFBb0I7QUFXMUMsT0FBTyxNQUFNLFdBQW9CO0VBQy9CLE1BQU0sR0FBRyxLQUFLLEdBQUcsR0FBRyxNQUFNLENBQUM7RUFDM0IsTUFBTTtFQUNOO0FBQ0YsRUFBRTtBQTBCRixlQUFlLE1BQU07RUFDbkIsU0FBOEIsSUFBSSxTQUFzQjtFQUN4RCxRQUEyQjtFQUMzQixjQUE0QixFQUFFLENBQUM7RUFDL0IsQ0FBQSxNQUFPLENBQW1CO0VBQzFCLE1BQXlCO0VBRXpCLFlBQVksVUFBNEIsQ0FBQyxDQUFDLENBQUU7SUFDMUMsSUFBSSxDQUFDLE9B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 +// denoCacheMetadata=4688306983084188218,7259532271230754078
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/a2c4e100e69a26246471a4a40b33c5e69175effef0af41eea14e1289d6214ab6.js b/vendor/gen/https/deno.land/a2c4e100e69a26246471a4a40b33c5e69175effef0af41eea14e1289d6214ab6.js new file mode 100644 index 0000000..6ceb5ba --- /dev/null +++ b/vendor/gen/https/deno.land/a2c4e100e69a26246471a4a40b33c5e69175effef0af41eea14e1289d6214ab6.js @@ -0,0 +1,9 @@ +import { html } from "../deps.ts"; +export default function() { + return (env)=>{ + // deno-lint-ignore no-explicit-any + env.filters.escape = (value)=>value ? html.escape(value.toString()) : ""; + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9wbHVnaW5zL2VzY2FwZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBodG1sIH0gZnJvbSBcIi4uL2RlcHMudHNcIjtcbmltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnQsIFBsdWdpbiB9IGZyb20gXCIuLi9zcmMvZW52aXJvbm1lbnQudHNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCk6IFBsdWdpbiB7XG4gIHJldHVybiAoZW52OiBFbnZpcm9ubWVudCkgPT4ge1xuICAgIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG4gICAgZW52LmZpbHRlcnMuZXNjYXBlID0gKHZhbHVlOiBhbnkpID0+XG4gICAgICB2YWx1ZSA/IGh0bWwuZXNjYXBlKHZhbHVlLnRvU3RyaW5nKCkpIDogXCJcIjtcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLElBQUksUUFBUSxhQUFhO0FBR2xDLGVBQWU7RUFDYixPQUFPLENBQUM7SUFDTixtQ0FBbUM7SUFDbkMsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsUUFDcEIsUUFBUSxLQUFLLE1BQU0sQ0FBQyxNQUFNLFFBQVEsTUFBTTtFQUM1QztBQUNGIn0= +// denoCacheMetadata=1498635866432030645,3942014168243327901
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/a2ebd302f1560ba601d7654f6a17f7c6a896c262db50e1178bb6677802f39401.js b/vendor/gen/https/deno.land/a2ebd302f1560ba601d7654f6a17f7c6a896c262db50e1178bb6677802f39401.js new file mode 100644 index 0000000..e23a208 --- /dev/null +++ b/vendor/gen/https/deno.land/a2ebd302f1560ba601d7654f6a17f7c6a896c262db50e1178bb6677802f39401.js @@ -0,0 +1,26 @@ +import { Command } from "../command.ts"; +import { dim, italic } from "../deps.ts"; +import { BashCompletionsCommand } from "./bash.ts"; +import { CompleteCommand } from "./complete.ts"; +import { FishCompletionsCommand } from "./fish.ts"; +import { ZshCompletionsCommand } from "./zsh.ts"; +/** Generates shell completion scripts for various shells. */ export class CompletionsCommand extends Command { + #cmd; + constructor(cmd){ + super(); + this.#cmd = cmd; + return this.description(()=>{ + const baseCmd = this.#cmd || this.getMainCommand(); + return `Generate shell completions. + +To enable shell completions for this program add the following line to your ${dim(italic("~/.bashrc"))} or similar: + + ${dim(italic(`source <(${baseCmd.getPath()} completions [shell])`))} + + For more information run ${dim(italic(`${baseCmd.getPath()} completions [shell] --help`))} +`; + }).noGlobals().action(()=>this.showHelp()).command("bash", new BashCompletionsCommand(this.#cmd)).command("fish", new FishCompletionsCommand(this.#cmd)).command("zsh", new ZshCompletionsCommand(this.#cmd)).command("complete", new CompleteCommand(this.#cmd).hidden()).reset(); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC9jb21wbGV0aW9ucy9tb2QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCIuLi9jb21tYW5kLnRzXCI7XG5pbXBvcnQgeyBkaW0sIGl0YWxpYyB9IGZyb20gXCIuLi9kZXBzLnRzXCI7XG5pbXBvcnQgeyBCYXNoQ29tcGxldGlvbnNDb21tYW5kIH0gZnJvbSBcIi4vYmFzaC50c1wiO1xuaW1wb3J0IHsgQ29tcGxldGVDb21tYW5kIH0gZnJvbSBcIi4vY29tcGxldGUudHNcIjtcbmltcG9ydCB7IEZpc2hDb21wbGV0aW9uc0NvbW1hbmQgfSBmcm9tIFwiLi9maXNoLnRzXCI7XG5pbXBvcnQgeyBac2hDb21wbGV0aW9uc0NvbW1hbmQgfSBmcm9tIFwiLi96c2gudHNcIjtcblxuLyoqIEdlbmVyYXRlcyBzaGVsbCBjb21wbGV0aW9uIHNjcmlwdHMgZm9yIHZhcmlvdXMgc2hlbGxzLiAqL1xuZXhwb3J0IGNsYXNzIENvbXBsZXRpb25zQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICAjY21kPzogQ29tbWFuZDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoY21kPzogQ29tbWFuZCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy4jY21kID0gY21kO1xuICAgIHJldHVybiB0aGlzXG4gICAgICAuZGVzY3JpcHRpb24oKCkgPT4ge1xuICAgICAgICBjb25zdCBiYXNlQ21kID0gdGhpcy4jY21kIHx8IHRoaXMuZ2V0TWFpbkNvbW1hbmQoKTtcbiAgICAgICAgcmV0dXJuIGBHZW5lcmF0ZSBzaGVsbCBjb21wbGV0aW9ucy5cblxuVG8gZW5hYmxlIHNoZWxsIGNvbXBsZXRpb25zIGZvciB0aGlzIHByb2dyYW0gYWRkIHRoZSBmb2xsb3dpbmcgbGluZSB0byB5b3VyICR7XG4gICAgICAgICAgZGltKGl0YWxpYyhcIn4vLmJhc2hyY1wiKSlcbiAgICAgICAgfSBvciBzaW1pbGFyOlxuXG4gICAgJHtkaW0oaXRhbGljKGBzb3VyY2UgPCgke2Jhc2VDbWQuZ2V0UGF0aCgpfSBjb21wbGV0aW9ucyBbc2hlbGxdKWApKX1cblxuICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIHJ1biAke1xuICAgICAgICAgIGRpbShpdGFsaWMoYCR7YmFzZUNtZC5nZXRQYXRoKCl9IGNvbXBsZXRpb25zIFtzaGVsbF0gLS1oZWxwYCkpXG4gICAgICAgIH1cbmA7XG4gICAgICB9KVxuICAgICAgLm5vR2xvYmFscygpXG4gICAgICAuYWN0aW9uKCgpID0+IHRoaXMuc2hvd0hlbHAoKSlcbiAgICAgIC5jb21tYW5kKFwiYmFzaFwiLCBuZXcgQmFzaENvbXBsZXRpb25zQ29tbWFuZCh0aGlzLiNjbWQpKVxuICAgICAgLmNvbW1hbmQoXCJmaXNoXCIsIG5ldyBGaXNoQ29tcGxldGlvbnNDb21tYW5kKHRoaXMuI2NtZCkpXG4gICAgICAuY29tbWFuZChcInpzaFwiLCBuZXcgWnNoQ29tcGxldGlvbnNDb21tYW5kKHRoaXMuI2NtZCkpXG4gICAgICAuY29tbWFuZChcImNvbXBsZXRlXCIsIG5ldyBDb21wbGV0ZUNvbW1hbmQodGhpcy4jY21kKS5oaWRkZW4oKSlcbiAgICAgIC5yZXNldCgpO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxPQUFPLFFBQVEsZ0JBQWdCO0FBQ3hDLFNBQVMsR0FBRyxFQUFFLE1BQU0sUUFBUSxhQUFhO0FBQ3pDLFNBQVMsc0JBQXNCLFFBQVEsWUFBWTtBQUNuRCxTQUFTLGVBQWUsUUFBUSxnQkFBZ0I7QUFDaEQsU0FBUyxzQkFBc0IsUUFBUSxZQUFZO0FBQ25ELFNBQVMscUJBQXFCLFFBQVEsV0FBVztBQUVqRCwyREFBMkQsR0FDM0QsT0FBTyxNQUFNLDJCQUEyQjtFQUN0QyxDQUFBLEdBQUksQ0FBVztFQUVmLFlBQW1CLEdBQWEsQ0FBRTtJQUNoQyxLQUFLO0lBQ0wsSUFBSSxDQUFDLENBQUEsR0FBSSxHQUFHO0lBQ1osT0FBTyxJQUFJLENBQ1IsV0FBVyxDQUFDO01BQ1gsTUFBTSxVQUFVLElBQUksQ0FBQyxDQUFBLEdBQUksSUFBSSxJQUFJLENBQUMsY0FBYztNQUNoRCxPQUFPLENBQUM7OzRFQUU0RCxFQUNsRSxJQUFJLE9BQU8sY0FDWjs7SUFFTCxFQUFFLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxRQUFRLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxHQUFHOzs2QkFFM0MsRUFDbkIsSUFBSSxPQUFPLEdBQUcsUUFBUSxPQUFPLEdBQUcsMkJBQTJCLENBQUMsR0FDN0Q7QUFDVCxDQUFDO0lBQ0ssR0FDQyxTQUFTLEdBQ1QsTUFBTSxDQUFDLElBQU0sSUFBSSxDQUFDLFFBQVEsSUFDMUIsT0FBTyxDQUFDLFFBQVEsSUFBSSx1QkFBdUIsSUFBSSxDQUFDLENBQUEsR0FBSSxHQUNwRCxPQUFPLENBQUMsUUFBUSxJQUFJLHVCQUF1QixJQUFJLENBQUMsQ0FBQSxHQUFJLEdBQ3BELE9BQU8sQ0FBQyxPQUFPLElBQUksc0JBQXNCLElBQUksQ0FBQyxDQUFBLEdBQUksR0FDbEQsT0FBTyxDQUFDLFlBQVksSUFBSSxnQkFBZ0IsSUFBSSxDQUFDLENBQUEsR0FBSSxFQUFFLE1BQU0sSUFDekQsS0FBSztFQUNWO0FBQ0YifQ== +// denoCacheMetadata=6336827247712403280,5165255785369232017
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/a345c1e6061c714f4b7f0c60c5dd2c22044837f9abca210d502436299c05ba5f.js b/vendor/gen/https/deno.land/a345c1e6061c714f4b7f0c60c5dd2c22044837f9abca210d502436299c05ba5f.js new file mode 100644 index 0000000..b60073f --- /dev/null +++ b/vendor/gen/https/deno.land/a345c1e6061c714f4b7f0c60c5dd2c22044837f9abca210d502436299c05ba5f.js @@ -0,0 +1,19 @@ +/** Border characters interface. */ /** Default border characters. */ export const border = { + top: "─", + topMid: "┬", + topLeft: "┌", + topRight: "┐", + bottom: "─", + bottomMid: "┴", + bottomLeft: "└", + bottomRight: "┘", + left: "│", + leftMid: "├", + mid: "─", + midMid: "┼", + right: "│", + rightMid: "┤", + middle: "│" +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvdGFibGUvYm9yZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBCb3JkZXIgY2hhcmFjdGVycyBpbnRlcmZhY2UuICovXG5leHBvcnQgaW50ZXJmYWNlIElCb3JkZXIge1xuICB0b3A6IHN0cmluZztcbiAgdG9wTWlkOiBzdHJpbmc7XG4gIHRvcExlZnQ6IHN0cmluZztcbiAgdG9wUmlnaHQ6IHN0cmluZztcbiAgYm90dG9tOiBzdHJpbmc7XG4gIGJvdHRvbU1pZDogc3RyaW5nO1xuICBib3R0b21MZWZ0OiBzdHJpbmc7XG4gIGJvdHRvbVJpZ2h0OiBzdHJpbmc7XG4gIGxlZnQ6IHN0cmluZztcbiAgbGVmdE1pZDogc3RyaW5nO1xuICBtaWQ6IHN0cmluZztcbiAgbWlkTWlkOiBzdHJpbmc7XG4gIHJpZ2h0OiBzdHJpbmc7XG4gIHJpZ2h0TWlkOiBzdHJpbmc7XG4gIG1pZGRsZTogc3RyaW5nO1xufVxuXG4vKiogRGVmYXVsdCBib3JkZXIgY2hhcmFjdGVycy4gKi9cbmV4cG9ydCBjb25zdCBib3JkZXI6IElCb3JkZXIgPSB7XG4gIHRvcDogXCLilIBcIixcbiAgdG9wTWlkOiBcIuKUrFwiLFxuICB0b3BMZWZ0OiBcIuKUjFwiLFxuICB0b3BSaWdodDogXCLilJBcIixcbiAgYm90dG9tOiBcIuKUgFwiLFxuICBib3R0b21NaWQ6IFwi4pS0XCIsXG4gIGJvdHRvbUxlZnQ6IFwi4pSUXCIsXG4gIGJvdHRvbVJpZ2h0OiBcIuKUmFwiLFxuICBsZWZ0OiBcIuKUglwiLFxuICBsZWZ0TWlkOiBcIuKUnFwiLFxuICBtaWQ6IFwi4pSAXCIsXG4gIG1pZE1pZDogXCLilLxcIixcbiAgcmlnaHQ6IFwi4pSCXCIsXG4gIHJpZ2h0TWlkOiBcIuKUpFwiLFxuICBtaWRkbGU6IFwi4pSCXCIsXG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlDQUFpQyxHQW1CakMsK0JBQStCLEdBQy9CLE9BQU8sTUFBTSxTQUFrQjtFQUM3QixLQUFLO0VBQ0wsUUFBUTtFQUNSLFNBQVM7RUFDVCxVQUFVO0VBQ1YsUUFBUTtFQUNSLFdBQVc7RUFDWCxZQUFZO0VBQ1osYUFBYTtFQUNiLE1BQU07RUFDTixTQUFTO0VBQ1QsS0FBSztFQUNMLFFBQVE7RUFDUixPQUFPO0VBQ1AsVUFBVTtFQUNWLFFBQVE7QUFDVixFQUFFIn0= +// denoCacheMetadata=2412683515442778659,12590242258776051525
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/a3c0d2358d026014ddf7f7f71ae9b5fa57d2690f93c3555d8d692c51db7a6af5.js b/vendor/gen/https/deno.land/a3c0d2358d026014ddf7f7f71ae9b5fa57d2690f93c3555d8d692c51db7a6af5.js new file mode 100644 index 0000000..f204b8c --- /dev/null +++ b/vendor/gen/https/deno.land/a3c0d2358d026014ddf7f7f71ae9b5fa57d2690f93c3555d8d692c51db7a6af5.js @@ -0,0 +1,347 @@ +// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { isWindows, osType } from "../_util/os.ts"; +import { SEP, SEP_PATTERN } from "./separator.ts"; +import * as _win32 from "./win32.ts"; +import * as _posix from "./posix.ts"; +const path = isWindows ? _win32 : _posix; +const { join, normalize } = path; +const regExpEscapeChars = [ + "!", + "$", + "(", + ")", + "*", + "+", + ".", + "=", + "?", + "[", + "\\", + "^", + "{", + "|" +]; +const rangeEscapeChars = [ + "-", + "\\", + "]" +]; +/** Convert a glob string to a regular expression. + * + * Tries to match bash glob expansion as closely as possible. + * + * Basic glob syntax: + * - `*` - Matches everything without leaving the path segment. + * - `?` - Matches any single character. + * - `{foo,bar}` - Matches `foo` or `bar`. + * - `[abcd]` - Matches `a`, `b`, `c` or `d`. + * - `[a-d]` - Matches `a`, `b`, `c` or `d`. + * - `[!abcd]` - Matches any single character besides `a`, `b`, `c` or `d`. + * - `[[:<class>:]]` - Matches any character belonging to `<class>`. + * - `[[:alnum:]]` - Matches any digit or letter. + * - `[[:digit:]abc]` - Matches any digit, `a`, `b` or `c`. + * - See https://facelessuser.github.io/wcmatch/glob/#posix-character-classes + * for a complete list of supported character classes. + * - `\` - Escapes the next character for an `os` other than `"windows"`. + * - \` - Escapes the next character for `os` set to `"windows"`. + * - `/` - Path separator. + * - `\` - Additional path separator only for `os` set to `"windows"`. + * + * Extended syntax: + * - Requires `{ extended: true }`. + * - `?(foo|bar)` - Matches 0 or 1 instance of `{foo,bar}`. + * - `@(foo|bar)` - Matches 1 instance of `{foo,bar}`. They behave the same. + * - `*(foo|bar)` - Matches _n_ instances of `{foo,bar}`. + * - `+(foo|bar)` - Matches _n > 0_ instances of `{foo,bar}`. + * - `!(foo|bar)` - Matches anything other than `{foo,bar}`. + * - See https://www.linuxjournal.com/content/bash-extended-globbing. + * + * Globstar syntax: + * - Requires `{ globstar: true }`. + * - `**` - Matches any number of any path segments. + * - Must comprise its entire path segment in the provided glob. + * - See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * + * Note the following properties: + * - The generated `RegExp` is anchored at both start and end. + * - Repeating and trailing separators are tolerated. Trailing separators in the + * provided glob have no meaning and are discarded. + * - Absolute globs will only match absolute paths, etc. + * - Empty globs will match nothing. + * - Any special glob syntax must be contained to one path segment. For example, + * `?(foo|bar/baz)` is invalid. The separator will take precedence and the + * first segment ends with an unclosed group. + * - If a path segment ends with unclosed groups or a dangling escape prefix, a + * parse error has occurred. Every character for that segment is taken + * literally in this event. + * + * Limitations: + * - A negative group like `!(foo|bar)` will wrongly be converted to a negative + * look-ahead followed by a wildcard. This means that `!(foo).js` will wrongly + * fail to match `foobar.js`, even though `foobar` is not `foo`. Effectively, + * `!(foo|bar)` is treated like `!(@(foo|bar)*)`. This will work correctly if + * the group occurs not nested at the end of the segment. */ export function globToRegExp(glob, { extended = true, globstar: globstarOption = true, os = osType, caseInsensitive = false } = {}) { + if (glob == "") { + return /(?!)/; + } + const sep = os == "windows" ? "(?:\\\\|/)+" : "/+"; + const sepMaybe = os == "windows" ? "(?:\\\\|/)*" : "/*"; + const seps = os == "windows" ? [ + "\\", + "/" + ] : [ + "/" + ]; + const globstar = os == "windows" ? "(?:[^\\\\/]*(?:\\\\|/|$)+)*" : "(?:[^/]*(?:/|$)+)*"; + const wildcard = os == "windows" ? "[^\\\\/]*" : "[^/]*"; + const escapePrefix = os == "windows" ? "`" : "\\"; + // Remove trailing separators. + let newLength = glob.length; + for(; newLength > 1 && seps.includes(glob[newLength - 1]); newLength--); + glob = glob.slice(0, newLength); + let regExpString = ""; + // Terminates correctly. Trust that `j` is incremented every iteration. + for(let j = 0; j < glob.length;){ + let segment = ""; + const groupStack = []; + let inRange = false; + let inEscape = false; + let endsWithSep = false; + let i = j; + // Terminates with `i` at the non-inclusive end of the current segment. + for(; i < glob.length && !seps.includes(glob[i]); i++){ + if (inEscape) { + inEscape = false; + const escapeChars = inRange ? rangeEscapeChars : regExpEscapeChars; + segment += escapeChars.includes(glob[i]) ? `\\${glob[i]}` : glob[i]; + continue; + } + if (glob[i] == escapePrefix) { + inEscape = true; + continue; + } + if (glob[i] == "[") { + if (!inRange) { + inRange = true; + segment += "["; + if (glob[i + 1] == "!") { + i++; + segment += "^"; + } else if (glob[i + 1] == "^") { + i++; + segment += "\\^"; + } + continue; + } else if (glob[i + 1] == ":") { + let k = i + 1; + let value = ""; + while(glob[k + 1] != null && glob[k + 1] != ":"){ + value += glob[k + 1]; + k++; + } + if (glob[k + 1] == ":" && glob[k + 2] == "]") { + i = k + 2; + if (value == "alnum") segment += "\\dA-Za-z"; + else if (value == "alpha") segment += "A-Za-z"; + else if (value == "ascii") segment += "\x00-\x7F"; + else if (value == "blank") segment += "\t "; + else if (value == "cntrl") segment += "\x00-\x1F\x7F"; + else if (value == "digit") segment += "\\d"; + else if (value == "graph") segment += "\x21-\x7E"; + else if (value == "lower") segment += "a-z"; + else if (value == "print") segment += "\x20-\x7E"; + else if (value == "punct") { + segment += "!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_‘{|}~"; + } else if (value == "space") segment += "\\s\v"; + else if (value == "upper") segment += "A-Z"; + else if (value == "word") segment += "\\w"; + else if (value == "xdigit") segment += "\\dA-Fa-f"; + continue; + } + } + } + if (glob[i] == "]" && inRange) { + inRange = false; + segment += "]"; + continue; + } + if (inRange) { + if (glob[i] == "\\") { + segment += `\\\\`; + } else { + segment += glob[i]; + } + continue; + } + if (glob[i] == ")" && groupStack.length > 0 && groupStack[groupStack.length - 1] != "BRACE") { + segment += ")"; + const type = groupStack.pop(); + if (type == "!") { + segment += wildcard; + } else if (type != "@") { + segment += type; + } + continue; + } + if (glob[i] == "|" && groupStack.length > 0 && groupStack[groupStack.length - 1] != "BRACE") { + segment += "|"; + continue; + } + if (glob[i] == "+" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("+"); + segment += "(?:"; + continue; + } + if (glob[i] == "@" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("@"); + segment += "(?:"; + continue; + } + if (glob[i] == "?") { + if (extended && glob[i + 1] == "(") { + i++; + groupStack.push("?"); + segment += "(?:"; + } else { + segment += "."; + } + continue; + } + if (glob[i] == "!" && extended && glob[i + 1] == "(") { + i++; + groupStack.push("!"); + segment += "(?!"; + continue; + } + if (glob[i] == "{") { + groupStack.push("BRACE"); + segment += "(?:"; + continue; + } + if (glob[i] == "}" && groupStack[groupStack.length - 1] == "BRACE") { + groupStack.pop(); + segment += ")"; + continue; + } + if (glob[i] == "," && groupStack[groupStack.length - 1] == "BRACE") { + segment += "|"; + continue; + } + if (glob[i] == "*") { + if (extended && glob[i + 1] == "(") { + i++; + groupStack.push("*"); + segment += "(?:"; + } else { + const prevChar = glob[i - 1]; + let numStars = 1; + while(glob[i + 1] == "*"){ + i++; + numStars++; + } + const nextChar = glob[i + 1]; + if (globstarOption && numStars == 2 && [ + ...seps, + undefined + ].includes(prevChar) && [ + ...seps, + undefined + ].includes(nextChar)) { + segment += globstar; + endsWithSep = true; + } else { + segment += wildcard; + } + } + continue; + } + segment += regExpEscapeChars.includes(glob[i]) ? `\\${glob[i]}` : glob[i]; + } + // Check for unclosed groups or a dangling backslash. + if (groupStack.length > 0 || inRange || inEscape) { + // Parse failure. Take all characters from this segment literally. + segment = ""; + for (const c of glob.slice(j, i)){ + segment += regExpEscapeChars.includes(c) ? `\\${c}` : c; + endsWithSep = false; + } + } + regExpString += segment; + if (!endsWithSep) { + regExpString += i < glob.length ? sep : sepMaybe; + endsWithSep = true; + } + // Terminates with `i` at the start of the next segment. + while(seps.includes(glob[i]))i++; + // Check that the next value of `j` is indeed higher than the current value. + if (!(i > j)) { + throw new Error("Assertion failure: i > j (potential infinite loop)"); + } + j = i; + } + regExpString = `^${regExpString}$`; + return new RegExp(regExpString, caseInsensitive ? "i" : ""); +} +/** Test whether the given string is a glob */ export function isGlob(str) { + const chars = { + "{": "}", + "(": ")", + "[": "]" + }; + const regex = /\\(.)|(^!|\*|\?|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/; + if (str === "") { + return false; + } + let match; + while(match = regex.exec(str)){ + if (match[2]) return true; + let idx = match.index + match[0].length; + // if an open bracket/brace/paren is escaped, + // set the index to the next closing character + const open = match[1]; + const close = open ? chars[open] : null; + if (open && close) { + const n = str.indexOf(close, idx); + if (n !== -1) { + idx = n + 1; + } + } + str = str.slice(idx); + } + return false; +} +/** Like normalize(), but doesn't collapse "**\/.." when `globstar` is true. */ export function normalizeGlob(glob, { globstar = false } = {}) { + if (glob.match(/\0/g)) { + throw new Error(`Glob contains invalid characters: "${glob}"`); + } + if (!globstar) { + return normalize(glob); + } + const s = SEP_PATTERN.source; + const badParentPattern = new RegExp(`(?<=(${s}|^)\\*\\*${s})\\.\\.(?=${s}|$)`, "g"); + return normalize(glob.replace(badParentPattern, "\0")).replace(/\0/g, ".."); +} +/** Like join(), but doesn't collapse "**\/.." when `globstar` is true. */ export function joinGlobs(globs, { extended = true, globstar = false } = {}) { + if (!globstar || globs.length == 0) { + return join(...globs); + } + if (globs.length === 0) return "."; + let joined; + for (const glob of globs){ + const path = glob; + if (path.length > 0) { + if (!joined) joined = path; + else joined += `${SEP}${path}`; + } + } + if (!joined) return "."; + return normalizeGlob(joined, { + extended, + globstar + }); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE3MC4wL3BhdGgvZ2xvYi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDIyIHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBpc1dpbmRvd3MsIG9zVHlwZSB9IGZyb20gXCIuLi9fdXRpbC9vcy50c1wiO1xuaW1wb3J0IHsgU0VQLCBTRVBfUEFUVEVSTiB9IGZyb20gXCIuL3NlcGFyYXRvci50c1wiO1xuaW1wb3J0ICogYXMgX3dpbjMyIGZyb20gXCIuL3dpbjMyLnRzXCI7XG5pbXBvcnQgKiBhcyBfcG9zaXggZnJvbSBcIi4vcG9zaXgudHNcIjtcbmltcG9ydCB0eXBlIHsgT1NUeXBlIH0gZnJvbSBcIi4uL191dGlsL29zLnRzXCI7XG5cbmNvbnN0IHBhdGggPSBpc1dpbmRvd3MgPyBfd2luMzIgOiBfcG9zaXg7XG5jb25zdCB7IGpvaW4sIG5vcm1hbGl6ZSB9ID0gcGF0aDtcblxuZXhwb3J0IGludGVyZmFjZSBHbG9iT3B0aW9ucyB7XG4gIC8qKiBFeHRlbmRlZCBnbG9iIHN5bnRheC5cbiAgICogU2VlIGh0dHBzOi8vd3d3LmxpbnV4am91cm5hbC5jb20vY29udGVudC9iYXNoLWV4dGVuZGVkLWdsb2JiaW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7dHJ1ZX1cbiAgICovXG4gIGV4dGVuZGVkPzogYm9vbGVhbjtcbiAgLyoqIEdsb2JzdGFyIHN5bnRheC5cbiAgICogU2VlIGh0dHBzOi8vd3d3LmxpbnV4am91cm5hbC5jb20vY29udGVudC9nbG9ic3Rhci1uZXctYmFzaC1nbG9iYmluZy1vcHRpb24uXG4gICAqIElmIGZhbHNlLCBgKipgIGlzIHRyZWF0ZWQgbGlrZSBgKmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHt0cnVlfVxuICAgKi9cbiAgZ2xvYnN0YXI/OiBib29sZWFuO1xuICAvKiogV2hldGhlciBnbG9ic3RhciBzaG91bGQgYmUgY2FzZS1pbnNlbnNpdGl2ZS4gKi9cbiAgY2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbjtcbiAgLyoqIE9wZXJhdGluZyBzeXN0ZW0uIERlZmF1bHRzIHRvIHRoZSBuYXRpdmUgT1MuICovXG4gIG9zPzogT1NUeXBlO1xufVxuXG5leHBvcnQgdHlwZSBHbG9iVG9SZWdFeHBPcHRpb25zID0gR2xvYk9wdGlvbnM7XG5cbmNvbnN0IHJlZ0V4cEVzY2FwZUNoYXJzID0gW1xuICBcIiFcIixcbiAgXCIkXCIsXG4gIFwiKFwiLFxuICBcIilcIixcbiAgXCIqXCIsXG4gIFwiK1wiLFxuICBcIi5cIixcbiAgXCI9XCIsXG4gIFwiP1wiLFxuICBcIltcIixcbiAgXCJcXFxcXCIsXG4gIFwiXlwiLFxuICBcIntcIixcbiAgXCJ8XCIsXG5dO1xuY29uc3QgcmFuZ2VFc2NhcGVDaGFycyA9IFtcIi1cIiwgXCJcXFxcXCIsIFwiXVwiXTtcblxuLyoqIENvbnZlcnQgYSBnbG9iIHN0cmluZyB0byBhIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAqXG4gKiBUcmllcyB0byBtYXRjaCBiYXNoIGdsb2IgZXhwYW5zaW9uIGFzIGNsb3NlbHkgYXMgcG9zc2libGUuXG4gKlxuICogQmFzaWMgZ2xvYiBzeW50YXg6XG4gKiAtIGAqYCAtIE1hdGNoZXMgZXZlcnl0aGluZyB3aXRob3V0IGxlYXZpbmcgdGhlIHBhdGggc2VnbWVudC5cbiAqIC0gYD9gIC0gTWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3Rlci5cbiAqIC0gYHtmb28sYmFyfWAgLSBNYXRjaGVzIGBmb29gIG9yIGBiYXJgLlxuICogLSBgW2FiY2RdYCAtIE1hdGNoZXMgYGFgLCBgYmAsIGBjYCBvciBgZGAuXG4gKiAtIGBbYS1kXWAgLSBNYXRjaGVzIGBhYCwgYGJgLCBgY2Agb3IgYGRgLlxuICogLSBgWyFhYmNkXWAgLSBNYXRjaGVzIGFueSBzaW5nbGUgY2hhcmFjdGVyIGJlc2lkZXMgYGFgLCBgYmAsIGBjYCBvciBgZGAuXG4gKiAtIGBbWzo8Y2xhc3M+Ol1dYCAtIE1hdGNoZXMgYW55IGNoYXJhY3RlciBiZWxvbmdpbmcgdG8gYDxjbGFzcz5gLlxuICogICAgIC0gYFtbOmFsbnVtOl1dYCAtIE1hdGNoZXMgYW55IGRpZ2l0IG9yIGxldHRlci5cbiAqICAgICAtIGBbWzpkaWdpdDpdYWJjXWAgLSBNYXRjaGVzIGFueSBkaWdpdCwgYGFgLCBgYmAgb3IgYGNgLlxuICogICAgIC0gU2VlIGh0dHBzOi8vZmFjZWxlc3N1c2VyLmdpdGh1Yi5pby93Y21hdGNoL2dsb2IvI3Bvc2l4LWNoYXJhY3Rlci1jbGFzc2VzXG4gKiAgICAgICBmb3IgYSBjb21wbGV0ZSBsaXN0IG9mIHN1cHBvcnRlZCBjaGFyYWN0ZXIgY2xhc3Nlcy5cbiAqIC0gYFxcYCAtIEVzY2FwZXMgdGhlIG5leHQgY2hhcmFjdGVyIGZvciBhbiBgb3NgIG90aGVyIHRoYW4gYFwid2luZG93c1wiYC5cbiAqIC0gXFxgIC0gRXNjYXBlcyB0aGUgbmV4dCBjaGFyYWN0ZXIgZm9yIGBvc2Agc2V0IHRvIGBcIndpbmRvd3NcImAuXG4gKiAtIGAvYCAtIFBhdGggc2VwYXJhdG9yLlxuICogLSBgXFxgIC0gQWRkaXRpb25hbCBwYXRoIHNlcGFyYXRvciBvbmx5IGZvciBgb3NgIHNldCB0byBgXCJ3aW5kb3dzXCJgLlxuICpcbiAqIEV4dGVuZGVkIHN5bnRheDpcbiAqIC0gUmVxdWlyZXMgYHsgZXh0ZW5kZWQ6IHRydWUgfWAuXG4gKiAtIGA/KGZvb3xiYXIpYCAtIE1hdGNoZXMgMCBvciAxIGluc3RhbmNlIG9mIGB7Zm9vLGJhcn1gLlxuICogLSBgQChmb298YmFyKWAgLSBNYXRjaGVzIDEgaW5zdGFuY2Ugb2YgYHtmb28sYmFyfWAuIFRoZXkgYmVoYXZlIHRoZSBzYW1lLlxuICogLSBgKihmb298YmFyKWAgLSBNYXRjaGVzIF9uXyBpbnN0YW5jZXMgb2YgYHtmb28sYmFyfWAuXG4gKiAtIGArKGZvb3xiYXIpYCAtIE1hdGNoZXMgX24gPiAwXyBpbnN0YW5jZXMgb2YgYHtmb28sYmFyfWAuXG4gKiAtIGAhKGZvb3xiYXIpYCAtIE1hdGNoZXMgYW55dGhpbmcgb3RoZXIgdGhhbiBge2ZvbyxiYXJ9YC5cbiAqIC0gU2VlIGh0dHBzOi8vd3d3LmxpbnV4am91cm5hbC5jb20vY29udGVudC9iYXNoLWV4dGVuZGVkLWdsb2JiaW5nLlxuICpcbiAqIEdsb2JzdGFyIHN5bnRheDpcbiAqIC0gUmVxdWlyZXMgYHsgZ2xvYnN0YXI6IHRydWUgfWAuXG4gKiAtIGAqKmAgLSBNYXRjaGVzIGFueSBudW1iZXIgb2YgYW55IHBhdGggc2VnbWVudHMuXG4gKiAgICAgLSBNdXN0IGNvbXByaXNlIGl0cyBlbnRpcmUgcGF0aCBzZWdtZW50IGluIHRoZSBwcm92aWRlZCBnbG9iLlxuICogLSBTZWUgaHR0cHM6Ly93d3cubGludXhqb3VybmFsLmNvbS9jb250ZW50L2dsb2JzdGFyLW5ldy1iYXNoLWdsb2JiaW5nLW9wdGlvbi5cbiAqXG4gKiBOb3RlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqIC0gVGhlIGdlbmVyYXRlZCBgUmVnRXhwYCBpcyBhbmNob3JlZCBhdCBib3RoIHN0YXJ0IGFuZCBlbmQuXG4gKiAtIFJlcGVhdGluZyBhbmQgdHJhaWxpbmcgc2VwYXJhdG9ycyBhcmUgdG9sZXJhdGVkLiBUcmFpbGluZyBzZXBhcmF0b3JzIGluIHRoZVxuICogICBwcm92aWRlZCBnbG9iIGhhdmUgbm8gbWVhbmluZyBhbmQgYXJlIGRpc2NhcmRlZC5cbiAqIC0gQWJzb2x1dGUgZ2xvYnMgd2lsbCBvbmx5IG1hdGNoIGFic29sdXRlIHBhdGhzLCBldGMuXG4gKiAtIEVtcHR5IGdsb2JzIHdpbGwgbWF0Y2ggbm90aGluZy5cbiAqIC0gQW55IHNwZWNpYWwgZ2xvYiBzeW50YXggbXVzdCBiZSBjb250YWluZWQgdG8gb25lIHBhdGggc2VnbWVudC4gRm9yIGV4YW1wbGUsXG4gKiAgIGA/KGZvb3xiYXIvYmF6KWAgaXMgaW52YWxpZC4gVGhlIHNlcGFyYXRvciB3aWxsIHRha2UgcHJlY2VkZW5jZSBhbmQgdGhlXG4gKiAgIGZpcnN0IHNlZ21lbnQgZW5kcyB3aXRoIGFuIHVuY2xvc2VkIGdyb3VwLlxuICogLSBJZiBhIHBhdGggc2VnbWVudCBlbmRzIHdpdGggdW5jbG9zZWQgZ3JvdXBzIG9yIGEgZGFuZ2xpbmcgZXNjYXBlIHByZWZpeCwgYVxuICogICBwYXJzZSBlcnJvciBoYXMgb2NjdXJyZWQuIEV2ZXJ5IGNoYXJhY3RlciBmb3IgdGhhdCBzZWdtZW50IGlzIHRha2VuXG4gKiAgIGxpdGVyYWxseSBpbiB0aGlzIGV2ZW50LlxuICpcbiAqIExpbWl0YXRpb25zOlxuICogLSBBIG5lZ2F0aXZlIGdyb3VwIGxpa2UgYCEoZm9vfGJhcilgIHdpbGwgd3JvbmdseSBiZSBjb252ZXJ0ZWQgdG8gYSBuZWdhdGl2ZVxuICogICBsb29rLWFoZWFkIGZvbGxvd2VkIGJ5IGEgd2lsZGNhcmQuIFRoaXMgbWVhbnMgdGhhdCBgIShmb28pLmpzYCB3aWxsIHdyb25nbHlcbiAqICAgZmFpbCB0byBtYXRjaCBgZm9vYmFyLmpzYCwgZXZlbiB0aG91Z2ggYGZvb2JhcmAgaXMgbm90IGBmb29gLiBFZmZlY3RpdmVseSxcbiAqICAgYCEoZm9vfGJhcilgIGlzIHRyZWF0ZWQgbGlrZSBgIShAKGZvb3xiYXIpKilgLiBUaGlzIHdpbGwgd29yayBjb3JyZWN0bHkgaWZcbiAqICAgdGhlIGdyb3VwIG9jY3VycyBub3QgbmVzdGVkIGF0IHRoZSBlbmQgb2YgdGhlIHNlZ21lbnQuICovXG5leHBvcnQgZnVuY3Rpb24gZ2xvYlRvUmVnRXhwKFxuICBnbG9iOiBzdHJpbmcsXG4gIHtcbiAgICBleHRlbmRlZCA9IHRydWUsXG4gICAgZ2xvYnN0YXI6IGdsb2JzdGFyT3B0aW9uID0gdHJ1ZSxcbiAgICBvcyA9IG9zVHlwZSxcbiAgICBjYXNlSW5zZW5zaXRpdmUgPSBmYWxzZSxcbiAgfTogR2xvYlRvUmVnRXhwT3B0aW9ucyA9IHt9LFxuKTogUmVnRXhwIHtcbiAgaWYgKGdsb2IgPT0gXCJcIikge1xuICAgIHJldHVybiAvKD8hKS87XG4gIH1cblxuICBjb25zdCBzZXAgPSBvcyA9PSBcIndpbmRvd3NcIiA/IFwiKD86XFxcXFxcXFx8LykrXCIgOiBcIi8rXCI7XG4gIGNvbnN0IHNlcE1heWJlID0gb3MgPT0gXCJ3aW5kb3dzXCIgPyBcIig/OlxcXFxcXFxcfC8pKlwiIDogXCIvKlwiO1xuICBjb25zdCBzZXBzID0gb3MgPT0gXCJ3aW5kb3dzXCIgPyBbXCJcXFxcXCIsIFwiL1wiXSA6IFtcIi9cIl07XG4gIGNvbnN0IGdsb2JzdGFyID0gb3MgPT0gXCJ3aW5kb3dzXCJcbiAgICA/IFwiKD86W15cXFxcXFxcXC9dKig/OlxcXFxcXFxcfC98JCkrKSpcIlxuICAgIDogXCIoPzpbXi9dKig/Oi98JCkrKSpcIjtcbiAgY29uc3Qgd2lsZGNhcmQgPSBvcyA9PSBcIndpbmRvd3NcIiA/IFwiW15cXFxcXFxcXC9dKlwiIDogXCJbXi9dKlwiO1xuICBjb25zdCBlc2NhcGVQcmVmaXggPSBvcyA9PSBcIndpbmRvd3NcIiA/IFwiYFwiIDogXCJcXFxcXCI7XG5cbiAgLy8gUmVtb3ZlIHRyYWlsaW5nIHNlcGFyYXRvcnMuXG4gIGxldCBuZXdMZW5ndGggPSBnbG9iLmxlbmd0aDtcbiAgZm9yICg7IG5ld0xlbmd0aCA+IDEgJiYgc2Vwcy5pbmNsdWRlcyhnbG9iW25ld0xlbmd0aCAtIDFdKTsgbmV3TGVuZ3RoLS0pO1xuICBnbG9iID0gZ2xvYi5zbGljZSgwLCBuZXdMZW5ndGgpO1xuXG4gIGxldCByZWdFeHBTdHJpbmcgPSBcIlwiO1xuXG4gIC8vIFRlcm1pbmF0ZXMgY29ycmVjdGx5LiBUcnVzdCB0aGF0IGBqYCBpcyBpbmNyZW1lbnRlZCBldmVyeSBpdGVyYXRpb24uXG4gIGZvciAobGV0IGogPSAwOyBqIDwgZ2xvYi5sZW5ndGg7KSB7XG4gICAgbGV0IHNlZ21lbnQgPSBcIlwiO1xuICAgIGNvbnN0IGdyb3VwU3RhY2s6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IGluUmFuZ2UgPSBmYWxzZTtcbiAgICBsZXQgaW5Fc2NhcGUgPSBmYWxzZTtcbiAgICBsZXQgZW5kc1dpdGhTZXAgPSBmYWxzZTtcbiAgICBsZXQgaSA9IGo7XG5cbiAgICAvLyBUZXJtaW5hdGVzIHdpdGggYGlgIGF0IHRoZSBub24taW5jbHVzaXZlIGVuZCBvZiB0aGUgY3VycmVudCBzZWdtZW50LlxuICAgIGZvciAoOyBpIDwgZ2xvYi5sZW5ndGggJiYgIXNlcHMuaW5jbHVkZXMoZ2xvYltpXSk7IGkrKykge1xuICAgICAgaWYgKGluRXNjYXBlKSB7XG4gICAgICAgIGluRXNjYXBlID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGVzY2FwZUNoYXJzID0gaW5SYW5nZSA/IHJhbmdlRXNjYXBlQ2hhcnMgOiByZWdFeHBFc2NhcGVDaGFycztcbiAgICAgICAgc2VnbWVudCArPSBlc2NhcGVDaGFycy5pbmNsdWRlcyhnbG9iW2ldKSA/IGBcXFxcJHtnbG9iW2ldfWAgOiBnbG9iW2ldO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JbaV0gPT0gZXNjYXBlUHJlZml4KSB7XG4gICAgICAgIGluRXNjYXBlID0gdHJ1ZTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09IFwiW1wiKSB7XG4gICAgICAgIGlmICghaW5SYW5nZSkge1xuICAgICAgICAgIGluUmFuZ2UgPSB0cnVlO1xuICAgICAgICAgIHNlZ21lbnQgKz0gXCJbXCI7XG4gICAgICAgICAgaWYgKGdsb2JbaSArIDFdID09IFwiIVwiKSB7XG4gICAgICAgICAgICBpKys7XG4gICAgICAgICAgICBzZWdtZW50ICs9IFwiXlwiO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZ2xvYltpICsgMV0gPT0gXCJeXCIpIHtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIHNlZ21lbnQgKz0gXCJcXFxcXlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBlbHNlIGlmIChnbG9iW2kgKyAxXSA9PSBcIjpcIikge1xuICAgICAgICAgIGxldCBrID0gaSArIDE7XG4gICAgICAgICAgbGV0IHZhbHVlID0gXCJcIjtcbiAgICAgICAgICB3aGlsZSAoZ2xvYltrICsgMV0gIT0gbnVsbCAmJiBnbG9iW2sgKyAxXSAhPSBcIjpcIikge1xuICAgICAgICAgICAgdmFsdWUgKz0gZ2xvYltrICsgMV07XG4gICAgICAgICAgICBrKys7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChnbG9iW2sgKyAxXSA9PSBcIjpcIiAmJiBnbG9iW2sgKyAyXSA9PSBcIl1cIikge1xuICAgICAgICAgICAgaSA9IGsgKyAyO1xuICAgICAgICAgICAgaWYgKHZhbHVlID09IFwiYWxudW1cIikgc2VnbWVudCArPSBcIlxcXFxkQS1aYS16XCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSBcImFscGhhXCIpIHNlZ21lbnQgKz0gXCJBLVphLXpcIjtcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09IFwiYXNjaWlcIikgc2VnbWVudCArPSBcIlxceDAwLVxceDdGXCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSBcImJsYW5rXCIpIHNlZ21lbnQgKz0gXCJcXHQgXCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSBcImNudHJsXCIpIHNlZ21lbnQgKz0gXCJcXHgwMC1cXHgxRlxceDdGXCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSBcImRpZ2l0XCIpIHNlZ21lbnQgKz0gXCJcXFxcZFwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gXCJncmFwaFwiKSBzZWdtZW50ICs9IFwiXFx4MjEtXFx4N0VcIjtcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09IFwibG93ZXJcIikgc2VnbWVudCArPSBcImEtelwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gXCJwcmludFwiKSBzZWdtZW50ICs9IFwiXFx4MjAtXFx4N0VcIjtcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09IFwicHVuY3RcIikge1xuICAgICAgICAgICAgICBzZWdtZW50ICs9IFwiIVxcXCIjJCUmJygpKissXFxcXC0uLzo7PD0+P0BbXFxcXFxcXFxcXFxcXV5f4oCYe3x9flwiO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PSBcInNwYWNlXCIpIHNlZ21lbnQgKz0gXCJcXFxcc1xcdlwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gXCJ1cHBlclwiKSBzZWdtZW50ICs9IFwiQS1aXCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSBcIndvcmRcIikgc2VnbWVudCArPSBcIlxcXFx3XCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSBcInhkaWdpdFwiKSBzZWdtZW50ICs9IFwiXFxcXGRBLUZhLWZcIjtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2xvYltpXSA9PSBcIl1cIiAmJiBpblJhbmdlKSB7XG4gICAgICAgIGluUmFuZ2UgPSBmYWxzZTtcbiAgICAgICAgc2VnbWVudCArPSBcIl1cIjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChpblJhbmdlKSB7XG4gICAgICAgIGlmIChnbG9iW2ldID09IFwiXFxcXFwiKSB7XG4gICAgICAgICAgc2VnbWVudCArPSBgXFxcXFxcXFxgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNlZ21lbnQgKz0gZ2xvYltpXTtcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBnbG9iW2ldID09IFwiKVwiICYmIGdyb3VwU3RhY2subGVuZ3RoID4gMCAmJlxuICAgICAgICBncm91cFN0YWNrW2dyb3VwU3RhY2subGVuZ3RoIC0gMV0gIT0gXCJCUkFDRVwiXG4gICAgICApIHtcbiAgICAgICAgc2VnbWVudCArPSBcIilcIjtcbiAgICAgICAgY29uc3QgdHlwZSA9IGdyb3VwU3RhY2sucG9wKCkhO1xuICAgICAgICBpZiAodHlwZSA9PSBcIiFcIikge1xuICAgICAgICAgIHNlZ21lbnQgKz0gd2lsZGNhcmQ7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSAhPSBcIkBcIikge1xuICAgICAgICAgIHNlZ21lbnQgKz0gdHlwZTtcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBnbG9iW2ldID09IFwifFwiICYmIGdyb3VwU3RhY2subGVuZ3RoID4gMCAmJlxuICAgICAgICBncm91cFN0YWNrW2dyb3VwU3RhY2subGVuZ3RoIC0gMV0gIT0gXCJCUkFDRVwiXG4gICAgICApIHtcbiAgICAgICAgc2VnbWVudCArPSBcInxcIjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09IFwiK1wiICYmIGV4dGVuZGVkICYmIGdsb2JbaSArIDFdID09IFwiKFwiKSB7XG4gICAgICAgIGkrKztcbiAgICAgICAgZ3JvdXBTdGFjay5wdXNoKFwiK1wiKTtcbiAgICAgICAgc2VnbWVudCArPSBcIig/OlwiO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JbaV0gPT0gXCJAXCIgJiYgZXh0ZW5kZWQgJiYgZ2xvYltpICsgMV0gPT0gXCIoXCIpIHtcbiAgICAgICAgaSsrO1xuICAgICAgICBncm91cFN0YWNrLnB1c2goXCJAXCIpO1xuICAgICAgICBzZWdtZW50ICs9IFwiKD86XCI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2xvYltpXSA9PSBcIj9cIikge1xuICAgICAgICBpZiAoZXh0ZW5kZWQgJiYgZ2xvYltpICsgMV0gPT0gXCIoXCIpIHtcbiAgICAgICAgICBpKys7XG4gICAgICAgICAgZ3JvdXBTdGFjay5wdXNoKFwiP1wiKTtcbiAgICAgICAgICBzZWdtZW50ICs9IFwiKD86XCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VnbWVudCArPSBcIi5cIjtcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JbaV0gPT0gXCIhXCIgJiYgZXh0ZW5kZWQgJiYgZ2xvYltpICsgMV0gPT0gXCIoXCIpIHtcbiAgICAgICAgaSsrO1xuICAgICAgICBncm91cFN0YWNrLnB1c2goXCIhXCIpO1xuICAgICAgICBzZWdtZW50ICs9IFwiKD8hXCI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2xvYltpXSA9PSBcIntcIikge1xuICAgICAgICBncm91cFN0YWNrLnB1c2goXCJCUkFDRVwiKTtcbiAgICAgICAgc2VnbWVudCArPSBcIig/OlwiO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JbaV0gPT0gXCJ9XCIgJiYgZ3JvdXBTdGFja1tncm91cFN0YWNrLmxlbmd0aCAtIDFdID09IFwiQlJBQ0VcIikge1xuICAgICAgICBncm91cFN0YWNrLnBvcCgpO1xuICAgICAgICBzZWdtZW50ICs9IFwiKVwiO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JbaV0gPT0gXCIsXCIgJiYgZ3JvdXBTdGFja1tncm91cFN0YWNrLmxlbmd0aCAtIDFdID09IFwiQlJBQ0VcIikge1xuICAgICAgICBzZWdtZW50ICs9IFwifFwiO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JbaV0gPT0gXCIqXCIpIHtcbiAgICAgICAgaWYgKGV4dGVuZGVkICYmIGdsb2JbaSArIDFdID09IFwiKFwiKSB7XG4gICAgICAgICAgaSsrO1xuICAgICAgICAgIGdyb3VwU3RhY2sucHVzaChcIipcIik7XG4gICAgICAgICAgc2VnbWVudCArPSBcIig/OlwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHByZXZDaGFyID0gZ2xvYltpIC0gMV07XG4gICAgICAgICAgbGV0IG51bVN0YXJzID0gMTtcbiAgICAgICAgICB3aGlsZSAoZ2xvYltpICsgMV0gPT0gXCIqXCIpIHtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIG51bVN0YXJzKys7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IG5leHRDaGFyID0gZ2xvYltpICsgMV07XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZ2xvYnN0YXJPcHRpb24gJiYgbnVtU3RhcnMgPT0gMiAmJlxuICAgICAgICAgICAgWy4uLnNlcHMsIHVuZGVmaW5lZF0uaW5jbHVkZXMocHJldkNoYXIpICYmXG4gICAgICAgICAgICBbLi4uc2VwcywgdW5kZWZpbmVkXS5pbmNsdWRlcyhuZXh0Q2hhcilcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHNlZ21lbnQgKz0gZ2xvYnN0YXI7XG4gICAgICAgICAgICBlbmRzV2l0aFNlcCA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlZ21lbnQgKz0gd2lsZGNhcmQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBzZWdtZW50ICs9IHJlZ0V4cEVzY2FwZUNoYXJzLmluY2x1ZGVzKGdsb2JbaV0pID8gYFxcXFwke2dsb2JbaV19YCA6IGdsb2JbaV07XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9yIHVuY2xvc2VkIGdyb3VwcyBvciBhIGRhbmdsaW5nIGJhY2tzbGFzaC5cbiAgICBpZiAoZ3JvdXBTdGFjay5sZW5ndGggPiAwIHx8IGluUmFuZ2UgfHwgaW5Fc2NhcGUpIHtcbiAgICAgIC8vIFBhcnNlIGZhaWx1cmUuIFRha2UgYWxsIGNoYXJhY3RlcnMgZnJvbSB0aGlzIHNlZ21lbnQgbGl0ZXJhbGx5LlxuICAgICAgc2VnbWVudCA9IFwiXCI7XG4gICAgICBmb3IgKGNvbnN0IGMgb2YgZ2xvYi5zbGljZShqLCBpKSkge1xuICAgICAgICBzZWdtZW50ICs9IHJlZ0V4cEVzY2FwZUNoYXJzLmluY2x1ZGVzKGMpID8gYFxcXFwke2N9YCA6IGM7XG4gICAgICAgIGVuZHNXaXRoU2VwID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmVnRXhwU3RyaW5nICs9IHNlZ21lbnQ7XG4gICAgaWYgKCFlbmRzV2l0aFNlcCkge1xuICAgICAgcmVnRXhwU3RyaW5nICs9IGkgPCBnbG9iLmxlbmd0aCA/IHNlcCA6IHNlcE1heWJlO1xuICAgICAgZW5kc1dpdGhTZXAgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIFRlcm1pbmF0ZXMgd2l0aCBgaWAgYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IHNlZ21lbnQuXG4gICAgd2hpbGUgKHNlcHMuaW5jbHVkZXMoZ2xvYltpXSkpIGkrKztcblxuICAgIC8vIENoZWNrIHRoYXQgdGhlIG5leHQgdmFsdWUgb2YgYGpgIGlzIGluZGVlZCBoaWdoZXIgdGhhbiB0aGUgY3VycmVudCB2YWx1ZS5cbiAgICBpZiAoIShpID4gaikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkFzc2VydGlvbiBmYWlsdXJlOiBpID4gaiAocG90ZW50aWFsIGluZmluaXRlIGxvb3ApXCIpO1xuICAgIH1cbiAgICBqID0gaTtcbiAgfVxuXG4gIHJlZ0V4cFN0cmluZyA9IGBeJHtyZWdFeHBTdHJpbmd9JGA7XG4gIHJldHVybiBuZXcgUmVnRXhwKHJlZ0V4cFN0cmluZywgY2FzZUluc2Vuc2l0aXZlID8gXCJpXCIgOiBcIlwiKTtcbn1cblxuLyoqIFRlc3Qgd2hldGhlciB0aGUgZ2l2ZW4gc3RyaW5nIGlzIGEgZ2xvYiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzR2xvYihzdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBjaGFyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsgXCJ7XCI6IFwifVwiLCBcIihcIjogXCIpXCIsIFwiW1wiOiBcIl1cIiB9O1xuICBjb25zdCByZWdleCA9XG4gICAgL1xcXFwoLil8KF4hfFxcKnxcXD98W1xcXS4rKV1cXD98XFxbW15cXFxcXFxdXStcXF18XFx7W15cXFxcfV0rXFx9fFxcKFxcP1s6IT1dW15cXFxcKV0rXFwpfFxcKFtefF0rXFx8W15cXFxcKV0rXFwpKS87XG5cbiAgaWYgKHN0ciA9PT0gXCJcIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGxldCBtYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcblxuICB3aGlsZSAoKG1hdGNoID0gcmVnZXguZXhlYyhzdHIpKSkge1xuICAgIGlmIChtYXRjaFsyXSkgcmV0dXJuIHRydWU7XG4gICAgbGV0IGlkeCA9IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoO1xuXG4gICAgLy8gaWYgYW4gb3BlbiBicmFja2V0L2JyYWNlL3BhcmVuIGlzIGVzY2FwZWQsXG4gICAgLy8gc2V0IHRoZSBpbmRleCB0byB0aGUgbmV4dCBjbG9zaW5nIGNoYXJhY3RlclxuICAgIGNvbnN0IG9wZW4gPSBtYXRjaFsxXTtcbiAgICBjb25zdCBjbG9zZSA9IG9wZW4gPyBjaGFyc1tvcGVuXSA6IG51bGw7XG4gICAgaWYgKG9wZW4gJiYgY2xvc2UpIHtcbiAgICAgIGNvbnN0IG4gPSBzdHIuaW5kZXhPZihjbG9zZSwgaWR4KTtcbiAgICAgIGlmIChuICE9PSAtMSkge1xuICAgICAgICBpZHggPSBuICsgMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzdHIgPSBzdHIuc2xpY2UoaWR4KTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqIExpa2Ugbm9ybWFsaXplKCksIGJ1dCBkb2Vzbid0IGNvbGxhcHNlIFwiKipcXC8uLlwiIHdoZW4gYGdsb2JzdGFyYCBpcyB0cnVlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUdsb2IoXG4gIGdsb2I6IHN0cmluZyxcbiAgeyBnbG9ic3RhciA9IGZhbHNlIH06IEdsb2JPcHRpb25zID0ge30sXG4pOiBzdHJpbmcge1xuICBpZiAoZ2xvYi5tYXRjaCgvXFwwL2cpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBHbG9iIGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVyczogXCIke2dsb2J9XCJgKTtcbiAgfVxuICBpZiAoIWdsb2JzdGFyKSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZShnbG9iKTtcbiAgfVxuICBjb25zdCBzID0gU0VQX1BBVFRFUk4uc291cmNlO1xuICBjb25zdCBiYWRQYXJlbnRQYXR0ZXJuID0gbmV3IFJlZ0V4cChcbiAgICBgKD88PSgke3N9fF4pXFxcXCpcXFxcKiR7c30pXFxcXC5cXFxcLig/PSR7c318JClgLFxuICAgIFwiZ1wiLFxuICApO1xuICByZXR1cm4gbm9ybWFsaXplKGdsb2IucmVwbGFjZShiYWRQYXJlbnRQYXR0ZXJuLCBcIlxcMFwiKSkucmVwbGFjZSgvXFwwL2csIFwiLi5cIik7XG59XG5cbi8qKiBMaWtlIGpvaW4oKSwgYnV0IGRvZXNuJ3QgY29sbGFwc2UgXCIqKlxcLy4uXCIgd2hlbiBgZ2xvYnN0YXJgIGlzIHRydWUuICovXG5leHBvcnQgZnVuY3Rpb24gam9pbkdsb2JzKFxuICBnbG9iczogc3RyaW5nW10sXG4gIHsgZXh0ZW5kZWQgPSB0cnVlLCBnbG9ic3RhciA9IGZhbHNlIH06IEdsb2JPcHRpb25zID0ge30sXG4pOiBzdHJpbmcge1xuICBpZiAoIWdsb2JzdGFyIHx8IGdsb2JzLmxlbmd0aCA9PSAwKSB7XG4gICAgcmV0dXJuIGpvaW4oLi4uZ2xvYnMpO1xuICB9XG4gIGlmIChnbG9icy5sZW5ndGggPT09IDApIHJldHVybiBcIi5cIjtcbiAgbGV0IGpvaW5lZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBmb3IgKGNvbnN0IGdsb2Igb2YgZ2xvYnMpIHtcbiAgICBjb25zdCBwYXRoID0gZ2xvYjtcbiAgICBpZiAocGF0aC5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAoIWpvaW5lZCkgam9pbmVkID0gcGF0aDtcbiAgICAgIGVsc2Ugam9pbmVkICs9IGAke1NFUH0ke3BhdGh9YDtcbiAgICB9XG4gIH1cbiAgaWYgKCFqb2luZWQpIHJldHVybiBcIi5cIjtcbiAgcmV0dXJuIG5vcm1hbGl6ZUdsb2Ioam9pbmVkLCB7IGV4dGVuZGVkLCBnbG9ic3RhciB9KTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBRXJDLFNBQVMsU0FBUyxFQUFFLE1BQU0sUUFBUSxpQkFBaUI7QUFDbkQsU0FBUyxHQUFHLEVBQUUsV0FBVyxRQUFRLGlCQUFpQjtBQUNsRCxZQUFZLFlBQVksYUFBYTtBQUNyQyxZQUFZLFlBQVksYUFBYTtBQUdyQyxNQUFNLE9BQU8sWUFBWSxTQUFTO0FBQ2xDLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUc7QUF3QjVCLE1BQU0sb0JBQW9CO0VBQ3hCO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7Q0FDRDtBQUNELE1BQU0sbUJBQW1CO0VBQUM7RUFBSztFQUFNO0NBQUk7QUFFekM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0REFzRDRELEdBQzVELE9BQU8sU0FBUyxhQUNkLElBQVksRUFDWixFQUNFLFdBQVcsSUFBSSxFQUNmLFVBQVUsaUJBQWlCLElBQUksRUFDL0IsS0FBSyxNQUFNLEVBQ1gsa0JBQWtCLEtBQUssRUFDSCxHQUFHLENBQUMsQ0FBQztFQUUzQixJQUFJLFFBQVEsSUFBSTtJQUNkLE9BQU87RUFDVDtFQUVBLE1BQU0sTUFBTSxNQUFNLFlBQVksZ0JBQWdCO0VBQzlDLE1BQU0sV0FBVyxNQUFNLFlBQVksZ0JBQWdCO0VBQ25ELE1BQU0sT0FBTyxNQUFNLFlBQVk7SUFBQztJQUFNO0dBQUksR0FBRztJQUFDO0dBQUk7RUFDbEQsTUFBTSxXQUFXLE1BQU0sWUFDbkIsZ0NBQ0E7RUFDSixNQUFNLFdBQVcsTUFBTSxZQUFZLGNBQWM7RUFDakQsTUFBTSxlQUFlLE1BQU0s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 +// denoCacheMetadata=13715640747363587899,14674386616214901222
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/a3f479751556a01612701b1f61c1b91e6e4a6424cada6e6d346ece2472b8016f.js b/vendor/gen/https/deno.land/a3f479751556a01612701b1f61c1b91e6e4a6424cada6e6d346ece2472b8016f.js new file mode 100644 index 0000000..575e0f3 --- /dev/null +++ b/vendor/gen/https/deno.land/a3f479751556a01612701b1f61c1b91e6e4a6424cada6e6d346ece2472b8016f.js @@ -0,0 +1,3 @@ +export * from "jsr:@std/cli@1.0.17"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvZGVwcy9jbGkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcImpzcjpAc3RkL2NsaUAxLjAuMTdcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQiJ9 +// denoCacheMetadata=3798902321297602519,18233081866375542493
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/a58ec68acb97ed1d285f9d18d22e00f3d70ef42f0bb5d9a73a4a133059023ecd.js b/vendor/gen/https/deno.land/a58ec68acb97ed1d285f9d18d22e00f3d70ef42f0bb5d9a73a4a133059023ecd.js new file mode 100644 index 0000000..06274e5 --- /dev/null +++ b/vendor/gen/https/deno.land/a58ec68acb97ed1d285f9d18d22e00f3d70ef42f0bb5d9a73a4a133059023ecd.js @@ -0,0 +1,13 @@ +/** Add a header to prevent the browser cache */ export function noCache() { + return async (request, next)=>{ + const response = await next(request); + const { headers } = response; + headers.set("cache-control", "no-cache no-store must-revalidate"); + headers.delete("last-modified"); + headers.delete("etag"); + return response; + }; +} +export default noCache; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvbWlkZGxld2FyZXMvbm9fY2FjaGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBNaWRkbGV3YXJlIH0gZnJvbSBcIi4uL2NvcmUvc2VydmVyLnRzXCI7XG5cbi8qKiBBZGQgYSBoZWFkZXIgdG8gcHJldmVudCB0aGUgYnJvd3NlciBjYWNoZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vQ2FjaGUoKTogTWlkZGxld2FyZSB7XG4gIHJldHVybiBhc3luYyAocmVxdWVzdCwgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbmV4dChyZXF1ZXN0KTtcbiAgICBjb25zdCB7IGhlYWRlcnMgfSA9IHJlc3BvbnNlO1xuICAgIGhlYWRlcnMuc2V0KFwiY2FjaGUtY29udHJvbFwiLCBcIm5vLWNhY2hlIG5vLXN0b3JlIG11c3QtcmV2YWxpZGF0ZVwiKTtcbiAgICBoZWFkZXJzLmRlbGV0ZShcImxhc3QtbW9kaWZpZWRcIik7XG4gICAgaGVhZGVycy5kZWxldGUoXCJldGFnXCIpO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBub0NhY2hlO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLDhDQUE4QyxHQUM5QyxPQUFPLFNBQVM7RUFDZCxPQUFPLE9BQU8sU0FBUztJQUNyQixNQUFNLFdBQVcsTUFBTSxLQUFLO0lBQzVCLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRztJQUNwQixRQUFRLEdBQUcsQ0FBQyxpQkFBaUI7SUFDN0IsUUFBUSxNQUFNLENBQUM7SUFDZixRQUFRLE1BQU0sQ0FBQztJQUVmLE9BQU87RUFDVDtBQUNGO0FBRUEsZUFBZSxRQUFRIn0= +// denoCacheMetadata=14972636640210327153,16648725534655931314
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/a5c3947b8fadf72708c17d7cc459b4ada54f0a242d45d5bee3e31add18f859ba.js b/vendor/gen/https/deno.land/a5c3947b8fadf72708c17d7cc459b4ada54f0a242d45d5bee3e31add18f859ba.js new file mode 100644 index 0000000..9469760 --- /dev/null +++ b/vendor/gen/https/deno.land/a5c3947b8fadf72708c17d7cc459b4ada54f0a242d45d5bee3e31add18f859ba.js @@ -0,0 +1,3 @@ +export * from "npm:lightningcss-wasm@1.30.1"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvZGVwcy9saWdodG5pbmdjc3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIm5wbTpsaWdodG5pbmdjc3Mtd2FzbUAxLjMwLjFcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQiJ9 +// denoCacheMetadata=12725670638620619445,14592442366043746897
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/a6003d14dce8cf272c965072ada755d0997d02091192e648ad9d6fec3d6568c2.js b/vendor/gen/https/deno.land/a6003d14dce8cf272c965072ada755d0997d02091192e648ad9d6fec3d6568c2.js new file mode 100644 index 0000000..92b3d9f --- /dev/null +++ b/vendor/gen/https/deno.land/a6003d14dce8cf272c965072ada755d0997d02091192e648ad9d6fec3d6568c2.js @@ -0,0 +1,50 @@ +export { nodesFromString } from "./deserialize.ts"; +export * from "./dom/node.ts"; +export * from "./dom/element.ts"; +export * from "./dom/document.ts"; +export * from "./dom/document-fragment.ts"; +export * from "./dom/dom-parser.ts"; +export * from "./dom/elements/html-template-element.ts"; +export { disableCodeGeneration as denoDomDisableQuerySelectorCodeGeneration } from "./dom/selectors/selectors.ts"; +// Re-export private constructors without constructor signature +import { CharacterData as ConstructibleCharacterData, Node as ConstructibleNode } from "./dom/node.ts"; +import { HTMLDocument as ConstructibleHTMLDocument } from "./dom/document.ts"; +import { Attr as ConstructibleAttr, Element as ConstructibleElement } from "./dom/element.ts"; +export const Node = ConstructibleNode; +export const HTMLDocument = ConstructibleHTMLDocument; +export const CharacterData = ConstructibleCharacterData; +export const Element = ConstructibleElement; +export const Attr = ConstructibleAttr; +export { NodeListPublic as NodeList } from "./dom/node-list.ts"; +export { HTMLCollectionPublic as HTMLCollection } from "./dom/html-collection.ts"; +import { NodeList } from "./dom/node-list.ts"; +import { HTMLCollection } from "./dom/html-collection.ts"; +// Prevent childNodes and HTMLCollections from being seen as an arrays +const oldHasInstance = Array[Symbol.hasInstance]; +Object.defineProperty(Array, Symbol.hasInstance, { + value (value) { + switch(value?.constructor){ + case HTMLCollection: + case NodeList: + return false; + default: + return oldHasInstance.call(this, value); + } + }, + configurable: true +}); +const oldIsArray = Array.isArray; +Object.defineProperty(Array, "isArray", { + value: (value)=>{ + switch(value?.constructor){ + case HTMLCollection: + case NodeList: + return false; + default: + return oldIsArray.call(Array, value); + } + }, + configurable: true +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvZGVub19kb21AdjAuMS40OS9zcmMvYXBpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IG5vZGVzRnJvbVN0cmluZyB9IGZyb20gXCIuL2Rlc2VyaWFsaXplLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kb20vbm9kZS50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZG9tL2VsZW1lbnQudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RvbS9kb2N1bWVudC50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZG9tL2RvY3VtZW50LWZyYWdtZW50LnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kb20vZG9tLXBhcnNlci50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZG9tL2VsZW1lbnRzL2h0bWwtdGVtcGxhdGUtZWxlbWVudC50c1wiO1xuZXhwb3J0IHsgZGlzYWJsZUNvZGVHZW5lcmF0aW9uIGFzIGRlbm9Eb21EaXNhYmxlUXVlcnlTZWxlY3RvckNvZGVHZW5lcmF0aW9uIH0gZnJvbSBcIi4vZG9tL3NlbGVjdG9ycy9zZWxlY3RvcnMudHNcIjtcblxuLy8gUmUtZXhwb3J0IHByaXZhdGUgY29uc3RydWN0b3JzIHdpdGhvdXQgY29uc3RydWN0b3Igc2lnbmF0dXJlXG5pbXBvcnQge1xuICBDaGFyYWN0ZXJEYXRhIGFzIENvbnN0cnVjdGlibGVDaGFyYWN0ZXJEYXRhLFxuICBOb2RlIGFzIENvbnN0cnVjdGlibGVOb2RlLFxufSBmcm9tIFwiLi9kb20vbm9kZS50c1wiO1xuXG5pbXBvcnQgeyBIVE1MRG9jdW1lbnQgYXMgQ29uc3RydWN0aWJsZUhUTUxEb2N1bWVudCB9IGZyb20gXCIuL2RvbS9kb2N1bWVudC50c1wiO1xuXG5pbXBvcnQge1xuICBBdHRyIGFzIENvbnN0cnVjdGlibGVBdHRyLFxuICBFbGVtZW50IGFzIENvbnN0cnVjdGlibGVFbGVtZW50LFxufSBmcm9tIFwiLi9kb20vZWxlbWVudC50c1wiO1xuXG5leHBvcnQgY29uc3QgTm9kZTpcbiAgJiBQaWNrPFxuICAgIHR5cGVvZiBDb25zdHJ1Y3RpYmxlTm9kZSxcbiAgICBrZXlvZiB0eXBlb2YgQ29uc3RydWN0aWJsZU5vZGVcbiAgPlxuICAmIEZ1bmN0aW9uID0gQ29uc3RydWN0aWJsZU5vZGU7XG5leHBvcnQgdHlwZSBOb2RlID0gQ29uc3RydWN0aWJsZU5vZGU7XG5cbmV4cG9ydCBjb25zdCBIVE1MRG9jdW1lbnQ6XG4gICYgUGljazxcbiAgICB0eXBlb2YgQ29uc3RydWN0aWJsZUhUTUxEb2N1bWVudCxcbiAgICBrZXlvZiB0eXBlb2YgQ29uc3RydWN0aWJsZUhUTUxEb2N1bWVudFxuICA+XG4gICYgRnVuY3Rpb24gPSBDb25zdHJ1Y3RpYmxlSFRNTERvY3VtZW50O1xuZXhwb3J0IHR5cGUgSFRNTERvY3VtZW50ID0gQ29uc3RydWN0aWJsZUhUTUxEb2N1bWVudDtcblxuZXhwb3J0IGNvbnN0IENoYXJhY3RlckRhdGE6XG4gICYgUGljazxcbiAgICB0eXBlb2YgQ29uc3RydWN0aWJsZUNoYXJhY3RlckRhdGEsXG4gICAga2V5b2YgdHlwZW9mIENvbnN0cnVjdGlibGVDaGFyYWN0ZXJEYXRhXG4gID5cbiAgJiBGdW5jdGlvbiA9IENvbnN0cnVjdGlibGVDaGFyYWN0ZXJEYXRhO1xuZXhwb3J0IHR5cGUgQ2hhcmFjdGVyRGF0YSA9IENvbnN0cnVjdGlibGVDaGFyYWN0ZXJEYXRhO1xuXG5leHBvcnQgY29uc3QgRWxlbWVudDpcbiAgJiBQaWNrPFxuICAgIHR5cGVvZiBDb25zdHJ1Y3RpYmxlRWxlbWVudCxcbiAgICBrZXlvZiB0eXBlb2YgQ29uc3RydWN0aWJsZUVsZW1lbnRcbiAgPlxuICAmIEZ1bmN0aW9uID0gQ29uc3RydWN0aWJsZUVsZW1lbnQ7XG5leHBvcnQgdHlwZSBFbGVtZW50ID0gQ29uc3RydWN0aWJsZUVsZW1lbnQ7XG5cbmV4cG9ydCBjb25zdCBBdHRyOlxuICAmIFBpY2s8XG4gICAgdHlwZW9mIENvbnN0cnVjdGlibGVBdHRyLFxuICAgIGtleW9mIHR5cGVvZiBDb25zdHJ1Y3RpYmxlQXR0clxuICA+XG4gICYgRnVuY3Rpb24gPSBDb25zdHJ1Y3RpYmxlQXR0cjtcbmV4cG9ydCB0eXBlIEF0dHIgPSBDb25zdHJ1Y3RpYmxlQXR0cjtcblxuZXhwb3J0IHsgTm9kZUxpc3RQdWJsaWMgYXMgTm9kZUxpc3QgfSBmcm9tIFwiLi9kb20vbm9kZS1saXN0LnRzXCI7XG5leHBvcnQgeyBIVE1MQ29sbGVjdGlvblB1YmxpYyBhcyBIVE1MQ29sbGVjdGlvbiB9IGZyb20gXCIuL2RvbS9odG1sLWNvbGxlY3Rpb24udHNcIjtcblxuaW1wb3J0IHsgTm9kZUxpc3QgfSBmcm9tIFwiLi9kb20vbm9kZS1saXN0LnRzXCI7XG5pbXBvcnQgeyBIVE1MQ29sbGVjdGlvbiB9IGZyb20gXCIuL2RvbS9odG1sLWNvbGxlY3Rpb24udHNcIjtcblxuLy8gUHJldmVudCBjaGlsZE5vZGVzIGFuZCBIVE1MQ29sbGVjdGlvbnMgZnJvbSBiZWluZyBzZWVuIGFzIGFuIGFycmF5c1xuY29uc3Qgb2xkSGFzSW5zdGFuY2UgPSBBcnJheVtTeW1ib2wuaGFzSW5zdGFuY2VdO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LCBTeW1ib2wuaGFzSW5zdGFuY2UsIHtcbiAgdmFsdWUodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHN3aXRjaCAodmFsdWU/LmNvbnN0cnVjdG9yKSB7XG4gICAgICBjYXNlIEhUTUxDb2xsZWN0aW9uOlxuICAgICAgY2FzZSBOb2RlTGlzdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG9sZEhhc0luc3RhbmNlLmNhbGwodGhpcywgdmFsdWUpO1xuICAgIH1cbiAgfSxcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxufSk7XG5cbmNvbnN0IG9sZElzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LCBcImlzQXJyYXlcIiwge1xuICB2YWx1ZTogKHZhbHVlOiBhbnkpOiBib29sZWFuID0+IHtcbiAgICBzd2l0Y2ggKHZhbHVlPy5jb25zdHJ1Y3Rvcikge1xuICAgICAgY2FzZSBIVE1MQ29sbGVjdGlvbjpcbiAgICAgIGNhc2UgTm9kZUxpc3Q6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBvbGRJc0FycmF5LmNhbGwoQXJyYXksIHZhbHVlKTtcbiAgICB9XG4gIH0sXG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbn0pO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsZUFBZSxRQUFRLG1CQUFtQjtBQUNuRCxjQUFjLGdCQUFnQjtBQUM5QixjQUFjLG1CQUFtQjtBQUNqQyxjQUFjLG9CQUFvQjtBQUNsQyxjQUFjLDZCQUE2QjtBQUMzQyxjQUFjLHNCQUFzQjtBQUNwQyxjQUFjLDBDQUEwQztBQUN4RCxTQUFTLHlCQUF5Qix5Q0FBeUMsUUFBUSwrQkFBK0I7QUFFbEgsK0RBQStEO0FBQy9ELFNBQ0UsaUJBQWlCLDBCQUEwQixFQUMzQyxRQUFRLGlCQUFpQixRQUNwQixnQkFBZ0I7QUFFdkIsU0FBUyxnQkFBZ0IseUJBQXlCLFFBQVEsb0JBQW9CO0FBRTlFLFNBQ0UsUUFBUSxpQkFBaUIsRUFDekIsV0FBVyxvQkFBb0IsUUFDMUIsbUJBQW1CO0FBRTFCLE9BQU8sTUFBTSxPQUtFLGtCQUFrQjtBQUdqQyxPQUFPLE1BQU0sZUFLRSwwQkFBMEI7QUFHekMsT0FBTyxNQUFNLGdCQUtFLDJCQUEyQjtBQUcxQyxPQUFPLE1BQU0sVUFLRSxxQkFBcUI7QUFHcEMsT0FBTyxNQUFNLE9BS0Usa0JBQWtCO0FBR2pDLFNBQVMsa0JBQWtCLFFBQVEsUUFBUSxxQkFBcUI7QUFDaEUsU0FBUyx3QkFBd0IsY0FBYyxRQUFRLDJCQUEyQjtBQUVsRixTQUFTLFFBQVEsUUFBUSxxQkFBcUI7QUFDOUMsU0FBUyxjQUFjLFFBQVEsMkJBQTJCO0FBRTFELHNFQUFzRTtBQUN0RSxNQUFNLGlCQUFpQixLQUFLLENBQUMsT0FBTyxXQUFXLENBQUM7QUFDaEQsT0FBTyxjQUFjLENBQUMsT0FBTyxPQUFPLFdBQVcsRUFBRTtFQUMvQyxPQUFNLEtBQVU7SUFDZCxPQUFRLE9BQU87TUFDYixLQUFLO01BQ0wsS0FBSztRQUNILE9BQU87TUFDVDtRQUNFLE9BQU8sZUFBZSxJQUFJLENBQUMsSUFBSSxFQUFFO0lBQ3JDO0VBQ0Y7RUFDQSxjQUFjO0FBQ2hCO0FBRUEsTUFBTSxhQUFhLE1BQU0sT0FBTztBQUNoQyxPQUFPLGNBQWMsQ0FBQyxPQUFPLFdBQVc7RUFDdEMsT0FBTyxDQUFDO0lBQ04sT0FBUSxPQUFPO01BQ2IsS0FBSztNQUNMLEtBQUs7UUFDSCxPQUFPO01BQ1Q7UUFDRSxPQUFPLFdBQVcsSUFBSSxDQUFDLE9BQU87SUFDbEM7RUFDRjtFQUNBLGNBQWM7QUFDaEIifQ== +// denoCacheMetadata=6292900515365798811,15825073840933386796
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/a628841e2dca4f32cd805688d9e166dce1486b5a5a98a154bfdb428724423c69.js b/vendor/gen/https/deno.land/a628841e2dca4f32cd805688d9e166dce1486b5a5a98a154bfdb428724423c69.js new file mode 100644 index 0000000..48df2ac --- /dev/null +++ b/vendor/gen/https/deno.land/a628841e2dca4f32cd805688d9e166dce1486b5a5a98a154bfdb428724423c69.js @@ -0,0 +1,3 @@ +/** Parser options. */ +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvZmxhZ3MvdHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIFBhcnNlciBvcHRpb25zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJzZUZsYWdzT3B0aW9uczxcbiAgVEZsYWdPcHRpb25zIGV4dGVuZHMgRmxhZ09wdGlvbnMgPSBGbGFnT3B0aW9ucyxcbj4ge1xuICBmbGFncz86IEFycmF5PFRGbGFnT3B0aW9ucz47XG4gIHBhcnNlPzogVHlwZUhhbmRsZXI8dW5rbm93bj47XG4gIG9wdGlvbj86IChvcHRpb246IFRGbGFnT3B0aW9ucywgdmFsdWU/OiB1bmtub3duKSA9PiB2b2lkO1xuICBzdG9wRWFybHk/OiBib29sZWFuO1xuICBzdG9wT25Vbmtub3duPzogYm9vbGVhbjtcbiAgYWxsb3dFbXB0eT86IGJvb2xlYW47XG4gIGlnbm9yZURlZmF1bHRzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGRvdHRlZD86IGJvb2xlYW47XG59XG5cbi8qKiBGbGFnIG9wdGlvbnMuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsYWdPcHRpb25zIGV4dGVuZHMgQXJndW1lbnRPcHRpb25zIHtcbiAgbmFtZTogc3RyaW5nO1xuICBhcmdzPzogQXJndW1lbnRPcHRpb25zW107XG4gIGFsaWFzZXM/OiBzdHJpbmdbXTtcbiAgc3RhbmRhbG9uZT86IGJvb2xlYW47XG4gIGRlZmF1bHQ/OiBEZWZhdWx0VmFsdWU7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgZGVwZW5kcz86IHN0cmluZ1tdO1xuICBjb25mbGljdHM/OiBzdHJpbmdbXTtcbiAgdmFsdWU/OiBWYWx1ZUhhbmRsZXI7XG4gIGNvbGxlY3Q/OiBib29sZWFuO1xuICBlcXVhbHNTaWduPzogYm9vbGVhbjtcbn1cblxuLyoqIEZsYWcgYXJndW1lbnQgZGVmaW5pdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXJndW1lbnRPcHRpb25zIHtcbiAgdHlwZT86IEFyZ3VtZW50VHlwZSB8IHN0cmluZztcbiAgb3B0aW9uYWxWYWx1ZT86IGJvb2xlYW47XG4gIHJlcXVpcmVkVmFsdWU/OiBib29sZWFuO1xuICB2YXJpYWRpYz86IGJvb2xlYW47XG4gIGxpc3Q/OiBib29sZWFuO1xuICBzZXBhcmF0b3I/OiBzdHJpbmc7XG59XG5cbi8qKiBBdmFpbGFibGUgYnVpbGQtaW4gYXJndW1lbnQgdHlwZXMuICovXG5leHBvcnQgdHlwZSBBcmd1bWVudFR5cGUgPSBcInN0cmluZ1wiIHwgXCJib29sZWFuXCIgfCBcIm51bWJlclwiIHwgXCJpbnRlZ2VyXCI7XG5cbi8qKiBEZWZhdWx0IGZsYWcgdmFsdWUgKi9cbmV4cG9ydCB0eXBlIERlZmF1bHRWYWx1ZTxUVmFsdWUgPSB1bmtub3duPiA9XG4gIHwgVFZhbHVlXG4gIHwgRGVmYXVsdFZhbHVlSGFuZGxlcjxUVmFsdWU+O1xuXG5leHBvcnQgdHlwZSBEZWZhdWx0VmFsdWVIYW5kbGVyPFRWYWx1ZSA9IHVua25vd24+ID0gKCkgPT4gVFZhbHVlO1xuXG4vKiogVmFsdWUgaGFuZGxlciBmb3IgY3VzdG9tIHZhbHVlIHByb2Nlc3NpbmcuICovXG4vLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuZXhwb3J0IHR5cGUgVmFsdWVIYW5kbGVyPFRWYWx1ZSA9IGFueSwgVFJldHVybiA9IFRWYWx1ZT4gPSAoXG4gIHZhbDogVFZhbHVlLFxuICBwcmV2aW91cz86IFRSZXR1cm4sXG4pID0+IFRSZXR1cm47XG5cbi8qKiBSZXN1bHQgb2YgdGhlIHBhcnNlRmxhZ3MgbWV0aG9kLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJzZUZsYWdzQ29udGV4dDxcbiAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgVEZsYWdzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIFRTdGFuZGFsb25lT3B0aW9uIGV4dGVuZHMgRmxhZ09wdGlvbnMgPSBGbGFnT3B0aW9ucyxcbj4ge1xuICBmbGFnczogVEZsYWdzO1xuICB1bmtub3duOiBBcnJheTxzdHJpbmc+O1xuICBsaXRlcmFsOiBBcnJheTxzdHJpbmc+O1xuICBzdGFuZGFsb25lPzogVFN0YW5kYWxvbmVPcHRpb247XG4gIHN0b3BFYXJseTogYm9vbGVhbjtcbiAgc3RvcE9uVW5rbm93bjogYm9vbGVhbjtcbn1cblxuLyoqIFR5cGUgZGV0YWlscy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXJndW1lbnRWYWx1ZSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG4vKiogQ3VzdG9tIHR5cGUgaGFuZGxlci9wYXJzZXIuICovXG5leHBvcnQgdHlwZSBUeXBlSGFuZGxlcjxUUmV0dXJuID0gdW5rbm93bj4gPSAoYXJnOiBBcmd1bWVudFZhbHVlKSA9PiBUUmV0dXJuO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQixHQUNwQiJ9 +// denoCacheMetadata=588608111998653176,17034436489048596845
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/a6ec6f3510616248b0edd4442b5f244a0722fba2ed52a645812ad07b0eac1d20.js b/vendor/gen/https/deno.land/a6ec6f3510616248b0edd4442b5f244a0722fba2ed52a645812ad07b0eac1d20.js new file mode 100644 index 0000000..ce1041f --- /dev/null +++ b/vendor/gen/https/deno.land/a6ec6f3510616248b0edd4442b5f244a0722fba2ed52a645812ad07b0eac1d20.js @@ -0,0 +1,8 @@ +export * from "./ansi.ts"; +export * from "./ansi_escapes.ts"; +export * from "./chain.ts"; +export * from "./colors.ts"; +export * from "./cursor_position.ts"; +export * from "./tty.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvYW5zaS9tb2QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vYW5zaS50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vYW5zaV9lc2NhcGVzLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jaGFpbi50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29sb3JzLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jdXJzb3JfcG9zaXRpb24udHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R0eS50c1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWTtBQUMxQixjQUFjLG9CQUFvQjtBQUNsQyxjQUFjLGFBQWE7QUFDM0IsY0FBYyxjQUFjO0FBQzVCLGNBQWMsdUJBQXVCO0FBQ3JDLGNBQWMsV0FBVyJ9 +// denoCacheMetadata=3751638740744540889,6518290959901677304
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/a72ad68e4135a8e5e626af97b8df6af86a6c4fdff3ec2d0c68854cc6424ac29f.js b/vendor/gen/https/deno.land/a72ad68e4135a8e5e626af97b8df6af86a6c4fdff3ec2d0c68854cc6424ac29f.js new file mode 100644 index 0000000..19e80e7 --- /dev/null +++ b/vendor/gen/https/deno.land/a72ad68e4135a8e5e626af97b8df6af86a6c4fdff3ec2d0c68854cc6424ac29f.js @@ -0,0 +1,240 @@ +import { getDescription } from "../_utils.ts"; +import { FileType } from "../types/file.ts"; +/** Generates zsh completions script. */ export class ZshCompletionsGenerator { + cmd; + actions; + /** Generates zsh completions script for given command. */ static generate(cmd) { + return new ZshCompletionsGenerator(cmd).generate(); + } + constructor(cmd){ + this.cmd = cmd; + this.actions = new Map(); + } + /** Generates zsh completions code. */ generate() { + const path = this.cmd.getPath(); + const name = this.cmd.getName(); + const version = this.cmd.getVersion() ? ` v${this.cmd.getVersion()}` : ""; + return `#!/usr/bin/env zsh +# zsh completion support for ${path}${version} + +autoload -U is-at-least + +# shellcheck disable=SC2154 +(( $+functions[__${replaceSpecialChars(name)}_complete] )) || +function __${replaceSpecialChars(name)}_complete { + local name="$1"; shift + local action="$1"; shift + integer ret=1 + local -a values + local expl lines + _tags "$name" + while _tags; do + if _requested "$name"; then + # shellcheck disable=SC2034 + lines="$(${name} completions complete "\${action}" "\${@}")" + values=("\${(ps:\\n:)lines}") + if (( \${#values[@]} )); then + while _next_label "$name" expl "$action"; do + compadd -S '' "\${expl[@]}" "\${values[@]}" + done + fi + fi + done +} + +${this.generateCompletions(this.cmd).trim()} + +# _${replaceSpecialChars(path)} "\${@}" + +compdef _${replaceSpecialChars(path)} ${path}`; + } + /** Generates zsh completions method for given command and child commands. */ generateCompletions(command, path = "") { + if (!command.hasCommands(false) && !command.hasOptions(false) && !command.hasArguments()) { + return ""; + } + path = (path ? path + " " : "") + command.getName(); + return `# shellcheck disable=SC2154 +(( $+functions[_${replaceSpecialChars(path)}] )) || +function _${replaceSpecialChars(path)}() {` + (!command.getParent() ? ` + local state` : "") + this.generateCommandCompletions(command, path) + this.generateSubCommandCompletions(command, path) + this.generateArgumentCompletions(command, path) + this.generateActions(command) + `\n}\n\n` + command.getCommands(false).filter((subCommand)=>subCommand !== command).map((subCommand)=>this.generateCompletions(subCommand, path)).join(""); + } + generateCommandCompletions(command, path) { + const commands = command.getCommands(false); + let completions = commands.map((subCommand)=>`'${subCommand.getName()}:${subCommand.getShortDescription()// escape single quotes + .replace(/'/g, "'\"'\"'")}'`).join("\n "); + if (completions) { + completions = ` + local -a commands + # shellcheck disable=SC2034 + commands=( + ${completions} + ) + _describe 'command' commands`; + } + // only complete first argument, rest arguments are completed with _arguments. + if (command.hasArguments()) { + const completionsPath = path.split(" ").slice(1).join(" "); + const arg = command.getArguments()[0]; + const action = this.addAction(arg, completionsPath); + if (action && command.getCompletion(arg.action)) { + completions += `\n __${replaceSpecialChars(this.cmd.getName())}_complete ${action.arg.name} ${action.arg.action} ${action.cmd}`; + } + } + if (completions) { + completions = `\n\n function _commands() {${completions}\n }`; + } + return completions; + } + generateSubCommandCompletions(command, path) { + if (command.hasCommands(false)) { + const actions = command.getCommands(false).map((command)=>`${command.getName()}) _${replaceSpecialChars(path + " " + command.getName())} ;;`).join("\n "); + return `\n + function _command_args() { + case "\${words[1]}" in\n ${actions}\n esac + }`; + } + return ""; + } + generateArgumentCompletions(command, path) { + /* clear actions from previously parsed command. */ this.actions.clear(); + const options = this.generateOptions(command, path); + let argIndex = 0; + // @TODO: add stop early option: -A "-*" + // http://zsh.sourceforge.net/Doc/Release/Completion-System.html + let argsCommand = "\n\n _arguments -w -s -S -C"; + if (command.hasOptions()) { + argsCommand += ` \\\n ${options.join(" \\\n ")}`; + } + if (command.hasCommands(false) || command.getArguments().filter((arg)=>command.getCompletion(arg.action)).length) { + argsCommand += ` \\\n '${++argIndex}:command:_commands'`; + } + if (command.hasArguments() || command.hasCommands(false)) { + const args = []; + // first argument is completed together with commands. + for (const arg of command.getArguments().slice(1)){ + const type = command.getType(arg.type); + if (type && type.handler instanceof FileType) { + const fileCompletions = this.getFileCompletions(type); + if (arg.variadic) { + argIndex++; + for(let i = 0; i < 5; i++){ + args.push(`${argIndex + i}${arg.optionalValue ? "::" : ":"}${arg.name}:${fileCompletions}`); + } + } else { + args.push(`${++argIndex}${arg.optionalValue ? "::" : ":"}${arg.name}:${fileCompletions}`); + } + } else { + const completionsPath = path.split(" ").slice(1).join(" "); + const action = this.addAction(arg, completionsPath); + args.push(`${++argIndex}${arg.optionalValue ? "::" : ":"}${arg.name}:->${action.name}`); + } + } + argsCommand += args.map((arg)=>`\\\n '${arg}'`).join(""); + if (command.hasCommands(false)) { + argsCommand += ` \\\n '*::sub command:->command_args'`; + } + } + return argsCommand; + } + generateOptions(command, path) { + const options = []; + const cmdArgs = path.split(" "); + const _baseName = cmdArgs.shift(); + const completionsPath = cmdArgs.join(" "); + const excludedFlags = command.getOptions(false).map((option)=>option.standalone ? option.flags : false).flat().filter((flag)=>typeof flag === "string"); + for (const option of command.getOptions(false)){ + options.push(this.generateOption(command, option, completionsPath, excludedFlags)); + } + return options; + } + generateOption(command, option, completionsPath, excludedOptions) { + let args = ""; + for (const arg of option.args){ + const type = command.getType(arg.type); + const optionalValue = arg.optionalValue ? "::" : ":"; + if (type && type.handler instanceof FileType) { + const fileCompletions = this.getFileCompletions(type); + args += `${optionalValue}${arg.name}:${fileCompletions}`; + } else { + const action = this.addAction(arg, completionsPath); + args += `${optionalValue}${arg.name}:->${action.name}`; + } + } + const description = getDescription(option.description, true)// escape brackets and quotes + .replace(/\[/g, "\\[").replace(/]/g, "\\]").replace(/"/g, '\\"').replace(/'/g, "'\"'\"'"); + const collect = option.collect ? "*" : ""; + const equalsSign = option.equalsSign ? "=" : ""; + const flags = option.flags.map((flag)=>`${flag}${equalsSign}`); + let result = ""; + if (option.standalone) { + result += "'(- *)'"; + } else { + const excludedFlags = [ + ...excludedOptions + ]; + if (option.conflicts?.length) { + excludedFlags.push(...option.conflicts.map((opt)=>"--" + opt.replace(/^--/, ""))); + } + if (!option.collect) { + excludedFlags.push(...option.flags); + } + if (excludedFlags.length) { + result += `'(${excludedFlags.join(" ")})'`; + } + } + if (collect || flags.length > 1) { + result += `{${collect}${flags.join(",")}}`; + } else { + result += `${flags.join(",")}`; + } + return `${result}'[${description}]${args}'`; + } + getFileCompletions(type) { + if (!(type.handler instanceof FileType)) { + return ""; + } + return "_files"; + // const fileOpts = type.handler.getOptions(); + // let fileCompletions = "_files"; + // if (fileOpts.dirsOnly) { + // fileCompletions += " -/"; + // } + // if (fileOpts.pattern) { + // fileCompletions += ' -g "' + fileOpts.pattern + '"'; + // } + // if (fileOpts.ignore) { + // fileCompletions += " -F " + fileOpts.ignore; + // } + // return fileCompletions; + } + addAction(arg, cmd) { + const action = `${arg.name}-${arg.action}`; + if (!this.actions.has(action)) { + this.actions.set(action, { + arg: arg, + label: `${arg.name}: ${arg.action}`, + name: action, + cmd + }); + } + return this.actions.get(action); + } + generateActions(command) { + let actions = []; + if (this.actions.size) { + actions = Array.from(this.actions).map(([name, action])=>`${name}) __${replaceSpecialChars(this.cmd.getName())}_complete ${action.arg.name} ${action.arg.action} ${action.cmd} ;;`); + } + if (command.hasCommands(false)) { + actions.unshift(`command_args) _command_args ;;`); + } + if (actions.length) { + return `\n\n case "$state" in\n ${actions.join("\n ")}\n esac`; + } + return ""; + } +} +function replaceSpecialChars(str) { + return str.replace(/[^a-zA-Z0-9]/g, "_"); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC9jb21wbGV0aW9ucy9fenNoX2NvbXBsZXRpb25zX2dlbmVyYXRvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXREZXNjcmlwdGlvbiB9IGZyb20gXCIuLi9fdXRpbHMudHNcIjtcbmltcG9ydCB0eXBlIHsgQ29tbWFuZCB9IGZyb20gXCIuLi9jb21tYW5kLnRzXCI7XG5pbXBvcnQgdHlwZSB7IEFyZ3VtZW50LCBPcHRpb24sIFR5cGVEZWYgfSBmcm9tIFwiLi4vdHlwZXMudHNcIjtcbmltcG9ydCB7IEZpbGVUeXBlIH0gZnJvbSBcIi4uL3R5cGVzL2ZpbGUudHNcIjtcblxuaW50ZXJmYWNlIElDb21wbGV0aW9uQWN0aW9uIHtcbiAgYXJnOiBBcmd1bWVudDtcbiAgbGFiZWw6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBjbWQ6IHN0cmluZztcbn1cblxuLyoqIEdlbmVyYXRlcyB6c2ggY29tcGxldGlvbnMgc2NyaXB0LiAqL1xuZXhwb3J0IGNsYXNzIFpzaENvbXBsZXRpb25zR2VuZXJhdG9yIHtcbiAgcHJpdmF0ZSBhY3Rpb25zOiBNYXA8c3RyaW5nLCBJQ29tcGxldGlvbkFjdGlvbj4gPSBuZXcgTWFwKCk7XG5cbiAgLyoqIEdlbmVyYXRlcyB6c2ggY29tcGxldGlvbnMgc2NyaXB0IGZvciBnaXZlbiBjb21tYW5kLiAqL1xuICBwdWJsaWMgc3RhdGljIGdlbmVyYXRlKGNtZDogQ29tbWFuZCkge1xuICAgIHJldHVybiBuZXcgWnNoQ29tcGxldGlvbnNHZW5lcmF0b3IoY21kKS5nZW5lcmF0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY21kOiBDb21tYW5kKSB7fVxuXG4gIC8qKiBHZW5lcmF0ZXMgenNoIGNvbXBsZXRpb25zIGNvZGUuICovXG4gIHByaXZhdGUgZ2VuZXJhdGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5jbWQuZ2V0UGF0aCgpO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmNtZC5nZXROYW1lKCk7XG4gICAgY29uc3QgdmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jbWQuZ2V0VmVyc2lvbigpXG4gICAgICA/IGAgdiR7dGhpcy5jbWQuZ2V0VmVyc2lvbigpfWBcbiAgICAgIDogXCJcIjtcblxuICAgIHJldHVybiBgIyEvdXNyL2Jpbi9lbnYgenNoXG4jIHpzaCBjb21wbGV0aW9uIHN1cHBvcnQgZm9yICR7cGF0aH0ke3ZlcnNpb259XG5cbmF1dG9sb2FkIC1VIGlzLWF0LWxlYXN0XG5cbiMgc2hlbGxjaGVjayBkaXNhYmxlPVNDMjE1NFxuKCggJCtmdW5jdGlvbnNbX18ke3JlcGxhY2VTcGVjaWFsQ2hhcnMobmFtZSl9X2NvbXBsZXRlXSApKSB8fFxuZnVuY3Rpb24gX18ke3JlcGxhY2VTcGVjaWFsQ2hhcnMobmFtZSl9X2NvbXBsZXRlIHtcbiAgbG9jYWwgbmFtZT1cIiQxXCI7IHNoaWZ0XG4gIGxvY2FsIGFjdGlvbj1cIiQxXCI7IHNoaWZ0XG4gIGludGVnZXIgcmV0PTFcbiAgbG9jYWwgLWEgdmFsdWVzXG4gIGxvY2FsIGV4cGwgbGluZXNcbiAgX3RhZ3MgXCIkbmFtZVwiXG4gIHdoaWxlIF90YWdzOyBkb1xuICAgIGlmIF9yZXF1ZXN0ZWQgXCIkbmFtZVwiOyB0aGVuXG4gICAgICAjIHNoZWxsY2hlY2sgZGlzYWJsZT1TQzIwMzRcbiAgICAgIGxpbmVzPVwiJCgke25hbWV9IGNvbXBsZXRpb25zIGNvbXBsZXRlIFwiXFwke2FjdGlvbn1cIiBcIlxcJHtAfVwiKVwiXG4gICAgICB2YWx1ZXM9KFwiXFwkeyhwczpcXFxcbjopbGluZXN9XCIpXG4gICAgICBpZiAoKCBcXCR7I3ZhbHVlc1tAXX0gKSk7IHRoZW5cbiAgICAgICAgd2hpbGUgX25leHRfbGFiZWwgXCIkbmFtZVwiIGV4cGwgXCIkYWN0aW9uXCI7IGRvXG4gICAgICAgICAgY29tcGFkZCAtUyAnJyBcIlxcJHtleHBsW0BdfVwiIFwiXFwke3ZhbHVlc1tAXX1cIlxuICAgICAgICBkb25lXG4gICAgICBmaVxuICAgIGZpXG4gIGRvbmVcbn1cblxuJHt0aGlzLmdlbmVyYXRlQ29tcGxldGlvbnModGhpcy5jbWQpLnRyaW0oKX1cblxuIyBfJHtyZXBsYWNlU3BlY2lhbENoYXJzKHBhdGgpfSBcIlxcJHtAfVwiXG5cbmNvbXBkZWYgXyR7cmVwbGFjZVNwZWNpYWxDaGFycyhwYXRoKX0gJHtwYXRofWA7XG4gIH1cblxuICAvKiogR2VuZXJhdGVzIHpzaCBjb21wbGV0aW9ucyBtZXRob2QgZm9yIGdpdmVuIGNvbW1hbmQgYW5kIGNoaWxkIGNvbW1hbmRzLiAqL1xuICBwcml2YXRlIGdlbmVyYXRlQ29tcGxldGlvbnMoY29tbWFuZDogQ29tbWFuZCwgcGF0aCA9IFwiXCIpOiBzdHJpbmcge1xuICAgIGlmIChcbiAgICAgICFjb21tYW5kLmhhc0NvbW1hbmRzKGZhbHNlKSAmJiAhY29tbWFuZC5oYXNPcHRpb25zKGZhbHNlKSAmJlxuICAgICAgIWNvbW1hbmQuaGFzQXJndW1lbnRzKClcbiAgICApIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIHBhdGggPSAocGF0aCA/IHBhdGggKyBcIiBcIiA6IFwiXCIpICsgY29tbWFuZC5nZXROYW1lKCk7XG5cbiAgICByZXR1cm4gYCMgc2hlbGxjaGVjayBkaXNhYmxlPVNDMjE1NFxuKCggJCtmdW5jdGlvbnNbXyR7cmVwbGFjZVNwZWNpYWxDaGFycyhwYXRoKX1dICkpIHx8XG5mdW5jdGlvbiBfJHtyZXBsYWNlU3BlY2lhbENoYXJzKHBhdGgpfSgpIHtgICtcbiAgICAgICghY29tbWFuZC5nZXRQYXJlbnQoKVxuICAgICAgICA/IGBcbiAgbG9jYWwgc3RhdGVgXG4gICAgICAgIDogXCJcIikgK1xuICAgICAgdGhpcy5nZW5lcmF0ZUNvbW1hbmRDb21wbGV0aW9ucyhjb21tYW5kLCBwYXRoKSArXG4gICAgICB0aGlzLmdlbmVyYXRlU3ViQ29tbWFuZENvbXBsZXRpb25zKGNvbW1hbmQsIHBhdGgpICtcbiAgICAgIHRoaXMuZ2VuZXJhdGVBcmd1bWVudENvbXBsZXRpb25zKGNvbW1hbmQsIHBhdGgpICtcbiAgICAgIHRoaXMuZ2VuZXJhdGVBY3Rpb25zKGNvbW1hbmQpICtcbiAgICAgIGBcXG59XFxuXFxuYCArXG4gICAgICBjb21tYW5kLmdldENvbW1hbmRzKGZhbHNlKVxuICAgICAgICAuZmlsdGVyKChzdWJDb21tYW5kOiBDb21tYW5kKSA9PiBzdWJDb21tYW5kICE9PSBjb21tYW5kKVxuICAgICAgICAubWFwKChzdWJDb21tYW5kOiBDb21tYW5kKSA9PlxuICAgICAgICAgIHRoaXMuZ2VuZXJhdGVDb21wbGV0aW9ucyhzdWJDb21tYW5kLCBwYXRoKVxuICAgICAgICApXG4gICAgICAgIC5qb2luKFwiXCIpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUNvbW1hbmRDb21wbGV0aW9ucyhjb21tYW5kOiBDb21tYW5kLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvbW1hbmRzID0gY29tbWFuZC5nZXRDb21tYW5kcyhmYWxzZSk7XG5cbiAgICBsZXQgY29tcGxldGlvbnM6IHN0cmluZyA9IGNvbW1hbmRzXG4gICAgICAubWFwKChzdWJDb21tYW5kOiBDb21tYW5kKSA9PlxuICAgICAgICBgJyR7c3ViQ29tbWFuZC5nZXROYW1lKCl9OiR7XG4gICAgICAgICAgc3ViQ29tbWFuZC5nZXRTaG9ydERlc2NyaXB0aW9uKClcbiAgICAgICAgICAgIC8vIGVzY2FwZSBzaW5nbGUgcXVvdGVzXG4gICAgICAgICAgICAucmVwbGFjZSgvJy9nLCBcIidcXFwiJ1xcXCInXCIpXG4gICAgICAgIH0nYFxuICAgICAgKVxuICAgICAgLmpvaW4oXCJcXG4gICAgICBcIik7XG5cbiAgICBpZiAoY29tcGxldGlvbnMpIHtcbiAgICAgIGNvbXBsZXRpb25zID0gYFxuICAgIGxvY2FsIC1hIGNvbW1hbmRzXG4gICAgIyBzaGVsbGNoZWNrIGRpc2FibGU9U0MyMDM0XG4gICAgY29tbWFuZHM9KFxuICAgICAgJHtjb21wbGV0aW9uc31cbiAgICApXG4gICAgX2Rlc2NyaWJlICdjb21tYW5kJyBjb21tYW5kc2A7XG4gICAgfVxuXG4gICAgLy8gb25seSBjb21wbGV0ZSBmaXJzdCBhcmd1bWVudCwgcmVzdCBhcmd1bWVudHMgYXJlIGNvbXBsZXRlZCB3aXRoIF9hcmd1bWVudHMuXG4gICAgaWYgKGNvbW1hbmQuaGFzQXJndW1lbnRzKCkpIHtcbiAgICAgIGNvbnN0IGNvbXBsZXRpb25zUGF0aDogc3RyaW5nID0gcGF0aC5zcGxpdChcIiBcIikuc2xpY2UoMSkuam9pbihcIiBcIik7XG4gICAgICBjb25zdCBhcmc6IEFyZ3VtZW50ID0gY29tbWFuZC5nZXRBcmd1bWVudHMoKVswXTtcbiAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuYWRkQWN0aW9uKGFyZywgY29tcGxldGlvbnNQYXRoKTtcbiAgICAgIGlmIChhY3Rpb24gJiYgY29tbWFuZC5nZXRDb21wbGV0aW9uKGFyZy5hY3Rpb24pKSB7XG4gICAgICAgIGNvbXBsZXRpb25zICs9IGBcXG4gICAgX18ke1xuICAgICAgICAgIHJlcGxhY2VTcGVjaWFsQ2hhcnModGhpcy5jbWQuZ2V0TmFtZSgpKVxuICAgICAgICB9X2NvbXBsZXRlICR7YWN0aW9uLmFyZy5uYW1lfSAke2FjdGlvbi5hcmcuYWN0aW9ufSAke2FjdGlvbi5jbWR9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29tcGxldGlvbnMpIHtcbiAgICAgIGNvbXBsZXRpb25zID0gYFxcblxcbiAgZnVuY3Rpb24gX2NvbW1hbmRzKCkgeyR7Y29tcGxldGlvbnN9XFxuICB9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGxldGlvbnM7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlU3ViQ29tbWFuZENvbXBsZXRpb25zKFxuICAgIGNvbW1hbmQ6IENvbW1hbmQsXG4gICAgcGF0aDogc3RyaW5nLFxuICApOiBzdHJpbmcge1xuICAgIGlmIChjb21tYW5kLmhhc0NvbW1hbmRzKGZhbHNlKSkge1xuICAgICAgY29uc3QgYWN0aW9uczogc3RyaW5nID0gY29tbWFuZFxuICAgICAgICAuZ2V0Q29tbWFuZHMoZmFsc2UpXG4gICAgICAgIC5tYXAoKGNvbW1hbmQ6IENvbW1hbmQpID0+XG4gICAgICAgICAgYCR7Y29tbWFuZC5nZXROYW1lKCl9KSBfJHtcbiAgICAgICAgICAgIHJlcGxhY2VTcGVjaWFsQ2hhcnMocGF0aCArIFwiIFwiICsgY29tbWFuZC5nZXROYW1lKCkpXG4gICAgICAgICAgfSA7O2BcbiAgICAgICAgKVxuICAgICAgICAuam9pbihcIlxcbiAgICAgIFwiKTtcblxuICAgICAgcmV0dXJuIGBcXG5cbiAgZnVuY3Rpb24gX2NvbW1hbmRfYXJncygpIHtcbiAgICBjYXNlIFwiXFwke3dvcmRzWzFdfVwiIGluXFxuICAgICAgJHthY3Rpb25zfVxcbiAgICBlc2FjXG4gIH1gO1xuICAgIH1cblxuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUFyZ3VtZW50Q29tcGxldGlvbnMoY29tbWFuZDogQ29tbWFuZCwgcGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvKiBjbGVhciBhY3Rpb25zIGZyb20gcHJldmlvdXNseSBwYXJzZWQgY29tbWFuZC4gKi9cbiAgICB0aGlzLmFjdGlvbnMuY2xlYXIoKTtcblxuICAgIGNvbnN0IG9wdGlvbnM6IHN0cmluZ1tdID0gdGhpcy5nZW5lcmF0ZU9wdGlvbnMoY29tbWFuZCwgcGF0aCk7XG5cbiAgICBsZXQgYXJnSW5kZXggPSAwO1xuICAgIC8vIEBUT0RPOiBhZGQgc3RvcCBlYXJseSBvcHRpb246IC1BIFwiLSpcIlxuICAgIC8vIGh0dHA6Ly96c2guc291cmNlZm9yZ2UubmV0L0RvYy9SZWxlYXNlL0NvbXBsZXRpb24tU3lzdGVtLmh0bWxcbiAgICBsZXQgYXJnc0NvbW1hbmQgPSBcIlxcblxcbiAgX2FyZ3VtZW50cyAtdyAtcyAtUyAtQ1wiO1xuXG4gICAgaWYgKGNvbW1hbmQuaGFzT3B0aW9ucygpKSB7XG4gICAgICBhcmdzQ29tbWFuZCArPSBgIFxcXFxcXG4gICAgJHtvcHRpb25zLmpvaW4oXCIgXFxcXFxcbiAgICBcIil9YDtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBjb21tYW5kLmhhc0NvbW1hbmRzKGZhbHNlKSB8fCAoXG4gICAgICAgIGNvbW1hbmQuZ2V0QXJndW1lbnRzKClcbiAgICAgICAgICAuZmlsdGVyKChhcmcpID0+IGNvbW1hbmQuZ2V0Q29tcGxldGlvbihhcmcuYWN0aW9uKSkubGVuZ3RoXG4gICAgICApXG4gICAgKSB7XG4gICAgICBhcmdzQ29tbWFuZCArPSBgIFxcXFxcXG4gICAgJyR7KythcmdJbmRleH06Y29tbWFuZDpfY29tbWFuZHMnYDtcbiAgICB9XG5cbiAgICBpZiAoY29tbWFuZC5oYXNBcmd1bWVudHMoKSB8fCBjb21tYW5kLmhhc0NvbW1hbmRzKGZhbHNlKSkge1xuICAgICAgY29uc3QgYXJnczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgLy8gZmlyc3QgYXJndW1lbnQgaXMgY29tcGxldGVkIHRvZ2V0aGVyIHdpdGggY29tbWFuZHMuXG4gICAgICBmb3IgKGNvbnN0IGFyZyBvZiBjb21tYW5kLmdldEFyZ3VtZW50cygpLnNsaWNlKDEpKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBjb21tYW5kLmdldFR5cGUoYXJnLnR5cGUpO1xuICAgICAgICBpZiAodHlwZSAmJiB0eXBlLmhhbmRsZXIgaW5zdGFuY2VvZiBGaWxlVHlwZSkge1xuICAgICAgICAgIGNvbnN0IGZpbGVDb21wbGV0aW9ucyA9IHRoaXMuZ2V0RmlsZUNvbXBsZXRpb25zKHR5cGUpO1xuICAgICAgICAgIGlmIChhcmcudmFyaWFkaWMpIHtcbiAgICAgICAgICAgIGFyZ0luZGV4Kys7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgICAgICAgICAgICBhcmdzLnB1c2goXG4gICAgICAgICAgICAgICAgYCR7YXJnSW5kZXggKyBpfSR7XG4gICAgICAgICAgICAgICAgICBhcmcub3B0aW9uYWxWYWx1ZSA/IFwiOjpcIiA6IFwiOlwiXG4gICAgICAgICAgICAgICAgfSR7YXJnLm5hbWV9OiR7ZmlsZUNvbXBsZXRpb25zfWAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFyZ3MucHVzaChcbiAgICAgICAgICAgICAgYCR7KythcmdJbmRleH0ke1xuICAgICAgICAgICAgICAgIGFyZy5vcHRpb25hbFZhbHVlID8gXCI6OlwiIDogXCI6XCJcbiAgICAgICAgICAgICAgfSR7YXJnLm5hbWV9OiR7ZmlsZUNvbXBsZXRpb25zfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBjb21wbGV0aW9uc1BhdGg6IHN0cmluZyA9IHBhdGguc3BsaXQoXCIgXCIpLnNsaWNlKDEpLmpvaW4oXCIgXCIpO1xuICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuYWRkQWN0aW9uKGFyZywgY29tcGxldGlvbnNQYXRoKTtcbiAgICAgICAgICBhcmdzLnB1c2goXG4gICAgICAgICAgICBgJHsrK2FyZ0luZGV4fSR7XG4gICAgICAgICAgICAgIGFyZy5vcHRpb25hbFZhbHVlID8gXCI6OlwiIDogXCI6XCJcbiAgICAgICAgICAgIH0ke2FyZy5uYW1lfTotPiR7YWN0aW9uLm5hbWV9YCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGFyZ3NDb21tYW5kICs9IGFyZ3MubWFwKChhcmc6IHN0cmluZykgPT4gYFxcXFxcXG4gICAgJyR7YXJnfSdgKS5qb2luKFwiXCIpO1xuXG4gICAgICBpZiAoY29tbWFuZC5oYXNDb21tYW5kcyhmYWxzZSkpIHtcbiAgICAgICAgYXJnc0NvbW1hbmQgKz0gYCBcXFxcXFxuICAgICcqOjpzdWIgY29tbWFuZDotPmNvbW1hbmRfYXJncydgO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhcmdzQ29tbWFuZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVPcHRpb25zKGNvbW1hbmQ6IENvbW1hbmQsIHBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IG9wdGlvbnM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgY21kQXJnczogc3RyaW5nW10gPSBwYXRoLnNwbGl0KFwiIFwiKTtcbiAgICBjb25zdCBfYmFzZU5hbWU6IHN0cmluZyA9IGNtZEFyZ3Muc2hpZnQoKSBhcyBzdHJpbmc7XG4gICAgY29uc3QgY29tcGxldGlvbnNQYXRoOiBzdHJpbmcgPSBjbWRBcmdzLmpvaW4oXCIgXCIpO1xuXG4gICAgY29uc3QgZXhjbHVkZWRGbGFnczogc3RyaW5nW10gPSBjb21tYW5kLmdldE9wdGlvbnMoZmFsc2UpXG4gICAgICAubWFwKChvcHRpb24pID0+IG9wdGlvbi5zdGFuZGFsb25lID8gb3B0aW9uLmZsYWdzIDogZmFsc2UpXG4gICAgICAuZmxhdCgpXG4gICAgICAuZmlsdGVyKChmbGFnKSA9PiB0eXBlb2YgZmxhZyA9PT0gXCJzdHJpbmdcIikgYXMgc3RyaW5nW107XG5cbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBjb21tYW5kLmdldE9wdGlvbnMoZmFsc2UpKSB7XG4gICAgICBvcHRpb25zLnB1c2goXG4gICAgICAgIHRoaXMuZ2VuZXJhdGVPcHRpb24oY29tbWFuZCwgb3B0aW9uLCBjb21wbGV0aW9uc1BhdGgsIGV4Y2x1ZGVkRmxhZ3MpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVPcHRpb24oXG4gICAgY29tbWFuZDogQ29tbWFuZCxcbiAgICBvcHRpb246IE9wdGlvbixcbiAgICBjb21wbGV0aW9uc1BhdGg6IHN0cmluZyxcbiAgICBleGNsdWRlZE9wdGlvbnM6IHN0cmluZ1tdLFxuICApOiBzdHJpbmcge1xuICAgIGxldCBhcmdzID0gXCJcIjtcbiAgICBmb3IgKGNvbnN0IGFyZyBvZiBvcHRpb24uYXJncykge1xuICAgICAgY29uc3QgdHlwZSA9IGNvbW1hbmQuZ2V0VHlwZShhcmcudHlwZSk7XG4gICAgICBjb25zdCBvcHRpb25hbFZhbHVlID0gYXJnLm9wdGlvbmFsVmFsdWUgPyBcIjo6XCIgOiBcIjpcIjtcbiAgICAgIGlmICh0eXBlICYmIHR5cGUuaGFuZGxlciBpbnN0YW5jZW9mIEZpbGVUeXBlKSB7XG4gICAgICAgIGNvbnN0IGZpbGVDb21wbGV0aW9ucyA9IHRoaXMuZ2V0RmlsZUNvbXBsZXRpb25zKHR5cGUpO1xuICAgICAgICBhcmdzICs9IGAke29wdGlvbmFsVmFsdWV9JHthcmcubmFtZX06JHtmaWxlQ29tcGxldGlvbnN9YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuYWRkQWN0aW9uKGFyZywgY29tcGxldGlvbnNQYXRoKTtcbiAgICAgICAgYXJncyArPSBgJHtvcHRpb25hbFZhbHVlfSR7YXJnLm5hbWV9Oi0+JHthY3Rpb24ubmFtZX1gO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBkZXNjcmlwdGlvbjogc3RyaW5nID0gZ2V0RGVzY3JpcHRpb24ob3B0aW9uLmRlc2NyaXB0aW9uLCB0cnVlKVxuICAgICAgLy8gZXNjYXBlIGJyYWNrZXRzIGFuZCBxdW90ZXNcbiAgICAgIC5yZXBsYWNlKC9cXFsvZywgXCJcXFxcW1wiKVxuICAgICAgLnJlcGxhY2UoL10vZywgXCJcXFxcXVwiKVxuICAgICAgLnJlcGxhY2UoL1wiL2csICdcXFxcXCInKVxuICAgICAgLnJlcGxhY2UoLycvZywgXCInXFxcIidcXFwiJ1wiKTtcblxuICAgIGNvbnN0IGNvbGxlY3Q6IHN0cmluZyA9IG9wdGlvbi5jb2xsZWN0ID8gXCIqXCIgOiBcIlwiO1xuICAgIGNvbnN0IGVxdWFsc1NpZ24gPSBvcHRpb24uZXF1YWxzU2lnbiA/IFwiPVwiIDogXCJcIjtcbiAgICBjb25zdCBmbGFncyA9IG9wdGlvbi5mbGFncy5tYXAoKGZsYWcpID0+IGAke2ZsYWd9JHtlcXVhbHNTaWdufWApO1xuICAgIGxldCByZXN1bHQgPSBcIlwiO1xuXG4gICAgaWYgKG9wdGlvbi5zdGFuZGFsb25lKSB7XG4gICAgICByZXN1bHQgKz0gXCInKC0gKiknXCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGV4Y2x1ZGVkRmxhZ3MgPSBbLi4uZXhjbHVkZWRPcHRpb25zXTtcblxuICAgICAgaWYgKG9wdGlvbi5jb25mbGljdHM/Lmxlbmd0aCkge1xuICAgICAgICBleGNsdWRlZEZsYWdzLnB1c2goXG4gICAgICAgICAgLi4ub3B0aW9uLmNvbmZsaWN0cy5tYXAoKG9wdCkgPT4gXCItLVwiICsgb3B0LnJlcGxhY2UoL14tLS8sIFwiXCIpKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmICghb3B0aW9uLmNvbGxlY3QpIHtcbiAgICAgICAgZXhjbHVkZWRGbGFncy5wdXNoKC4uLm9wdGlvbi5mbGFncyk7XG4gICAgICB9XG4gICAgICBpZiAoZXhjbHVkZWRGbGFncy5sZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0ICs9IGAnKCR7ZXhjbHVkZWRGbGFncy5qb2luKFwiIFwiKX0pJ2A7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvbGxlY3QgfHwgZmxhZ3MubGVuZ3RoID4gMSkge1xuICAgICAgcmVzdWx0ICs9IGB7JHtjb2xsZWN0fSR7ZmxhZ3Muam9pbihcIixcIil9fWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCArPSBgJHtmbGFncy5qb2luKFwiLFwiKX1gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHtyZXN1bHR9J1ske2Rlc2NyaXB0aW9ufV0ke2FyZ3N9J2A7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbGVDb21wbGV0aW9ucyh0eXBlOiBUeXBlRGVmKSB7XG4gICAgaWYgKCEodHlwZS5oYW5kbGVyIGluc3RhbmNlb2YgRmlsZVR5cGUpKSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIFwiX2ZpbGVzXCI7XG4gICAgLy8gY29uc3QgZmlsZU9wdHMgPSB0eXBlLmhhbmRsZXIuZ2V0T3B0aW9ucygpO1xuICAgIC8vIGxldCBmaWxlQ29tcGxldGlvbnMgPSBcIl9maWxlc1wiO1xuICAgIC8vIGlmIChmaWxlT3B0cy5kaXJzT25seSkge1xuICAgIC8vICAgZmlsZUNvbXBsZXRpb25zICs9IFwiIC0vXCI7XG4gICAgLy8gfVxuICAgIC8vIGlmIChmaWxlT3B0cy5wYXR0ZXJuKSB7XG4gICAgLy8gICBmaWxlQ29tcGxldGlvbnMgKz0gJyAtZyBcIicgKyBmaWxlT3B0cy5wYXR0ZXJuICsgJ1wiJztcbiAgICAvLyB9XG4gICAgLy8gaWYgKGZpbGVPcHRzLmlnbm9yZSkge1xuICAgIC8vICAgZmlsZUNvbXBsZXRpb25zICs9IFwiIC1GIFwiICsgZmlsZU9wdHMuaWdub3JlO1xuICAgIC8vIH1cbiAgICAvLyByZXR1cm4gZmlsZUNvbXBsZXRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRBY3Rpb24oYXJnOiBBcmd1bWVudCwgY21kOiBzdHJpbmcpOiBJQ29tcGxldGlvbkFjdGlvbiB7XG4gICAgY29uc3QgYWN0aW9uID0gYCR7YXJnLm5hbWV9LSR7YXJnLmFjdGlvbn1gO1xuXG4gICAgaWYgKCF0aGlzLmFjdGlvbnMuaGFzKGFjdGlvbikpIHtcbiAgICAgIHRoaXMuYWN0aW9ucy5zZXQoYWN0aW9uLCB7XG4gICAgICAgIGFyZzogYXJnLFxuICAgICAgICBsYWJlbDogYCR7YXJnLm5hbWV9OiAke2FyZy5hY3Rpb259YCxcbiAgICAgICAgbmFtZTogYWN0aW9uLFxuICAgICAgICBjbWQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hY3Rpb25zLmdldChhY3Rpb24pIGFzIElDb21wbGV0aW9uQWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUFjdGlvbnMoY29tbWFuZDogQ29tbWFuZCk6IHN0cmluZyB7XG4gICAgbGV0IGFjdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBpZiAodGhpcy5hY3Rpb25zLnNpemUpIHtcbiAgICAgIGFjdGlvbnMgPSBBcnJheVxuICAgICAgICAuZnJvbSh0aGlzLmFjdGlvbnMpXG4gICAgICAgIC5tYXAoKFtuYW1lLCBhY3Rpb25dKSA9PlxuICAgICAgICAgIGAke25hbWV9KSBfXyR7XG4gICAgICAgICAgICByZXBsYWNlU3BlY2lhbENoYXJzKHRoaXMuY21kLmdldE5hbWUoKSlcbiAgICAgICAgICB9X2NvbXBsZXRlICR7YWN0aW9uLmFyZy5uYW1lfSAke2FjdGlvbi5hcmcuYWN0aW9ufSAke2FjdGlvbi5jbWR9IDs7YFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlmIChjb21tYW5kLmhhc0NvbW1hbmRzKGZhbHNlKSkge1xuICAgICAgYWN0aW9ucy51bnNoaWZ0KGBjb21tYW5kX2FyZ3MpIF9jb21tYW5kX2FyZ3MgOztgKTtcbiAgICB9XG5cbiAgICBpZiAoYWN0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBgXFxuXFxuICBjYXNlIFwiJHN0YXRlXCIgaW5cXG4gICAgJHthY3Rpb25zLmpvaW4oXCJcXG4gICAgXCIpfVxcbiAgZXNhY2A7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVwbGFjZVNwZWNpYWxDaGFycyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvW15hLXpBLVowLTldL2csIFwiX1wiKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLGNBQWMsUUFBUSxlQUFlO0FBRzlDLFNBQVMsUUFBUSxRQUFRLG1CQUFtQjtBQVM1QyxzQ0FBc0MsR0FDdEMsT0FBTyxNQUFNOztFQUNILFFBQW9EO0VBRTVELHdEQUF3RCxHQUN4RCxPQUFjLFNBQVMsR0FBWSxFQUFFO0lBQ25DLE9BQU8sSUFBSSx3QkFBd0IsS0FBSyxRQUFRO0VBQ2xEO0VBRUEsWUFBb0IsQUFBVSxHQUFZLENBQUU7U0FBZCxNQUFBO1NBUHRCLFVBQTBD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 +// denoCacheMetadata=8022116120923099448,1507209347091644005
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/a789cb6c48c7a1d04c243ad9a99d34bcc1b7bc5e4006a4918461e2d957f1b471.js b/vendor/gen/https/deno.land/a789cb6c48c7a1d04c243ad9a99d34bcc1b7bc5e4006a4918461e2d957f1b471.js new file mode 100644 index 0000000..cbe62d0 --- /dev/null +++ b/vendor/gen/https/deno.land/a789cb6c48c7a1d04c243ad9a99d34bcc1b7bc5e4006a4918461e2d957f1b471.js @@ -0,0 +1,10 @@ +const upperCasedStringCache = new Map(); +const lowerCasedStringCache = new Map(); +export function getUpperCase(string) { + return upperCasedStringCache.get(string) ?? upperCasedStringCache.set(string, string.toUpperCase()).get(string); +} +export function getLowerCase(string) { + return lowerCasedStringCache.get(string) ?? lowerCasedStringCache.set(string, string.toLowerCase()).get(string); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvZGVub19kb21AdjAuMS40OS9zcmMvZG9tL3N0cmluZy1jYWNoZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB1cHBlckNhc2VkU3RyaW5nQ2FjaGU6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7XG5jb25zdCBsb3dlckNhc2VkU3RyaW5nQ2FjaGU6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRVcHBlckNhc2Uoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdXBwZXJDYXNlZFN0cmluZ0NhY2hlLmdldChzdHJpbmcpID8/XG4gICAgdXBwZXJDYXNlZFN0cmluZ0NhY2hlLnNldChzdHJpbmcsIHN0cmluZy50b1VwcGVyQ2FzZSgpKS5nZXQoc3RyaW5nKSE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb3dlckNhc2Uoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gbG93ZXJDYXNlZFN0cmluZ0NhY2hlLmdldChzdHJpbmcpID8/XG4gICAgbG93ZXJDYXNlZFN0cmluZ0NhY2hlLnNldChzdHJpbmcsIHN0cmluZy50b0xvd2VyQ2FzZSgpKS5nZXQoc3RyaW5nKSE7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSx3QkFBNkMsSUFBSTtBQUN2RCxNQUFNLHdCQUE2QyxJQUFJO0FBRXZELE9BQU8sU0FBUyxhQUFhLE1BQWM7RUFDekMsT0FBTyxzQkFBc0IsR0FBRyxDQUFDLFdBQy9CLHNCQUFzQixHQUFHLENBQUMsUUFBUSxPQUFPLFdBQVcsSUFBSSxHQUFHLENBQUM7QUFDaEU7QUFFQSxPQUFPLFNBQVMsYUFBYSxNQUFjO0VBQ3pDLE9BQU8sc0JBQXNCLEdBQUcsQ0FBQyxXQUMvQixzQkFBc0IsR0FBRyxDQUFDLFFBQVEsT0FBTyxXQUFXLElBQUksR0FBRyxDQUFDO0FBQ2hFIn0= +// denoCacheMetadata=4532848147329023150,9244704878751882796
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/a7d2cd91bbf79350d5df1606d7571bad822fb6a33c35d0667a2506f937314b91.js b/vendor/gen/https/deno.land/a7d2cd91bbf79350d5df1606d7571bad822fb6a33c35d0667a2506f937314b91.js new file mode 100644 index 0000000..d35e4ca --- /dev/null +++ b/vendor/gen/https/deno.land/a7d2cd91bbf79350d5df1606d7571bad822fb6a33c35d0667a2506f937314b91.js @@ -0,0 +1,15 @@ +export * from "./figures.ts"; +export * from "./_generic_prompt.ts"; +export * from "./_generic_input.ts"; +export * from "./_generic_list.ts"; +export * from "./checkbox.ts"; +export * from "./confirm.ts"; +export * from "./input.ts"; +export * from "./list.ts"; +export * from "./number.ts"; +export * from "./secret.ts"; +export * from "./select.ts"; +export * from "./toggle.ts"; +export * from "./prompt.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvcHJvbXB0L21vZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9maWd1cmVzLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9fZ2VuZXJpY19wcm9tcHQudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL19nZW5lcmljX2lucHV0LnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9fZ2VuZXJpY19saXN0LnRzXCI7XG5cbmV4cG9ydCAqIGZyb20gXCIuL2NoZWNrYm94LnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb25maXJtLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pbnB1dC50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGlzdC50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbnVtYmVyLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zZWNyZXQudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NlbGVjdC50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdG9nZ2xlLnRzXCI7XG5cbmV4cG9ydCAqIGZyb20gXCIuL3Byb21wdC50c1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZTtBQUM3QixjQUFjLHVCQUF1QjtBQUNyQyxjQUFjLHNCQUFzQjtBQUNwQyxjQUFjLHFCQUFxQjtBQUVuQyxjQUFjLGdCQUFnQjtBQUM5QixjQUFjLGVBQWU7QUFDN0IsY0FBYyxhQUFhO0FBQzNCLGNBQWMsWUFBWTtBQUMxQixjQUFjLGNBQWM7QUFDNUIsY0FBYyxjQUFjO0FBQzVCLGNBQWMsY0FBYztBQUM1QixjQUFjLGNBQWM7QUFFNUIsY0FBYyxjQUFjIn0= +// denoCacheMetadata=11052431237751334694,18410497533697407333
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/a8505974f72fcbd736ae4b912e0e51c5f27f8243d826eb776061d81ac3d4cf72.js b/vendor/gen/https/deno.land/a8505974f72fcbd736ae4b912e0e51c5f27f8243d826eb776061d81ac3d4cf72.js new file mode 100644 index 0000000..4a79ee8 --- /dev/null +++ b/vendor/gen/https/deno.land/a8505974f72fcbd736ae4b912e0e51c5f27f8243d826eb776061d81ac3d4cf72.js @@ -0,0 +1,85 @@ +/** A list of the available plugins not installed by default and sorted */ export const pluginNames = [ + // Order doesn't matter, but should be first + "attributes", + "date", + "code_highlight", + "decap_cms", + "fff", + "eta", + "extract_date", + "jsx", + "json_ld", + "reading_info", + "relations", + "mdx", + "metas", + "multilanguage", + "nav", + "nunjucks", + "pagefind", + "plaintext", + "prism", + "pug", + "remark", + "robots", + "sheets", + "filter_pages", + "redirects", + "icons", + // CSS + JS + source maps + "esbuild", + "terser", + "katex", + "google_fonts", + "sass", + "unocss", + "tailwindcss", + "postcss", + "lightningcss", + "purgecss", + "source_maps", + // Modify URLs + "base_path", + "resolve_urls", + "relative_urls", + "slugify_urls", + "modify_urls", + "check_urls", + // Images + "og_images", + "favicon", + "svgo", + "picture", + "transform_images", + // Assets in HTML + "inline", + "sri", + // Generate files with URLs + "feed", + "sitemap", + // Final minification and compression + "minify_html", + "brotli", + "gzip" +]; +/** Returns the _config file of a site */ export async function getConfigFile(path, defaultPaths = [ + "_config.js", + "_config.ts" +]) { + if (path) { + try { + return await Deno.realPath(path); + } catch { + throw new Error(`Config file not found (${path})`); + } + } + for (const path of defaultPaths){ + try { + return await Deno.realPath(path); + } catch { + // Ignore + } + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS91dGlscy9sdW1lX2NvbmZpZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQSBsaXN0IG9mIHRoZSBhdmFpbGFibGUgcGx1Z2lucyBub3QgaW5zdGFsbGVkIGJ5IGRlZmF1bHQgYW5kIHNvcnRlZCAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpbk5hbWVzID0gW1xuICAvLyBPcmRlciBkb2Vzbid0IG1hdHRlciwgYnV0IHNob3VsZCBiZSBmaXJzdFxuICBcImF0dHJpYnV0ZXNcIixcbiAgXCJkYXRlXCIsXG4gIFwiY29kZV9oaWdobGlnaHRcIixcbiAgXCJkZWNhcF9jbXNcIixcbiAgXCJmZmZcIixcbiAgXCJldGFcIixcbiAgXCJleHRyYWN0X2RhdGVcIixcbiAgXCJqc3hcIixcbiAgXCJqc29uX2xkXCIsXG4gIFwicmVhZGluZ19pbmZvXCIsXG4gIFwicmVsYXRpb25zXCIsXG4gIFwibWR4XCIsXG4gIFwibWV0YXNcIixcbiAgXCJtdWx0aWxhbmd1YWdlXCIsXG4gIFwibmF2XCIsXG4gIFwibnVuanVja3NcIixcbiAgXCJwYWdlZmluZFwiLFxuICBcInBsYWludGV4dFwiLFxuICBcInByaXNtXCIsXG4gIFwicHVnXCIsXG4gIFwicmVtYXJrXCIsXG4gIFwicm9ib3RzXCIsXG4gIFwic2hlZXRzXCIsXG4gIFwiZmlsdGVyX3BhZ2VzXCIsXG4gIFwicmVkaXJlY3RzXCIsXG4gIFwiaWNvbnNcIixcblxuICAvLyBDU1MgKyBKUyArIHNvdXJjZSBtYXBzXG4gIFwiZXNidWlsZFwiLFxuICBcInRlcnNlclwiLFxuICBcImthdGV4XCIsXG4gIFwiZ29vZ2xlX2ZvbnRzXCIsXG4gIFwic2Fzc1wiLFxuICBcInVub2Nzc1wiLFxuICBcInRhaWx3aW5kY3NzXCIsXG4gIFwicG9zdGNzc1wiLFxuICBcImxpZ2h0bmluZ2Nzc1wiLFxuICBcInB1cmdlY3NzXCIsXG4gIFwic291cmNlX21hcHNcIixcblxuICAvLyBNb2RpZnkgVVJMc1xuICBcImJhc2VfcGF0aFwiLFxuICBcInJlc29sdmVfdXJsc1wiLFxuICBcInJlbGF0aXZlX3VybHNcIixcbiAgXCJzbHVnaWZ5X3VybHNcIixcbiAgXCJtb2RpZnlfdXJsc1wiLFxuICBcImNoZWNrX3VybHNcIixcblxuICAvLyBJbWFnZXNcbiAgXCJvZ19pbWFnZXNcIixcbiAgXCJmYXZpY29uXCIsXG4gIFwic3Znb1wiLFxuICBcInBpY3R1cmVcIixcbiAgXCJ0cmFuc2Zvcm1faW1hZ2VzXCIsXG5cbiAgLy8gQXNzZXRzIGluIEhUTUxcbiAgXCJpbmxpbmVcIixcbiAgXCJzcmlcIixcblxuICAvLyBHZW5lcmF0ZSBmaWxlcyB3aXRoIFVSTHNcbiAgXCJmZWVkXCIsXG4gIFwic2l0ZW1hcFwiLFxuXG4gIC8vIEZpbmFsIG1pbmlmaWNhdGlvbiBhbmQgY29tcHJlc3Npb25cbiAgXCJtaW5pZnlfaHRtbFwiLFxuICBcImJyb3RsaVwiLFxuICBcImd6aXBcIixcbl07XG5cbi8qKiBSZXR1cm5zIHRoZSBfY29uZmlnIGZpbGUgb2YgYSBzaXRlICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q29uZmlnRmlsZShcbiAgcGF0aD86IHN0cmluZyxcbiAgZGVmYXVsdFBhdGhzOiBzdHJpbmdbXSA9IFtcIl9jb25maWcuanNcIiwgXCJfY29uZmlnLnRzXCJdLFxuKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgaWYgKHBhdGgpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IERlbm8ucmVhbFBhdGgocGF0aCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbmZpZyBmaWxlIG5vdCBmb3VuZCAoJHtwYXRofSlgKTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IHBhdGggb2YgZGVmYXVsdFBhdGhzKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBEZW5vLnJlYWxQYXRoKHBhdGgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gSWdub3JlXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0VBQXdFLEdBQ3hFLE9BQU8sTUFBTSxjQUFjO0VBQ3pCLDRDQUE0QztFQUM1QztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUEseUJBQXlCO0VBQ3pCO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQSxjQUFjO0VBQ2Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUEsU0FBUztFQUNUO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQSxpQkFBaUI7RUFDakI7RUFDQTtFQUVBLDJCQUEyQjtFQUMzQjtFQUNBO0VBRUEscUNBQXFDO0VBQ3JDO0VBQ0E7RUFDQTtDQUNELENBQUM7QUFFRix1Q0FBdUMsR0FDdkMsT0FBTyxlQUFlLGNBQ3BCLElBQWEsRUFDYixlQUF5QjtFQUFDO0VBQWM7Q0FBYTtFQUVyRCxJQUFJLE1BQU07SUFDUixJQUFJO01BQ0YsT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDO0lBQzdCLEVBQUUsT0FBTTtNQUNOLE1BQU0sSUFBSSxNQUFNLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkQ7RUFDRjtFQUVBLEtBQUssTUFBTSxRQUFRLGFBQWM7SUFDL0IsSUFBSTtNQUNGLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQztJQUM3QixFQUFFLE9BQU07SUFDTixTQUFTO0lBQ1g7RUFDRjtBQUNGIn0= +// denoCacheMetadata=15431452927548674093,14826493310451118503
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/a94773728869a4bb4351cfa2169dbd0c8a7e717593400c695edbab0970d22b9c.js b/vendor/gen/https/deno.land/a94773728869a4bb4351cfa2169dbd0c8a7e717593400c695edbab0970d22b9c.js new file mode 100644 index 0000000..e7a886c --- /dev/null +++ b/vendor/gen/https/deno.land/a94773728869a4bb4351cfa2169dbd0c8a7e717593400c695edbab0970d22b9c.js @@ -0,0 +1,25 @@ +/** + * Base class for custom types. + * + * **Custom type example:** + * ``` + * export class ColorType extends Type<string> { + * public parse({ label, name, value, type }: ArgumentValue): string { + * if (["red", "blue"].includes(value)) { + * trow new Error( + * `${label} "${name}" must be of type "${type}", but got "${value}".` + + * "Valid colors are: red, blue" + * ); + * } + * return value; + * } + * + * public complete(): string[] { + * return ["red", "blue"]; + * } + * } + * ``` + */ export class Type { +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC90eXBlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29tbWFuZCB9IGZyb20gXCIuL2NvbW1hbmQudHNcIjtcbmltcG9ydCB7IFR5cGVPclR5cGVIYW5kbGVyIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcbmltcG9ydCB0eXBlIHtcbiAgQXJndW1lbnRWYWx1ZSxcbiAgQ29tcGxldGVIYW5kbGVyUmVzdWx0LFxuICBWYWx1ZXNIYW5kbGVyUmVzdWx0LFxufSBmcm9tIFwiLi90eXBlcy50c1wiO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGN1c3RvbSB0eXBlcy5cbiAqXG4gKiAqKkN1c3RvbSB0eXBlIGV4YW1wbGU6KipcbiAqIGBgYFxuICogZXhwb3J0IGNsYXNzIENvbG9yVHlwZSBleHRlbmRzIFR5cGU8c3RyaW5nPiB7XG4gKiAgIHB1YmxpYyBwYXJzZSh7IGxhYmVsLCBuYW1lLCB2YWx1ZSwgdHlwZSB9OiBBcmd1bWVudFZhbHVlKTogc3RyaW5nIHtcbiAqICAgICBpZiAoW1wicmVkXCIsIFwiYmx1ZVwiXS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAqICAgICAgIHRyb3cgbmV3IEVycm9yKFxuICogICAgICAgICBgJHtsYWJlbH0gXCIke25hbWV9XCIgbXVzdCBiZSBvZiB0eXBlIFwiJHt0eXBlfVwiLCBidXQgZ290IFwiJHt2YWx1ZX1cIi5gICtcbiAqICAgICAgICAgXCJWYWxpZCBjb2xvcnMgYXJlOiByZWQsIGJsdWVcIlxuICogICAgICAgKTtcbiAqICAgICB9XG4gKiAgICAgcmV0dXJuIHZhbHVlO1xuICogICB9XG4gKlxuICogICBwdWJsaWMgY29tcGxldGUoKTogc3RyaW5nW10ge1xuICogICAgIHJldHVybiBbXCJyZWRcIiwgXCJibHVlXCJdO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFR5cGU8VFZhbHVlPiB7XG4gIHB1YmxpYyBhYnN0cmFjdCBwYXJzZSh0eXBlOiBBcmd1bWVudFZhbHVlKTogVFZhbHVlO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHZhbHVlcyBkaXNwbGF5ZWQgaW4gaGVscCB0ZXh0LiBJZiBubyBjb21wbGV0ZSBtZXRob2QgaXMgcHJvdmlkZWQsXG4gICAqIHRoZXNlIHZhbHVlcyBhcmUgYWxzbyB1c2VkIGZvciBzaGVsbCBjb21wbGV0aW9ucy5cbiAgICovXG4gIHB1YmxpYyB2YWx1ZXM/KFxuICAgIGNtZDogQ29tbWFuZCxcbiAgICBwYXJlbnQ/OiBDb21tYW5kLFxuICApOiBWYWx1ZXNIYW5kbGVyUmVzdWx0O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHNoZWxsIGNvbXBsZXRpb24gdmFsdWVzLiBJZiBubyBjb21wbGV0ZSBtZXRob2QgaXMgcHJvdmlkZWQsXG4gICAqIHZhbHVlcyBmcm9tIHRoZSB2YWx1ZXMgbWV0aG9kIGFyZSB1c2VkLlxuICAgKi9cbiAgcHVibGljIGNvbXBsZXRlPyhcbiAgICBjbWQ6IENvbW1hbmQsXG4gICAgcGFyZW50PzogQ29tbWFuZCxcbiAgKTogQ29tcGxldGVIYW5kbGVyUmVzdWx0O1xufVxuXG4vLyBkZW5vLWxpbnQtaWdub3JlIG5vLW5hbWVzcGFjZVxuZXhwb3J0IG5hbWVzcGFjZSBUeXBlIHtcbiAgZXhwb3J0IHR5cGUgaW5mZXI8VFR5cGUsIFREZWZhdWx0ID0gVFR5cGU+ID0gVFR5cGUgZXh0ZW5kc1xuICAgIFR5cGVPclR5cGVIYW5kbGVyPGluZmVyIFZhbHVlPiA/IFZhbHVlIDogVERlZmF1bHQ7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXFCQyxHQUNELE9BQU8sTUFBZTtBQW9CdEIifQ== +// denoCacheMetadata=9240526584462040201,5025332936928767283
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/a951c2a1162a432fc83cda09e7cd6f0dd125bb5c1c70c43848606295b60cc7eb.js b/vendor/gen/https/deno.land/a951c2a1162a432fc83cda09e7cd6f0dd125bb5c1c70c43848606295b60cc7eb.js new file mode 100644 index 0000000..606364a --- /dev/null +++ b/vendor/gen/https/deno.land/a951c2a1162a432fc83cda09e7cd6f0dd125bb5c1c70c43848606295b60cc7eb.js @@ -0,0 +1,4 @@ +export { default as engine } from "https://deno.land/x/vento@v1.13.0/mod.ts"; +export { default as autotrim } from "https://deno.land/x/vento@v1.13.0/plugins/auto_trim.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvZGVwcy92ZW50by50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBkZWZhdWx0IGFzIGVuZ2luZSB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC94L3ZlbnRvQHYxLjEzLjAvbW9kLnRzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGF1dG90cmltIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9wbHVnaW5zL2F1dG9fdHJpbS50c1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEVudmlyb25tZW50LFxuICBQbHVnaW4sXG59IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC94L3ZlbnRvQHYxLjEzLjAvc3JjL2Vudmlyb25tZW50LnRzXCI7XG5leHBvcnQgdHlwZSB7IExvYWRlciB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC94L3ZlbnRvQHYxLjEzLjAvc3JjL2xvYWRlci50c1wiO1xuZXhwb3J0IHR5cGUgeyBUb2tlbiB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC94L3ZlbnRvQHYxLjEzLjAvc3JjL3Rva2VuaXplci50c1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsV0FBVyxNQUFNLFFBQVEsMkNBQTJDO0FBQzdFLFNBQVMsV0FBVyxRQUFRLFFBQVEseURBQXlEIn0= +// denoCacheMetadata=11980659975130636616,647886473139693750
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/ad2d49ec36cd9398ebd9d085925339ac4d2faf5397a1153871d0ec2b4bd96f96.js b/vendor/gen/https/deno.land/ad2d49ec36cd9398ebd9d085925339ac4d2faf5397a1153871d0ec2b4bd96f96.js new file mode 100644 index 0000000..2a92c78 --- /dev/null +++ b/vendor/gen/https/deno.land/ad2d49ec36cd9398ebd9d085925339ac4d2faf5397a1153871d0ec2b4bd96f96.js @@ -0,0 +1,20 @@ +/** + * Parser interface + */ export let parse = (_html)=>{ + console.error("Error: deno-dom: No parser registered"); + Deno.exit(1); +}; +export let parseFrag = (_html, _contextLocalName)=>{ + console.error("Error: deno-dom: No parser registered"); + Deno.exit(1); +}; +const originalParse = parse; +export function register(func, fragFunc) { + if (parse !== originalParse) { + return; + } + parse = func; + parseFrag = fragFunc; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvZGVub19kb21AdjAuMS40OS9zcmMvcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGFyc2VyIGludGVyZmFjZVxuICovXG5leHBvcnQgdHlwZSBQYXJzZXIgPSAoaHRtbDogc3RyaW5nLCBjb250ZXh0TG9jYWxOYW1lPzogc3RyaW5nKSA9PiBzdHJpbmc7XG5leHBvcnQgbGV0IHBhcnNlOiBQYXJzZXIgPSAoX2h0bWwpID0+IHtcbiAgY29uc29sZS5lcnJvcihcIkVycm9yOiBkZW5vLWRvbTogTm8gcGFyc2VyIHJlZ2lzdGVyZWRcIik7XG4gIERlbm8uZXhpdCgxKTtcbn07XG5cbmV4cG9ydCBsZXQgcGFyc2VGcmFnOiBQYXJzZXIgPSAoX2h0bWwsIF9jb250ZXh0TG9jYWxOYW1lKSA9PiB7XG4gIGNvbnNvbGUuZXJyb3IoXCJFcnJvcjogZGVuby1kb206IE5vIHBhcnNlciByZWdpc3RlcmVkXCIpO1xuICBEZW5vLmV4aXQoMSk7XG59O1xuXG5jb25zdCBvcmlnaW5hbFBhcnNlID0gcGFyc2U7XG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXIoZnVuYzogUGFyc2VyLCBmcmFnRnVuYzogUGFyc2VyKSB7XG4gIGlmIChwYXJzZSAhPT0gb3JpZ2luYWxQYXJzZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHBhcnNlID0gZnVuYztcbiAgcGFyc2VGcmFnID0gZnJhZ0Z1bmM7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0NBRUMsR0FFRCxPQUFPLElBQUksUUFBZ0IsQ0FBQztFQUMxQixRQUFRLEtBQUssQ0FBQztFQUNkLEtBQUssSUFBSSxDQUFDO0FBQ1osRUFBRTtBQUVGLE9BQU8sSUFBSSxZQUFvQixDQUFDLE9BQU87RUFDckMsUUFBUSxLQUFLLENBQUM7RUFDZCxLQUFLLElBQUksQ0FBQztBQUNaLEVBQUU7QUFFRixNQUFNLGdCQUFnQjtBQUN0QixPQUFPLFNBQVMsU0FBUyxJQUFZLEVBQUUsUUFBZ0I7RUFDckQsSUFBSSxVQUFVLGVBQWU7SUFDM0I7RUFDRjtFQUVBLFFBQVE7RUFDUixZQUFZO0FBQ2QifQ== +// denoCacheMetadata=1981685386313081568,8867157598356623625
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/ae96820eb6bd61609f33a5714be30ae1a34dfefabded9aa931a7931a6efb3224.js b/vendor/gen/https/deno.land/ae96820eb6bd61609f33a5714be30ae1a34dfefabded9aa931a7931a6efb3224.js new file mode 100644 index 0000000..a1e796c --- /dev/null +++ b/vendor/gen/https/deno.land/ae96820eb6bd61609f33a5714be30ae1a34dfefabded9aa931a7931a6efb3224.js @@ -0,0 +1,13 @@ +/** Return the current installed version */ export function getCurrentVersion(url = new URL(import.meta.resolve("../"))) { + const { pathname } = url; + return pathname.match(/@([^/]+)/)?.[1] ?? `local (${pathname})`; +} +/** Return the Lume generator value (for <meta>, Feed, etc) */ export function getGenerator() { + const version = getCurrentVersion(); + if (version.startsWith("local")) { + return "Lume"; + } + return `Lume ${version}`; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS91dGlscy9sdW1lX3ZlcnNpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIFJldHVybiB0aGUgY3VycmVudCBpbnN0YWxsZWQgdmVyc2lvbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEN1cnJlbnRWZXJzaW9uKFxuICB1cmwgPSBuZXcgVVJMKGltcG9ydC5tZXRhLnJlc29sdmUoXCIuLi9cIikpLFxuKTogc3RyaW5nIHtcbiAgY29uc3QgeyBwYXRobmFtZSB9ID0gdXJsO1xuICByZXR1cm4gcGF0aG5hbWUubWF0Y2goL0AoW14vXSspLyk/LlsxXSA/PyBgbG9jYWwgKCR7cGF0aG5hbWV9KWA7XG59XG5cbi8qKiBSZXR1cm4gdGhlIEx1bWUgZ2VuZXJhdG9yIHZhbHVlIChmb3IgPG1ldGE+LCBGZWVkLCBldGMpICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2VuZXJhdG9yKCkge1xuICBjb25zdCB2ZXJzaW9uID0gZ2V0Q3VycmVudFZlcnNpb24oKTtcblxuICBpZiAodmVyc2lvbi5zdGFydHNXaXRoKFwibG9jYWxcIikpIHtcbiAgICByZXR1cm4gXCJMdW1lXCI7XG4gIH1cblxuICByZXR1cm4gYEx1bWUgJHt2ZXJzaW9ufWA7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseUNBQXlDLEdBQ3pDLE9BQU8sU0FBUyxrQkFDZCxNQUFNLElBQUksSUFBSSxZQUFZLE9BQU8sQ0FBQyxPQUFPO0VBRXpDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRztFQUNyQixPQUFPLFNBQVMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDakU7QUFFQSw0REFBNEQsR0FDNUQsT0FBTyxTQUFTO0VBQ2QsTUFBTSxVQUFVO0VBRWhCLElBQUksUUFBUSxVQUFVLENBQUMsVUFBVTtJQUMvQixPQUFPO0VBQ1Q7RUFFQSxPQUFPLENBQUMsS0FBSyxFQUFFLFNBQVM7QUFDMUIifQ== +// denoCacheMetadata=1976951836821188705,6391497537095662571
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/b04ac5a483d0425a66ef8f823cec21e6dd5d728e03a56b827c00577a683d9141.js b/vendor/gen/https/deno.land/b04ac5a483d0425a66ef8f823cec21e6dd5d728e03a56b827c00577a683d9141.js new file mode 100644 index 0000000..4972ef5 --- /dev/null +++ b/vendor/gen/https/deno.land/b04ac5a483d0425a66ef8f823cec21e6dd5d728e03a56b827c00577a683d9141.js @@ -0,0 +1,1057 @@ +var _computedKey, _computedKey1, _computedKey2; +import { CTOR_KEY } from "../constructor-lock.ts"; +import { fragmentNodesFromString } from "../deserialize.ts"; +import { Node, nodesAndTextNodes, NodeType } from "./node.ts"; +import { NodeList, nodeListMutatorSym } from "./node-list.ts"; +import { getDatasetHtmlAttrName, getDatasetJavascriptName, getElementsByClassName, getOuterOrInnerHtml, insertBeforeAfter, lowerCaseCharRe, upperCaseCharRe } from "./utils.ts"; +import UtilTypes from "./utils-types.ts"; +import { getLowerCase, getUpperCase } from "./string-cache.ts"; +_computedKey = Symbol.iterator; +export class DOMTokenList { + // Minimum number of classnames/tokens in order to switch from + // an array-backed to a set-backed list + static #DOM_TOKEN_LIST_MIN_SET_SIZE = 32; + #_value = ""; + get #value() { + return this.#_value; + } + set #value(value) { + this.#_value = value; + this.#onChange(value); + } + #set = []; + #onChange; + constructor(onChange, key){ + if (key !== CTOR_KEY) { + throw new TypeError("Illegal constructor"); + } + this.#onChange = onChange; + } + static #invalidToken(token) { + return token === "" || /[\t\n\f\r ]/.test(token); + } + #setIndices() { + const classes = Array.from(this.#set); + for(let i = 0; i < classes.length; i++){ + this[i] = classes[i]; + } + } + set value(input) { + this.#value = input; + this.#set = input.trim().split(/[\t\n\f\r\s]+/g).filter(Boolean); + if (this.#set.length > DOMTokenList.#DOM_TOKEN_LIST_MIN_SET_SIZE) { + this.#set = new Set(this.#set); + } else { + const deduplicatedSet = []; + for (const element of this.#set){ + if (!deduplicatedSet.includes(element)) { + deduplicatedSet.push(element); + } + } + this.#set = deduplicatedSet; + } + this.#setIndices(); + } + get value() { + return this.#_value; + } + get length() { + if (this.#set.constructor === Array) { + return this.#set.length; + } else { + return this.#set.size; + } + } + *entries() { + const array = Array.from(this.#set); + for(let i = 0; i < array.length; i++){ + yield [ + i, + array[i] + ]; + } + } + *values() { + yield* this.#set.values(); + } + *keys() { + const length = this.length; + for(let i = 0; i < length; i++){ + yield i; + } + } + *[_computedKey]() { + yield* this.#set.values(); + } + item(index) { + index = Number(index); + if (Number.isNaN(index) || index === Infinity) index = 0; + return this[Math.trunc(index) % 2 ** 32] ?? null; + } + contains(element) { + if (this.#set.constructor === Array) { + return this.#set.includes(element); + } else { + return this.#set.has(element); + } + } + #arrayAdd(element) { + const array = this.#set; + if (!array.includes(element)) { + this[array.length] = element; + array.push(element); + } + } + #setAdd(element) { + const set = this.#set; + const { size } = set; + set.add(element); + if (size < set.size) { + this[size] = element; + } + } + add(...elements) { + const method = (this.#set.constructor === Array ? this.#arrayAdd : this.#setAdd).bind(this); + for (const element of elements){ + if (DOMTokenList.#invalidToken(element)) { + throw new DOMException("Failed to execute 'add' on 'DOMTokenList': The token provided must not be empty."); + } + method(element); + } + this.#updateClassString(); + } + #arrayRemove(element) { + const array = this.#set; + const index = array.indexOf(element); + if (index >= 0) { + array.splice(index, 1); + } + } + #setRemove(element) { + this.#set.delete(element); + } + remove(...elements) { + const method = (this.#set.constructor === Array ? this.#arrayRemove : this.#setRemove).bind(this); + const size = this.length; + for (const element of elements){ + if (DOMTokenList.#invalidToken(element)) { + throw new DOMException("Failed to execute 'remove' on 'DOMTokenList': The token provided must not be empty."); + } + method(element); + } + const newSize = this.length; + if (size !== newSize) { + for(let i = newSize; i < size; i++){ + delete this[i]; + } + this.#setIndices(); + } + this.#updateClassString(); + } + replace(oldToken, newToken) { + const isArrayBacked = this.#set.constructor === Array; + const removeMethod = (isArrayBacked ? this.#arrayRemove : this.#setRemove).bind(this); + const addMethod = (isArrayBacked ? this.#arrayAdd : this.#setAdd).bind(this); + if ([ + oldToken, + newToken + ].some((v)=>DOMTokenList.#invalidToken(v))) { + throw new DOMException("Failed to execute 'replace' on 'DOMTokenList': The token provided must not be empty."); + } + if (!this.contains(oldToken)) { + return false; + } + if (this.contains(newToken)) { + this.remove(oldToken); + } else { + removeMethod(oldToken); + addMethod(newToken); + this.#setIndices(); + this.#updateClassString(); + } + return true; + } + supports() { + throw new Error("Not implemented"); + } + toggle(element, force) { + if (force !== undefined) { + const operation = force ? "add" : "remove"; + this[operation](element); + return false; + } else { + const contains = this.contains(element); + const operation = contains ? "remove" : "add"; + this[operation](element); + return !contains; + } + } + forEach(callback) { + for (const [i, value] of this.entries()){ + callback(value, i, this); + } + } + #updateClassString() { + this.#value = Array.from(this.#set).join(" "); + if (this.#set.constructor === Array && this.#set.length > DOMTokenList.#DOM_TOKEN_LIST_MIN_SET_SIZE) { + this.#set = new Set(this.#set); + } + } +} +const initializeClassListSym = Symbol("initializeClassListSym"); +const domTokenListCurrentElementSym = Symbol("domTokenListCurrentElementSym"); +_computedKey1 = Symbol.iterator; +/** + * The purpose of this uninitialized DOMTokenList is to consume less memory + * than the actual DOMTokenList class. By measurements of Deno v2.1.0 (V8 13.0.245.12-rusty) + * this class consumes 48 bytes while the smallest DOMTokenList consumes 488 + * bytes + */ class UninitializedDOMTokenList { + // This will always be populated with the current element + // being queried + [domTokenListCurrentElementSym]; + constructor(currentElement){ + this[domTokenListCurrentElementSym] = currentElement; + } + #getInitialized() { + const currentClassList = this[domTokenListCurrentElementSym].classList; + if (currentClassList === this) { + return null; + } + return currentClassList; + } + set value(input) { + this[domTokenListCurrentElementSym][initializeClassListSym](); + this[domTokenListCurrentElementSym].classList.value = String(input); + } + get value() { + return this.#getInitialized()?.value ?? ""; + } + get length() { + return this.#getInitialized()?.length ?? 0; + } + *entries() { + const initialized = this.#getInitialized(); + if (initialized) { + yield* initialized.entries(); + } + } + *values() { + const initialized = this.#getInitialized(); + if (initialized) { + yield* initialized.values(); + } + } + *keys() { + const initialized = this.#getInitialized(); + if (initialized) { + yield* initialized.keys(); + } + } + *[_computedKey1]() { + yield* this.values(); + } + item(index) { + return this.#getInitialized()?.item(index) ?? null; + } + contains(element) { + return this.#getInitialized()?.contains(element) ?? false; + } + add(...elements) { + this[domTokenListCurrentElementSym][initializeClassListSym](); + this[domTokenListCurrentElementSym].classList.add(...elements); + } + remove(...elements) { + this.#getInitialized()?.remove(...elements); + } + replace(oldToken, newToken) { + return this.#getInitialized()?.replace(oldToken, newToken) ?? false; + } + supports() { + throw new Error("Not implemented"); + } + toggle(element, force) { + if (force === false) { + return this.#getInitialized()?.toggle(element, force) ?? false; + } + this[domTokenListCurrentElementSym][initializeClassListSym](); + this[domTokenListCurrentElementSym].classList.add(element); + return true; + } + forEach(callback) { + this.#getInitialized()?.forEach(callback); + } +} +const setNamedNodeMapOwnerElementSym = Symbol("setNamedNodeMapOwnerElementSym"); +const setAttrValueSym = Symbol("setAttrValueSym"); +export class Attr extends Node { + #namedNodeMap = null; + #name = ""; + #value = ""; + #ownerElement = null; + constructor(map, name, value, key){ + if (key !== CTOR_KEY) { + throw new TypeError("Illegal constructor"); + } + super(name, NodeType.ATTRIBUTE_NODE, null, CTOR_KEY); + this.#name = name; + this.#value = value; + this.#namedNodeMap = map; + } + [setNamedNodeMapOwnerElementSym](ownerElement) { + this.#ownerElement = ownerElement; + this.#namedNodeMap = ownerElement?.attributes ?? null; + if (ownerElement) { + this._setOwnerDocument(ownerElement.ownerDocument); + } + } + [setAttrValueSym](value) { + this.#value = value; + } + _shallowClone() { + const newAttr = new Attr(null, this.#name, this.#value, CTOR_KEY); + newAttr._setOwnerDocument(this.ownerDocument); + return newAttr; + } + cloneNode() { + return super.cloneNode(); + } + appendChild() { + throw new DOMException("Cannot add children to an Attribute"); + } + replaceChild() { + throw new DOMException("Cannot add children to an Attribute"); + } + insertBefore() { + throw new DOMException("Cannot add children to an Attribute"); + } + removeChild() { + throw new DOMException("The node to be removed is not a child of this node"); + } + get name() { + return this.#name; + } + get localName() { + // TODO: When we make namespaces a thing this needs + // to be updated + return this.#name; + } + get value() { + return this.#value; + } + set value(value) { + this.#value = String(value); + if (this.#namedNodeMap) { + this.#namedNodeMap[setNamedNodeMapValueSym](this.#name, this.#value, true); + } + } + get ownerElement() { + return this.#ownerElement ?? null; + } + get specified() { + return true; + } + // TODO + get prefix() { + return null; + } +} +const setNamedNodeMapValueSym = Symbol("setNamedNodeMapValueSym"); +const getNamedNodeMapValueSym = Symbol("getNamedNodeMapValueSym"); +const getNamedNodeMapAttrNamesSym = Symbol("getNamedNodeMapAttrNamesSym"); +const getNamedNodeMapAttrNodeSym = Symbol("getNamedNodeMapAttrNodeSym"); +const removeNamedNodeMapAttrSym = Symbol("removeNamedNodeMapAttrSym"); +_computedKey2 = Symbol.iterator; +export class NamedNodeMap { + static #indexedAttrAccess = function(map, index) { + if (index + 1 > this.length) { + return undefined; + } + const attribute = Object.keys(map).filter((attribute)=>map[attribute] !== undefined)[index]?.slice(1); // Remove "a" for safeAttrName + return this[getNamedNodeMapAttrNodeSym](attribute); + }; + #onAttrNodeChange; + constructor(ownerElement, onAttrNodeChange, key){ + if (key !== CTOR_KEY) { + throw new TypeError("Illegal constructor."); + } + this.#ownerElement = ownerElement; + this.#onAttrNodeChange = onAttrNodeChange; + // Retain ordering of any preceding id or class attributes + for (const attr of ownerElement.getAttributeNames()){ + this[setNamedNodeMapValueSym](attr, ownerElement.getAttribute(attr)); + } + } + #attrNodeCache = {}; + #map = {}; + #length = 0; + #capacity = 0; + #ownerElement = null; + [getNamedNodeMapAttrNodeSym](attribute) { + const safeAttrName = "a" + attribute; + let attrNode = this.#attrNodeCache[safeAttrName]; + if (!attrNode) { + attrNode = this.#attrNodeCache[safeAttrName] = new Attr(this, attribute, this.#map[safeAttrName], CTOR_KEY); + attrNode[setNamedNodeMapOwnerElementSym](this.#ownerElement); + } + return attrNode; + } + [getNamedNodeMapAttrNamesSym]() { + const names = []; + for (const [name, value] of Object.entries(this.#map)){ + if (value !== undefined) { + names.push(name.slice(1)); // Remove "a" for safeAttrName + } + } + return names; + } + [getNamedNodeMapValueSym](attribute) { + const safeAttrName = "a" + attribute; + return this.#map[safeAttrName]; + } + [setNamedNodeMapValueSym](attribute, value, bubble = false) { + const safeAttrName = "a" + attribute; + if (this.#map[safeAttrName] === undefined) { + this.#length++; + if (this.#length > this.#capacity) { + this.#capacity = this.#length; + const index = this.#capacity - 1; + Object.defineProperty(this, String(this.#capacity - 1), { + get: NamedNodeMap.#indexedAttrAccess.bind(this, this.#map, index) + }); + } + } else if (this.#attrNodeCache[safeAttrName]) { + this.#attrNodeCache[safeAttrName][setAttrValueSym](value); + } + this.#map[safeAttrName] = value; + if (bubble) { + this.#onAttrNodeChange(attribute, value); + } + } + /** + * Called when an attribute is removed from + * an element + */ [removeNamedNodeMapAttrSym](attribute) { + const safeAttrName = "a" + attribute; + if (this.#map[safeAttrName] !== undefined) { + this.#length--; + this.#map[safeAttrName] = undefined; + this.#onAttrNodeChange(attribute, null); + const attrNode = this.#attrNodeCache[safeAttrName]; + if (attrNode) { + attrNode[setNamedNodeMapOwnerElementSym](null); + this.#attrNodeCache[safeAttrName] = undefined; + } + } + } + *[_computedKey2]() { + for(let i = 0; i < this.length; i++){ + yield this[i]; + } + } + get length() { + return this.#length; + } + // FIXME: This method should accept anything and basically + // coerce any non numbers (and Infinity/-Infinity) into 0 + item(index) { + if (index >= this.#length) { + return null; + } + return this[index]; + } + getNamedItem(attribute) { + const safeAttrName = "a" + attribute; + if (this.#map[safeAttrName] !== undefined) { + return this[getNamedNodeMapAttrNodeSym](attribute); + } + return null; + } + setNamedItem(attrNode) { + if (attrNode.ownerElement) { + throw new DOMException("Attribute already in use"); + } + const safeAttrName = "a" + attrNode.name; + const previousAttr = this.#attrNodeCache[safeAttrName]; + if (previousAttr) { + previousAttr[setNamedNodeMapOwnerElementSym](null); + this.#map[safeAttrName] = undefined; + } + attrNode[setNamedNodeMapOwnerElementSym](this.#ownerElement); + this.#attrNodeCache[safeAttrName] = attrNode; + this[setNamedNodeMapValueSym](attrNode.name, attrNode.value, true); + } + removeNamedItem(attribute) { + const safeAttrName = "a" + attribute; + if (this.#map[safeAttrName] !== undefined) { + const attrNode = this[getNamedNodeMapAttrNodeSym](attribute); + this[removeNamedNodeMapAttrSym](attribute); + return attrNode; + } + throw new DOMException("Node was not found"); + } +} +const XML_NAMESTART_CHAR_RE_SRC = ":A-Za-z_" + String.raw`\u{C0}-\u{D6}\u{D8}-\u{F6}\u{F8}-\u{2FF}\u{370}-\u{37D}` + String.raw`\u{37F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}` + String.raw`\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}`; +const XML_NAME_CHAR_RE_SRC = XML_NAMESTART_CHAR_RE_SRC + String.raw`\u{B7}\u{0300}-\u{036F}\u{203F}-\u{2040}0-9.-`; +const xmlNamestartCharRe = new RegExp(`[${XML_NAMESTART_CHAR_RE_SRC}]`, "u"); +const xmlNameCharRe = new RegExp(`[${XML_NAME_CHAR_RE_SRC}]`, "u"); +export class Element extends Node { + #namedNodeMap = null; + get attributes() { + if (!this.#namedNodeMap) { + this.#namedNodeMap = new NamedNodeMap(this, (attribute, value)=>{ + const isRemoved = value === null; + if (value === null) { + value = ""; + } + switch(attribute){ + case "class": + { + if (isRemoved) { + this.#hasClassNameAttribute = -1; + } else if (this.#hasClassNameAttribute === -1) { + this.#hasClassNameAttribute = this.#hasIdAttribute + 1; + } + // This must happen after the attribute is marked removed + this.#currentClassName = value; + this.#classList.value = value; + break; + } + case "id": + { + if (isRemoved) { + this.#hasIdAttribute = -1; + } else if (this.#hasIdAttribute === -1) { + this.#hasIdAttribute = this.#hasClassNameAttribute + 1; + } + this.#currentId = value; + break; + } + } + }, CTOR_KEY); + } + return this.#namedNodeMap; + } + #datasetProxy = null; + #currentId = ""; + #currentClassName = ""; + #hasIdAttribute = -1; + #hasClassNameAttribute = -1; + // Only initialize a classList when we need one + #classListInstance = new UninitializedDOMTokenList(this); + get #classList() { + return this.#classListInstance; + } + [initializeClassListSym]() { + if (this.#classListInstance.constructor === DOMTokenList) { + return; + } + this.#classListInstance = new DOMTokenList((className)=>{ + if (this.#currentClassName !== className) { + this.#currentClassName = className; + if (this.#hasClassNameAttribute === -1) { + this.#hasClassNameAttribute = this.#hasIdAttribute + 1; + } + if (this.#namedNodeMap && (this.hasAttribute("class") || className !== "")) { + this.attributes[setNamedNodeMapValueSym]("class", className); + } + } + }, CTOR_KEY); + } + constructor(tagName, parentNode, attributes, key){ + super(tagName, NodeType.ELEMENT_NODE, parentNode, key); + for (const attr of attributes){ + this.setAttribute(attr[0], attr[1]); + } + this.nodeName = getUpperCase(tagName); + } + get tagName() { + return this.nodeName; + } + get localName() { + return getLowerCase(this.tagName); + } + _shallowClone() { + // FIXME: This attribute copying needs to also be fixed in other + // elements that override _shallowClone like <template> + const attributes = []; + for (const attribute of this.getAttributeNames()){ + attributes.push([ + attribute, + this.getAttribute(attribute) + ]); + } + return new Element(this.nodeName, null, attributes, CTOR_KEY); + } + get childElementCount() { + return this._getChildNodesMutator().elementsView().length; + } + get className() { + return this.#currentClassName; + } + set className(className) { + this.#classList.value = className; + } + get classList() { + return this.#classList; + } + get outerHTML() { + return getOuterOrInnerHtml(this, true); + } + set outerHTML(html) { + if (this.parentNode) { + const { parentElement, parentNode } = this; + let contextLocalName = parentElement?.localName; + switch(parentNode.nodeType){ + case NodeType.DOCUMENT_NODE: + { + throw new DOMException("Modifications are not allowed for this document"); + } + // setting outerHTML, step 4. Document Fragment + // ref: https://w3c.github.io/DOM-Parsing/#dom-element-outerhtml + case NodeType.DOCUMENT_FRAGMENT_NODE: + { + contextLocalName = "body"; + // fall-through + } + default: + { + const { childNodes: newChildNodes } = fragmentNodesFromString(html, contextLocalName).childNodes[0]; + const mutator = parentNode._getChildNodesMutator(); + const insertionIndex = mutator.indexOf(this); + for(let i = newChildNodes.length - 1; i >= 0; i--){ + const child = newChildNodes[i]; + mutator.splice(insertionIndex, 0, child); + child._setParent(parentNode); + child._setOwnerDocument(parentNode.ownerDocument); + } + this.remove(); + } + } + } + } + get innerHTML() { + return getOuterOrInnerHtml(this, false); + } + set innerHTML(html) { + // Remove all children + for (const child of this.childNodes){ + child._setParent(null); + } + const mutator = this._getChildNodesMutator(); + mutator.splice(0, this.childNodes.length); + // Parse HTML into new children + if (html.length) { + const parsed = fragmentNodesFromString(html, this.localName); + for (const child of parsed.childNodes[0].childNodes){ + mutator.push(child); + } + for (const child of this.childNodes){ + child._setParent(this); + child._setOwnerDocument(this.ownerDocument); + } + } + } + get innerText() { + return this.textContent; + } + set innerText(text) { + this.textContent = text; + } + get children() { + return this._getChildNodesMutator().elementsView(); + } + get id() { + return this.#currentId || ""; + } + set id(id) { + this.setAttribute("id", id); + } + get dataset() { + if (this.#datasetProxy) { + return this.#datasetProxy; + } + this.#datasetProxy = new Proxy({}, { + get: (_target, property, _receiver)=>{ + if (typeof property === "string") { + const attributeName = getDatasetHtmlAttrName(property); + return this.getAttribute(attributeName) ?? undefined; + } + return undefined; + }, + set: (_target, property, value, _receiver)=>{ + if (typeof property === "string") { + let attributeName = "data-"; + let prevChar = ""; + for (const char of property){ + // Step 1. https://html.spec.whatwg.org/multipage/dom.html#dom-domstringmap-setitem + if (prevChar === "-" && lowerCaseCharRe.test(char)) { + throw new DOMException("An invalid or illegal string was specified"); + } + // Step 4. https://html.spec.whatwg.org/multipage/dom.html#dom-domstringmap-setitem + if (!xmlNameCharRe.test(char)) { + throw new DOMException("String contains an invalid character"); + } + // Step 2. https://html.spec.whatwg.org/multipage/dom.html#dom-domstringmap-setitem + if (upperCaseCharRe.test(char)) { + attributeName += "-"; + } + attributeName += char.toLowerCase(); + prevChar = char; + } + this.setAttribute(attributeName, String(value)); + } + return true; + }, + deleteProperty: (_target, property)=>{ + if (typeof property === "string") { + const attributeName = getDatasetHtmlAttrName(property); + this.removeAttribute(attributeName); + } + return true; + }, + ownKeys: (_target)=>{ + return this.getAttributeNames().flatMap((attributeName)=>{ + if (attributeName.startsWith?.("data-")) { + return [ + getDatasetJavascriptName(attributeName) + ]; + } else { + return []; + } + }); + }, + getOwnPropertyDescriptor: (_target, property)=>{ + if (typeof property === "string") { + const attributeName = getDatasetHtmlAttrName(property); + if (this.hasAttribute(attributeName)) { + return { + writable: true, + enumerable: true, + configurable: true + }; + } + } + return undefined; + }, + has: (_target, property)=>{ + if (typeof property === "string") { + const attributeName = getDatasetHtmlAttrName(property); + return this.hasAttribute(attributeName); + } + return false; + } + }); + return this.#datasetProxy; + } + getAttributeNames() { + if (!this.#namedNodeMap) { + const attributes = []; + // We preserve the order of the "id" and "class" attributes when + // returning the list of names with an uninitialized NamedNodeMap + const startWithClassAttr = Number(this.#hasIdAttribute > this.#hasClassNameAttribute); + for(let i = 0; i < 2; i++){ + const attributeIdx = (i + startWithClassAttr) % 2; + switch(attributeIdx){ + // "id" attribute + case 0: + { + ~this.#hasIdAttribute && attributes.push("id"); + break; + } + // "class" attribute + case 1: + { + ~this.#hasClassNameAttribute && attributes.push("class"); + break; + } + } + } + return attributes; + } + return this.attributes[getNamedNodeMapAttrNamesSym](); + } + getAttribute(rawName) { + const name = getLowerCase(String(rawName)); + switch(name){ + case "id": + { + if (~this.#hasIdAttribute) { + return this.#currentId; + } else { + return null; + } + } + case "class": + { + if (~this.#hasClassNameAttribute) { + return this.#currentClassName; + } else { + return null; + } + } + } + if (!this.#namedNodeMap) { + return null; + } + return this.attributes[getNamedNodeMapValueSym](name) ?? null; + } + setAttribute(rawName, value) { + const name = getLowerCase(String(rawName)); + const strValue = String(value); + let isNormalAttribute = false; + switch(name){ + case "id": + { + this.#currentId = strValue; + if (this.#hasIdAttribute === -1) { + this.#hasIdAttribute = this.#hasClassNameAttribute + 1; + } + break; + } + case "class": + { + this.#classList.value = strValue; + if (this.#hasClassNameAttribute === -1) { + this.#hasClassNameAttribute = this.#hasIdAttribute + 1; + } + break; + } + default: + { + isNormalAttribute = true; + } + } + if (this.#namedNodeMap || isNormalAttribute) { + this.attributes[setNamedNodeMapValueSym](name, strValue); + } + } + removeAttribute(rawName) { + const name = getLowerCase(String(rawName)); + switch(name){ + case "id": + { + this.#currentId = ""; + this.#hasIdAttribute = -1; + break; + } + case "class": + { + this.#classList.value = ""; + this.#hasClassNameAttribute = -1; + break; + } + } + if (!this.#namedNodeMap) { + return; + } + this.attributes[removeNamedNodeMapAttrSym](name); + } + toggleAttribute(rawName, force) { + const name = getLowerCase(String(rawName)); + if (this.hasAttribute(name)) { + if (force === undefined || force === false) { + this.removeAttribute(name); + return false; + } + return true; + } + if (force === undefined || force === true) { + this.setAttribute(name, ""); + return true; + } + return false; + } + hasAttribute(rawName) { + const name = getLowerCase(String(rawName)); + switch(name){ + case "id": + { + return Boolean(~this.#hasIdAttribute); + } + case "class": + { + return Boolean(~this.#hasClassNameAttribute); + } + } + if (!this.#namedNodeMap) { + return false; + } + return this.attributes[getNamedNodeMapValueSym](name) !== undefined; + } + hasAttributeNS(_namespace, rawName) { + const name = getLowerCase(String(rawName)); + switch(name){ + case "id": + { + return Boolean(~this.#hasIdAttribute); + } + case "class": + { + return Boolean(~this.#hasClassNameAttribute); + } + } + if (!this.#namedNodeMap) { + return false; + } + // TODO: Use namespace + return this.attributes[getNamedNodeMapValueSym](name) !== undefined; + } + replaceWith(...nodes) { + this._replaceWith(...nodes); + } + remove() { + this._remove(); + } + append(...nodes) { + const mutator = this._getChildNodesMutator(); + mutator.push(...nodesAndTextNodes(nodes, this)); + } + prepend(...nodes) { + const mutator = this._getChildNodesMutator(); + mutator.splice(0, 0, ...nodesAndTextNodes(nodes, this)); + } + before(...nodes) { + if (this.parentNode) { + insertBeforeAfter(this, nodes, true); + } + } + after(...nodes) { + if (this.parentNode) { + insertBeforeAfter(this, nodes, false); + } + } + get firstElementChild() { + const elements = this._getChildNodesMutator().elementsView(); + return elements[0] ?? null; + } + get lastElementChild() { + const elements = this._getChildNodesMutator().elementsView(); + return elements[elements.length - 1] ?? null; + } + get nextElementSibling() { + const parent = this.parentNode; + if (!parent) { + return null; + } + const mutator = parent._getChildNodesMutator(); + const index = mutator.indexOfElementsView(this); + const elements = mutator.elementsView(); + return elements[index + 1] ?? null; + } + get previousElementSibling() { + const parent = this.parentNode; + if (!parent) { + return null; + } + const mutator = parent._getChildNodesMutator(); + const index = mutator.indexOfElementsView(this); + const elements = mutator.elementsView(); + return elements[index - 1] ?? null; + } + querySelector(selectors) { + if (!this.ownerDocument) { + throw new Error("Element must have an owner document"); + } + return this.ownerDocument._nwapi.first(selectors, this); + } + querySelectorAll(selectors) { + if (!this.ownerDocument) { + throw new Error("Element must have an owner document"); + } + const nodeList = new NodeList(); + const mutator = nodeList[nodeListMutatorSym](); + for (const match of this.ownerDocument._nwapi.select(selectors, this)){ + mutator.push(match); + } + return nodeList; + } + matches(selectorString) { + return this.ownerDocument._nwapi.match(selectorString, this); + } + closest(selectorString) { + const { match } = this.ownerDocument._nwapi; // See note below + // deno-lint-ignore no-this-alias + let el = this; + do { + // Note: Not using `el.matches(selectorString)` because on a browser if you override + // `matches`, you *don't* see it being used by `closest`. + if (match(selectorString, el)) { + return el; + } + el = el.parentElement; + }while (el !== null) + return null; + } + // TODO: DRY!!! + getElementById(id) { + if (!this._hasInitializedChildNodes()) { + return null; + } + for (const child of this.childNodes){ + if (child.nodeType === NodeType.ELEMENT_NODE) { + if (child.id === id) { + return child; + } + const search = child.getElementById(id); + if (search) { + return search; + } + } + } + return null; + } + getElementsByTagName(tagName) { + if (!this._hasInitializedChildNodes()) { + return []; + } + const fixCaseTagName = getUpperCase(tagName); + if (fixCaseTagName === "*") { + return this._getElementsByTagNameWildcard([]); + } else { + return this._getElementsByTagName(fixCaseTagName, []); + } + } + _getElementsByTagNameWildcard(search) { + if (!this._hasInitializedChildNodes()) { + return search; + } + for (const child of this.childNodes){ + if (child.nodeType === NodeType.ELEMENT_NODE) { + search.push(child); + child._getElementsByTagNameWildcard(search); + } + } + return search; + } + _getElementsByTagName(tagName, search) { + if (!this._hasInitializedChildNodes()) { + return search; + } + for (const child of this.childNodes){ + if (child.nodeType === NodeType.ELEMENT_NODE) { + if (child.tagName === tagName) { + search.push(child); + } + child._getElementsByTagName(tagName, search); + } + } + return search; + } + getElementsByClassName(className) { + if (!this._hasInitializedChildNodes()) { + return []; + } + return getElementsByClassName(this, className.trim().split(/\s+/), []); + } + getElementsByTagNameNS(_namespace, localName) { + if (!this._hasInitializedChildNodes()) { + return []; + } + // TODO: Use namespace + return this.getElementsByTagName(localName); + } +} +UtilTypes.Element = Element; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvZGVub19kb21AdjAuMS40OS9zcmMvZG9tL2VsZW1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1RPUl9LRVkgfSBmcm9tIFwiLi4vY29uc3RydWN0b3ItbG9jay50c1wiO1xuaW1wb3J0IHsgZnJhZ21lbnROb2Rlc0Zyb21TdHJpbmcgfSBmcm9tIFwiLi4vZGVzZXJpYWxpemUudHNcIjtcbmltcG9ydCB7IE5vZGUsIG5vZGVzQW5kVGV4dE5vZGVzLCBOb2RlVHlwZSB9IGZyb20gXCIuL25vZGUudHNcIjtcbmltcG9ydCB7IE5vZGVMaXN0LCBub2RlTGlzdE11dGF0b3JTeW0gfSBmcm9tIFwiLi9ub2RlLWxpc3QudHNcIjtcbmltcG9ydCB7IEhUTUxDb2xsZWN0aW9uIH0gZnJvbSBcIi4vaHRtbC1jb2xsZWN0aW9uLnRzXCI7XG5pbXBvcnQge1xuICBnZXREYXRhc2V0SHRtbEF0dHJOYW1lLFxuICBnZXREYXRhc2V0SmF2YXNjcmlwdE5hbWUsXG4gIGdldEVsZW1lbnRzQnlDbGFzc05hbWUsXG4gIGdldE91dGVyT3JJbm5lckh0bWwsXG4gIGluc2VydEJlZm9yZUFmdGVyLFxuICBsb3dlckNhc2VDaGFyUmUsXG4gIHVwcGVyQ2FzZUNoYXJSZSxcbn0gZnJvbSBcIi4vdXRpbHMudHNcIjtcbmltcG9ydCBVdGlsVHlwZXMgZnJvbSBcIi4vdXRpbHMtdHlwZXMudHNcIjtcbmltcG9ydCB7IGdldExvd2VyQ2FzZSwgZ2V0VXBwZXJDYXNlIH0gZnJvbSBcIi4vc3RyaW5nLWNhY2hlLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRE9NVG9rZW5MaXN0IHtcbiAgW2luZGV4OiBudW1iZXJdOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBET01Ub2tlbkxpc3Qge1xuICAvLyBNaW5pbXVtIG51bWJlciBvZiBjbGFzc25hbWVzL3Rva2VucyBpbiBvcmRlciB0byBzd2l0Y2ggZnJvbVxuICAvLyBhbiBhcnJheS1iYWNrZWQgdG8gYSBzZXQtYmFja2VkIGxpc3RcbiAgc3RhdGljICNET01fVE9LRU5fTElTVF9NSU5fU0VUX1NJWkUgPSAzMiBhcyBjb25zdDtcblxuICAjX3ZhbHVlID0gXCJcIjtcbiAgZ2V0ICN2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy4jX3ZhbHVlO1xuICB9XG4gIHNldCAjdmFsdWUoXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgKSB7XG4gICAgdGhpcy4jX3ZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy4jb25DaGFuZ2UodmFsdWUpO1xuICB9XG4gICNzZXQ6IHN0cmluZ1tdIHwgU2V0PHN0cmluZz4gPSBbXTtcbiAgI29uQ2hhbmdlOiAoY2xhc3NOYW1lOiBzdHJpbmcpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgb25DaGFuZ2U6IChjbGFzc05hbWU6IHN0cmluZykgPT4gdm9pZCxcbiAgICBrZXk6IHR5cGVvZiBDVE9SX0tFWSxcbiAgKSB7XG4gICAgaWYgKGtleSAhPT0gQ1RPUl9LRVkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbGxlZ2FsIGNvbnN0cnVjdG9yXCIpO1xuICAgIH1cbiAgICB0aGlzLiNvbkNoYW5nZSA9IG9uQ2hhbmdlO1xuICB9XG5cbiAgc3RhdGljICNpbnZhbGlkVG9rZW4oXG4gICAgdG9rZW46IHN0cmluZyxcbiAgKSB7XG4gICAgcmV0dXJuIHRva2VuID09PSBcIlwiIHx8IC9bXFx0XFxuXFxmXFxyIF0vLnRlc3QodG9rZW4pO1xuICB9XG5cbiAgI3NldEluZGljZXMoKSB7XG4gICAgY29uc3QgY2xhc3NlcyA9IEFycmF5LmZyb20odGhpcy4jc2V0KTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNsYXNzZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXNbaV0gPSBjbGFzc2VzW2ldO1xuICAgIH1cbiAgfVxuXG4gIHNldCB2YWx1ZShcbiAgICBpbnB1dDogc3RyaW5nLFxuICApIHtcbiAgICB0aGlzLiN2YWx1ZSA9IGlucHV0O1xuICAgIHRoaXMuI3NldCA9IGlucHV0XG4gICAgICAudHJpbSgpXG4gICAgICAuc3BsaXQoL1tcXHRcXG5cXGZcXHJcXHNdKy9nKVxuICAgICAgLmZpbHRlcihCb29sZWFuKTtcblxuICAgIGlmICh0aGlzLiNzZXQubGVuZ3RoID4gRE9NVG9rZW5MaXN0LiNET01fVE9LRU5fTElTVF9NSU5fU0VUX1NJWkUpIHtcbiAgICAgIHRoaXMuI3NldCA9IG5ldyBTZXQodGhpcy4jc2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZGVkdXBsaWNhdGVkU2V0OiBzdHJpbmdbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHRoaXMuI3NldCkge1xuICAgICAgICBpZiAoIWRlZHVwbGljYXRlZFNldC5pbmNsdWRlcyhlbGVtZW50KSkge1xuICAgICAgICAgIGRlZHVwbGljYXRlZFNldC5wdXNoKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLiNzZXQgPSBkZWR1cGxpY2F0ZWRTZXQ7XG4gICAgfVxuXG4gICAgdGhpcy4jc2V0SW5kaWNlcygpO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI192YWx1ZTtcbiAgfVxuXG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy4jc2V0LmNvbnN0cnVjdG9yID09PSBBcnJheSkge1xuICAgICAgcmV0dXJuIHRoaXMuI3NldC5sZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAodGhpcy4jc2V0IGFzIFNldDxzdHJpbmc+KS5zaXplO1xuICAgIH1cbiAgfVxuXG4gICplbnRyaWVzKCk6IEl0ZXJhYmxlSXRlcmF0b3I8W251bWJlciwgc3RyaW5nXT4ge1xuICAgIGNvbnN0IGFycmF5ID0gQXJyYXkuZnJvbSh0aGlzLiNzZXQpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgIHlpZWxkIFtpLCBhcnJheVtpXV07XG4gICAgfVxuICB9XG5cbiAgKnZhbHVlcygpOiBJdGVyYWJsZUl0ZXJhdG9yPHN0cmluZz4ge1xuICAgIHlpZWxkKiB0aGlzLiNzZXQudmFsdWVzKCk7XG4gIH1cblxuICAqa2V5cygpOiBJdGVyYWJsZUl0ZXJhdG9yPG51bWJlcj4ge1xuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHlpZWxkIGk7XG4gICAgfVxuICB9XG5cbiAgKltTeW1ib2wuaXRlcmF0b3JdKCk6IEl0ZXJhYmxlSXRlcmF0b3I8c3RyaW5nPiB7XG4gICAgeWllbGQqIHRoaXMuI3NldC52YWx1ZXMoKTtcbiAgfVxuXG4gIGl0ZW0oXG4gICAgaW5kZXg6IG51bWJlcixcbiAgKTogc3RyaW5nIHtcbiAgICBpbmRleCA9IE51bWJlcihpbmRleCk7XG4gICAgaWYgKE51bWJlci5pc05hTihpbmRleCkgfHwgaW5kZXggPT09IEluZmluaXR5KSBpbmRleCA9IDA7XG4gICAgcmV0dXJuIHRoaXNbTWF0aC50cnVuYyhpbmRleCkgJSAyICoqIDMyXSA/PyBudWxsO1xuICB9XG5cbiAgY29udGFpbnMoXG4gICAgZWxlbWVudDogc3RyaW5nLFxuICApOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy4jc2V0LmNvbnN0cnVjdG9yID09PSBBcnJheSkge1xuICAgICAgcmV0dXJuIHRoaXMuI3NldC5pbmNsdWRlcyhlbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICh0aGlzLiNzZXQgYXMgU2V0PHN0cmluZz4pLmhhcyhlbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICAjYXJyYXlBZGQoZWxlbWVudDogc3RyaW5nKSB7XG4gICAgY29uc3QgYXJyYXkgPSB0aGlzLiNzZXQgYXMgc3RyaW5nW107XG4gICAgaWYgKCFhcnJheS5pbmNsdWRlcyhlbGVtZW50KSkge1xuICAgICAgdGhpc1thcnJheS5sZW5ndGhdID0gZWxlbWVudDtcbiAgICAgIGFycmF5LnB1c2goZWxlbWVudCk7XG4gICAgfVxuICB9XG4gICNzZXRBZGQoZWxlbWVudDogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2V0ID0gdGhpcy4jc2V0IGFzIFNldDxzdHJpbmc+O1xuICAgIGNvbnN0IHsgc2l6ZSB9ID0gc2V0O1xuICAgIHNldC5hZGQoZWxlbWVudCk7XG4gICAgaWYgKHNpemUgPCBzZXQuc2l6ZSkge1xuICAgICAgdGhpc1tzaXplXSA9IGVsZW1lbnQ7XG4gICAgfVxuICB9XG5cbiAgYWRkKFxuICAgIC4uLmVsZW1lbnRzOiBBcnJheTxzdHJpbmc+XG4gICkge1xuICAgIGNvbnN0IG1ldGhvZCA9XG4gICAgICAodGhpcy4jc2V0LmNvbnN0cnVjdG9yID09PSBBcnJheSA/IHRoaXMuI2FycmF5QWRkIDogdGhpcy4jc2V0QWRkKS5iaW5kKFxuICAgICAgICB0aGlzLFxuICAgICAgKTtcblxuICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBlbGVtZW50cykge1xuICAgICAgaWYgKERPTVRva2VuTGlzdC4jaW52YWxpZFRva2VuKGVsZW1lbnQpKSB7XG4gICAgICAgIHRocm93IG5ldyBET01FeGNlcHRpb24oXG4gICAgICAgICAgXCJGYWlsZWQgdG8gZXhlY3V0ZSAnYWRkJyBvbiAnRE9NVG9rZW5MaXN0JzogVGhlIHRva2VuIHByb3ZpZGVkIG11c3Qgbm90IGJlIGVtcHR5LlwiLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBtZXRob2QoZWxlbWVudCk7XG4gICAgfVxuICAgIHRoaXMuI3VwZGF0ZUNsYXNzU3RyaW5nKCk7XG4gIH1cblxuICAjYXJyYXlSZW1vdmUoZWxlbWVudDogc3RyaW5nKSB7XG4gICAgY29uc3QgYXJyYXkgPSB0aGlzLiNzZXQgYXMgc3RyaW5nW107XG4gICAgY29uc3QgaW5kZXggPSBhcnJheS5pbmRleE9mKGVsZW1lbnQpO1xuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICBhcnJheS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuICAjc2V0UmVtb3ZlKGVsZW1lbnQ6IHN0cmluZykge1xuICAgICh0aGlzLiNzZXQgYXMgU2V0PHN0cmluZz4pLmRlbGV0ZShlbGVtZW50KTtcbiAgfVxuXG4gIHJlbW92ZShcbiAgICAuLi5lbGVtZW50czogQXJyYXk8c3RyaW5nPlxuICApIHtcbiAgICBjb25zdCBtZXRob2QgPVxuICAgICAgKHRoaXMuI3NldC5jb25zdHJ1Y3RvciA9PT0gQXJyYXkgPyB0aGlzLiNhcnJheVJlbW92ZSA6IHRoaXMuI3NldFJlbW92ZSlcbiAgICAgICAgLmJpbmQodGhpcyk7XG4gICAgY29uc3Qgc2l6ZSA9IHRoaXMubGVuZ3RoO1xuICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBlbGVtZW50cykge1xuICAgICAgaWYgKERPTVRva2VuTGlzdC4jaW52YWxpZFRva2VuKGVsZW1lbnQpKSB7XG4gICAgICAgIHRocm93IG5ldyBET01FeGNlcHRpb24oXG4gICAgICAgICAgXCJGYWlsZWQgdG8gZXhlY3V0ZSAncmVtb3ZlJyBvbiAnRE9NVG9rZW5MaXN0JzogVGhlIHRva2VuIHByb3ZpZGVkIG11c3Qgbm90IGJlIGVtcHR5LlwiLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgbWV0aG9kKGVsZW1lbnQpO1xuICAgIH1cbiAgICBjb25zdCBuZXdTaXplID0gdGhpcy5sZW5ndGg7XG4gICAgaWYgKHNpemUgIT09IG5ld1NpemUpIHtcbiAgICAgIGZvciAobGV0IGkgPSBuZXdTaXplOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzW2ldO1xuICAgICAgfVxuICAgICAgdGhpcy4jc2V0SW5kaWNlcygpO1xuICAgIH1cbiAgICB0aGlzLiN1cGRhdGVDbGFzc1N0cmluZygpO1xuICB9XG5cbiAgcmVwbGFjZShcbiAgICBvbGRUb2tlbjogc3RyaW5nLFxuICAgIG5ld1Rva2VuOiBzdHJpbmcsXG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlzQXJyYXlCYWNrZWQgPSB0aGlzLiNzZXQuY29uc3RydWN0b3IgPT09IEFycmF5O1xuICAgIGNvbnN0IHJlbW92ZU1ldGhvZCA9IChpc0FycmF5QmFja2VkID8gdGhpcy4jYXJyYXlSZW1vdmUgOiB0aGlzLiNzZXRSZW1vdmUpXG4gICAgICAuYmluZCh0aGlzKTtcbiAgICBjb25zdCBhZGRNZXRob2QgPSAoaXNBcnJheUJhY2tlZCA/IHRoaXMuI2FycmF5QWRkIDogdGhpcy4jc2V0QWRkKS5iaW5kKFxuICAgICAgdGhpcyxcbiAgICApO1xuICAgIGlmIChbb2xkVG9rZW4sIG5ld1Rva2VuXS5zb21lKCh2KSA9PiBET01Ub2tlbkxpc3QuI2ludmFsaWRUb2tlbih2KSkpIHtcbiAgICAgIHRocm93IG5ldyBET01FeGNlcHRpb24oXG4gICAgICAgIFwiRmFpbGVkIHRvIGV4ZWN1dGUgJ3JlcGxhY2UnIG9uICdET01Ub2tlbkxpc3QnOiBUaGUgdG9rZW4gcHJvdmlkZWQgbXVzdCBub3QgYmUgZW1wdHkuXCIsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuY29udGFpbnMob2xkVG9rZW4pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udGFpbnMobmV3VG9rZW4pKSB7XG4gICAgICB0aGlzLnJlbW92ZShvbGRUb2tlbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW92ZU1ldGhvZChvbGRUb2tlbik7XG4gICAgICBhZGRNZXRob2QobmV3VG9rZW4pO1xuICAgICAgdGhpcy4jc2V0SW5kaWNlcygpO1xuICAgICAgdGhpcy4jdXBkYXRlQ2xhc3NTdHJpbmcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzdXBwb3J0cygpOiBuZXZlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm90IGltcGxlbWVudGVkXCIpO1xuICB9XG5cbiAgdG9nZ2xlKFxuICAgIGVsZW1lbnQ6IHN0cmluZyxcbiAgICBmb3JjZT86IGJvb2xlYW4sXG4gICk6IGJvb2xlYW4ge1xuICAgIGlmIChmb3JjZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcGVyYXRpb24gPSBmb3JjZSA/IFwiYWRkXCIgOiBcInJlbW92ZVwiO1xuICAgICAgdGhpc1tvcGVyYXRpb25dKGVsZW1lbnQpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb250YWlucyA9IHRoaXMuY29udGFpbnMoZWxlbWVudCk7XG4gICAgICBjb25zdCBvcGVyYXRpb24gPSBjb250YWlucyA/IFwicmVtb3ZlXCIgOiBcImFkZFwiO1xuICAgICAgdGhpc1tvcGVyYXRpb25dKGVsZW1lbnQpO1xuICAgICAgcmV0dXJuICFjb250YWlucztcbiAgICB9XG4gIH1cblxuICBmb3JFYWNoKFxuICAgIGNhbGxiYWNrOiAodmFsdWU6IHN0cmluZywgaW5kZXg6IG51bWJlciwgbGlzdDogRE9NVG9rZW5MaXN0KSA9PiB2b2lkLFxuICApIHtcbiAgICBmb3IgKGNvbnN0IFtpLCB2YWx1ZV0gb2YgdGhpcy5lbnRyaWVzKCkpIHtcbiAgICAgIGNhbGxiYWNrKHZhbHVlLCBpLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlQ2xhc3NTdHJpbmcoKSB7XG4gICAgdGhpcy4jdmFsdWUgPSBBcnJheS5mcm9tKHRoaXMuI3NldCkuam9pbihcIiBcIik7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLiNzZXQuY29uc3RydWN0b3IgPT09IEFycmF5ICYmXG4gICAgICB0aGlzLiNzZXQubGVuZ3RoID4gRE9NVG9rZW5MaXN0LiNET01fVE9LRU5fTElTVF9NSU5fU0VUX1NJWkVcbiAgICApIHtcbiAgICAgIHRoaXMuI3NldCA9IG5ldyBTZXQodGhpcy4jc2V0KTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgaW5pdGlhbGl6ZUNsYXNzTGlzdFN5bSA9IFN5bWJvbChcImluaXRpYWxpemVDbGFzc0xpc3RTeW1cIik7XG5jb25zdCBkb21Ub2tlbkxpc3RDdXJyZW50RWxlbWVudFN5bSA9IFN5bWJvbChcImRvbVRva2VuTGlzdEN1cnJlbnRFbGVtZW50U3ltXCIpO1xuLyoqXG4gKiBUaGUgcHVycG9zZSBvZiB0aGlzIHVuaW5pdGlhbGl6ZWQgRE9NVG9rZW5MaXN0IGlzIHRvIGNvbnN1bWUgbGVzcyBtZW1vcnlcbiAqIHRoYW4gdGhlIGFjdHVhbCBET01Ub2tlbkxpc3QgY2xhc3MuIEJ5IG1lYXN1cmVtZW50cyBvZiBEZW5vIHYyLjEuMCAoVjggMTMuMC4yNDUuMTItcnVzdHkpXG4gKiB0aGlzIGNsYXNzIGNvbnN1bWVzIDQ4IGJ5dGVzIHdoaWxlIHRoZSBzbWFsbGVzdCBET01Ub2tlbkxpc3QgY29uc3VtZXMgNDg4XG4gKiBieXRlc1xuICovXG5jbGFzcyBVbmluaXRpYWxpemVkRE9NVG9rZW5MaXN0IHtcbiAgLy8gVGhpcyB3aWxsIGFsd2F5cyBiZSBwb3B1bGF0ZWQgd2l0aCB0aGUgY3VycmVudCBlbGVtZW50XG4gIC8vIGJlaW5nIHF1ZXJpZWRcblxuICBbZG9tVG9rZW5MaXN0Q3VycmVudEVsZW1lbnRTeW1dOiBFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihcbiAgICBjdXJyZW50RWxlbWVudDogRWxlbWVudCxcbiAgKSB7XG4gICAgdGhpc1tkb21Ub2tlbkxpc3RDdXJyZW50RWxlbWVudFN5bV0gPSBjdXJyZW50RWxlbWVudDtcbiAgfVxuXG4gICNnZXRJbml0aWFsaXplZCgpOiBET01Ub2tlbkxpc3QgfCBudWxsIHtcbiAgICBjb25zdCBjdXJyZW50Q2xhc3NMaXN0ID0gdGhpc1tkb21Ub2tlbkxpc3RDdXJyZW50RWxlbWVudFN5bV0uY2xhc3NMaXN0O1xuICAgIGlmIChjdXJyZW50Q2xhc3NMaXN0ID09PSB0aGlzIGFzIHVua25vd24gYXMgRE9NVG9rZW5MaXN0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudENsYXNzTGlzdDtcbiAgfVxuXG4gIHNldCB2YWx1ZShpbnB1dDogc3RyaW5nKSB7XG4gICAgdGhpc1tkb21Ub2tlbkxpc3RDdXJyZW50RWxlbWVudFN5bV1baW5pdGlhbGl6ZUNsYXNzTGlzdFN5bV0oKTtcbiAgICB0aGlzW2RvbVRva2VuTGlzdEN1cnJlbnRFbGVtZW50U3ltXS5jbGFzc0xpc3QudmFsdWUgPSBTdHJpbmcoaW5wdXQpO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI2dldEluaXRpYWxpemVkKCk/LnZhbHVlID8/IFwiXCI7XG4gIH1cblxuICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuI2dldEluaXRpYWxpemVkKCk/Lmxlbmd0aCA/PyAwO1xuICB9XG5cbiAgKmVudHJpZXMoKTogSXRlcmFibGVJdGVyYXRvcjxbbnVtYmVyLCBzdHJpbmddPiB7XG4gICAgY29uc3QgaW5pdGlhbGl6ZWQgPSB0aGlzLiNnZXRJbml0aWFsaXplZCgpO1xuICAgIGlmIChpbml0aWFsaXplZCkge1xuICAgICAgeWllbGQqIGluaXRpYWxpemVkLmVudHJpZXMoKTtcbiAgICB9XG4gIH1cbiAgKnZhbHVlcygpOiBJdGVyYWJsZUl0ZXJhdG9yPHN0cmluZz4ge1xuICAgIGNvbnN0IGluaXRpYWxpemVkID0gdGhpcy4jZ2V0SW5pdGlhbGl6ZWQoKTtcbiAgICBpZiAoaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHlpZWxkKiBpbml0aWFsaXplZC52YWx1ZXMoKTtcbiAgICB9XG4gIH1cbiAgKmtleXMoKTogSXRlcmFibGVJdGVyYXRvcjxudW1iZXI+IHtcbiAgICBjb25zdCBpbml0aWFsaXplZCA9IHRoaXMuI2dldEluaXRpYWxpemVkKCk7XG4gICAgaWYgKGluaXRpYWxpemVkKSB7XG4gICAgICB5aWVsZCogaW5pdGlhbGl6ZWQua2V5cygpO1xuICAgIH1cbiAgfVxuXG4gICpbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYWJsZUl0ZXJhdG9yPHN0cmluZz4ge1xuICAgIHlpZWxkKiB0aGlzLnZhbHVlcygpO1xuICB9XG5cbiAgaXRlbShpbmRleDogbnVtYmVyKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuI2dldEluaXRpYWxpemVkKCk/Lml0ZW0oaW5kZXgpID8/IG51bGw7XG4gIH1cblxuICBjb250YWlucyhlbGVtZW50OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jZ2V0SW5pdGlhbGl6ZWQoKT8uY29udGFpbnMoZWxlbWVudCkgPz8gZmFsc2U7XG4gIH1cblxuICBhZGQoLi4uZWxlbWVudHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpc1tkb21Ub2tlbkxpc3RDdXJyZW50RWxlbWVudFN5bV1baW5pdGlhbGl6ZUNsYXNzTGlzdFN5bV0oKTtcbiAgICB0aGlzW2RvbVRva2VuTGlzdEN1cnJlbnRFbGVtZW50U3ltXS5jbGFzc0xpc3QuYWRkKC4uLmVsZW1lbnRzKTtcbiAgfVxuXG4gIHJlbW92ZSguLi5lbGVtZW50czogc3RyaW5nW10pIHtcbiAgICB0aGlzLiNnZXRJbml0aWFsaXplZCgpPy5yZW1vdmUoLi4uZWxlbWVudHMpO1xuICB9XG4gIHJlcGxhY2Uob2xkVG9rZW46IHN0cmluZywgbmV3VG9rZW46IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLiNnZXRJbml0aWFsaXplZCgpPy5yZXBsYWNlKG9sZFRva2VuLCBuZXdUb2tlbikgPz8gZmFsc2U7XG4gIH1cblxuICBzdXBwb3J0cygpOiBuZXZlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm90IGltcGxlbWVudGVkXCIpO1xuICB9XG5cbiAgdG9nZ2xlKFxuICAgIGVsZW1lbnQ6IHN0cmluZyxcbiAgICBmb3JjZT86IGJvb2xlYW4sXG4gICk6IGJvb2xlYW4ge1xuICAgIGlmIChmb3JjZSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiB0aGlzLiNnZXRJbml0aWFsaXplZCgpPy50b2dnbGUoZWxlbWVudCwgZm9yY2UpID8/IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXNbZG9tVG9rZW5MaXN0Q3VycmVudEVsZW1lbnRTeW1dW2luaXRpYWxpemVDbGFzc0xpc3RTeW1dKCk7XG4gICAgdGhpc1tkb21Ub2tlbkxpc3RDdXJyZW50RWxlbWVudFN5bV0uY2xhc3NMaXN0LmFkZChlbGVtZW50KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGZvckVhY2goXG4gICAgY2FsbGJhY2s6ICh2YWx1ZTogc3RyaW5nLCBpbmRleDogbnVtYmVyLCBsaXN0OiBET01Ub2tlbkxpc3QpID0+IHZvaWQsXG4gICkge1xuICAgIHRoaXMuI2dldEluaXRpYWxpemVkKCk/LmZvckVhY2goY2FsbGJhY2spO1xuICB9XG59XG5cbmNvbnN0IHNldE5hbWVkTm9kZU1hcE93bmVyRWxlbWVudFN5bSA9IFN5bWJvbChcInNldE5hbWVkTm9kZU1hcE93bmVyRWxlbWVudFN5bVwiKTtcbmNvbnN0IHNldEF0dHJWYWx1ZVN5bSA9IFN5bWJvbChcInNldEF0dHJWYWx1ZVN5bVwiKTtcbmV4cG9ydCBjbGFzcyBBdHRyIGV4dGVuZHMgTm9kZSB7XG4gICNuYW1lZE5vZGVNYXA6IE5hbWVkTm9kZU1hcCB8IG51bGwgPSBudWxsO1xuICAjbmFtZSA9IFwiXCI7XG4gICN2YWx1ZSA9IFwiXCI7XG4gICNvd25lckVsZW1lbnQ6IEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBtYXA6IE5hbWVkTm9kZU1hcCB8IG51bGwsXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHZhbHVlOiBzdHJpbmcsXG4gICAga2V5OiB0eXBlb2YgQ1RPUl9LRVksXG4gICkge1xuICAgIGlmIChrZXkgIT09IENUT1JfS0VZKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSWxsZWdhbCBjb25zdHJ1Y3RvclwiKTtcbiAgICB9XG4gICAgc3VwZXIobmFtZSwgTm9kZVR5cGUuQVRUUklCVVRFX05PREUsIG51bGwsIENUT1JfS0VZKTtcblxuICAgIHRoaXMuI25hbWUgPSBuYW1lO1xuICAgIHRoaXMuI3ZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy4jbmFtZWROb2RlTWFwID0gbWFwO1xuICB9XG5cbiAgW3NldE5hbWVkTm9kZU1hcE93bmVyRWxlbWVudFN5bV0ob3duZXJFbGVtZW50OiBFbGVtZW50IHwgbnVsbCkge1xuICAgIHRoaXMuI293bmVyRWxlbWVudCA9IG93bmVyRWxlbWVudDtcbiAgICB0aGlzLiNuYW1lZE5vZGVNYXAgPSBvd25lckVsZW1lbnQ/LmF0dHJpYnV0ZXMgPz8gbnVsbDtcblxuICAgIGlmIChvd25lckVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX3NldE93bmVyRG9jdW1lbnQob3duZXJFbGVtZW50Lm93bmVyRG9jdW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIFtzZXRBdHRyVmFsdWVTeW1dKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLiN2YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgb3ZlcnJpZGUgX3NoYWxsb3dDbG9uZSgpOiBBdHRyIHtcbiAgICBjb25zdCBuZXdBdHRyID0gbmV3IEF0dHIobnVsbCwgdGhpcy4jbmFtZSwgdGhpcy4jdmFsdWUsIENUT1JfS0VZKTtcbiAgICBuZXdBdHRyLl9zZXRPd25lckRvY3VtZW50KHRoaXMub3duZXJEb2N1bWVudCk7XG4gICAgcmV0dXJuIG5ld0F0dHI7XG4gIH1cblxuICBvdmVycmlkZSBjbG9uZU5vZGUoKTogQXR0ciB7XG4gICAgcmV0dXJuIHN1cGVyLmNsb25lTm9kZSgpIGFzIEF0dHI7XG4gIH1cblxuICBvdmVycmlkZSBhcHBlbmRDaGlsZCgpOiBOb2RlIHtcbiAgICB0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKFwiQ2Fubm90IGFkZCBjaGlsZHJlbiB0byBhbiBBdHRyaWJ1dGVcIik7XG4gIH1cblxuICBvdmVycmlkZSByZXBsYWNlQ2hpbGQoKTogTm9kZSB7XG4gICAgdGhyb3cgbmV3IERPTUV4Y2VwdGlvbihcIkNhbm5vdCBhZGQgY2hpbGRyZW4gdG8gYW4gQXR0cmlidXRlXCIpO1xuICB9XG5cbiAgb3ZlcnJpZGUgaW5zZXJ0QmVmb3JlKCk6IE5vZGUge1xuICAgIHRocm93IG5ldyBET01FeGNlcHRpb24oXCJDYW5ub3QgYWRkIGNoaWxkcmVuIHRvIGFuIEF0dHJpYnV0ZVwiKTtcbiAgfVxuXG4gIG92ZXJyaWRlIHJlbW92ZUNoaWxkKCk6IE5vZGUge1xuICAgIHRocm93IG5ldyBET01FeGNlcHRpb24oXG4gICAgICBcIlRoZSBub2RlIHRvIGJlIHJlbW92ZWQgaXMgbm90IGEgY2hpbGQgb2YgdGhpcyBub2RlXCIsXG4gICAgKTtcbiAgfVxuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI25hbWU7XG4gIH1cblxuICBnZXQgbG9jYWxOYW1lKCk6IHN0cmluZyB7XG4gICAgLy8gVE9ETzogV2hlbiB3ZSBtYWtlIG5hbWVzcGFjZXMgYSB0aGluZyB0aGlzIG5lZWRzXG4gICAgLy8gdG8gYmUgdXBkYXRlZFxuICAgIHJldHVybiB0aGlzLiNuYW1lO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI3ZhbHVlO1xuICB9XG5cbiAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLiN2YWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy4jbmFtZWROb2RlTWFwKSB7XG4gICAgICB0aGlzLiNuYW1lZE5vZGVNYXBbc2V0TmFtZWROb2RlTWFwVmFsdWVTeW1dKFxuICAgICAgICB0aGlzLiNuYW1lLFxuICAgICAgICB0aGlzLiN2YWx1ZSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG93bmVyRWxlbWVudCgpOiBFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuI293bmVyRWxlbWVudCA/PyBudWxsO1xuICB9XG5cbiAgZ2V0IHNwZWNpZmllZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIFRPRE9cbiAgZ2V0IHByZWZpeCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5hbWVkTm9kZU1hcCB7XG4gIFtpbmRleDogbnVtYmVyXTogQXR0cjtcbn1cblxuY29uc3Qgc2V0TmFtZWROb2RlTWFwVmFsdWVTeW0gPSBTeW1ib2woXCJzZXROYW1lZE5vZGVNYXBWYWx1ZVN5bVwiKTtcbmNvbnN0IGdldE5hbWVkTm9kZU1hcFZhbHVlU3ltID0gU3ltYm9sKFwiZ2V0TmFtZWROb2RlTWFwVmFsdWVTeW1cIik7XG5jb25zdCBnZXROYW1lZE5vZGVNYXBBdHRyTmFtZXNTeW0gPSBTeW1ib2woXCJnZXROYW1lZE5vZGVNYXBBdHRyTmFtZXNTeW1cIik7XG5jb25zdCBnZXROYW1lZE5vZGVNYXBBdHRyTm9kZVN5bSA9IFN5bWJvbChcImdldE5hbWVkTm9kZU1hcEF0dHJOb2RlU3ltXCIpO1xuY29uc3QgcmVtb3ZlTmFtZWROb2RlTWFwQXR0clN5bSA9IFN5bWJvbChcInJlbW92ZU5hbWVkTm9kZU1hcEF0dHJTeW1cIik7XG5leHBvcnQgY2xhc3MgTmFtZWROb2RlTWFwIHtcbiAgc3RhdGljICNpbmRleGVkQXR0ckFjY2VzcyA9IGZ1bmN0aW9uIChcbiAgICB0aGlzOiBOYW1lZE5vZGVNYXAsXG4gICAgbWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+LFxuICAgIGluZGV4OiBudW1iZXIsXG4gICk6IEF0dHIgfCB1bmRlZmluZWQge1xuICAgIGlmIChpbmRleCArIDEgPiB0aGlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBhdHRyaWJ1dGUgPSBPYmplY3RcbiAgICAgIC5rZXlzKG1hcClcbiAgICAgIC5maWx0ZXIoKGF0dHJpYnV0ZSkgPT4gbWFwW2F0dHJpYnV0ZV0gIT09IHVuZGVmaW5lZClbaW5kZXhdXG4gICAgICA/LnNsaWNlKDEpOyAvLyBSZW1vdmUgXCJhXCIgZm9yIHNhZmVBdHRyTmFtZVxuICAgIHJldHVybiB0aGlzW2dldE5hbWVkTm9kZU1hcEF0dHJOb2RlU3ltXShhdHRyaWJ1dGUpO1xuICB9O1xuICAjb25BdHRyTm9kZUNoYW5nZTogKGF0dHI6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IG51bGwpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgb3duZXJFbGVtZW50OiBFbGVtZW50LFxuICAgIG9uQXR0ck5vZGVDaGFuZ2U6IChhdHRyOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudWxsKSA9PiB2b2lkLFxuICAgIGtleTogdHlwZW9mIENUT1JfS0VZLFxuICApIHtcbiAgICBpZiAoa2V5ICE9PSBDVE9SX0tFWSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIklsbGVnYWwgY29uc3RydWN0b3IuXCIpO1xuICAgIH1cbiAgICB0aGlzLiNvd25lckVsZW1lbnQgPSBvd25lckVsZW1lbnQ7XG4gICAgdGhpcy4jb25BdHRyTm9kZUNoYW5nZSA9IG9uQXR0ck5vZGVDaGFuZ2U7XG5cbiAgICAvLyBSZXRhaW4gb3JkZXJpbmcgb2YgYW55IHByZWNlZGluZyBpZCBvciBjbGFzcyBhdHRyaWJ1dGVzXG4gICAgZm9yIChjb25zdCBhdHRyIG9mIG93bmVyRWxlbWVudC5nZXRBdHRyaWJ1dGVOYW1lcygpKSB7XG4gICAgICB0aGlzW3NldE5hbWVkTm9kZU1hcFZhbHVlU3ltXShcbiAgICAgICAgYXR0cixcbiAgICAgICAgb3duZXJFbGVtZW50LmdldEF0dHJpYnV0ZShhdHRyKSBhcyBzdHJpbmcsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gICNhdHRyTm9kZUNhY2hlOiBSZWNvcmQ8c3RyaW5nLCBBdHRyIHwgdW5kZWZpbmVkPiA9IHt9O1xuICAjbWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+ID0ge307XG4gICNsZW5ndGggPSAwO1xuICAjY2FwYWNpdHkgPSAwO1xuICAjb3duZXJFbGVtZW50OiBFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgW2dldE5hbWVkTm9kZU1hcEF0dHJOb2RlU3ltXShhdHRyaWJ1dGU6IHN0cmluZyk6IEF0dHIge1xuICAgIGNvbnN0IHNhZmVBdHRyTmFtZSA9IFwiYVwiICsgYXR0cmlidXRlO1xuICAgIGxldCBhdHRyTm9kZSA9IHRoaXMuI2F0dHJOb2RlQ2FjaGVbc2FmZUF0dHJOYW1lXTtcbiAgICBpZiAoIWF0dHJOb2RlKSB7XG4gICAgICBhdHRyTm9kZSA9IHRoaXMuI2F0dHJOb2RlQ2FjaGVbc2FmZUF0dHJOYW1lXSA9IG5ldyBBdHRyKFxuICAgICAgICB0aGlzLFxuICAgICAgICBhdHRyaWJ1dGUsXG4gICAgICAgIHRoaXMuI21hcFtzYWZlQXR0ck5hbWVdIGFzIHN0cmluZyxcbiAgICAgICAgQ1RPUl9LRVksXG4gICAgICApO1xuICAgICAgYXR0ck5vZGVbc2V0TmFtZWROb2RlTWFwT3duZXJFbGVtZW50U3ltXSh0aGlzLiNvd25lckVsZW1lbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBhdHRyTm9kZTtcbiAgfVxuXG4gIFtnZXROYW1lZE5vZGVNYXBBdHRyTmFtZXNTeW1dKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBuYW1lczogc3RyaW5nW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLiNtYXApKSB7XG4gICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuYW1lcy5wdXNoKG5hbWUuc2xpY2UoMSkpOyAvLyBSZW1vdmUgXCJhXCIgZm9yIHNhZmVBdHRyTmFtZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuYW1lcztcbiAgfVxuXG4gIFtnZXROYW1lZE5vZGVNYXBWYWx1ZVN5bV0oYXR0cmlidXRlOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHNhZmVBdHRyTmFtZSA9IFwiYVwiICsgYXR0cmlidXRlO1xuICAgIHJldHVybiB0aGlzLiNtYXBbc2FmZUF0dHJOYW1lXTtcbiAgfVxuXG4gIFtzZXROYW1lZE5vZGVNYXBWYWx1ZVN5bV0oYXR0cmlidXRlOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGJ1YmJsZSA9IGZhbHNlKSB7XG4gICAgY29uc3Qgc2FmZUF0dHJOYW1lID0gXCJhXCIgKyBhdHRyaWJ1dGU7XG4gICAgaWYgKHRoaXMuI21hcFtzYWZlQXR0ck5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuI2xlbmd0aCsrO1xuXG4gICAgICBpZiAodGhpcy4jbGVuZ3RoID4gdGhpcy4jY2FwYWNpdHkpIHtcbiAgICAgICAgdGhpcy4jY2FwYWNpdHkgPSB0aGlzLiNsZW5ndGg7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy4jY2FwYWNpdHkgLSAxO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgU3RyaW5nKHRoaXMuI2NhcGFjaXR5IC0gMSksIHtcbiAgICAgICAgICBnZXQ6IE5hbWVkTm9kZU1hcC4jaW5kZXhlZEF0dHJBY2Nlc3MuYmluZCh0aGlzLCB0aGlzLiNtYXAsIGluZGV4KSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLiNhdHRyTm9kZUNhY2hlW3NhZmVBdHRyTmFtZV0pIHtcbiAgICAgIHRoaXMuI2F0dHJOb2RlQ2FjaGVbc2FmZUF0dHJOYW1lXSFbc2V0QXR0clZhbHVlU3ltXSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy4jbWFwW3NhZmVBdHRyTmFtZV0gPSB2YWx1ZTtcblxuICAgIGlmIChidWJibGUpIHtcbiAgICAgIHRoaXMuI29uQXR0ck5vZGVDaGFuZ2UoYXR0cmlidXRlLCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBpcyByZW1vdmVkIGZyb21cbiAgICogYW4gZWxlbWVudFxuICAgKi9cbiAgW3JlbW92ZU5hbWVkTm9kZU1hcEF0dHJTeW1dKGF0dHJpYnV0ZTogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2FmZUF0dHJOYW1lID0gXCJhXCIgKyBhdHRyaWJ1dGU7XG4gICAgaWYgKHRoaXMuI21hcFtzYWZlQXR0ck5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuI2xlbmd0aC0tO1xuICAgICAgdGhpcy4jbWFwW3NhZmVBdHRyTmFtZV0gPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLiNvbkF0dHJOb2RlQ2hhbmdlKGF0dHJpYnV0ZSwgbnVsbCk7XG5cbiAgICAgIGNvbnN0IGF0dHJOb2RlID0gdGhpcy4jYXR0ck5vZGVDYWNoZVtzYWZlQXR0ck5hbWVdO1xuICAgICAgaWYgKGF0dHJOb2RlKSB7XG4gICAgICAgIGF0dHJOb2RlW3NldE5hbWVkTm9kZU1hcE93bmVyRWxlbWVudFN5bV0obnVsbCk7XG4gICAgICAgIHRoaXMuI2F0dHJOb2RlQ2FjaGVbc2FmZUF0dHJOYW1lXSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAqW1N5bWJvbC5pdGVyYXRvcl0oKTogR2VuZXJhdG9yPEF0dHI+IHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHlpZWxkIHRoaXNbaV07XG4gICAgfVxuICB9XG5cbiAgZ2V0IGxlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLiNsZW5ndGg7XG4gIH1cblxuICAvLyBGSVhNRTogVGhpcyBtZXRob2Qgc2hvdWxkIGFjY2VwdCBhbnl0aGluZyBhbmQgYmFzaWNhbGx5XG4gIC8vIGNvZXJjZSBhbnkgbm9uIG51bWJlcnMgKGFuZCBJbmZpbml0eS8tSW5maW5pdHkpIGludG8gMFxuICBpdGVtKGluZGV4OiBudW1iZXIpOiBBdHRyIHwgbnVsbCB7XG4gICAgaWYgKGluZGV4ID49IHRoaXMuI2xlbmd0aCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNbaW5kZXhdO1xuICB9XG5cbiAgZ2V0TmFtZWRJdGVtKGF0dHJpYnV0ZTogc3RyaW5nKTogQXR0ciB8IG51bGwge1xuICAgIGNvbnN0IHNhZmVBdHRyTmFtZSA9IFwiYVwiICsgYXR0cmlidXRlO1xuICAgIGlmICh0aGlzLiNtYXBbc2FmZUF0dHJOYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpc1tnZXROYW1lZE5vZGVNYXBBdHRyTm9kZVN5bV0oYXR0cmlidXRlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHNldE5hbWVkSXRlbShhdHRyTm9kZTogQXR0cikge1xuICAgIGlmIChhdHRyTm9kZS5vd25lckVsZW1lbnQpIHtcbiAgICAgIHRocm93IG5ldyBET01FeGNlcHRpb24oXCJBdHRyaWJ1dGUgYWxyZWFkeSBpbiB1c2VcIik7XG4gICAgfVxuXG4gICAgY29uc3Qgc2FmZUF0dHJOYW1lID0gXCJhXCIgKyBhdHRyTm9kZS5uYW1lO1xuICAgIGNvbnN0IHByZXZpb3VzQXR0ciA9IHRoaXMuI2F0dHJOb2RlQ2FjaGVbc2FmZUF0dHJOYW1lXTtcbiAgICBpZiAocHJldmlvdXNBdHRyKSB7XG4gICAgICBwcmV2aW91c0F0dHJbc2V0TmFtZWROb2RlTWFwT3duZXJFbGVtZW50U3ltXShudWxsKTtcbiAgICAgIHRoaXMuI21hcFtzYWZlQXR0ck5hbWVdID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGF0dHJOb2RlW3NldE5hbWVkTm9kZU1hcE93bmVyRWxlbWVudFN5bV0odGhpcy4jb3duZXJFbGVtZW50KTtcbiAgICB0aGlzLiNhdHRyTm9kZUNhY2hlW3NhZmVBdHRyTmFtZV0gPSBhdHRyTm9kZTtcbiAgICB0aGlzW3NldE5hbWVkTm9kZU1hcFZhbHVlU3ltXShhdHRyTm9kZS5uYW1lLCBhdHRyTm9kZS52YWx1ZSwgdHJ1ZSk7XG4gIH1cblxuICByZW1vdmVOYW1lZEl0ZW0oYXR0cmlidXRlOiBzdHJpbmcpOiBBdHRyIHtcbiAgICBjb25zdCBzYWZlQXR0ck5hbWUgPSBcImFcIiArIGF0dHJpYnV0ZTtcbiAgICBpZiAodGhpcy4jbWFwW3NhZmVBdHRyTmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgYXR0ck5vZGUgPSB0aGlzW2dldE5hbWVkTm9kZU1hcEF0dHJOb2RlU3ltXShhdHRyaWJ1dGUpO1xuICAgICAgdGhpc1tyZW1vdmVOYW1lZE5vZGVNYXBBdHRyU3ltXShhdHRyaWJ1dGUpO1xuICAgICAgcmV0dXJuIGF0dHJOb2RlO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBET01FeGNlcHRpb24oXCJOb2RlIHdhcyBub3QgZm91bmRcIik7XG4gIH1cbn1cblxuY29uc3QgWE1MX05BTUVTVEFSVF9DSEFSX1JFX1NSQyA9IFwiOkEtWmEtel9cIiArXG4gIFN0cmluZy5yYXdgXFx1e0MwfS1cXHV7RDZ9XFx1e0Q4fS1cXHV7RjZ9XFx1e0Y4fS1cXHV7MkZGfVxcdXszNzB9LVxcdXszN0R9YCArXG4gIFN0cmluZ1xuICAgIC5yYXdgXFx1ezM3Rn0tXFx1ezFGRkZ9XFx1ezIwMEN9LVxcdXsyMDBEfVxcdXsyMDcwfS1cXHV7MjE4Rn1cXHV7MkMwMH0tXFx1ezJGRUZ9YCArXG4gIFN0cmluZ1xuICAgIC5yYXdgXFx1ezMwMDF9LVxcdXtEN0ZGfVxcdXtGOTAwfS1cXHV7RkRDRn1cXHV7RkRGMH0tXFx1e0ZGRkR9XFx1ezEwMDAwfS1cXHV7RUZGRkZ9YDtcbmNvbnN0IFhNTF9OQU1FX0NIQVJfUkVfU1JDID0gWE1MX05BTUVTVEFSVF9DSEFSX1JFX1NSQyArXG4gIFN0cmluZy5yYXdgXFx1e0I3fVxcdXswMzAwfS1cXHV7MDM2Rn1cXHV7MjAzRn0tXFx1ezIwNDB9MC05Li1gO1xuY29uc3QgeG1sTmFtZXN0YXJ0Q2hhclJlID0gbmV3IFJlZ0V4cChgWyR7WE1MX05BTUVTVEFSVF9DSEFSX1JFX1NSQ31dYCwgXCJ1XCIpO1xuY29uc3QgeG1sTmFtZUNoYXJSZSA9IG5ldyBSZWdFeHAoYFske1hNTF9OQU1FX0NIQVJfUkVfU1JDfV1gLCBcInVcIik7XG5cbmV4cG9ydCBjbGFzcyBFbGVtZW50IGV4dGVuZHMgTm9kZSB7XG4gICNuYW1lZE5vZGVNYXA6IE5hbWVkTm9kZU1hcCB8IG51bGwgPSBudWxsO1xuICBnZXQgYXR0cmlidXRlcygpOiBOYW1lZE5vZGVNYXAge1xuICAgIGlmICghdGhpcy4jbmFtZWROb2RlTWFwKSB7XG4gICAgICB0aGlzLiNuYW1lZE5vZGVNYXAgPSBuZXcgTmFtZWROb2RlTWFwKHRoaXMsIChhdHRyaWJ1dGUsIHZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzUmVtb3ZlZCA9IHZhbHVlID09PSBudWxsO1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICB2YWx1ZSA9IFwiXCI7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKGF0dHJpYnV0ZSkge1xuICAgICAgICAgIGNhc2UgXCJjbGFzc1wiOiB7XG4gICAgICAgICAgICBpZiAoaXNSZW1vdmVkKSB7XG4gICAgICAgICAgICAgIHRoaXMuI2hhc0NsYXNzTmFtZUF0dHJpYnV0ZSA9IC0xO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLiNoYXNDbGFzc05hbWVBdHRyaWJ1dGUgPT09IC0xKSB7XG4gICAgICAgICAgICAgIHRoaXMuI2hhc0NsYXNzTmFtZUF0dHJpYnV0ZSA9IHRoaXMuI2hhc0lkQXR0cmlidXRlICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRoaXMgbXVzdCBoYXBwZW4gYWZ0ZXIgdGhlIGF0dHJpYnV0ZSBpcyBtYXJrZWQgcmVtb3ZlZFxuICAgICAgICAgICAgdGhpcy4jY3VycmVudENsYXNzTmFtZSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy4jY2xhc3NMaXN0LnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBcImlkXCI6IHtcbiAgICAgICAgICAgIGlmIChpc1JlbW92ZWQpIHtcbiAgICAgICAgICAgICAgdGhpcy4jaGFzSWRBdHRyaWJ1dGUgPSAtMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy4jaGFzSWRBdHRyaWJ1dGUgPT09IC0xKSB7XG4gICAgICAgICAgICAgIHRoaXMuI2hhc0lkQXR0cmlidXRlID0gdGhpcy4jaGFzQ2xhc3NOYW1lQXR0cmlidXRlICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuI2N1cnJlbnRJZCA9IHZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCBDVE9SX0tFWSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuI25hbWVkTm9kZU1hcDtcbiAgfVxuXG4gICNkYXRhc2V0UHJveHk6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4gfCBudWxsID0gbnVsbDtcbiAgI2N1cnJlbnRJZCA9IFwiXCI7XG4gICNjdXJyZW50Q2xhc3NOYW1lID0gXCJcIjtcbiAgI2hhc0lkQXR0cmlidXRlID0gLTE7XG4gICNoYXNDbGFzc05hbWVBdHRyaWJ1dGUgPSAtMTtcblxuICAvLyBPbmx5IGluaXRpYWxpemUgYSBjbGFzc0xpc3Qgd2hlbiB3ZSBuZWVkIG9uZVxuICAjY2xhc3NMaXN0SW5zdGFuY2U6IERPTVRva2VuTGlzdCA9IG5ldyBVbmluaXRpYWxpemVkRE9NVG9rZW5MaXN0KFxuICAgIHRoaXMsXG4gICkgYXMgdW5rbm93biBhcyBET01Ub2tlbkxpc3Q7XG4gIGdldCAjY2xhc3NMaXN0KCk6IERPTVRva2VuTGlzdCB7XG4gICAgcmV0dXJuIHRoaXMuI2NsYXNzTGlzdEluc3RhbmNlO1xuICB9XG5cbiAgW2luaXRpYWxpemVDbGFzc0xpc3RTeW1dKCkge1xuICAgIGlmICh0aGlzLiNjbGFzc0xpc3RJbnN0YW5jZS5jb25zdHJ1Y3RvciA9PT0gRE9NVG9rZW5MaXN0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy4jY2xhc3NMaXN0SW5zdGFuY2UgPSBuZXcgRE9NVG9rZW5MaXN0KFxuICAgICAgKGNsYXNzTmFtZSkgPT4ge1xuICAgICAgICBpZiAodGhpcy4jY3VycmVudENsYXNzTmFtZSAhPT0gY2xhc3NOYW1lKSB7XG4gICAgICAgICAgdGhpcy4jY3VycmVudENsYXNzTmFtZSA9IGNsYXNzTmFtZTtcbiAgICAgICAgICBpZiAodGhpcy4jaGFzQ2xhc3NOYW1lQXR0cmlidXRlID09PSAtMSkge1xuICAgICAgICAgICAgdGhpcy4jaGFzQ2xhc3NOYW1lQXR0cmlidXRlID0gdGhpcy4jaGFzSWRBdHRyaWJ1dGUgKyAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLiNuYW1lZE5vZGVNYXAgJiZcbiAgICAgICAgICAgICh0aGlzLmhhc0F0dHJpYnV0ZShcImNsYXNzXCIpIHx8IGNsYXNzTmFtZSAhPT0gXCJcIilcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlc1tzZXROYW1lZE5vZGVNYXBWYWx1ZVN5bV0oXCJjbGFzc1wiLCBjbGFzc05hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIENUT1JfS0VZLFxuICAgICk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICB0YWdOYW1lOiBzdHJpbmcsXG4gICAgcGFyZW50Tm9kZTogTm9kZSB8IG51bGwsXG4gICAgYXR0cmlidXRlczogW3N0cmluZywgc3RyaW5nXVtdLFxuICAgIGtleTogdHlwZW9mIENUT1JfS0VZLFxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIHRhZ05hbWUsXG4gICAgICBOb2RlVHlwZS5FTEVNRU5UX05PREUsXG4gICAgICBwYXJlbnROb2RlLFxuICAgICAga2V5LFxuICAgICk7XG5cbiAgICBmb3IgKGNvbnN0IGF0dHIgb2YgYXR0cmlidXRlcykge1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoYXR0clswXSwgYXR0clsxXSk7XG4gICAgfVxuXG4gICAgdGhpcy5ub2RlTmFtZSA9IGdldFVwcGVyQ2FzZSh0YWdOYW1lKTtcbiAgfVxuXG4gIGdldCB0YWdOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubm9kZU5hbWU7XG4gIH1cblxuICBnZXQgbG9jYWxOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGdldExvd2VyQ2FzZSh0aGlzLnRhZ05hbWUpO1xuICB9XG5cbiAgb3ZlcnJpZGUgX3NoYWxsb3dDbG9uZSgpOiBOb2RlIHtcbiAgICAvLyBGSVhNRTogVGhpcyBhdHRyaWJ1dGUgY29weWluZyBuZWVkcyB0byBhbHNvIGJlIGZpeGVkIGluIG90aGVyXG4gICAgLy8gZWxlbWVudHMgdGhhdCBvdmVycmlkZSBfc2hhbGxvd0Nsb25lIGxpa2UgPHRlbXBsYXRlPlxuICAgIGNvbnN0IGF0dHJpYnV0ZXM6IFtzdHJpbmcsIHN0cmluZ11bXSA9IFtdO1xuICAgIGZvciAoY29uc3QgYXR0cmlidXRlIG9mIHRoaXMuZ2V0QXR0cmlidXRlTmFtZXMoKSkge1xuICAgICAgYXR0cmlidXRlcy5wdXNoKFthdHRyaWJ1dGUsIHRoaXMuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSkhXSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgRWxlbWVudCh0aGlzLm5vZGVOYW1lLCBudWxsLCBhdHRyaWJ1dGVzLCBDVE9SX0tFWSk7XG4gIH1cblxuICBnZXQgY2hpbGRFbGVtZW50Q291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0Q2hpbGROb2Rlc011dGF0b3IoKS5lbGVtZW50c1ZpZXcoKS5sZW5ndGg7XG4gIH1cblxuICBnZXQgY2xhc3NOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI2N1cnJlbnRDbGFzc05hbWU7XG4gIH1cblxuICBzZXQgY2xhc3NOYW1lKGNsYXNzTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy4jY2xhc3NMaXN0LnZhbHVlID0gY2xhc3NOYW1lO1xuICB9XG5cbiAgZ2V0IGNsYXNzTGlzdCgpOiBET01Ub2tlbkxpc3Qge1xuICAgIHJldHVybiB0aGlzLiNjbGFzc0xpc3Q7XG4gIH1cblxuICBnZXQgb3V0ZXJIVE1MKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGdldE91dGVyT3JJbm5lckh0bWwodGhpcywgdHJ1ZSk7XG4gIH1cblxuICBzZXQgb3V0ZXJIVE1MKGh0bWw6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnBhcmVudE5vZGUpIHtcbiAgICAgIGNvbnN0IHsgcGFyZW50RWxlbWVudCwgcGFyZW50Tm9kZSB9ID0gdGhpcztcbiAgICAgIGxldCBjb250ZXh0TG9jYWxOYW1lID0gcGFyZW50RWxlbWVudD8ubG9jYWxOYW1lO1xuXG4gICAgICBzd2l0Y2ggKHBhcmVudE5vZGUubm9kZVR5cGUpIHtcbiAgICAgICAgY2FzZSBOb2RlVHlwZS5ET0NVTUVOVF9OT0RFOiB7XG4gICAgICAgICAgdGhyb3cgbmV3IERPTUV4Y2VwdGlvbihcbiAgICAgICAgICAgIFwiTW9kaWZpY2F0aW9ucyBhcmUgbm90IGFsbG93ZWQgZm9yIHRoaXMgZG9jdW1lbnRcIixcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2V0dGluZyBvdXRlckhUTUwsIHN0ZXAgNC4gRG9jdW1lbnQgRnJhZ21lbnRcbiAgICAgICAgLy8gcmVmOiBodHRwczovL3czYy5naXRodWIuaW8vRE9NLVBhcnNpbmcvI2RvbS1lbGVtZW50LW91dGVyaHRtbFxuICAgICAgICBjYXNlIE5vZGVUeXBlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6IHtcbiAgICAgICAgICBjb250ZXh0TG9jYWxOYW1lID0gXCJib2R5XCI7XG4gICAgICAgICAgLy8gZmFsbC10aHJvdWdoXG4gICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgY29uc3QgeyBjaGlsZE5vZGVzOiBuZXdDaGlsZE5vZGVzIH0gPVxuICAgICAgICAgICAgZnJhZ21lbnROb2Rlc0Zyb21TdHJpbmcoaHRtbCwgY29udGV4dExvY2FsTmFtZSEpLmNoaWxkTm9kZXNbMF07XG4gICAgICAgICAgY29uc3QgbXV0YXRvciA9IHBhcmVudE5vZGUuX2dldENoaWxkTm9kZXNNdXRhdG9yKCk7XG4gICAgICAgICAgY29uc3QgaW5zZXJ0aW9uSW5kZXggPSBtdXRhdG9yLmluZGV4T2YodGhpcyk7XG5cbiAgICAgICAgICBmb3IgKGxldCBpID0gbmV3Q2hpbGROb2Rlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBuZXdDaGlsZE5vZGVzW2ldO1xuICAgICAgICAgICAgbXV0YXRvci5zcGxpY2UoaW5zZXJ0aW9uSW5kZXgsIDAsIGNoaWxkKTtcbiAgICAgICAgICAgIGNoaWxkLl9zZXRQYXJlbnQocGFyZW50Tm9kZSk7XG4gICAgICAgICAgICBjaGlsZC5fc2V0T3duZXJEb2N1bWVudChwYXJlbnROb2RlLm93bmVyRG9jdW1lbnQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgaW5uZXJIVE1MKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGdldE91dGVyT3JJbm5lckh0bWwodGhpcywgZmFsc2UpO1xuICB9XG5cbiAgc2V0IGlubmVySFRNTChodG1sOiBzdHJpbmcpIHtcbiAgICAvLyBSZW1vdmUgYWxsIGNoaWxkcmVuXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkTm9kZXMpIHtcbiAgICAgIGNoaWxkLl9zZXRQYXJlbnQobnVsbCk7XG4gICAgfVxuXG4gICAgY29uc3QgbXV0YXRvciA9IHRoaXMuX2dldENoaWxkTm9kZXNNdXRhdG9yKCk7XG4gICAgbXV0YXRvci5zcGxpY2UoMCwgdGhpcy5jaGlsZE5vZGVzLmxlbmd0aCk7XG5cbiAgICAvLyBQYXJzZSBIVE1MIGludG8gbmV3IGNoaWxkcmVuXG4gICAgaWYgKGh0bWwubGVuZ3RoKSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSBmcmFnbWVudE5vZGVzRnJvbVN0cmluZyhodG1sLCB0aGlzLmxvY2FsTmFtZSk7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHBhcnNlZC5jaGlsZE5vZGVzWzBdLmNoaWxkTm9kZXMpIHtcbiAgICAgICAgbXV0YXRvci5wdXNoKGNoaWxkKTtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkTm9kZXMpIHtcbiAgICAgICAgY2hpbGQuX3NldFBhcmVudCh0aGlzKTtcbiAgICAgICAgY2hpbGQuX3NldE93bmVyRG9jdW1lbnQodGhpcy5vd25lckRvY3VtZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgaW5uZXJUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudGV4dENvbnRlbnQ7XG4gIH1cblxuICBzZXQgaW5uZXJUZXh0KHRleHQ6IHN0cmluZykge1xuICAgIHRoaXMudGV4dENvbnRlbnQgPSB0ZXh0O1xuICB9XG5cbiAgZ2V0IGNoaWxkcmVuKCk6IEhUTUxDb2xsZWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0Q2hpbGROb2Rlc011dGF0b3IoKS5lbGVtZW50c1ZpZXcoKTtcbiAgfVxuXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNjdXJyZW50SWQgfHwgXCJcIjtcbiAgfVxuXG4gIHNldCBpZChpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUoXCJpZFwiLCBpZCk7XG4gIH1cblxuICBnZXQgZGF0YXNldCgpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAodGhpcy4jZGF0YXNldFByb3h5KSB7XG4gICAgICByZXR1cm4gdGhpcy4jZGF0YXNldFByb3h5O1xuICAgIH1cblxuICAgIHRoaXMuI2RhdGFzZXRQcm94eSA9IG5ldyBQcm94eTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+Pih7fSwge1xuICAgICAgZ2V0OiAoX3RhcmdldCwgcHJvcGVydHksIF9yZWNlaXZlcikgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHByb3BlcnR5ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgY29uc3QgYXR0cmlidXRlTmFtZSA9IGdldERhdGFzZXRIdG1sQXR0ck5hbWUocHJvcGVydHkpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfSxcblxuICAgICAgc2V0OiAoX3RhcmdldCwgcHJvcGVydHksIHZhbHVlLCBfcmVjZWl2ZXIpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIGxldCBhdHRyaWJ1dGVOYW1lID0gXCJkYXRhLVwiO1xuXG4gICAgICAgICAgbGV0IHByZXZDaGFyID0gXCJcIjtcbiAgICAgICAgICBmb3IgKGNvbnN0IGNoYXIgb2YgcHJvcGVydHkpIHtcbiAgICAgICAgICAgIC8vIFN0ZXAgMS4gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG9tLmh0bWwjZG9tLWRvbXN0cmluZ21hcC1zZXRpdGVtXG4gICAgICAgICAgICBpZiAocHJldkNoYXIgPT09IFwiLVwiICYmIGxvd2VyQ2FzZUNoYXJSZS50ZXN0KGNoYXIpKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBET01FeGNlcHRpb24oXG4gICAgICAgICAgICAgICAgXCJBbiBpbnZhbGlkIG9yIGlsbGVnYWwgc3RyaW5nIHdhcyBzcGVjaWZpZWRcIixcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU3RlcCA0LiBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9kb20uaHRtbCNkb20tZG9tc3RyaW5nbWFwLXNldGl0ZW1cbiAgICAgICAgICAgIGlmICgheG1sTmFtZUNoYXJSZS50ZXN0KGNoYXIpKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBET01FeGNlcHRpb24oXCJTdHJpbmcgY29udGFpbnMgYW4gaW52YWxpZCBjaGFyYWN0ZXJcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFN0ZXAgMi4gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG9tLmh0bWwjZG9tLWRvbXN0cmluZ21hcC1zZXRpdGVtXG4gICAgICAgICAgICBpZiAodXBwZXJDYXNlQ2hhclJlLnRlc3QoY2hhcikpIHtcbiAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZSArPSBcIi1cIjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYXR0cmlidXRlTmFtZSArPSBjaGFyLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBwcmV2Q2hhciA9IGNoYXI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgU3RyaW5nKHZhbHVlKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0sXG5cbiAgICAgIGRlbGV0ZVByb3BlcnR5OiAoX3RhcmdldCwgcHJvcGVydHkpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZU5hbWUgPSBnZXREYXRhc2V0SHRtbEF0dHJOYW1lKHByb3BlcnR5KTtcbiAgICAgICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSxcblxuICAgICAgb3duS2V5czogKF90YXJnZXQpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICAgICAgICAuZ2V0QXR0cmlidXRlTmFtZXMoKVxuICAgICAgICAgIC5mbGF0TWFwKChhdHRyaWJ1dGVOYW1lKSA9PiB7XG4gICAgICAgICAgICBpZiAoYXR0cmlidXRlTmFtZS5zdGFydHNXaXRoPy4oXCJkYXRhLVwiKSkge1xuICAgICAgICAgICAgICByZXR1cm4gW2dldERhdGFzZXRKYXZhc2NyaXB0TmFtZShhdHRyaWJ1dGVOYW1lKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICB9LFxuXG4gICAgICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6IChfdGFyZ2V0LCBwcm9wZXJ0eSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHByb3BlcnR5ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgY29uc3QgYXR0cmlidXRlTmFtZSA9IGdldERhdGFzZXRIdG1sQXR0ck5hbWUocHJvcGVydHkpO1xuICAgICAgICAgIGlmICh0aGlzLmhhc0F0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH0sXG5cbiAgICAgIGhhczogKF90YXJnZXQsIHByb3BlcnR5KSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcHJvcGVydHkgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVOYW1lID0gZ2V0RGF0YXNldEh0bWxBdHRyTmFtZShwcm9wZXJ0eSk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaGFzQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLiNkYXRhc2V0UHJveHk7XG4gIH1cblxuICBnZXRBdHRyaWJ1dGVOYW1lcygpOiBzdHJpbmdbXSB7XG4gICAgaWYgKCF0aGlzLiNuYW1lZE5vZGVNYXApIHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBbXTtcblxuICAgICAgLy8gV2UgcHJlc2VydmUgdGhlIG9yZGVyIG9mIHRoZSBcImlkXCIgYW5kIFwiY2xhc3NcIiBhdHRyaWJ1dGVzIHdoZW5cbiAgICAgIC8vIHJldHVybmluZyB0aGUgbGlzdCBvZiBuYW1lcyB3aXRoIGFuIHVuaW5pdGlhbGl6ZWQgTmFtZWROb2RlTWFwXG4gICAgICBjb25zdCBzdGFydFdpdGhDbGFzc0F0dHIgPSBOdW1iZXIoXG4gICAgICAgIHRoaXMuI2hhc0lkQXR0cmlidXRlID4gdGhpcy4jaGFzQ2xhc3NOYW1lQXR0cmlidXRlLFxuICAgICAgKTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZUlkeCA9IChpICsgc3RhcnRXaXRoQ2xhc3NBdHRyKSAlIDI7XG4gICAgICAgIHN3aXRjaCAoYXR0cmlidXRlSWR4KSB7XG4gICAgICAgICAgLy8gXCJpZFwiIGF0dHJpYnV0ZVxuICAgICAgICAgIGNhc2UgMDoge1xuICAgICAgICAgICAgfnRoaXMuI2hhc0lkQXR0cmlidXRlICYmIGF0dHJpYnV0ZXMucHVzaChcImlkXCIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFwiY2xhc3NcIiBhdHRyaWJ1dGVcbiAgICAgICAgICBjYXNlIDE6IHtcbiAgICAgICAgICAgIH50aGlzLiNoYXNDbGFzc05hbWVBdHRyaWJ1dGUgJiYgYXR0cmlidXRlcy5wdXNoKFwiY2xhc3NcIik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlc1tnZXROYW1lZE5vZGVNYXBBdHRyTmFtZXNTeW1dKCk7XG4gIH1cblxuICBnZXRBdHRyaWJ1dGUocmF3TmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgbmFtZSA9IGdldExvd2VyQ2FzZShTdHJpbmcocmF3TmFtZSkpO1xuXG4gICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICBjYXNlIFwiaWRcIjoge1xuICAgICAgICBpZiAofnRoaXMuI2hhc0lkQXR0cmlidXRlKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuI2N1cnJlbnRJZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2FzZSBcImNsYXNzXCI6IHtcbiAgICAgICAgaWYgKH50aGlzLiNoYXNDbGFzc05hbWVBdHRyaWJ1dGUpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy4jY3VycmVudENsYXNzTmFtZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdGhpcy4jbmFtZWROb2RlTWFwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hdHRyaWJ1dGVzW2dldE5hbWVkTm9kZU1hcFZhbHVlU3ltXShuYW1lKSA/PyBudWxsO1xuICB9XG5cbiAgc2V0QXR0cmlidXRlKHJhd05hbWU6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIGNvbnN0IG5hbWUgPSBnZXRMb3dlckNhc2UoU3RyaW5nKHJhd05hbWUpKTtcbiAgICBjb25zdCBzdHJWYWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG4gICAgbGV0IGlzTm9ybWFsQXR0cmlidXRlID0gZmFsc2U7XG5cbiAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgIGNhc2UgXCJpZFwiOiB7XG4gICAgICAgIHRoaXMuI2N1cnJlbnRJZCA9IHN0clZhbHVlO1xuICAgICAgICBpZiAodGhpcy4jaGFzSWRBdHRyaWJ1dGUgPT09IC0xKSB7XG4gICAgICAgICAgdGhpcy4jaGFzSWRBdHRyaWJ1dGUgPSB0aGlzLiNoYXNDbGFzc05hbWVBdHRyaWJ1dGUgKyAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBcImNsYXNzXCI6IHtcbiAgICAgICAgdGhpcy4jY2xhc3NMaXN0LnZhbHVlID0gc3RyVmFsdWU7XG4gICAgICAgIGlmICh0aGlzLiNoYXNDbGFzc05hbWVBdHRyaWJ1dGUgPT09IC0xKSB7XG4gICAgICAgICAgdGhpcy4jaGFzQ2xhc3NOYW1lQXR0cmlidXRlID0gdGhpcy4jaGFzSWRBdHRyaWJ1dGUgKyAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBpc05vcm1hbEF0dHJpYnV0ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuI25hbWVkTm9kZU1hcCB8fCBpc05vcm1hbEF0dHJpYnV0ZSkge1xuICAgICAgdGhpcy5hdHRyaWJ1dGVzW3NldE5hbWVkTm9kZU1hcFZhbHVlU3ltXShuYW1lLCBzdHJWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlQXR0cmlidXRlKHJhd05hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IG5hbWUgPSBnZXRMb3dlckNhc2UoU3RyaW5nKHJhd05hbWUpKTtcbiAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgIGNhc2UgXCJpZFwiOiB7XG4gICAgICAgIHRoaXMuI2N1cnJlbnRJZCA9IFwiXCI7XG4gICAgICAgIHRoaXMuI2hhc0lkQXR0cmlidXRlID0gLTE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBcImNsYXNzXCI6IHtcbiAgICAgICAgdGhpcy4jY2xhc3NMaXN0LnZhbHVlID0gXCJcIjtcbiAgICAgICAgdGhpcy4jaGFzQ2xhc3NOYW1lQXR0cmlidXRlID0gLTE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdGhpcy4jbmFtZWROb2RlTWFwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hdHRyaWJ1dGVzW3JlbW92ZU5hbWVkTm9kZU1hcEF0dHJTeW1dKG5hbWUpO1xuICB9XG5cbiAgdG9nZ2xlQXR0cmlidXRlKHJhd05hbWU6IHN0cmluZywgZm9yY2U/OiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbmFtZSA9IGdldExvd2VyQ2FzZShTdHJpbmcocmF3TmFtZSkpO1xuICAgIGlmICh0aGlzLmhhc0F0dHJpYnV0ZShuYW1lKSkge1xuICAgICAgaWYgKChmb3JjZSA9PT0gdW5kZWZpbmVkKSB8fCAoZm9yY2UgPT09IGZhbHNlKSkge1xuICAgICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICgoZm9yY2UgPT09IHVuZGVmaW5lZCkgfHwgKGZvcmNlID09PSB0cnVlKSkge1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUobmFtZSwgXCJcIik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaGFzQXR0cmlidXRlKHJhd05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5hbWUgPSBnZXRMb3dlckNhc2UoU3RyaW5nKHJhd05hbWUpKTtcblxuICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgY2FzZSBcImlkXCI6IHtcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4ofnRoaXMuI2hhc0lkQXR0cmlidXRlKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJjbGFzc1wiOiB7XG4gICAgICAgIHJldHVybiBCb29sZWFuKH50aGlzLiNoYXNDbGFzc05hbWVBdHRyaWJ1dGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdGhpcy4jbmFtZWROb2RlTWFwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlc1tnZXROYW1lZE5vZGVNYXBWYWx1ZVN5bV0obmFtZSkgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGhhc0F0dHJpYnV0ZU5TKF9uYW1lc3BhY2U6IHN0cmluZywgcmF3TmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbmFtZSA9IGdldExvd2VyQ2FzZShTdHJpbmcocmF3TmFtZSkpO1xuXG4gICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICBjYXNlIFwiaWRcIjoge1xuICAgICAgICByZXR1cm4gQm9vbGVhbih+dGhpcy4jaGFzSWRBdHRyaWJ1dGUpO1xuICAgICAgfVxuICAgICAgY2FzZSBcImNsYXNzXCI6IHtcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4ofnRoaXMuI2hhc0NsYXNzTmFtZUF0dHJpYnV0ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLiNuYW1lZE5vZGVNYXApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBVc2UgbmFtZXNwYWNlXG4gICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlc1tnZXROYW1lZE5vZGVNYXBWYWx1ZVN5bV0obmFtZSkgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJlcGxhY2VXaXRoKC4uLm5vZGVzOiAoTm9kZSB8IHN0cmluZylbXSkge1xuICAgIHRoaXMuX3JlcGxhY2VXaXRoKC4uLm5vZGVzKTtcbiAgfVxuXG4gIHJlbW92ZSgpIHtcbiAgICB0aGlzLl9yZW1vdmUoKTtcbiAgfVxuXG4gIGFwcGVuZCguLi5ub2RlczogKE5vZGUgfCBzdHJpbmcpW10pIHtcbiAgICBjb25zdCBtdXRhdG9yID0gdGhpcy5fZ2V0Q2hpbGROb2Rlc011dGF0b3IoKTtcbiAgICBtdXRhdG9yLnB1c2goLi4ubm9kZXNBbmRUZXh0Tm9kZXMobm9kZXMsIHRoaXMpKTtcbiAgfVxuXG4gIHByZXBlbmQoLi4ubm9kZXM6IChOb2RlIHwgc3RyaW5nKVtdKSB7XG4gICAgY29uc3QgbXV0YXRvciA9IHRoaXMuX2dldENoaWxkTm9kZXNNdXRhdG9yKCk7XG4gICAgbXV0YXRvci5zcGxpY2UoMCwgMCwgLi4ubm9kZXNBbmRUZXh0Tm9kZXMobm9kZXMsIHRoaXMpKTtcbiAgfVxuXG4gIGJlZm9yZSguLi5ub2RlczogKE5vZGUgfCBzdHJpbmcpW10pIHtcbiAgICBpZiAodGhpcy5wYXJlbnROb2RlKSB7XG4gICAgICBpbnNlcnRCZWZvcmVBZnRlcih0aGlzLCBub2RlcywgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgYWZ0ZXIoLi4ubm9kZXM6IChOb2RlIHwgc3RyaW5nKVtdKSB7XG4gICAgaWYgKHRoaXMucGFyZW50Tm9kZSkge1xuICAgICAgaW5zZXJ0QmVmb3JlQWZ0ZXIodGhpcywgbm9kZXMsIGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZmlyc3RFbGVtZW50Q2hpbGQoKTogRWxlbWVudCB8IG51bGwge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gdGhpcy5fZ2V0Q2hpbGROb2Rlc011dGF0b3IoKS5lbGVtZW50c1ZpZXcoKTtcbiAgICByZXR1cm4gZWxlbWVudHNbMF0gPz8gbnVsbDtcbiAgfVxuXG4gIGdldCBsYXN0RWxlbWVudENoaWxkKCk6IEVsZW1lbnQgfCBudWxsIHtcbiAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuX2dldENoaWxkTm9kZXNNdXRhdG9yKCkuZWxlbWVudHNWaWV3KCk7XG4gICAgcmV0dXJuIGVsZW1lbnRzW2VsZW1lbnRzLmxlbmd0aCAtIDFdID8/IG51bGw7XG4gIH1cblxuICBnZXQgbmV4dEVsZW1lbnRTaWJsaW5nKCk6IEVsZW1lbnQgfCBudWxsIHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7XG5cbiAgICBpZiAoIXBhcmVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgbXV0YXRvciA9IHBhcmVudC5fZ2V0Q2hpbGROb2Rlc011dGF0b3IoKTtcbiAgICBjb25zdCBpbmRleCA9IG11dGF0b3IuaW5kZXhPZkVsZW1lbnRzVmlldyh0aGlzKTtcbiAgICBjb25zdCBlbGVtZW50cyA9IG11dGF0b3IuZWxlbWVudHNWaWV3KCk7XG4gICAgcmV0dXJuIGVsZW1lbnRzW2luZGV4ICsgMV0gPz8gbnVsbDtcbiAgfVxuXG4gIGdldCBwcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk6IEVsZW1lbnQgfCBudWxsIHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7XG5cbiAgICBpZiAoIXBhcmVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgbXV0YXRvciA9IHBhcmVudC5fZ2V0Q2hpbGROb2Rlc011dGF0b3IoKTtcbiAgICBjb25zdCBpbmRleCA9IG11dGF0b3IuaW5kZXhPZkVsZW1lbnRzVmlldyh0aGlzKTtcbiAgICBjb25zdCBlbGVtZW50cyA9IG11dGF0b3IuZWxlbWVudHNWaWV3KCk7XG4gICAgcmV0dXJuIGVsZW1lbnRzW2luZGV4IC0gMV0gPz8gbnVsbDtcbiAgfVxuXG4gIHF1ZXJ5U2VsZWN0b3I8VCA9IEVsZW1lbnQ+KHNlbGVjdG9yczogc3RyaW5nKTogVCB8IG51bGwge1xuICAgIGlmICghdGhpcy5vd25lckRvY3VtZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFbGVtZW50IG11c3QgaGF2ZSBhbiBvd25lciBkb2N1bWVudFwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5vd25lckRvY3VtZW50IS5fbndhcGkuZmlyc3Qoc2VsZWN0b3JzLCB0aGlzKSBhcyBUO1xuICB9XG5cbiAgcXVlcnlTZWxlY3RvckFsbDxUIGV4dGVuZHMgRWxlbWVudCA9IEVsZW1lbnQ+KFxuICAgIHNlbGVjdG9yczogc3RyaW5nLFxuICApOiBOb2RlTGlzdDxUPiB7XG4gICAgaWYgKCF0aGlzLm93bmVyRG9jdW1lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkVsZW1lbnQgbXVzdCBoYXZlIGFuIG93bmVyIGRvY3VtZW50XCIpO1xuICAgIH1cblxuICAgIGNvbnN0IG5vZGVMaXN0ID0gbmV3IE5vZGVMaXN0KCk7XG4gICAgY29uc3QgbXV0YXRvciA9IG5vZGVMaXN0W25vZGVMaXN0TXV0YXRvclN5bV0oKTtcblxuICAgIGZvciAoY29uc3QgbWF0Y2ggb2YgdGhpcy5vd25lckRvY3VtZW50IS5fbndhcGkuc2VsZWN0KHNlbGVjdG9ycywgdGhpcykpIHtcbiAgICAgIG11dGF0b3IucHVzaChtYXRjaCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVMaXN0IGFzIE5vZGVMaXN0PFQ+O1xuICB9XG5cbiAgbWF0Y2hlcyhzZWxlY3RvclN0cmluZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub3duZXJEb2N1bWVudCEuX253YXBpLm1hdGNoKHNlbGVjdG9yU3RyaW5nLCB0aGlzKTtcbiAgfVxuXG4gIGNsb3Nlc3Qoc2VsZWN0b3JTdHJpbmc6IHN0cmluZyk6IEVsZW1lbnQgfCBudWxsIHtcbiAgICBjb25zdCB7IG1hdGNoIH0gPSB0aGlzLm93bmVyRG9jdW1lbnQhLl9ud2FwaTsgLy8gU2VlIG5vdGUgYmVsb3dcbiAgICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLXRoaXMtYWxpYXNcbiAgICBsZXQgZWw6IEVsZW1lbnQgfCBudWxsID0gdGhpcztcbiAgICBkbyB7XG4gICAgICAvLyBOb3RlOiBOb3QgdXNpbmcgYGVsLm1hdGNoZXMoc2VsZWN0b3JTdHJpbmcpYCBiZWNhdXNlIG9uIGEgYnJvd3NlciBpZiB5b3Ugb3ZlcnJpZGVcbiAgICAgIC8vIGBtYXRjaGVzYCwgeW91ICpkb24ndCogc2VlIGl0IGJlaW5nIHVzZWQgYnkgYGNsb3Nlc3RgLlxuICAgICAgaWYgKG1hdGNoKHNlbGVjdG9yU3RyaW5nLCBlbCkpIHtcbiAgICAgICAgcmV0dXJuIGVsO1xuICAgICAgfVxuICAgICAgZWwgPSBlbC5wYXJlbnRFbGVtZW50O1xuICAgIH0gd2hpbGUgKGVsICE9PSBudWxsKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIFRPRE86IERSWSEhIVxuICBnZXRFbGVtZW50QnlJZChpZDogc3RyaW5nKTogRWxlbWVudCB8IG51bGwge1xuICAgIGlmICghdGhpcy5faGFzSW5pdGlhbGl6ZWRDaGlsZE5vZGVzKCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZE5vZGVzKSB7XG4gICAgICBpZiAoY2hpbGQubm9kZVR5cGUgPT09IE5vZGVUeXBlLkVMRU1FTlRfTk9ERSkge1xuICAgICAgICBpZiAoKDxFbGVtZW50PiBjaGlsZCkuaWQgPT09IGlkKSB7XG4gICAgICAgICAgcmV0dXJuIDxFbGVtZW50PiBjaGlsZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNlYXJjaCA9ICg8RWxlbWVudD4gY2hpbGQpLmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgICAgICAgaWYgKHNlYXJjaCkge1xuICAgICAgICAgIHJldHVybiBzZWFyY2g7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ05hbWU6IHN0cmluZyk6IEVsZW1lbnRbXSB7XG4gICAgaWYgKCF0aGlzLl9oYXNJbml0aWFsaXplZENoaWxkTm9kZXMoKSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGZpeENhc2VUYWdOYW1lID0gZ2V0VXBwZXJDYXNlKHRhZ05hbWUpO1xuXG4gICAgaWYgKGZpeENhc2VUYWdOYW1lID09PSBcIipcIikge1xuICAgICAgcmV0dXJuIDxFbGVtZW50W10+IHRoaXMuX2dldEVsZW1lbnRzQnlUYWdOYW1lV2lsZGNhcmQoW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gPEVsZW1lbnRbXT4gdGhpcy5fZ2V0RWxlbWVudHNCeVRhZ05hbWUoZml4Q2FzZVRhZ05hbWUsIFtdKTtcbiAgICB9XG4gIH1cblxuICBfZ2V0RWxlbWVudHNCeVRhZ05hbWVXaWxkY2FyZChzZWFyY2g6IE5vZGVbXSk6IE5vZGVbXSB7XG4gICAgaWYgKCF0aGlzLl9oYXNJbml0aWFsaXplZENoaWxkTm9kZXMoKSkge1xuICAgICAgcmV0dXJuIHNlYXJjaDtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGROb2Rlcykge1xuICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlID09PSBOb2RlVHlwZS5FTEVNRU5UX05PREUpIHtcbiAgICAgICAgc2VhcmNoLnB1c2goY2hpbGQpO1xuICAgICAgICAoPEVsZW1lbnQ+IGNoaWxkKS5fZ2V0RWxlbWVudHNCeVRhZ05hbWVXaWxkY2FyZChzZWFyY2gpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzZWFyY2g7XG4gIH1cblxuICBfZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnTmFtZTogc3RyaW5nLCBzZWFyY2g6IE5vZGVbXSk6IE5vZGVbXSB7XG4gICAgaWYgKCF0aGlzLl9oYXNJbml0aWFsaXplZENoaWxkTm9kZXMoKSkge1xuICAgICAgcmV0dXJuIHNlYXJjaDtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGROb2Rlcykge1xuICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlID09PSBOb2RlVHlwZS5FTEVNRU5UX05PREUpIHtcbiAgICAgICAgaWYgKCg8RWxlbWVudD4gY2hpbGQpLnRhZ05hbWUgPT09IHRhZ05hbWUpIHtcbiAgICAgICAgICBzZWFyY2gucHVzaChjaGlsZCk7XG4gICAgICAgIH1cblxuICAgICAgICAoPEVsZW1lbnQ+IGNoaWxkKS5fZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFnTmFtZSwgc2VhcmNoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2VhcmNoO1xuICB9XG5cbiAgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShjbGFzc05hbWU6IHN0cmluZyk6IEVsZW1lbnRbXSB7XG4gICAgaWYgKCF0aGlzLl9oYXNJbml0aWFsaXplZENoaWxkTm9kZXMoKSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxuICAgICAgdGhpcyxcbiAgICAgIGNsYXNzTmFtZS50cmltKCkuc3BsaXQoL1xccysvKSxcbiAgICAgIFtdLFxuICAgICkgYXMgRWxlbWVudFtdO1xuICB9XG5cbiAgZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyhfbmFtZXNwYWNlOiBzdHJpbmcsIGxvY2FsTmFtZTogc3RyaW5nKTogRWxlbWVudFtdIHtcbiAgICBpZiAoIXRoaXMuX2hhc0luaXRpYWxpemVkQ2hpbGROb2RlcygpKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgLy8gVE9ETzogVXNlIG5hbWVzcGFjZVxuICAgIHJldHVybiB0aGlzLmdldEVsZW1lbnRzQnlUYWdOYW1lKGxvY2FsTmFtZSk7XG4gIH1cbn1cblxuVXRpbFR5cGVzLkVsZW1lbnQgPSBFbGVtZW50O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFTLFFBQVEsUUFBUSx5QkFBeUI7QUFDbEQsU0FBUyx1QkFBdUIsUUFBUSxvQkFBb0I7QUFDNUQsU0FBUyxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxRQUFRLFlBQVk7QUFDOUQsU0FBUyxRQUFRLEVBQUUsa0JBQWtCLFFBQVEsaUJBQWlCO0FBRTlELFNBQ0Usc0JBQXNCLEVBQ3RCLHdCQUF3QixFQUN4QixzQkFBc0IsRUFDdEIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsZUFBZSxRQUNWLGFBQWE7QUFDcEIsT0FBTyxlQUFlLG1CQUFtQjtBQUN6QyxTQUFTLFlBQVksRUFBRSxZQUFZLFFBQVEsb0JBQW9CO2VBcUczRCxPQUFPLFFBQVE7QUEvRm5CLE9BQU8sTUFBTTtFQUNYLDhEQUE4RDtFQUM5RCx1Q0FBdUM7RUFDdkMsT0FBTyxDQUFBLDJCQUE0QixHQUFHLEdBQVk7RUFFbEQsQ0FBQSxNQUFPLEdBQUcsR0FBRztFQUNiLElBQUksQ0FBQSxLQUFNO0lBQ1IsT0FBTyxJQUFJLENBQUMsQ0FBQSxNQUFPO0VBQ3JCO0VBQ0EsSUFBSSxDQUFBLEtBQU0sQ0FDUixLQUFhO0lBRWIsSUFBSSxDQUFDLENBQUEsTUFBTyxHQUFHO0lBQ2YsSUFBSSxDQUFDLENB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 +// denoCacheMetadata=1433051206009036728,6311302407068132018
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/b1ecf2da2637e535c066eefcfbc2fe27606629100938bdda0a0a7b5d7d35bdd4.js b/vendor/gen/https/deno.land/b1ecf2da2637e535c066eefcfbc2fe27606629100938bdda0a0a7b5d7d35bdd4.js new file mode 100644 index 0000000..9898b06 --- /dev/null +++ b/vendor/gen/https/deno.land/b1ecf2da2637e535c066eefcfbc2fe27606629100938bdda0a0a7b5d7d35bdd4.js @@ -0,0 +1,23 @@ +import { Command } from "../command.ts"; +import { dim, italic } from "../deps.ts"; +import { FishCompletionsGenerator } from "./_fish_completions_generator.ts"; +/** Generates fish completions script. */ export class FishCompletionsCommand extends Command { + #cmd; + constructor(cmd){ + super(); + this.#cmd = cmd; + return this.description(()=>{ + const baseCmd = this.#cmd || this.getMainCommand(); + return `Generate shell completions for fish. + +To enable fish completions for this program add following line to your ${dim(italic("~/.config/fish/config.fish"))}: + + ${dim(italic(`source (${baseCmd.getPath()} completions fish | psub)`))}`; + }).noGlobals().action(()=>{ + const baseCmd = this.#cmd || this.getMainCommand(); + console.log(FishCompletionsGenerator.generate(baseCmd)); + }); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC9jb21wbGV0aW9ucy9maXNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiLi4vY29tbWFuZC50c1wiO1xuaW1wb3J0IHsgZGltLCBpdGFsaWMgfSBmcm9tIFwiLi4vZGVwcy50c1wiO1xuaW1wb3J0IHsgRmlzaENvbXBsZXRpb25zR2VuZXJhdG9yIH0gZnJvbSBcIi4vX2Zpc2hfY29tcGxldGlvbnNfZ2VuZXJhdG9yLnRzXCI7XG5cbi8qKiBHZW5lcmF0ZXMgZmlzaCBjb21wbGV0aW9ucyBzY3JpcHQuICovXG5leHBvcnQgY2xhc3MgRmlzaENvbXBsZXRpb25zQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICAjY21kPzogQ29tbWFuZDtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGNtZD86IENvbW1hbmQpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuI2NtZCA9IGNtZDtcbiAgICByZXR1cm4gdGhpc1xuICAgICAgLmRlc2NyaXB0aW9uKCgpID0+IHtcbiAgICAgICAgY29uc3QgYmFzZUNtZCA9IHRoaXMuI2NtZCB8fCB0aGlzLmdldE1haW5Db21tYW5kKCk7XG4gICAgICAgIHJldHVybiBgR2VuZXJhdGUgc2hlbGwgY29tcGxldGlvbnMgZm9yIGZpc2guXG5cblRvIGVuYWJsZSBmaXNoIGNvbXBsZXRpb25zIGZvciB0aGlzIHByb2dyYW0gYWRkIGZvbGxvd2luZyBsaW5lIHRvIHlvdXIgJHtcbiAgICAgICAgICBkaW0oaXRhbGljKFwifi8uY29uZmlnL2Zpc2gvY29uZmlnLmZpc2hcIikpXG4gICAgICAgIH06XG5cbiAgICAke2RpbShpdGFsaWMoYHNvdXJjZSAoJHtiYXNlQ21kLmdldFBhdGgoKX0gY29tcGxldGlvbnMgZmlzaCB8IHBzdWIpYCkpfWA7XG4gICAgICB9KVxuICAgICAgLm5vR2xvYmFscygpXG4gICAgICAuYWN0aW9uKCgpID0+IHtcbiAgICAgICAgY29uc3QgYmFzZUNtZCA9IHRoaXMuI2NtZCB8fCB0aGlzLmdldE1haW5Db21tYW5kKCk7XG4gICAgICAgIGNvbnNvbGUubG9nKEZpc2hDb21wbGV0aW9uc0dlbmVyYXRvci5nZW5lcmF0ZShiYXNlQ21kKSk7XG4gICAgICB9KTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsT0FBTyxRQUFRLGdCQUFnQjtBQUN4QyxTQUFTLEdBQUcsRUFBRSxNQUFNLFFBQVEsYUFBYTtBQUN6QyxTQUFTLHdCQUF3QixRQUFRLG1DQUFtQztBQUU1RSx1Q0FBdUMsR0FDdkMsT0FBTyxNQUFNLCtCQUErQjtFQUMxQyxDQUFBLEdBQUksQ0FBVztFQUNmLFlBQW1CLEdBQWEsQ0FBRTtJQUNoQyxLQUFLO0lBQ0wsSUFBSSxDQUFDLENBQUEsR0FBSSxHQUFHO0lBQ1osT0FBTyxJQUFJLENBQ1IsV0FBVyxDQUFDO01BQ1gsTUFBTSxVQUFVLElBQUksQ0FBQyxDQUFBLEdBQUksSUFBSSxJQUFJLENBQUMsY0FBYztNQUNoRCxPQUFPLENBQUM7O3VFQUV1RCxFQUM3RCxJQUFJLE9BQU8sK0JBQ1o7O0lBRUwsRUFBRSxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsUUFBUSxPQUFPLEdBQUcseUJBQXlCLENBQUMsSUFBSTtJQUN0RSxHQUNDLFNBQVMsR0FDVCxNQUFNLENBQUM7TUFDTixNQUFNLFVBQVUsSUFBSSxDQUFDLENBQUEsR0FBSSxJQUFJLElBQUksQ0FBQyxjQUFjO01BQ2hELFFBQVEsR0FBRyxDQUFDLHlCQUF5QixRQUFRLENBQUM7SUFDaEQ7RUFDSjtBQUNGIn0= +// denoCacheMetadata=14701554041105453635,15768257378385793376
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/b52b0c3d0f67cabd69f0301754eb9a74af9e5c5992916f3969de2e30d80d65d6.js b/vendor/gen/https/deno.land/b52b0c3d0f67cabd69f0301754eb9a74af9e5c5992916f3969de2e30d80d65d6.js new file mode 100644 index 0000000..c5aa3eb --- /dev/null +++ b/vendor/gen/https/deno.land/b52b0c3d0f67cabd69f0301754eb9a74af9e5c5992916f3969de2e30d80d65d6.js @@ -0,0 +1,20 @@ +/** + * A plugin to register the filters "url" and "htmlUrl" + * for normalizing URLs in the templates + * Installed by default + * @see https://lume.land/plugins/url/ + */ export function url() { + return (site)=>{ + site.filter("url", url); + site.filter("htmlUrl", htmlUrl); + function url(path = "/", absolute = false) { + return typeof path === "string" ? site.url(path, absolute) : path; + } + function htmlUrl(html = "", absolute = false) { + return html.replaceAll(/\s(href|src)="([^"]+)"/g, (_match, attr, value)=>` ${attr}="${url(value, absolute)}"`); + } + }; +} +export default url; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvcGx1Z2lucy91cmwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgU2l0ZSBmcm9tIFwiLi4vY29yZS9zaXRlLnRzXCI7XG5cbi8qKlxuICogQSBwbHVnaW4gdG8gcmVnaXN0ZXIgdGhlIGZpbHRlcnMgXCJ1cmxcIiBhbmQgXCJodG1sVXJsXCJcbiAqIGZvciBub3JtYWxpemluZyBVUkxzIGluIHRoZSB0ZW1wbGF0ZXNcbiAqIEluc3RhbGxlZCBieSBkZWZhdWx0XG4gKiBAc2VlIGh0dHBzOi8vbHVtZS5sYW5kL3BsdWdpbnMvdXJsL1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXJsKCkge1xuICByZXR1cm4gKHNpdGU6IFNpdGUpID0+IHtcbiAgICBzaXRlLmZpbHRlcihcInVybFwiLCB1cmwpO1xuICAgIHNpdGUuZmlsdGVyKFwiaHRtbFVybFwiLCBodG1sVXJsKTtcblxuICAgIGZ1bmN0aW9uIHVybChwYXRoID0gXCIvXCIsIGFic29sdXRlID0gZmFsc2UpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIHR5cGVvZiBwYXRoID09PSBcInN0cmluZ1wiID8gc2l0ZS51cmwocGF0aCwgYWJzb2x1dGUpIDogcGF0aDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBodG1sVXJsKGh0bWwgPSBcIlwiLCBhYnNvbHV0ZSA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBodG1sLnJlcGxhY2VBbGwoXG4gICAgICAgIC9cXHMoaHJlZnxzcmMpPVwiKFteXCJdKylcIi9nLFxuICAgICAgICAoX21hdGNoLCBhdHRyLCB2YWx1ZSkgPT4gYCAke2F0dHJ9PVwiJHt1cmwodmFsdWUsIGFic29sdXRlKX1cImAsXG4gICAgICApO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdXJsO1xuXG4vKiogRXh0ZW5kcyBIZWxwZXJzIGludGVyZmFjZSAqL1xuZGVjbGFyZSBnbG9iYWwge1xuICBuYW1lc3BhY2UgTHVtZSB7XG4gICAgZXhwb3J0IGludGVyZmFjZSBIZWxwZXJzIHtcbiAgICAgIC8qKiBAc2VlIGh0dHBzOi8vbHVtZS5sYW5kL3BsdWdpbnMvdXJsLyN1cmwtZmlsdGVyICovXG4gICAgICB1cmw6IChwYXRoOiBzdHJpbmcsIGFic29sdXRlPzogYm9vbGVhbikgPT4gc3RyaW5nO1xuXG4gICAgICAvKiogQHNlZSBodHRwczovL2x1bWUubGFuZC9wbHVnaW5zL3VybC8jaHRtbHVybC1maWx0ZXIgKi9cbiAgICAgIGh0bWxVcmw6IChodG1sOiBzdHJpbmcsIGFic29sdXRlPzogYm9vbGVhbikgPT4gc3RyaW5nO1xuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7OztDQUtDLEdBQ0QsT0FBTyxTQUFTO0VBQ2QsT0FBTyxDQUFDO0lBQ04sS0FBSyxNQUFNLENBQUMsT0FBTztJQUNuQixLQUFLLE1BQU0sQ0FBQyxXQUFXO0lBRXZCLFNBQVMsSUFBSSxPQUFPLEdBQUcsRUFBRSxXQUFXLEtBQUs7TUFDdkMsT0FBTyxPQUFPLFNBQVMsV0FBVyxLQUFLLEdBQUcsQ0FBQyxNQUFNLFlBQVk7SUFDL0Q7SUFFQSxTQUFTLFFBQVEsT0FBTyxFQUFFLEVBQUUsV0FBVyxLQUFLO01BQzFDLE9BQU8sS0FBSyxVQUFVLENBQ3BCLDJCQUNBLENBQUMsUUFBUSxNQUFNLFFBQVUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxPQUFPLFVBQVUsQ0FBQyxDQUFDO0lBRWpFO0VBQ0Y7QUFDRjtBQUVBLGVBQWUsSUFBSSJ9 +// denoCacheMetadata=15039142851586684729,7329129181401366926
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/b5381f20d1c2d147bff9bd97bde16422d0e5869a2442912f3631d96a76eddb68.js b/vendor/gen/https/deno.land/b5381f20d1c2d147bff9bd97bde16422d0e5869a2442912f3631d96a76eddb68.js new file mode 100644 index 0000000..daf0f70 --- /dev/null +++ b/vendor/gen/https/deno.land/b5381f20d1c2d147bff9bd97bde16422d0e5869a2442912f3631d96a76eddb68.js @@ -0,0 +1,45 @@ +/** + * Returns the date of the git commit that created or modified the file. + * Thanks to https://github.com/11ty/eleventy/blob/8dd2a1012de92c5ee1eab7c37e6bf1b36183927e/src/Util/DateGitLastUpdated.js + */ export function getGitDate(type, file) { + const args = type === "created" ? [ + "log", + "--diff-filter=A", + "--follow", + "-1", + "--format=%at", + "--", + file + ] : [ + "log", + "-1", + "--format=%at", + "--", + file + ]; + const { stdout, success } = new Deno.Command("git", { + args + }).outputSync(); + if (!success) { + return; + } + const str = new TextDecoder().decode(stdout); + if (str) { + return parseDate(parseInt(str) * 1000); + } +} +/** Parse a string or number (of miliseconds) to UTC Date */ export function parseDate(date) { + return new Date(getZonedDateTime(date).epochMilliseconds); +} +/** Parse a string or number (of miliseconds) to a zoned datetime */ export function getZonedDateTime(date, timezone = "UTC") { + if (typeof date === "number") { + return Temporal.Instant.fromEpochMilliseconds(date).toZonedDateTimeISO(timezone); + } + try { + return Temporal.Instant.from(date).toZonedDateTimeISO(timezone); + } catch { + return Temporal.PlainDateTime.from(date).toZonedDateTime(timezone); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS91dGlscy9kYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmV0dXJucyB0aGUgZGF0ZSBvZiB0aGUgZ2l0IGNvbW1pdCB0aGF0IGNyZWF0ZWQgb3IgbW9kaWZpZWQgdGhlIGZpbGUuXG4gKiBUaGFua3MgdG8gaHR0cHM6Ly9naXRodWIuY29tLzExdHkvZWxldmVudHkvYmxvYi84ZGQyYTEwMTJkZTkyYzVlZTFlYWI3YzM3ZTZiZjFiMzYxODM5MjdlL3NyYy9VdGlsL0RhdGVHaXRMYXN0VXBkYXRlZC5qc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0R2l0RGF0ZShcbiAgdHlwZTogXCJjcmVhdGVkXCIgfCBcIm1vZGlmaWVkXCIsXG4gIGZpbGU6IHN0cmluZyxcbik6IERhdGUgfCB1bmRlZmluZWQge1xuICBjb25zdCBhcmdzID0gdHlwZSA9PT0gXCJjcmVhdGVkXCJcbiAgICA/IFtcImxvZ1wiLCBcIi0tZGlmZi1maWx0ZXI9QVwiLCBcIi0tZm9sbG93XCIsIFwiLTFcIiwgXCItLWZvcm1hdD0lYXRcIiwgXCItLVwiLCBmaWxlXVxuICAgIDogW1wibG9nXCIsIFwiLTFcIiwgXCItLWZvcm1hdD0lYXRcIiwgXCItLVwiLCBmaWxlXTtcblxuICBjb25zdCB7IHN0ZG91dCwgc3VjY2VzcyB9ID0gbmV3IERlbm8uQ29tbWFuZChcImdpdFwiLCB7IGFyZ3MgfSkub3V0cHV0U3luYygpO1xuXG4gIGlmICghc3VjY2Vzcykge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBzdHIgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoc3Rkb3V0KTtcblxuICBpZiAoc3RyKSB7XG4gICAgcmV0dXJuIHBhcnNlRGF0ZShwYXJzZUludChzdHIpICogMTAwMCk7XG4gIH1cbn1cblxuLyoqIFBhcnNlIGEgc3RyaW5nIG9yIG51bWJlciAob2YgbWlsaXNlY29uZHMpIHRvIFVUQyBEYXRlICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VEYXRlKGRhdGU6IHN0cmluZyB8IG51bWJlcik6IERhdGUge1xuICByZXR1cm4gbmV3IERhdGUoZ2V0Wm9uZWREYXRlVGltZShkYXRlKS5lcG9jaE1pbGxpc2Vjb25kcyk7XG59XG5cbi8qKiBQYXJzZSBhIHN0cmluZyBvciBudW1iZXIgKG9mIG1pbGlzZWNvbmRzKSB0byBhIHpvbmVkIGRhdGV0aW1lICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Wm9uZWREYXRlVGltZShcbiAgZGF0ZTogc3RyaW5nIHwgbnVtYmVyLFxuICB0aW1lem9uZSA9IFwiVVRDXCIsXG4pOiBUZW1wb3JhbC5ab25lZERhdGVUaW1lIHtcbiAgaWYgKHR5cGVvZiBkYXRlID09PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIFRlbXBvcmFsLkluc3RhbnQuZnJvbUVwb2NoTWlsbGlzZWNvbmRzKGRhdGUpLnRvWm9uZWREYXRlVGltZUlTTyhcbiAgICAgIHRpbWV6b25lLFxuICAgICk7XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiBUZW1wb3JhbC5JbnN0YW50LmZyb20oZGF0ZSkudG9ab25lZERhdGVUaW1lSVNPKHRpbWV6b25lKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFRlbXBvcmFsLlBsYWluRGF0ZVRpbWUuZnJvbShkYXRlKS50b1pvbmVkRGF0ZVRpbWUodGltZXpvbmUpO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsT0FBTyxTQUFTLFdBQ2QsSUFBNEIsRUFDNUIsSUFBWTtFQUVaLE1BQU0sT0FBTyxTQUFTLFlBQ2xCO0lBQUM7SUFBTztJQUFtQjtJQUFZO0lBQU07SUFBZ0I7SUFBTTtHQUFLLEdBQ3hFO0lBQUM7SUFBTztJQUFNO0lBQWdCO0lBQU07R0FBSztFQUU3QyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksS0FBSyxPQUFPLENBQUMsT0FBTztJQUFFO0VBQUssR0FBRyxVQUFVO0VBRXhFLElBQUksQ0FBQyxTQUFTO0lBQ1o7RUFDRjtFQUNBLE1BQU0sTUFBTSxJQUFJLGNBQWMsTUFBTSxDQUFDO0VBRXJDLElBQUksS0FBSztJQUNQLE9BQU8sVUFBVSxTQUFTLE9BQU87RUFDbkM7QUFDRjtBQUVBLDBEQUEwRCxHQUMxRCxPQUFPLFNBQVMsVUFBVSxJQUFxQjtFQUM3QyxPQUFPLElBQUksS0FBSyxpQkFBaUIsTUFBTSxpQkFBaUI7QUFDMUQ7QUFFQSxrRUFBa0UsR0FDbEUsT0FBTyxTQUFTLGlCQUNkLElBQXFCLEVBQ3JCLFdBQVcsS0FBSztFQUVoQixJQUFJLE9BQU8sU0FBUyxVQUFVO0lBQzVCLE9BQU8sU0FBUyxPQUFPLENBQUMscUJBQXFCLENBQUMsTUFBTSxrQkFBa0IsQ0FDcEU7RUFFSjtFQUVBLElBQUk7SUFDRixPQUFPLFNBQVMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLGtCQUFrQixDQUFDO0VBQ3hELEVBQUUsT0FBTTtJQUNOLE9BQU8sU0FBUyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sZUFBZSxDQUFDO0VBQzNEO0FBQ0YifQ== +// denoCacheMetadata=432812557858917766,13879348009945641107
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/b56f203d7c983a08006eaf50209fbeea5d62c6811f25a9a7645e0e9b4272c505.js b/vendor/gen/https/deno.land/b56f203d7c983a08006eaf50209fbeea5d62c6811f25a9a7645e0e9b4272c505.js new file mode 100644 index 0000000..3ab18ba --- /dev/null +++ b/vendor/gen/https/deno.land/b56f203d7c983a08006eaf50209fbeea5d62c6811f25a9a7645e0e9b4272c505.js @@ -0,0 +1,9 @@ +import { html } from "../deps.ts"; +export default function() { + return (env)=>{ + // deno-lint-ignore no-explicit-any + env.filters.unescape = (value)=>value ? html.unescape(value.toString()) : ""; + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9wbHVnaW5zL3VuZXNjYXBlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGh0bWwgfSBmcm9tIFwiLi4vZGVwcy50c1wiO1xuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudCwgUGx1Z2luIH0gZnJvbSBcIi4uL3NyYy9lbnZpcm9ubWVudC50c1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKTogUGx1Z2luIHtcbiAgcmV0dXJuIChlbnY6IEVudmlyb25tZW50KSA9PiB7XG4gICAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgICBlbnYuZmlsdGVycy51bmVzY2FwZSA9ICh2YWx1ZTogYW55KSA9PlxuICAgICAgdmFsdWUgPyBodG1sLnVuZXNjYXBlKHZhbHVlLnRvU3RyaW5nKCkpIDogXCJcIjtcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLElBQUksUUFBUSxhQUFhO0FBR2xDLGVBQWU7RUFDYixPQUFPLENBQUM7SUFDTixtQ0FBbUM7SUFDbkMsSUFBSSxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsUUFDdEIsUUFBUSxLQUFLLFFBQVEsQ0FBQyxNQUFNLFFBQVEsTUFBTTtFQUM5QztBQUNGIn0= +// denoCacheMetadata=4511259778519194580,4889977204577772516
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/b6bb333bf077c1e16e7a4653e7ead93848f46feb6e87cc8be8eaab47b758df61.js b/vendor/gen/https/deno.land/b6bb333bf077c1e16e7a4653e7ead93848f46feb6e87cc8be8eaab47b758df61.js new file mode 100644 index 0000000..21ddf26 --- /dev/null +++ b/vendor/gen/https/deno.land/b6bb333bf077c1e16e7a4653e7ead93848f46feb6e87cc8be8eaab47b758df61.js @@ -0,0 +1,16 @@ +import { extract, test } from "../../deps/front_matter.ts"; +import { read } from "../utils/read.ts"; +/** Load a text file. Detect and parse the front matter */ export default async function text(path) { + const content = await read(path, false); + if (test(content)) { + let { attrs, body } = extract(content); + attrs ??= {}; + attrs.content = body; + return attrs; + } + return { + content + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS9sb2FkZXJzL3RleHQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0cmFjdCwgdGVzdCB9IGZyb20gXCIuLi8uLi9kZXBzL2Zyb250X21hdHRlci50c1wiO1xuaW1wb3J0IHsgcmVhZCB9IGZyb20gXCIuLi91dGlscy9yZWFkLnRzXCI7XG5cbmltcG9ydCB0eXBlIHsgUmF3RGF0YSB9IGZyb20gXCIuLi9maWxlLnRzXCI7XG5cbi8qKiBMb2FkIGEgdGV4dCBmaWxlLiBEZXRlY3QgYW5kIHBhcnNlIHRoZSBmcm9udCBtYXR0ZXIgKi9cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHRleHQocGF0aDogc3RyaW5nKTogUHJvbWlzZTxSYXdEYXRhPiB7XG4gIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkKHBhdGgsIGZhbHNlKTtcblxuICBpZiAodGVzdChjb250ZW50KSkge1xuICAgIGxldCB7IGF0dHJzLCBib2R5IH0gPSBleHRyYWN0PFJhd0RhdGE+KGNvbnRlbnQpO1xuICAgIGF0dHJzID8/PSB7fTtcbiAgICBhdHRycy5jb250ZW50ID0gYm9keTtcblxuICAgIHJldHVybiBhdHRycztcbiAgfVxuXG4gIHJldHVybiB7IGNvbnRlbnQgfTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLE9BQU8sRUFBRSxJQUFJLFFBQVEsNkJBQTZCO0FBQzNELFNBQVMsSUFBSSxRQUFRLG1CQUFtQjtBQUl4Qyx3REFBd0QsR0FDeEQsZUFBZSxlQUFlLEtBQUssSUFBWTtFQUM3QyxNQUFNLFVBQVUsTUFBTSxLQUFLLE1BQU07RUFFakMsSUFBSSxLQUFLLFVBQVU7SUFDakIsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxRQUFpQjtJQUN2QyxVQUFVLENBQUM7SUFDWCxNQUFNLE9BQU8sR0FBRztJQUVoQixPQUFPO0VBQ1Q7RUFFQSxPQUFPO0lBQUU7RUFBUTtBQUNuQiJ9 +// denoCacheMetadata=4535290000363525586,15167139241344147976
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/b7b648aeb7bf351c40c852c4737f6347ad692730f00a61bd30037e13d6ea262f.js b/vendor/gen/https/deno.land/b7b648aeb7bf351c40c852c4737f6347ad692730f00a61bd30037e13d6ea262f.js new file mode 100644 index 0000000..7d44aaf --- /dev/null +++ b/vendor/gen/https/deno.land/b7b648aeb7bf351c40c852c4737f6347ad692730f00a61bd30037e13d6ea262f.js @@ -0,0 +1,13 @@ +/** Run a callback concurrently with all the elements of an Iterable */ export async function concurrent(iterable, iteratorFn, limit = 200) { + const executing = []; + for await (const item of iterable){ + const p = iteratorFn(item).then(()=>executing.splice(executing.indexOf(p), 1)); + executing.push(p); + if (executing.length >= limit) { + await Promise.race(executing); + } + } + await Promise.all(executing); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS91dGlscy9jb25jdXJyZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBSdW4gYSBjYWxsYmFjayBjb25jdXJyZW50bHkgd2l0aCBhbGwgdGhlIGVsZW1lbnRzIG9mIGFuIEl0ZXJhYmxlICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29uY3VycmVudDxUeXBlPihcbiAgaXRlcmFibGU6IEFzeW5jSXRlcmFibGU8VHlwZT4gfCBJdGVyYWJsZTxUeXBlPixcbiAgaXRlcmF0b3JGbjogKGFyZzogVHlwZSkgPT4gUHJvbWlzZTx1bmtub3duPixcbiAgbGltaXQgPSAyMDAsXG4pIHtcbiAgY29uc3QgZXhlY3V0aW5nOiBQcm9taXNlPHVua25vd24+W10gPSBbXTtcblxuICBmb3IgYXdhaXQgKGNvbnN0IGl0ZW0gb2YgaXRlcmFibGUpIHtcbiAgICBjb25zdCBwOiBQcm9taXNlPHVua25vd24+ID0gaXRlcmF0b3JGbihpdGVtKS50aGVuKCgpID0+XG4gICAgICBleGVjdXRpbmcuc3BsaWNlKGV4ZWN1dGluZy5pbmRleE9mKHApLCAxKVxuICAgICk7XG5cbiAgICBleGVjdXRpbmcucHVzaChwKTtcblxuICAgIGlmIChleGVjdXRpbmcubGVuZ3RoID49IGxpbWl0KSB7XG4gICAgICBhd2FpdCBQcm9taXNlLnJhY2UoZXhlY3V0aW5nKTtcbiAgICB9XG4gIH1cblxuICBhd2FpdCBQcm9taXNlLmFsbChleGVjdXRpbmcpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFFQUFxRSxHQUNyRSxPQUFPLGVBQWUsV0FDcEIsUUFBOEMsRUFDOUMsVUFBMkMsRUFDM0MsUUFBUSxHQUFHO0VBRVgsTUFBTSxZQUFnQyxFQUFFO0VBRXhDLFdBQVcsTUFBTSxRQUFRLFNBQVU7SUFDakMsTUFBTSxJQUFzQixXQUFXLE1BQU0sSUFBSSxDQUFDLElBQ2hELFVBQVUsTUFBTSxDQUFDLFVBQVUsT0FBTyxDQUFDLElBQUk7SUFHekMsVUFBVSxJQUFJLENBQUM7SUFFZixJQUFJLFVBQVUsTUFBTSxJQUFJLE9BQU87TUFDN0IsTUFBTSxRQUFRLElBQUksQ0FBQztJQUNyQjtFQUNGO0VBRUEsTUFBTSxRQUFRLEdBQUcsQ0FBQztBQUNwQiJ9 +// denoCacheMetadata=17751101073593185417,6590090405431996803
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/b7b9e383e5e7585d47f56e395335495e36ac227039432f2817fcbc9c673af259.js b/vendor/gen/https/deno.land/b7b9e383e5e7585d47f56e395335495e36ac227039432f2817fcbc9c673af259.js new file mode 100644 index 0000000..7df4f44 --- /dev/null +++ b/vendor/gen/https/deno.land/b7b9e383e5e7585d47f56e395335495e36ac227039432f2817fcbc9c673af259.js @@ -0,0 +1,339 @@ +import { GenericInput } from "./_generic_input.ts"; +import { bold, brightBlue, dim, dirname, join, normalize, stripColor, underline } from "./deps.ts"; +import { Figures, getFiguresByKeys } from "./figures.ts"; +import { distance } from "../_utils/distance.ts"; +const sep = Deno.build.os === "windows" ? "\\" : "/"; +/** Generic input prompt representation. */ export class GenericSuggestions extends GenericInput { + suggestionsIndex = -1; + suggestionsOffset = 0; + suggestions = []; + #hasReadPermissions; + /** + * Prompt constructor. + * @param settings Prompt settings. + */ constructor(settings){ + super({ + ...settings, + keys: { + complete: [ + "tab" + ], + next: [ + "up" + ], + previous: [ + "down" + ], + nextPage: [ + "pageup" + ], + previousPage: [ + "pagedown" + ], + ...settings.keys ?? {} + } + }); + } + get localStorage() { + // Keep support for deno < 1.10. + if (this.settings.id && "localStorage" in window) { + try { + // deno-lint-ignore no-explicit-any + return window.localStorage; + } catch (_) { + // Ignore error if --location is not set. + } + } + return null; + } + loadSuggestions() { + if (this.settings.id) { + const json = this.localStorage?.getItem(this.settings.id); + const suggestions = json ? JSON.parse(json) : []; + if (!Array.isArray(suggestions)) { + return []; + } + return suggestions; + } + return []; + } + saveSuggestions(...suggestions) { + if (this.settings.id) { + this.localStorage?.setItem(this.settings.id, JSON.stringify([ + ...suggestions, + ...this.loadSuggestions() + ].filter(uniqueSuggestions))); + } + } + async render() { + if (this.settings.files && this.#hasReadPermissions === undefined) { + const status = await Deno.permissions.request({ + name: "read" + }); + // disable path completion if read permissions are denied. + this.#hasReadPermissions = status.state === "granted"; + } + await this.match(); + return super.render(); + } + async match() { + this.suggestions = await this.getSuggestions(); + this.suggestionsIndex = Math.max(this.getCurrentInputValue().trim().length === 0 ? -1 : 0, Math.min(this.suggestions.length - 1, this.suggestionsIndex)); + this.suggestionsOffset = Math.max(0, Math.min(this.suggestions.length - this.getListHeight(), this.suggestionsOffset)); + } + input() { + return super.input() + dim(this.getSuggestion()); + } + getSuggestion() { + return this.suggestions[this.suggestionsIndex]?.toString().substr(this.getCurrentInputValue().length) ?? ""; + } + async getUserSuggestions(input) { + return typeof this.settings.suggestions === "function" ? await this.settings.suggestions(input) : this.settings.suggestions ?? []; + } + #isFileModeEnabled() { + return !!this.settings.files && this.#hasReadPermissions === true; + } + async getFileSuggestions(input) { + if (!this.#isFileModeEnabled()) { + return []; + } + const path = await Deno.stat(input).then((file)=>file.isDirectory ? input : dirname(input)).catch(()=>dirname(input)); + return await listDir(path, this.settings.files); + } + async getSuggestions() { + const input = this.getCurrentInputValue(); + const suggestions = [ + ...this.loadSuggestions(), + ...await this.getUserSuggestions(input), + ...await this.getFileSuggestions(input) + ].filter(uniqueSuggestions); + if (!input.length) { + return suggestions; + } + return suggestions.filter((value)=>stripColor(value.toString()).toLowerCase().startsWith(input.toLowerCase())).sort((a, b)=>distance((a || a).toString(), input) - distance((b || b).toString(), input)); + } + body() { + return this.getList() + this.getInfo(); + } + getInfo() { + if (!this.settings.info) { + return ""; + } + const selected = this.suggestionsIndex + 1; + const matched = this.suggestions.length; + const actions = []; + if (this.suggestions.length) { + if (this.settings.list) { + actions.push([ + "Next", + getFiguresByKeys(this.settings.keys?.next ?? []) + ], [ + "Previous", + getFiguresByKeys(this.settings.keys?.previous ?? []) + ], [ + "Next Page", + getFiguresByKeys(this.settings.keys?.nextPage ?? []) + ], [ + "Previous Page", + getFiguresByKeys(this.settings.keys?.previousPage ?? []) + ]); + } else { + actions.push([ + "Next", + getFiguresByKeys(this.settings.keys?.next ?? []) + ], [ + "Previous", + getFiguresByKeys(this.settings.keys?.previous ?? []) + ]); + } + actions.push([ + "Complete", + getFiguresByKeys(this.settings.keys?.complete ?? []) + ]); + } + actions.push([ + "Submit", + getFiguresByKeys(this.settings.keys?.submit ?? []) + ]); + let info = this.settings.indent; + if (this.suggestions.length) { + info += brightBlue(Figures.INFO) + bold(` ${selected}/${matched} `); + } + info += actions.map((cur)=>`${cur[0]}: ${bold(cur[1].join(" "))}`).join(", "); + return info; + } + getList() { + if (!this.suggestions.length || !this.settings.list) { + return ""; + } + const list = []; + const height = this.getListHeight(); + for(let i = this.suggestionsOffset; i < this.suggestionsOffset + height; i++){ + list.push(this.getListItem(this.suggestions[i], this.suggestionsIndex === i)); + } + if (list.length && this.settings.info) { + list.push(""); + } + return list.join("\n"); + } + /** + * Render option. + * @param value Option. + * @param isSelected Set to true if option is selected. + */ getListItem(value, isSelected) { + let line = this.settings.indent ?? ""; + line += isSelected ? `${this.settings.listPointer} ` : " "; + if (isSelected) { + line += underline(this.highlight(value)); + } else { + line += this.highlight(value); + } + return line; + } + /** Get suggestions row height. */ getListHeight(suggestions = this.suggestions) { + return Math.min(suggestions.length, this.settings.maxRows || suggestions.length); + } + /** + * Handle user input event. + * @param event Key event. + */ async handleEvent(event) { + switch(true){ + case this.isKey(this.settings.keys, "next", event): + if (this.settings.list) { + this.selectPreviousSuggestion(); + } else { + this.selectNextSuggestion(); + } + break; + case this.isKey(this.settings.keys, "previous", event): + if (this.settings.list) { + this.selectNextSuggestion(); + } else { + this.selectPreviousSuggestion(); + } + break; + case this.isKey(this.settings.keys, "nextPage", event): + if (this.settings.list) { + this.selectPreviousSuggestionsPage(); + } else { + this.selectNextSuggestionsPage(); + } + break; + case this.isKey(this.settings.keys, "previousPage", event): + if (this.settings.list) { + this.selectNextSuggestionsPage(); + } else { + this.selectPreviousSuggestionsPage(); + } + break; + case this.isKey(this.settings.keys, "complete", event): + await this.#completeValue(); + break; + case this.isKey(this.settings.keys, "moveCursorRight", event): + if (this.inputIndex < this.inputValue.length) { + this.moveCursorRight(); + } else { + await this.#completeValue(); + } + break; + default: + await super.handleEvent(event); + } + } + /** Delete char right. */ deleteCharRight() { + if (this.inputIndex < this.inputValue.length) { + super.deleteCharRight(); + if (!this.getCurrentInputValue().length) { + this.suggestionsIndex = -1; + this.suggestionsOffset = 0; + } + } + } + async #completeValue() { + this.inputValue = await this.complete(); + this.inputIndex = this.inputValue.length; + this.suggestionsIndex = 0; + this.suggestionsOffset = 0; + } + async complete() { + let input = this.getCurrentInputValue(); + const suggestion = this.suggestions[this.suggestionsIndex]?.toString(); + if (this.settings.complete) { + input = await this.settings.complete(input, suggestion); + } else if (this.#isFileModeEnabled() && input.at(-1) !== sep && await isDirectory(input) && (this.getCurrentInputValue().at(-1) !== "." || this.getCurrentInputValue().endsWith(".."))) { + input += sep; + } else if (suggestion) { + input = suggestion; + } + return this.#isFileModeEnabled() ? normalize(input) : input; + } + /** Select previous suggestion. */ selectPreviousSuggestion() { + if (this.suggestions.length) { + if (this.suggestionsIndex > -1) { + this.suggestionsIndex--; + if (this.suggestionsIndex < this.suggestionsOffset) { + this.suggestionsOffset--; + } + } + } + } + /** Select next suggestion. */ selectNextSuggestion() { + if (this.suggestions.length) { + if (this.suggestionsIndex < this.suggestions.length - 1) { + this.suggestionsIndex++; + if (this.suggestionsIndex >= this.suggestionsOffset + this.getListHeight()) { + this.suggestionsOffset++; + } + } + } + } + /** Select previous suggestions page. */ selectPreviousSuggestionsPage() { + if (this.suggestions.length) { + const height = this.getListHeight(); + if (this.suggestionsOffset >= height) { + this.suggestionsIndex -= height; + this.suggestionsOffset -= height; + } else if (this.suggestionsOffset > 0) { + this.suggestionsIndex -= this.suggestionsOffset; + this.suggestionsOffset = 0; + } + } + } + /** Select next suggestions page. */ selectNextSuggestionsPage() { + if (this.suggestions.length) { + const height = this.getListHeight(); + if (this.suggestionsOffset + height + height < this.suggestions.length) { + this.suggestionsIndex += height; + this.suggestionsOffset += height; + } else if (this.suggestionsOffset + height < this.suggestions.length) { + const offset = this.suggestions.length - height; + this.suggestionsIndex += offset - this.suggestionsOffset; + this.suggestionsOffset = offset; + } + } + } +} +function uniqueSuggestions(value, index, self) { + return typeof value !== "undefined" && value !== "" && self.indexOf(value) === index; +} +function isDirectory(path) { + return Deno.stat(path).then((file)=>file.isDirectory).catch(()=>false); +} +async function listDir(path, mode) { + const fileNames = []; + for await (const file of Deno.readDir(path || ".")){ + if (mode === true && (file.name.startsWith(".") || file.name.endsWith("~"))) { + continue; + } + const filePath = join(path, file.name); + if (mode instanceof RegExp && !mode.test(filePath)) { + continue; + } + fileNames.push(filePath); + } + return fileNames.sort(function(a, b) { + return a.toLowerCase().localeCompare(b.toLowerCase()); + }); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvcHJvbXB0L19nZW5lcmljX3N1Z2dlc3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgS2V5Q29kZSB9IGZyb20gXCIuLi9rZXljb2RlL2tleV9jb2RlLnRzXCI7XG5pbXBvcnQge1xuICBHZW5lcmljSW5wdXQsXG4gIEdlbmVyaWNJbnB1dEtleXMsXG4gIEdlbmVyaWNJbnB1dFByb21wdE9wdGlvbnMsXG4gIEdlbmVyaWNJbnB1dFByb21wdFNldHRpbmdzLFxufSBmcm9tIFwiLi9fZ2VuZXJpY19pbnB1dC50c1wiO1xuaW1wb3J0IHtcbiAgYm9sZCxcbiAgYnJpZ2h0Qmx1ZSxcbiAgZGltLFxuICBkaXJuYW1lLFxuICBqb2luLFxuICBub3JtYWxpemUsXG4gIHN0cmlwQ29sb3IsXG4gIHVuZGVybGluZSxcbn0gZnJvbSBcIi4vZGVwcy50c1wiO1xuaW1wb3J0IHsgRmlndXJlcywgZ2V0RmlndXJlc0J5S2V5cyB9IGZyb20gXCIuL2ZpZ3VyZXMudHNcIjtcbmltcG9ydCB7IGRpc3RhbmNlIH0gZnJvbSBcIi4uL191dGlscy9kaXN0YW5jZS50c1wiO1xuXG5pbnRlcmZhY2UgTG9jYWxTdG9yYWdlIHtcbiAgZ2V0SXRlbShrZXk6IHN0cmluZyk6IHN0cmluZyB8IG51bGw7XG4gIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpOiB2b2lkO1xuICBzZXRJdGVtKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbn1cblxuLyoqIElucHV0IGtleXMgb3B0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJpY1N1Z2dlc3Rpb25zS2V5cyBleHRlbmRzIEdlbmVyaWNJbnB1dEtleXMge1xuICBjb21wbGV0ZT86IHN0cmluZ1tdO1xuICBuZXh0Pzogc3RyaW5nW107XG4gIHByZXZpb3VzPzogc3RyaW5nW107XG4gIG5leHRQYWdlPzogc3RyaW5nW107XG4gIHByZXZpb3VzUGFnZT86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgdHlwZSBTdWdnZXN0aW9uSGFuZGxlciA9IChcbiAgaW5wdXQ6IHN0cmluZyxcbikgPT4gQXJyYXk8c3RyaW5nIHwgbnVtYmVyPiB8IFByb21pc2U8QXJyYXk8c3RyaW5nIHwgbnVtYmVyPj47XG5cbmV4cG9ydCB0eXBlIENvbXBsZXRlSGFuZGxlciA9IChcbiAgaW5wdXQ6IHN0cmluZyxcbiAgc3VnZ2VzdGlvbj86IHN0cmluZyxcbikgPT4gUHJvbWlzZTxzdHJpbmc+IHwgc3RyaW5nO1xuXG4vKiogR2VuZXJpYyBpbnB1dCBwcm9tcHQgb3B0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJpY1N1Z2dlc3Rpb25zT3B0aW9uczxUVmFsdWUsIFRSYXdWYWx1ZT5cbiAgZXh0ZW5kcyBHZW5lcmljSW5wdXRQcm9tcHRPcHRpb25zPFRWYWx1ZSwgVFJhd1ZhbHVlPiB7XG4gIGtleXM/OiBHZW5lcmljU3VnZ2VzdGlvbnNLZXlzO1xuICBpZD86IHN0cmluZztcbiAgc3VnZ2VzdGlvbnM/OiBBcnJheTxzdHJpbmcgfCBudW1iZXI+IHwgU3VnZ2VzdGlvbkhhbmRsZXI7XG4gIGNvbXBsZXRlPzogQ29tcGxldGVIYW5kbGVyO1xuICBmaWxlcz86IGJvb2xlYW4gfCBSZWdFeHA7XG4gIGxpc3Q/OiBib29sZWFuO1xuICBpbmZvPzogYm9vbGVhbjtcbiAgbGlzdFBvaW50ZXI/OiBzdHJpbmc7XG4gIG1heFJvd3M/OiBudW1iZXI7XG59XG5cbi8qKiBHZW5lcmljIGlucHV0IHByb21wdCBzZXR0aW5ncy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJpY1N1Z2dlc3Rpb25zU2V0dGluZ3M8VFZhbHVlLCBUUmF3VmFsdWU+XG4gIGV4dGVuZHMgR2VuZXJpY0lucHV0UHJvbXB0U2V0dGluZ3M8VFZhbHVlLCBUUmF3VmFsdWU+IHtcbiAga2V5cz86IEdlbmVyaWNTdWdnZXN0aW9uc0tleXM7XG4gIGlkPzogc3RyaW5nO1xuICBzdWdnZXN0aW9ucz86IEFycmF5PHN0cmluZyB8IG51bWJlcj4gfCBTdWdnZXN0aW9uSGFuZGxlcjtcbiAgY29tcGxldGU/OiBDb21wbGV0ZUhhbmRsZXI7XG4gIGZpbGVzPzogYm9vbGVhbiB8IFJlZ0V4cDtcbiAgbGlzdD86IGJvb2xlYW47XG4gIGluZm8/OiBib29sZWFuO1xuICBsaXN0UG9pbnRlcjogc3RyaW5nO1xuICBtYXhSb3dzOiBudW1iZXI7XG59XG5cbmNvbnN0IHNlcCA9IERlbm8uYnVpbGQub3MgPT09IFwid2luZG93c1wiID8gXCJcXFxcXCIgOiBcIi9cIjtcblxuLyoqIEdlbmVyaWMgaW5wdXQgcHJvbXB0IHJlcHJlc2VudGF0aW9uLiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEdlbmVyaWNTdWdnZXN0aW9uczxcbiAgVFZhbHVlLFxuICBUUmF3VmFsdWUsXG4gIFRTZXR0aW5ncyBleHRlbmRzIEdlbmVyaWNTdWdnZXN0aW9uc1NldHRpbmdzPFRWYWx1ZSwgVFJhd1ZhbHVlPixcbj4gZXh0ZW5kcyBHZW5lcmljSW5wdXQ8VFZhbHVlLCBUUmF3VmFsdWUsIFRTZXR0aW5ncz4ge1xuICBwcm90ZWN0ZWQgc3VnZ2VzdGlvbnNJbmRleCA9IC0xO1xuICBwcm90ZWN0ZWQgc3VnZ2VzdGlvbnNPZmZzZXQgPSAwO1xuICBwcm90ZWN0ZWQgc3VnZ2VzdGlvbnM6IEFycmF5PHN0cmluZyB8IG51bWJlcj4gPSBbXTtcbiAgI2hhc1JlYWRQZXJtaXNzaW9ucz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFByb21wdCBjb25zdHJ1Y3Rvci5cbiAgICogQHBhcmFtIHNldHRpbmdzIFByb21wdCBzZXR0aW5ncy5cbiAgICovXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihzZXR0aW5nczogVFNldHRpbmdzKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICBrZXlzOiB7XG4gICAgICAgIGNvbXBsZXRlOiBbXCJ0YWJcIl0sXG4gICAgICAgIG5leHQ6IFtcInVwXCJdLFxuICAgICAgICBwcmV2aW91czogW1wiZG93blwiXSxcbiAgICAgICAgbmV4dFBhZ2U6IFtcInBhZ2V1cFwiXSxcbiAgICAgICAgcHJldmlvdXNQYWdlOiBbXCJwYWdlZG93blwiXSxcbiAgICAgICAgLi4uKHNldHRpbmdzLmtleXMgPz8ge30pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgbG9jYWxTdG9yYWdlKCk6IExvY2FsU3RvcmFnZSB8IG51bGwge1xuICAgIC8vIEtlZXAgc3VwcG9ydCBmb3IgZGVubyA8IDEuMTAuXG4gICAgaWYgKHRoaXMuc2V0dGluZ3MuaWQgJiYgXCJsb2NhbFN0b3JhZ2VcIiBpbiB3aW5kb3cpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG4gICAgICAgIHJldHVybiAod2luZG93IGFzIGFueSkubG9jYWxTdG9yYWdlO1xuICAgICAgfSBjYXRjaCAoXykge1xuICAgICAgICAvLyBJZ25vcmUgZXJyb3IgaWYgLS1sb2NhdGlvbiBpcyBub3Qgc2V0LlxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBsb2FkU3VnZ2VzdGlvbnMoKTogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPiB7XG4gICAgaWYgKHRoaXMuc2V0dGluZ3MuaWQpIHtcbiAgICAgIGNvbnN0IGpzb24gPSB0aGlzLmxvY2FsU3RvcmFnZT8uZ2V0SXRlbSh0aGlzLnNldHRpbmdzLmlkKTtcbiAgICAgIGNvbnN0IHN1Z2dlc3Rpb25zOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+ID0ganNvbiA/IEpTT04ucGFyc2UoanNvbikgOiBbXTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShzdWdnZXN0aW9ucykpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN1Z2dlc3Rpb25zO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBwcm90ZWN0ZWQgc2F2ZVN1Z2dlc3Rpb25zKC4uLnN1Z2dlc3Rpb25zOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2V0dGluZ3MuaWQpIHtcbiAgICAgIHRoaXMubG9jYWxTdG9yYWdlPy5zZXRJdGVtKFxuICAgICAgICB0aGlzLnNldHRpbmdzLmlkLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShbXG4gICAgICAgICAgLi4uc3VnZ2VzdGlvbnMsXG4gICAgICAgICAgLi4udGhpcy5sb2FkU3VnZ2VzdGlvbnMoKSxcbiAgICAgICAgXS5maWx0ZXIodW5pcXVlU3VnZ2VzdGlvbnMpKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHJlbmRlcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5maWxlcyAmJiB0aGlzLiNoYXNSZWFkUGVybWlzc2lvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgRGVuby5wZXJtaXNzaW9ucy5yZXF1ZXN0KHsgbmFtZTogXCJyZWFkXCIgfSk7XG4gICAgICAvLyBkaXNhYmxlIHBhdGggY29tcGxldGlvbiBpZiByZWFkIHBlcm1pc3Npb25zIGFyZSBkZW5pZWQuXG4gICAgICB0aGlzLiNoYXNSZWFkUGVybWlzc2lvbnMgPSBzdGF0dXMuc3RhdGUgPT09IFwiZ3JhbnRlZFwiO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLm1hdGNoKCk7XG4gICAgcmV0dXJuIHN1cGVyLnJlbmRlcigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG1hdGNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuc3VnZ2VzdGlvbnMgPSBhd2FpdCB0aGlzLmdldFN1Z2dlc3Rpb25zKCk7XG4gICAgdGhpcy5zdWdnZXN0aW9uc0luZGV4ID0gTWF0aC5tYXgoXG4gICAgICB0aGlzLmdldEN1cnJlbnRJbnB1dFZhbHVlKCkudHJpbSgpLmxlbmd0aCA9PT0gMCA/IC0xIDogMCxcbiAgICAgIE1hdGgubWluKHRoaXMuc3VnZ2VzdGlvbnMubGVuZ3RoIC0gMSwgdGhpcy5zdWdnZXN0aW9uc0luZGV4KSxcbiAgICApO1xuICAgIHRoaXMuc3VnZ2VzdGlvbnNPZmZzZXQgPSBNYXRoLm1heChcbiAgICAgIDAsXG4gICAgICBNYXRoLm1pbihcbiAgICAgICAgdGhpcy5zdWdnZXN0aW9ucy5sZW5ndGggLSB0aGlzLmdldExpc3RIZWlnaHQoKSxcbiAgICAgICAgdGhpcy5zdWdnZXN0aW9uc09mZnNldCxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnB1dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdXBlci5pbnB1dCgpICsgZGltKHRoaXMuZ2V0U3VnZ2VzdGlvbigpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRTdWdnZXN0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3VnZ2VzdGlvbnNbdGhpcy5zdWdnZXN0aW9uc0luZGV4XT8udG9TdHJpbmcoKVxuICAgICAgLnN1YnN0cihcbiAgICAgICAgdGhpcy5nZXRDdXJyZW50SW5wdXRWYWx1ZSgpLmxlbmd0aCxcbiAgICAgICkgPz8gXCJcIjtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRVc2VyU3VnZ2VzdGlvbnMoXG4gICAgaW5wdXQ6IHN0cmluZyxcbiAgKTogUHJvbWlzZTxBcnJheTxzdHJpbmcgfCBudW1iZXI+PiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLnNldHRpbmdzLnN1Z2dlc3Rpb25zID09PSBcImZ1bmN0aW9uXCJcbiAgICAgID8gYXdhaXQgdGhpcy5zZXR0aW5ncy5zdWdnZXN0aW9ucyhpbnB1dClcbiAgICAgIDogdGhpcy5zZXR0aW5ncy5zdWdnZXN0aW9ucyA/PyBbXTtcbiAgfVxuXG4gICNpc0ZpbGVNb2RlRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnNldHRpbmdzLmZpbGVzICYmIHRoaXMuI2hhc1JlYWRQZXJtaXNzaW9ucyA9PT0gdHJ1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRGaWxlU3VnZ2VzdGlvbnMoXG4gICAgaW5wdXQ6IHN0cmluZyxcbiAgKTogUHJvbWlzZTxBcnJheTxzdHJpbmcgfCBudW1iZXI+PiB7XG4gICAgaWYgKCF0aGlzLiNpc0ZpbGVNb2RlRW5hYmxlZCgpKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgcGF0aCA9IGF3YWl0IERlbm8uc3RhdChpbnB1dClcbiAgICAgIC50aGVuKChmaWxlKSA9PiBmaWxlLmlzRGlyZWN0b3J5ID8gaW5wdXQgOiBkaXJuYW1lKGlucHV0KSlcbiAgICAgIC5jYXRjaCgoKSA9PiBkaXJuYW1lKGlucHV0KSk7XG5cbiAgICByZXR1cm4gYXdhaXQgbGlzdERpcihwYXRoLCB0aGlzLnNldHRpbmdzLmZpbGVzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRTdWdnZXN0aW9ucygpOiBQcm9taXNlPEFycmF5PHN0cmluZyB8IG51bWJlcj4+IHtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuZ2V0Q3VycmVudElucHV0VmFsdWUoKTtcbiAgICBjb25zdCBzdWdnZXN0aW9ucyA9IFtcbiAgICAgIC4uLnRoaXMubG9hZFN1Z2dlc3Rpb25zKCksXG4gICAgICAuLi5hd2FpdCB0aGlzLmdldFVzZXJTdWdnZXN0aW9ucyhpbnB1dCksXG4gICAgICAuLi5hd2FpdCB0aGlzLmdldEZpbGVTdWdnZXN0aW9ucyhpbnB1dCksXG4gICAgXS5maWx0ZXIodW5pcXVlU3VnZ2VzdGlvbnMpO1xuXG4gICAgaWYgKCFpbnB1dC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBzdWdnZXN0aW9ucztcbiAgICB9XG5cbiAgICByZXR1cm4gc3VnZ2VzdGlvbnNcbiAgICAgIC5maWx0ZXIoKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpID0+XG4gICAgICAgIHN0cmlwQ29sb3IodmFsdWUudG9TdHJpbmcoKSlcbiAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgIC5zdGFydHNXaXRoKGlucHV0LnRvTG93ZXJDYXNlKCkpXG4gICAgICApXG4gICAgICAuc29ydCgoYTogc3RyaW5nIHwgbnVtYmVyLCBiOiBzdHJpbmcgfCBudW1iZXIpID0+XG4gICAgICAgIGRpc3RhbmNlKChhIHx8IGEpLnRvU3RyaW5nKCksIGlucHV0KSAtXG4gICAgICAgIGRpc3RhbmNlKChiIHx8IGIpLnRvU3RyaW5nKCksIGlucHV0KVxuICAgICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBib2R5KCk6IHN0cmluZyB8IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TGlzdCgpICsgdGhpcy5nZXRJbmZvKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0SW5mbygpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5zZXR0aW5ncy5pbmZvKSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0ZWQ6IG51bWJlciA9IHRoaXMuc3VnZ2VzdGlvbnNJbmRleCArIDE7XG4gICAgY29uc3QgbWF0Y2hlZDogbnVtYmVyID0gdGhpcy5zdWdnZXN0aW9ucy5sZW5ndGg7XG4gICAgY29uc3QgYWN0aW9uczogQXJyYXk8W3N0cmluZywgQXJyYXk8c3RyaW5nPl0+ID0gW107XG5cbiAgICBpZiAodGhpcy5zdWdnZXN0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLnNldHRpbmdzLmxpc3QpIHtcbiAgICAgICAgYWN0aW9ucy5wdXNoKFxuICAgICAgICAgIFtcIk5leHRcIiwgZ2V0RmlndXJlc0J5S2V5cyh0aGlzLnNldHRpbmdzLmtleXM/Lm5leHQgPz8gW10pXSxcbiAgICAgICAgICBbXCJQcmV2aW91c1wiLCBnZXRGaWd1cmVzQnlLZXlzKHRoaXMuc2V0dGluZ3Mua2V5cz8ucHJldmlvdXMgPz8gW10pXSxcbiAgICAgICAgICBbXCJOZXh0IFBhZ2VcIiwgZ2V0RmlndXJlc0J5S2V5cyh0aGlzLnNldHRpbmdzLmtleXM/Lm5leHRQYWdlID8/IFtdKV0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJQcmV2aW91cyBQYWdlXCIsXG4gICAgICAgICAgICBnZXRGaWd1cmVzQnlLZXlzKHRoaXMuc2V0dGluZ3Mua2V5cz8ucHJldmlvdXNQYWdlID8/IFtdKSxcbiAgICAgICAgICBdLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWN0aW9ucy5wdXNoKFxuICAgICAgICAgIFtcIk5leHRcIiwgZ2V0RmlndXJlc0J5S2V5cyh0aGlzLnNldHRpbmdzLmtleXM/Lm5leHQgPz8gW10pXSxcbiAgICAgICAgICBbXCJQcmV2aW91c1wiLCBnZXRGaWd1cmVzQnlLZXlzKHRoaXMuc2V0dGluZ3Mua2V5cz8ucHJldmlvdXMgPz8gW10pXSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGFjdGlvbnMucHVzaChcbiAgICAgICAgW1wiQ29tcGxldGVcIiwgZ2V0RmlndXJlc0J5S2V5cyh0aGlzLnNldHRpbmdzLmtleXM/LmNvbXBsZXRlID8/IFtdKV0sXG4gICAgICApO1xuICAgIH1cbiAgICBhY3Rpb25zLnB1c2goXG4gICAgICBbXCJTdWJtaXRcIiwgZ2V0RmlndXJlc0J5S2V5cyh0aGlzLnNldHRpbmdzLmtleXM/LnN1Ym1pdCA/PyBbXSldLFxuICAgICk7XG5cbiAgICBsZXQgaW5mbyA9IHRoaXMuc2V0dGluZ3MuaW5kZW50O1xuICAgIGlmICh0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCkge1xuICAgICAgaW5mbyArPSBicmlnaHRCbHVlKEZpZ3VyZXMuSU5GTykgKyBib2xkKGAgJHtzZWxlY3RlZH0vJHttYXRjaGVkfSBgKTtcbiAgICB9XG4gICAgaW5mbyArPSBhY3Rpb25zXG4gICAgICAubWFwKChjdXIpID0+IGAke2N1clswXX06ICR7Ym9sZChjdXJbMV0uam9pbihcIiBcIikpfWApXG4gICAgICAuam9pbihcIiwgXCIpO1xuXG4gICAgcmV0dXJuIGluZm87XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TGlzdCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5zdWdnZXN0aW9ucy5sZW5ndGggfHwgIXRoaXMuc2V0dGluZ3MubGlzdCkge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIGNvbnN0IGxpc3Q6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgICBjb25zdCBoZWlnaHQ6IG51bWJlciA9IHRoaXMuZ2V0TGlzdEhlaWdodCgpO1xuICAgIGZvciAoXG4gICAgICBsZXQgaSA9IHRoaXMuc3VnZ2VzdGlvbnNPZmZzZXQ7XG4gICAgICBpIDwgdGhpcy5zdWdnZXN0aW9uc09mZnNldCArIGhlaWdodDtcbiAgICAgIGkrK1xuICAgICkge1xuICAgICAgbGlzdC5wdXNoKFxuICAgICAgICB0aGlzLmdldExpc3RJdGVtKFxuICAgICAgICAgIHRoaXMuc3VnZ2VzdGlvbnNbaV0sXG4gICAgICAgICAgdGhpcy5zdWdnZXN0aW9uc0luZGV4ID09PSBpLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGxpc3QubGVuZ3RoICYmIHRoaXMuc2V0dGluZ3MuaW5mbykge1xuICAgICAgbGlzdC5wdXNoKFwiXCIpO1xuICAgIH1cbiAgICByZXR1cm4gbGlzdC5qb2luKFwiXFxuXCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciBvcHRpb24uXG4gICAqIEBwYXJhbSB2YWx1ZSAgICAgICAgT3B0aW9uLlxuICAgKiBAcGFyYW0gaXNTZWxlY3RlZCAgU2V0IHRvIHRydWUgaWYgb3B0aW9uIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldExpc3RJdGVtKFxuICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgaXNTZWxlY3RlZD86IGJvb2xlYW4sXG4gICk6IHN0cmluZyB7XG4gICAgbGV0IGxpbmUgPSB0aGlzLnNldHRpbmdzLmluZGVudCA/PyBcIlwiO1xuICAgIGxpbmUgKz0gaXNTZWxlY3RlZCA/IGAke3RoaXMuc2V0dGluZ3MubGlzdFBvaW50ZXJ9IGAgOiBcIiAgXCI7XG4gICAgaWYgKGlzU2VsZWN0ZWQpIHtcbiAgICAgIGxpbmUgKz0gdW5kZXJsaW5lKHRoaXMuaGlnaGxpZ2h0KHZhbHVlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxpbmUgKz0gdGhpcy5oaWdobGlnaHQodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gbGluZTtcbiAgfVxuXG4gIC8qKiBHZXQgc3VnZ2VzdGlvbnMgcm93IGhlaWdodC4gKi9cbiAgcHJvdGVjdGVkIGdldExpc3RIZWlnaHQoXG4gICAgc3VnZ2VzdGlvbnM6IEFycmF5PHN0cmluZyB8IG51bWJlcj4gPSB0aGlzLnN1Z2dlc3Rpb25zLFxuICApOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLm1pbihcbiAgICAgIHN1Z2dlc3Rpb25zLmxlbmd0aCxcbiAgICAgIHRoaXMuc2V0dGluZ3MubWF4Um93cyB8fCBzdWdnZXN0aW9ucy5sZW5ndGgsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdXNlciBpbnB1dCBldmVudC5cbiAgICogQHBhcmFtIGV2ZW50IEtleSBldmVudC5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVFdmVudChldmVudDogS2V5Q29kZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgY2FzZSB0aGlzLmlzS2V5KHRoaXMuc2V0dGluZ3Mua2V5cywgXCJuZXh0XCIsIGV2ZW50KTpcbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MubGlzdCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0UHJldmlvdXNTdWdnZXN0aW9uKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3ROZXh0U3VnZ2VzdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLmlzS2V5KHRoaXMuc2V0dGluZ3Mua2V5cywgXCJwcmV2aW91c1wiLCBldmVudCk6XG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmxpc3QpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdE5leHRTdWdnZXN0aW9uKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RQcmV2aW91c1N1Z2dlc3Rpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5pc0tleSh0aGlzLnNldHRpbmdzLmtleXMsIFwibmV4dFBhZ2VcIiwgZXZlbnQpOlxuICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy5saXN0KSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RQcmV2aW91c1N1Z2dlc3Rpb25zUGFnZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0TmV4dFN1Z2dlc3Rpb25zUGFnZSgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLmlzS2V5KHRoaXMuc2V0dGluZ3Mua2V5cywgXCJwcmV2aW91c1BhZ2VcIiwgZXZlbnQpOlxuICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy5saXN0KSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3ROZXh0U3VnZ2VzdGlvbnNQYWdlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RQcmV2aW91c1N1Z2dlc3Rpb25zUGFnZSgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLmlzS2V5KHRoaXMuc2V0dGluZ3Mua2V5cywgXCJjb21wbGV0ZVwiLCBldmVudCk6XG4gICAgICAgIGF3YWl0IHRoaXMuI2NvbXBsZXRlVmFsdWUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuaXNLZXkodGhpcy5zZXR0aW5ncy5rZXlzLCBcIm1vdmVDdXJzb3JSaWdodFwiLCBldmVudCk6XG4gICAgICAgIGlmICh0aGlzLmlucHV0SW5kZXggPCB0aGlzLmlucHV0VmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5tb3ZlQ3Vyc29yUmlnaHQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLiNjb21wbGV0ZVZhbHVlKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhd2FpdCBzdXBlci5oYW5kbGVFdmVudChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIERlbGV0ZSBjaGFyIHJpZ2h0LiAqL1xuICBwcm90ZWN0ZWQgZGVsZXRlQ2hhclJpZ2h0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlucHV0SW5kZXggPCB0aGlzLmlucHV0VmFsdWUubGVuZ3RoKSB7XG4gICAgICBzdXBlci5kZWxldGVDaGFyUmlnaHQoKTtcbiAgICAgIGlmICghdGhpcy5nZXRDdXJyZW50SW5wdXRWYWx1ZSgpLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zSW5kZXggPSAtMTtcbiAgICAgICAgdGhpcy5zdWdnZXN0aW9uc09mZnNldCA9IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgI2NvbXBsZXRlVmFsdWUoKSB7XG4gICAgdGhpcy5pbnB1dFZhbHVlID0gYXdhaXQgdGhpcy5jb21wbGV0ZSgpO1xuICAgIHRoaXMuaW5wdXRJbmRleCA9IHRoaXMuaW5wdXRWYWx1ZS5sZW5ndGg7XG4gICAgdGhpcy5zdWdnZXN0aW9uc0luZGV4ID0gMDtcbiAgICB0aGlzLnN1Z2dlc3Rpb25zT2Zmc2V0ID0gMDtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBjb21wbGV0ZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGxldCBpbnB1dDogc3RyaW5nID0gdGhpcy5nZXRDdXJyZW50SW5wdXRWYWx1ZSgpO1xuICAgIGNvbnN0IHN1Z2dlc3Rpb246IHN0cmluZyB8IHVuZGVmaW5lZCA9IHRoaXNcbiAgICAgIC5zdWdnZXN0aW9uc1t0aGlzLnN1Z2dlc3Rpb25zSW5kZXhdPy50b1N0cmluZygpO1xuXG4gICAgaWYgKHRoaXMuc2V0dGluZ3MuY29tcGxldGUpIHtcbiAgICAgIGlucHV0ID0gYXdhaXQgdGhpcy5zZXR0aW5ncy5jb21wbGV0ZShpbnB1dCwgc3VnZ2VzdGlvbik7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMuI2lzRmlsZU1vZGVFbmFibGVkKCkgJiZcbiAgICAgIGlucHV0LmF0KC0xKSAhPT0gc2VwICYmXG4gICAgICBhd2FpdCBpc0RpcmVjdG9yeShpbnB1dCkgJiZcbiAgICAgIChcbiAgICAgICAgdGhpcy5nZXRDdXJyZW50SW5wdXRWYWx1ZSgpLmF0KC0xKSAhPT0gXCIuXCIgfHxcbiAgICAgICAgdGhpcy5nZXRDdXJyZW50SW5wdXRWYWx1ZSgpLmVuZHNXaXRoKFwiLi5cIilcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGlucHV0ICs9IHNlcDtcbiAgICB9IGVsc2UgaWYgKHN1Z2dlc3Rpb24pIHtcbiAgICAgIGlucHV0ID0gc3VnZ2VzdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy4jaXNGaWxlTW9kZUVuYWJsZWQoKSA/IG5vcm1hbGl6ZShpbnB1dCkgOiBpbnB1dDtcbiAgfVxuXG4gIC8qKiBTZWxlY3QgcHJldmlvdXMgc3VnZ2VzdGlvbi4gKi9cbiAgcHJvdGVjdGVkIHNlbGVjdFByZXZpb3VzU3VnZ2VzdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdWdnZXN0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLnN1Z2dlc3Rpb25zSW5kZXggPiAtMSkge1xuICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zSW5kZXgtLTtcbiAgICAgICAgaWYgKHRoaXMuc3VnZ2VzdGlvbnNJbmRleCA8IHRoaXMuc3VnZ2VzdGlvbnNPZmZzZXQpIHtcbiAgICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zT2Zmc2V0LS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogU2VsZWN0IG5leHQgc3VnZ2VzdGlvbi4gKi9cbiAgcHJvdGVjdGVkIHNlbGVjdE5leHRTdWdnZXN0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCkge1xuICAgICAgaWYgKHRoaXMuc3VnZ2VzdGlvbnNJbmRleCA8IHRoaXMuc3VnZ2VzdGlvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zSW5kZXgrKztcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuc3VnZ2VzdGlvbnNJbmRleCA+PVxuICAgICAgICAgICAgdGhpcy5zdWdnZXN0aW9uc09mZnNldCArIHRoaXMuZ2V0TGlzdEhlaWdodCgpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuc3VnZ2VzdGlvbnNPZmZzZXQrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBTZWxlY3QgcHJldmlvdXMgc3VnZ2VzdGlvbnMgcGFnZS4gKi9cbiAgcHJvdGVjdGVkIHNlbGVjdFByZXZpb3VzU3VnZ2VzdGlvbnNQYWdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCkge1xuICAgICAgY29uc3QgaGVpZ2h0OiBudW1iZXIgPSB0aGlzLmdldExpc3RIZWlnaHQoKTtcbiAgICAgIGlmICh0aGlzLnN1Z2dlc3Rpb25zT2Zmc2V0ID49IGhlaWdodCkge1xuICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zSW5kZXggLT0gaGVpZ2h0O1xuICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zT2Zmc2V0IC09IGhlaWdodDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zdWdnZXN0aW9uc09mZnNldCA+IDApIHtcbiAgICAgICAgdGhpcy5zdWdnZXN0aW9uc0luZGV4IC09IHRoaXMuc3VnZ2VzdGlvbnNPZmZzZXQ7XG4gICAgICAgIHRoaXMuc3VnZ2VzdGlvbnNPZmZzZXQgPSAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBTZWxlY3QgbmV4dCBzdWdnZXN0aW9ucyBwYWdlLiAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0TmV4dFN1Z2dlc3Rpb25zUGFnZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdWdnZXN0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGhlaWdodDogbnVtYmVyID0gdGhpcy5nZXRMaXN0SGVpZ2h0KCk7XG4gICAgICBpZiAodGhpcy5zdWdnZXN0aW9uc09mZnNldCArIGhlaWdodCArIGhlaWdodCA8IHRoaXMuc3VnZ2VzdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuc3VnZ2VzdGlvbnNJbmRleCArPSBoZWlnaHQ7XG4gICAgICAgIHRoaXMuc3VnZ2VzdGlvbnNPZmZzZXQgKz0gaGVpZ2h0O1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnN1Z2dlc3Rpb25zT2Zmc2V0ICsgaGVpZ2h0IDwgdGhpcy5zdWdnZXN0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5zdWdnZXN0aW9ucy5sZW5ndGggLSBoZWlnaHQ7XG4gICAgICAgIHRoaXMuc3VnZ2VzdGlvbnNJbmRleCArPSBvZmZzZXQgLSB0aGlzLnN1Z2dlc3Rpb25zT2Zmc2V0O1xuICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zT2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB1bmlxdWVTdWdnZXN0aW9ucyhcbiAgdmFsdWU6IHVua25vd24sXG4gIGluZGV4OiBudW1iZXIsXG4gIHNlbGY6IEFycmF5PHVua25vd24+LFxuKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgIT09IFwidW5kZWZpbmVkXCIgJiYgdmFsdWUgIT09IFwiXCIgJiZcbiAgICBzZWxmLmluZGV4T2YodmFsdWUpID09PSBpbmRleDtcbn1cblxuZnVuY3Rpb24gaXNEaXJlY3RvcnkocGF0aDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHJldHVybiBEZW5vLnN0YXQocGF0aClcbiAgICAudGhlbigoZmlsZSkgPT4gZmlsZS5pc0RpcmVjdG9yeSlcbiAgICAuY2F0Y2goKCkgPT4gZmFsc2UpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBsaXN0RGlyKFxuICBwYXRoOiBzdHJpbmcsXG4gIG1vZGU/OiBib29sZWFuIHwgUmVnRXhwLFxuKTogUHJvbWlzZTxBcnJheTxzdHJpbmc+PiB7XG4gIGNvbnN0IGZpbGVOYW1lczogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgYXdhaXQgKGNvbnN0IGZpbGUgb2YgRGVuby5yZWFkRGlyKHBhdGggfHwgXCIuXCIpKSB7XG4gICAgaWYgKFxuICAgICAgbW9kZSA9PT0gdHJ1ZSAmJiAoZmlsZS5uYW1lLnN0YXJ0c1dpdGgoXCIuXCIpIHx8IGZpbGUubmFtZS5lbmRzV2l0aChcIn5cIikpXG4gICAgKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgZmlsZVBhdGggPSBqb2luKHBhdGgsIGZpbGUubmFtZSk7XG5cbiAgICBpZiAobW9kZSBpbnN0YW5jZW9mIFJlZ0V4cCAmJiAhbW9kZS50ZXN0KGZpbGVQYXRoKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGZpbGVOYW1lcy5wdXNoKGZpbGVQYXRoKTtcbiAgfVxuXG4gIHJldHVybiBmaWxlTmFtZXMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIHJldHVybiBhLnRvTG93ZXJDYXNlKCkubG9jYWxlQ29tcGFyZShiLnRvTG93ZXJDYXNlKCkpO1xuICB9KTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxTQUNFLFlBQVksUUFJUCxzQkFBc0I7QUFDN0IsU0FDRSxJQUFJLEVBQ0osVUFBVSxFQUNWLEdBQUcsRUFDSCxPQUFPLEVBQ1AsSUFBSSxFQUNKLFNBQVMsRUFDVCxVQUFVLEVBQ1YsU0FBUyxRQUNKLFlBQVk7QUFDbkIsU0FBUyxPQUFPLEVBQUUsZ0JBQWdCLFFBQVEsZUFBZTtBQUN6RCxTQUFTLFFBQVEsUUFBUSx3QkFBd0I7QUFzRGpELE1BQU0sTUFBTSxLQUFLLEtBQUssQ0FBQyxFQUFFLEtBQUssWUFBWSxPQUFPO0FBRWpELHlDQUF5QyxHQUN6QyxPQUFPLE1BQWUsMkJBSVo7RUFDRSxtQkFBbUIsQ0FBQyxFQUFFO0VBQ3RCLG9CQUFvQixFQUFFO0VBQ3RCLGNBQXNDLEVB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 +// denoCacheMetadata=2672763542856384048,5208671079791958977
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/b92b8334e101357a25eaa93990b6e43be520eaf83c20b3addaae80feea4cf623.js b/vendor/gen/https/deno.land/b92b8334e101357a25eaa93990b6e43be520eaf83c20b3addaae80feea4cf623.js new file mode 100644 index 0000000..fa0956d --- /dev/null +++ b/vendor/gen/https/deno.land/b92b8334e101357a25eaa93990b6e43be520eaf83c20b3addaae80feea4cf623.js @@ -0,0 +1,6 @@ +/** Alias method for Number constructor. */ // deno-lint-ignore no-explicit-any +export function parseNumber(value) { + return Number(value); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvcHJvbXB0L191dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQWxpYXMgbWV0aG9kIGZvciBOdW1iZXIgY29uc3RydWN0b3IuICovXG4vLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTnVtYmVyKHZhbHVlOiBhbnkpOiBudW1iZXIge1xuICByZXR1cm4gTnVtYmVyKHZhbHVlKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5Q0FBeUMsR0FDekMsbUNBQW1DO0FBQ25DLE9BQU8sU0FBUyxZQUFZLEtBQVU7RUFDcEMsT0FBTyxPQUFPO0FBQ2hCIn0= +// denoCacheMetadata=16128713821098984831,12042923784009111353
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/bbec36a1ca77b6c7e202b4e56f361584a2bf7cbe94fd74766b08df51542f3ae0.js b/vendor/gen/https/deno.land/bbec36a1ca77b6c7e202b4e56f361584a2bf7cbe94fd74766b08df51542f3ae0.js new file mode 100644 index 0000000..b8bf9a1 --- /dev/null +++ b/vendor/gen/https/deno.land/bbec36a1ca77b6c7e202b4e56f361584a2bf7cbe94fd74766b08df51542f3ae0.js @@ -0,0 +1,63 @@ +import { Command, CompletionsCommand } from "./deps/cliffy.ts"; +import { getCurrentVersion } from "./core/utils/lume_version.ts"; +const upgrade = new Command().description("Upgrade your Lume executable to the latest version.").option("--version <version:string>", "The version to upgrade to.").option("-d, --dev", "Install the latest development version (last Git commit).").example("lume upgrade -g", "Upgrades to the latest stable version.").example("lume upgrade --dev", "Upgrades to the latest development version.").action(async ({ dev, version })=>{ + const { default: upgrade } = await import("./cli/upgrade.ts"); + await upgrade(dev, version); +}); +const create = new Command().description("Run an archetype to create more files.").example("lume new post 'Post title'", "Create a new post file using the _archetypes/post.ts archetype.")// @ts-ignore: todo: fix this +.action(async ({ config }, name, ...args)=>{ + const { create } = await import("./cli/create.ts"); + await create(config, name, args); +}); +const run = new Command().description("Run one or more scripts from the config file.").example("lume run deploy", "Runs the `deploy` script.").example("lume run deploy --config=_config.ts", "Runs the `deploy` script from the _config.ts file.").example("lume run build deploy", "Runs the `build` and `deploy` scripts.").option("--config <config:string>", "The config file path.").option("--src <src:string>", "The source directory for your site.", { + default: "./" +}).option("--dest <dest:string>", "The build destination.", { + default: "_site" +}).option("--location <location>", "The URL location of the site.", { + default: "http://localhost" +}).action(async ({ config }, ...scripts)=>{ + const { run } = await import("./cli/run.ts"); + await run(config, scripts); +}); +const cms = new Command().description("Run Lume CMS.").option("--config <config:string>", "The config file path.").option("--src <src:string>", "The source directory for your site.", { + default: "./" +}).option("--dest <dest:string>", "The build destination.", { + default: "_site" +}).option("--location <location>", "The URL location of the site.", { + default: "http://localhost" +}).option("-p, --port <port:number>", "The port where the server runs.", { + default: 3000 +}).option("--hostname <hostname>", "The hostname where the server runs.", { + default: "localhost" +}).option("-o, --open", "Open the CMS in a browser.").action(async ({ config })=>{ + const { runCms } = await import("./cli/cms.ts"); + runCms(config); +}); +const lume = new Command().name("🔥lume").version(()=>getCurrentVersion()).description("A static site generator for Deno. \nDocs: https://lume.land").example("lume", "Builds the site.").example("lume --serve", "Serves the site in localhost.").example("lume upgrade", "Upgrades Lume to the latest version.").example("lume run <script>", "Runs a custom script.").example("lume [COMMAND] --help", "Shows the help for a command.").option("--config <config:string>", "The config file path.").option("--src <src:string>", "The source directory for your site.", { + default: "./" +}).option("--dest <dest:string>", "The build destination.", { + default: "_site" +}).option("--location <type:string>", "The URL location of the site.", { + default: "http://localhost" +}).option("-s, --serve", "Start a live-reloading web server and watch changes.").option("-p, --port <port:number>", "The port where the server runs.", { + default: 3000 +}).option("--hostname <hostname>", "The hostname where the server runs.", { + default: "localhost" +}).option("-o, --open", "Open the site in a browser.", { + depends: [ + "serve" + ] +}).option("-w, --watch", "Build and watch changes.").action(async ({ config, serve, watch })=>{ + const { build } = await import("./cli/build.ts"); + build(config, serve, watch); +}).command("new <archetype> [arguments...]", create).command("upgrade", upgrade).command("run <script...>", run).command("cms", cms).command("completions", new CompletionsCommand()); +try { + await lume.parse(Deno.args); +} catch (error) { + console.error(Deno.inspect(error, { + colors: true + })); + Deno.exit(1); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY2xpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQsIENvbXBsZXRpb25zQ29tbWFuZCB9IGZyb20gXCIuL2RlcHMvY2xpZmZ5LnRzXCI7XG5pbXBvcnQgeyBnZXRDdXJyZW50VmVyc2lvbiB9IGZyb20gXCIuL2NvcmUvdXRpbHMvbHVtZV92ZXJzaW9uLnRzXCI7XG5cbmNvbnN0IHVwZ3JhZGUgPSBuZXcgQ29tbWFuZCgpXG4gIC5kZXNjcmlwdGlvbihcIlVwZ3JhZGUgeW91ciBMdW1lIGV4ZWN1dGFibGUgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uLlwiKVxuICAub3B0aW9uKFxuICAgIFwiLS12ZXJzaW9uIDx2ZXJzaW9uOnN0cmluZz5cIixcbiAgICBcIlRoZSB2ZXJzaW9uIHRvIHVwZ3JhZGUgdG8uXCIsXG4gIClcbiAgLm9wdGlvbihcbiAgICBcIi1kLCAtLWRldlwiLFxuICAgIFwiSW5zdGFsbCB0aGUgbGF0ZXN0IGRldmVsb3BtZW50IHZlcnNpb24gKGxhc3QgR2l0IGNvbW1pdCkuXCIsXG4gIClcbiAgLmV4YW1wbGUoXCJsdW1lIHVwZ3JhZGUgLWdcIiwgXCJVcGdyYWRlcyB0byB0aGUgbGF0ZXN0IHN0YWJsZSB2ZXJzaW9uLlwiKVxuICAuZXhhbXBsZShcImx1bWUgdXBncmFkZSAtLWRldlwiLCBcIlVwZ3JhZGVzIHRvIHRoZSBsYXRlc3QgZGV2ZWxvcG1lbnQgdmVyc2lvbi5cIilcbiAgLmFjdGlvbihhc3luYyAoeyBkZXYsIHZlcnNpb24gfSkgPT4ge1xuICAgIGNvbnN0IHsgZGVmYXVsdDogdXBncmFkZSB9ID0gYXdhaXQgaW1wb3J0KFwiLi9jbGkvdXBncmFkZS50c1wiKTtcbiAgICBhd2FpdCB1cGdyYWRlKGRldiwgdmVyc2lvbik7XG4gIH0pO1xuXG5jb25zdCBjcmVhdGUgPSBuZXcgQ29tbWFuZCgpXG4gIC5kZXNjcmlwdGlvbihcIlJ1biBhbiBhcmNoZXR5cGUgdG8gY3JlYXRlIG1vcmUgZmlsZXMuXCIpXG4gIC5leGFtcGxlKFxuICAgIFwibHVtZSBuZXcgcG9zdCAnUG9zdCB0aXRsZSdcIixcbiAgICBcIkNyZWF0ZSBhIG5ldyBwb3N0IGZpbGUgdXNpbmcgdGhlIF9hcmNoZXR5cGVzL3Bvc3QudHMgYXJjaGV0eXBlLlwiLFxuICApXG4gIC8vIEB0cy1pZ25vcmU6IHRvZG86IGZpeCB0aGlzXG4gIC5hY3Rpb24oYXN5bmMgKHsgY29uZmlnIH0sIG5hbWUsIC4uLmFyZ3MpID0+IHtcbiAgICBjb25zdCB7IGNyZWF0ZSB9ID0gYXdhaXQgaW1wb3J0KFwiLi9jbGkvY3JlYXRlLnRzXCIpO1xuICAgIGF3YWl0IGNyZWF0ZShjb25maWcsIG5hbWUsIGFyZ3MpO1xuICB9KTtcblxuY29uc3QgcnVuID0gbmV3IENvbW1hbmQoKVxuICAuZGVzY3JpcHRpb24oXCJSdW4gb25lIG9yIG1vcmUgc2NyaXB0cyBmcm9tIHRoZSBjb25maWcgZmlsZS5cIilcbiAgLmV4YW1wbGUoXG4gICAgXCJsdW1lIHJ1biBkZXBsb3lcIixcbiAgICBcIlJ1bnMgdGhlIGBkZXBsb3lgIHNjcmlwdC5cIixcbiAgKVxuICAuZXhhbXBsZShcbiAgICBcImx1bWUgcnVuIGRlcGxveSAtLWNvbmZpZz1fY29uZmlnLnRzXCIsXG4gICAgXCJSdW5zIHRoZSBgZGVwbG95YCBzY3JpcHQgZnJvbSB0aGUgX2NvbmZpZy50cyBmaWxlLlwiLFxuICApXG4gIC5leGFtcGxlKFxuICAgIFwibHVtZSBydW4gYnVpbGQgZGVwbG95XCIsXG4gICAgXCJSdW5zIHRoZSBgYnVpbGRgIGFuZCBgZGVwbG95YCBzY3JpcHRzLlwiLFxuICApXG4gIC5vcHRpb24oXG4gICAgXCItLWNvbmZpZyA8Y29uZmlnOnN0cmluZz5cIixcbiAgICBcIlRoZSBjb25maWcgZmlsZSBwYXRoLlwiLFxuICApXG4gIC5vcHRpb24oXG4gICAgXCItLXNyYyA8c3JjOnN0cmluZz5cIixcbiAgICBcIlRoZSBzb3VyY2UgZGlyZWN0b3J5IGZvciB5b3VyIHNpdGUuXCIsXG4gICAgeyBkZWZhdWx0OiBcIi4vXCIgfSxcbiAgKVxuICAub3B0aW9uKFxuICAgIFwiLS1kZXN0IDxkZXN0OnN0cmluZz5cIixcbiAgICBcIlRoZSBidWlsZCBkZXN0aW5hdGlvbi5cIixcbiAgICB7IGRlZmF1bHQ6IFwiX3NpdGVcIiB9LFxuICApXG4gIC5vcHRpb24oXG4gICAgXCItLWxvY2F0aW9uIDxsb2NhdGlvbj5cIixcbiAgICBcIlRoZSBVUkwgbG9jYXRpb24gb2YgdGhlIHNpdGUuXCIsXG4gICAgeyBkZWZhdWx0OiBcImh0dHA6Ly9sb2NhbGhvc3RcIiB9LFxuICApXG4gIC5hY3Rpb24oYXN5bmMgKHsgY29uZmlnIH0sIC4uLnNjcmlwdHMpID0+IHtcbiAgICBjb25zdCB7IHJ1biB9ID0gYXdhaXQgaW1wb3J0KFwiLi9jbGkvcnVuLnRzXCIpO1xuICAgIGF3YWl0IHJ1bihjb25maWcsIHNjcmlwdHMpO1xuICB9KTtcblxuY29uc3QgY21zID0gbmV3IENvbW1hbmQoKVxuICAuZGVzY3JpcHRpb24oXCJSdW4gTHVtZSBDTVMuXCIpXG4gIC5vcHRpb24oXG4gICAgXCItLWNvbmZpZyA8Y29uZmlnOnN0cmluZz5cIixcbiAgICBcIlRoZSBjb25maWcgZmlsZSBwYXRoLlwiLFxuICApXG4gIC5vcHRpb24oXG4gICAgXCItLXNyYyA8c3JjOnN0cmluZz5cIixcbiAgICBcIlRoZSBzb3VyY2UgZGlyZWN0b3J5IGZvciB5b3VyIHNpdGUuXCIsXG4gICAgeyBkZWZhdWx0OiBcIi4vXCIgfSxcbiAgKVxuICAub3B0aW9uKFxuICAgIFwiLS1kZXN0IDxkZXN0OnN0cmluZz5cIixcbiAgICBcIlRoZSBidWlsZCBkZXN0aW5hdGlvbi5cIixcbiAgICB7IGRlZmF1bHQ6IFwiX3NpdGVcIiB9LFxuICApXG4gIC5vcHRpb24oXG4gICAgXCItLWxvY2F0aW9uIDxsb2NhdGlvbj5cIixcbiAgICBcIlRoZSBVUkwgbG9jYXRpb24gb2YgdGhlIHNpdGUuXCIsXG4gICAgeyBkZWZhdWx0OiBcImh0dHA6Ly9sb2NhbGhvc3RcIiB9LFxuICApXG4gIC5vcHRpb24oXG4gICAgXCItcCwgLS1wb3J0IDxwb3J0Om51bWJlcj5cIixcbiAgICBcIlRoZSBwb3J0IHdoZXJlIHRoZSBzZXJ2ZXIgcnVucy5cIixcbiAgICB7IGRlZmF1bHQ6IDMwMDAgfSxcbiAgKVxuICAub3B0aW9uKFxuICAgIFwiLS1ob3N0bmFtZSA8aG9zdG5hbWU+XCIsXG4gICAgXCJUaGUgaG9zdG5hbWUgd2hlcmUgdGhlIHNlcnZlciBydW5zLlwiLFxuICAgIHsgZGVmYXVsdDogXCJsb2NhbGhvc3RcIiB9LFxuICApXG4gIC5vcHRpb24oXG4gICAgXCItbywgLS1vcGVuXCIsXG4gICAgXCJPcGVuIHRoZSBDTVMgaW4gYSBicm93c2VyLlwiLFxuICApXG4gIC5hY3Rpb24oYXN5bmMgKHsgY29uZmlnIH0pID0+IHtcbiAgICBjb25zdCB7IHJ1bkNtcyB9ID0gYXdhaXQgaW1wb3J0KFwiLi9jbGkvY21zLnRzXCIpO1xuICAgIHJ1bkNtcyhjb25maWcpO1xuICB9KTtcblxuY29uc3QgbHVtZSA9IG5ldyBDb21tYW5kKClcbiAgLm5hbWUoXCLwn5SlbHVtZVwiKVxuICAudmVyc2lvbigoKSA9PiBnZXRDdXJyZW50VmVyc2lvbigpKVxuICAuZGVzY3JpcHRpb24oXG4gICAgXCJBIHN0YXRpYyBzaXRlIGdlbmVyYXRvciBmb3IgRGVuby4gXFxuRG9jczogaHR0cHM6Ly9sdW1lLmxhbmRcIixcbiAgKVxuICAuZXhhbXBsZShcImx1bWVcIiwgXCJCdWlsZHMgdGhlIHNpdGUuXCIpXG4gIC5leGFtcGxlKFwibHVtZSAtLXNlcnZlXCIsIFwiU2VydmVzIHRoZSBzaXRlIGluIGxvY2FsaG9zdC5cIilcbiAgLmV4YW1wbGUoXCJsdW1lIHVwZ3JhZGVcIiwgXCJVcGdyYWRlcyBMdW1lIHRvIHRoZSBsYXRlc3QgdmVyc2lvbi5cIilcbiAgLmV4YW1wbGUoXCJsdW1lIHJ1biA8c2NyaXB0PlwiLCBcIlJ1bnMgYSBjdXN0b20gc2NyaXB0LlwiKVxuICAuZXhhbXBsZShcImx1bWUgW0NPTU1BTkRdIC0taGVscFwiLCBcIlNob3dzIHRoZSBoZWxwIGZvciBhIGNvbW1hbmQuXCIpXG4gIC5vcHRpb24oXG4gICAgXCItLWNvbmZpZyA8Y29uZmlnOnN0cmluZz5cIixcbiAgICBcIlRoZSBjb25maWcgZmlsZSBwYXRoLlwiLFxuICApXG4gIC5vcHRpb24oXG4gICAgXCItLXNyYyA8c3JjOnN0cmluZz5cIixcbiAgICBcIlRoZSBzb3VyY2UgZGlyZWN0b3J5IGZvciB5b3VyIHNpdGUuXCIsXG4gICAgeyBkZWZhdWx0OiBcIi4vXCIgfSxcbiAgKVxuICAub3B0aW9uKFxuICAgIFwiLS1kZXN0IDxkZXN0OnN0cmluZz5cIixcbiAgICBcIlRoZSBidWlsZCBkZXN0aW5hdGlvbi5cIixcbiAgICB7IGRlZmF1bHQ6IFwiX3NpdGVcIiB9LFxuICApXG4gIC5vcHRpb24oXG4gICAgXCItLWxvY2F0aW9uIDx0eXBlOnN0cmluZz5cIixcbiAgICBcIlRoZSBVUkwgbG9jYXRpb24gb2YgdGhlIHNpdGUuXCIsXG4gICAgeyBkZWZhdWx0OiBcImh0dHA6Ly9sb2NhbGhvc3RcIiB9LFxuICApXG4gIC5vcHRpb24oXG4gICAgXCItcywgLS1zZXJ2ZVwiLFxuICAgIFwiU3RhcnQgYSBsaXZlLXJlbG9hZGluZyB3ZWIgc2VydmVyIGFuZCB3YXRjaCBjaGFuZ2VzLlwiLFxuICApXG4gIC5vcHRpb24oXG4gICAgXCItcCwgLS1wb3J0IDxwb3J0Om51bWJlcj5cIixcbiAgICBcIlRoZSBwb3J0IHdoZXJlIHRoZSBzZXJ2ZXIgcnVucy5cIixcbiAgICB7IGRlZmF1bHQ6IDMwMDAgfSxcbiAgKVxuICAub3B0aW9uKFxuICAgIFwiLS1ob3N0bmFtZSA8aG9zdG5hbWU+XCIsXG4gICAgXCJUaGUgaG9zdG5hbWUgd2hlcmUgdGhlIHNlcnZlciBydW5zLlwiLFxuICAgIHsgZGVmYXVsdDogXCJsb2NhbGhvc3RcIiB9LFxuICApXG4gIC5vcHRpb24oXG4gICAgXCItbywgLS1vcGVuXCIsXG4gICAgXCJPcGVuIHRoZSBzaXRlIGluIGEgYnJvd3Nlci5cIixcbiAgICB7IGRlcGVuZHM6IFtcInNlcnZlXCJdIH0sXG4gIClcbiAgLm9wdGlvbihcbiAgICBcIi13LCAtLXdhdGNoXCIsXG4gICAgXCJCdWlsZCBhbmQgd2F0Y2ggY2hhbmdlcy5cIixcbiAgKVxuICAuYWN0aW9uKGFzeW5jICh7IGNvbmZpZywgc2VydmUsIHdhdGNoIH0pID0+IHtcbiAgICBjb25zdCB7IGJ1aWxkIH0gPSBhd2FpdCBpbXBvcnQoXCIuL2NsaS9idWlsZC50c1wiKTtcbiAgICBidWlsZChjb25maWcsIHNlcnZlLCB3YXRjaCk7XG4gIH0pXG4gIC5jb21tYW5kKFwibmV3IDxhcmNoZXR5cGU+IFthcmd1bWVudHMuLi5dXCIsIGNyZWF0ZSlcbiAgLmNvbW1hbmQoXCJ1cGdyYWRlXCIsIHVwZ3JhZGUpXG4gIC5jb21tYW5kKFwicnVuIDxzY3JpcHQuLi4+XCIsIHJ1bilcbiAgLmNvbW1hbmQoXCJjbXNcIiwgY21zKVxuICAuY29tbWFuZChcImNvbXBsZXRpb25zXCIsIG5ldyBDb21wbGV0aW9uc0NvbW1hbmQoKSk7XG5cbnRyeSB7XG4gIGF3YWl0IGx1bWUucGFyc2UoRGVuby5hcmdzKTtcbn0gY2F0Y2ggKGVycm9yKSB7XG4gIGNvbnNvbGUuZXJyb3IoRGVuby5pbnNwZWN0KGVycm9yLCB7IGNvbG9yczogdHJ1ZSB9KSk7XG4gIERlbm8uZXhpdCgxKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLE9BQU8sRUFBRSxrQkFBa0IsUUFBUSxtQkFBbUI7QUFDL0QsU0FBUyxpQkFBaUIsUUFBUSwrQkFBK0I7QUFFakUsTUFBTSxVQUFVLElBQUksVUFDakIsV0FBVyxDQUFDLHVEQUNaLE1BQU0sQ0FDTCw4QkFDQSw4QkFFRCxNQUFNLENBQ0wsYUFDQSw2REFFRCxPQUFPLENBQUMsbUJBQW1CLDBDQUMzQixPQUFPLENBQUMsc0JBQXNCLCtDQUM5QixNQUFNLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxP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 +// denoCacheMetadata=5133253858446155415,95508442838772736
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/bc954c21a677007a2ed3673129ee4c05fadbd001d5c4c9ee5931ec76ef25c7f9.js b/vendor/gen/https/deno.land/bc954c21a677007a2ed3673129ee4c05fadbd001d5c4c9ee5931ec76ef25c7f9.js new file mode 100644 index 0000000..ae53ab8 --- /dev/null +++ b/vendor/gen/https/deno.land/bc954c21a677007a2ed3673129ee4c05fadbd001d5c4c9ee5931ec76ef25c7f9.js @@ -0,0 +1,318 @@ +import { globToRegExp } from "../deps/path.ts"; +import { normalizePath } from "./utils/path.ts"; +/** Search helper */ export default class Searcher { + #pages; + #files; + #sourceData; + #cache = new Map(); + #filters; + constructor(options){ + this.#pages = options.pages; + this.#files = options.files; + this.#sourceData = options.sourceData; + this.#filters = options.filters || []; + } + /** Clear the cache (used after a change in watch mode) */ deleteCache() { + this.#cache.clear(); + } + /** + * Return the data in the scope of a path (file or folder) + */ data(path = "/") { + const normalized = normalizePath(path); + const dirData = this.#sourceData.get(normalized); + if (dirData) { + return dirData; + } + const result = this.#pages.find((page)=>page.data.url === normalized || page.data.sourcePath === normalized); + if (result) { + return result.data; + } + } + /** Search pages */ pages(query, sort, limit) { + const result = this.#searchPages(query, sort); + if (!limit) { + return result; + } + return limit < 0 ? result.slice(limit) : result.slice(0, limit); + } + /** Search and return the first page */ page(query, sort) { + return this.pages(query, sort)[0]; + } + /** Search files using a glob */ files(globOrRegexp) { + const files = this.#files.map((file)=>file.outputPath); + const pages = this.#pages.map((page)=>page.outputPath); + const allFiles = [ + ...files, + ...pages + ]; + if (!globOrRegexp) { + return allFiles; + } + const regexp = typeof globOrRegexp === "string" ? globToRegExp(globOrRegexp) : globOrRegexp; + return allFiles.filter((file)=>regexp.test(file)); + } + /** Returns all values from the same key of a search */ values(key, query) { + const values = new Set(); + this.#searchPages(query).forEach((data)=>{ + const value = data[key]; + if (Array.isArray(value)) { + value.forEach((v)=>values.add(v)); + } else if (value !== undefined) { + values.add(value); + } + }); + return Array.from(values); + } + /** Return the next page of a search */ nextPage(url, query, sort) { + const pages = this.#searchPages(query, sort); + const index = pages.findIndex((data)=>data.url === url); + return index === -1 ? undefined : pages[index + 1]; + } + /** Return the previous page of a search */ previousPage(url, query, sort) { + const pages = this.#searchPages(query, sort); + const index = pages.findIndex((data)=>data.url === url); + return index <= 0 ? undefined : pages[index - 1]; + } + #searchPages(query, sort = "date") { + const id = JSON.stringify([ + query, + sort + ]); + if (this.#cache.has(id)) { + return [ + ...this.#cache.get(id) + ]; + } + const compiledFilter = buildFilter(query); + const filters = compiledFilter ? this.#filters.concat([ + compiledFilter + ]) : this.#filters; + const result = filters.reduce((pages, filter)=>pages.filter(filter), this.#pages.map((page)=>page.data)); + result.sort(buildSort(sort)); + this.#cache.set(id, result); + return [ + ...result + ]; + } +} +/** + * Parse a query string and return a function to filter a search result + * + * example: "title=foo level<3" + * returns: (page) => page.data.title === "foo" && page.data.level < 3 + */ export function buildFilter(query = "") { + // (?:(not)?(fieldName)(operator))?(value|"value"|'value') + const matches = query ? query.matchAll(/(?:(!)?([\w.-]+)([!^$*]?=|[<>]=?))?([^'"\s][^\s=<>]*|"[^"]+"|'[^']+')/g) : []; + const conditions = []; + for (const match of matches){ + let [, not, key, operator, value] = match; + if (!key) { + key = "tags"; + operator = "*="; + if (value?.startsWith("!")) { + not = not ? "" : "!"; + value = value.slice(1); + } + } + if (not) { + operator = "!" + operator; + } + conditions.push([ + key, + operator, + compileValue(value) + ]); + } + if (conditions.length) { + return compileFilter(conditions); + } +} +/** + * Convert a parsed query to a function + * + * example: [["title", "=", "foo"], ["level", "<", 3]] + * returns: (data) => data.title === "foo" && data.level < 3 + */ function compileFilter(conditions) { + const filters = []; + const args = []; + const values = []; + conditions.forEach((condition, index)=>{ + const [key, operator, value] = condition; + const varName = `value${index}`; + filters.push(compileCondition(key, operator, varName, value)); + args.push(varName); + values.push(value); + }); + args.push(`return (data) => ${filters.join(" && ")};`); + const factory = new Function(...args); + return factory(...values); +} +/** + * Convert a parsed condition to a function + * + * example: key = "data.title", operator = "=" name = "value0" value = "foo" + * returns: data.title === value0 + */ function compileCondition(key, operator, name, value) { + key = key.replaceAll(".", "?."); + if (value instanceof Date) { + switch(operator){ + case "=": + return `data.${key}?.getTime() === ${name}.getTime()`; + case "!=": + return `data.${key}?.getTime() !== ${name}.getTime()`; + case "<": + case "<=": + case ">": + case ">=": + return `data.${key}?.getTime() ${operator} ${name}.getTime()`; + case "!<": + case "!<=": + case "!>": + case "!>=": + return `!(data.${key}?.getTime() ${operator.substring(1)} ${name}.getTime())`; + default: + throw new Error(`Operator ${operator} not valid for Date values`); + } + } + if (Array.isArray(value)) { + switch(operator){ + case "=": + return `${name}.some((i) => data.${key} === i)`; + case "!=": + return `${name}.some((i) => data.${key} !== i)`; + case "^=": + return `${name}.some((i) => data.${key}?.startsWith(i))`; + case "!^=": + return `!${name}.some((i) => data.${key}?.startsWith(i))`; + case "$=": + return `${name}.some((i) => data.${key}?.endsWith(i))`; + case "!$=": + return `!${name}.some((i) => data.${key}?.endsWith(i))`; + case "*=": + return `${name}.some((i) => data.${key}?.includes(i))`; + case "!*=": + return `${name}.some((i) => data.${key}?.includes(i))`; + case "!<": + case "!<=": + case "!>": + case "!>=": + return `!${name}.some((i) => data.${key} ${operator.substring(1)} i)`; + default: + return `${name}.some((i) => data.${key} ${operator} i)`; + } + } + switch(operator){ + case "=": + return `data.${key} === ${name}`; + case "!=": + return `data.${key} !== ${name}`; + case "^=": + return `data.${key}?.startsWith(${name})`; + case "!^=": + return `!data.${key}?.startsWith(${name})`; + case "$=": + return `data.${key}?.endsWith(${name})`; + case "!$=": + return `!data.${key}?.endsWith(${name})`; + case "*=": + return `data.${key}?.includes(${name})`; + case "!*=": + return `!data.${key}?.includes(${name})`; + case "!<": + case "!<=": + case "!>": + case "!>=": + return `!(data.${key} ${operator.substring(1)} ${name})`; + default: + return `data.${key} ${operator} ${name}`; + } +} +/** + * Compile a value and return the proper type + * + * example: "true" => true + * example: "foo" => "foo" + * example: "2021-06-12" => new Date(2021, 05, 12) + */ function compileValue(value) { + if (!value) { + return value; + } + // Remove quotes + const quoted = !!value.match(/^('|")(.*)\1$/); + if (quoted) { + value = value.slice(1, -1); + } + if (value.includes("|")) { + return value.split("|").map((val)=>compileValue(val)); + } + if (quoted) { + return value; + } + if (value.toLowerCase() === "true") { + return true; + } + if (value.toLowerCase() === "false") { + return false; + } + if (value.toLowerCase() === "undefined") { + return undefined; + } + if (value.toLowerCase() === "null") { + return null; + } + if (value.match(/^\d+$/)) { + return Number(value); + } + if (typeof value === "number" && isFinite(value)) { + return Number(value); + } + // Date or datetime values: + // yyyy-mm + // yyyy-mm-dd + // yyyy-mm-ddThh + // yyyy-mm-ddThh:ii + // yyyy-mm-ddThh:ii:ss + const match = value.match(/^(\d{4})-(\d\d)(?:-(\d\d))?(?:T(\d\d)(?::(\d\d))?(?::(\d\d))?)?$/i); + if (match) { + const [, year, month, day, hour, minute, second] = match; + return new Date(parseInt(year), parseInt(month) - 1, day ? parseInt(day) : 1, hour ? parseInt(hour) : 0, minute ? parseInt(minute) : 0, second ? parseInt(second) : 0); + } + return value; +} +/** + * Convert a query to sort to a function + * + * example: "title=desc" + * returns: (a, b) => a.title > b.title + */ export function buildSort(sort) { + let fn = "0"; + let init = ""; + const pieces = sort.split(/\s+/).filter((arg)=>arg); + pieces.reverse().forEach((arg)=>{ + const match = arg.match(/([\w.-]+)(?:=(asc-locale|desc-locale|asc|desc))?/); + if (!match) { + return; + } + let [, key, direction] = match; + key = key.replaceAll(".", "?."); + switch(direction){ + case "asc-locale": + init = "const collator = new Intl.Collator();"; + fn = `(a.${key} == b.${key} ? ${fn} : collator.compare(a.${key} || "", b.${key} || ""))`; + break; + case "desc-locale": + init = "const collator = new Intl.Collator();"; + fn = `(a.${key} == b.${key} ? ${fn} : collator.compare(b.${key} || "", a.${key} || ""))`; + break; + case "desc": + fn = `(a.${key} == b.${key} ? ${fn} : (a.${key} ?? "") < (b.${key} ?? "") ? 1 : -1)`; + break; + default: + fn = `(a.${key} == b.${key} ? ${fn} : (a.${key} ?? "") > (b.${key} ?? "") ? 1 : -1)`; + break; + } + }); + return new Function(`${init} return function (a, b) { return ${fn}; }`)(); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS9zZWFyY2hlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnbG9iVG9SZWdFeHAgfSBmcm9tIFwiLi4vZGVwcy9wYXRoLnRzXCI7XG5pbXBvcnQgeyBub3JtYWxpemVQYXRoIH0gZnJvbSBcIi4vdXRpbHMvcGF0aC50c1wiO1xuXG5pbXBvcnQgdHlwZSB7IERhdGEsIFBhZ2UsIFN0YXRpY0ZpbGUgfSBmcm9tIFwiLi9maWxlLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIC8qKiBUaGUgcGFnZXMgYXJyYXkgKi9cbiAgcGFnZXM6IFBhZ2VbXTtcblxuICAvKiogVGhlIHN0YXRpYyBmaWxlcyBhcnJheSAqL1xuICBmaWxlczogU3RhdGljRmlsZVtdO1xuXG4gIC8qKiBDb250ZXh0IGRhdGEgKi9cbiAgc291cmNlRGF0YTogTWFwPHN0cmluZywgUGFydGlhbDxEYXRhPj47XG5cbiAgLyoqIEZpbHRlcnMgdG8gYXBwbHkgdG8gYWxsIHBhZ2Ugc2VhcmNoZXMgKi9cbiAgZmlsdGVycz86IEZpbHRlcltdO1xufVxuXG50eXBlIEZpbHRlciA9IChkYXRhOiBEYXRhKSA9PiBib29sZWFuO1xudHlwZSBDb25kaXRpb24gPSBbc3RyaW5nLCBzdHJpbmcsIHVua25vd25dO1xuXG4vKiogU2VhcmNoIGhlbHBlciAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VhcmNoZXIge1xuICAjcGFnZXM6IFBhZ2VbXTtcbiAgI2ZpbGVzOiBTdGF0aWNGaWxlW107XG4gICNzb3VyY2VEYXRhOiBNYXA8c3RyaW5nLCBQYXJ0aWFsPERhdGE+PjtcbiAgI2NhY2hlID0gbmV3IE1hcDxzdHJpbmcsIERhdGFbXT4oKTtcbiAgI2ZpbHRlcnM6IEZpbHRlcltdO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICB0aGlzLiNwYWdlcyA9IG9wdGlvbnMucGFnZXM7XG4gICAgdGhpcy4jZmlsZXMgPSBvcHRpb25zLmZpbGVzO1xuICAgIHRoaXMuI3NvdXJjZURhdGEgPSBvcHRpb25zLnNvdXJjZURhdGE7XG4gICAgdGhpcy4jZmlsdGVycyA9IG9wdGlvbnMuZmlsdGVycyB8fCBbXTtcbiAgfVxuXG4gIC8qKiBDbGVhciB0aGUgY2FjaGUgKHVzZWQgYWZ0ZXIgYSBjaGFuZ2UgaW4gd2F0Y2ggbW9kZSkgKi9cbiAgZGVsZXRlQ2FjaGUoKSB7XG4gICAgdGhpcy4jY2FjaGUuY2xlYXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGRhdGEgaW4gdGhlIHNjb3BlIG9mIGEgcGF0aCAoZmlsZSBvciBmb2xkZXIpXG4gICAqL1xuICBkYXRhPFQ+KHBhdGggPSBcIi9cIik6IFQgJiBQYXJ0aWFsPERhdGE+IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplUGF0aChwYXRoKTtcbiAgICBjb25zdCBkaXJEYXRhID0gdGhpcy4jc291cmNlRGF0YS5nZXQobm9ybWFsaXplZCk7XG5cbiAgICBpZiAoZGlyRGF0YSkge1xuICAgICAgcmV0dXJuIGRpckRhdGEgYXMgVCAmIFBhcnRpYWw8RGF0YT47XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy4jcGFnZXMuZmluZCgocGFnZSkgPT5cbiAgICAgIHBhZ2UuZGF0YS51cmwgPT09IG5vcm1hbGl6ZWQgfHwgcGFnZS5kYXRhLnNvdXJjZVBhdGggPT09IG5vcm1hbGl6ZWRcbiAgICApO1xuXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhIGFzIFQgJiBQYXJ0aWFsPERhdGE+O1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTZWFyY2ggcGFnZXMgKi9cbiAgcGFnZXM8VD4ocXVlcnk/OiBzdHJpbmcsIHNvcnQ/OiBzdHJpbmcsIGxpbWl0PzogbnVtYmVyKTogKERhdGEgJiBUKVtdIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLiNzZWFyY2hQYWdlczxUPihxdWVyeSwgc29ydCk7XG5cbiAgICBpZiAoIWxpbWl0KSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHJldHVybiAobGltaXQgPCAwKSA/IHJlc3VsdC5zbGljZShsaW1pdCkgOiByZXN1bHQuc2xpY2UoMCwgbGltaXQpO1xuICB9XG5cbiAgLyoqIFNlYXJjaCBhbmQgcmV0dXJuIHRoZSBmaXJzdCBwYWdlICovXG4gIHBhZ2U8VD4ocXVlcnk/OiBzdHJpbmcsIHNvcnQ/OiBzdHJpbmcpOiBEYXRhICYgVCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucGFnZXM8VD4ocXVlcnksIHNvcnQpWzBdO1xuICB9XG5cbiAgLyoqIFNlYXJjaCBmaWxlcyB1c2luZyBhIGdsb2IgKi9cbiAgZmlsZXMoZ2xvYk9yUmVnZXhwPzogUmVnRXhwIHwgc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZpbGVzID0gdGhpcy4jZmlsZXMubWFwKChmaWxlKSA9PiBmaWxlLm91dHB1dFBhdGgpO1xuICAgIGNvbnN0IHBhZ2VzID0gdGhpcy4jcGFnZXMubWFwKChwYWdlKSA9PiBwYWdlLm91dHB1dFBhdGgpO1xuICAgIGNvbnN0IGFsbEZpbGVzID0gWy4uLmZpbGVzLCAuLi5wYWdlc107XG5cbiAgICBpZiAoIWdsb2JPclJlZ2V4cCkge1xuICAgICAgcmV0dXJuIGFsbEZpbGVzO1xuICAgIH1cblxuICAgIGNvbnN0IHJlZ2V4cCA9IHR5cGVvZiBnbG9iT3JSZWdleHAgPT09IFwic3RyaW5nXCJcbiAgICAgID8gZ2xvYlRvUmVnRXhwKGdsb2JPclJlZ2V4cClcbiAgICAgIDogZ2xvYk9yUmVnZXhwO1xuXG4gICAgcmV0dXJuIGFsbEZpbGVzLmZpbHRlcigoZmlsZSkgPT4gcmVnZXhwLnRlc3QoZmlsZSkpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgYWxsIHZhbHVlcyBmcm9tIHRoZSBzYW1lIGtleSBvZiBhIHNlYXJjaCAqL1xuICB2YWx1ZXM8VCA9IHVua25vd24+KGtleTogc3RyaW5nLCBxdWVyeT86IHN0cmluZyk6IFRbXSB7XG4gICAgY29uc3QgdmFsdWVzID0gbmV3IFNldCgpO1xuXG4gICAgdGhpcy4jc2VhcmNoUGFnZXMocXVlcnkpLmZvckVhY2goKGRhdGEpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZGF0YVtrZXldO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUuZm9yRWFjaCgodikgPT4gdmFsdWVzLmFkZCh2KSk7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFsdWVzLmFkZCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gQXJyYXkuZnJvbSh2YWx1ZXMpIGFzIFRbXTtcbiAgfVxuXG4gIC8qKiBSZXR1cm4gdGhlIG5leHQgcGFnZSBvZiBhIHNlYXJjaCAqL1xuICBuZXh0UGFnZTxUID0gdW5rbm93bj4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgcXVlcnk/OiBzdHJpbmcsXG4gICAgc29ydD86IHN0cmluZyxcbiAgKTogRGF0YSAmIFQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHBhZ2VzID0gdGhpcy4jc2VhcmNoUGFnZXM8VD4ocXVlcnksIHNvcnQpO1xuICAgIGNvbnN0IGluZGV4ID0gcGFnZXMuZmluZEluZGV4KChkYXRhKSA9PiBkYXRhLnVybCA9PT0gdXJsKTtcblxuICAgIHJldHVybiAoaW5kZXggPT09IC0xKSA/IHVuZGVmaW5lZCA6IHBhZ2VzW2luZGV4ICsgMV07XG4gIH1cblxuICAvKiogUmV0dXJuIHRoZSBwcmV2aW91cyBwYWdlIG9mIGEgc2VhcmNoICovXG4gIHByZXZpb3VzUGFnZTxUID0gdW5rbm93bj4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgcXVlcnk/OiBzdHJpbmcsXG4gICAgc29ydD86IHN0cmluZyxcbiAgKTogRGF0YSAmIFQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHBhZ2VzID0gdGhpcy4jc2VhcmNoUGFnZXM8VD4ocXVlcnksIHNvcnQpO1xuICAgIGNvbnN0IGluZGV4ID0gcGFnZXMuZmluZEluZGV4KChkYXRhKSA9PiBkYXRhLnVybCA9PT0gdXJsKTtcblxuICAgIHJldHVybiAoaW5kZXggPD0gMCkgPyB1bmRlZmluZWQgOiBwYWdlc1tpbmRleCAtIDFdO1xuICB9XG5cbiAgI3NlYXJjaFBhZ2VzPFQgPSB1bmtub3duPihxdWVyeT86IHN0cmluZywgc29ydCA9IFwiZGF0ZVwiKTogKERhdGEgJiBUKVtdIHtcbiAgICBjb25zdCBpZCA9IEpTT04uc3RyaW5naWZ5KFtxdWVyeSwgc29ydF0pO1xuXG4gICAgaWYgKHRoaXMuI2NhY2hlLmhhcyhpZCkpIHtcbiAgICAgIHJldHVybiBbLi4udGhpcy4jY2FjaGUuZ2V0KGlkKSFdIGFzIChEYXRhICYgVClbXTtcbiAgICB9XG5cbiAgICBjb25zdCBjb21waWxlZEZpbHRlciA9IGJ1aWxkRmlsdGVyKHF1ZXJ5KTtcbiAgICBjb25zdCBmaWx0ZXJzID0gY29tcGlsZWRGaWx0ZXJcbiAgICAgID8gdGhpcy4jZmlsdGVycy5jb25jYXQoW2NvbXBpbGVkRmlsdGVyXSlcbiAgICAgIDogdGhpcy4jZmlsdGVycztcbiAgICBjb25zdCByZXN1bHQgPSBmaWx0ZXJzLnJlZHVjZShcbiAgICAgIChwYWdlcywgZmlsdGVyKSA9PiBwYWdlcy5maWx0ZXIoZmlsdGVyKSxcbiAgICAgIHRoaXMuI3BhZ2VzLm1hcCgocGFnZSkgPT4gcGFnZS5kYXRhKSxcbiAgICApO1xuXG4gICAgcmVzdWx0LnNvcnQoYnVpbGRTb3J0KHNvcnQpKTtcbiAgICB0aGlzLiNjYWNoZS5zZXQoaWQsIHJlc3VsdCk7XG4gICAgcmV0dXJuIFsuLi5yZXN1bHRdIGFzIChEYXRhICYgVClbXTtcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlIGEgcXVlcnkgc3RyaW5nIGFuZCByZXR1cm4gYSBmdW5jdGlvbiB0byBmaWx0ZXIgYSBzZWFyY2ggcmVzdWx0XG4gKlxuICogZXhhbXBsZTogXCJ0aXRsZT1mb28gbGV2ZWw8M1wiXG4gKiByZXR1cm5zOiAocGFnZSkgPT4gcGFnZS5kYXRhLnRpdGxlID09PSBcImZvb1wiICYmIHBhZ2UuZGF0YS5sZXZlbCA8IDNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRmlsdGVyKHF1ZXJ5ID0gXCJcIik6IEZpbHRlciB8IHVuZGVmaW5lZCB7XG4gIC8vICg/Oihub3QpPyhmaWVsZE5hbWUpKG9wZXJhdG9yKSk/KHZhbHVlfFwidmFsdWVcInwndmFsdWUnKVxuICBjb25zdCBtYXRjaGVzID0gcXVlcnlcbiAgICA/IHF1ZXJ5Lm1hdGNoQWxsKFxuICAgICAgLyg/OighKT8oW1xcdy4tXSspKFshXiQqXT89fFs8Pl09PykpPyhbXidcIlxcc11bXlxccz08Pl0qfFwiW15cIl0rXCJ8J1teJ10rJykvZyxcbiAgICApXG4gICAgOiBbXTtcblxuICBjb25zdCBjb25kaXRpb25zOiBDb25kaXRpb25bXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgbWF0Y2ggb2YgbWF0Y2hlcykge1xuICAgIGxldCBbLCBub3QsIGtleSwgb3BlcmF0b3IsIHZhbHVlXSA9IG1hdGNoO1xuXG4gICAgaWYgKCFrZXkpIHtcbiAgICAgIGtleSA9IFwidGFnc1wiO1xuICAgICAgb3BlcmF0b3IgPSBcIio9XCI7XG5cbiAgICAgIGlmICh2YWx1ZT8uc3RhcnRzV2l0aChcIiFcIikpIHtcbiAgICAgICAgbm90ID0gbm90ID8gXCJcIiA6IFwiIVwiO1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChub3QpIHtcbiAgICAgIG9wZXJhdG9yID0gXCIhXCIgKyBvcGVyYXRvcjtcbiAgICB9XG5cbiAgICBjb25kaXRpb25zLnB1c2goW2tleSwgb3BlcmF0b3IsIGNvbXBpbGVWYWx1ZSh2YWx1ZSldKTtcbiAgfVxuXG4gIGlmIChjb25kaXRpb25zLmxlbmd0aCkge1xuICAgIHJldHVybiBjb21waWxlRmlsdGVyKGNvbmRpdGlvbnMpO1xuICB9XG59XG5cbi8qKlxuICogQ29udmVydCBhIHBhcnNlZCBxdWVyeSB0byBhIGZ1bmN0aW9uXG4gKlxuICogZXhhbXBsZTogW1tcInRpdGxlXCIsIFwiPVwiLCBcImZvb1wiXSwgW1wibGV2ZWxcIiwgXCI8XCIsIDNdXVxuICogcmV0dXJuczogKGRhdGEpID0+IGRhdGEudGl0bGUgPT09IFwiZm9vXCIgJiYgZGF0YS5sZXZlbCA8IDNcbiAqL1xuZnVuY3Rpb24gY29tcGlsZUZpbHRlcihjb25kaXRpb25zOiBDb25kaXRpb25bXSkge1xuICBjb25zdCBmaWx0ZXJzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBhcmdzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCB2YWx1ZXM6IHVua25vd25bXSA9IFtdO1xuXG4gIGNvbmRpdGlvbnMuZm9yRWFjaCgoY29uZGl0aW9uLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IFtrZXksIG9wZXJhdG9yLCB2YWx1ZV0gPSBjb25kaXRpb247XG4gICAgY29uc3QgdmFyTmFtZSA9IGB2YWx1ZSR7aW5kZXh9YDtcblxuICAgIGZpbHRlcnMucHVzaChjb21waWxlQ29uZGl0aW9uKGtleSwgb3BlcmF0b3IsIHZhck5hbWUsIHZhbHVlKSk7XG4gICAgYXJncy5wdXNoKHZhck5hbWUpO1xuICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgfSk7XG5cbiAgYXJncy5wdXNoKGByZXR1cm4gKGRhdGEpID0+ICR7ZmlsdGVycy5qb2luKFwiICYmIFwiKX07YCk7XG5cbiAgY29uc3QgZmFjdG9yeSA9IG5ldyBGdW5jdGlvbiguLi5hcmdzKTtcblxuICByZXR1cm4gZmFjdG9yeSguLi52YWx1ZXMpO1xufVxuXG4vKipcbiAqIENvbnZlcnQgYSBwYXJzZWQgY29uZGl0aW9uIHRvIGEgZnVuY3Rpb25cbiAqXG4gKiBleGFtcGxlOiBrZXkgPSBcImRhdGEudGl0bGVcIiwgb3BlcmF0b3IgPSBcIj1cIiBuYW1lID0gXCJ2YWx1ZTBcIiB2YWx1ZSA9IFwiZm9vXCJcbiAqIHJldHVybnM6IGRhdGEudGl0bGUgPT09IHZhbHVlMFxuICovXG5mdW5jdGlvbiBjb21waWxlQ29uZGl0aW9uKFxuICBrZXk6IHN0cmluZyxcbiAgb3BlcmF0b3I6IHN0cmluZyxcbiAgbmFtZTogc3RyaW5nLFxuICB2YWx1ZTogdW5rbm93bixcbikge1xuICBrZXkgPSBrZXkucmVwbGFjZUFsbChcIi5cIiwgXCI/LlwiKTtcblxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgc3dpdGNoIChvcGVyYXRvcikge1xuICAgICAgY2FzZSBcIj1cIjpcbiAgICAgICAgcmV0dXJuIGBkYXRhLiR7a2V5fT8uZ2V0VGltZSgpID09PSAke25hbWV9LmdldFRpbWUoKWA7XG5cbiAgICAgIGNhc2UgXCIhPVwiOlxuICAgICAgICByZXR1cm4gYGRhdGEuJHtrZXl9Py5nZXRUaW1lKCkgIT09ICR7bmFtZX0uZ2V0VGltZSgpYDtcblxuICAgICAgY2FzZSBcIjxcIjpcbiAgICAgIGNhc2UgXCI8PVwiOlxuICAgICAgY2FzZSBcIj5cIjpcbiAgICAgIGNhc2UgXCI+PVwiOlxuICAgICAgICByZXR1cm4gYGRhdGEuJHtrZXl9Py5nZXRUaW1lKCkgJHtvcGVyYXRvcn0gJHtuYW1lfS5nZXRUaW1lKClgO1xuXG4gICAgICBjYXNlIFwiITxcIjpcbiAgICAgIGNhc2UgXCIhPD1cIjpcbiAgICAgIGNhc2UgXCIhPlwiOlxuICAgICAgY2FzZSBcIiE+PVwiOlxuICAgICAgICByZXR1cm4gYCEoZGF0YS4ke2tleX0/LmdldFRpbWUoKSAke1xuICAgICAgICAgIG9wZXJhdG9yLnN1YnN0cmluZygxKVxuICAgICAgICB9ICR7bmFtZX0uZ2V0VGltZSgpKWA7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgT3BlcmF0b3IgJHtvcGVyYXRvcn0gbm90IHZhbGlkIGZvciBEYXRlIHZhbHVlc2ApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHN3aXRjaCAob3BlcmF0b3IpIHtcbiAgICAgIGNhc2UgXCI9XCI6XG4gICAgICAgIHJldHVybiBgJHtuYW1lfS5zb21lKChpKSA9PiBkYXRhLiR7a2V5fSA9PT0gaSlgO1xuXG4gICAgICBjYXNlIFwiIT1cIjpcbiAgICAgICAgcmV0dXJuIGAke25hbWV9LnNvbWUoKGkpID0+IGRhdGEuJHtrZXl9ICE9PSBpKWA7XG5cbiAgICAgIGNhc2UgXCJePVwiOlxuICAgICAgICByZXR1cm4gYCR7bmFtZX0uc29tZSgoaSkgPT4gZGF0YS4ke2tleX0/LnN0YXJ0c1dpdGgoaSkpYDtcblxuICAgICAgY2FzZSBcIiFePVwiOlxuICAgICAgICByZXR1cm4gYCEke25hbWV9LnNvbWUoKGkpID0+IGRhdGEuJHtrZXl9Py5zdGFydHNXaXRoKGkpKWA7XG5cbiAgICAgIGNhc2UgXCIkPVwiOlxuICAgICAgICByZXR1cm4gYCR7bmFtZX0uc29tZSgoaSkgPT4gZGF0YS4ke2tleX0/LmVuZHNXaXRoKGkpKWA7XG5cbiAgICAgIGNhc2UgXCIhJD1cIjpcbiAgICAgICAgcmV0dXJuIGAhJHtuYW1lfS5zb21lKChpKSA9PiBkYXRhLiR7a2V5fT8uZW5kc1dpdGgoaSkpYDtcblxuICAgICAgY2FzZSBcIio9XCI6XG4gICAgICAgIHJldHVybiBgJHtuYW1lfS5zb21lKChpKSA9PiBkYXRhLiR7a2V5fT8uaW5jbHVkZXMoaSkpYDtcblxuICAgICAgY2FzZSBcIiEqPVwiOlxuICAgICAgICByZXR1cm4gYCR7bmFtZX0uc29tZSgoaSkgPT4gZGF0YS4ke2tleX0/LmluY2x1ZGVzKGkpKWA7XG5cbiAgICAgIGNhc2UgXCIhPFwiOlxuICAgICAgY2FzZSBcIiE8PVwiOlxuICAgICAgY2FzZSBcIiE+XCI6XG4gICAgICBjYXNlIFwiIT49XCI6XG4gICAgICAgIHJldHVybiBgISR7bmFtZX0uc29tZSgoaSkgPT4gZGF0YS4ke2tleX0gJHtvcGVyYXRvci5zdWJzdHJpbmcoMSl9IGkpYDtcblxuICAgICAgZGVmYXVsdDogLy8gPCA8PSA+ID49XG4gICAgICAgIHJldHVybiBgJHtuYW1lfS5zb21lKChpKSA9PiBkYXRhLiR7a2V5fSAke29wZXJhdG9yfSBpKWA7XG4gICAgfVxuICB9XG5cbiAgc3dpdGNoIChvcGVyYXRvcikge1xuICAgIGNhc2UgXCI9XCI6XG4gICAgICByZXR1cm4gYGRhdGEuJHtrZXl9ID09PSAke25hbWV9YDtcblxuICAgIGNhc2UgXCIhPVwiOlxuICAgICAgcmV0dXJuIGBkYXRhLiR7a2V5fSAhPT0gJHtuYW1lfWA7XG5cbiAgICBjYXNlIFwiXj1cIjpcbiAgICAgIHJldHVybiBgZGF0YS4ke2tleX0/LnN0YXJ0c1dpdGgoJHtuYW1lfSlgO1xuXG4gICAgY2FzZSBcIiFePVwiOlxuICAgICAgcmV0dXJuIGAhZGF0YS4ke2tleX0/LnN0YXJ0c1dpdGgoJHtuYW1lfSlgO1xuXG4gICAgY2FzZSBcIiQ9XCI6XG4gICAgICByZXR1cm4gYGRhdGEuJHtrZXl9Py5lbmRzV2l0aCgke25hbWV9KWA7XG5cbiAgICBjYXNlIFwiISQ9XCI6XG4gICAgICByZXR1cm4gYCFkYXRhLiR7a2V5fT8uZW5kc1dpdGgoJHtuYW1lfSlgO1xuXG4gICAgY2FzZSBcIio9XCI6XG4gICAgICByZXR1cm4gYGRhdGEuJHtrZXl9Py5pbmNsdWRlcygke25hbWV9KWA7XG5cbiAgICBjYXNlIFwiISo9XCI6XG4gICAgICByZXR1cm4gYCFkYXRhLiR7a2V5fT8uaW5jbHVkZXMoJHtuYW1lfSlgO1xuXG4gICAgY2FzZSBcIiE8XCI6XG4gICAgY2FzZSBcIiE8PVwiOlxuICAgIGNhc2UgXCIhPlwiOlxuICAgIGNhc2UgXCIhPj1cIjpcbiAgICAgIHJldHVybiBgIShkYXRhLiR7a2V5fSAke29wZXJhdG9yLnN1YnN0cmluZygxKX0gJHtuYW1lfSlgO1xuXG4gICAgZGVmYXVsdDogLy8gPCA8PSA+ID49XG4gICAgICByZXR1cm4gYGRhdGEuJHtrZXl9ICR7b3BlcmF0b3J9ICR7bmFtZX1gO1xuICB9XG59XG5cbi8qKlxuICogQ29tcGlsZSBhIHZhbHVlIGFuZCByZXR1cm4gdGhlIHByb3BlciB0eXBlXG4gKlxuICogZXhhbXBsZTogXCJ0cnVlXCIgPT4gdHJ1ZVxuICogZXhhbXBsZTogXCJmb29cIiA9PiBcImZvb1wiXG4gKiBleGFtcGxlOiBcIjIwMjEtMDYtMTJcIiA9PiBuZXcgRGF0ZSgyMDIxLCAwNSwgMTIpXG4gKi9cbmZ1bmN0aW9uIGNvbXBpbGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdW5rbm93biB7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICAvLyBSZW1vdmUgcXVvdGVzXG4gIGNvbnN0IHF1b3RlZCA9ICEhdmFsdWUubWF0Y2goL14oJ3xcIikoLiopXFwxJC8pO1xuXG4gIGlmIChxdW90ZWQpIHtcbiAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDEsIC0xKTtcbiAgfVxuXG4gIGlmICh2YWx1ZS5pbmNsdWRlcyhcInxcIikpIHtcbiAgICByZXR1cm4gdmFsdWUuc3BsaXQoXCJ8XCIpLm1hcCgodmFsKSA9PiBjb21waWxlVmFsdWUodmFsKSk7XG4gIH1cblxuICBpZiAocXVvdGVkKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgaWYgKHZhbHVlLnRvTG93ZXJDYXNlKCkgPT09IFwidHJ1ZVwiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHZhbHVlLnRvTG93ZXJDYXNlKCkgPT09IFwiZmFsc2VcIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKHZhbHVlLnRvTG93ZXJDYXNlKCkgPT09IFwibnVsbFwiKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHZhbHVlLm1hdGNoKC9eXFxkKyQvKSkge1xuICAgIHJldHVybiBOdW1iZXIodmFsdWUpO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgJiYgaXNGaW5pdGUodmFsdWUpKSB7XG4gICAgcmV0dXJuIE51bWJlcih2YWx1ZSk7XG4gIH1cbiAgLy8gRGF0ZSBvciBkYXRldGltZSB2YWx1ZXM6XG4gIC8vIHl5eXktbW1cbiAgLy8geXl5eS1tbS1kZFxuICAvLyB5eXl5LW1tLWRkVGhoXG4gIC8vIHl5eXktbW0tZGRUaGg6aWlcbiAgLy8geXl5eS1tbS1kZFRoaDppaTpzc1xuICBjb25zdCBtYXRjaCA9IHZhbHVlLm1hdGNoKFxuICAgIC9eKFxcZHs0fSktKFxcZFxcZCkoPzotKFxcZFxcZCkpPyg/OlQoXFxkXFxkKSg/OjooXFxkXFxkKSk/KD86OihcXGRcXGQpKT8pPyQvaSxcbiAgKTtcblxuICBpZiAobWF0Y2gpIHtcbiAgICBjb25zdCBbLCB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZF0gPSBtYXRjaDtcblxuICAgIHJldHVybiBuZXcgRGF0ZShcbiAgICAgIHBhcnNlSW50KHllYXIpLFxuICAgICAgcGFyc2VJbnQobW9udGgpIC0gMSxcbiAgICAgIGRheSA/IHBhcnNlSW50KGRheSkgOiAxLFxuICAgICAgaG91ciA/IHBhcnNlSW50KGhvdXIpIDogMCxcbiAgICAgIG1pbnV0ZSA/IHBhcnNlSW50KG1pbnV0ZSkgOiAwLFxuICAgICAgc2Vjb25kID8gcGFyc2VJbnQoc2Vjb25kKSA6IDAsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgcXVlcnkgdG8gc29ydCB0byBhIGZ1bmN0aW9uXG4gKlxuICogZXhhbXBsZTogXCJ0aXRsZT1kZXNjXCJcbiAqIHJldHVybnM6IChhLCBiKSA9PiBhLnRpdGxlID4gYi50aXRsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTb3J0KHNvcnQ6IHN0cmluZyk6IChhOiBEYXRhLCBiOiBEYXRhKSA9PiBudW1iZXIge1xuICBsZXQgZm4gPSBcIjBcIjtcbiAgbGV0IGluaXQgPSBcIlwiO1xuXG4gIGNvbnN0IHBpZWNlcyA9IHNvcnQuc3BsaXQoL1xccysvKS5maWx0ZXIoKGFyZykgPT4gYXJnKTtcblxuICBwaWVjZXMucmV2ZXJzZSgpLmZvckVhY2goKGFyZykgPT4ge1xuICAgIGNvbnN0IG1hdGNoID0gYXJnLm1hdGNoKC8oW1xcdy4tXSspKD86PShhc2MtbG9jYWxlfGRlc2MtbG9jYWxlfGFzY3xkZXNjKSk/Lyk7XG5cbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IFssIGtleSwgZGlyZWN0aW9uXSA9IG1hdGNoO1xuICAgIGtleSA9IGtleS5yZXBsYWNlQWxsKFwiLlwiLCBcIj8uXCIpO1xuICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICBjYXNlIFwiYXNjLWxvY2FsZVwiOlxuICAgICAgICBpbml0ID0gXCJjb25zdCBjb2xsYXRvciA9IG5ldyBJbnRsLkNvbGxhdG9yKCk7XCI7XG4gICAgICAgIGZuID1cbiAgICAgICAgICBgKGEuJHtrZXl9ID09IGIuJHtrZXl9ID8gJHtmbn0gOiBjb2xsYXRvci5jb21wYXJlKGEuJHtrZXl9IHx8IFwiXCIsIGIuJHtrZXl9IHx8IFwiXCIpKWA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImRlc2MtbG9jYWxlXCI6XG4gICAgICAgIGluaXQgPSBcImNvbnN0IGNvbGxhdG9yID0gbmV3IEludGwuQ29sbGF0b3IoKTtcIjtcbiAgICAgICAgZm4gPVxuICAgICAgICAgIGAoYS4ke2tleX0gPT0gYi4ke2tleX0gPyAke2ZufSA6IGNvbGxhdG9yLmNvbXBhcmUoYi4ke2tleX0gfHwgXCJcIiwgYS4ke2tleX0gfHwgXCJcIikpYDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiZGVzY1wiOlxuICAgICAgICBmbiA9XG4gICAgICAgICAgYChhLiR7a2V5fSA9PSBiLiR7a2V5fSA/ICR7Zm59IDogKGEuJHtrZXl9ID8/IFwiXCIpIDwgKGIuJHtrZXl9ID8/IFwiXCIpID8gMSA6IC0xKWA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgZm4gPVxuICAgICAgICAgIGAoYS4ke2tleX0gPT0gYi4ke2tleX0gPyAke2ZufSA6IChhLiR7a2V5fSA/PyBcIlwiKSA+IChiLiR7a2V5fSA/PyBcIlwiKSA/IDEgOiAtMSlgO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBuZXcgRnVuY3Rpb24oYCR7aW5pdH0gcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiAke2ZufTsgfWApKCkgYXMgKFxuICAgIGE6IERhdGEsXG4gICAgYjogRGF0YSxcbiAgKSA9PiBudW1iZXI7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxZQUFZLFFBQVEsa0JBQWtCO0FBQy9DLFNBQVMsYUFBYSxRQUFRLGtCQUFrQjtBQXFCaEQsa0JBQWtCLEdBQ2xCLGVBQWUsTUFBTTtFQUNuQixDQUFBLEtBQU0sQ0FBUztFQUNmLENBQUEsS0FBTSxDQUFlO0VBQ3JCLENBQUEsVUFBVyxDQUE2QjtFQUN4QyxDQUFBLEtBQU0sR0FBRyxJQUFJLE1BQXNCO0VBQ25DLENBQUEsT0FBUSxDQUFXO0VBRW5CLFlBQVksT0FBZ0IsQ0FBRTtJQUM1QixJQUFJLENBQUMsQ0FBQSxLQUFNLEdBQUcsUUFBUSxLQUFLO0lBQzNCLElBQUksQ0FBQyxDQUFBLEtBQU0sR0FBRyxRQUFRLEtBQUs7SUFDM0IsSUFBSSxDQUFDLENBQUEsVUFBVyxHQUFHLFFBQVEsVUFBVTtJQUNyQyxJQUFJLENBQUMsQ0FBQSxPQUFRLEdBQUcsUUFBUSxPQUFPLElBQUksRUFBRTtFQUN2QztFQUVBLHdEQUF3RCxHQUN4RCxjQUFjO0lBQ1osSUFBSSxDQUFDLENBQUEsS0FBTSxDQUFDLEtBQUs7RUFDbkI7RUFFQTs7R0FFQyxHQUNELEtBQVEsT0FBTyxHQUFHLEVBQWlDO0lBQ2pELE1BQU0sYUFBYSxjQUFjO0lBQ2pDLE1BQU0sVUFBVSxJQUFJLENBQUMsQ0FBQSxVQUFXLENBQUMsR0FBRyxDQUFDO0lBRXJDLElBQUksU0FBUztNQUNYLE9BQU87SUFDVDtJQUVBLE1BQU0sU0FB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 +// denoCacheMetadata=2849395956312001327,8610230619214910862
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/bce94b4ca143a85aa1b121c00bc9a977cf51daf2f3b81b49a377d98ea6533d47.js b/vendor/gen/https/deno.land/bce94b4ca143a85aa1b121c00bc9a977cf51daf2f3b81b49a377d98ea6533d47.js new file mode 100644 index 0000000..8afe015 --- /dev/null +++ b/vendor/gen/https/deno.land/bce94b4ca143a85aa1b121c00bc9a977cf51daf2f3b81b49a377d98ea6533d47.js @@ -0,0 +1,7 @@ +// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +/** + * A parsed path object generated by path.parse() or consumed by path.format(). + */ +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE3MC4wL3BhdGgvX2ludGVyZmFjZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDIyIHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vKipcbiAqIEEgcGFyc2VkIHBhdGggb2JqZWN0IGdlbmVyYXRlZCBieSBwYXRoLnBhcnNlKCkgb3IgY29uc3VtZWQgYnkgcGF0aC5mb3JtYXQoKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRQYXRoIHtcbiAgLyoqXG4gICAqIFRoZSByb290IG9mIHRoZSBwYXRoIHN1Y2ggYXMgJy8nIG9yICdjOlxcJ1xuICAgKi9cbiAgcm9vdDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGZ1bGwgZGlyZWN0b3J5IHBhdGggc3VjaCBhcyAnL2hvbWUvdXNlci9kaXInIG9yICdjOlxccGF0aFxcZGlyJ1xuICAgKi9cbiAgZGlyOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZmlsZSBuYW1lIGluY2x1ZGluZyBleHRlbnNpb24gKGlmIGFueSkgc3VjaCBhcyAnaW5kZXguaHRtbCdcbiAgICovXG4gIGJhc2U6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBmaWxlIGV4dGVuc2lvbiAoaWYgYW55KSBzdWNoIGFzICcuaHRtbCdcbiAgICovXG4gIGV4dDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGZpbGUgbmFtZSB3aXRob3V0IGV4dGVuc2lvbiAoaWYgYW55KSBzdWNoIGFzICdpbmRleCdcbiAgICovXG4gIG5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgRm9ybWF0SW5wdXRQYXRoT2JqZWN0ID0gUGFydGlhbDxQYXJzZWRQYXRoPjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBRXJDOztDQUVDLEdBQ0QifQ== +// denoCacheMetadata=13915160760061102832,10989933561520906721
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/c29991ec35bcd4a12128c087485dbc7c75721547d27bfda98c9d4b939e1db61d.js b/vendor/gen/https/deno.land/c29991ec35bcd4a12128c087485dbc7c75721547d27bfda98c9d4b939e1db61d.js new file mode 100644 index 0000000..415f273 --- /dev/null +++ b/vendor/gen/https/deno.land/c29991ec35bcd4a12128c087485dbc7c75721547d27bfda98c9d4b939e1db61d.js @@ -0,0 +1,365 @@ +import { getDefaultValue, getOption, matchWildCardOptions, paramCaseToCamelCase } from "./_utils.ts"; +import { DuplicateOptionError, InvalidOptionError, InvalidOptionValueError, MissingOptionValueError, UnexpectedArgumentAfterVariadicArgumentError, UnexpectedOptionValueError, UnexpectedRequiredArgumentError, UnknownConflictingOptionError, UnknownOptionError, UnknownRequiredOptionError, UnknownTypeError } from "./_errors.ts"; +import { OptionType } from "./deprecated.ts"; +import { boolean } from "./types/boolean.ts"; +import { number } from "./types/number.ts"; +import { string } from "./types/string.ts"; +import { validateFlags } from "./_validate_flags.ts"; +import { integer } from "./types/integer.ts"; +const DefaultTypes = { + string, + number, + integer, + boolean +}; +/** + * Parse command line arguments. + * @param argsOrCtx Command line arguments e.g: `Deno.args` or parse context. + * @param opts Parse options. + * + * ``` + * // examples/flags/flags.ts -x 3 -y.z -n5 -abc --beep=boop foo bar baz --deno.land --deno.com -- --cliffy + * parseFlags(Deno.args); + * ``` + * + * Output: + * + * ``` + * { + * flags: { + * x: "3", + * y: { z: true }, + * n: "5", + * a: true, + * b: true, + * c: true, + * beep: "boop", + * deno: { land: true, com: true } + * }, + * literal: [ "--cliffy" ], + * unknown: [ "foo", "bar", "baz" ], + * stopEarly: false, + * stopOnUnknown: false + * } + * ``` + */ export function parseFlags(argsOrCtx, opts = {}) { + let args; + let ctx; + if (Array.isArray(argsOrCtx)) { + ctx = {}; + args = argsOrCtx; + } else { + ctx = argsOrCtx; + args = argsOrCtx.unknown; + argsOrCtx.unknown = []; + } + args = args.slice(); + ctx.flags ??= {}; + ctx.literal ??= []; + ctx.unknown ??= []; + ctx.stopEarly = false; + ctx.stopOnUnknown = false; + opts.dotted ??= true; + validateOptions(opts); + const options = parseArgs(ctx, args, opts); + validateFlags(ctx, opts, options); + if (opts.dotted) { + parseDottedOptions(ctx); + } + return ctx; +} +function validateOptions(opts) { + opts.flags?.forEach((opt)=>{ + opt.depends?.forEach((flag)=>{ + if (!opts.flags || !getOption(opts.flags, flag)) { + throw new UnknownRequiredOptionError(flag, opts.flags ?? []); + } + }); + opt.conflicts?.forEach((flag)=>{ + if (!opts.flags || !getOption(opts.flags, flag)) { + throw new UnknownConflictingOptionError(flag, opts.flags ?? []); + } + }); + }); +} +function parseArgs(ctx, args, opts) { + /** Option name mapping: propertyName -> option.name */ const optionsMap = new Map(); + let inLiteral = false; + for(let argsIndex = 0; argsIndex < args.length; argsIndex++){ + let option; + let current = args[argsIndex]; + let currentValue; + let negate = false; + // literal args after -- + if (inLiteral) { + ctx.literal.push(current); + continue; + } else if (current === "--") { + inLiteral = true; + continue; + } else if (ctx.stopEarly || ctx.stopOnUnknown) { + ctx.unknown.push(current); + continue; + } + const isFlag = current.length > 1 && current[0] === "-"; + if (!isFlag) { + if (opts.stopEarly) { + ctx.stopEarly = true; + } + ctx.unknown.push(current); + continue; + } + const isShort = current[1] !== "-"; + const isLong = isShort ? false : current.length > 3 && current[2] !== "-"; + if (!isShort && !isLong) { + throw new InvalidOptionError(current, opts.flags ?? []); + } + // normalize short flags: -abc => -a -b -c + if (isShort && current.length > 2 && current[2] !== ".") { + args.splice(argsIndex, 1, ...splitFlags(current)); + current = args[argsIndex]; + } else if (isLong && current.startsWith("--no-")) { + negate = true; + } + // split value: --foo="bar=baz" => --foo bar=baz + const equalSignIndex = current.indexOf("="); + if (equalSignIndex !== -1) { + currentValue = current.slice(equalSignIndex + 1) || undefined; + current = current.slice(0, equalSignIndex); + } + if (opts.flags) { + option = getOption(opts.flags, current); + if (!option) { + const name = current.replace(/^-+/, ""); + option = matchWildCardOptions(name, opts.flags); + if (!option) { + if (opts.stopOnUnknown) { + ctx.stopOnUnknown = true; + ctx.unknown.push(args[argsIndex]); + continue; + } + throw new UnknownOptionError(current, opts.flags); + } + } + } else { + option = { + name: current.replace(/^-+/, ""), + optionalValue: true, + type: OptionType.STRING + }; + } + if (option.standalone) { + ctx.standalone = option; + } + const positiveName = negate ? option.name.replace(/^no-?/, "") : option.name; + const propName = paramCaseToCamelCase(positiveName); + if (typeof ctx.flags[propName] !== "undefined") { + if (!opts.flags?.length) { + option.collect = true; + } else if (!option.collect) { + throw new DuplicateOptionError(current); + } + } + if (option.type && !option.args?.length) { + option.args = [ + { + type: option.type, + requiredValue: option.requiredValue, + optionalValue: option.optionalValue, + variadic: option.variadic, + list: option.list, + separator: option.separator + } + ]; + } + if (opts.flags?.length && !option.args?.length && typeof currentValue !== "undefined") { + throw new UnexpectedOptionValueError(option.name, currentValue); + } + let optionArgsIndex = 0; + let inOptionalArg = false; + const next = ()=>currentValue ?? args[argsIndex + 1]; + const previous = ctx.flags[propName]; + parseNext(option); + if (typeof ctx.flags[propName] === "undefined") { + if (option.args?.[optionArgsIndex]?.requiredValue) { + throw new MissingOptionValueError(option.name); + } else if (typeof option.default !== "undefined") { + ctx.flags[propName] = getDefaultValue(option); + } else { + ctx.flags[propName] = true; + } + } + if (option.value) { + ctx.flags[propName] = option.value(ctx.flags[propName], previous); + } else if (option.collect) { + const value = typeof previous !== "undefined" ? Array.isArray(previous) ? previous : [ + previous + ] : []; + value.push(ctx.flags[propName]); + ctx.flags[propName] = value; + } + optionsMap.set(propName, option); + opts.option?.(option, ctx.flags[propName]); + /** Parse next argument for current option. */ // deno-lint-ignore no-inner-declarations + function parseNext(option) { + if (negate) { + ctx.flags[propName] = false; + return; + } else if (!option.args?.length) { + ctx.flags[propName] = undefined; + return; + } + const arg = option.args[optionArgsIndex]; + if (!arg) { + const flag = next(); + throw new UnknownOptionError(flag, opts.flags ?? []); + } + if (!arg.type) { + arg.type = OptionType.BOOLEAN; + } + if (option.args?.length && !option.type) { + // make all values required by default + if ((typeof arg.optionalValue === "undefined" || arg.optionalValue === false) && typeof arg.requiredValue === "undefined") { + arg.requiredValue = true; + } + } else { + // make non boolean value required by default + if (arg.type !== OptionType.BOOLEAN && (typeof arg.optionalValue === "undefined" || arg.optionalValue === false) && typeof arg.requiredValue === "undefined") { + arg.requiredValue = true; + } + } + if (!arg.requiredValue) { + inOptionalArg = true; + } else if (inOptionalArg) { + throw new UnexpectedRequiredArgumentError(option.name); + } + let result; + let increase = false; + if (arg.list && hasNext(arg)) { + const parsed = next().split(arg.separator || ",").map((nextValue)=>{ + const value = parseValue(option, arg, nextValue); + if (typeof value === "undefined") { + throw new InvalidOptionValueError(option.name, arg.type ?? "?", nextValue); + } + return value; + }); + if (parsed?.length) { + result = parsed; + } + } else { + if (hasNext(arg)) { + result = parseValue(option, arg, next()); + } else if (arg.optionalValue && arg.type === OptionType.BOOLEAN) { + result = true; + } + } + if (increase && typeof currentValue === "undefined") { + argsIndex++; + if (!arg.variadic) { + optionArgsIndex++; + } else if (option.args[optionArgsIndex + 1]) { + throw new UnexpectedArgumentAfterVariadicArgumentError(next()); + } + } + if (typeof result !== "undefined" && (option.args.length > 1 || arg.variadic)) { + if (!ctx.flags[propName]) { + ctx.flags[propName] = []; + } + ctx.flags[propName].push(result); + if (hasNext(arg)) { + parseNext(option); + } + } else { + ctx.flags[propName] = result; + } + /** Check if current option should have an argument. */ function hasNext(arg) { + if (!option.args?.length) { + return false; + } + const nextValue = currentValue ?? args[argsIndex + 1]; + if (!nextValue) { + return false; + } + if (option.args.length > 1 && optionArgsIndex >= option.args.length) { + return false; + } + if (arg.requiredValue) { + return true; + } + // require optional values to be called with an equal sign: foo=bar + if (option.equalsSign && arg.optionalValue && !arg.variadic && typeof currentValue === "undefined") { + return false; + } + if (arg.optionalValue || arg.variadic) { + return nextValue[0] !== "-" || typeof currentValue !== "undefined" || arg.type === OptionType.NUMBER && !isNaN(Number(nextValue)); + } + return false; + } + /** Parse argument value. */ function parseValue(option, arg, value) { + const result = opts.parse ? opts.parse({ + label: "Option", + type: arg.type || OptionType.STRING, + name: `--${option.name}`, + value + }) : parseDefaultType(option, arg, value); + if (typeof result !== "undefined") { + increase = true; + } + return result; + } + } + } + return optionsMap; +} +function parseDottedOptions(ctx) { + // convert dotted option keys into nested objects + ctx.flags = Object.keys(ctx.flags).reduce((result, key)=>{ + if (~key.indexOf(".")) { + key.split(".").reduce((// deno-lint-ignore no-explicit-any + result, subKey, index, parts)=>{ + if (index === parts.length - 1) { + result[subKey] = ctx.flags[key]; + } else { + result[subKey] = result[subKey] ?? {}; + } + return result[subKey]; + }, result); + } else { + result[key] = ctx.flags[key]; + } + return result; + }, {}); +} +function splitFlags(flag) { + flag = flag.slice(1); + const normalized = []; + const index = flag.indexOf("="); + const flags = (index !== -1 ? flag.slice(0, index) : flag).split(""); + if (isNaN(Number(flag[flag.length - 1]))) { + flags.forEach((val)=>normalized.push(`-${val}`)); + } else { + normalized.push(`-${flags.shift()}`); + if (flags.length) { + normalized.push(flags.join("")); + } + } + if (index !== -1) { + normalized[normalized.length - 1] += flag.slice(index); + } + return normalized; +} +function parseDefaultType(option, arg, value) { + const type = arg.type || OptionType.STRING; + const parseType = DefaultTypes[type]; + if (!parseType) { + throw new UnknownTypeError(type, Object.keys(DefaultTypes)); + } + return parseType({ + label: "Option", + type, + name: `--${option.name}`, + value + }); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvZmxhZ3MvZmxhZ3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZ2V0RGVmYXVsdFZhbHVlLFxuICBnZXRPcHRpb24sXG4gIG1hdGNoV2lsZENhcmRPcHRpb25zLFxuICBwYXJhbUNhc2VUb0NhbWVsQ2FzZSxcbn0gZnJvbSBcIi4vX3V0aWxzLnRzXCI7XG5pbXBvcnQge1xuICBEdXBsaWNhdGVPcHRpb25FcnJvcixcbiAgSW52YWxpZE9wdGlvbkVycm9yLFxuICBJbnZhbGlkT3B0aW9uVmFsdWVFcnJvcixcbiAgTWlzc2luZ09wdGlvblZhbHVlRXJyb3IsXG4gIFVuZXhwZWN0ZWRBcmd1bWVudEFmdGVyVmFyaWFkaWNBcmd1bWVudEVycm9yLFxuICBVbmV4cGVjdGVkT3B0aW9uVmFsdWVFcnJvcixcbiAgVW5leHBlY3RlZFJlcXVpcmVkQXJndW1lbnRFcnJvcixcbiAgVW5rbm93bkNvbmZsaWN0aW5nT3B0aW9uRXJyb3IsXG4gIFVua25vd25PcHRpb25FcnJvcixcbiAgVW5rbm93blJlcXVpcmVkT3B0aW9uRXJyb3IsXG4gIFVua25vd25UeXBlRXJyb3IsXG59IGZyb20gXCIuL19lcnJvcnMudHNcIjtcbmltcG9ydCB7IE9wdGlvblR5cGUgfSBmcm9tIFwiLi9kZXByZWNhdGVkLnRzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEFyZ3VtZW50T3B0aW9ucyxcbiAgQXJndW1lbnRUeXBlLFxuICBGbGFnT3B0aW9ucyxcbiAgUGFyc2VGbGFnc0NvbnRleHQsXG4gIFBhcnNlRmxhZ3NPcHRpb25zLFxuICBUeXBlSGFuZGxlcixcbn0gZnJvbSBcIi4vdHlwZXMudHNcIjtcbmltcG9ydCB7IGJvb2xlYW4gfSBmcm9tIFwiLi90eXBlcy9ib29sZWFuLnRzXCI7XG5pbXBvcnQgeyBudW1iZXIgfSBmcm9tIFwiLi90eXBlcy9udW1iZXIudHNcIjtcbmltcG9ydCB7IHN0cmluZyB9IGZyb20gXCIuL3R5cGVzL3N0cmluZy50c1wiO1xuaW1wb3J0IHsgdmFsaWRhdGVGbGFncyB9IGZyb20gXCIuL192YWxpZGF0ZV9mbGFncy50c1wiO1xuaW1wb3J0IHsgaW50ZWdlciB9IGZyb20gXCIuL3R5cGVzL2ludGVnZXIudHNcIjtcblxuY29uc3QgRGVmYXVsdFR5cGVzOiBSZWNvcmQ8QXJndW1lbnRUeXBlLCBUeXBlSGFuZGxlcj4gPSB7XG4gIHN0cmluZyxcbiAgbnVtYmVyLFxuICBpbnRlZ2VyLFxuICBib29sZWFuLFxufTtcblxuLyoqXG4gKiBQYXJzZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzLlxuICogQHBhcmFtIGFyZ3NPckN0eCBDb21tYW5kIGxpbmUgYXJndW1lbnRzIGUuZzogYERlbm8uYXJnc2Agb3IgcGFyc2UgY29udGV4dC5cbiAqIEBwYXJhbSBvcHRzICAgICAgUGFyc2Ugb3B0aW9ucy5cbiAqXG4gKiBgYGBcbiAqIC8vIGV4YW1wbGVzL2ZsYWdzL2ZsYWdzLnRzIC14IDMgLXkueiAtbjUgLWFiYyAtLWJlZXA9Ym9vcCBmb28gYmFyIGJheiAtLWRlbm8ubGFuZCAtLWRlbm8uY29tIC0tIC0tY2xpZmZ5XG4gKiBwYXJzZUZsYWdzKERlbm8uYXJncyk7XG4gKiBgYGBcbiAqXG4gKiBPdXRwdXQ6XG4gKlxuICogYGBgXG4gKiB7XG4gKiAgIGZsYWdzOiB7XG4gKiAgICAgeDogXCIzXCIsXG4gKiAgICAgeTogeyB6OiB0cnVlIH0sXG4gKiAgICAgbjogXCI1XCIsXG4gKiAgICAgYTogdHJ1ZSxcbiAqICAgICBiOiB0cnVlLFxuICogICAgIGM6IHRydWUsXG4gKiAgICAgYmVlcDogXCJib29wXCIsXG4gKiAgICAgZGVubzogeyBsYW5kOiB0cnVlLCBjb206IHRydWUgfVxuICogICB9LFxuICogICBsaXRlcmFsOiBbIFwiLS1jbGlmZnlcIiBdLFxuICogICB1bmtub3duOiBbIFwiZm9vXCIsIFwiYmFyXCIsIFwiYmF6XCIgXSxcbiAqICAgc3RvcEVhcmx5OiBmYWxzZSxcbiAqICAgc3RvcE9uVW5rbm93bjogZmFsc2VcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VGbGFnczxcbiAgVEZsYWdzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIFRGbGFnT3B0aW9ucyBleHRlbmRzIEZsYWdPcHRpb25zLFxuICBURmxhZ3NSZXN1bHQgZXh0ZW5kcyBQYXJzZUZsYWdzQ29udGV4dCxcbj4oXG4gIGFyZ3NPckN0eDogc3RyaW5nW10gfCBURmxhZ3NSZXN1bHQsXG4gIG9wdHM6IFBhcnNlRmxhZ3NPcHRpb25zPFRGbGFnT3B0aW9ucz4gPSB7fSxcbik6IFRGbGFnc1Jlc3VsdCAmIFBhcnNlRmxhZ3NDb250ZXh0PFRGbGFncywgVEZsYWdPcHRpb25zPiB7XG4gIGxldCBhcmdzOiBBcnJheTxzdHJpbmc+O1xuICBsZXQgY3R4OiBQYXJzZUZsYWdzQ29udGV4dDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJnc09yQ3R4KSkge1xuICAgIGN0eCA9IHt9IGFzIFBhcnNlRmxhZ3NDb250ZXh0PFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbiAgICBhcmdzID0gYXJnc09yQ3R4O1xuICB9IGVsc2Uge1xuICAgIGN0eCA9IGFyZ3NPckN0eDtcbiAgICBhcmdzID0gYXJnc09yQ3R4LnVua25vd247XG4gICAgYXJnc09yQ3R4LnVua25vd24gPSBbXTtcbiAgfVxuICBhcmdzID0gYXJncy5zbGljZSgpO1xuXG4gIGN0eC5mbGFncyA/Pz0ge307XG4gIGN0eC5saXRlcmFsID8/PSBbXTtcbiAgY3R4LnVua25vd24gPz89IFtdO1xuICBjdHguc3RvcEVhcmx5ID0gZmFsc2U7XG4gIGN0eC5zdG9wT25Vbmtub3duID0gZmFsc2U7XG5cbiAgb3B0cy5kb3R0ZWQgPz89IHRydWU7XG5cbiAgdmFsaWRhdGVPcHRpb25zKG9wdHMpO1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VBcmdzKGN0eCwgYXJncywgb3B0cyk7XG4gIHZhbGlkYXRlRmxhZ3MoY3R4LCBvcHRzLCBvcHRpb25zKTtcblxuICBpZiAob3B0cy5kb3R0ZWQpIHtcbiAgICBwYXJzZURvdHRlZE9wdGlvbnMoY3R4KTtcbiAgfVxuXG4gIHJldHVybiBjdHggYXMgVEZsYWdzUmVzdWx0ICYgUGFyc2VGbGFnc0NvbnRleHQ8VEZsYWdzLCBURmxhZ09wdGlvbnM+O1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZU9wdGlvbnM8VEZsYWdPcHRpb25zIGV4dGVuZHMgRmxhZ09wdGlvbnM+KFxuICBvcHRzOiBQYXJzZUZsYWdzT3B0aW9uczxURmxhZ09wdGlvbnM+LFxuKSB7XG4gIG9wdHMuZmxhZ3M/LmZvckVhY2goKG9wdCkgPT4ge1xuICAgIG9wdC5kZXBlbmRzPy5mb3JFYWNoKChmbGFnKSA9PiB7XG4gICAgICBpZiAoIW9wdHMuZmxhZ3MgfHwgIWdldE9wdGlvbihvcHRzLmZsYWdzLCBmbGFnKSkge1xuICAgICAgICB0aHJvdyBuZXcgVW5rbm93blJlcXVpcmVkT3B0aW9uRXJyb3IoZmxhZywgb3B0cy5mbGFncyA/PyBbXSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgb3B0LmNvbmZsaWN0cz8uZm9yRWFjaCgoZmxhZykgPT4ge1xuICAgICAgaWYgKCFvcHRzLmZsYWdzIHx8ICFnZXRPcHRpb24ob3B0cy5mbGFncywgZmxhZykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFVua25vd25Db25mbGljdGluZ09wdGlvbkVycm9yKGZsYWcsIG9wdHMuZmxhZ3MgPz8gW10pO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcGFyc2VBcmdzPFRGbGFnT3B0aW9ucyBleHRlbmRzIEZsYWdPcHRpb25zPihcbiAgY3R4OiBQYXJzZUZsYWdzQ29udGV4dDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4sXG4gIGFyZ3M6IEFycmF5PHN0cmluZz4sXG4gIG9wdHM6IFBhcnNlRmxhZ3NPcHRpb25zPFRGbGFnT3B0aW9ucz4sXG4pOiBNYXA8c3RyaW5nLCBGbGFnT3B0aW9ucz4ge1xuICAvKiogT3B0aW9uIG5hbWUgbWFwcGluZzogcHJvcGVydHlOYW1lIC0+IG9wdGlvbi5uYW1lICovXG4gIGNvbnN0IG9wdGlvbnNNYXA6IE1hcDxzdHJpbmcsIEZsYWdPcHRpb25zPiA9IG5ldyBNYXAoKTtcbiAgbGV0IGluTGl0ZXJhbCA9IGZhbHNlO1xuXG4gIGZvciAoXG4gICAgbGV0IGFyZ3NJbmRleCA9IDA7XG4gICAgYXJnc0luZGV4IDwgYXJncy5sZW5ndGg7XG4gICAgYXJnc0luZGV4KytcbiAgKSB7XG4gICAgbGV0IG9wdGlvbjogRmxhZ09wdGlvbnMgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGN1cnJlbnQ6IHN0cmluZyA9IGFyZ3NbYXJnc0luZGV4XTtcbiAgICBsZXQgY3VycmVudFZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgbGV0IG5lZ2F0ZSA9IGZhbHNlO1xuXG4gICAgLy8gbGl0ZXJhbCBhcmdzIGFmdGVyIC0tXG4gICAgaWYgKGluTGl0ZXJhbCkge1xuICAgICAgY3R4LmxpdGVyYWwucHVzaChjdXJyZW50KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gZWxzZSBpZiAoY3VycmVudCA9PT0gXCItLVwiKSB7XG4gICAgICBpbkxpdGVyYWwgPSB0cnVlO1xuICAgICAgY29udGludWU7XG4gICAgfSBlbHNlIGlmIChjdHguc3RvcEVhcmx5IHx8IGN0eC5zdG9wT25Vbmtub3duKSB7XG4gICAgICBjdHgudW5rbm93bi5wdXNoKGN1cnJlbnQpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgaXNGbGFnID0gY3VycmVudC5sZW5ndGggPiAxICYmIGN1cnJlbnRbMF0gPT09IFwiLVwiO1xuXG4gICAgaWYgKCFpc0ZsYWcpIHtcbiAgICAgIGlmIChvcHRzLnN0b3BFYXJseSkge1xuICAgICAgICBjdHguc3RvcEVhcmx5ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGN0eC51bmtub3duLnB1c2goY3VycmVudCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgaXNTaG9ydCA9IGN1cnJlbnRbMV0gIT09IFwiLVwiO1xuICAgIGNvbnN0IGlzTG9uZyA9IGlzU2hvcnQgPyBmYWxzZSA6IGN1cnJlbnQubGVuZ3RoID4gMyAmJiBjdXJyZW50WzJdICE9PSBcIi1cIjtcblxuICAgIGlmICghaXNTaG9ydCAmJiAhaXNMb25nKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZE9wdGlvbkVycm9yKGN1cnJlbnQsIG9wdHMuZmxhZ3MgPz8gW10pO1xuICAgIH1cblxuICAgIC8vIG5vcm1hbGl6ZSBzaG9ydCBmbGFnczogLWFiYyA9PiAtYSAtYiAtY1xuICAgIGlmIChpc1Nob3J0ICYmIGN1cnJlbnQubGVuZ3RoID4gMiAmJiBjdXJyZW50WzJdICE9PSBcIi5cIikge1xuICAgICAgYXJncy5zcGxpY2UoYXJnc0luZGV4LCAxLCAuLi5zcGxpdEZsYWdzKGN1cnJlbnQpKTtcbiAgICAgIGN1cnJlbnQgPSBhcmdzW2FyZ3NJbmRleF07XG4gICAgfSBlbHNlIGlmIChpc0xvbmcgJiYgY3VycmVudC5zdGFydHNXaXRoKFwiLS1uby1cIikpIHtcbiAgICAgIG5lZ2F0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gc3BsaXQgdmFsdWU6IC0tZm9vPVwiYmFyPWJhelwiID0+IC0tZm9vIGJhcj1iYXpcbiAgICBjb25zdCBlcXVhbFNpZ25JbmRleCA9IGN1cnJlbnQuaW5kZXhPZihcIj1cIik7XG4gICAgaWYgKGVxdWFsU2lnbkluZGV4ICE9PSAtMSkge1xuICAgICAgY3VycmVudFZhbHVlID0gY3VycmVudC5zbGljZShlcXVhbFNpZ25JbmRleCArIDEpIHx8IHVuZGVmaW5lZDtcbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnNsaWNlKDAsIGVxdWFsU2lnbkluZGV4KTtcbiAgICB9XG5cbiAgICBpZiAob3B0cy5mbGFncykge1xuICAgICAgb3B0aW9uID0gZ2V0T3B0aW9uKG9wdHMuZmxhZ3MsIGN1cnJlbnQpO1xuXG4gICAgICBpZiAoIW9wdGlvbikge1xuICAgICAgICBjb25zdCBuYW1lID0gY3VycmVudC5yZXBsYWNlKC9eLSsvLCBcIlwiKTtcbiAgICAgICAgb3B0aW9uID0gbWF0Y2hXaWxkQ2FyZE9wdGlvbnMobmFtZSwgb3B0cy5mbGFncyk7XG4gICAgICAgIGlmICghb3B0aW9uKSB7XG4gICAgICAgICAgaWYgKG9wdHMuc3RvcE9uVW5rbm93bikge1xuICAgICAgICAgICAgY3R4LnN0b3BPblVua25vd24gPSB0cnVlO1xuICAgICAgICAgICAgY3R4LnVua25vd24ucHVzaChhcmdzW2FyZ3NJbmRleF0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IG5ldyBVbmtub3duT3B0aW9uRXJyb3IoY3VycmVudCwgb3B0cy5mbGFncyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb3B0aW9uID0ge1xuICAgICAgICBuYW1lOiBjdXJyZW50LnJlcGxhY2UoL14tKy8sIFwiXCIpLFxuICAgICAgICBvcHRpb25hbFZhbHVlOiB0cnVlLFxuICAgICAgICB0eXBlOiBPcHRpb25UeXBlLlNUUklORyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbi5zdGFuZGFsb25lKSB7XG4gICAgICBjdHguc3RhbmRhbG9uZSA9IG9wdGlvbjtcbiAgICB9XG5cbiAgICBjb25zdCBwb3NpdGl2ZU5hbWU6IHN0cmluZyA9IG5lZ2F0ZVxuICAgICAgPyBvcHRpb24ubmFtZS5yZXBsYWNlKC9ebm8tPy8sIFwiXCIpXG4gICAgICA6IG9wdGlvbi5uYW1lO1xuICAgIGNvbnN0IHByb3BOYW1lOiBzdHJpbmcgPSBwYXJhbUNhc2VUb0NhbWVsQ2FzZShwb3NpdGl2ZU5hbWUpO1xuXG4gICAgaWYgKHR5cGVvZiBjdHguZmxhZ3NbcHJvcE5hbWVdICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBpZiAoIW9wdHMuZmxhZ3M/Lmxlbmd0aCkge1xuICAgICAgICBvcHRpb24uY29sbGVjdCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKCFvcHRpb24uY29sbGVjdCkge1xuICAgICAgICB0aHJvdyBuZXcgRHVwbGljYXRlT3B0aW9uRXJyb3IoY3VycmVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbi50eXBlICYmICFvcHRpb24uYXJncz8ubGVuZ3RoKSB7XG4gICAgICBvcHRpb24uYXJncyA9IFt7XG4gICAgICAgIHR5cGU6IG9wdGlvbi50eXBlLFxuICAgICAgICByZXF1aXJlZFZhbHVlOiBvcHRpb24ucmVxdWlyZWRWYWx1ZSxcbiAgICAgICAgb3B0aW9uYWxWYWx1ZTogb3B0aW9uLm9wdGlvbmFsVmFsdWUsXG4gICAgICAgIHZhcmlhZGljOiBvcHRpb24udmFyaWFkaWMsXG4gICAgICAgIGxpc3Q6IG9wdGlvbi5saXN0LFxuICAgICAgICBzZXBhcmF0b3I6IG9wdGlvbi5zZXBhcmF0b3IsXG4gICAgICB9XTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBvcHRzLmZsYWdzPy5sZW5ndGggJiYgIW9wdGlvbi5hcmdzPy5sZW5ndGggJiZcbiAgICAgIHR5cGVvZiBjdXJyZW50VmFsdWUgIT09IFwidW5kZWZpbmVkXCJcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkT3B0aW9uVmFsdWVFcnJvcihvcHRpb24ubmFtZSwgY3VycmVudFZhbHVlKTtcbiAgICB9XG5cbiAgICBsZXQgb3B0aW9uQXJnc0luZGV4ID0gMDtcbiAgICBsZXQgaW5PcHRpb25hbEFyZyA9IGZhbHNlO1xuICAgIGNvbnN0IG5leHQgPSAoKSA9PiBjdXJyZW50VmFsdWUgPz8gYXJnc1thcmdzSW5kZXggKyAxXTtcbiAgICBjb25zdCBwcmV2aW91cyA9IGN0eC5mbGFnc1twcm9wTmFtZV07XG5cbiAgICBwYXJzZU5leHQob3B0aW9uKTtcblxuICAgIGlmICh0eXBlb2YgY3R4LmZsYWdzW3Byb3BOYW1lXSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgaWYgKG9wdGlvbi5hcmdzPy5bb3B0aW9uQXJnc0luZGV4XT8ucmVxdWlyZWRWYWx1ZSkge1xuICAgICAgICB0aHJvdyBuZXcgTWlzc2luZ09wdGlvblZhbHVlRXJyb3Iob3B0aW9uLm5hbWUpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb3B0aW9uLmRlZmF1bHQgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgY3R4LmZsYWdzW3Byb3BOYW1lXSA9IGdldERlZmF1bHRWYWx1ZShvcHRpb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3R4LmZsYWdzW3Byb3BOYW1lXSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbi52YWx1ZSkge1xuICAgICAgY3R4LmZsYWdzW3Byb3BOYW1lXSA9IG9wdGlvbi52YWx1ZShjdHguZmxhZ3NbcHJvcE5hbWVdLCBwcmV2aW91cyk7XG4gICAgfSBlbHNlIGlmIChvcHRpb24uY29sbGVjdCkge1xuICAgICAgY29uc3QgdmFsdWU6IHVua25vd25bXSA9IHR5cGVvZiBwcmV2aW91cyAhPT0gXCJ1bmRlZmluZWRcIlxuICAgICAgICA/IChBcnJheS5pc0FycmF5KHByZXZpb3VzKSA/IHByZXZpb3VzIDogW3ByZXZpb3VzXSlcbiAgICAgICAgOiBbXTtcblxuICAgICAgdmFsdWUucHVzaChjdHguZmxhZ3NbcHJvcE5hbWVdKTtcbiAgICAgIGN0eC5mbGFnc1twcm9wTmFtZV0gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBvcHRpb25zTWFwLnNldChwcm9wTmFtZSwgb3B0aW9uKTtcblxuICAgIG9wdHMub3B0aW9uPy4ob3B0aW9uIGFzIFRGbGFnT3B0aW9ucywgY3R4LmZsYWdzW3Byb3BOYW1lXSk7XG5cbiAgICAvKiogUGFyc2UgbmV4dCBhcmd1bWVudCBmb3IgY3VycmVudCBvcHRpb24uICovXG4gICAgLy8gZGVuby1saW50LWlnbm9yZSBuby1pbm5lci1kZWNsYXJhdGlvbnNcbiAgICBmdW5jdGlvbiBwYXJzZU5leHQob3B0aW9uOiBGbGFnT3B0aW9ucyk6IHZvaWQge1xuICAgICAgaWYgKG5lZ2F0ZSkge1xuICAgICAgICBjdHguZmxhZ3NbcHJvcE5hbWVdID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAoIW9wdGlvbi5hcmdzPy5sZW5ndGgpIHtcbiAgICAgICAgY3R4LmZsYWdzW3Byb3BOYW1lXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgYXJnOiBBcmd1bWVudE9wdGlvbnMgfCB1bmRlZmluZWQgPSBvcHRpb24uYXJnc1tvcHRpb25BcmdzSW5kZXhdO1xuXG4gICAgICBpZiAoIWFyZykge1xuICAgICAgICBjb25zdCBmbGFnID0gbmV4dCgpO1xuICAgICAgICB0aHJvdyBuZXcgVW5rbm93bk9wdGlvbkVycm9yKGZsYWcsIG9wdHMuZmxhZ3MgPz8gW10pO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWFyZy50eXBlKSB7XG4gICAgICAgIGFyZy50eXBlID0gT3B0aW9uVHlwZS5CT09MRUFOO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9uLmFyZ3M/Lmxlbmd0aCAmJiAhb3B0aW9uLnR5cGUpIHtcbiAgICAgICAgLy8gbWFrZSBhbGwgdmFsdWVzIHJlcXVpcmVkIGJ5IGRlZmF1bHRcbiAgICAgICAgaWYgKFxuICAgICAgICAgICh0eXBlb2YgYXJnLm9wdGlvbmFsVmFsdWUgPT09IFwidW5kZWZpbmVkXCIgfHxcbiAgICAgICAgICAgIGFyZy5vcHRpb25hbFZhbHVlID09PSBmYWxzZSkgJiZcbiAgICAgICAgICB0eXBlb2YgYXJnLnJlcXVpcmVkVmFsdWUgPT09IFwidW5kZWZpbmVkXCJcbiAgICAgICAgKSB7XG4gICAgICAgICAgYXJnLnJlcXVpcmVkVmFsdWUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBtYWtlIG5vbiBib29sZWFuIHZhbHVlIHJlcXVpcmVkIGJ5IGRlZmF1bHRcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFyZy50eXBlICE9PSBPcHRpb25UeXBlLkJPT0xFQU4gJiZcbiAgICAgICAgICAodHlwZW9mIGFyZy5vcHRpb25hbFZhbHVlID09PSBcInVuZGVmaW5lZFwiIHx8XG4gICAgICAgICAgICBhcmcub3B0aW9uYWxWYWx1ZSA9PT0gZmFsc2UpICYmXG4gICAgICAgICAgdHlwZW9mIGFyZy5yZXF1aXJlZFZhbHVlID09PSBcInVuZGVmaW5lZFwiXG4gICAgICAgICkge1xuICAgICAgICAgIGFyZy5yZXF1aXJlZFZhbHVlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWFyZy5yZXF1aXJlZFZhbHVlKSB7XG4gICAgICAgIGluT3B0aW9uYWxBcmcgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChpbk9wdGlvbmFsQXJnKSB7XG4gICAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkUmVxdWlyZWRBcmd1bWVudEVycm9yKG9wdGlvbi5uYW1lKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHJlc3VsdDogdW5rbm93bjtcbiAgICAgIGxldCBpbmNyZWFzZSA9IGZhbHNlO1xuXG4gICAgICBpZiAoYXJnLmxpc3QgJiYgaGFzTmV4dChhcmcpKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZDogdW5rbm93bltdID0gbmV4dCgpXG4gICAgICAgICAgLnNwbGl0KGFyZy5zZXBhcmF0b3IgfHwgXCIsXCIpXG4gICAgICAgICAgLm1hcCgobmV4dFZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFyc2VWYWx1ZShvcHRpb24sIGFyZywgbmV4dFZhbHVlKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcHRpb25WYWx1ZUVycm9yKFxuICAgICAgICAgICAgICAgIG9wdGlvbi5uYW1lLFxuICAgICAgICAgICAgICAgIGFyZy50eXBlID8/IFwiP1wiLFxuICAgICAgICAgICAgICAgIG5leHRWYWx1ZSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICBpZiAocGFyc2VkPy5sZW5ndGgpIHtcbiAgICAgICAgICByZXN1bHQgPSBwYXJzZWQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChoYXNOZXh0KGFyZykpIHtcbiAgICAgICAgICByZXN1bHQgPSBwYXJzZVZhbHVlKG9wdGlvbiwgYXJnLCBuZXh0KCkpO1xuICAgICAgICB9IGVsc2UgaWYgKGFyZy5vcHRpb25hbFZhbHVlICYmIGFyZy50eXBlID09PSBPcHRpb25UeXBlLkJPT0xFQU4pIHtcbiAgICAgICAgICByZXN1bHQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChpbmNyZWFzZSAmJiB0eXBlb2YgY3VycmVudFZhbHVlID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGFyZ3NJbmRleCsrO1xuICAgICAgICBpZiAoIWFyZy52YXJpYWRpYykge1xuICAgICAgICAgIG9wdGlvbkFyZ3NJbmRleCsrO1xuICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbi5hcmdzW29wdGlvbkFyZ3NJbmRleCArIDFdKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRBcmd1bWVudEFmdGVyVmFyaWFkaWNBcmd1bWVudEVycm9yKG5leHQoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgcmVzdWx0ICE9PSBcInVuZGVmaW5lZFwiICYmXG4gICAgICAgIChvcHRpb24uYXJncy5sZW5ndGggPiAxIHx8IGFyZy52YXJpYWRpYylcbiAgICAgICkge1xuICAgICAgICBpZiAoIWN0eC5mbGFnc1twcm9wTmFtZV0pIHtcbiAgICAgICAgICBjdHguZmxhZ3NbcHJvcE5hbWVdID0gW107XG4gICAgICAgIH1cblxuICAgICAgICAoY3R4LmZsYWdzW3Byb3BOYW1lXSBhcyBBcnJheTx1bmtub3duPikucHVzaChyZXN1bHQpO1xuXG4gICAgICAgIGlmIChoYXNOZXh0KGFyZykpIHtcbiAgICAgICAgICBwYXJzZU5leHQob3B0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3R4LmZsYWdzW3Byb3BOYW1lXSA9IHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgLyoqIENoZWNrIGlmIGN1cnJlbnQgb3B0aW9uIHNob3VsZCBoYXZlIGFuIGFyZ3VtZW50LiAqL1xuICAgICAgZnVuY3Rpb24gaGFzTmV4dChhcmc6IEFyZ3VtZW50T3B0aW9ucyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIW9wdGlvbi5hcmdzPy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV4dFZhbHVlID0gY3VycmVudFZhbHVlID8/IGFyZ3NbYXJnc0luZGV4ICsgMV07XG4gICAgICAgIGlmICghbmV4dFZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb24uYXJncy5sZW5ndGggPiAxICYmIG9wdGlvbkFyZ3NJbmRleCA+PSBvcHRpb24uYXJncy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFyZy5yZXF1aXJlZFZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVxdWlyZSBvcHRpb25hbCB2YWx1ZXMgdG8gYmUgY2FsbGVkIHdpdGggYW4gZXF1YWwgc2lnbjogZm9vPWJhclxuICAgICAgICBpZiAoXG4gICAgICAgICAgb3B0aW9uLmVxdWFsc1NpZ24gJiYgYXJnLm9wdGlvbmFsVmFsdWUgJiYgIWFyZy52YXJpYWRpYyAmJlxuICAgICAgICAgIHR5cGVvZiBjdXJyZW50VmFsdWUgPT09IFwidW5kZWZpbmVkXCJcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhcmcub3B0aW9uYWxWYWx1ZSB8fCBhcmcudmFyaWFkaWMpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dFZhbHVlWzBdICE9PSBcIi1cIiB8fFxuICAgICAgICAgICAgdHlwZW9mIGN1cnJlbnRWYWx1ZSAhPT0gXCJ1bmRlZmluZWRcIiB8fFxuICAgICAgICAgICAgKGFyZy50eXBlID09PSBPcHRpb25UeXBlLk5VTUJFUiAmJiAhaXNOYU4oTnVtYmVyKG5leHRWYWx1ZSkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLyoqIFBhcnNlIGFyZ3VtZW50IHZhbHVlLiAgKi9cbiAgICAgIGZ1bmN0aW9uIHBhcnNlVmFsdWUoXG4gICAgICAgIG9wdGlvbjogRmxhZ09wdGlvbnMsXG4gICAgICAgIGFyZzogQXJndW1lbnRPcHRpb25zLFxuICAgICAgICB2YWx1ZTogc3RyaW5nLFxuICAgICAgKTogdW5rbm93biB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogdW5rbm93biA9IG9wdHMucGFyc2VcbiAgICAgICAgICA/IG9wdHMucGFyc2Uoe1xuICAgICAgICAgICAgbGFiZWw6IFwiT3B0aW9uXCIsXG4gICAgICAgICAgICB0eXBlOiBhcmcudHlwZSB8fCBPcHRpb25UeXBlLlNUUklORyxcbiAgICAgICAgICAgIG5hbWU6IGAtLSR7b3B0aW9uLm5hbWV9YCxcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgOiBwYXJzZURlZmF1bHRUeXBlKG9wdGlvbiwgYXJnLCB2YWx1ZSk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHR5cGVvZiByZXN1bHQgIT09IFwidW5kZWZpbmVkXCJcbiAgICAgICAgKSB7XG4gICAgICAgICAgaW5jcmVhc2UgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3B0aW9uc01hcDtcbn1cblxuZnVuY3Rpb24gcGFyc2VEb3R0ZWRPcHRpb25zKGN0eDogUGFyc2VGbGFnc0NvbnRleHQpOiB2b2lkIHtcbiAgLy8gY29udmVydCBkb3R0ZWQgb3B0aW9uIGtleXMgaW50byBuZXN0ZWQgb2JqZWN0c1xuICBjdHguZmxhZ3MgPSBPYmplY3Qua2V5cyhjdHguZmxhZ3MpLnJlZHVjZShcbiAgICAocmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICh+a2V5LmluZGV4T2YoXCIuXCIpKSB7XG4gICAgICAgIGtleS5zcGxpdChcIi5cIikucmVkdWNlKFxuICAgICAgICAgIChcbiAgICAgICAgICAgIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgICAgICAgICBzdWJLZXk6IHN0cmluZyxcbiAgICAgICAgICAgIGluZGV4OiBudW1iZXIsXG4gICAgICAgICAgICBwYXJ0czogc3RyaW5nW10sXG4gICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IHBhcnRzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgcmVzdWx0W3N1YktleV0gPSBjdHguZmxhZ3Nba2V5XTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc3VsdFtzdWJLZXldID0gcmVzdWx0W3N1YktleV0gPz8ge307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0W3N1YktleV07XG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXN1bHQsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRba2V5XSA9IGN0eC5mbGFnc1trZXldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIHt9LFxuICApO1xufVxuXG5mdW5jdGlvbiBzcGxpdEZsYWdzKGZsYWc6IHN0cmluZyk6IEFycmF5PHN0cmluZz4ge1xuICBmbGFnID0gZmxhZy5zbGljZSgxKTtcbiAgY29uc3Qgbm9ybWFsaXplZDogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICBjb25zdCBpbmRleCA9IGZsYWcuaW5kZXhPZihcIj1cIik7XG4gIGNvbnN0IGZsYWdzID0gKGluZGV4ICE9PSAtMSA/IGZsYWcuc2xpY2UoMCwgaW5kZXgpIDogZmxhZykuc3BsaXQoXCJcIik7XG5cbiAgaWYgKGlzTmFOKE51bWJlcihmbGFnW2ZsYWcubGVuZ3RoIC0gMV0pKSkge1xuICAgIGZsYWdzLmZvckVhY2goKHZhbCkgPT4gbm9ybWFsaXplZC5wdXNoKGAtJHt2YWx9YCkpO1xuICB9IGVsc2Uge1xuICAgIG5vcm1hbGl6ZWQucHVzaChgLSR7ZmxhZ3Muc2hpZnQoKX1gKTtcbiAgICBpZiAoZmxhZ3MubGVuZ3RoKSB7XG4gICAgICBub3JtYWxpemVkLnB1c2goZmxhZ3Muam9pbihcIlwiKSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgIG5vcm1hbGl6ZWRbbm9ybWFsaXplZC5sZW5ndGggLSAxXSArPSBmbGFnLnNsaWNlKGluZGV4KTtcbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemVkO1xufVxuXG5mdW5jdGlvbiBwYXJzZURlZmF1bHRUeXBlKFxuICBvcHRpb246IEZsYWdPcHRpb25zLFxuICBhcmc6IEFyZ3VtZW50T3B0aW9ucyxcbiAgdmFsdWU6IHN0cmluZyxcbik6IHVua25vd24ge1xuICBjb25zdCB0eXBlOiBBcmd1bWVudFR5cGUgPSBhcmcudHlwZSBhcyBBcmd1bWVudFR5cGUgfHwgT3B0aW9uVHlwZS5TVFJJTkc7XG4gIGNvbnN0IHBhcnNlVHlwZSA9IERlZmF1bHRUeXBlc1t0eXBlXTtcblxuICBpZiAoIXBhcnNlVHlwZSkge1xuICAgIHRocm93IG5ldyBVbmtub3duVHlwZUVycm9yKHR5cGUsIE9iamVjdC5rZXlzKERlZmF1bHRUeXBlcykpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlVHlwZSh7XG4gICAgbGFiZWw6IFwiT3B0aW9uXCIsXG4gICAgdHlwZSxcbiAgICBuYW1lOiBgLS0ke29wdGlvbi5uYW1lfWAsXG4gICAgdmFsdWUsXG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQ0UsZUFBZSxFQUNmLFNBQVMsRUFDVCxvQkFBb0IsRUFDcEIsb0JBQW9CLFFBQ2YsY0FBYztBQUNyQixTQUNFLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLHVCQUF1QixFQUN2Qiw0Q0FBNEMsRUFDNUMsMEJBQTBCLEVBQzFCLCtCQUErQixFQUMvQiw2QkFBNkIsRUFDN0Isa0JBQWtCLEVBQ2xCLDBCQUEwQixFQUMxQixnQkFBZ0IsUUFDWCxlQUFlO0FBQ3RCLFNBQVMsVUFBVSxRQUFRLGtCQUFrQjtBQVM3QyxTQUFTLE9BQU8sUUFBUSxxQkFBcUI7QUFDN0MsU0FBUyxNQUFNLFFBQVEsb0JBQW9CO0FBQzNDLFNBQVMsTUFBTSxRQUFRLG9CQUFvQjtBQUMzQyxTQUFTLGFBQWEsUUFBUSx1QkFBdUI7QUFDckQsU0FBUyxPQUFPLFFBQVEscUJBQXFCO0FBRTdDLE1BQU0sZUFBa0Q7RUFDdEQ7RUFDQTtFQUNBO0VBQ0E7QUFDRjtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E4QkMsR0FDRCxPQUFPLFNBQVMsV0FLZCxTQUFrQyxFQUNsQyxPQUF3QyxDQUFDLENBQUM7RUFFMUMsSUFBSTtFQUNKLElBQUk7RUFFSixJQUFJLE1BQU0sT0FBTyxDQUFDLFlBQVk7SUFDNUIsTUFBTSxDQUFDO0lBQ1AsT0FBTztFQUNULE9BQU87SUFDTCxNQUFNO0lBQ04sT0FBTyxVQUFVLE9BQU87SUFDeEIsVUFBVSxPQUFPLEdBQUcsRUFBRTtFQUN4QjtFQUNBLE9BQU8sS0FBSyxLQUFLO0VBRWpCLElBQUksS0FBSyxLQUFLLENBQUM7RUFDZixJQUFJLE9BQU8s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 +// denoCacheMetadata=8954887979831142167,9777150289833451421
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/c421fbca3fa750ad5bd8ab518977815e39211072fa28843400e1abf98522894e.js b/vendor/gen/https/deno.land/c421fbca3fa750ad5bd8ab518977815e39211072fa28843400e1abf98522894e.js new file mode 100644 index 0000000..75aba6c --- /dev/null +++ b/vendor/gen/https/deno.land/c421fbca3fa750ad5bd8ab518977815e39211072fa28843400e1abf98522894e.js @@ -0,0 +1,263 @@ +import { GenericInput } from "./_generic_input.ts"; +import { bold, brightBlue, dim, stripColor } from "./deps.ts"; +import { Figures, getFiguresByKeys } from "./figures.ts"; +import { distance } from "../_utils/distance.ts"; +/** Generic list prompt representation. */ export class GenericList extends GenericInput { + options = this.settings.options; + listIndex = this.getListIndex(); + listOffset = this.getPageOffset(this.listIndex); + /** + * Create list separator. + * @param label Separator label. + */ static separator(label = "------------") { + return { + value: label, + disabled: true + }; + } + /** + * Set list option defaults. + * @param option List option. + */ static mapOption(option) { + return { + value: option.value, + name: typeof option.name === "undefined" ? option.value : option.name, + disabled: !!option.disabled + }; + } + constructor(settings){ + super({ + ...settings, + keys: { + previous: settings.search ? [ + "up" + ] : [ + "up", + "u", + "p", + "8" + ], + next: settings.search ? [ + "down" + ] : [ + "down", + "d", + "n", + "2" + ], + previousPage: [ + "pageup", + "left" + ], + nextPage: [ + "pagedown", + "right" + ], + ...settings.keys ?? {} + } + }); + } + match() { + const input = this.getCurrentInputValue().toLowerCase(); + if (!input.length) { + this.options = this.settings.options.slice(); + } else { + this.options = this.settings.options.filter((option)=>match(option.name) || option.name !== option.value && match(option.value)).sort((a, b)=>distance(a.name, input) - distance(b.name, input)); + } + this.listIndex = Math.max(0, Math.min(this.options.length - 1, this.listIndex)); + this.listOffset = Math.max(0, Math.min(this.options.length - this.getListHeight(), this.listOffset)); + function match(value) { + return stripColor(value).toLowerCase().includes(input); + } + } + message() { + let message = `${this.settings.indent}${this.settings.prefix}` + bold(this.settings.message) + this.defaults(); + if (this.settings.search) { + message += " " + this.settings.searchLabel + " "; + } + this.cursor.x = stripColor(message).length + this.inputIndex + 1; + return message + this.input(); + } + /** Render options. */ body() { + return this.getList() + this.getInfo(); + } + getInfo() { + if (!this.settings.info) { + return ""; + } + const selected = this.listIndex + 1; + const actions = [ + [ + "Next", + getFiguresByKeys(this.settings.keys?.next ?? []) + ], + [ + "Previous", + getFiguresByKeys(this.settings.keys?.previous ?? []) + ], + [ + "Next Page", + getFiguresByKeys(this.settings.keys?.nextPage ?? []) + ], + [ + "Previous Page", + getFiguresByKeys(this.settings.keys?.previousPage ?? []) + ], + [ + "Submit", + getFiguresByKeys(this.settings.keys?.submit ?? []) + ] + ]; + return "\n" + this.settings.indent + brightBlue(Figures.INFO) + bold(` ${selected}/${this.options.length} `) + actions.map((cur)=>`${cur[0]}: ${bold(cur[1].join(", "))}`).join(", "); + } + /** Render options list. */ getList() { + const list = []; + const height = this.getListHeight(); + for(let i = this.listOffset; i < this.listOffset + height; i++){ + list.push(this.getListItem(this.options[i], this.listIndex === i)); + } + if (!list.length) { + list.push(this.settings.indent + dim(" No matches...")); + } + return list.join("\n"); + } + /** Get options row height. */ getListHeight() { + return Math.min(this.options.length, this.settings.maxRows || this.options.length); + } + getListIndex(value) { + return Math.max(0, typeof value === "undefined" ? this.options.findIndex((item)=>!item.disabled) || 0 : this.options.findIndex((item)=>item.value === value) || 0); + } + getPageOffset(index) { + if (index === 0) { + return 0; + } + const height = this.getListHeight(); + return Math.floor(index / height) * height; + } + /** + * Find option by value. + * @param value Value of the option. + */ getOptionByValue(value) { + return this.options.find((option)=>option.value === value); + } + /** Read user input. */ read() { + if (!this.settings.search) { + this.tty.cursorHide(); + } + return super.read(); + } + /** + * Handle user input event. + * @param event Key event. + */ async handleEvent(event) { + switch(true){ + case this.isKey(this.settings.keys, "previous", event): + this.selectPrevious(); + break; + case this.isKey(this.settings.keys, "next", event): + this.selectNext(); + break; + case this.isKey(this.settings.keys, "nextPage", event): + this.selectNextPage(); + break; + case this.isKey(this.settings.keys, "previousPage", event): + this.selectPreviousPage(); + break; + default: + await super.handleEvent(event); + } + } + moveCursorLeft() { + if (this.settings.search) { + super.moveCursorLeft(); + } + } + moveCursorRight() { + if (this.settings.search) { + super.moveCursorRight(); + } + } + deleteChar() { + if (this.settings.search) { + super.deleteChar(); + } + } + deleteCharRight() { + if (this.settings.search) { + super.deleteCharRight(); + this.match(); + } + } + addChar(char) { + if (this.settings.search) { + super.addChar(char); + this.match(); + } + } + /** Select previous option. */ selectPrevious() { + if (this.options.length < 2) { + return; + } + if (this.listIndex > 0) { + this.listIndex--; + if (this.listIndex < this.listOffset) { + this.listOffset--; + } + if (this.options[this.listIndex].disabled) { + this.selectPrevious(); + } + } else { + this.listIndex = this.options.length - 1; + this.listOffset = this.options.length - this.getListHeight(); + if (this.options[this.listIndex].disabled) { + this.selectPrevious(); + } + } + } + /** Select next option. */ selectNext() { + if (this.options.length < 2) { + return; + } + if (this.listIndex < this.options.length - 1) { + this.listIndex++; + if (this.listIndex >= this.listOffset + this.getListHeight()) { + this.listOffset++; + } + if (this.options[this.listIndex].disabled) { + this.selectNext(); + } + } else { + this.listIndex = this.listOffset = 0; + if (this.options[this.listIndex].disabled) { + this.selectNext(); + } + } + } + /** Select previous page. */ selectPreviousPage() { + if (this.options?.length) { + const height = this.getListHeight(); + if (this.listOffset >= height) { + this.listIndex -= height; + this.listOffset -= height; + } else if (this.listOffset > 0) { + this.listIndex -= this.listOffset; + this.listOffset = 0; + } + } + } + /** Select next page. */ selectNextPage() { + if (this.options?.length) { + const height = this.getListHeight(); + if (this.listOffset + height + height < this.options.length) { + this.listIndex += height; + this.listOffset += height; + } else if (this.listOffset + height < this.options.length) { + const offset = this.options.length - height; + this.listIndex += offset - this.listOffset; + this.listOffset = offset; + } + } + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvcHJvbXB0L19nZW5lcmljX2xpc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBLZXlDb2RlIH0gZnJvbSBcIi4uL2tleWNvZGUva2V5X2NvZGUudHNcIjtcbmltcG9ydCB7XG4gIEdlbmVyaWNJbnB1dCxcbiAgR2VuZXJpY0lucHV0S2V5cyxcbiAgR2VuZXJpY0lucHV0UHJvbXB0T3B0aW9ucyxcbiAgR2VuZXJpY0lucHV0UHJvbXB0U2V0dGluZ3MsXG59IGZyb20gXCIuL19nZW5lcmljX2lucHV0LnRzXCI7XG5pbXBvcnQgeyBib2xkLCBicmlnaHRCbHVlLCBkaW0sIHN0cmlwQ29sb3IgfSBmcm9tIFwiLi9kZXBzLnRzXCI7XG5pbXBvcnQgeyBGaWd1cmVzLCBnZXRGaWd1cmVzQnlLZXlzIH0gZnJvbSBcIi4vZmlndXJlcy50c1wiO1xuaW1wb3J0IHsgZGlzdGFuY2UgfSBmcm9tIFwiLi4vX3V0aWxzL2Rpc3RhbmNlLnRzXCI7XG5cbi8qKiBTZWxlY3Qga2V5IG9wdGlvbnMuICovXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyaWNMaXN0S2V5cyBleHRlbmRzIEdlbmVyaWNJbnB1dEtleXMge1xuICBwcmV2aW91cz86IHN0cmluZ1tdO1xuICBuZXh0Pzogc3RyaW5nW107XG4gIHByZXZpb3VzUGFnZT86IHN0cmluZ1tdO1xuICBuZXh0UGFnZT86IHN0cmluZ1tdO1xufVxuXG4vKiogR2VuZXJpYyBsaXN0IG9wdGlvbiBvcHRpb25zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZW5lcmljTGlzdE9wdGlvbiB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuLyoqIEdlbmVyaWMgbGlzdCBvcHRpb24gc2V0dGluZ3MuICovXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyaWNMaXN0T3B0aW9uU2V0dGluZ3MgZXh0ZW5kcyBHZW5lcmljTGlzdE9wdGlvbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIEdlbmVyaWNMaXN0VmFsdWVPcHRpb25zID0gKHN0cmluZyB8IEdlbmVyaWNMaXN0T3B0aW9uKVtdO1xuZXhwb3J0IHR5cGUgR2VuZXJpY0xpc3RWYWx1ZVNldHRpbmdzID0gR2VuZXJpY0xpc3RPcHRpb25TZXR0aW5nc1tdO1xuXG50eXBlIFVuc3VwcG9ydGVkSW5wdXRPcHRpb25zID0gXCJzdWdnZXN0aW9uc1wiIHwgXCJsaXN0XCI7XG5cbi8qKiBHZW5lcmljIGxpc3QgcHJvbXB0IG9wdGlvbnMuICovXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyaWNMaXN0T3B0aW9uczxUVmFsdWUsIFRSYXdWYWx1ZT4gZXh0ZW5kc1xuICBPbWl0PFxuICAgIEdlbmVyaWNJbnB1dFByb21wdE9wdGlvbnM8VFZhbHVlLCBUUmF3VmFsdWU+LFxuICAgIFVuc3VwcG9ydGVkSW5wdXRPcHRpb25zXG4gID4ge1xuICBvcHRpb25zOiBHZW5lcmljTGlzdFZhbHVlT3B0aW9ucztcbiAga2V5cz86IEdlbmVyaWNMaXN0S2V5cztcbiAgaW5kZW50Pzogc3RyaW5nO1xuICBsaXN0UG9pbnRlcj86IHN0cmluZztcbiAgc2VhcmNoSWNvbj86IHN0cmluZztcbiAgbWF4Um93cz86IG51bWJlcjtcbiAgc2VhcmNoTGFiZWw/OiBzdHJpbmc7XG4gIHNlYXJjaD86IGJvb2xlYW47XG4gIGluZm8/OiBib29sZWFuO1xufVxuXG4vKiogR2VuZXJpYyBsaXN0IHByb21wdCBzZXR0aW5ncy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJpY0xpc3RTZXR0aW5nczxUVmFsdWUsIFRSYXdWYWx1ZT5cbiAgZXh0ZW5kcyBHZW5lcmljSW5wdXRQcm9tcHRTZXR0aW5nczxUVmFsdWUsIFRSYXdWYWx1ZT4ge1xuICBvcHRpb25zOiBHZW5lcmljTGlzdFZhbHVlU2V0dGluZ3M7XG4gIGtleXM/OiBHZW5lcmljTGlzdEtleXM7XG4gIGluZGVudDogc3RyaW5nO1xuICBsaXN0UG9pbnRlcjogc3RyaW5nO1xuICBtYXhSb3dzOiBudW1iZXI7XG4gIHNlYXJjaExhYmVsOiBzdHJpbmc7XG4gIHNlYXJjaD86IGJvb2xlYW47XG4gIGluZm8/OiBib29sZWFuO1xufVxuXG4vKiogR2VuZXJpYyBsaXN0IHByb21wdCByZXByZXNlbnRhdGlvbi4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHZW5lcmljTGlzdDxcbiAgVFZhbHVlLFxuICBUUmF3VmFsdWUsXG4gIFRTZXR0aW5ncyBleHRlbmRzIEdlbmVyaWNMaXN0U2V0dGluZ3M8VFZhbHVlLCBUUmF3VmFsdWU+LFxuPiBleHRlbmRzIEdlbmVyaWNJbnB1dDxUVmFsdWUsIFRSYXdWYWx1ZSwgVFNldHRpbmdzPiB7XG4gIHByb3RlY3RlZCBvcHRpb25zOiBUU2V0dGluZ3NbXCJvcHRpb25zXCJdID0gdGhpcy5zZXR0aW5ncy5vcHRpb25zO1xuICBwcm90ZWN0ZWQgbGlzdEluZGV4OiBudW1iZXIgPSB0aGlzLmdldExpc3RJbmRleCgpO1xuICBwcm90ZWN0ZWQgbGlzdE9mZnNldDogbnVtYmVyID0gdGhpcy5nZXRQYWdlT2Zmc2V0KHRoaXMubGlzdEluZGV4KTtcblxuICAvKipcbiAgICogQ3JlYXRlIGxpc3Qgc2VwYXJhdG9yLlxuICAgKiBAcGFyYW0gbGFiZWwgU2VwYXJhdG9yIGxhYmVsLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzZXBhcmF0b3IobGFiZWwgPSBcIi0tLS0tLS0tLS0tLVwiKTogR2VuZXJpY0xpc3RPcHRpb24ge1xuICAgIHJldHVybiB7IHZhbHVlOiBsYWJlbCwgZGlzYWJsZWQ6IHRydWUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgbGlzdCBvcHRpb24gZGVmYXVsdHMuXG4gICAqIEBwYXJhbSBvcHRpb24gTGlzdCBvcHRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhdGljIG1hcE9wdGlvbihcbiAgICBvcHRpb246IEdlbmVyaWNMaXN0T3B0aW9uLFxuICApOiBHZW5lcmljTGlzdE9wdGlvblNldHRpbmdzIHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IG9wdGlvbi52YWx1ZSxcbiAgICAgIG5hbWU6IHR5cGVvZiBvcHRpb24ubmFtZSA9PT0gXCJ1bmRlZmluZWRcIiA/IG9wdGlvbi52YWx1ZSA6IG9wdGlvbi5uYW1lLFxuICAgICAgZGlzYWJsZWQ6ICEhb3B0aW9uLmRpc2FibGVkLFxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzZXR0aW5nczogVFNldHRpbmdzKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICBrZXlzOiB7XG4gICAgICAgIHByZXZpb3VzOiBzZXR0aW5ncy5zZWFyY2ggPyBbXCJ1cFwiXSA6IFtcInVwXCIsIFwidVwiLCBcInBcIiwgXCI4XCJdLFxuICAgICAgICBuZXh0OiBzZXR0aW5ncy5zZWFyY2ggPyBbXCJkb3duXCJdIDogW1wiZG93blwiLCBcImRcIiwgXCJuXCIsIFwiMlwiXSxcbiAgICAgICAgcHJldmlvdXNQYWdlOiBbXCJwYWdldXBcIiwgXCJsZWZ0XCJdLFxuICAgICAgICBuZXh0UGFnZTogW1wicGFnZWRvd25cIiwgXCJyaWdodFwiXSxcbiAgICAgICAgLi4uKHNldHRpbmdzLmtleXMgPz8ge30pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXRjaCgpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dDogc3RyaW5nID0gdGhpcy5nZXRDdXJyZW50SW5wdXRWYWx1ZSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKCFpbnB1dC5sZW5ndGgpIHtcbiAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuc2V0dGluZ3Mub3B0aW9ucy5zbGljZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLnNldHRpbmdzLm9wdGlvbnNcbiAgICAgICAgLmZpbHRlcigob3B0aW9uOiBHZW5lcmljTGlzdE9wdGlvblNldHRpbmdzKSA9PlxuICAgICAgICAgIG1hdGNoKG9wdGlvbi5uYW1lKSB8fFxuICAgICAgICAgIChvcHRpb24ubmFtZSAhPT0gb3B0aW9uLnZhbHVlICYmIG1hdGNoKG9wdGlvbi52YWx1ZSkpXG4gICAgICAgIClcbiAgICAgICAgLnNvcnQoKGE6IEdlbmVyaWNMaXN0T3B0aW9uU2V0dGluZ3MsIGI6IEdlbmVyaWNMaXN0T3B0aW9uU2V0dGluZ3MpID0+XG4gICAgICAgICAgZGlzdGFuY2UoYS5uYW1lLCBpbnB1dCkgLSBkaXN0YW5jZShiLm5hbWUsIGlucHV0KVxuICAgICAgICApO1xuICAgIH1cbiAgICB0aGlzLmxpc3RJbmRleCA9IE1hdGgubWF4KFxuICAgICAgMCxcbiAgICAgIE1hdGgubWluKHRoaXMub3B0aW9ucy5sZW5ndGggLSAxLCB0aGlzLmxpc3RJbmRleCksXG4gICAgKTtcbiAgICB0aGlzLmxpc3RPZmZzZXQgPSBNYXRoLm1heChcbiAgICAgIDAsXG4gICAgICBNYXRoLm1pbihcbiAgICAgICAgdGhpcy5vcHRpb25zLmxlbmd0aCAtIHRoaXMuZ2V0TGlzdEhlaWdodCgpLFxuICAgICAgICB0aGlzLmxpc3RPZmZzZXQsXG4gICAgICApLFxuICAgICk7XG5cbiAgICBmdW5jdGlvbiBtYXRjaCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gc3RyaXBDb2xvcih2YWx1ZSlcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLmluY2x1ZGVzKGlucHV0KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIGxldCBtZXNzYWdlID0gYCR7dGhpcy5zZXR0aW5ncy5pbmRlbnR9JHt0aGlzLnNldHRpbmdzLnByZWZpeH1gICtcbiAgICAgIGJvbGQodGhpcy5zZXR0aW5ncy5tZXNzYWdlKSArXG4gICAgICB0aGlzLmRlZmF1bHRzKCk7XG4gICAgaWYgKHRoaXMuc2V0dGluZ3Muc2VhcmNoKSB7XG4gICAgICBtZXNzYWdlICs9IFwiIFwiICsgdGhpcy5zZXR0aW5ncy5zZWFyY2hMYWJlbCArIFwiIFwiO1xuICAgIH1cbiAgICB0aGlzLmN1cnNvci54ID0gc3RyaXBDb2xvcihtZXNzYWdlKS5sZW5ndGggKyB0aGlzLmlucHV0SW5kZXggKyAxO1xuICAgIHJldHVybiBtZXNzYWdlICsgdGhpcy5pbnB1dCgpO1xuICB9XG5cbiAgLyoqIFJlbmRlciBvcHRpb25zLiAqL1xuICBwcm90ZWN0ZWQgYm9keSgpOiBzdHJpbmcgfCBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmdldExpc3QoKSArIHRoaXMuZ2V0SW5mbygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEluZm8oKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuc2V0dGluZ3MuaW5mbykge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdGVkOiBudW1iZXIgPSB0aGlzLmxpc3RJbmRleCArIDE7XG4gICAgY29uc3QgYWN0aW9uczogQXJyYXk8W3N0cmluZywgQXJyYXk8c3RyaW5nPl0+ID0gW1xuICAgICAgW1wiTmV4dFwiLCBnZXRGaWd1cmVzQnlLZXlzKHRoaXMuc2V0dGluZ3Mua2V5cz8ubmV4dCA/PyBbXSldLFxuICAgICAgW1wiUHJldmlvdXNcIiwgZ2V0RmlndXJlc0J5S2V5cyh0aGlzLnNldHRpbmdzLmtleXM/LnByZXZpb3VzID8/IFtdKV0sXG4gICAgICBbXCJOZXh0IFBhZ2VcIiwgZ2V0RmlndXJlc0J5S2V5cyh0aGlzLnNldHRpbmdzLmtleXM/Lm5leHRQYWdlID8/IFtdKV0sXG4gICAgICBbXG4gICAgICAgIFwiUHJldmlvdXMgUGFnZVwiLFxuICAgICAgICBnZXRGaWd1cmVzQnlLZXlzKHRoaXMuc2V0dGluZ3Mua2V5cz8ucHJldmlvdXNQYWdlID8/IFtdKSxcbiAgICAgIF0sXG4gICAgICBbXCJTdWJtaXRcIiwgZ2V0RmlndXJlc0J5S2V5cyh0aGlzLnNldHRpbmdzLmtleXM/LnN1Ym1pdCA/PyBbXSldLFxuICAgIF07XG5cbiAgICByZXR1cm4gXCJcXG5cIiArIHRoaXMuc2V0dGluZ3MuaW5kZW50ICsgYnJpZ2h0Qmx1ZShGaWd1cmVzLklORk8pICtcbiAgICAgIGJvbGQoYCAke3NlbGVjdGVkfS8ke3RoaXMub3B0aW9ucy5sZW5ndGh9IGApICtcbiAgICAgIGFjdGlvbnNcbiAgICAgICAgLm1hcCgoY3VyKSA9PiBgJHtjdXJbMF19OiAke2JvbGQoY3VyWzFdLmpvaW4oXCIsIFwiKSl9YClcbiAgICAgICAgLmpvaW4oXCIsIFwiKTtcbiAgfVxuXG4gIC8qKiBSZW5kZXIgb3B0aW9ucyBsaXN0LiAqL1xuICBwcm90ZWN0ZWQgZ2V0TGlzdCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxpc3Q6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgICBjb25zdCBoZWlnaHQ6IG51bWJlciA9IHRoaXMuZ2V0TGlzdEhlaWdodCgpO1xuICAgIGZvciAobGV0IGkgPSB0aGlzLmxpc3RPZmZzZXQ7IGkgPCB0aGlzLmxpc3RPZmZzZXQgKyBoZWlnaHQ7IGkrKykge1xuICAgICAgbGlzdC5wdXNoKFxuICAgICAgICB0aGlzLmdldExpc3RJdGVtKFxuICAgICAgICAgIHRoaXMub3B0aW9uc1tpXSxcbiAgICAgICAgICB0aGlzLmxpc3RJbmRleCA9PT0gaSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICghbGlzdC5sZW5ndGgpIHtcbiAgICAgIGxpc3QucHVzaChcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5pbmRlbnQgKyBkaW0oXCIgIE5vIG1hdGNoZXMuLi5cIiksXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbGlzdC5qb2luKFwiXFxuXCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciBvcHRpb24uXG4gICAqIEBwYXJhbSBpdGVtICAgICAgICBPcHRpb24uXG4gICAqIEBwYXJhbSBpc1NlbGVjdGVkICBTZXQgdG8gdHJ1ZSBpZiBvcHRpb24gaXMgc2VsZWN0ZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0TGlzdEl0ZW0oXG4gICAgaXRlbTogR2VuZXJpY0xpc3RPcHRpb25TZXR0aW5ncyxcbiAgICBpc1NlbGVjdGVkPzogYm9vbGVhbixcbiAgKTogc3RyaW5nO1xuXG4gIC8qKiBHZXQgb3B0aW9ucyByb3cgaGVpZ2h0LiAqL1xuICBwcm90ZWN0ZWQgZ2V0TGlzdEhlaWdodCgpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLm1pbihcbiAgICAgIHRoaXMub3B0aW9ucy5sZW5ndGgsXG4gICAgICB0aGlzLnNldHRpbmdzLm1heFJvd3MgfHwgdGhpcy5vcHRpb25zLmxlbmd0aCxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldExpc3RJbmRleCh2YWx1ZT86IHN0cmluZykge1xuICAgIHJldHVybiBNYXRoLm1heChcbiAgICAgIDAsXG4gICAgICB0eXBlb2YgdmFsdWUgPT09IFwidW5kZWZpbmVkXCJcbiAgICAgICAgPyB0aGlzLm9wdGlvbnMuZmluZEluZGV4KChpdGVtOiBHZW5lcmljTGlzdE9wdGlvblNldHRpbmdzKSA9PlxuICAgICAgICAgICFpdGVtLmRpc2FibGVkXG4gICAgICAgICkgfHwgMFxuICAgICAgICA6IHRoaXMub3B0aW9ucy5maW5kSW5kZXgoKGl0ZW06IEdlbmVyaWNMaXN0T3B0aW9uU2V0dGluZ3MpID0+XG4gICAgICAgICAgaXRlbS52YWx1ZSA9PT0gdmFsdWVcbiAgICAgICAgKSB8fCAwLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0UGFnZU9mZnNldChpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgY29uc3QgaGVpZ2h0OiBudW1iZXIgPSB0aGlzLmdldExpc3RIZWlnaHQoKTtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihpbmRleCAvIGhlaWdodCkgKiBoZWlnaHQ7XG4gIH1cblxuICAvKipcbiAgICogRmluZCBvcHRpb24gYnkgdmFsdWUuXG4gICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSBvZiB0aGUgb3B0aW9uLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldE9wdGlvbkJ5VmFsdWUoXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgKTogR2VuZXJpY0xpc3RPcHRpb25TZXR0aW5ncyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUpO1xuICB9XG5cbiAgLyoqIFJlYWQgdXNlciBpbnB1dC4gKi9cbiAgcHJvdGVjdGVkIHJlYWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKCF0aGlzLnNldHRpbmdzLnNlYXJjaCkge1xuICAgICAgdGhpcy50dHkuY3Vyc29ySGlkZSgpO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIucmVhZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB1c2VyIGlucHV0IGV2ZW50LlxuICAgKiBAcGFyYW0gZXZlbnQgS2V5IGV2ZW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUV2ZW50KGV2ZW50OiBLZXlDb2RlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICBjYXNlIHRoaXMuaXNLZXkodGhpcy5zZXR0aW5ncy5rZXlzLCBcInByZXZpb3VzXCIsIGV2ZW50KTpcbiAgICAgICAgdGhpcy5zZWxlY3RQcmV2aW91cygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5pc0tleSh0aGlzLnNldHRpbmdzLmtleXMsIFwibmV4dFwiLCBldmVudCk6XG4gICAgICAgIHRoaXMuc2VsZWN0TmV4dCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5pc0tleSh0aGlzLnNldHRpbmdzLmtleXMsIFwibmV4dFBhZ2VcIiwgZXZlbnQpOlxuICAgICAgICB0aGlzLnNlbGVjdE5leHRQYWdlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLmlzS2V5KHRoaXMuc2V0dGluZ3Mua2V5cywgXCJwcmV2aW91c1BhZ2VcIiwgZXZlbnQpOlxuICAgICAgICB0aGlzLnNlbGVjdFByZXZpb3VzUGFnZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGF3YWl0IHN1cGVyLmhhbmRsZUV2ZW50KGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgbW92ZUN1cnNvckxlZnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2V0dGluZ3Muc2VhcmNoKSB7XG4gICAgICBzdXBlci5tb3ZlQ3Vyc29yTGVmdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBtb3ZlQ3Vyc29yUmlnaHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2V0dGluZ3Muc2VhcmNoKSB7XG4gICAgICBzdXBlci5tb3ZlQ3Vyc29yUmlnaHQoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZGVsZXRlQ2hhcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5zZWFyY2gpIHtcbiAgICAgIHN1cGVyLmRlbGV0ZUNoYXIoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZGVsZXRlQ2hhclJpZ2h0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNldHRpbmdzLnNlYXJjaCkge1xuICAgICAgc3VwZXIuZGVsZXRlQ2hhclJpZ2h0KCk7XG4gICAgICB0aGlzLm1hdGNoKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFkZENoYXIoY2hhcjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2V0dGluZ3Muc2VhcmNoKSB7XG4gICAgICBzdXBlci5hZGRDaGFyKGNoYXIpO1xuICAgICAgdGhpcy5tYXRjaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTZWxlY3QgcHJldmlvdXMgb3B0aW9uLiAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0UHJldmlvdXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5sZW5ndGggPCAyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmxpc3RJbmRleCA+IDApIHtcbiAgICAgIHRoaXMubGlzdEluZGV4LS07XG4gICAgICBpZiAodGhpcy5saXN0SW5kZXggPCB0aGlzLmxpc3RPZmZzZXQpIHtcbiAgICAgICAgdGhpcy5saXN0T2Zmc2V0LS07XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vcHRpb25zW3RoaXMubGlzdEluZGV4XS5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLnNlbGVjdFByZXZpb3VzKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGlzdEluZGV4ID0gdGhpcy5vcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgICB0aGlzLmxpc3RPZmZzZXQgPSB0aGlzLm9wdGlvbnMubGVuZ3RoIC0gdGhpcy5nZXRMaXN0SGVpZ2h0KCk7XG4gICAgICBpZiAodGhpcy5vcHRpb25zW3RoaXMubGlzdEluZGV4XS5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLnNlbGVjdFByZXZpb3VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIFNlbGVjdCBuZXh0IG9wdGlvbi4gKi9cbiAgcHJvdGVjdGVkIHNlbGVjdE5leHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5sZW5ndGggPCAyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmxpc3RJbmRleCA8IHRoaXMub3B0aW9ucy5sZW5ndGggLSAxKSB7XG4gICAgICB0aGlzLmxpc3RJbmRleCsrO1xuICAgICAgaWYgKHRoaXMubGlzdEluZGV4ID49IHRoaXMubGlzdE9mZnNldCArIHRoaXMuZ2V0TGlzdEhlaWdodCgpKSB7XG4gICAgICAgIHRoaXMubGlzdE9mZnNldCsrO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMub3B0aW9uc1t0aGlzLmxpc3RJbmRleF0uZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3ROZXh0KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGlzdEluZGV4ID0gdGhpcy5saXN0T2Zmc2V0ID0gMDtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnNbdGhpcy5saXN0SW5kZXhdLmRpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0TmV4dCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBTZWxlY3QgcHJldmlvdXMgcGFnZS4gKi9cbiAgcHJvdGVjdGVkIHNlbGVjdFByZXZpb3VzUGFnZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vcHRpb25zPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGhlaWdodDogbnVtYmVyID0gdGhpcy5nZXRMaXN0SGVpZ2h0KCk7XG4gICAgICBpZiAodGhpcy5saXN0T2Zmc2V0ID49IGhlaWdodCkge1xuICAgICAgICB0aGlzLmxpc3RJbmRleCAtPSBoZWlnaHQ7XG4gICAgICAgIHRoaXMubGlzdE9mZnNldCAtPSBoZWlnaHQ7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubGlzdE9mZnNldCA+IDApIHtcbiAgICAgICAgdGhpcy5saXN0SW5kZXggLT0gdGhpcy5saXN0T2Zmc2V0O1xuICAgICAgICB0aGlzLmxpc3RPZmZzZXQgPSAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBTZWxlY3QgbmV4dCBwYWdlLiAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0TmV4dFBhZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3B0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCBoZWlnaHQ6IG51bWJlciA9IHRoaXMuZ2V0TGlzdEhlaWdodCgpO1xuICAgICAgaWYgKHRoaXMubGlzdE9mZnNldCArIGhlaWdodCArIGhlaWdodCA8IHRoaXMub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5saXN0SW5kZXggKz0gaGVpZ2h0O1xuICAgICAgICB0aGlzLmxpc3RPZmZzZXQgKz0gaGVpZ2h0O1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmxpc3RPZmZzZXQgKyBoZWlnaHQgPCB0aGlzLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHRoaXMub3B0aW9ucy5sZW5ndGggLSBoZWlnaHQ7XG4gICAgICAgIHRoaXMubGlzdEluZGV4ICs9IG9mZnNldCAtIHRoaXMubGlzdE9mZnNldDtcbiAgICAgICAgdGhpcy5saXN0T2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLFNBQ0UsWUFBWSxRQUlQLHNCQUFzQjtBQUM3QixTQUFTLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFVBQVUsUUFBUSxZQUFZO0FBQzlELFNBQVMsT0FBTyxFQUFFLGdCQUFnQixRQUFRLGVBQWU7QUFDekQsU0FBUyxRQUFRLFFBQVEsd0JBQXdCO0FBMkRqRCx3Q0FBd0MsR0FDeEMsT0FBTyxNQUFlLG9CQUlaO0VBQ0UsVUFBZ0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7RUFDdEQsWUFBb0IsSUFBSSxDQUFDLFlBQVksR0FBRztFQUN4QyxhQUFxQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7RUFFbEU7OztHQUdDLEdBQ0QsT0FBYyxVQUFVLFFBQVEsY0FBYyxFQUFxQjtJQUNqRSxPQUFPO01BQUUsT0FBTztNQUFPLFVBQVU7SUFBSztFQUN4QztFQUVBOzs7R0FHQyxHQUNELE9BQWlCLFVBQ2YsTUFBeUIsRUFDRTtJQUMzQixPQUFPO01BQ0wsT0FBTyxPQUFPLEtBQUs7TUFDbkIsTUFBTSxPQUFPLE9BQU8sSUFBSSxLQUFLLGNBQWMsT0FBTyxLQUFLLEdBQUcsT0FBTyxJQUFJO01BQ3JFLFVBQVUsQ0FBQyxDQUFDLE9BQU8sUUFBUTtJQUM3QjtFQUNGO0VBRUEsWUFBWSxRQUFtQixDQUFFO0lBQy9CLEtBQUssQ0FBQztNQUNKLEdBQUcsUUFBUTtNQUNYLE1BQU07UUFDSixVQUFVLFNBQVMsTUFBTSxHQUFHO1VBQUM7U0FBSyxHQUFHO1VBQUM7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 +// denoCacheMetadata=8910189736107196,4077302412524458352
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/c4ef91eda37aa641a25cfd385328c9732b4221eec13d8b930ffa6b22cbf60e54.js b/vendor/gen/https/deno.land/c4ef91eda37aa641a25cfd385328c9732b4221eec13d8b930ffa6b22cbf60e54.js new file mode 100644 index 0000000..ccf010c --- /dev/null +++ b/vendor/gen/https/deno.land/c4ef91eda37aa641a25cfd385328c9732b4221eec13d8b930ffa6b22cbf60e54.js @@ -0,0 +1,3 @@ +export * from "jsr:@std/fmt@1.0.8/colors"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvZGVwcy9jb2xvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcImpzcjpAc3RkL2ZtdEAxLjAuOC9jb2xvcnNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRCQUE0QiJ9 +// denoCacheMetadata=966015928896968116,15061326194002891679
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/c58677db7dd1da121aa6bbba12387b02c31d47527dfddf4f19a7be673985f6af.js b/vendor/gen/https/deno.land/c58677db7dd1da121aa6bbba12387b02c31d47527dfddf4f19a7be673985f6af.js new file mode 100644 index 0000000..9c97a4d --- /dev/null +++ b/vendor/gen/https/deno.land/c58677db7dd1da121aa6bbba12387b02c31d47527dfddf4f19a7be673985f6af.js @@ -0,0 +1,25 @@ +import { Command } from "../command.ts"; +import { UnknownCompletionCommandError } from "../_errors.ts"; +/** Execute auto completion method of command and action. */ export class CompleteCommand extends Command { + constructor(cmd){ + super(); + return this.description("Get completions for given action from given command.").noGlobals().arguments("<action:string> [command...:string]").action(async (_, action, ...commandNames)=>{ + let parent; + const completeCommand = commandNames?.reduce((cmd, name)=>{ + parent = cmd; + const childCmd = cmd.getCommand(name, false); + if (!childCmd) { + throw new UnknownCompletionCommandError(name, cmd.getCommands()); + } + return childCmd; + }, cmd || this.getMainCommand()) ?? (cmd || this.getMainCommand()); + const completion = completeCommand.getCompletion(action); + const result = await completion?.complete(completeCommand, parent) ?? []; + if (result?.length) { + Deno.stdout.writeSync(new TextEncoder().encode(result.join("\n"))); + } + }).reset(); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC9jb21wbGV0aW9ucy9jb21wbGV0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcIi4uL2NvbW1hbmQudHNcIjtcbmltcG9ydCB7IFVua25vd25Db21wbGV0aW9uQ29tbWFuZEVycm9yIH0gZnJvbSBcIi4uL19lcnJvcnMudHNcIjtcbmltcG9ydCB0eXBlIHsgQ29tcGxldGlvbiB9IGZyb20gXCIuLi90eXBlcy50c1wiO1xuXG4vKiogRXhlY3V0ZSBhdXRvIGNvbXBsZXRpb24gbWV0aG9kIG9mIGNvbW1hbmQgYW5kIGFjdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBDb21wbGV0ZUNvbW1hbmQgZXh0ZW5kcyBDb21tYW5kPFxuICB2b2lkLFxuICB2b2lkLFxuICB2b2lkLFxuICBbYWN0aW9uOiBzdHJpbmcsIC4uLmNvbW1hbmROYW1lczogQXJyYXk8c3RyaW5nPl1cbj4ge1xuICBwdWJsaWMgY29uc3RydWN0b3IoY21kPzogQ29tbWFuZCkge1xuICAgIHN1cGVyKCk7XG4gICAgcmV0dXJuIHRoaXNcbiAgICAgIC5kZXNjcmlwdGlvbihcbiAgICAgICAgXCJHZXQgY29tcGxldGlvbnMgZm9yIGdpdmVuIGFjdGlvbiBmcm9tIGdpdmVuIGNvbW1hbmQuXCIsXG4gICAgICApXG4gICAgICAubm9HbG9iYWxzKClcbiAgICAgIC5hcmd1bWVudHMoXCI8YWN0aW9uOnN0cmluZz4gW2NvbW1hbmQuLi46c3RyaW5nXVwiKVxuICAgICAgLmFjdGlvbihhc3luYyAoXywgYWN0aW9uOiBzdHJpbmcsIC4uLmNvbW1hbmROYW1lczogQXJyYXk8c3RyaW5nPikgPT4ge1xuICAgICAgICBsZXQgcGFyZW50OiBDb21tYW5kIHwgdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBjb21wbGV0ZUNvbW1hbmQ6IENvbW1hbmQgPSBjb21tYW5kTmFtZXNcbiAgICAgICAgICA/LnJlZHVjZSgoY21kOiBDb21tYW5kLCBuYW1lOiBzdHJpbmcpOiBDb21tYW5kID0+IHtcbiAgICAgICAgICAgIHBhcmVudCA9IGNtZDtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkQ21kOiBDb21tYW5kIHwgdW5kZWZpbmVkID0gY21kLmdldENvbW1hbmQobmFtZSwgZmFsc2UpO1xuICAgICAgICAgICAgaWYgKCFjaGlsZENtZCkge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgVW5rbm93bkNvbXBsZXRpb25Db21tYW5kRXJyb3IobmFtZSwgY21kLmdldENvbW1hbmRzKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNoaWxkQ21kO1xuICAgICAgICAgIH0sIGNtZCB8fCB0aGlzLmdldE1haW5Db21tYW5kKCkpID8/IChjbWQgfHwgdGhpcy5nZXRNYWluQ29tbWFuZCgpKTtcblxuICAgICAgICBjb25zdCBjb21wbGV0aW9uOiBDb21wbGV0aW9uIHwgdW5kZWZpbmVkID0gY29tcGxldGVDb21tYW5kXG4gICAgICAgICAgLmdldENvbXBsZXRpb24oYWN0aW9uKTtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPiA9XG4gICAgICAgICAgYXdhaXQgY29tcGxldGlvbj8uY29tcGxldGUoY29tcGxldGVDb21tYW5kLCBwYXJlbnQpID8/IFtdO1xuXG4gICAgICAgIGlmIChyZXN1bHQ/Lmxlbmd0aCkge1xuICAgICAgICAgIERlbm8uc3Rkb3V0LndyaXRlU3luYyhuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUocmVzdWx0LmpvaW4oXCJcXG5cIikpKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5yZXNldCgpO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxPQUFPLFFBQVEsZ0JBQWdCO0FBQ3hDLFNBQVMsNkJBQTZCLFFBQVEsZ0JBQWdCO0FBRzlELDBEQUEwRCxHQUMxRCxPQUFPLE1BQU0sd0JBQXdCO0VBTW5DLFlBQW1CLEdBQWEsQ0FBRTtJQUNoQyxLQUFLO0lBQ0wsT0FBTyxJQUFJLENBQ1IsV0FBVyxDQUNWLHdEQUVELFNBQVMsR0FDVCxTQUFTLENBQUMsdUNBQ1YsTUFBTSxDQUFDLE9BQU8sR0FBRyxRQUFnQixHQUFHO01BQ25DLElBQUk7TUFDSixNQUFNLGtCQUEyQixjQUM3QixPQUFPLENBQUMsS0FBYztRQUN0QixTQUFTO1FBQ1QsTUFBTSxXQUFnQyxJQUFJLFVBQVUsQ0FBQyxNQUFNO1FBQzNELElBQUksQ0FBQyxVQUFVO1VBQ2IsTUFBTSxJQUFJLDhCQUE4QixNQUFNLElBQUksV0FBVztRQUMvRDtRQUNBLE9BQU87TUFDVCxHQUFHLE9BQU8sSUFBSSxDQUFDLGNBQWMsT0FBTyxDQUFDLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRTtNQUVuRSxNQUFNLGFBQXFDLGdCQUN4QyxhQUFhLENBQUM7TUFDakIsTUFBTSxTQUNKLE1BQU0sWUFBWSxTQUFTLGlCQUFpQixXQUFXLEVBQUU7TUFFM0QsSUFBSSxRQUFRLFFBQVE7UUFDbEIsS0FBSyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksY0FBYyxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUM7TUFDN0Q7SUFDRixHQUNDLEtBQUs7RUFDVjtBQUNGIn0= +// denoCacheMetadata=11474056545913792422,16087726906567537342
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/c6b2811f36fa978537367cc3f928d87013f4bd005a8194a9c38c37e02a366ea9.js b/vendor/gen/https/deno.land/c6b2811f36fa978537367cc3f928d87013f4bd005a8194a9c38c37e02a366ea9.js new file mode 100644 index 0000000..33b685b --- /dev/null +++ b/vendor/gen/https/deno.land/c6b2811f36fa978537367cc3f928d87013f4bd005a8194a9c38c37e02a366ea9.js @@ -0,0 +1,9 @@ +import { read } from "../utils/read.ts"; +/** Load binary files, like images, audio, video, etc. */ export default async function binary(path) { + const content = await read(path, true); + return { + content + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS9sb2FkZXJzL2JpbmFyeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFkIH0gZnJvbSBcIi4uL3V0aWxzL3JlYWQudHNcIjtcblxuaW1wb3J0IHR5cGUgeyBSYXdEYXRhIH0gZnJvbSBcIi4uL2ZpbGUudHNcIjtcblxuLyoqIExvYWQgYmluYXJ5IGZpbGVzLCBsaWtlIGltYWdlcywgYXVkaW8sIHZpZGVvLCBldGMuICovXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBiaW5hcnkocGF0aDogc3RyaW5nKTogUHJvbWlzZTxSYXdEYXRhPiB7XG4gIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkKHBhdGgsIHRydWUpO1xuICByZXR1cm4geyBjb250ZW50IH07XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxJQUFJLFFBQVEsbUJBQW1CO0FBSXhDLHVEQUF1RCxHQUN2RCxlQUFlLGVBQWUsT0FBTyxJQUFZO0VBQy9DLE1BQU0sVUFBVSxNQUFNLEtBQUssTUFBTTtFQUNqQyxPQUFPO0lBQUU7RUFBUTtBQUNuQiJ9 +// denoCacheMetadata=3573475391158442298,12119431830607516521
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/c81f2bcd15b421c959318ba5ed1f59535e7affded9151d30ff55d8132c10533d.js b/vendor/gen/https/deno.land/c81f2bcd15b421c959318ba5ed1f59535e7affded9151d30ff55d8132c10533d.js new file mode 100644 index 0000000..3dbba72 --- /dev/null +++ b/vendor/gen/https/deno.land/c81f2bcd15b421c959318ba5ed1f59535e7affded9151d30ff55d8132c10533d.js @@ -0,0 +1,154 @@ +import { Node } from "./node.ts"; +import { HTMLCollection } from "./html-collection.ts"; +const NodeListFakeClass = (()=>{ + var _computedKey; + _computedKey = Symbol.hasInstance; + return class NodeList { + constructor(){ + throw new TypeError("Illegal constructor"); + } + static [_computedKey](value) { + return value.constructor === NodeListClass; + } + }; +})(); +export const nodeListMutatorSym = Symbol("nodeListMutatorSym"); +const nodeListCachedMutator = Symbol("nodeListCachedMutator"); +// Array methods that we need for NodeList mutator implementation +const { push, splice, slice, indexOf, filter } = Array.prototype; +// Implementation of a NodeList mutator +class NodeListMutatorImpl { + arrayInstance; + // There should only ever be one elementView per element. Element views + // are basically just the source of HTMLCollections/.children properties + // on elements that are always in sync with their .childNodes counterpart. + elementViews; + constructor(arrayInstance){ + this.arrayInstance = arrayInstance; + this.elementViews = []; + } + push(...items) { + // Copy the new items to the element view (if any) + for (const view of this.elementViews){ + for (const item of items){ + if (item.nodeType === Node.ELEMENT_NODE) { + push.call(view, item); + } + } + } + return push.call(this.arrayInstance, ...items); + } + splice(index, deleteCount = 0, ...items) { + // Delete and insert new elements in an element view (if any) + for (const view of this.elementViews){ + const toDelete = filter.call(slice.call(this.arrayInstance, index, index + deleteCount), (item)=>item.nodeType === Node.ELEMENT_NODE); + const toInsert = items.filter((item)=>item.nodeType === Node.ELEMENT_NODE); + // Find where to start splicing in the element view + let elementViewSpliceIndex = -1; + for(let idx = index; idx < this.arrayInstance.length; idx++){ + const item = this.arrayInstance[idx]; + if (item.nodeType === Node.ELEMENT_NODE) { + elementViewSpliceIndex = indexOf.call(view, item); + break; + } + } + // If no element is found just do everything at the end + // of the view + if (elementViewSpliceIndex === -1) { + elementViewSpliceIndex = view.length; + } + if (toDelete.length) { + splice.call(view, elementViewSpliceIndex, toDelete.length); + } + // Finally, insert all the found elements + splice.call(view, elementViewSpliceIndex, 0, ...toInsert); + } + return splice.call(this.arrayInstance, index, deleteCount, ...items); + } + indexOf(item, fromIndex = 0) { + return indexOf.call(this.arrayInstance, item, fromIndex); + } + indexOfElementsView(item, fromIndex = 0) { + return indexOf.call(this.elementsView(), item, fromIndex); + } + // Return the elements-only view for this NodeList. Creates one if + // it doesn't already exist. + elementsView() { + let view = this.elementViews[0]; + if (!view) { + view = new HTMLCollection(); + this.elementViews.push(view); + push.call(view, ...filter.call(this.arrayInstance, (item)=>item.nodeType === Node.ELEMENT_NODE)); + } + return view; + } +} +// We define the `NodeList` inside a closure to ensure that its +// `.name === "NodeList"` property stays intact, as we need to manipulate +// its prototype and completely change its TypeScript-recognized type. +const NodeListClass = (()=>{ + // @ts-ignore + class NodeList extends Array { + forEach(cb, thisArg) { + super.forEach(cb, thisArg); + } + item(index) { + return this[index] ?? null; + } + [nodeListMutatorSym]() { + const cachedMutator = this[nodeListCachedMutator]; + if (cachedMutator) { + return cachedMutator; + } else { + const cachedMutator = new NodeListMutatorImpl(this); + this[nodeListCachedMutator] = cachedMutator; + return cachedMutator; + } + } + toString() { + return "[object NodeList]"; + } + } + return NodeList; +})(); +for (const staticMethod of [ + "from", + "isArray", + "of" +]){ + NodeListClass[staticMethod] = undefined; +} +for (const instanceMethod of [ + "concat", + "copyWithin", + "every", + "fill", + "filter", + "find", + "findIndex", + "flat", + "flatMap", + "includes", + "indexOf", + "join", + "lastIndexOf", + "map", + "pop", + "push", + "reduce", + "reduceRight", + "reverse", + "shift", + "slice", + "some", + "sort", + "splice", + "toLocaleString", + "unshift" +]){ + NodeListClass.prototype[instanceMethod] = undefined; +} +export const NodeList = NodeListClass; +export const NodeListPublic = NodeListFakeClass; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvZGVub19kb21AdjAuMS40OS9zcmMvZG9tL25vZGUtbGlzdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb2RlIH0gZnJvbSBcIi4vbm9kZS50c1wiO1xuaW1wb3J0IHsgSFRNTENvbGxlY3Rpb24gfSBmcm9tIFwiLi9odG1sLWNvbGxlY3Rpb24udHNcIjtcblxuY29uc3QgTm9kZUxpc3RGYWtlQ2xhc3M6IGFueSA9ICgoKSA9PiB7XG4gIHJldHVybiBjbGFzcyBOb2RlTGlzdCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSWxsZWdhbCBjb25zdHJ1Y3RvclwiKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgW1N5bWJvbC5oYXNJbnN0YW5jZV0odmFsdWU6IGFueSkge1xuICAgICAgcmV0dXJuIHZhbHVlLmNvbnN0cnVjdG9yID09PSBOb2RlTGlzdENsYXNzO1xuICAgIH1cbiAgfTtcbn0pKCk7XG5cbmV4cG9ydCBjb25zdCBub2RlTGlzdE11dGF0b3JTeW0gPSBTeW1ib2woXCJub2RlTGlzdE11dGF0b3JTeW1cIik7XG5jb25zdCBub2RlTGlzdENhY2hlZE11dGF0b3IgPSBTeW1ib2woXCJub2RlTGlzdENhY2hlZE11dGF0b3JcIik7XG5cbi8vIEFycmF5IG1ldGhvZHMgdGhhdCB3ZSBuZWVkIGZvciBOb2RlTGlzdCBtdXRhdG9yIGltcGxlbWVudGF0aW9uXG5jb25zdCB7IHB1c2gsIHNwbGljZSwgc2xpY2UsIGluZGV4T2YsIGZpbHRlciB9ID0gQXJyYXkucHJvdG90eXBlO1xuXG4vLyBJbXBsZW1lbnRhdGlvbiBvZiBhIE5vZGVMaXN0IG11dGF0b3JcbmNsYXNzIE5vZGVMaXN0TXV0YXRvckltcGwge1xuICAvLyBUaGVyZSBzaG91bGQgb25seSBldmVyIGJlIG9uZSBlbGVtZW50VmlldyBwZXIgZWxlbWVudC4gRWxlbWVudCB2aWV3c1xuICAvLyBhcmUgYmFzaWNhbGx5IGp1c3QgdGhlIHNvdXJjZSBvZiBIVE1MQ29sbGVjdGlvbnMvLmNoaWxkcmVuIHByb3BlcnRpZXNcbiAgLy8gb24gZWxlbWVudHMgdGhhdCBhcmUgYWx3YXlzIGluIHN5bmMgd2l0aCB0aGVpciAuY2hpbGROb2RlcyBjb3VudGVycGFydC5cbiAgZWxlbWVudFZpZXdzOiBhbnlbXVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGFycmF5SW5zdGFuY2U6IGFueVtdLFxuICApIHt9XG5cbiAgcHVzaCguLi5pdGVtczogYW55W10pIHtcbiAgICAvLyBDb3B5IHRoZSBuZXcgaXRlbXMgdG8gdGhlIGVsZW1lbnQgdmlldyAoaWYgYW55KVxuICAgIGZvciAoY29uc3QgdmlldyBvZiB0aGlzLmVsZW1lbnRWaWV3cykge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgIGlmIChpdGVtLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkge1xuICAgICAgICAgIHB1c2guY2FsbCh2aWV3LCBpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwdXNoLmNhbGwodGhpcy5hcnJheUluc3RhbmNlLCAuLi5pdGVtcyk7XG4gIH1cblxuICBzcGxpY2UoaW5kZXg6IG51bWJlciwgZGVsZXRlQ291bnQgPSAwLCAuLi5pdGVtczogYW55W10pIHtcbiAgICAvLyBEZWxldGUgYW5kIGluc2VydCBuZXcgZWxlbWVudHMgaW4gYW4gZWxlbWVudCB2aWV3IChpZiBhbnkpXG4gICAgZm9yIChjb25zdCB2aWV3IG9mIHRoaXMuZWxlbWVudFZpZXdzKSB7XG4gICAgICBjb25zdCB0b0RlbGV0ZSA9IGZpbHRlci5jYWxsKFxuICAgICAgICBzbGljZS5jYWxsKHRoaXMuYXJyYXlJbnN0YW5jZSwgaW5kZXgsIGluZGV4ICsgZGVsZXRlQ291bnQpLFxuICAgICAgICAoaXRlbSkgPT4gaXRlbS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUsXG4gICAgICApO1xuXG4gICAgICBjb25zdCB0b0luc2VydCA9IGl0ZW1zLmZpbHRlcigoaXRlbSkgPT5cbiAgICAgICAgaXRlbS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREVcbiAgICAgICk7XG5cbiAgICAgIC8vIEZpbmQgd2hlcmUgdG8gc3RhcnQgc3BsaWNpbmcgaW4gdGhlIGVsZW1lbnQgdmlld1xuICAgICAgbGV0IGVsZW1lbnRWaWV3U3BsaWNlSW5kZXggPSAtMTtcbiAgICAgIGZvciAobGV0IGlkeCA9IGluZGV4OyBpZHggPCB0aGlzLmFycmF5SW5zdGFuY2UubGVuZ3RoOyBpZHgrKykge1xuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5hcnJheUluc3RhbmNlW2lkeF07XG5cbiAgICAgICAgaWYgKGl0ZW0ubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFKSB7XG4gICAgICAgICAgZWxlbWVudFZpZXdTcGxpY2VJbmRleCA9IGluZGV4T2YuY2FsbCh2aWV3LCBpdGVtKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJZiBubyBlbGVtZW50IGlzIGZvdW5kIGp1c3QgZG8gZXZlcnl0aGluZyBhdCB0aGUgZW5kXG4gICAgICAvLyBvZiB0aGUgdmlld1xuICAgICAgaWYgKGVsZW1lbnRWaWV3U3BsaWNlSW5kZXggPT09IC0xKSB7XG4gICAgICAgIGVsZW1lbnRWaWV3U3BsaWNlSW5kZXggPSB2aWV3Lmxlbmd0aDtcbiAgICAgIH1cblxuICAgICAgaWYgKHRvRGVsZXRlLmxlbmd0aCkge1xuICAgICAgICBzcGxpY2UuY2FsbCh2aWV3LCBlbGVtZW50Vmlld1NwbGljZUluZGV4LCB0b0RlbGV0ZS5sZW5ndGgpO1xuICAgICAgfVxuXG4gICAgICAvLyBGaW5hbGx5LCBpbnNlcnQgYWxsIHRoZSBmb3VuZCBlbGVtZW50c1xuICAgICAgc3BsaWNlLmNhbGwodmlldywgZWxlbWVudFZpZXdTcGxpY2VJbmRleCwgMCwgLi4udG9JbnNlcnQpO1xuICAgIH1cblxuICAgIHJldHVybiBzcGxpY2UuY2FsbCh0aGlzLmFycmF5SW5zdGFuY2UsIGluZGV4LCBkZWxldGVDb3VudCwgLi4uaXRlbXMpO1xuICB9XG5cbiAgaW5kZXhPZihpdGVtOiBhbnksIGZyb21JbmRleCA9IDApIHtcbiAgICByZXR1cm4gaW5kZXhPZi5jYWxsKHRoaXMuYXJyYXlJbnN0YW5jZSwgaXRlbSwgZnJvbUluZGV4KTtcbiAgfVxuXG4gIGluZGV4T2ZFbGVtZW50c1ZpZXcoaXRlbTogYW55LCBmcm9tSW5kZXggPSAwKSB7XG4gICAgcmV0dXJuIGluZGV4T2YuY2FsbCh0aGlzLmVsZW1lbnRzVmlldygpLCBpdGVtLCBmcm9tSW5kZXgpO1xuICB9XG5cbiAgLy8gUmV0dXJuIHRoZSBlbGVtZW50cy1vbmx5IHZpZXcgZm9yIHRoaXMgTm9kZUxpc3QuIENyZWF0ZXMgb25lIGlmXG4gIC8vIGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdC5cbiAgZWxlbWVudHNWaWV3KCkge1xuICAgIGxldCB2aWV3ID0gdGhpcy5lbGVtZW50Vmlld3NbMF07XG5cbiAgICBpZiAoIXZpZXcpIHtcbiAgICAgIHZpZXcgPSBuZXcgSFRNTENvbGxlY3Rpb24oKSBhcyBhbnkgYXMgYW55W107XG4gICAgICB0aGlzLmVsZW1lbnRWaWV3cy5wdXNoKHZpZXcpO1xuICAgICAgcHVzaC5jYWxsKFxuICAgICAgICB2aWV3LFxuICAgICAgICAuLi5maWx0ZXIuY2FsbChcbiAgICAgICAgICB0aGlzLmFycmF5SW5zdGFuY2UsXG4gICAgICAgICAgKGl0ZW0pID0+IGl0ZW0ubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmlldztcbiAgfVxufVxuXG4vLyBXZSBkZWZpbmUgdGhlIGBOb2RlTGlzdGAgaW5zaWRlIGEgY2xvc3VyZSB0byBlbnN1cmUgdGhhdCBpdHNcbi8vIGAubmFtZSA9PT0gXCJOb2RlTGlzdFwiYCBwcm9wZXJ0eSBzdGF5cyBpbnRhY3QsIGFzIHdlIG5lZWQgdG8gbWFuaXB1bGF0ZVxuLy8gaXRzIHByb3RvdHlwZSBhbmQgY29tcGxldGVseSBjaGFuZ2UgaXRzIFR5cGVTY3JpcHQtcmVjb2duaXplZCB0eXBlLlxuY29uc3QgTm9kZUxpc3RDbGFzczogYW55ID0gKCgpID0+IHtcbiAgLy8gQHRzLWlnbm9yZVxuICBjbGFzcyBOb2RlTGlzdDxUID0gTm9kZT4gZXh0ZW5kcyBBcnJheTxUPiB7XG4gICAgb3ZlcnJpZGUgZm9yRWFjaChcbiAgICAgIGNiOiAobm9kZTogVCwgaW5kZXg6IG51bWJlciwgbm9kZUxpc3Q6IFRbXSkgPT4gdm9pZCxcbiAgICAgIHRoaXNBcmc/OiB1bmtub3duLFxuICAgICkge1xuICAgICAgc3VwZXIuZm9yRWFjaChjYiwgdGhpc0FyZyk7XG4gICAgfVxuXG4gICAgaXRlbShpbmRleDogbnVtYmVyKTogVCB8IG51bGwge1xuICAgICAgcmV0dXJuIHRoaXNbaW5kZXhdID8/IG51bGw7XG4gICAgfVxuXG4gICAgW25vZGVMaXN0TXV0YXRvclN5bV0oKSB7XG4gICAgICBjb25zdCBjYWNoZWRNdXRhdG9yID0gKHRoaXMgYXMgYW55KVtub2RlTGlzdENhY2hlZE11dGF0b3JdO1xuXG4gICAgICBpZiAoY2FjaGVkTXV0YXRvcikge1xuICAgICAgICByZXR1cm4gY2FjaGVkTXV0YXRvcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNhY2hlZE11dGF0b3IgPSBuZXcgTm9kZUxpc3RNdXRhdG9ySW1wbCh0aGlzKTtcbiAgICAgICAgKHRoaXMgYXMgYW55KVtub2RlTGlzdENhY2hlZE11dGF0b3JdID0gY2FjaGVkTXV0YXRvcjtcbiAgICAgICAgcmV0dXJuIGNhY2hlZE11dGF0b3I7XG4gICAgICB9XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gXCJbb2JqZWN0IE5vZGVMaXN0XVwiO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBOb2RlTGlzdDtcbn0pKCk7XG5cbmZvciAoXG4gIGNvbnN0IHN0YXRpY01ldGhvZCBvZiBbXG4gICAgXCJmcm9tXCIsXG4gICAgXCJpc0FycmF5XCIsXG4gICAgXCJvZlwiLFxuICBdXG4pIHtcbiAgTm9kZUxpc3RDbGFzc1tzdGF0aWNNZXRob2RdID0gdW5kZWZpbmVkO1xufVxuXG5mb3IgKFxuICBjb25zdCBpbnN0YW5jZU1ldGhvZCBvZiBbXG4gICAgXCJjb25jYXRcIixcbiAgICBcImNvcHlXaXRoaW5cIixcbiAgICBcImV2ZXJ5XCIsXG4gICAgXCJmaWxsXCIsXG4gICAgXCJmaWx0ZXJcIixcbiAgICBcImZpbmRcIixcbiAgICBcImZpbmRJbmRleFwiLFxuICAgIFwiZmxhdFwiLFxuICAgIFwiZmxhdE1hcFwiLFxuICAgIFwiaW5jbHVkZXNcIixcbiAgICBcImluZGV4T2ZcIixcbiAgICBcImpvaW5cIixcbiAgICBcImxhc3RJbmRleE9mXCIsXG4gICAgXCJtYXBcIixcbiAgICBcInBvcFwiLFxuICAgIFwicHVzaFwiLFxuICAgIFwicmVkdWNlXCIsXG4gICAgXCJyZWR1Y2VSaWdodFwiLFxuICAgIFwicmV2ZXJzZVwiLFxuICAgIFwic2hpZnRcIixcbiAgICBcInNsaWNlXCIsXG4gICAgXCJzb21lXCIsXG4gICAgXCJzb3J0XCIsXG4gICAgXCJzcGxpY2VcIixcbiAgICBcInRvTG9jYWxlU3RyaW5nXCIsXG4gICAgXCJ1bnNoaWZ0XCIsXG4gIF1cbikge1xuICBOb2RlTGlzdENsYXNzLnByb3RvdHlwZVtpbnN0YW5jZU1ldGhvZF0gPSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZUxpc3Q8VCBleHRlbmRzIE5vZGUgPSBOb2RlPiB7XG4gIG5ldyAoKTogTm9kZUxpc3Q7XG4gIHJlYWRvbmx5IFtpbmRleDogbnVtYmVyXTogVDtcbiAgcmVhZG9ubHkgbGVuZ3RoOiBudW1iZXI7XG4gIFtTeW1ib2wuaXRlcmF0b3JdKCk6IEdlbmVyYXRvcjxUPjtcblxuICBpdGVtKGluZGV4OiBudW1iZXIpOiBUO1xuICBmb3JFYWNoKFxuICAgIGNiOiAobm9kZTogVCwgaW5kZXg6IG51bWJlciwgbm9kZUxpc3Q6IFRbXSkgPT4gdm9pZCxcbiAgICB0aGlzQXJnPzogTm9kZUxpc3QgfCB1bmRlZmluZWQsXG4gICk6IHZvaWQ7XG4gIFtub2RlTGlzdE11dGF0b3JTeW1dKCk6IE5vZGVMaXN0TXV0YXRvcjtcbn1cblxuZXhwb3J0IHR5cGUgTm9kZUxpc3RQdWJsaWMgPSBPbWl0PE5vZGVMaXN0LCB0eXBlb2Ygbm9kZUxpc3RNdXRhdG9yU3ltPjtcbmV4cG9ydCBpbnRlcmZhY2UgTm9kZUxpc3RNdXRhdG9yIHtcbiAgcHVzaCguLi5ub2RlczogTm9kZVtdKTogbnVtYmVyO1xuICBzcGxpY2Uoc3RhcnQ6IG51bWJlciwgZGVsZXRlQ291bnQ/OiBudW1iZXIsIC4uLml0ZW1zOiBOb2RlW10pOiBOb2RlW107XG4gIGluZGV4T2Yobm9kZTogTm9kZSwgZnJvbUluZGV4PzogbnVtYmVyIHwgdW5kZWZpbmVkKTogbnVtYmVyO1xuICBpbmRleE9mRWxlbWVudHNWaWV3KG5vZGU6IE5vZGUsIGZyb21JbmRleD86IG51bWJlciB8IHVuZGVmaW5lZCk6IG51bWJlcjtcbiAgZWxlbWVudHNWaWV3KCk6IEhUTUxDb2xsZWN0aW9uO1xufVxuXG5leHBvcnQgY29uc3QgTm9kZUxpc3QgPSA8Tm9kZUxpc3Q+IE5vZGVMaXN0Q2xhc3M7XG5leHBvcnQgY29uc3QgTm9kZUxpc3RQdWJsaWMgPSA8Tm9kZUxpc3RQdWJsaWM+IE5vZGVMaXN0RmFrZUNsYXNzO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsSUFBSSxRQUFRLFlBQVk7QUFDakMsU0FBUyxjQUFjLFFBQVEsdUJBQXVCO0FBRXRELE1BQU0sb0JBQXlCLENBQUM7O2lCQU1wQixPQUFPLFdBQVc7RUFMNUIsT0FBTyxNQUFNO0lBQ1gsYUFBYztNQUNaLE1BQU0sSUFBSSxVQUFVO0lBQ3RCO0lBRUEsc0JBQTRCLEtBQVUsRUFBRTtNQUN0QyxP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 +// denoCacheMetadata=17738515758738854473,1878776856068035289
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/c8a4ba18f007f8fce03e4d69e94fe7ac343998375f340b66b9ec791160b032f7.js b/vendor/gen/https/deno.land/c8a4ba18f007f8fce03e4d69e94fe7ac343998375f340b66b9ec791160b032f7.js new file mode 100644 index 0000000..0955f15 --- /dev/null +++ b/vendor/gen/https/deno.land/c8a4ba18f007f8fce03e4d69e94fe7ac343998375f340b66b9ec791160b032f7.js @@ -0,0 +1,19 @@ +export default function() { + return (env)=>{ + env.tags.push(importTag); + }; +} +function importTag(env, code) { + if (!code.startsWith("import ")) { + return; + } + const match = code?.match(/^import\s+(\{[\s|\S]*\}|\w+)\s+from\s+(.+)$/); + if (!match) { + throw new Error(`Invalid import: ${code}`); + } + const [, vars, file] = match; + const { dataVarname } = env.options; + return `let ${vars} = await __env.run(${file}, {...${dataVarname}}, __file);`; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9wbHVnaW5zL2ltcG9ydC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVudmlyb25tZW50LCBQbHVnaW4gfSBmcm9tIFwiLi4vc3JjL2Vudmlyb25tZW50LnRzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpOiBQbHVnaW4ge1xuICByZXR1cm4gKGVudjogRW52aXJvbm1lbnQpID0+IHtcbiAgICBlbnYudGFncy5wdXNoKGltcG9ydFRhZyk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGltcG9ydFRhZyhcbiAgZW52OiBFbnZpcm9ubWVudCxcbiAgY29kZTogc3RyaW5nLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFjb2RlLnN0YXJ0c1dpdGgoXCJpbXBvcnQgXCIpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgbWF0Y2ggPSBjb2RlPy5tYXRjaChcbiAgICAvXmltcG9ydFxccysoXFx7W1xcc3xcXFNdKlxcfXxcXHcrKVxccytmcm9tXFxzKyguKykkLyxcbiAgKTtcblxuICBpZiAoIW1hdGNoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGltcG9ydDogJHtjb2RlfWApO1xuICB9XG5cbiAgY29uc3QgWywgdmFycywgZmlsZV0gPSBtYXRjaDtcbiAgY29uc3QgeyBkYXRhVmFybmFtZSB9ID0gZW52Lm9wdGlvbnM7XG4gIHJldHVybiBgbGV0ICR7dmFyc30gPSBhd2FpdCBfX2Vudi5ydW4oJHtmaWxlfSwgey4uLiR7ZGF0YVZhcm5hbWV9fSwgX19maWxlKTtgO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLGVBQWU7RUFDYixPQUFPLENBQUM7SUFDTixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7RUFDaEI7QUFDRjtBQUVBLFNBQVMsVUFDUCxHQUFnQixFQUNoQixJQUFZO0VBRVosSUFBSSxDQUFDLEtBQUssVUFBVSxDQUFDLFlBQVk7SUFDL0I7RUFDRjtFQUVBLE1BQU0sUUFBUSxNQUFNLE1BQ2xCO0VBR0YsSUFBSSxDQUFDLE9BQU87SUFDVixNQUFNLElBQUksTUFBTSxDQUFDLGdCQUFnQixFQUFFLE1BQU07RUFDM0M7RUFFQSxNQUFNLEdBQUcsTUFBTSxLQUFLLEdBQUc7RUFDdkIsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksT0FBTztFQUNuQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssbUJBQW1CLEVBQUUsS0FBSyxNQUFNLEVBQUUsWUFBWSxXQUFXLENBQUM7QUFDL0UifQ== +// denoCacheMetadata=7803614320253404675,2092031223443666434
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/ca1ca5971235e65015567cd6b776958e0c5202d4d0cd423f01b497ee04b199c6.js b/vendor/gen/https/deno.land/ca1ca5971235e65015567cd6b776958e0c5202d4d0cd423f01b497ee04b199c6.js new file mode 100644 index 0000000..13deef3 --- /dev/null +++ b/vendor/gen/https/deno.land/ca1ca5971235e65015567cd6b776958e0c5202d4d0cd423f01b497ee04b199c6.js @@ -0,0 +1,3 @@ +export * from "jsr:@std/toml@1.0.6"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvZGVwcy90b21sLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCJqc3I6QHN0ZC90b21sQDEuMC42XCI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IifQ== +// denoCacheMetadata=2417987387083674366,18354590075118759347
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/cdce2b3c5cbf354be962968c408d5adf43c4648dd285c23f64d5dc447c75d6d5.js b/vendor/gen/https/deno.land/cdce2b3c5cbf354be962968c408d5adf43c4648dd285c23f64d5dc447c75d6d5.js new file mode 100644 index 0000000..df276ca --- /dev/null +++ b/vendor/gen/https/deno.land/cdce2b3c5cbf354be962968c408d5adf43c4648dd285c23f64d5dc447c75d6d5.js @@ -0,0 +1,55 @@ +import { emptyDir, ensureDir } from "../deps/fs.ts"; +import { posix } from "../deps/path.ts"; +import { md5 } from "./utils/digest.ts"; +/** + * Class to manage cache in the _cache folder + */ export default class Cache { + #folder; + constructor(options){ + this.#folder = options.folder; + } + /** Save some content in the cache folder */ async set(key, value) { + const path = await this.getPath(key); + await ensureDir(posix.dirname(path)); + if (typeof value === "string") { + Deno.writeTextFileSync(path, value); + } else { + Deno.writeFileSync(path, value); + } + } + /** Remove content from the cache folder */ async remove(key) { + try { + Deno.removeSync(await this.getPath(key)); + } catch { + // Ignore + } + } + async getPath(key) { + const paths = await Promise.all(key.map((value)=>{ + if (value instanceof Uint8Array || typeof value === "string") { + return md5(value); + } + return md5(JSON.stringify(value)); + })); + return posix.join(this.#folder, ...paths); + } + /** Get the content from the cache folder as Uint8Array */ async getBytes(key) { + try { + return Deno.readFileSync(await this.getPath(key)); + } catch { + // Ignore + } + } + /** Get the content from the cache folder as string */ async getText(key) { + try { + return Deno.readTextFileSync(await this.getPath(key)); + } catch { + // Ignore + } + } + /** Empty the cache folder */ async clear() { + await emptyDir(this.#folder); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS9jYWNoZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlbXB0eURpciwgZW5zdXJlRGlyIH0gZnJvbSBcIi4uL2RlcHMvZnMudHNcIjtcbmltcG9ydCB7IHBvc2l4IH0gZnJvbSBcIi4uL2RlcHMvcGF0aC50c1wiO1xuaW1wb3J0IHsgbWQ1IH0gZnJvbSBcIi4vdXRpbHMvZGlnZXN0LnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIC8qKiBUaGUgZm9sZGVyIHRvIGxvYWQgdGhlIGZpbGVzIGZyb20gKi9cbiAgZm9sZGVyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ2xhc3MgdG8gbWFuYWdlIGNhY2hlIGluIHRoZSBfY2FjaGUgZm9sZGVyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENhY2hlIHtcbiAgI2ZvbGRlcjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICB0aGlzLiNmb2xkZXIgPSBvcHRpb25zLmZvbGRlcjtcbiAgfVxuXG4gIC8qKiBTYXZlIHNvbWUgY29udGVudCBpbiB0aGUgY2FjaGUgZm9sZGVyICovXG4gIGFzeW5jIHNldChcbiAgICBrZXk6IHVua25vd25bXSxcbiAgICB2YWx1ZTogc3RyaW5nIHwgVWludDhBcnJheSxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcGF0aCA9IGF3YWl0IHRoaXMuZ2V0UGF0aChrZXkpO1xuXG4gICAgYXdhaXQgZW5zdXJlRGlyKHBvc2l4LmRpcm5hbWUocGF0aCkpO1xuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgRGVuby53cml0ZVRleHRGaWxlU3luYyhwYXRoLCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIERlbm8ud3JpdGVGaWxlU3luYyhwYXRoLCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJlbW92ZSBjb250ZW50IGZyb20gdGhlIGNhY2hlIGZvbGRlciAqL1xuICBhc3luYyByZW1vdmUoa2V5OiB1bmtub3duW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgRGVuby5yZW1vdmVTeW5jKGF3YWl0IHRoaXMuZ2V0UGF0aChrZXkpKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIElnbm9yZVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldFBhdGgoa2V5OiB1bmtub3duW10pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHBhdGhzID0gYXdhaXQgUHJvbWlzZS5hbGwoa2V5Lm1hcCgodmFsdWUpID0+IHtcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkgfHwgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJldHVybiBtZDUodmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1kNShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICAgIH0pKTtcbiAgICByZXR1cm4gcG9zaXguam9pbih0aGlzLiNmb2xkZXIsIC4uLnBhdGhzKTtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGNvbnRlbnQgZnJvbSB0aGUgY2FjaGUgZm9sZGVyIGFzIFVpbnQ4QXJyYXkgKi9cbiAgYXN5bmMgZ2V0Qnl0ZXMoa2V5OiB1bmtub3duW10pOiBQcm9taXNlPFVpbnQ4QXJyYXkgfCB1bmRlZmluZWQ+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIERlbm8ucmVhZEZpbGVTeW5jKGF3YWl0IHRoaXMuZ2V0UGF0aChrZXkpKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIElnbm9yZVxuICAgIH1cbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGNvbnRlbnQgZnJvbSB0aGUgY2FjaGUgZm9sZGVyIGFzIHN0cmluZyAqL1xuICBhc3luYyBnZXRUZXh0KGtleTogdW5rbm93bltdKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIERlbm8ucmVhZFRleHRGaWxlU3luYyhhd2FpdCB0aGlzLmdldFBhdGgoa2V5KSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBJZ25vcmVcbiAgICB9XG4gIH1cblxuICAvKiogRW1wdHkgdGhlIGNhY2hlIGZvbGRlciAqL1xuICBhc3luYyBjbGVhcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBlbXB0eURpcih0aGlzLiNmb2xkZXIpO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxRQUFRLEVBQUUsU0FBUyxRQUFRLGdCQUFnQjtBQUNwRCxTQUFTLEtBQUssUUFBUSxrQkFBa0I7QUFDeEMsU0FBUyxHQUFHLFFBQVEsb0JBQW9CO0FBT3hDOztDQUVDLEdBQ0QsZUFBZSxNQUFNO0VBQ25CLENBQUEsTUFBTyxDQUFTO0VBRWhCLFlBQVksT0FBZ0IsQ0FBRTtJQUM1QixJQUFJLENBQUMsQ0FBQSxNQUFPLEdBQUcsUUFBUSxNQUFNO0VBQy9CO0VBRUEsMENBQTBDLEdBQzFDLE1BQU0sSUFDSixHQUFjLEVBQ2QsS0FBMEIsRUFDWDtJQUNmLE1BQU0sT0FBTyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUM7SUFFaEMsTUFBTSxVQUFVLE1BQU0sT0FBTyxDQUFDO0lBRTlCLElBQUksT0FBTyxVQUFVLFVBQVU7TUFDN0IsS0FBSyxpQkFBaUIsQ0FBQyxNQUFNO0lBQy9CLE9BQU87TUFDTCxLQUFLLGFBQWEsQ0FBQyxNQUFNO0lBQzNCO0VBQ0Y7RUFFQSx5Q0FBeUMsR0FDekMsTUFBTSxPQUFPLEdBQWMsRUFBaUI7SUFDMUMsSUFBSTtNQUNGLEtBQUssVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNyQyxFQUFFLE9BQU07SUFDTixTQUFTO0lBQ1g7RUFDRjtFQUVBLE1BQU0sUUFBUSxHQUFjLEVBQW1CO0lBQzdDLE1BQU0sUUFBUSxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7TUFDdkMsSUFBSSxpQkFBaUIsY0FBYyxPQUFPLFVBQVUsVUFBVTtRQUM1RCxPQUFPLElBQUk7TUFDYjtNQUNBLE9BQU8sSUFBSSxLQUFLLFNBQVMsQ0FBQztJQUM1QjtJQUNBLE9BQU8sTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsTUFBTyxLQUFLO0VBQ3JDO0VBRUEsd0RBQXdELEdBQ3hELE1BQU0sU0FBUyxHQUFjLEVBQW1DO0lBQzlELElBQUk7TUFDRixPQUFPLEtBQUssWUFBWSxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUM5QyxFQUFFLE9BQU07SUFDTixTQUFTO0lBQ1g7RUFDRjtFQUVBLG9EQUFvRCxHQUNwRCxNQUFNLFFBQVEsR0FBYyxFQUErQjtJQUN6RCxJQUFJO01BQ0YsT0FBTyxLQUFLLGdCQUFnQixDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNsRCxFQUFFLE9BQU07SUFDTixTQUFTO0lBQ1g7RUFDRjtFQUVBLDJCQUEyQixHQUMzQixNQUFNLFFBQXVCO0lBQzNCLE1BQU0sU0FBUyxJQUFJLENBQUMsQ0FBQSxNQUFPO0VBQzdCO0FBQ0YifQ== +// denoCacheMetadata=8087946915304457175,18047961257805549373
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/cde923fbb86c5b350acd4c9ea35da65c063787df78adfe038efb54a1e5548fbd.js b/vendor/gen/https/deno.land/cde923fbb86c5b350acd4c9ea35da65c063787df78adfe038efb54a1e5548fbd.js new file mode 100644 index 0000000..7653a4f --- /dev/null +++ b/vendor/gen/https/deno.land/cde923fbb86c5b350acd4c9ea35da65c063787df78adfe038efb54a1e5548fbd.js @@ -0,0 +1,4 @@ +export * from "./key_code.ts"; +export * from "./key_codes.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1Ljcva2V5Y29kZS9tb2QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4va2V5X2NvZGUudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2tleV9jb2Rlcy50c1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCO0FBQzlCLGNBQWMsaUJBQWlCIn0= +// denoCacheMetadata=4309246912485632301,11561302231802313271
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/ce6ebdf888d5ac271720481c38a41e348b8ec9615375f66167d2b8a65da0e629.js b/vendor/gen/https/deno.land/ce6ebdf888d5ac271720481c38a41e348b8ec9615375f66167d2b8a65da0e629.js new file mode 100644 index 0000000..86dff04 --- /dev/null +++ b/vendor/gen/https/deno.land/ce6ebdf888d5ac271720481c38a41e348b8ec9615375f66167d2b8a65da0e629.js @@ -0,0 +1,9 @@ +/** + * Ugly solution to circular imports... FIXME: Make this better + */ export default { + Element: null, + Document: null, + DocumentFragment: null +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvZGVub19kb21AdjAuMS40OS9zcmMvZG9tL3V0aWxzLXR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRWxlbWVudCB9IGZyb20gXCIuL2VsZW1lbnQudHNcIjtcbmltcG9ydCB0eXBlIHsgRG9jdW1lbnQgfSBmcm9tIFwiLi9kb2N1bWVudC50c1wiO1xuaW1wb3J0IHR5cGUgeyBEb2N1bWVudEZyYWdtZW50IH0gZnJvbSBcIi4vZG9jdW1lbnQtZnJhZ21lbnQudHNcIjtcblxuLyoqXG4gKiBVZ2x5IHNvbHV0aW9uIHRvIGNpcmN1bGFyIGltcG9ydHMuLi4gRklYTUU6IE1ha2UgdGhpcyBiZXR0ZXJcbiAqL1xuZXhwb3J0IGRlZmF1bHQge1xuICBFbGVtZW50OiBudWxsIGFzIGFueSBhcyB0eXBlb2YgRWxlbWVudCxcbiAgRG9jdW1lbnQ6IG51bGwgYXMgYW55IGFzIHR5cGVvZiBEb2N1bWVudCxcbiAgRG9jdW1lbnRGcmFnbWVudDogbnVsbCBhcyBhbnkgYXMgdHlwZW9mIERvY3VtZW50RnJhZ21lbnQsXG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBOztDQUVDLEdBQ0QsZUFBZTtFQUNiLFNBQVM7RUFDVCxVQUFVO0VBQ1Ysa0JBQWtCO0FBQ3BCLEVBQUUifQ== +// denoCacheMetadata=2165924506836172908,10767109706866710134
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/ce75e5f4eb4244400bc774cee099115d5ff39780ead41332f7e0adaf3750dc07.js b/vendor/gen/https/deno.land/ce75e5f4eb4244400bc774cee099115d5ff39780ead41332f7e0adaf3750dc07.js new file mode 100644 index 0000000..11081ba --- /dev/null +++ b/vendor/gen/https/deno.land/ce75e5f4eb4244400bc774cee099115d5ff39780ead41332f7e0adaf3750dc07.js @@ -0,0 +1,152 @@ +import { getDefaultValue, getOption, paramCaseToCamelCase } from "./_utils.ts"; +import { ConflictingOptionError, DependingOptionError, MissingOptionValueError, MissingRequiredOptionError, OptionNotCombinableError, UnknownOptionError } from "./_errors.ts"; +/** + * Flags post validation. Validations that are not already done by the parser. + * + * @param ctx Parse context. + * @param opts Parse options. + * @param options Option name mappings: propertyName -> option + */ export function validateFlags(ctx, opts, options = new Map()) { + if (!opts.flags) { + return; + } + const defaultValues = setDefaultValues(ctx, opts); + const optionNames = Object.keys(ctx.flags); + if (!optionNames.length && opts.allowEmpty) { + return; + } + if (ctx.standalone) { + validateStandaloneOption(ctx, options, optionNames, defaultValues); + return; + } + for (const [name, option] of options){ + validateUnknownOption(option, opts); + validateConflictingOptions(ctx, option); + validateDependingOptions(ctx, option, defaultValues); + validateRequiredValues(ctx, option, name); + } + validateRequiredOptions(ctx, options, opts); +} +function validateUnknownOption(option, opts) { + if (!getOption(opts.flags ?? [], option.name)) { + throw new UnknownOptionError(option.name, opts.flags ?? []); + } +} +/** + * Adds all default values to ctx.flags and returns a boolean object map with + * only the default option names `{ [OptionName: string]: boolean }`. + */ function setDefaultValues(ctx, opts) { + const defaultValues = {}; + if (!opts.flags?.length) { + return defaultValues; + } + // Set default values + for (const option of opts.flags){ + let name; + let defaultValue = undefined; + // if --no-[flag] is present set --[flag] default value to true + if (option.name.startsWith("no-")) { + const propName = option.name.replace(/^no-/, ""); + if (typeof ctx.flags[propName] !== "undefined") { + continue; + } + const positiveOption = getOption(opts.flags, propName); + if (positiveOption) { + continue; + } + name = paramCaseToCamelCase(propName); + defaultValue = true; + } + if (!name) { + name = paramCaseToCamelCase(option.name); + } + const hasDefaultValue = (!opts.ignoreDefaults || typeof opts.ignoreDefaults[name] === "undefined") && typeof ctx.flags[name] === "undefined" && (typeof option.default !== "undefined" || typeof defaultValue !== "undefined"); + if (hasDefaultValue) { + ctx.flags[name] = getDefaultValue(option) ?? defaultValue; + defaultValues[option.name] = true; + if (typeof option.value === "function") { + ctx.flags[name] = option.value(ctx.flags[name]); + } + } + } + return defaultValues; +} +function validateStandaloneOption(ctx, options, optionNames, defaultValues) { + if (!ctx.standalone || optionNames.length === 1) { + return; + } + // Don't throw an error if all values are coming from the default option. + for (const [_, opt] of options){ + if (!defaultValues[opt.name] && opt !== ctx.standalone) { + throw new OptionNotCombinableError(ctx.standalone.name); + } + } +} +function validateConflictingOptions(ctx, option) { + if (!option.conflicts?.length) { + return; + } + for (const flag of option.conflicts){ + if (isset(flag, ctx.flags)) { + throw new ConflictingOptionError(option.name, flag); + } + } +} +function validateDependingOptions(ctx, option, defaultValues) { + if (!option.depends) { + return; + } + for (const flag of option.depends){ + // Don't throw an error if the value is coming from the default option. + if (!isset(flag, ctx.flags) && !defaultValues[option.name]) { + throw new DependingOptionError(option.name, flag); + } + } +} +function validateRequiredValues(ctx, option, name) { + if (!option.args) { + return; + } + const isArray = option.args.length > 1; + for(let i = 0; i < option.args.length; i++){ + const arg = option.args[i]; + if (!arg.requiredValue) { + continue; + } + const hasValue = isArray ? typeof ctx.flags[name][i] !== "undefined" : typeof ctx.flags[name] !== "undefined"; + if (!hasValue) { + throw new MissingOptionValueError(option.name); + } + } +} +function validateRequiredOptions(ctx, options, opts) { + if (!opts.flags?.length) { + return; + } + const optionsValues = [ + ...options.values() + ]; + for (const option of opts.flags){ + if (!option.required || paramCaseToCamelCase(option.name) in ctx.flags) { + continue; + } + const conflicts = option.conflicts ?? []; + const hasConflict = conflicts.find((flag)=>!!ctx.flags[flag]); + const hasConflicts = hasConflict || optionsValues.find((opt)=>opt.conflicts?.find((flag)=>flag === option.name)); + if (hasConflicts) { + continue; + } + throw new MissingRequiredOptionError(option.name); + } +} +/** + * Check if value exists for flag. + * @param flagName Flag name. + * @param flags Parsed values. + */ function isset(flagName, flags) { + const name = paramCaseToCamelCase(flagName); + // return typeof values[ name ] !== 'undefined' && values[ name ] !== false; + return typeof flags[name] !== "undefined"; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvZmxhZ3MvX3ZhbGlkYXRlX2ZsYWdzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldERlZmF1bHRWYWx1ZSwgZ2V0T3B0aW9uLCBwYXJhbUNhc2VUb0NhbWVsQ2FzZSB9IGZyb20gXCIuL191dGlscy50c1wiO1xuaW1wb3J0IHtcbiAgQ29uZmxpY3RpbmdPcHRpb25FcnJvcixcbiAgRGVwZW5kaW5nT3B0aW9uRXJyb3IsXG4gIE1pc3NpbmdPcHRpb25WYWx1ZUVycm9yLFxuICBNaXNzaW5nUmVxdWlyZWRPcHRpb25FcnJvcixcbiAgT3B0aW9uTm90Q29tYmluYWJsZUVycm9yLFxuICBVbmtub3duT3B0aW9uRXJyb3IsXG59IGZyb20gXCIuL19lcnJvcnMudHNcIjtcbmltcG9ydCB7IFBhcnNlRmxhZ3NDb250ZXh0LCBQYXJzZUZsYWdzT3B0aW9ucyB9IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5pbXBvcnQgdHlwZSB7IEFyZ3VtZW50T3B0aW9ucywgRmxhZ09wdGlvbnMgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuXG4vKipcbiAqIEZsYWdzIHBvc3QgdmFsaWRhdGlvbi4gVmFsaWRhdGlvbnMgdGhhdCBhcmUgbm90IGFscmVhZHkgZG9uZSBieSB0aGUgcGFyc2VyLlxuICpcbiAqIEBwYXJhbSBjdHggICAgIFBhcnNlIGNvbnRleHQuXG4gKiBAcGFyYW0gb3B0cyAgICBQYXJzZSBvcHRpb25zLlxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uIG5hbWUgbWFwcGluZ3M6IHByb3BlcnR5TmFtZSAtPiBvcHRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRmxhZ3M8VCBleHRlbmRzIEZsYWdPcHRpb25zID0gRmxhZ09wdGlvbnM+KFxuICBjdHg6IFBhcnNlRmxhZ3NDb250ZXh0PFJlY29yZDxzdHJpbmcsIHVua25vd24+PixcbiAgb3B0czogUGFyc2VGbGFnc09wdGlvbnM8VD4sXG4gIG9wdGlvbnM6IE1hcDxzdHJpbmcsIEZsYWdPcHRpb25zPiA9IG5ldyBNYXAoKSxcbik6IHZvaWQge1xuICBpZiAoIW9wdHMuZmxhZ3MpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgZGVmYXVsdFZhbHVlcyA9IHNldERlZmF1bHRWYWx1ZXMoY3R4LCBvcHRzKTtcblxuICBjb25zdCBvcHRpb25OYW1lcyA9IE9iamVjdC5rZXlzKGN0eC5mbGFncyk7XG4gIGlmICghb3B0aW9uTmFtZXMubGVuZ3RoICYmIG9wdHMuYWxsb3dFbXB0eSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChjdHguc3RhbmRhbG9uZSkge1xuICAgIHZhbGlkYXRlU3RhbmRhbG9uZU9wdGlvbihcbiAgICAgIGN0eCxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBvcHRpb25OYW1lcyxcbiAgICAgIGRlZmF1bHRWYWx1ZXMsXG4gICAgKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBmb3IgKGNvbnN0IFtuYW1lLCBvcHRpb25dIG9mIG9wdGlvbnMpIHtcbiAgICB2YWxpZGF0ZVVua25vd25PcHRpb24ob3B0aW9uLCBvcHRzKTtcbiAgICB2YWxpZGF0ZUNvbmZsaWN0aW5nT3B0aW9ucyhjdHgsIG9wdGlvbik7XG4gICAgdmFsaWRhdGVEZXBlbmRpbmdPcHRpb25zKGN0eCwgb3B0aW9uLCBkZWZhdWx0VmFsdWVzKTtcbiAgICB2YWxpZGF0ZVJlcXVpcmVkVmFsdWVzKGN0eCwgb3B0aW9uLCBuYW1lKTtcbiAgfVxuXG4gIHZhbGlkYXRlUmVxdWlyZWRPcHRpb25zKGN0eCwgb3B0aW9ucywgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlVW5rbm93bk9wdGlvbjxUIGV4dGVuZHMgRmxhZ09wdGlvbnMgPSBGbGFnT3B0aW9ucz4oXG4gIG9wdGlvbjogRmxhZ09wdGlvbnMsXG4gIG9wdHM6IFBhcnNlRmxhZ3NPcHRpb25zPFQ+LFxuKSB7XG4gIGlmICghZ2V0T3B0aW9uKG9wdHMuZmxhZ3MgPz8gW10sIG9wdGlvbi5uYW1lKSkge1xuICAgIHRocm93IG5ldyBVbmtub3duT3B0aW9uRXJyb3Iob3B0aW9uLm5hbWUsIG9wdHMuZmxhZ3MgPz8gW10pO1xuICB9XG59XG5cbi8qKlxuICogQWRkcyBhbGwgZGVmYXVsdCB2YWx1ZXMgdG8gY3R4LmZsYWdzIGFuZCByZXR1cm5zIGEgYm9vbGVhbiBvYmplY3QgbWFwIHdpdGhcbiAqIG9ubHkgdGhlIGRlZmF1bHQgb3B0aW9uIG5hbWVzIGB7IFtPcHRpb25OYW1lOiBzdHJpbmddOiBib29sZWFuIH1gLlxuICovXG5mdW5jdGlvbiBzZXREZWZhdWx0VmFsdWVzPFQgZXh0ZW5kcyBGbGFnT3B0aW9ucyA9IEZsYWdPcHRpb25zPihcbiAgY3R4OiBQYXJzZUZsYWdzQ29udGV4dDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4sXG4gIG9wdHM6IFBhcnNlRmxhZ3NPcHRpb25zPFQ+LFxuKSB7XG4gIGNvbnN0IGRlZmF1bHRWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XG4gIGlmICghb3B0cy5mbGFncz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZXM7XG4gIH1cblxuICAvLyBTZXQgZGVmYXVsdCB2YWx1ZXNcbiAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0cy5mbGFncykge1xuICAgIGxldCBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGRlZmF1bHRWYWx1ZTogdW5rbm93biA9IHVuZGVmaW5lZDtcblxuICAgIC8vIGlmIC0tbm8tW2ZsYWddIGlzIHByZXNlbnQgc2V0IC0tW2ZsYWddIGRlZmF1bHQgdmFsdWUgdG8gdHJ1ZVxuICAgIGlmIChvcHRpb24ubmFtZS5zdGFydHNXaXRoKFwibm8tXCIpKSB7XG4gICAgICBjb25zdCBwcm9wTmFtZSA9IG9wdGlvbi5uYW1lLnJlcGxhY2UoL15uby0vLCBcIlwiKTtcbiAgICAgIGlmICh0eXBlb2YgY3R4LmZsYWdzW3Byb3BOYW1lXSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBvc2l0aXZlT3B0aW9uID0gZ2V0T3B0aW9uKG9wdHMuZmxhZ3MsIHByb3BOYW1lKTtcbiAgICAgIGlmIChwb3NpdGl2ZU9wdGlvbikge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIG5hbWUgPSBwYXJhbUNhc2VUb0NhbWVsQ2FzZShwcm9wTmFtZSk7XG4gICAgICBkZWZhdWx0VmFsdWUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICghbmFtZSkge1xuICAgICAgbmFtZSA9IHBhcmFtQ2FzZVRvQ2FtZWxDYXNlKG9wdGlvbi5uYW1lKTtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNEZWZhdWx0VmFsdWU6IGJvb2xlYW4gPSAoIW9wdHMuaWdub3JlRGVmYXVsdHMgfHxcbiAgICAgIHR5cGVvZiBvcHRzLmlnbm9yZURlZmF1bHRzW25hbWVdID09PSBcInVuZGVmaW5lZFwiKSAmJlxuICAgICAgdHlwZW9mIGN0eC5mbGFnc1tuYW1lXSA9PT0gXCJ1bmRlZmluZWRcIiAmJiAoXG4gICAgICAgIHR5cGVvZiBvcHRpb24uZGVmYXVsdCAhPT0gXCJ1bmRlZmluZWRcIiB8fFxuICAgICAgICB0eXBlb2YgZGVmYXVsdFZhbHVlICE9PSBcInVuZGVmaW5lZFwiXG4gICAgICApO1xuXG4gICAgaWYgKGhhc0RlZmF1bHRWYWx1ZSkge1xuICAgICAgY3R4LmZsYWdzW25hbWVdID0gZ2V0RGVmYXVsdFZhbHVlKG9wdGlvbikgPz8gZGVmYXVsdFZhbHVlO1xuICAgICAgZGVmYXVsdFZhbHVlc1tvcHRpb24ubmFtZV0gPSB0cnVlO1xuICAgICAgaWYgKHR5cGVvZiBvcHRpb24udmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjdHguZmxhZ3NbbmFtZV0gPSBvcHRpb24udmFsdWUoY3R4LmZsYWdzW25hbWVdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGVmYXVsdFZhbHVlcztcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTdGFuZGFsb25lT3B0aW9uKFxuICBjdHg6IFBhcnNlRmxhZ3NDb250ZXh0LFxuICBvcHRpb25zOiBNYXA8c3RyaW5nLCBGbGFnT3B0aW9ucz4sXG4gIG9wdGlvbk5hbWVzOiBBcnJheTxzdHJpbmc+LFxuICBkZWZhdWx0VmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPixcbik6IHZvaWQge1xuICBpZiAoIWN0eC5zdGFuZGFsb25lIHx8IG9wdGlvbk5hbWVzLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIERvbid0IHRocm93IGFuIGVycm9yIGlmIGFsbCB2YWx1ZXMgYXJlIGNvbWluZyBmcm9tIHRoZSBkZWZhdWx0IG9wdGlvbi5cbiAgZm9yIChjb25zdCBbXywgb3B0XSBvZiBvcHRpb25zKSB7XG4gICAgaWYgKCFkZWZhdWx0VmFsdWVzW29wdC5uYW1lXSAmJiBvcHQgIT09IGN0eC5zdGFuZGFsb25lKSB7XG4gICAgICB0aHJvdyBuZXcgT3B0aW9uTm90Q29tYmluYWJsZUVycm9yKGN0eC5zdGFuZGFsb25lLm5hbWUpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUNvbmZsaWN0aW5nT3B0aW9ucyhcbiAgY3R4OiBQYXJzZUZsYWdzQ29udGV4dDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4sXG4gIG9wdGlvbjogRmxhZ09wdGlvbnMsXG4pOiB2b2lkIHtcbiAgaWYgKCFvcHRpb24uY29uZmxpY3RzPy5sZW5ndGgpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgZm9yIChjb25zdCBmbGFnIG9mIG9wdGlvbi5jb25mbGljdHMpIHtcbiAgICBpZiAoaXNzZXQoZmxhZywgY3R4LmZsYWdzKSkge1xuICAgICAgdGhyb3cgbmV3IENvbmZsaWN0aW5nT3B0aW9uRXJyb3Iob3B0aW9uLm5hbWUsIGZsYWcpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZURlcGVuZGluZ09wdGlvbnMoXG4gIGN0eDogUGFyc2VGbGFnc0NvbnRleHQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LFxuICBvcHRpb246IEZsYWdPcHRpb25zLFxuICBkZWZhdWx0VmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPixcbik6IHZvaWQge1xuICBpZiAoIW9wdGlvbi5kZXBlbmRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGZvciAoY29uc3QgZmxhZyBvZiBvcHRpb24uZGVwZW5kcykge1xuICAgIC8vIERvbid0IHRocm93IGFuIGVycm9yIGlmIHRoZSB2YWx1ZSBpcyBjb21pbmcgZnJvbSB0aGUgZGVmYXVsdCBvcHRpb24uXG4gICAgaWYgKCFpc3NldChmbGFnLCBjdHguZmxhZ3MpICYmICFkZWZhdWx0VmFsdWVzW29wdGlvbi5uYW1lXSkge1xuICAgICAgdGhyb3cgbmV3IERlcGVuZGluZ09wdGlvbkVycm9yKG9wdGlvbi5uYW1lLCBmbGFnKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVSZXF1aXJlZFZhbHVlcyhcbiAgY3R4OiBQYXJzZUZsYWdzQ29udGV4dDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4sXG4gIG9wdGlvbjogRmxhZ09wdGlvbnMsXG4gIG5hbWU6IHN0cmluZyxcbik6IHZvaWQge1xuICBpZiAoIW9wdGlvbi5hcmdzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGlzQXJyYXkgPSBvcHRpb24uYXJncy5sZW5ndGggPiAxO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9uLmFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBhcmc6IEFyZ3VtZW50T3B0aW9ucyA9IG9wdGlvbi5hcmdzW2ldO1xuICAgIGlmICghYXJnLnJlcXVpcmVkVmFsdWUpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBoYXNWYWx1ZSA9IGlzQXJyYXlcbiAgICAgID8gdHlwZW9mIChjdHguZmxhZ3NbbmFtZV0gYXMgQXJyYXk8dW5rbm93bj4pW2ldICE9PSBcInVuZGVmaW5lZFwiXG4gICAgICA6IHR5cGVvZiBjdHguZmxhZ3NbbmFtZV0gIT09IFwidW5kZWZpbmVkXCI7XG5cbiAgICBpZiAoIWhhc1ZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgTWlzc2luZ09wdGlvblZhbHVlRXJyb3Iob3B0aW9uLm5hbWUpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVJlcXVpcmVkT3B0aW9uczxUIGV4dGVuZHMgRmxhZ09wdGlvbnMgPSBGbGFnT3B0aW9ucz4oXG4gIGN0eDogUGFyc2VGbGFnc0NvbnRleHQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+LFxuICBvcHRpb25zOiBNYXA8c3RyaW5nLCBGbGFnT3B0aW9ucz4sXG4gIG9wdHM6IFBhcnNlRmxhZ3NPcHRpb25zPFQ+LFxuKTogdm9pZCB7XG4gIGlmICghb3B0cy5mbGFncz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IG9wdGlvbnNWYWx1ZXMgPSBbLi4ub3B0aW9ucy52YWx1ZXMoKV07XG5cbiAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0cy5mbGFncykge1xuICAgIGlmICghb3B0aW9uLnJlcXVpcmVkIHx8IHBhcmFtQ2FzZVRvQ2FtZWxDYXNlKG9wdGlvbi5uYW1lKSBpbiBjdHguZmxhZ3MpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBjb25mbGljdHMgPSBvcHRpb24uY29uZmxpY3RzID8/IFtdO1xuICAgIGNvbnN0IGhhc0NvbmZsaWN0ID0gY29uZmxpY3RzLmZpbmQoKGZsYWc6IHN0cmluZykgPT4gISFjdHguZmxhZ3NbZmxhZ10pO1xuICAgIGNvbnN0IGhhc0NvbmZsaWN0cyA9IGhhc0NvbmZsaWN0IHx8XG4gICAgICBvcHRpb25zVmFsdWVzLmZpbmQoKG9wdCkgPT5cbiAgICAgICAgb3B0LmNvbmZsaWN0cz8uZmluZCgoZmxhZzogc3RyaW5nKSA9PiBmbGFnID09PSBvcHRpb24ubmFtZSlcbiAgICAgICk7XG5cbiAgICBpZiAoaGFzQ29uZmxpY3RzKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IE1pc3NpbmdSZXF1aXJlZE9wdGlvbkVycm9yKG9wdGlvbi5uYW1lKTtcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrIGlmIHZhbHVlIGV4aXN0cyBmb3IgZmxhZy5cbiAqIEBwYXJhbSBmbGFnTmFtZSAgRmxhZyBuYW1lLlxuICogQHBhcmFtIGZsYWdzICAgICBQYXJzZWQgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBpc3NldChmbGFnTmFtZTogc3RyaW5nLCBmbGFnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBib29sZWFuIHtcbiAgY29uc3QgbmFtZSA9IHBhcmFtQ2FzZVRvQ2FtZWxDYXNlKGZsYWdOYW1lKTtcbiAgLy8gcmV0dXJuIHR5cGVvZiB2YWx1ZXNbIG5hbWUgXSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWVzWyBuYW1lIF0gIT09IGZhbHNlO1xuICByZXR1cm4gdHlwZW9mIGZsYWdzW25hbWVdICE9PSBcInVuZGVmaW5lZFwiO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsZUFBZSxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsUUFBUSxjQUFjO0FBQy9FLFNBQ0Usc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIsMEJBQTBCLEVBQzFCLHdCQUF3QixFQUN4QixrQkFBa0IsUUFDYixlQUFlO0FBSXRCOzs7Ozs7Q0FNQyxHQUNELE9BQU8sU0FBUyxjQUNkLEdBQStDLEVBQy9DLElBQTBCLEVBQzFCLFVBQW9DLElBQUksS0FBSztFQUU3QyxJQUFJLENBQUMsS0FBSyxLQUFLLEVBQUU7SUFDZjtFQUNGO0VBQ0EsTUFBTSxnQkFBZ0IsaUJBQWlCLEtBQUs7RUFFNUMsTUFBTSxjQUFjLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSztFQUN6QyxJQUFJLENBQUMsWUFBWSxNQUFNLElBQUksS0FBSyxVQUFVLEVBQUU7SUFDMUM7RUFDRjtFQUVBLElBQUksSUFBSSxVQUFVLEVBQUU7SUFDbEIseUJBQ0UsS0FDQSxT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 +// denoCacheMetadata=9446537035450063229,8325896337654213266
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/cf2ac3e390878267b518e05a7a89fdcc4bfdc09f204332b5ec6db49b66da6f66.js b/vendor/gen/https/deno.land/cf2ac3e390878267b518e05a7a89fdcc4bfdc09f204332b5ec6db49b66da6f66.js new file mode 100644 index 0000000..c9682e5 --- /dev/null +++ b/vendor/gen/https/deno.land/cf2ac3e390878267b518e05a7a89fdcc4bfdc09f204332b5ec6db49b66da6f66.js @@ -0,0 +1,27 @@ +/** + * @module + * + * This module exposes the Deno DOM API with the WASM (Web Assembly) backend + * + * @example + * ```typescript + * import { DOMParser, Element } from "jsr:@b-fuze/deno-dom"; + * + * const doc = new DOMParser().parseFromString( + * ` + * <h1>Hello World!</h1> + * <p>Hello from <a href="https://deno.land/">Deno!</a></p> + * `, + * "text/html", + * ); + * + * const p = doc.querySelector("p")!; + * console.log(p.textContent); // "Hello from Deno!" + * ``` + */ import init, { parse, parse_frag } from "./build/deno-wasm/deno-wasm.js"; +import { register } from "./src/parser.ts"; +await init(); +register(parse, parse_frag); +export * from "./src/api.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvZGVub19kb21AdjAuMS40OS9kZW5vLWRvbS13YXNtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZVxuICpcbiAqIFRoaXMgbW9kdWxlIGV4cG9zZXMgdGhlIERlbm8gRE9NIEFQSSB3aXRoIHRoZSBXQVNNIChXZWIgQXNzZW1ibHkpIGJhY2tlbmRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgRE9NUGFyc2VyLCBFbGVtZW50IH0gZnJvbSBcImpzcjpAYi1mdXplL2Rlbm8tZG9tXCI7XG4gKlxuICogY29uc3QgZG9jID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhcbiAqICAgYFxuICogICAgIDxoMT5IZWxsbyBXb3JsZCE8L2gxPlxuICogICAgIDxwPkhlbGxvIGZyb20gPGEgaHJlZj1cImh0dHBzOi8vZGVuby5sYW5kL1wiPkRlbm8hPC9hPjwvcD5cbiAqICAgYCxcbiAqICAgXCJ0ZXh0L2h0bWxcIixcbiAqICk7XG4gKlxuICogY29uc3QgcCA9IGRvYy5xdWVyeVNlbGVjdG9yKFwicFwiKSE7XG4gKiBjb25zb2xlLmxvZyhwLnRleHRDb250ZW50KTsgLy8gXCJIZWxsbyBmcm9tIERlbm8hXCJcbiAqIGBgYFxuICovXG5cbmltcG9ydCBpbml0LCB7IHBhcnNlLCBwYXJzZV9mcmFnIH0gZnJvbSBcIi4vYnVpbGQvZGVuby13YXNtL2Rlbm8td2FzbS5qc1wiO1xuaW1wb3J0IHsgcmVnaXN0ZXIgfSBmcm9tIFwiLi9zcmMvcGFyc2VyLnRzXCI7XG5cbmF3YWl0IGluaXQoKTtcbnJlZ2lzdGVyKFxuICBwYXJzZSxcbiAgcGFyc2VfZnJhZyBhcyB1bmtub3duIGFzIChcbiAgICBodG1sOiBzdHJpbmcsXG4gICAgY29udGV4dF9sb2NhbF9uYW1lPzogc3RyaW5nLFxuICApID0+IHN0cmluZyxcbik7XG5cbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9hcGkudHNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FvQkMsR0FFRCxPQUFPLFFBQVEsS0FBSyxFQUFFLFVBQVUsUUFBUSxpQ0FBaUM7QUFDekUsU0FBUyxRQUFRLFFBQVEsa0JBQWtCO0FBRTNDLE1BQU07QUFDTixTQUNFLE9BQ0E7QUFNRixjQUFjLGVBQWUifQ== +// denoCacheMetadata=14312711765057321658,8032870759545700304
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/d0cd986227f092828793c6d13996684c76badd525af6e252685bfcddbeb5defd.js b/vendor/gen/https/deno.land/d0cd986227f092828793c6d13996684c76badd525af6e252685bfcddbeb5defd.js new file mode 100644 index 0000000..5cb82d3 --- /dev/null +++ b/vendor/gen/https/deno.land/d0cd986227f092828793c6d13996684c76badd525af6e252685bfcddbeb5defd.js @@ -0,0 +1,11 @@ +/** + * Check if the content variable is a generator. + */ export function isGenerator(content) { + if (typeof content !== "function") { + return false; + } + const name = content.constructor.name; + return name === "GeneratorFunction" || name === "AsyncGeneratorFunction"; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS91dGlscy9nZW5lcmF0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDaGVjayBpZiB0aGUgY29udGVudCB2YXJpYWJsZSBpcyBhIGdlbmVyYXRvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzR2VuZXJhdG9yKFxuICBjb250ZW50OiB1bmtub3duLFxuKTogY29udGVudCBpcyBHZW5lcmF0b3JGdW5jdGlvbiB8IEFzeW5jR2VuZXJhdG9yRnVuY3Rpb24ge1xuICBpZiAodHlwZW9mIGNvbnRlbnQgIT09IFwiZnVuY3Rpb25cIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IG5hbWUgPSBjb250ZW50LmNvbnN0cnVjdG9yLm5hbWU7XG4gIHJldHVybiAobmFtZSA9PT0gXCJHZW5lcmF0b3JGdW5jdGlvblwiIHx8IG5hbWUgPT09IFwiQXN5bmNHZW5lcmF0b3JGdW5jdGlvblwiKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Q0FFQyxHQUNELE9BQU8sU0FBUyxZQUNkLE9BQWdCO0VBRWhCLElBQUksT0FBTyxZQUFZLFlBQVk7SUFDakMsT0FBTztFQUNUO0VBRUEsTUFBTSxPQUFPLFFBQVEsV0FBVyxDQUFDLElBQUk7RUFDckMsT0FBUSxTQUFTLHVCQUF1QixTQUFTO0FBQ25EIn0= +// denoCacheMetadata=6542558327228171726,6924956484584296855
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/d12174d1bd572035c0e166e17b57cb58410c7e8657c072c48eaa37a43526b583.js b/vendor/gen/https/deno.land/d12174d1bd572035c0e166e17b57cb58410c7e8657c072c48eaa37a43526b583.js new file mode 100644 index 0000000..03b7225 --- /dev/null +++ b/vendor/gen/https/deno.land/d12174d1bd572035c0e166e17b57cb58410c7e8657c072c48eaa37a43526b583.js @@ -0,0 +1,199 @@ +import { resolveInclude } from "./utils/path.ts"; +import { isGenerator } from "./utils/generator.ts"; +import { concurrent } from "./utils/concurrent.ts"; +import { mergeData } from "./utils/merge_data.ts"; +import { getBasename, getPageUrl } from "./utils/page_url.ts"; +import { getPageDate } from "./utils/page_date.ts"; +import { posix } from "../deps/path.ts"; +/** + * The renderer is responsible for rendering the site pages + * in the right order and using the right template engine. + */ export default class Renderer { + /** The default folder to include the layouts */ includes; + /** The filesystem instance used to read the layouts */ fs; + /** To convert the urls to pretty /example.html => /example/ */ prettyUrls; + /** All preprocessors */ preprocessors; + /** Available file formats */ formats; + /** The registered helpers */ helpers = new Map(); + constructor(options){ + this.includes = options.includes; + this.prettyUrls = options.prettyUrls; + this.preprocessors = options.preprocessors; + this.formats = options.formats; + this.fs = options.fs; + } + /** Register a new helper used by the template engines */ addHelper(name, fn, options) { + this.helpers.set(name, [ + fn, + options + ]); + for (const format of this.formats.entries.values()){ + format.engines?.forEach((engine)=>engine.addHelper(name, fn, options)); + } + return this; + } + /** Render the provided pages */ async renderPages(from, to) { + const renderedPages = []; + for (const group of this.#groupPages(from)){ + const pages = []; + const generators = []; + // Split regular pages and generators + for (const page of group){ + if (isGenerator(page.data.content)) { + generators.push(page); + continue; + } + pages.push(page); + } + // Preprocess the pages and add them to site.pages + await this.preprocessors.run(pages); + to.push(...pages); + const generatedPages = []; + for (const page of generators){ + const data = { + ...page.data + }; + const { content } = data; + delete data.content; + const generator = await this.render(content, data, page.src.path + page.src.ext); + let index = 0; + const basePath = posix.dirname(page.data.url); + for await (const data of generator){ + if (!data.content) { + data.content = undefined; + } + const newPage = page.duplicate(index++, mergeData(page.data, data)); + let base = basePath; + if (data.url === false) { + continue; + } + if (!data.url && data.basename !== undefined) { + // @ts-ignore: The url is added later + delete newPage.data.url; + base = posix.dirname(page.outputPath); + } + const url = getPageUrl(newPage, this.prettyUrls, base); + if (!url) { + continue; + } + newPage.data.url = url; + newPage.data.basename = getBasename(url); + newPage.data.date = getPageDate(newPage); + // Prevent running the layout if the page is not HTML + if (!data.layout && !newPage.outputPath.endsWith(".html")) { + delete newPage.data.layout; + } + generatedPages.push(newPage); + } + } + // Preprocess the generators and add them to site.pages + await this.preprocessors.run(generatedPages); + to.push(...generatedPages); + // Render the pages content + await concurrent(pages.concat(generatedPages), async (page)=>{ + try { + const content = await this.#renderPage(page); + // Save the children to render the layout later + if (page.data.layout || page.outputPath.endsWith(".html")) { + page.data.children = content; + renderedPages.push(page); + } else { + page.content = content; + } + } catch (cause) { + throw new Error(`Error rendering the page: ${page.sourcePath}`, { + cause + }); + } + }); + } + // Render the pages layouts at the end + await concurrent(renderedPages, async (page)=>{ + try { + page.content = await this.#renderLayout(page, page.data.children); + } catch (cause) { + throw new Error(`Error rendering the layout of the page ${page.sourcePath}`, { + cause + }); + } + }); + } + /** Render a template */ async render(content, data, filename, isLayout = false) { + const engines = this.#getEngine(filename, data, isLayout); + if (engines) { + for (const engine of engines){ + content = await engine.render(content, data, filename); + } + } + return content; + } + /** Group the pages by renderOrder */ #groupPages(pages) { + const renderOrder = {}; + for (const page of pages){ + const order = page.data.renderOrder || 0; + renderOrder[order] = renderOrder[order] || []; + renderOrder[order].push(page); + } + return Object.keys(renderOrder).sort().map((order)=>renderOrder[order]); + } + /** Render a page */ async #renderPage(page) { + const data = { + ...page.data + }; + const { content } = data; + delete data.content; + return await this.render(content, data, page.src.path + page.src.ext); + } + /** Render the page layout */ async #renderLayout(page, content) { + let data = { + ...page.data + }; + let path = page.src.path + page.src.ext; + let layout = data.layout; + // Render the layouts recursively + while(layout){ + const format = this.formats.search(layout); + if (!format || !format.loader) { + throw new Error(`The layout format "${layout}" doesn't exist`); + } + const includesPath = format.engines?.[0].includes; + if (!includesPath) { + throw new Error(`The layout format "${layout}" doesn't support includes`); + } + const layoutPath = resolveInclude(layout, includesPath, posix.dirname(path)); + const entry = this.fs.entries.get(layoutPath); + if (!entry) { + throw new Error(`The layout file "${layoutPath}" doesn't exist`); + } + const layoutData = await entry.getContent(format.loader); + delete data.layout; + delete data.templateEngine; + data = mergeData(layoutData, data, { + content + }); + content = await this.render(layoutData.content, data, layoutPath, true); + layout = layoutData.layout; + path = layoutPath; + } + return content; + } + /** Get the engines assigned to an extension or configured in the data */ #getEngine(path, data, isLayout) { + let { templateEngine } = data; + if (templateEngine) { + templateEngine = Array.isArray(templateEngine) ? templateEngine : templateEngine.split(","); + return templateEngine.reduce((engines, name)=>{ + const format = this.formats.get(`.${name.trim()}`); + if (format?.engines) { + return engines.concat(format.engines); + } + throw new Error(`The template engine "${name}" doesn't exist`); + }, []); + } + const format = this.formats.search(path); + if (isLayout || format?.isPage) { + return format?.engines; + } + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS9yZW5kZXJlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZXNvbHZlSW5jbHVkZSB9IGZyb20gXCIuL3V0aWxzL3BhdGgudHNcIjtcbmltcG9ydCB7IGlzR2VuZXJhdG9yIH0gZnJvbSBcIi4vdXRpbHMvZ2VuZXJhdG9yLnRzXCI7XG5pbXBvcnQgeyBjb25jdXJyZW50IH0gZnJvbSBcIi4vdXRpbHMvY29uY3VycmVudC50c1wiO1xuaW1wb3J0IHsgbWVyZ2VEYXRhIH0gZnJvbSBcIi4vdXRpbHMvbWVyZ2VfZGF0YS50c1wiO1xuaW1wb3J0IHsgZ2V0QmFzZW5hbWUsIGdldFBhZ2VVcmwgfSBmcm9tIFwiLi91dGlscy9wYWdlX3VybC50c1wiO1xuaW1wb3J0IHsgZ2V0UGFnZURhdGUgfSBmcm9tIFwiLi91dGlscy9wYWdlX2RhdGUudHNcIjtcbmltcG9ydCB7IFBhZ2UgfSBmcm9tIFwiLi9maWxlLnRzXCI7XG5pbXBvcnQgeyBwb3NpeCB9IGZyb20gXCIuLi9kZXBzL3BhdGgudHNcIjtcblxuaW1wb3J0IHR5cGUgeyBDb250ZW50LCBEYXRhLCBSYXdEYXRhIH0gZnJvbSBcIi4vZmlsZS50c1wiO1xuaW1wb3J0IHR5cGUgUHJvY2Vzc29ycyBmcm9tIFwiLi9wcm9jZXNzb3JzLnRzXCI7XG5pbXBvcnQgdHlwZSBGb3JtYXRzIGZyb20gXCIuL2Zvcm1hdHMudHNcIjtcbmltcG9ydCB0eXBlIEZTIGZyb20gXCIuL2ZzLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIGluY2x1ZGVzOiBzdHJpbmc7XG4gIHByZXR0eVVybHM6IGJvb2xlYW47XG4gIHByZXByb2Nlc3NvcnM6IFByb2Nlc3NvcnM7XG4gIGZvcm1hdHM6IEZvcm1hdHM7XG4gIGZzOiBGUztcbn1cblxuLyoqXG4gKiBUaGUgcmVuZGVyZXIgaXMgcmVzcG9uc2libGUgZm9yIHJlbmRlcmluZyB0aGUgc2l0ZSBwYWdlc1xuICogaW4gdGhlIHJpZ2h0IG9yZGVyIGFuZCB1c2luZyB0aGUgcmlnaHQgdGVtcGxhdGUgZW5naW5lLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZW5kZXJlciB7XG4gIC8qKiBUaGUgZGVmYXVsdCBmb2xkZXIgdG8gaW5jbHVkZSB0aGUgbGF5b3V0cyAqL1xuICBpbmNsdWRlczogc3RyaW5nO1xuXG4gIC8qKiBUaGUgZmlsZXN5c3RlbSBpbnN0YW5jZSB1c2VkIHRvIHJlYWQgdGhlIGxheW91dHMgKi9cbiAgZnM6IEZTO1xuXG4gIC8qKiBUbyBjb252ZXJ0IHRoZSB1cmxzIHRvIHByZXR0eSAvZXhhbXBsZS5odG1sID0+IC9leGFtcGxlLyAqL1xuICBwcmV0dHlVcmxzOiBib29sZWFuO1xuXG4gIC8qKiBBbGwgcHJlcHJvY2Vzc29ycyAqL1xuICBwcmVwcm9jZXNzb3JzOiBQcm9jZXNzb3JzO1xuXG4gIC8qKiBBdmFpbGFibGUgZmlsZSBmb3JtYXRzICovXG4gIGZvcm1hdHM6IEZvcm1hdHM7XG5cbiAgLyoqIFRoZSByZWdpc3RlcmVkIGhlbHBlcnMgKi9cbiAgaGVscGVycyA9IG5ldyBNYXA8c3RyaW5nLCBbSGVscGVyLCBIZWxwZXJPcHRpb25zXT4oKTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBPcHRpb25zKSB7XG4gICAgdGhpcy5pbmNsdWRlcyA9IG9wdGlvbnMuaW5jbHVkZXM7XG4gICAgdGhpcy5wcmV0dHlVcmxzID0gb3B0aW9ucy5wcmV0dHlVcmxzO1xuICAgIHRoaXMucHJlcHJvY2Vzc29ycyA9IG9wdGlvbnMucHJlcHJvY2Vzc29ycztcbiAgICB0aGlzLmZvcm1hdHMgPSBvcHRpb25zLmZvcm1hdHM7XG4gICAgdGhpcy5mcyA9IG9wdGlvbnMuZnM7XG4gIH1cblxuICAvKiogUmVnaXN0ZXIgYSBuZXcgaGVscGVyIHVzZWQgYnkgdGhlIHRlbXBsYXRlIGVuZ2luZXMgKi9cbiAgYWRkSGVscGVyKG5hbWU6IHN0cmluZywgZm46IEhlbHBlciwgb3B0aW9uczogSGVscGVyT3B0aW9ucykge1xuICAgIHRoaXMuaGVscGVycy5zZXQobmFtZSwgW2ZuLCBvcHRpb25zXSk7XG5cbiAgICBmb3IgKGNvbnN0IGZvcm1hdCBvZiB0aGlzLmZvcm1hdHMuZW50cmllcy52YWx1ZXMoKSkge1xuICAgICAgZm9ybWF0LmVuZ2luZXM/LmZvckVhY2goKGVuZ2luZSkgPT4gZW5naW5lLmFkZEhlbHBlcihuYW1lLCBmbiwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFJlbmRlciB0aGUgcHJvdmlkZWQgcGFnZXMgKi9cbiAgYXN5bmMgcmVuZGVyUGFnZXMoZnJvbTogUGFnZVtdLCB0bzogUGFnZVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVuZGVyZWRQYWdlczogUGFnZVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHRoaXMuI2dyb3VwUGFnZXMoZnJvbSkpIHtcbiAgICAgIGNvbnN0IHBhZ2VzOiBQYWdlW10gPSBbXTtcbiAgICAgIGNvbnN0IGdlbmVyYXRvcnM6IFBhZ2VbXSA9IFtdO1xuXG4gICAgICAvLyBTcGxpdCByZWd1bGFyIHBhZ2VzIGFuZCBnZW5lcmF0b3JzXG4gICAgICBmb3IgKGNvbnN0IHBhZ2Ugb2YgZ3JvdXApIHtcbiAgICAgICAgaWYgKGlzR2VuZXJhdG9yKHBhZ2UuZGF0YS5jb250ZW50KSkge1xuICAgICAgICAgIGdlbmVyYXRvcnMucHVzaChwYWdlKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHBhZ2VzLnB1c2gocGFnZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFByZXByb2Nlc3MgdGhlIHBhZ2VzIGFuZCBhZGQgdGhlbSB0byBzaXRlLnBhZ2VzXG4gICAgICBhd2FpdCB0aGlzLnByZXByb2Nlc3NvcnMucnVuKHBhZ2VzKTtcbiAgICAgIHRvLnB1c2goLi4ucGFnZXMpO1xuXG4gICAgICBjb25zdCBnZW5lcmF0ZWRQYWdlczogUGFnZVtdID0gW107XG4gICAgICBmb3IgKGNvbnN0IHBhZ2Ugb2YgZ2VuZXJhdG9ycykge1xuICAgICAgICBjb25zdCBkYXRhID0geyAuLi5wYWdlLmRhdGEgfTtcbiAgICAgICAgY29uc3QgeyBjb250ZW50IH0gPSBkYXRhO1xuICAgICAgICBkZWxldGUgZGF0YS5jb250ZW50O1xuXG4gICAgICAgIGNvbnN0IGdlbmVyYXRvciA9IGF3YWl0IHRoaXMucmVuZGVyPEdlbmVyYXRvcjxSYXdEYXRhLCBSYXdEYXRhPj4oXG4gICAgICAgICAgY29udGVudCxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIHBhZ2Uuc3JjLnBhdGggKyBwYWdlLnNyYy5leHQsXG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgY29uc3QgYmFzZVBhdGggPSBwb3NpeC5kaXJuYW1lKHBhZ2UuZGF0YS51cmwpO1xuXG4gICAgICAgIGZvciBhd2FpdCAoY29uc3QgZGF0YSBvZiBnZW5lcmF0b3IpIHtcbiAgICAgICAgICBpZiAoIWRhdGEuY29udGVudCkge1xuICAgICAgICAgICAgZGF0YS5jb250ZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBuZXdQYWdlID0gcGFnZS5kdXBsaWNhdGUoXG4gICAgICAgICAgICBpbmRleCsrLFxuICAgICAgICAgICAgbWVyZ2VEYXRhKHBhZ2UuZGF0YSwgZGF0YSkgYXMgRGF0YSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgbGV0IGJhc2UgPSBiYXNlUGF0aDtcblxuICAgICAgICAgIGlmIChkYXRhLnVybCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghZGF0YS51cmwgJiYgZGF0YS5iYXNlbmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlOiBUaGUgdXJsIGlzIGFkZGVkIGxhdGVyXG4gICAgICAgICAgICBkZWxldGUgbmV3UGFnZS5kYXRhLnVybDtcbiAgICAgICAgICAgIGJhc2UgPSBwb3NpeC5kaXJuYW1lKHBhZ2Uub3V0cHV0UGF0aCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgdXJsID0gZ2V0UGFnZVVybChuZXdQYWdlLCB0aGlzLnByZXR0eVVybHMsIGJhc2UpO1xuXG4gICAgICAgICAgaWYgKCF1cmwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5ld1BhZ2UuZGF0YS51cmwgPSB1cmw7XG4gICAgICAgICAgbmV3UGFnZS5kYXRhLmJhc2VuYW1lID0gZ2V0QmFzZW5hbWUodXJsKTtcbiAgICAgICAgICBuZXdQYWdlLmRhdGEuZGF0ZSA9IGdldFBhZ2VEYXRlKG5ld1BhZ2UpO1xuXG4gICAgICAgICAgLy8gUHJldmVudCBydW5uaW5nIHRoZSBsYXlvdXQgaWYgdGhlIHBhZ2UgaXMgbm90IEhUTUxcbiAgICAgICAgICBpZiAoIWRhdGEubGF5b3V0ICYmICFuZXdQYWdlLm91dHB1dFBhdGguZW5kc1dpdGgoXCIuaHRtbFwiKSkge1xuICAgICAgICAgICAgZGVsZXRlIG5ld1BhZ2UuZGF0YS5sYXlvdXQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGdlbmVyYXRlZFBhZ2VzLnB1c2gobmV3UGFnZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUHJlcHJvY2VzcyB0aGUgZ2VuZXJhdG9ycyBhbmQgYWRkIHRoZW0gdG8gc2l0ZS5wYWdlc1xuICAgICAgYXdhaXQgdGhpcy5wcmVwcm9jZXNzb3JzLnJ1bihnZW5lcmF0ZWRQYWdlcyk7XG4gICAgICB0by5wdXNoKC4uLmdlbmVyYXRlZFBhZ2VzKTtcblxuICAgICAgLy8gUmVuZGVyIHRoZSBwYWdlcyBjb250ZW50XG4gICAgICBhd2FpdCBjb25jdXJyZW50KFxuICAgICAgICBwYWdlcy5jb25jYXQoZ2VuZXJhdGVkUGFnZXMpLFxuICAgICAgICBhc3luYyAocGFnZSkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgdGhpcy4jcmVuZGVyUGFnZShwYWdlKTtcblxuICAgICAgICAgICAgLy8gU2F2ZSB0aGUgY2hpbGRyZW4gdG8gcmVuZGVyIHRoZSBsYXlvdXQgbGF0ZXJcbiAgICAgICAgICAgIGlmIChwYWdlLmRhdGEubGF5b3V0IHx8IHBhZ2Uub3V0cHV0UGF0aC5lbmRzV2l0aChcIi5odG1sXCIpKSB7XG4gICAgICAgICAgICAgIHBhZ2UuZGF0YS5jaGlsZHJlbiA9IGNvbnRlbnQ7XG4gICAgICAgICAgICAgIHJlbmRlcmVkUGFnZXMucHVzaChwYWdlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBhZ2UuY29udGVudCA9IGNvbnRlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoY2F1c2UpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgcmVuZGVyaW5nIHRoZSBwYWdlOiAke3BhZ2Uuc291cmNlUGF0aH1gLCB7XG4gICAgICAgICAgICAgIGNhdXNlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBSZW5kZXIgdGhlIHBhZ2VzIGxheW91dHMgYXQgdGhlIGVuZFxuICAgIGF3YWl0IGNvbmN1cnJlbnQoXG4gICAgICByZW5kZXJlZFBhZ2VzLFxuICAgICAgYXN5bmMgKHBhZ2UpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBwYWdlLmNvbnRlbnQgPSBhd2FpdCB0aGlzLiNyZW5kZXJMYXlvdXQoXG4gICAgICAgICAgICBwYWdlLFxuICAgICAgICAgICAgcGFnZS5kYXRhLmNoaWxkcmVuIGFzIENvbnRlbnQsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoY2F1c2UpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgRXJyb3IgcmVuZGVyaW5nIHRoZSBsYXlvdXQgb2YgdGhlIHBhZ2UgJHtwYWdlLnNvdXJjZVBhdGh9YCxcbiAgICAgICAgICAgIHsgY2F1c2UgfSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICAvKiogUmVuZGVyIGEgdGVtcGxhdGUgKi9cbiAgYXN5bmMgcmVuZGVyPFQ+KFxuICAgIGNvbnRlbnQ6IHVua25vd24sXG4gICAgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgZmlsZW5hbWU6IHN0cmluZyxcbiAgICBpc0xheW91dCA9IGZhbHNlLFxuICApOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBlbmdpbmVzID0gdGhpcy4jZ2V0RW5naW5lKGZpbGVuYW1lLCBkYXRhLCBpc0xheW91dCk7XG5cbiAgICBpZiAoZW5naW5lcykge1xuICAgICAgZm9yIChjb25zdCBlbmdpbmUgb2YgZW5naW5lcykge1xuICAgICAgICBjb250ZW50ID0gYXdhaXQgZW5naW5lLnJlbmRlcihjb250ZW50LCBkYXRhLCBmaWxlbmFtZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRlbnQgYXMgVDtcbiAgfVxuXG4gIC8qKiBHcm91cCB0aGUgcGFnZXMgYnkgcmVuZGVyT3JkZXIgKi9cbiAgI2dyb3VwUGFnZXMocGFnZXM6IFBhZ2VbXSk6IFBhZ2VbXVtdIHtcbiAgICBjb25zdCByZW5kZXJPcmRlcjogUmVjb3JkPG51bWJlciB8IHN0cmluZywgUGFnZVtdPiA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBwYWdlIG9mIHBhZ2VzKSB7XG4gICAgICBjb25zdCBvcmRlciA9IHBhZ2UuZGF0YS5yZW5kZXJPcmRlciB8fCAwO1xuICAgICAgcmVuZGVyT3JkZXJbb3JkZXJdID0gcmVuZGVyT3JkZXJbb3JkZXJdIHx8IFtdO1xuICAgICAgcmVuZGVyT3JkZXJbb3JkZXJdLnB1c2gocGFnZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHJlbmRlck9yZGVyKS5zb3J0KCkubWFwKChvcmRlcikgPT4gcmVuZGVyT3JkZXJbb3JkZXJdKTtcbiAgfVxuXG4gIC8qKiBSZW5kZXIgYSBwYWdlICovXG4gIGFzeW5jICNyZW5kZXJQYWdlKHBhZ2U6IFBhZ2UpOiBQcm9taXNlPENvbnRlbnQ+IHtcbiAgICBjb25zdCBkYXRhID0geyAuLi5wYWdlLmRhdGEgfTtcbiAgICBjb25zdCB7IGNvbnRlbnQgfSA9IGRhdGE7XG4gICAgZGVsZXRlIGRhdGEuY29udGVudDtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnJlbmRlcjxDb250ZW50PihcbiAgICAgIGNvbnRlbnQsXG4gICAgICBkYXRhLFxuICAgICAgcGFnZS5zcmMucGF0aCArIHBhZ2Uuc3JjLmV4dCxcbiAgICApO1xuICB9XG5cbiAgLyoqIFJlbmRlciB0aGUgcGFnZSBsYXlvdXQgKi9cbiAgYXN5bmMgI3JlbmRlckxheW91dChwYWdlOiBQYWdlLCBjb250ZW50OiBDb250ZW50KTogUHJvbWlzZTxDb250ZW50PiB7XG4gICAgbGV0IGRhdGEgPSB7IC4uLnBhZ2UuZGF0YSB9O1xuICAgIGxldCBwYXRoID0gcGFnZS5zcmMucGF0aCArIHBhZ2Uuc3JjLmV4dDtcbiAgICBsZXQgbGF5b3V0ID0gZGF0YS5sYXlvdXQ7XG5cbiAgICAvLyBSZW5kZXIgdGhlIGxheW91dHMgcmVjdXJzaXZlbHlcbiAgICB3aGlsZSAobGF5b3V0KSB7XG4gICAgICBjb25zdCBmb3JtYXQgPSB0aGlzLmZvcm1hdHMuc2VhcmNoKGxheW91dCk7XG5cbiAgICAgIGlmICghZm9ybWF0IHx8ICFmb3JtYXQubG9hZGVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGxheW91dCBmb3JtYXQgXCIke2xheW91dH1cIiBkb2Vzbid0IGV4aXN0YCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGluY2x1ZGVzUGF0aCA9IGZvcm1hdC5lbmdpbmVzPy5bMF0uaW5jbHVkZXM7XG5cbiAgICAgIGlmICghaW5jbHVkZXNQYXRoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgVGhlIGxheW91dCBmb3JtYXQgXCIke2xheW91dH1cIiBkb2Vzbid0IHN1cHBvcnQgaW5jbHVkZXNgLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsYXlvdXRQYXRoID0gcmVzb2x2ZUluY2x1ZGUoXG4gICAgICAgIGxheW91dCxcbiAgICAgICAgaW5jbHVkZXNQYXRoLFxuICAgICAgICBwb3NpeC5kaXJuYW1lKHBhdGgpLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5mcy5lbnRyaWVzLmdldChsYXlvdXRQYXRoKTtcblxuICAgICAgaWYgKCFlbnRyeSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBsYXlvdXQgZmlsZSBcIiR7bGF5b3V0UGF0aH1cIiBkb2Vzbid0IGV4aXN0YCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxheW91dERhdGEgPSBhd2FpdCBlbnRyeS5nZXRDb250ZW50KGZvcm1hdC5sb2FkZXIpO1xuXG4gICAgICBkZWxldGUgZGF0YS5sYXlvdXQ7XG4gICAgICBkZWxldGUgZGF0YS50ZW1wbGF0ZUVuZ2luZTtcblxuICAgICAgZGF0YSA9IG1lcmdlRGF0YShcbiAgICAgICAgbGF5b3V0RGF0YSxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgeyBjb250ZW50IH0sXG4gICAgICApIGFzIERhdGE7XG5cbiAgICAgIGNvbnRlbnQgPSBhd2FpdCB0aGlzLnJlbmRlcjxDb250ZW50PihcbiAgICAgICAgbGF5b3V0RGF0YS5jb250ZW50LFxuICAgICAgICBkYXRhLFxuICAgICAgICBsYXlvdXRQYXRoLFxuICAgICAgICB0cnVlLFxuICAgICAgKTtcbiAgICAgIGxheW91dCA9IGxheW91dERhdGEubGF5b3V0O1xuICAgICAgcGF0aCA9IGxheW91dFBhdGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cblxuICAvKiogR2V0IHRoZSBlbmdpbmVzIGFzc2lnbmVkIHRvIGFuIGV4dGVuc2lvbiBvciBjb25maWd1cmVkIGluIHRoZSBkYXRhICovXG4gICNnZXRFbmdpbmUoXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGRhdGE6IFBhcnRpYWw8RGF0YT4sXG4gICAgaXNMYXlvdXQ6IGJvb2xlYW4sXG4gICk6IEVuZ2luZVtdIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgeyB0ZW1wbGF0ZUVuZ2luZSB9ID0gZGF0YTtcblxuICAgIGlmICh0ZW1wbGF0ZUVuZ2luZSkge1xuICAgICAgdGVtcGxhdGVFbmdpbmUgPSBBcnJheS5pc0FycmF5KHRlbXBsYXRlRW5naW5lKVxuICAgICAgICA/IHRlbXBsYXRlRW5naW5lXG4gICAgICAgIDogdGVtcGxhdGVFbmdpbmUuc3BsaXQoXCIsXCIpO1xuXG4gICAgICByZXR1cm4gdGVtcGxhdGVFbmdpbmUucmVkdWNlKChlbmdpbmVzLCBuYW1lKSA9PiB7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IHRoaXMuZm9ybWF0cy5nZXQoYC4ke25hbWUudHJpbSgpfWApO1xuXG4gICAgICAgIGlmIChmb3JtYXQ/LmVuZ2luZXMpIHtcbiAgICAgICAgICByZXR1cm4gZW5naW5lcy5jb25jYXQoZm9ybWF0LmVuZ2luZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgdGVtcGxhdGUgZW5naW5lIFwiJHtuYW1lfVwiIGRvZXNuJ3QgZXhpc3RgKTtcbiAgICAgIH0sIFtdIGFzIEVuZ2luZVtdKTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtYXQgPSB0aGlzLmZvcm1hdHMuc2VhcmNoKHBhdGgpO1xuXG4gICAgaWYgKGlzTGF5b3V0IHx8IGZvcm1hdD8uaXNQYWdlKSB7XG4gICAgICByZXR1cm4gZm9ybWF0Py5lbmdpbmVzO1xuICAgIH1cbiAgfVxufVxuXG4vKiogQW4gaW50ZXJmYWNlIHVzZWQgYnkgYWxsIHRlbXBsYXRlIGVuZ2luZXMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5naW5lPFQgPSBzdHJpbmcgfCB7IHRvU3RyaW5nKCk6IHN0cmluZyB9PiB7XG4gIC8qKiBUaGUgZm9sZGVyIG5hbWUgb2YgdGhlIGluY2x1ZGVzICovXG4gIGluY2x1ZGVzPzogc3RyaW5nO1xuXG4gIC8qKiBEZWxldGUgYSBjYWNoZWQgdGVtcGxhdGUgKi9cbiAgZGVsZXRlQ2FjaGUoZmlsZTogc3RyaW5nKTogdm9pZDtcblxuICAvKiogUmVuZGVyIGEgdGVtcGxhdGUgKHVzZWQgdG8gcmVuZGVyIHBhZ2VzKSAqL1xuICByZW5kZXIoXG4gICAgY29udGVudDogdW5rbm93bixcbiAgICBkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgZmlsZW5hbWU/OiBzdHJpbmcsXG4gICk6IFQgfCBQcm9taXNlPFQ+O1xuXG4gIC8qKiBBZGQgYSBoZWxwZXIgdG8gdGhlIHRlbXBsYXRlIGVuZ2luZSAqL1xuICBhZGRIZWxwZXIoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGZuOiBIZWxwZXIsXG4gICAgb3B0aW9uczogSGVscGVyT3B0aW9ucyxcbiAgKTogdm9pZDtcbn1cblxuLyoqIEEgZ2VuZXJpYyBoZWxwZXIgdG8gYmUgdXNlZCBpbiB0ZW1wbGF0ZSBlbmdpbmVzICovXG5leHBvcnQgaW50ZXJmYWNlIEhlbHBlclRoaXMge1xuICBkYXRhPzogRGF0YTtcbn1cblxuLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbmV4cG9ydCB0eXBlIEhlbHBlciA9ICh0aGlzOiBIZWxwZXJUaGlzIHwgdm9pZCwgLi4uYXJnczogYW55W10pID0+IGFueTtcblxuLyoqIFRoZSBvcHRpb25zIGZvciBhIHRlbXBsYXRlIGhlbHBlciAqL1xuZXhwb3J0IGludGVyZmFjZSBIZWxwZXJPcHRpb25zIHtcbiAgLyoqIFRoZSB0eXBlIG9mIHRoZSBoZWxwZXIgKHRhZywgZmlsdGVyLCBldGMpICovXG4gIHR5cGU6IHN0cmluZztcblxuICAvKiogV2hldGhlciB0aGUgaGVscGVyIHJldHVybnMgYW4gaW5zdGFuY2Ugb3Igbm90ICovXG4gIGFzeW5jPzogYm9vbGVhbjtcblxuICAvKiogV2hldGhlciB0aGUgaGVscGVyIGhhcyBhIGJvZHkgb3Igbm90ICh1c2VkIGZvciB0YWcgdHlwZXMpICovXG4gIGJvZHk/OiBib29sZWFuO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsY0FBYyxRQUFRLGtCQUFrQjtBQUNqRCxTQUFTLFdBQVcsUUFBUSx1QkFBdUI7QUFDbkQsU0FBUyxVQUFVLFFBQVEsd0JBQXdCO0FBQ25ELFNBQVMsU0FBUyxRQUFRLHdCQUF3QjtBQUNsRCxTQUFTLFdBQVcsRUFBRSxVQUFVLFFBQVEsc0JBQXNCO0FBQzlELFNBQVMsV0FBVyxRQUFRLHVCQUF1QjtBQUVuRCxTQUFTLEtBQUssUUFBUSxrQkFBa0I7QUFleEM7OztDQUdDLEdBQ0QsZUFBZSxNQUFNO0VBQ25CLDhDQUE4QyxHQUM5QyxTQUFpQjtFQUVqQixxREFBcUQsR0FDckQsR0FBTztFQUVQLDZEQUE2RCxHQUM3RCxXQUFvQjtFQUVwQixzQkFBc0IsR0FDdEIsY0FBMEI7RUFFMUIsMkJBQTJCLEdBQzNCLFFBQWlCO0VBRWpCLDJCQUEyQixHQUMzQixVQUFVLElBQUksTUFBdUM7RUFFckQsWUFBWSxPQUFnQixDQUFFO0lBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxRQUFRO0lBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxVQUFVO0lBQ3BDLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxhQUFhO0lBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxPQUFPO0lBQzlCLElBQUksQ0FBQyxFQUFFLEdBQUcsUUFBUSxFQUFFO0VBQ3RCO0VBRUEsdURBQXVELEdBQ3ZELFVBQVUsSUFBWSxFQUFFLEVBQVUsRUFBRSxPQUFzQixFQUFFO0lBQzFELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU07TUFBQztNQUFJO0tBQVE7SUFFcEMsS0FBSyxNQUFNLFVBQVUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFB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 +// denoCacheMetadata=4787150038423855534,1908837370687385200
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/d211b9fc75c5154e48599a5b8007ba854f6e3f037b83dae06373f1a55c18d846.js b/vendor/gen/https/deno.land/d211b9fc75c5154e48599a5b8007ba854f6e3f037b83dae06373f1a55c18d846.js new file mode 100644 index 0000000..da12833 --- /dev/null +++ b/vendor/gen/https/deno.land/d211b9fc75c5154e48599a5b8007ba854f6e3f037b83dae06373f1a55c18d846.js @@ -0,0 +1,3 @@ +export { serveFile } from "jsr:@std/http@1.0.16/file-server"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvZGVwcy9odHRwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IHNlcnZlRmlsZSB9IGZyb20gXCJqc3I6QHN0ZC9odHRwQDEuMC4xNi9maWxlLXNlcnZlclwiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsU0FBUyxRQUFRLG1DQUFtQyJ9 +// denoCacheMetadata=339717819398617715,16966349399010671215
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/d251f9a3376cfcfbcbada46a892fa72002f1a96e91a74e7946bbfb94dd756abe.js b/vendor/gen/https/deno.land/d251f9a3376cfcfbcbada46a892fa72002f1a96e91a74e7946bbfb94dd756abe.js new file mode 100644 index 0000000..64c7ff0 --- /dev/null +++ b/vendor/gen/https/deno.land/d251f9a3376cfcfbcbada46a892fa72002f1a96e91a74e7946bbfb94dd756abe.js @@ -0,0 +1,97 @@ +// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. +import { CHAR_BACKWARD_SLASH, CHAR_DOT, CHAR_FORWARD_SLASH, CHAR_LOWERCASE_A, CHAR_LOWERCASE_Z, CHAR_UPPERCASE_A, CHAR_UPPERCASE_Z } from "./_constants.ts"; +export function assertPath(path) { + if (typeof path !== "string") { + throw new TypeError(`Path must be a string. Received ${JSON.stringify(path)}`); + } +} +export function isPosixPathSeparator(code) { + return code === CHAR_FORWARD_SLASH; +} +export function isPathSeparator(code) { + return isPosixPathSeparator(code) || code === CHAR_BACKWARD_SLASH; +} +export function isWindowsDeviceRoot(code) { + return code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z || code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z; +} +// Resolves . and .. elements in a path with directory names +export function normalizeString(path, allowAboveRoot, separator, isPathSeparator) { + let res = ""; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code; + for(let i = 0, len = path.length; i <= len; ++i){ + if (i < len) code = path.charCodeAt(i); + else if (isPathSeparator(code)) break; + else code = CHAR_FORWARD_SLASH; + if (isPathSeparator(code)) { + if (lastSlash === i - 1 || dots === 1) { + // NOOP + } else if (lastSlash !== i - 1 && dots === 2) { + if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== CHAR_DOT || res.charCodeAt(res.length - 2) !== CHAR_DOT) { + if (res.length > 2) { + const lastSlashIndex = res.lastIndexOf(separator); + if (lastSlashIndex === -1) { + res = ""; + lastSegmentLength = 0; + } else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf(separator); + } + lastSlash = i; + dots = 0; + continue; + } else if (res.length === 2 || res.length === 1) { + res = ""; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + if (res.length > 0) res += `${separator}..`; + else res = ".."; + lastSegmentLength = 2; + } + } else { + if (res.length > 0) res += separator + path.slice(lastSlash + 1, i); + else res = path.slice(lastSlash + 1, i); + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } else if (code === CHAR_DOT && dots !== -1) { + ++dots; + } else { + dots = -1; + } + } + return res; +} +export function _format(sep, pathObject) { + const dir = pathObject.dir || pathObject.root; + const base = pathObject.base || (pathObject.name || "") + (pathObject.ext || ""); + if (!dir) return base; + if (dir === pathObject.root) return dir + base; + return dir + sep + base; +} +const WHITESPACE_ENCODINGS = { + "\u0009": "%09", + "\u000A": "%0A", + "\u000B": "%0B", + "\u000C": "%0C", + "\u000D": "%0D", + "\u0020": "%20" +}; +export function encodeWhitespace(string) { + return string.replaceAll(/[\s]/g, (c)=>{ + return WHITESPACE_ENCODINGS[c] ?? c; + }); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE3MC4wL3BhdGgvX3V0aWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyMiB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cbi8vIFBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9icm93c2VyaWZ5L3BhdGgtYnJvd3NlcmlmeS9cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHR5cGUgeyBGb3JtYXRJbnB1dFBhdGhPYmplY3QgfSBmcm9tIFwiLi9faW50ZXJmYWNlLnRzXCI7XG5pbXBvcnQge1xuICBDSEFSX0JBQ0tXQVJEX1NMQVNILFxuICBDSEFSX0RPVCxcbiAgQ0hBUl9GT1JXQVJEX1NMQVNILFxuICBDSEFSX0xPV0VSQ0FTRV9BLFxuICBDSEFSX0xPV0VSQ0FTRV9aLFxuICBDSEFSX1VQUEVSQ0FTRV9BLFxuICBDSEFSX1VQUEVSQ0FTRV9aLFxufSBmcm9tIFwiLi9fY29uc3RhbnRzLnRzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRQYXRoKHBhdGg6IHN0cmluZykge1xuICBpZiAodHlwZW9mIHBhdGggIT09IFwic3RyaW5nXCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgYFBhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeShwYXRoKX1gLFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUG9zaXhQYXRoU2VwYXJhdG9yKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gY29kZSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQYXRoU2VwYXJhdG9yKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNQb3NpeFBhdGhTZXBhcmF0b3IoY29kZSkgfHwgY29kZSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzV2luZG93c0RldmljZVJvb3QoY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgKGNvZGUgPj0gQ0hBUl9MT1dFUkNBU0VfQSAmJiBjb2RlIDw9IENIQVJfTE9XRVJDQVNFX1opIHx8XG4gICAgKGNvZGUgPj0gQ0hBUl9VUFBFUkNBU0VfQSAmJiBjb2RlIDw9IENIQVJfVVBQRVJDQVNFX1opXG4gICk7XG59XG5cbi8vIFJlc29sdmVzIC4gYW5kIC4uIGVsZW1lbnRzIGluIGEgcGF0aCB3aXRoIGRpcmVjdG9yeSBuYW1lc1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVN0cmluZyhcbiAgcGF0aDogc3RyaW5nLFxuICBhbGxvd0Fib3ZlUm9vdDogYm9vbGVhbixcbiAgc2VwYXJhdG9yOiBzdHJpbmcsXG4gIGlzUGF0aFNlcGFyYXRvcjogKGNvZGU6IG51bWJlcikgPT4gYm9vbGVhbixcbik6IHN0cmluZyB7XG4gIGxldCByZXMgPSBcIlwiO1xuICBsZXQgbGFzdFNlZ21lbnRMZW5ndGggPSAwO1xuICBsZXQgbGFzdFNsYXNoID0gLTE7XG4gIGxldCBkb3RzID0gMDtcbiAgbGV0IGNvZGU6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHBhdGgubGVuZ3RoOyBpIDw9IGxlbjsgKytpKSB7XG4gICAgaWYgKGkgPCBsZW4pIGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoaSk7XG4gICAgZWxzZSBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUhKSkgYnJlYWs7XG4gICAgZWxzZSBjb2RlID0gQ0hBUl9GT1JXQVJEX1NMQVNIO1xuXG4gICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlISkpIHtcbiAgICAgIGlmIChsYXN0U2xhc2ggPT09IGkgLSAxIHx8IGRvdHMgPT09IDEpIHtcbiAgICAgICAgLy8gTk9PUFxuICAgICAgfSBlbHNlIGlmIChsYXN0U2xhc2ggIT09IGkgLSAxICYmIGRvdHMgPT09IDIpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlcy5sZW5ndGggPCAyIHx8XG4gICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggIT09IDIgfHxcbiAgICAgICAgICByZXMuY2hhckNvZGVBdChyZXMubGVuZ3RoIC0gMSkgIT09IENIQVJfRE9UIHx8XG4gICAgICAgICAgcmVzLmNoYXJDb2RlQXQocmVzLmxlbmd0aCAtIDIpICE9PSBDSEFSX0RPVFxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RTbGFzaEluZGV4ID0gcmVzLmxhc3RJbmRleE9mKHNlcGFyYXRvcik7XG4gICAgICAgICAgICBpZiAobGFzdFNsYXNoSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgIHJlcyA9IFwiXCI7XG4gICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlcyA9IHJlcy5zbGljZSgwLCBsYXN0U2xhc2hJbmRleCk7XG4gICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gcmVzLmxlbmd0aCAtIDEgLSByZXMubGFzdEluZGV4T2Yoc2VwYXJhdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhc3RTbGFzaCA9IGk7XG4gICAgICAgICAgICBkb3RzID0gMDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAocmVzLmxlbmd0aCA9PT0gMiB8fCByZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXMgPSBcIlwiO1xuICAgICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAwO1xuICAgICAgICAgICAgbGFzdFNsYXNoID0gaTtcbiAgICAgICAgICAgIGRvdHMgPSAwO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChhbGxvd0Fib3ZlUm9vdCkge1xuICAgICAgICAgIGlmIChyZXMubGVuZ3RoID4gMCkgcmVzICs9IGAke3NlcGFyYXRvcn0uLmA7XG4gICAgICAgICAgZWxzZSByZXMgPSBcIi4uXCI7XG4gICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAyO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHJlcyArPSBzZXBhcmF0b3IgKyBwYXRoLnNsaWNlKGxhc3RTbGFzaCArIDEsIGkpO1xuICAgICAgICBlbHNlIHJlcyA9IHBhdGguc2xpY2UobGFzdFNsYXNoICsgMSwgaSk7XG4gICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gaSAtIGxhc3RTbGFzaCAtIDE7XG4gICAgICB9XG4gICAgICBsYXN0U2xhc2ggPSBpO1xuICAgICAgZG90cyA9IDA7XG4gICAgfSBlbHNlIGlmIChjb2RlID09PSBDSEFSX0RPVCAmJiBkb3RzICE9PSAtMSkge1xuICAgICAgKytkb3RzO1xuICAgIH0gZWxzZSB7XG4gICAgICBkb3RzID0gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfZm9ybWF0KFxuICBzZXA6IHN0cmluZyxcbiAgcGF0aE9iamVjdDogRm9ybWF0SW5wdXRQYXRoT2JqZWN0LFxuKTogc3RyaW5nIHtcbiAgY29uc3QgZGlyOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBwYXRoT2JqZWN0LmRpciB8fCBwYXRoT2JqZWN0LnJvb3Q7XG4gIGNvbnN0IGJhc2U6IHN0cmluZyA9IHBhdGhPYmplY3QuYmFzZSB8fFxuICAgIChwYXRoT2JqZWN0Lm5hbWUgfHwgXCJcIikgKyAocGF0aE9iamVjdC5leHQgfHwgXCJcIik7XG4gIGlmICghZGlyKSByZXR1cm4gYmFzZTtcbiAgaWYgKGRpciA9PT0gcGF0aE9iamVjdC5yb290KSByZXR1cm4gZGlyICsgYmFzZTtcbiAgcmV0dXJuIGRpciArIHNlcCArIGJhc2U7XG59XG5cbmNvbnN0IFdISVRFU1BBQ0VfRU5DT0RJTkdTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBcIlxcdTAwMDlcIjogXCIlMDlcIixcbiAgXCJcXHUwMDBBXCI6IFwiJTBBXCIsXG4gIFwiXFx1MDAwQlwiOiBcIiUwQlwiLFxuICBcIlxcdTAwMENcIjogXCIlMENcIixcbiAgXCJcXHUwMDBEXCI6IFwiJTBEXCIsXG4gIFwiXFx1MDAyMFwiOiBcIiUyMFwiLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVdoaXRlc3BhY2Uoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2VBbGwoL1tcXHNdL2csIChjKSA9PiB7XG4gICAgcmV0dXJuIFdISVRFU1BBQ0VfRU5DT0RJTkdTW2NdID8/IGM7XG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxpREFBaUQ7QUFDakQsNkRBQTZEO0FBQzdELHFDQUFxQztBQUdyQyxTQUNFLG1CQUFtQixFQUNuQixRQUFRLEVBQ1Isa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGdCQUFnQixRQUNYLGtCQUFrQjtBQUV6QixPQUFPLFNBQVMsV0FBVyxJQUFZO0VBQ3JDLElBQUksT0FBTyxTQUFTLFVBQVU7SUFDNUIsTUFBTSxJQUFJLFVBQ1IsQ0FBQyxnQ0FBZ0MsRUFBRSxLQUFLLFNBQVMsQ0FBQyxPQUFPO0VBRTdEO0FBQ0Y7QUFFQSxPQUFPLFNBQVMscUJBQXFCLElBQVk7RUFDL0MsT0FBTyxTQUFTO0FBQ2xCO0FBRUEsT0FBTyxTQUFTLGdCQUFnQixJQUFZO0VBQzFDLE9BQU8scUJBQXFCLFNBQVMsU0FBUztBQUNoRDtBQUVBLE9BQU8sU0FBUyxvQkFBb0IsSUFBWTtFQUM5QyxPQUNFLEFB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 +// denoCacheMetadata=11412284728440055182,4202569615071368919
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/d2a67f3ca20f6cf16e975c3cc103aa7a0cf7bd0f349334c452d3fb21d3a7e901.js b/vendor/gen/https/deno.land/d2a67f3ca20f6cf16e975c3cc103aa7a0cf7bd0f349334c452d3fb21d3a7e901.js new file mode 100644 index 0000000..929d50d --- /dev/null +++ b/vendor/gen/https/deno.land/d2a67f3ca20f6cf16e975c3cc103aa7a0cf7bd0f349334c452d3fb21d3a7e901.js @@ -0,0 +1,188 @@ +import { FileType } from "../types/file.ts"; +/** Generates bash completions script. */ export class BashCompletionsGenerator { + cmd; + /** Generates bash completions script for given command. */ static generate(cmd) { + return new BashCompletionsGenerator(cmd).generate(); + } + constructor(cmd){ + this.cmd = cmd; + } + /** Generates bash completions code. */ generate() { + const path = this.cmd.getPath(); + const version = this.cmd.getVersion() ? ` v${this.cmd.getVersion()}` : ""; + return `#!/usr/bin/env bash +# bash completion support for ${path}${version} + +_${replaceSpecialChars(path)}() { + local word cur prev listFiles + local -a opts + COMPREPLY=() + cur="\${COMP_WORDS[COMP_CWORD]}" + prev="\${COMP_WORDS[COMP_CWORD-1]}" + cmd="_" + opts=() + listFiles=0 + + _${replaceSpecialChars(this.cmd.getName())}_complete() { + local action="$1"; shift + mapfile -t values < <( ${this.cmd.getName()} completions complete "\${action}" "\${@}" ) + for i in "\${values[@]}"; do + opts+=("$i") + done + } + + _${replaceSpecialChars(this.cmd.getName())}_expand() { + [ "$cur" != "\${cur%\\\\}" ] && cur="$cur\\\\" + + # expand ~username type directory specifications + if [[ "$cur" == \\~*/* ]]; then + # shellcheck disable=SC2086 + eval cur=$cur + + elif [[ "$cur" == \\~* ]]; then + cur=\${cur#\\~} + # shellcheck disable=SC2086,SC2207 + COMPREPLY=( $( compgen -P '~' -u $cur ) ) + return \${#COMPREPLY[@]} + fi + } + + # shellcheck disable=SC2120 + _${replaceSpecialChars(this.cmd.getName())}_file_dir() { + listFiles=1 + local IFS=$'\\t\\n' xspec #glob + _${replaceSpecialChars(this.cmd.getName())}_expand || return 0 + + if [ "\${1:-}" = -d ]; then + # shellcheck disable=SC2206,SC2207,SC2086 + COMPREPLY=( \${COMPREPLY[@]:-} $( compgen -d -- $cur ) ) + #eval "$glob" # restore glob setting. + return 0 + fi + + xspec=\${1:+"!*.$1"} # set only if glob passed in as $1 + # shellcheck disable=SC2206,SC2207 + COMPREPLY=( \${COMPREPLY[@]:-} $( compgen -f -X "$xspec" -- "$cur" ) \ + $( compgen -d -- "$cur" ) ) + } + + ${this.generateCompletions(this.cmd).trim()} + + for word in "\${COMP_WORDS[@]}"; do + case "\${word}" in + -*) ;; + *) + cmd_tmp="\${cmd}_\${word//[^[:alnum:]]/_}" + if type "\${cmd_tmp}" &>/dev/null; then + cmd="\${cmd_tmp}" + fi + esac + done + + \${cmd} + + if [[ listFiles -eq 1 ]]; then + return 0 + fi + + if [[ \${#opts[@]} -eq 0 ]]; then + # shellcheck disable=SC2207 + COMPREPLY=($(compgen -f "\${cur}")) + return 0 + fi + + local values + values="$( printf "\\n%s" "\${opts[@]}" )" + local IFS=$'\\n' + # shellcheck disable=SC2207 + local result=($(compgen -W "\${values[@]}" -- "\${cur}")) + if [[ \${#result[@]} -eq 0 ]]; then + # shellcheck disable=SC2207 + COMPREPLY=($(compgen -f "\${cur}")) + else + # shellcheck disable=SC2207 + COMPREPLY=($(printf '%q\\n' "\${result[@]}")) + fi + + return 0 +} + +complete -F _${replaceSpecialChars(path)} -o bashdefault -o default ${path}`; + } + /** Generates bash completions method for given command and child commands. */ generateCompletions(command, path = "", index = 1) { + path = (path ? path + " " : "") + command.getName(); + const commandCompletions = this.generateCommandCompletions(command, path, index); + const childCommandCompletions = command.getCommands(false).filter((subCommand)=>subCommand !== command).map((subCommand)=>this.generateCompletions(subCommand, path, index + 1)).join(""); + return `${commandCompletions} + +${childCommandCompletions}`; + } + generateCommandCompletions(command, path, index) { + const flags = this.getFlags(command); + const childCommandNames = command.getCommands(false).map((childCommand)=>childCommand.getName()); + const completionsPath = ~path.indexOf(" ") ? " " + path.split(" ").slice(1).join(" ") : ""; + const optionArguments = this.generateOptionArguments(command, completionsPath); + const completionsCmd = this.generateCommandCompletionsCommand(command, completionsPath); + return ` __${replaceSpecialChars(path)}() { + opts=(${[ + ...flags, + ...childCommandNames + ].join(" ")}) + ${completionsCmd} + if [[ \${cur} == -* || \${COMP_CWORD} -eq ${index} ]] ; then + return 0 + fi + ${optionArguments} + }`; + } + getFlags(command) { + return command.getOptions(false).map((option)=>option.flags).flat(); + } + generateOptionArguments(command, completionsPath) { + let opts = ""; + const options = command.getOptions(false); + if (options.length) { + opts += 'case "${prev}" in'; + for (const option of options){ + const flags = option.flags.map((flag)=>flag.trim()).join("|"); + const completionsCmd = this.generateOptionCompletionsCommand(command, option.args, completionsPath, { + standalone: option.standalone + }); + opts += `\n ${flags}) ${completionsCmd} ;;`; + } + opts += "\n esac"; + } + return opts; + } + generateCommandCompletionsCommand(command, path) { + const args = command.getArguments(); + if (args.length) { + const type = command.getType(args[0].type); + if (type && type.handler instanceof FileType) { + return `_${replaceSpecialChars(this.cmd.getName())}_file_dir`; + } + // @TODO: add support for multiple arguments + return `_${replaceSpecialChars(this.cmd.getName())}_complete ${args[0].action}${path}`; + } + return ""; + } + generateOptionCompletionsCommand(command, args, path, opts) { + if (args.length) { + const type = command.getType(args[0].type); + if (type && type.handler instanceof FileType) { + return `opts=(); _${replaceSpecialChars(this.cmd.getName())}_file_dir`; + } + // @TODO: add support for multiple arguments + return `opts=(); _${replaceSpecialChars(this.cmd.getName())}_complete ${args[0].action}${path}`; + } + if (opts?.standalone) { + return "opts=()"; + } + return ""; + } +} +function replaceSpecialChars(str) { + return str.replace(/[^a-zA-Z0-9]/g, "_"); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC9jb21wbGV0aW9ucy9fYmFzaF9jb21wbGV0aW9uc19nZW5lcmF0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb21tYW5kIH0gZnJvbSBcIi4uL2NvbW1hbmQudHNcIjtcbmltcG9ydCB0eXBlIHsgQXJndW1lbnQgfSBmcm9tIFwiLi4vdHlwZXMudHNcIjtcbmltcG9ydCB7IEZpbGVUeXBlIH0gZnJvbSBcIi4uL3R5cGVzL2ZpbGUudHNcIjtcblxuLyoqIEdlbmVyYXRlcyBiYXNoIGNvbXBsZXRpb25zIHNjcmlwdC4gKi9cbmV4cG9ydCBjbGFzcyBCYXNoQ29tcGxldGlvbnNHZW5lcmF0b3Ige1xuICAvKiogR2VuZXJhdGVzIGJhc2ggY29tcGxldGlvbnMgc2NyaXB0IGZvciBnaXZlbiBjb21tYW5kLiAqL1xuICBwdWJsaWMgc3RhdGljIGdlbmVyYXRlKGNtZDogQ29tbWFuZCkge1xuICAgIHJldHVybiBuZXcgQmFzaENvbXBsZXRpb25zR2VuZXJhdG9yKGNtZCkuZ2VuZXJhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHJvdGVjdGVkIGNtZDogQ29tbWFuZCkge31cblxuICAvKiogR2VuZXJhdGVzIGJhc2ggY29tcGxldGlvbnMgY29kZS4gKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmNtZC5nZXRQYXRoKCk7XG4gICAgY29uc3QgdmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5jbWQuZ2V0VmVyc2lvbigpXG4gICAgICA/IGAgdiR7dGhpcy5jbWQuZ2V0VmVyc2lvbigpfWBcbiAgICAgIDogXCJcIjtcblxuICAgIHJldHVybiBgIyEvdXNyL2Jpbi9lbnYgYmFzaFxuIyBiYXNoIGNvbXBsZXRpb24gc3VwcG9ydCBmb3IgJHtwYXRofSR7dmVyc2lvbn1cblxuXyR7cmVwbGFjZVNwZWNpYWxDaGFycyhwYXRoKX0oKSB7XG4gIGxvY2FsIHdvcmQgY3VyIHByZXYgbGlzdEZpbGVzXG4gIGxvY2FsIC1hIG9wdHNcbiAgQ09NUFJFUExZPSgpXG4gIGN1cj1cIlxcJHtDT01QX1dPUkRTW0NPTVBfQ1dPUkRdfVwiXG4gIHByZXY9XCJcXCR7Q09NUF9XT1JEU1tDT01QX0NXT1JELTFdfVwiXG4gIGNtZD1cIl9cIlxuICBvcHRzPSgpXG4gIGxpc3RGaWxlcz0wXG5cbiAgXyR7cmVwbGFjZVNwZWNpYWxDaGFycyh0aGlzLmNtZC5nZXROYW1lKCkpfV9jb21wbGV0ZSgpIHtcbiAgICBsb2NhbCBhY3Rpb249XCIkMVwiOyBzaGlmdFxuICAgIG1hcGZpbGUgLXQgdmFsdWVzIDwgPCggJHt0aGlzLmNtZC5nZXROYW1lKCl9IGNvbXBsZXRpb25zIGNvbXBsZXRlIFwiXFwke2FjdGlvbn1cIiBcIlxcJHtAfVwiIClcbiAgICBmb3IgaSBpbiBcIlxcJHt2YWx1ZXNbQF19XCI7IGRvXG4gICAgICBvcHRzKz0oXCIkaVwiKVxuICAgIGRvbmVcbiAgfVxuXG4gIF8ke3JlcGxhY2VTcGVjaWFsQ2hhcnModGhpcy5jbWQuZ2V0TmFtZSgpKX1fZXhwYW5kKCkge1xuICAgIFsgXCIkY3VyXCIgIT0gXCJcXCR7Y3VyJVxcXFxcXFxcfVwiIF0gJiYgY3VyPVwiJGN1clxcXFxcXFxcXCJcbiAgXG4gICAgIyBleHBhbmQgfnVzZXJuYW1lIHR5cGUgZGlyZWN0b3J5IHNwZWNpZmljYXRpb25zXG4gICAgaWYgW1sgXCIkY3VyXCIgPT0gXFxcXH4qLyogXV07IHRoZW5cbiAgICAgICMgc2hlbGxjaGVjayBkaXNhYmxlPVNDMjA4NlxuICAgICAgZXZhbCBjdXI9JGN1clxuICAgICAgXG4gICAgZWxpZiBbWyBcIiRjdXJcIiA9PSBcXFxcfiogXV07IHRoZW5cbiAgICAgIGN1cj1cXCR7Y3VyI1xcXFx+fVxuICAgICAgIyBzaGVsbGNoZWNrIGRpc2FibGU9U0MyMDg2LFNDMjIwN1xuICAgICAgQ09NUFJFUExZPSggJCggY29tcGdlbiAtUCAnficgLXUgJGN1ciApIClcbiAgICAgIHJldHVybiBcXCR7I0NPTVBSRVBMWVtAXX1cbiAgICBmaVxuICB9XG5cbiAgIyBzaGVsbGNoZWNrIGRpc2FibGU9U0MyMTIwXG4gIF8ke3JlcGxhY2VTcGVjaWFsQ2hhcnModGhpcy5jbWQuZ2V0TmFtZSgpKX1fZmlsZV9kaXIoKSB7XG4gICAgbGlzdEZpbGVzPTFcbiAgICBsb2NhbCBJRlM9JCdcXFxcdFxcXFxuJyB4c3BlYyAjZ2xvYlxuICAgIF8ke3JlcGxhY2VTcGVjaWFsQ2hhcnModGhpcy5jbWQuZ2V0TmFtZSgpKX1fZXhwYW5kIHx8IHJldHVybiAwXG4gIFxuICAgIGlmIFsgXCJcXCR7MTotfVwiID0gLWQgXTsgdGhlblxuICAgICAgIyBzaGVsbGNoZWNrIGRpc2FibGU9U0MyMjA2LFNDMjIwNyxTQzIwODZcbiAgICAgIENPTVBSRVBMWT0oIFxcJHtDT01QUkVQTFlbQF06LX0gJCggY29tcGdlbiAtZCAtLSAkY3VyICkgKVxuICAgICAgI2V2YWwgXCIkZ2xvYlwiICAgICMgcmVzdG9yZSBnbG9iIHNldHRpbmcuXG4gICAgICByZXR1cm4gMFxuICAgIGZpXG4gIFxuICAgIHhzcGVjPVxcJHsxOitcIiEqLiQxXCJ9XHQjIHNldCBvbmx5IGlmIGdsb2IgcGFzc2VkIGluIGFzICQxXG4gICAgIyBzaGVsbGNoZWNrIGRpc2FibGU9U0MyMjA2LFNDMjIwN1xuICAgIENPTVBSRVBMWT0oIFxcJHtDT01QUkVQTFlbQF06LX0gJCggY29tcGdlbiAtZiAtWCBcIiR4c3BlY1wiIC0tIFwiJGN1clwiICkgXFxcbiAgICAgICAgICAkKCBjb21wZ2VuIC1kIC0tIFwiJGN1clwiICkgKVxuICB9XG5cbiAgJHt0aGlzLmdlbmVyYXRlQ29tcGxldGlvbnModGhpcy5jbWQpLnRyaW0oKX1cblxuICBmb3Igd29yZCBpbiBcIlxcJHtDT01QX1dPUkRTW0BdfVwiOyBkb1xuICAgIGNhc2UgXCJcXCR7d29yZH1cIiBpblxuICAgICAgLSopIDs7XG4gICAgICAqKVxuICAgICAgICBjbWRfdG1wPVwiXFwke2NtZH1fXFwke3dvcmQvL1teWzphbG51bTpdXS9ffVwiXG4gICAgICAgIGlmIHR5cGUgXCJcXCR7Y21kX3RtcH1cIiAmPi9kZXYvbnVsbDsgdGhlblxuICAgICAgICAgIGNtZD1cIlxcJHtjbWRfdG1wfVwiXG4gICAgICAgIGZpXG4gICAgZXNhY1xuICBkb25lXG5cbiAgXFwke2NtZH1cblxuICBpZiBbWyBsaXN0RmlsZXMgLWVxIDEgXV07IHRoZW5cbiAgICByZXR1cm4gMFxuICBmaVxuXG4gIGlmIFtbIFxcJHsjb3B0c1tAXX0gLWVxIDAgXV07IHRoZW5cbiAgICAjIHNoZWxsY2hlY2sgZGlzYWJsZT1TQzIyMDdcbiAgICBDT01QUkVQTFk9KCQoY29tcGdlbiAtZiBcIlxcJHtjdXJ9XCIpKVxuICAgIHJldHVybiAwXG4gIGZpXG5cbiAgbG9jYWwgdmFsdWVzXG4gIHZhbHVlcz1cIiQoIHByaW50ZiBcIlxcXFxuJXNcIiBcIlxcJHtvcHRzW0BdfVwiIClcIlxuICBsb2NhbCBJRlM9JCdcXFxcbidcbiAgIyBzaGVsbGNoZWNrIGRpc2FibGU9U0MyMjA3XG4gIGxvY2FsIHJlc3VsdD0oJChjb21wZ2VuIC1XIFwiXFwke3ZhbHVlc1tAXX1cIiAtLSBcIlxcJHtjdXJ9XCIpKVxuICBpZiBbWyBcXCR7I3Jlc3VsdFtAXX0gLWVxIDAgXV07IHRoZW5cbiAgICAjIHNoZWxsY2hlY2sgZGlzYWJsZT1TQzIyMDdcbiAgICBDT01QUkVQTFk9KCQoY29tcGdlbiAtZiBcIlxcJHtjdXJ9XCIpKVxuICBlbHNlXG4gICAgIyBzaGVsbGNoZWNrIGRpc2FibGU9U0MyMjA3XG4gICAgQ09NUFJFUExZPSgkKHByaW50ZiAnJXFcXFxcbicgXCJcXCR7cmVzdWx0W0BdfVwiKSlcbiAgZmlcblxuICByZXR1cm4gMFxufVxuXG5jb21wbGV0ZSAtRiBfJHtyZXBsYWNlU3BlY2lhbENoYXJzKHBhdGgpfSAtbyBiYXNoZGVmYXVsdCAtbyBkZWZhdWx0ICR7cGF0aH1gO1xuICB9XG5cbiAgLyoqIEdlbmVyYXRlcyBiYXNoIGNvbXBsZXRpb25zIG1ldGhvZCBmb3IgZ2l2ZW4gY29tbWFuZCBhbmQgY2hpbGQgY29tbWFuZHMuICovXG4gIHByaXZhdGUgZ2VuZXJhdGVDb21wbGV0aW9ucyhjb21tYW5kOiBDb21tYW5kLCBwYXRoID0gXCJcIiwgaW5kZXggPSAxKTogc3RyaW5nIHtcbiAgICBwYXRoID0gKHBhdGggPyBwYXRoICsgXCIgXCIgOiBcIlwiKSArIGNvbW1hbmQuZ2V0TmFtZSgpO1xuICAgIGNvbnN0IGNvbW1hbmRDb21wbGV0aW9ucyA9IHRoaXMuZ2VuZXJhdGVDb21tYW5kQ29tcGxldGlvbnMoXG4gICAgICBjb21tYW5kLFxuICAgICAgcGF0aCxcbiAgICAgIGluZGV4LFxuICAgICk7XG4gICAgY29uc3QgY2hpbGRDb21tYW5kQ29tcGxldGlvbnM6IHN0cmluZyA9IGNvbW1hbmQuZ2V0Q29tbWFuZHMoZmFsc2UpXG4gICAgICAuZmlsdGVyKChzdWJDb21tYW5kOiBDb21tYW5kKSA9PiBzdWJDb21tYW5kICE9PSBjb21tYW5kKVxuICAgICAgLm1hcCgoc3ViQ29tbWFuZDogQ29tbWFuZCkgPT5cbiAgICAgICAgdGhpcy5nZW5lcmF0ZUNvbXBsZXRpb25zKHN1YkNvbW1hbmQsIHBhdGgsIGluZGV4ICsgMSlcbiAgICAgIClcbiAgICAgIC5qb2luKFwiXCIpO1xuXG4gICAgcmV0dXJuIGAke2NvbW1hbmRDb21wbGV0aW9uc31cblxuJHtjaGlsZENvbW1hbmRDb21wbGV0aW9uc31gO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUNvbW1hbmRDb21wbGV0aW9ucyhcbiAgICBjb21tYW5kOiBDb21tYW5kLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBpbmRleDogbnVtYmVyLFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGZsYWdzOiBzdHJpbmdbXSA9IHRoaXMuZ2V0RmxhZ3MoY29tbWFuZCk7XG5cbiAgICBjb25zdCBjaGlsZENvbW1hbmROYW1lczogc3RyaW5nW10gPSBjb21tYW5kLmdldENvbW1hbmRzKGZhbHNlKVxuICAgICAgLm1hcCgoY2hpbGRDb21tYW5kOiBDb21tYW5kKSA9PiBjaGlsZENvbW1hbmQuZ2V0TmFtZSgpKTtcblxuICAgIGNvbnN0IGNvbXBsZXRpb25zUGF0aDogc3RyaW5nID0gfnBhdGguaW5kZXhPZihcIiBcIilcbiAgICAgID8gXCIgXCIgKyBwYXRoLnNwbGl0KFwiIFwiKS5zbGljZSgxKS5qb2luKFwiIFwiKVxuICAgICAgOiBcIlwiO1xuXG4gICAgY29uc3Qgb3B0aW9uQXJndW1lbnRzID0gdGhpcy5nZW5lcmF0ZU9wdGlvbkFyZ3VtZW50cyhcbiAgICAgIGNvbW1hbmQsXG4gICAgICBjb21wbGV0aW9uc1BhdGgsXG4gICAgKTtcblxuICAgIGNvbnN0IGNvbXBsZXRpb25zQ21kOiBzdHJpbmcgPSB0aGlzLmdlbmVyYXRlQ29tbWFuZENvbXBsZXRpb25zQ29tbWFuZChcbiAgICAgIGNvbW1hbmQsXG4gICAgICBjb21wbGV0aW9uc1BhdGgsXG4gICAgKTtcblxuICAgIHJldHVybiBgICBfXyR7cmVwbGFjZVNwZWNpYWxDaGFycyhwYXRoKX0oKSB7XG4gICAgb3B0cz0oJHtbLi4uZmxhZ3MsIC4uLmNoaWxkQ29tbWFuZE5hbWVzXS5qb2luKFwiIFwiKX0pXG4gICAgJHtjb21wbGV0aW9uc0NtZH1cbiAgICBpZiBbWyBcXCR7Y3VyfSA9PSAtKiB8fCBcXCR7Q09NUF9DV09SRH0gLWVxICR7aW5kZXh9IF1dIDsgdGhlblxuICAgICAgcmV0dXJuIDBcbiAgICBmaVxuICAgICR7b3B0aW9uQXJndW1lbnRzfVxuICB9YDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmxhZ3MoY29tbWFuZDogQ29tbWFuZCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gY29tbWFuZC5nZXRPcHRpb25zKGZhbHNlKVxuICAgICAgLm1hcCgob3B0aW9uKSA9PiBvcHRpb24uZmxhZ3MpXG4gICAgICAuZmxhdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZU9wdGlvbkFyZ3VtZW50cyhcbiAgICBjb21tYW5kOiBDb21tYW5kLFxuICAgIGNvbXBsZXRpb25zUGF0aDogc3RyaW5nLFxuICApOiBzdHJpbmcge1xuICAgIGxldCBvcHRzID0gXCJcIjtcbiAgICBjb25zdCBvcHRpb25zID0gY29tbWFuZC5nZXRPcHRpb25zKGZhbHNlKTtcbiAgICBpZiAob3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIG9wdHMgKz0gJ2Nhc2UgXCIke3ByZXZ9XCIgaW4nO1xuICAgICAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0aW9ucykge1xuICAgICAgICBjb25zdCBmbGFnczogc3RyaW5nID0gb3B0aW9uLmZsYWdzXG4gICAgICAgICAgLm1hcCgoZmxhZzogc3RyaW5nKSA9PiBmbGFnLnRyaW0oKSlcbiAgICAgICAgICAuam9pbihcInxcIik7XG5cbiAgICAgICAgY29uc3QgY29tcGxldGlvbnNDbWQ6IHN0cmluZyA9IHRoaXMuZ2VuZXJhdGVPcHRpb25Db21wbGV0aW9uc0NvbW1hbmQoXG4gICAgICAgICAgY29tbWFuZCxcbiAgICAgICAgICBvcHRpb24uYXJncyxcbiAgICAgICAgICBjb21wbGV0aW9uc1BhdGgsXG4gICAgICAgICAgeyBzdGFuZGFsb25lOiBvcHRpb24uc3RhbmRhbG9uZSB9LFxuICAgICAgICApO1xuXG4gICAgICAgIG9wdHMgKz0gYFxcbiAgICAgICR7ZmxhZ3N9KSAke2NvbXBsZXRpb25zQ21kfSA7O2A7XG4gICAgICB9XG4gICAgICBvcHRzICs9IFwiXFxuICAgIGVzYWNcIjtcbiAgICB9XG5cbiAgICByZXR1cm4gb3B0cztcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVDb21tYW5kQ29tcGxldGlvbnNDb21tYW5kKFxuICAgIGNvbW1hbmQ6IENvbW1hbmQsXG4gICAgcGF0aDogc3RyaW5nLFxuICApIHtcbiAgICBjb25zdCBhcmdzOiBBcmd1bWVudFtdID0gY29tbWFuZC5nZXRBcmd1bWVudHMoKTtcbiAgICBpZiAoYXJncy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSBjb21tYW5kLmdldFR5cGUoYXJnc1swXS50eXBlKTtcbiAgICAgIGlmICh0eXBlICYmIHR5cGUuaGFuZGxlciBpbnN0YW5jZW9mIEZpbGVUeXBlKSB7XG4gICAgICAgIHJldHVybiBgXyR7cmVwbGFjZVNwZWNpYWxDaGFycyh0aGlzLmNtZC5nZXROYW1lKCkpfV9maWxlX2RpcmA7XG4gICAgICB9XG4gICAgICAvLyBAVE9ETzogYWRkIHN1cHBvcnQgZm9yIG11bHRpcGxlIGFyZ3VtZW50c1xuICAgICAgcmV0dXJuIGBfJHtyZXBsYWNlU3BlY2lhbENoYXJzKHRoaXMuY21kLmdldE5hbWUoKSl9X2NvbXBsZXRlICR7XG4gICAgICAgIGFyZ3NbMF0uYWN0aW9uXG4gICAgICB9JHtwYXRofWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlT3B0aW9uQ29tcGxldGlvbnNDb21tYW5kKFxuICAgIGNvbW1hbmQ6IENvbW1hbmQsXG4gICAgYXJnczogQXJndW1lbnRbXSxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgb3B0cz86IHsgc3RhbmRhbG9uZT86IGJvb2xlYW4gfSxcbiAgKSB7XG4gICAgaWYgKGFyZ3MubGVuZ3RoKSB7XG4gICAgICBjb25zdCB0eXBlID0gY29tbWFuZC5nZXRUeXBlKGFyZ3NbMF0udHlwZSk7XG4gICAgICBpZiAodHlwZSAmJiB0eXBlLmhhbmRsZXIgaW5zdGFuY2VvZiBGaWxlVHlwZSkge1xuICAgICAgICByZXR1cm4gYG9wdHM9KCk7IF8ke3JlcGxhY2VTcGVjaWFsQ2hhcnModGhpcy5jbWQuZ2V0TmFtZSgpKX1fZmlsZV9kaXJgO1xuICAgICAgfVxuICAgICAgLy8gQFRPRE86IGFkZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBhcmd1bWVudHNcbiAgICAgIHJldHVybiBgb3B0cz0oKTsgXyR7cmVwbGFjZVNwZWNpYWxDaGFycyh0aGlzLmNtZC5nZXROYW1lKCkpfV9jb21wbGV0ZSAke1xuICAgICAgICBhcmdzWzBdLmFjdGlvblxuICAgICAgfSR7cGF0aH1gO1xuICAgIH1cblxuICAgIGlmIChvcHRzPy5zdGFuZGFsb25lKSB7XG4gICAgICByZXR1cm4gXCJvcHRzPSgpXCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVwbGFjZVNwZWNpYWxDaGFycyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvW15hLXpBLVowLTldL2csIFwiX1wiKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxTQUFTLFFBQVEsUUFBUSxtQkFBbUI7QUFFNUMsdUNBQXVDLEdBQ3ZDLE9BQU8sTUFBTTs7RUFDWCx5REFBeUQsR0FDekQsT0FBYyxTQUFTLEdBQVksRUFBRTtJQUNuQyxPQUFPLElBQUkseUJBQXlCLEtBQUssUUFBUTtFQUNuRDtFQUVBLFlBQW9CLEFBQVUsR0FBWSxDQUFFO1NBQWQsTUFBQTtFQUFlO0VBRTdDLHFDQUFxQyxHQUNyQyxBQUFRLFdBQW1CO0lBQ3pCLE1BQU0sT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU87SUFDN0IsTUFBTSxVQUE4QixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsS0FDbkQsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksR0FDNUI7SUFFSixPQUFPLENBQUM7OEJBQ2tCLEVBQUUsT0FBTyxRQUFROztDQUU5QyxFQUFFLG9CQUFvQixNQUFNOzs7Ozs7Ozs7O0dBVTFCLEVBQUUsb0JBQW9CLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJOzsyQkFFbEIsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRzs7Ozs7O0dBTTdDLEVBQUUsb0JBQW9CLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCMUMsRUFBRSxvQkFBb0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUk7OztLQUd4QyxFQUFFLG9CQUFvQixJ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 +// denoCacheMetadata=230095213699864418,14683930732332696699
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/d51312a103219438e4b7584cb897e47f0938ec37f40c6dab8e55b3dd3262275d.js b/vendor/gen/https/deno.land/d51312a103219438e4b7584cb897e47f0938ec37f40c6dab8e55b3dd3262275d.js new file mode 100644 index 0000000..47c734a --- /dev/null +++ b/vendor/gen/https/deno.land/d51312a103219438e4b7584cb897e47f0938ec37f40c6dab8e55b3dd3262275d.js @@ -0,0 +1,3 @@ +export const specifier = "https://cdn.jsdelivr.net/gh/lumeland/bar@0.1.4/lume-bar.js"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvZGVwcy9kZWJ1Z2Jhci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSB7XG4gIENvbGxlY3Rpb24sXG4gIEl0ZW0sXG59IGZyb20gXCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvZ2gvbHVtZWxhbmQvYmFyQDAuMS40L3R5cGVzLnRzXCI7XG5leHBvcnQgY29uc3Qgc3BlY2lmaWVyID1cbiAgXCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvZ2gvbHVtZWxhbmQvYmFyQDAuMS40L2x1bWUtYmFyLmpzXCI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxNQUFNLFlBQ1gsNkRBQTZEIn0= +// denoCacheMetadata=5935628692306340201,1883460399652556543
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/d6813b59e015f107c0a8367217770b111bf9f55ef06bdf428a94e413a42c5d64.js b/vendor/gen/https/deno.land/d6813b59e015f107c0a8367217770b111bf9f55ef06bdf428a94e413a42c5d64.js new file mode 100644 index 0000000..5b23ebd --- /dev/null +++ b/vendor/gen/https/deno.land/d6813b59e015f107c0a8367217770b111bf9f55ef06bdf428a94e413a42c5d64.js @@ -0,0 +1,11 @@ +export function insertContent(content, newContent, placeholder) { + if (content) { + if (placeholder && content.includes(placeholder)) { + return content.replace(placeholder, newContent); + } + return `${content}\n${newContent}`; + } + return newContent; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS91dGlscy9wYWdlX2NvbnRlbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGluc2VydENvbnRlbnQoXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgbmV3Q29udGVudDogc3RyaW5nLFxuICBwbGFjZWhvbGRlcj86IHN0cmluZyxcbikge1xuICBpZiAoY29udGVudCkge1xuICAgIGlmIChwbGFjZWhvbGRlciAmJiBjb250ZW50LmluY2x1ZGVzKHBsYWNlaG9sZGVyKSkge1xuICAgICAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZShcbiAgICAgICAgcGxhY2Vob2xkZXIsXG4gICAgICAgIG5ld0NvbnRlbnQsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gYCR7Y29udGVudH1cXG4ke25ld0NvbnRlbnR9YDtcbiAgfVxuXG4gIHJldHVybiBuZXdDb250ZW50O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sU0FBUyxjQUNkLE9BQWUsRUFDZixVQUFrQixFQUNsQixXQUFvQjtFQUVwQixJQUFJLFNBQVM7SUFDWCxJQUFJLGVBQWUsUUFBUSxRQUFRLENBQUMsY0FBYztNQUNoRCxPQUFPLFFBQVEsT0FBTyxDQUNwQixhQUNBO0lBRUo7SUFDQSxPQUFPLEdBQUcsUUFBUSxFQUFFLEVBQUUsWUFBWTtFQUNwQztFQUVBLE9BQU87QUFDVCJ9 +// denoCacheMetadata=9640916408444850329,17591206303582923743
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/d83074ffc62bbad072e50e64df7a17cc4c4ec4206af1dbdced23b7c68bb89b82.js b/vendor/gen/https/deno.land/d83074ffc62bbad072e50e64df7a17cc4c4ec4206af1dbdced23b7c68bb89b82.js new file mode 100644 index 0000000..757de56 --- /dev/null +++ b/vendor/gen/https/deno.land/d83074ffc62bbad072e50e64df7a17cc4c4ec4206af1dbdced23b7c68bb89b82.js @@ -0,0 +1,21 @@ +import { parse } from "../../deps/jsonc.ts"; +import { isPlainObject } from "../utils/object.ts"; +import { read } from "../utils/read.ts"; +/** Load and parse a JSON / JSONC file */ export default async function json(path) { + const text = await read(path, false); + if (!text.trim()) { + return {}; + } + const content = path.endsWith(".jsonc") ? parse(text) : JSON.parse(text); + if (!content) { + return {}; + } + if (isPlainObject(content)) { + return content; + } + return { + content + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS9sb2FkZXJzL2pzb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGFyc2UgfSBmcm9tIFwiLi4vLi4vZGVwcy9qc29uYy50c1wiO1xuaW1wb3J0IHsgaXNQbGFpbk9iamVjdCB9IGZyb20gXCIuLi91dGlscy9vYmplY3QudHNcIjtcbmltcG9ydCB7IHJlYWQgfSBmcm9tIFwiLi4vdXRpbHMvcmVhZC50c1wiO1xuXG5pbXBvcnQgdHlwZSB7IFJhd0RhdGEgfSBmcm9tIFwiLi4vZmlsZS50c1wiO1xuXG4vKiogTG9hZCBhbmQgcGFyc2UgYSBKU09OIC8gSlNPTkMgZmlsZSAqL1xuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24ganNvbihwYXRoOiBzdHJpbmcpOiBQcm9taXNlPFJhd0RhdGE+IHtcbiAgY29uc3QgdGV4dCA9IGF3YWl0IHJlYWQocGF0aCwgZmFsc2UpO1xuXG4gIGlmICghdGV4dC50cmltKCkpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBjb250ZW50ID0gcGF0aC5lbmRzV2l0aChcIi5qc29uY1wiKSA/IHBhcnNlKHRleHQpIDogSlNPTi5wYXJzZSh0ZXh0KTtcblxuICBpZiAoIWNvbnRlbnQpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBpZiAoaXNQbGFpbk9iamVjdChjb250ZW50KSkge1xuICAgIHJldHVybiBjb250ZW50IGFzIFJhd0RhdGE7XG4gIH1cblxuICByZXR1cm4geyBjb250ZW50IH07XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxLQUFLLFFBQVEsc0JBQXNCO0FBQzVDLFNBQVMsYUFBYSxRQUFRLHFCQUFxQjtBQUNuRCxTQUFTLElBQUksUUFBUSxtQkFBbUI7QUFJeEMsdUNBQXVDLEdBQ3ZDLGVBQWUsZUFBZSxLQUFLLElBQVk7RUFDN0MsTUFBTSxPQUFPLE1BQU0sS0FBSyxNQUFNO0VBRTlCLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSTtJQUNoQixPQUFPLENBQUM7RUFDVjtFQUVBLE1BQU0sVUFBVSxLQUFLLFFBQVEsQ0FBQyxZQUFZLE1BQU0sUUFBUSxLQUFLLEtBQUssQ0FBQztFQUVuRSxJQUFJLENBQUMsU0FBUztJQUNaLE9BQU8sQ0FBQztFQUNWO0VBRUEsSUFBSSxjQUFjLFVBQVU7SUFDMUIsT0FBTztFQUNUO0VBRUEsT0FBTztJQUFFO0VBQVE7QUFDbkIifQ== +// denoCacheMetadata=4438634572977741856,14554790375917566062
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/d89a261d566c18ca648e5048a6db5c13d40b0f4c87d46d7cbb5e356886806dce.js b/vendor/gen/https/deno.land/d89a261d566c18ca648e5048a6db5c13d40b0f4c87d46d7cbb5e356886806dce.js new file mode 100644 index 0000000..103c4d5 --- /dev/null +++ b/vendor/gen/https/deno.land/d89a261d566c18ca648e5048a6db5c13d40b0f4c87d46d7cbb5e356886806dce.js @@ -0,0 +1,138 @@ +// deno-lint-ignore-file no-explicit-any ban-types +import { tty } from "../ansi/tty.ts"; +import { GenericPrompt } from "./_generic_prompt.ts"; +export function prompt(prompts, options) { + return new PromptList(prompts, options).run(options?.initial); +} +let injected = {}; +/** + * Inject prompt values. Can be used for unit tests or pre selections. + * @param values Input values object. + */ export function inject(values) { + injected = values; +} +class PromptList { + prompts; + options; + result; + index; + names; + isInBeforeHook; + get prompt() { + return this.prompts[this.index]; + } + constructor(prompts, options){ + this.prompts = prompts; + this.options = options; + this.result = {}; + this.index = -1; + this.isInBeforeHook = false; + this.names = this.prompts.map((prompt)=>prompt.name); + } + async run(name) { + this.index = -1; + this.result = {}; + this.isInBeforeHook = false; + await this.next(name); + return this.result; + } + async next(name) { + if (this.updateIndex(name)) { + await this.runBeforeHook(async ()=>{ + this.isInBeforeHook = false; + await this.runPrompt(); + await this.runAfterHook(); + }); + } + } + updateIndex(name) { + if (name && typeof name === "string") { + this.index = this.names.indexOf(name); + if (this.index === -1) { + throw new Error(`Invalid prompt name: ${name}, allowed prompt names: ${this.names.join(", ")}`); + } + } else if (typeof name === "number") { + if (name < 0 || name > this.names.length) { + throw new Error(`Invalid prompt index: ${name}, prompt length: ${this.names.length}`); + } + this.index = name; + } else if (name === true && !this.isInBeforeHook) { + this.index++; + if (this.index < this.names.length - 1) { + this.index++; + } + } else { + this.index++; + } + this.isInBeforeHook = false; + if (this.index < this.names.length) { + return true; + } else if (this.index === this.names.length) { + return false; + } else { + throw new Error("next() called multiple times"); + } + } + async runBeforeHook(run) { + this.isInBeforeHook = true; + const next = async (name)=>{ + if (name || typeof name === "number") { + return this.next(name); + } + await run(); + }; + if (this.options?.before) { + await this.options.before(this.prompt.name, this.result, async (name)=>{ + if (name || typeof name === "number") { + return this.next(name); + } else if (this.prompt.before) { + await this.prompt.before(this.result, next); + } else { + await run(); + } + }); + return; + } else if (this.prompt.before) { + await this.prompt.before(this.result, next); + return; + } + await run(); + } + async runPrompt() { + const prompt = this.prompt.type; + if (typeof injected[this.prompt.name] !== "undefined") { + if (prompt.inject) { + prompt.inject(injected[this.prompt.name]); + } else { + GenericPrompt.inject(injected[this.prompt.name]); + } + } + try { + this.result[this.prompt.name] = await prompt.prompt({ + cbreak: this.options?.cbreak, + ...this.prompt + }); + } finally{ + tty.cursorShow(); + } + } + async runAfterHook() { + if (this.options?.after) { + await this.options.after(this.prompt.name, this.result, async (name)=>{ + if (name) { + return this.next(name); + } else if (this.prompt.after) { + await this.prompt.after(this.result, (name)=>this.next(name)); + } else { + await this.next(); + } + }); + } else if (this.prompt.after) { + await this.prompt.after(this.result, (name)=>this.next(name)); + } else { + await this.next(); + } + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvcHJvbXB0L3Byb21wdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBkZW5vLWxpbnQtaWdub3JlLWZpbGUgbm8tZXhwbGljaXQtYW55IGJhbi10eXBlc1xuXG5pbXBvcnQgeyB0dHkgfSBmcm9tIFwiLi4vYW5zaS90dHkudHNcIjtcbmltcG9ydCB7XG4gIEdlbmVyaWNQcm9tcHQsXG4gIEdlbmVyaWNQcm9tcHRPcHRpb25zLFxuICBTdGF0aWNHZW5lcmljUHJvbXB0LFxufSBmcm9tIFwiLi9fZ2VuZXJpY19wcm9tcHQudHNcIjtcblxudHlwZSBOZXh0PFROYW1lIGV4dGVuZHMga2V5b2YgYW55PiA9IChcbiAgbmV4dD86IFROYW1lIHwgbnVtYmVyIHwgdHJ1ZSB8IG51bGwsXG4pID0+IFByb21pc2U8dm9pZD47XG5cbnR5cGUgUHJvbXB0T3B0aW9uczxcbiAgVE5hbWUgZXh0ZW5kcyBzdHJpbmcsXG4gIFRTdGF0aWNQcm9tcHQgZXh0ZW5kcyBTdGF0aWNHZW5lcmljUHJvbXB0PGFueSwgYW55LCBhbnksIGFueSwgYW55PiB8IHZvaWQsXG4gIFRSZXN1bHQsXG4gIFRPcHRpb25zID0gVFN0YXRpY1Byb21wdCBleHRlbmRzIFN0YXRpY0dlbmVyaWNQcm9tcHQ8YW55LCBhbnksIGFueSwgYW55LCBhbnk+XG4gICAgPyBQYXJhbWV0ZXJzPFRTdGF0aWNQcm9tcHRbXCJwcm9tcHRcIl0+WzBdXG4gICAgOiBuZXZlcixcbj4gPSBUU3RhdGljUHJvbXB0IGV4dGVuZHMgU3RhdGljR2VuZXJpY1Byb21wdDxhbnksIGFueSwgYW55LCBhbnksIGFueT4gPyBcbiAgICAmIHtcbiAgICAgIG5hbWU6IFROYW1lO1xuICAgICAgdHlwZTogVFN0YXRpY1Byb21wdDtcbiAgICAgIGJlZm9yZT86IChcbiAgICAgICAgb3B0czogVFJlc3VsdCxcbiAgICAgICAgbmV4dDogTmV4dDxFeGNsdWRlPGtleW9mIFRSZXN1bHQsIHN5bWJvbD4+LFxuICAgICAgKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgICAgIGFmdGVyPzogKFxuICAgICAgICBvcHRzOiBUUmVzdWx0LFxuICAgICAgICBuZXh0OiBOZXh0PEV4Y2x1ZGU8a2V5b2YgVFJlc3VsdCwgc3ltYm9sPj4sXG4gICAgICApID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICAgIH1cbiAgICAvLyBleGNsdWRlIG5vbmUgb3B0aW9ucyBwYXJhbWV0ZXJcbiAgICAmIChUT3B0aW9ucyBleHRlbmRzIEdlbmVyaWNQcm9tcHRPcHRpb25zPGFueSwgYW55PiA/IFRPcHRpb25zIDoge30pXG4gIDogbmV2ZXI7XG5cbnR5cGUgUHJvbXB0UmVzdWx0PFxuICBOIGV4dGVuZHMgc3RyaW5nLFxuICBHIGV4dGVuZHMgU3RhdGljR2VuZXJpY1Byb21wdDxhbnksIGFueSwgYW55LCBhbnksIGFueT4gfCB2b2lkLFxuPiA9IEcgZXh0ZW5kcyBTdGF0aWNHZW5lcmljUHJvbXB0PGFueSwgYW55LCBhbnksIGFueSwgYW55PiA/IHtcbiAgICBbSyBpbiBOXT86IEF3YWl0ZWQ8UmV0dXJuVHlwZTxHW1wicHJvbXB0XCJdPj47XG4gIH1cbiAgOiB7fTtcblxuaW50ZXJmYWNlIFByb21wdExpc3RPcHRpb25zPFIsIE4gZXh0ZW5kcyBrZXlvZiBSID0ga2V5b2YgUj4ge1xuICBjYnJlYWs/OiBib29sZWFuO1xuICBiZWZvcmU/OiAoXG4gICAgbmFtZTogTixcbiAgICBvcHRzOiBSLFxuICAgIG5leHQ6IE5leHQ8RXhjbHVkZTxOLCBzeW1ib2w+PixcbiAgKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgYWZ0ZXI/OiAoXG4gICAgbmFtZTogTixcbiAgICBvcHRzOiBSLFxuICAgIG5leHQ6IE5leHQ8RXhjbHVkZTxOLCBzeW1ib2w+PixcbiAgKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqIEdsb2JhbCBwcm9tcHQgb3B0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2xvYmFsUHJvbXB0T3B0aW9uczxSLCBOIGV4dGVuZHMga2V5b2YgUiA9IGtleW9mIFI+XG4gIGV4dGVuZHMgUHJvbXB0TGlzdE9wdGlvbnM8UiwgTj4ge1xuICBpbml0aWFsPzogTiBleHRlbmRzIHN5bWJvbCA/IG5ldmVyIDogTjtcbn1cblxudHlwZSBJZDxUPiA9IFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICA/IFQgZXh0ZW5kcyBpbmZlciBVID8geyBbSyBpbiBrZXlvZiBVXTogSWQ8VVtLXT4gfSA6IG5ldmVyXG4gIDogVDtcblxuZXhwb3J0IGZ1bmN0aW9uIHByb21wdDxcbiAgVE5hbWUwIGV4dGVuZHMgc3RyaW5nLFxuICBUTmFtZTEgZXh0ZW5kcyBzdHJpbmcsXG4gIFROYW1lMiBleHRlbmRzIHN0cmluZyxcbiAgVE5hbWUzIGV4dGVuZHMgc3RyaW5nLFxuICBUTmFtZTQgZXh0ZW5kcyBzdHJpbmcsXG4gIFROYW1lNSBleHRlbmRzIHN0cmluZyxcbiAgVE5hbWU2IGV4dGVuZHMgc3RyaW5nLFxuICBUTmFtZTcgZXh0ZW5kcyBzdHJpbmcsXG4gIFROYW1lOCBleHRlbmRzIHN0cmluZyxcbiAgVE5hbWU5IGV4dGVuZHMgc3RyaW5nLFxuICBUTmFtZTEwIGV4dGVuZHMgc3RyaW5nLFxuICBUTmFtZTExIGV4dGVuZHMgc3RyaW5nLFxuICBUTmFtZTEyIGV4dGVuZHMgc3RyaW5nLFxuICBUTmFtZTEzIGV4dGVuZHMgc3RyaW5nLFxuICBUTmFtZTE0IGV4dGVuZHMgc3RyaW5nLFxuICBUTmFtZTE1IGV4dGVuZHMgc3RyaW5nLFxuICBUTmFtZTE2IGV4dGVuZHMgc3RyaW5nLFxuICBUTmFtZTE3IGV4dGVuZHMgc3RyaW5nLFxuICBUTmFtZTE4IGV4dGVuZHMgc3RyaW5nLFxuICBUTmFtZTE5IGV4dGVuZHMgc3RyaW5nLFxuICBUTmFtZTIwIGV4dGVuZHMgc3RyaW5nLFxuICBUTmFtZTIxIGV4dGVuZHMgc3RyaW5nLFxuICBUTmFtZTIyIGV4dGVuZHMgc3RyaW5nLFxuICBUTmFtZTIzIGV4dGVuZHMgc3RyaW5nLFxuICBUT3B0aW9uczAgZXh0ZW5kcyBHZW5lcmljUHJvbXB0T3B0aW9uczxhbnksIGFueT4sXG4gIFRPcHRpb25zMSBleHRlbmRzIEdlbmVyaWNQcm9tcHRPcHRpb25zPGFueSwgYW55PixcbiAgVE9wdGlvbnMyIGV4dGVuZHMgR2VuZXJpY1Byb21wdE9wdGlvbnM8YW55LCBhbnk+LFxuICBUT3B0aW9uczMgZXh0ZW5kcyBHZW5lcmljUHJvbXB0T3B0aW9uczxhbnksIGFueT4sXG4gIFRPcHRpb25zNCBleHRlbmRzIEdlbmVyaWNQcm9tcHRPcHRpb25zPGFueSwgYW55PixcbiAgVE9wdGlvbnM1IGV4dGVuZHMgR2VuZXJpY1Byb21wdE9wdGlvbnM8YW55LCBhbnk+LFxuICBUT3B0aW9uczYgZXh0ZW5kcyBHZW5lcmljUHJvbXB0T3B0aW9uczxhbnksIGFueT4sXG4gIFRPcHRpb25zNyBleHRlbmRzIEdlbmVyaWNQcm9tcHRPcHRpb25zPGFueSwgYW55PixcbiAgVE9wdGlvbnM4IGV4dGVuZHMgR2VuZXJpY1Byb21wdE9wdGlvbnM8YW55LCBhbnk+LFxuICBUT3B0aW9uczkgZXh0ZW5kcyBHZW5lcmljUHJvbXB0T3B0aW9uczxhbnksIGFueT4sXG4gIFRPcHRpb25zMTAgZXh0ZW5kcyBHZW5lcmljUHJvbXB0T3B0aW9uczxhbnksIGFueT4sXG4gIFRPcHRpb25zMTEgZXh0ZW5kcyBHZW5lcmljUHJvbXB0T3B0aW9uczxhbnksIGFueT4sXG4gIFRPcHRpb25zMTIgZXh0ZW5kcyBHZW5lcmljUHJvbXB0T3B0aW9uczxhbnksIGFueT4sXG4gIFRPcHRpb25zMTMgZXh0ZW5kcyBHZW5lcmljUHJvbXB0T3B0aW9uczxhbnksIGFueT4sXG4gIFRPcHRpb25zMTQgZXh0ZW5kcyBHZW5lcmljUHJvbXB0T3B0aW9uczxhbnksIGFueT4sXG4gIFRPcHRpb25zMTUgZXh0ZW5kcyBHZW5lcmljUHJvbXB0T3B0aW9uczxhbnksIGFueT4sXG4gIFRPcHRpb25zMTYgZXh0ZW5kcyBHZW5lcmljUHJvbXB0T3B0aW9uczxhbnksIGFueT4sXG4gIFRPcHRpb25zMTcgZXh0ZW5kcyBHZW5lcmljUHJvbXB0T3B0aW9uczxhbnksIGFueT4sXG4gIFRPcHRpb25zMTggZXh0ZW5kcyBHZW5lcmljUHJvbXB0T3B0aW9uczxhbnksIGFueT4sXG4gIFRPcHRpb25zMTkgZXh0ZW5kcyBHZW5lcmljUHJvbXB0T3B0aW9uczxhbnksIGFueT4sXG4gIFRPcHRpb25zMjAgZXh0ZW5kcyBHZW5lcmljUHJvbXB0T3B0aW9uczxhbnksIGFueT4sXG4gIFRPcHRpb25zMjEgZXh0ZW5kcyBHZW5lcmljUHJvbXB0T3B0aW9uczxhbnksIGFueT4sXG4gIFRPcHRpb25zMjIgZXh0ZW5kcyBHZW5lcmljUHJvbXB0T3B0aW9uczxhbnksIGFueT4sXG4gIFRPcHRpb25zMjMgZXh0ZW5kcyBHZW5lcmljUHJvbXB0T3B0aW9uczxhbnksIGFueT4sXG4gIFRTdGF0aWNQcm9tcHQwIGV4dGVuZHMgU3RhdGljR2VuZXJpY1Byb21wdDxhbnksIGFueSwgVE9wdGlvbnMwLCBhbnksIGFueT4sXG4gIFRTdGF0aWNQcm9tcHQxIGV4dGVuZHNcbiAgICB8IFN0YXRpY0dlbmVyaWNQcm9tcHQ8YW55LCBhbnksIFRPcHRpb25zMSwgYW55LCBhbnk+XG4gICAgfCB2b2lkID0gdm9pZCxcbiAgVFN0YXRpY1Byb21wdDIgZXh0ZW5kc1xuICAgIHwgU3RhdGljR2VuZXJpY1Byb21wdDxhbnksIGFueSwgVE9wdGlvbnMyLCBhbnksIGFueT5cbiAgICB8IHZvaWQgPSB2b2lkLFxuICBUU3RhdGljUHJvbXB0MyBleHRlbmRzXG4gICAgfCBTdGF0aWNHZW5lcmljUHJvbXB0PGFueSwgYW55LCBUT3B0aW9uczMsIGFueSwgYW55PlxuICAgIHwgdm9pZCA9IHZvaWQsXG4gIFRTdGF0aWNQcm9tcHQ0IGV4dGVuZHNcbiAgICB8IFN0YXRpY0dlbmVyaWNQcm9tcHQ8YW55LCBhbnksIFRPcHRpb25zNCwgYW55LCBhbnk+XG4gICAgfCB2b2lkID0gdm9pZCxcbiAgVFN0YXRpY1Byb21wdDUgZXh0ZW5kc1xuICAgIHwgU3RhdGljR2VuZXJpY1Byb21wdDxhbnksIGFueSwgVE9wdGlvbnM1LCBhbnksIGFueT5cbiAgICB8IHZvaWQgPSB2b2lkLFxuICBUU3RhdGljUHJvbXB0NiBleHRlbmRzXG4gICAgfCBTdGF0aWNHZW5lcmljUHJvbXB0PGFueSwgYW55LCBUT3B0aW9uczYsIGFueSwgYW55PlxuICAgIHwgdm9pZCA9IHZvaWQsXG4gIFRTdGF0aWNQcm9tcHQ3IGV4dGVuZHNcbiAgICB8IFN0YXRpY0dlbmVyaWNQcm9tcHQ8YW55LCBhbnksIFRPcHRpb25zNywgYW55LCBhbnk+XG4gICAgfCB2b2lkID0gdm9pZCxcbiAgVFN0YXRpY1Byb21wdDggZXh0ZW5kc1xuICAgIHwgU3RhdGljR2VuZXJpY1Byb21wdDxhbnksIGFueSwgVE9wdGlvbnM4LCBhbnksIGFueT5cbiAgICB8IHZvaWQgPSB2b2lkLFxuICBUU3RhdGljUHJvbXB0OSBleHRlbmRzXG4gICAgfCBTdGF0aWNHZW5lcmljUHJvbXB0PGFueSwgYW55LCBUT3B0aW9uczksIGFueSwgYW55PlxuICAgIHwgdm9pZCA9IHZvaWQsXG4gIFRTdGF0aWNQcm9tcHQxMCBleHRlbmRzXG4gICAgfCBTdGF0aWNHZW5lcmljUHJvbXB0PGFueSwgYW55LCBUT3B0aW9uczEwLCBhbnksIGFueT5cbiAgICB8IHZvaWQgPSB2b2lkLFxuICBUU3RhdGljUHJvbXB0MTEgZXh0ZW5kc1xuICAgIHwgU3RhdGljR2VuZXJpY1Byb21wdDxhbnksIGFueSwgVE9wdGlvbnMxMSwgYW55LCBhbnk+XG4gICAgfCB2b2lkID0gdm9pZCxcbiAgVFN0YXRpY1Byb21wdDEyIGV4dGVuZHNcbiAgICB8IFN0YXRpY0dlbmVyaWNQcm9tcHQ8YW55LCBhbnksIFRPcHRpb25zMTIsIGFueSwgYW55PlxuICAgIHwgdm9pZCA9IHZvaWQsXG4gIFRTdGF0aWNQcm9tcHQxMyBleHRlbmRzXG4gICAgfCBTdGF0aWNHZW5lcmljUHJvbXB0PGFueSwgYW55LCBUT3B0aW9uczEzLCBhbnksIGFueT5cbiAgICB8IHZvaWQgPSB2b2lkLFxuICBUU3RhdGljUHJvbXB0MTQgZXh0ZW5kc1xuICAgIHwgU3RhdGljR2VuZXJpY1Byb21wdDxhbnksIGFueSwgVE9wdGlvbnMxNCwgYW55LCBhbnk+XG4gICAgfCB2b2lkID0gdm9pZCxcbiAgVFN0YXRpY1Byb21wdDE1IGV4dGVuZHNcbiAgICB8IFN0YXRpY0dlbmVyaWNQcm9tcHQ8YW55LCBhbnksIFRPcHRpb25zMTUsIGFueSwgYW55PlxuICAgIHwgdm9pZCA9IHZvaWQsXG4gIFRTdGF0aWNQcm9tcHQxNiBleHRlbmRzXG4gICAgfCBTdGF0aWNHZW5lcmljUHJvbXB0PGFueSwgYW55LCBUT3B0aW9uczE2LCBhbnksIGFueT5cbiAgICB8IHZvaWQgPSB2b2lkLFxuICBUU3RhdGljUHJvbXB0MTcgZXh0ZW5kc1xuICAgIHwgU3RhdGljR2VuZXJpY1Byb21wdDxhbnksIGFueSwgVE9wdGlvbnMxNywgYW55LCBhbnk+XG4gICAgfCB2b2lkID0gdm9pZCxcbiAgVFN0YXRpY1Byb21wdDE4IGV4dGVuZHNcbiAgICB8IFN0YXRpY0dlbmVyaWNQcm9tcHQ8YW55LCBhbnksIFRPcHRpb25zMTgsIGFueSwgYW55PlxuICAgIHwgdm9pZCA9IHZvaWQsXG4gIFRTdGF0aWNQcm9tcHQxOSBleHRlbmRzXG4gICAgfCBTdGF0aWNHZW5lcmljUHJvbXB0PGFueSwgYW55LCBUT3B0aW9uczE5LCBhbnksIGFueT5cbiAgICB8IHZvaWQgPSB2b2lkLFxuICBUU3RhdGljUHJvbXB0MjAgZXh0ZW5kc1xuICAgIHwgU3RhdGljR2VuZXJpY1Byb21wdDxhbnksIGFueSwgVE9wdGlvbnMyMCwgYW55LCBhbnk+XG4gICAgfCB2b2lkID0gdm9pZCxcbiAgVFN0YXRpY1Byb21wdDIxIGV4dGVuZHNcbiAgICB8IFN0YXRpY0dlbmVyaWNQcm9tcHQ8YW55LCBhbnksIFRPcHRpb25zMjEsIGFueSwgYW55PlxuICAgIHwgdm9pZCA9IHZvaWQsXG4gIFRTdGF0aWNQcm9tcHQyMiBleHRlbmRzXG4gICAgfCBTdGF0aWNHZW5lcmljUHJvbXB0PGFueSwgYW55LCBUT3B0aW9uczIyLCBhbnksIGFueT5cbiAgICB8IHZvaWQgPSB2b2lkLFxuICBUU3RhdGljUHJvbXB0MjMgZXh0ZW5kc1xuICAgIHwgU3RhdGljR2VuZXJpY1Byb21wdDxhbnksIGFueSwgVE9wdGlvbnMyMywgYW55LCBhbnk+XG4gICAgfCB2b2lkID0gdm9pZCxcbiAgVFJlc3VsdCA9IElkPFxuICAgICYgUHJvbXB0UmVzdWx0PFROYW1lMCwgVFN0YXRpY1Byb21wdDA+XG4gICAgJiBQcm9tcHRSZXN1bHQ8VE5hbWUxLCBUU3RhdGljUHJvbXB0MT5cbiAgICAmIFByb21wdFJlc3VsdDxUTmFtZTIsIFRTdGF0aWNQcm9tcHQyPlxuICAgICYgUHJvbXB0UmVzdWx0PFROYW1lMywgVFN0YXRpY1Byb21wdDM+XG4gICAgJiBQcm9tcHRSZXN1bHQ8VE5hbWU0LCBUU3RhdGljUHJvbXB0ND5cbiAgICAmIFByb21wdFJlc3VsdDxUTmFtZTUsIFRTdGF0aWNQcm9tcHQ1PlxuICAgICYgUHJvbXB0UmVzdWx0PFROYW1lNiwgVFN0YXRpY1Byb21wdDY+XG4gICAgJiBQcm9tcHRSZXN1bHQ8VE5hbWU3LCBUU3RhdGljUHJvbXB0Nz5cbiAgICAmIFByb21wdFJlc3VsdDxUTmFtZTgsIFRTdGF0aWNQcm9tcHQ4PlxuICAgICYgUHJvbXB0UmVzdWx0PFROYW1lOSwgVFN0YXRpY1Byb21wdDk+XG4gICAgJiBQcm9tcHRSZXN1bHQ8VE5hbWUxMCwgVFN0YXRpY1Byb21wdDEwPlxuICAgICYgUHJvbXB0UmVzdWx0PFROYW1lMTEsIFRTdGF0aWNQcm9tcHQxMT5cbiAgICAmIFByb21wdFJlc3VsdDxUTmFtZTEyLCBUU3RhdGljUHJvbXB0MTI+XG4gICAgJiBQcm9tcHRSZXN1bHQ8VE5hbWUxMywgVFN0YXRpY1Byb21wdDEzPlxuICAgICYgUHJvbXB0UmVzdWx0PFROYW1lMTQsIFRTdGF0aWNQcm9tcHQxND5cbiAgICAmIFByb21wdFJlc3VsdDxUTmFtZTE1LCBUU3RhdGljUHJvbXB0MTU+XG4gICAgJiBQcm9tcHRSZXN1bHQ8VE5hbWUxNiwgVFN0YXRpY1Byb21wdDE2PlxuICAgICYgUHJvbXB0UmVzdWx0PFROYW1lMTcsIFRTdGF0aWNQcm9tcHQxNz5cbiAgICAmIFByb21wdFJlc3VsdDxUTmFtZTE4LCBUU3RhdGljUHJvbXB0MTg+XG4gICAgJiBQcm9tcHRSZXN1bHQ8VE5hbWUxOSwgVFN0YXRpY1Byb21wdDE5PlxuICAgICYgUHJvbXB0UmVzdWx0PFROYW1lMjAsIFRTdGF0aWNQcm9tcHQyMD5cbiAgICAmIFByb21wdFJlc3VsdDxUTmFtZTIxLCBUU3RhdGljUHJvbXB0MjE+XG4gICAgJiBQcm9tcHRSZXN1bHQ8VE5hbWUyMiwgVFN0YXRpY1Byb21wdDIyPlxuICAgICYgUHJvbXB0UmVzdWx0PFROYW1lMjMsIFRTdGF0aWNQcm9tcHQyMz5cbiAgPixcbj4ocHJvbXB0czogW1xuICBQcm9tcHRPcHRpb25zPFROYW1lMCwgVFN0YXRpY1Byb21wdDAsIFRSZXN1bHQ+LFxuICBQcm9tcHRPcHRpb25zPFROYW1lMSwgVFN0YXRpY1Byb21wdDEsIFRSZXN1bHQ+PyxcbiAgUHJvbXB0T3B0aW9uczxUTmFtZTIsIFRTdGF0aWNQcm9tcHQyLCBUUmVzdWx0Pj8sXG4gIFByb21wdE9wdGlvbnM8VE5hbWUzLCBUU3RhdGljUHJvbXB0MywgVFJlc3VsdD4/LFxuICBQcm9tcHRPcHRpb25zPFROYW1lNCwgVFN0YXRpY1Byb21wdDQsIFRSZXN1bHQ+PyxcbiAgUHJvbXB0T3B0aW9uczxUTmFtZTUsIFRTdGF0aWNQcm9tcHQ1LCBUUmVzdWx0Pj8sXG4gIFByb21wdE9wdGlvbnM8VE5hbWU2LCBUU3RhdGljUHJvbXB0NiwgVFJlc3VsdD4/LFxuICBQcm9tcHRPcHRpb25zPFROYW1lNywgVFN0YXRpY1Byb21wdDcsIFRSZXN1bHQ+PyxcbiAgUHJvbXB0T3B0aW9uczxUTmFtZTgsIFRTdGF0aWNQcm9tcHQ4LCBUUmVzdWx0Pj8sXG4gIFByb21wdE9wdGlvbnM8VE5hbWU5LCBUU3RhdGljUHJvbXB0OSwgVFJlc3VsdD4/LFxuICBQcm9tcHRPcHRpb25zPFROYW1lMTAsIFRTdGF0aWNQcm9tcHQxMCwgVFJlc3VsdD4/LFxuICBQcm9tcHRPcHRpb25zPFROYW1lMTEsIFRTdGF0aWNQcm9tcHQxMSwgVFJlc3VsdD4/LFxuICBQcm9tcHRPcHRpb25zPFROYW1lMTIsIFRTdGF0aWNQcm9tcHQxMiwgVFJlc3VsdD4/LFxuICBQcm9tcHRPcHRpb25zPFROYW1lMTMsIFRTdGF0aWNQcm9tcHQxMywgVFJlc3VsdD4/LFxuICBQcm9tcHRPcHRpb25zPFROYW1lMTQsIFRTdGF0aWNQcm9tcHQxNCwgVFJlc3VsdD4/LFxuICBQcm9tcHRPcHRpb25zPFROYW1lMTUsIFRTdGF0aWNQcm9tcHQxNSwgVFJlc3VsdD4/LFxuICBQcm9tcHRPcHRpb25zPFROYW1lMTYsIFRTdGF0aWNQcm9tcHQxNiwgVFJlc3VsdD4/LFxuICBQcm9tcHRPcHRpb25zPFROYW1lMTcsIFRTdGF0aWNQcm9tcHQxNywgVFJlc3VsdD4/LFxuICBQcm9tcHRPcHRpb25zPFROYW1lMTgsIFRTdGF0aWNQcm9tcHQxOCwgVFJlc3VsdD4/LFxuICBQcm9tcHRPcHRpb25zPFROYW1lMTksIFRTdGF0aWNQcm9tcHQxOSwgVFJlc3VsdD4/LFxuICBQcm9tcHRPcHRpb25zPFROYW1lMjAsIFRTdGF0aWNQcm9tcHQyMCwgVFJlc3VsdD4/LFxuICBQcm9tcHRPcHRpb25zPFROYW1lMjEsIFRTdGF0aWNQcm9tcHQyMSwgVFJlc3VsdD4/LFxuICBQcm9tcHRPcHRpb25zPFROYW1lMjIsIFRTdGF0aWNQcm9tcHQyMiwgVFJlc3VsdD4/LFxuICBQcm9tcHRPcHRpb25zPFROYW1lMjMsIFRTdGF0aWNQcm9tcHQyMywgVFJlc3VsdD4/LFxuXSwgb3B0aW9ucz86IEdsb2JhbFByb21wdE9wdGlvbnM8VFJlc3VsdD4pOiBQcm9taXNlPFRSZXN1bHQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9tcHRMaXN0KFxuICAgIHByb21wdHMgYXMgUHJvbXB0T3B0aW9uczxhbnksIGFueSwgYW55LCBhbnk+LFxuICAgIG9wdGlvbnMgYXMgUHJvbXB0TGlzdE9wdGlvbnM8YW55PixcbiAgKS5ydW4ob3B0aW9ucz8uaW5pdGlhbCkgYXMgUHJvbWlzZTxUUmVzdWx0Pjtcbn1cblxubGV0IGluamVjdGVkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG5cbi8qKlxuICogSW5qZWN0IHByb21wdCB2YWx1ZXMuIENhbiBiZSB1c2VkIGZvciB1bml0IHRlc3RzIG9yIHByZSBzZWxlY3Rpb25zLlxuICogQHBhcmFtIHZhbHVlcyBJbnB1dCB2YWx1ZXMgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0KHZhbHVlczogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQge1xuICBpbmplY3RlZCA9IHZhbHVlcztcbn1cblxuY2xhc3MgUHJvbXB0TGlzdCB7XG4gIHByaXZhdGUgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIHByaXZhdGUgaW5kZXggPSAtMTtcbiAgcHJpdmF0ZSBuYW1lczogQXJyYXk8c3RyaW5nPjtcbiAgcHJpdmF0ZSBpc0luQmVmb3JlSG9vayA9IGZhbHNlO1xuXG4gIHByaXZhdGUgZ2V0IHByb21wdCgpOiBQcm9tcHRPcHRpb25zPHN0cmluZywgYW55LCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9tcHRzW3RoaXMuaW5kZXhdO1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcHJvbXB0czogQXJyYXk8UHJvbXB0T3B0aW9uczxzdHJpbmcsIGFueSwgYW55Pj4sXG4gICAgcHJpdmF0ZSBvcHRpb25zPzogUHJvbXB0TGlzdE9wdGlvbnM8YW55PixcbiAgKSB7XG4gICAgdGhpcy5uYW1lcyA9IHRoaXMucHJvbXB0cy5tYXAoKHByb21wdCkgPT4gcHJvbXB0Lm5hbWUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJ1bihcbiAgICBuYW1lPzogc3RyaW5nIHwgbnVtYmVyIHwgdHJ1ZSxcbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gICAgdGhpcy5pbmRleCA9IC0xO1xuICAgIHRoaXMucmVzdWx0ID0ge307XG4gICAgdGhpcy5pc0luQmVmb3JlSG9vayA9IGZhbHNlO1xuICAgIGF3YWl0IHRoaXMubmV4dChuYW1lKTtcbiAgICByZXR1cm4gdGhpcy5yZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG5leHQobmFtZT86IHN0cmluZyB8IG51bWJlciB8IHRydWUgfCBudWxsKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMudXBkYXRlSW5kZXgobmFtZSkpIHtcbiAgICAgIGF3YWl0IHRoaXMucnVuQmVmb3JlSG9vayhhc3luYyAoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNJbkJlZm9yZUhvb2sgPSBmYWxzZTtcbiAgICAgICAgYXdhaXQgdGhpcy5ydW5Qcm9tcHQoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5ydW5BZnRlckhvb2soKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSW5kZXgobmFtZT86IHN0cmluZyB8IG51bWJlciB8IHRydWUgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKG5hbWUgJiYgdHlwZW9mIG5hbWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRoaXMuaW5kZXggPSB0aGlzLm5hbWVzLmluZGV4T2YobmFtZSk7XG4gICAgICBpZiAodGhpcy5pbmRleCA9PT0gLTEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBJbnZhbGlkIHByb21wdCBuYW1lOiAke25hbWV9LCBhbGxvd2VkIHByb21wdCBuYW1lczogJHtcbiAgICAgICAgICAgIHRoaXMubmFtZXMuam9pbihcIiwgXCIpXG4gICAgICAgICAgfWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbmFtZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgaWYgKG5hbWUgPCAwIHx8IG5hbWUgPiB0aGlzLm5hbWVzLmxlbmd0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEludmFsaWQgcHJvbXB0IGluZGV4OiAke25hbWV9LCBwcm9tcHQgbGVuZ3RoOiAke3RoaXMubmFtZXMubGVuZ3RofWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLmluZGV4ID0gbmFtZTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09IHRydWUgJiYgIXRoaXMuaXNJbkJlZm9yZUhvb2spIHtcbiAgICAgIHRoaXMuaW5kZXgrKztcbiAgICAgIGlmICh0aGlzLmluZGV4IDwgdGhpcy5uYW1lcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHRoaXMuaW5kZXgrKztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbmRleCsrO1xuICAgIH1cblxuICAgIHRoaXMuaXNJbkJlZm9yZUhvb2sgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLmluZGV4IDwgdGhpcy5uYW1lcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pbmRleCA9PT0gdGhpcy5uYW1lcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwibmV4dCgpIGNhbGxlZCBtdWx0aXBsZSB0aW1lc1wiKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJ1bkJlZm9yZUhvb2socnVuOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5pc0luQmVmb3JlSG9vayA9IHRydWU7XG5cbiAgICBjb25zdCBuZXh0ID0gYXN5bmMgKG5hbWU/OiBzdHJpbmcgfCBudW1iZXIgfCB0cnVlIHwgbnVsbCkgPT4ge1xuICAgICAgaWYgKG5hbWUgfHwgdHlwZW9mIG5hbWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmV4dChuYW1lIGFzIChzdHJpbmcgfCBudW1iZXIgfCB0cnVlKSk7XG4gICAgICB9XG4gICAgICBhd2FpdCBydW4oKTtcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucz8uYmVmb3JlKSB7XG4gICAgICBhd2FpdCB0aGlzLm9wdGlvbnMuYmVmb3JlKFxuICAgICAgICB0aGlzLnByb21wdC5uYW1lLFxuICAgICAgICB0aGlzLnJlc3VsdCxcbiAgICAgICAgYXN5bmMgKG5hbWU/OiBzdHJpbmcgfCBudW1iZXIgfCB0cnVlIHwgbnVsbCkgPT4ge1xuICAgICAgICAgIGlmIChuYW1lIHx8IHR5cGVvZiBuYW1lID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0KG5hbWUgYXMgKHN0cmluZyB8IG51bWJlciB8IHRydWUpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJvbXB0LmJlZm9yZSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9tcHQuYmVmb3JlKHRoaXMucmVzdWx0LCBuZXh0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXdhaXQgcnVuKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9tcHQuYmVmb3JlKSB7XG4gICAgICBhd2FpdCB0aGlzLnByb21wdC5iZWZvcmUodGhpcy5yZXN1bHQsIG5leHQpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgcnVuKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJ1blByb21wdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwcm9tcHQ6IFN0YXRpY0dlbmVyaWNQcm9tcHQ8YW55LCBhbnksIGFueSwgYW55LCBhbnk+ID1cbiAgICAgIHRoaXMucHJvbXB0LnR5cGU7XG5cbiAgICBpZiAodHlwZW9mIGluamVjdGVkW3RoaXMucHJvbXB0Lm5hbWVdICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBpZiAocHJvbXB0LmluamVjdCkge1xuICAgICAgICBwcm9tcHQuaW5qZWN0KGluamVjdGVkW3RoaXMucHJvbXB0Lm5hbWVdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIEdlbmVyaWNQcm9tcHQuaW5qZWN0KGluamVjdGVkW3RoaXMucHJvbXB0Lm5hbWVdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5yZXN1bHRbdGhpcy5wcm9tcHQubmFtZV0gPSBhd2FpdCBwcm9tcHQucHJvbXB0KHtcbiAgICAgICAgY2JyZWFrOiB0aGlzLm9wdGlvbnM/LmNicmVhayxcbiAgICAgICAgLi4udGhpcy5wcm9tcHQsXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHR5LmN1cnNvclNob3coKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJ1bkFmdGVySG9vaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5vcHRpb25zPy5hZnRlcikge1xuICAgICAgYXdhaXQgdGhpcy5vcHRpb25zLmFmdGVyKHRoaXMucHJvbXB0Lm5hbWUsIHRoaXMucmVzdWx0LCBhc3luYyAobmFtZSkgPT4ge1xuICAgICAgICBpZiAobmFtZSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLm5leHQobmFtZSBhcyBzdHJpbmcpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJvbXB0LmFmdGVyKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5wcm9tcHQuYWZ0ZXIodGhpcy5yZXN1bHQsIChuYW1lKSA9PiB0aGlzLm5leHQobmFtZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF3YWl0IHRoaXMubmV4dCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvbXB0LmFmdGVyKSB7XG4gICAgICBhd2FpdCB0aGlzLnByb21wdC5hZnRlcih0aGlzLnJlc3VsdCwgKG5hbWUpID0+IHRoaXMubmV4dChuYW1lKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMubmV4dCgpO1xuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtEQUFrRDtBQUVsRCxTQUFTLEdBQUcsUUFBUSxpQkFBaUI7QUFDckMsU0FDRSxhQUFhLFFBR1IsdUJBQXVCO0FBOEQ5QixPQUFPLFNBQVMsT0FpSmQsT0F5QkQsRUFBRSxPQUFzQztFQUN2QyxPQUFPLElBQUksV0FDVCxTQUNBLFNBQ0EsR0FBRyxDQUFDLFNBQVM7QUFDakI7QUFFQSxJQUFJLFdBQWdDLENBQUM7QUFFckM7OztDQUdDLEdBQ0QsT0FBTyxTQUFTLE9BQU8sTUFBMkI7RUFDaEQsV0FBVztBQUNiO0FBRUEsTUFBTTs7O0VBQ0ksT0FBaUM7RUFDakMsTUFBVztFQUNYLE1BQXFCO0VBQ3JCLGVBQXVCO0VBRS9CLElBQVksU0FBMEM7SUFDcEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7RUFDakM7RUFFQSxZQUNFLEFBQVEsT0FBK0MsRUFDdkQsQUFBUSxPQUFnQyxDQUN4QztTQUZRLFVBQUE7U0FDQSxVQUFBO1NBWEYsU0FBOEIsQ0FBQztTQUMvQixRQUFRLENBQUM7U0FFVCxpQkFBaUI7SUFVdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVcsT0FBTyxJQUFJO0VBQ3ZEO0VBRUEsTUFBYSxJQUNYLElBQTZCLEVBQ0M7SUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDO0lBQ2QsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDO0lBQ2YsSUFBSSxDQUFDLGNBQWMsR0FBRztJQUN0QixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDaEIsT0FBTyxJQUFJLENBQUMsTUFBTTtFQUNwQjtFQUVBLE1BQWMsS0FBSyxJQUFvQyxFQUFpQjtJQUN0RSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTztNQUMx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 +// denoCacheMetadata=5008812463605529626,10229207304719289772
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/d94627d92746845093fa21805116112485063409239d2ff1806d4c41c278fab9.js b/vendor/gen/https/deno.land/d94627d92746845093fa21805116112485063409239d2ff1806d4c41c278fab9.js new file mode 100644 index 0000000..61687e7 --- /dev/null +++ b/vendor/gen/https/deno.land/d94627d92746845093fa21805116112485063409239d2ff1806d4c41c278fab9.js @@ -0,0 +1,20 @@ +import { crypto } from "../../deps/crypto.ts"; +import { encodeHex } from "../../deps/hex.ts"; +const decoder = new TextDecoder(); +const encoder = new TextEncoder(); +/** Digest a message using SHA-1 algorithm */ export async function sha1(message) { + if (typeof message === "string") { + message = encoder.encode(message); + } + const hash = await crypto.subtle.digest("SHA-1", message); + return decoder.decode(hash); +} +/** Digest a message using MD5 algorithm */ export async function md5(message) { + if (typeof message === "string") { + message = encoder.encode(message); + } + const hash = await crypto.subtle.digest("MD5", message); + return encodeHex(hash); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS91dGlscy9kaWdlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3J5cHRvIH0gZnJvbSBcIi4uLy4uL2RlcHMvY3J5cHRvLnRzXCI7XG5pbXBvcnQgeyBlbmNvZGVIZXggfSBmcm9tIFwiLi4vLi4vZGVwcy9oZXgudHNcIjtcblxuY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpO1xuY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuXG4vKiogRGlnZXN0IGEgbWVzc2FnZSB1c2luZyBTSEEtMSBhbGdvcml0aG0gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaGExKG1lc3NhZ2U6IHN0cmluZyB8IFVpbnQ4QXJyYXkpOiBQcm9taXNlPHN0cmluZz4ge1xuICBpZiAodHlwZW9mIG1lc3NhZ2UgPT09IFwic3RyaW5nXCIpIHtcbiAgICBtZXNzYWdlID0gZW5jb2Rlci5lbmNvZGUobWVzc2FnZSk7XG4gIH1cblxuICBjb25zdCBoYXNoID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoXCJTSEEtMVwiLCBtZXNzYWdlKTtcbiAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKGhhc2gpO1xufVxuXG4vKiogRGlnZXN0IGEgbWVzc2FnZSB1c2luZyBNRDUgYWxnb3JpdGhtICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWQ1KG1lc3NhZ2U6IHN0cmluZyB8IFVpbnQ4QXJyYXkpOiBQcm9taXNlPHN0cmluZz4ge1xuICBpZiAodHlwZW9mIG1lc3NhZ2UgPT09IFwic3RyaW5nXCIpIHtcbiAgICBtZXNzYWdlID0gZW5jb2Rlci5lbmNvZGUobWVzc2FnZSk7XG4gIH1cblxuICBjb25zdCBoYXNoID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoXCJNRDVcIiwgbWVzc2FnZSk7XG4gIHJldHVybiBlbmNvZGVIZXgoaGFzaCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxNQUFNLFFBQVEsdUJBQXVCO0FBQzlDLFNBQVMsU0FBUyxRQUFRLG9CQUFvQjtBQUU5QyxNQUFNLFVBQVUsSUFBSTtBQUNwQixNQUFNLFVBQVUsSUFBSTtBQUVwQiwyQ0FBMkMsR0FDM0MsT0FBTyxlQUFlLEtBQUssT0FBNEI7RUFDckQsSUFBSSxPQUFPLFlBQVksVUFBVTtJQUMvQixVQUFVLFFBQVEsTUFBTSxDQUFDO0VBQzNCO0VBRUEsTUFBTSxPQUFPLE1BQU0sT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVM7RUFDakQsT0FBTyxRQUFRLE1BQU0sQ0FBQztBQUN4QjtBQUVBLHlDQUF5QyxHQUN6QyxPQUFPLGVBQWUsSUFBSSxPQUE0QjtFQUNwRCxJQUFJLE9BQU8sWUFBWSxVQUFVO0lBQy9CLFVBQVUsUUFBUSxNQUFNLENBQUM7RUFDM0I7RUFFQSxNQUFNLE9BQU8sTUFBTSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTztFQUMvQyxPQUFPLFVBQVU7QUFDbkIifQ== +// denoCacheMetadata=2684540572809471232,8686837891101210833
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/d9d653821e9f1717cbd7eb811e53650fb78255a6526ba2f1ee18f438dc840517.js b/vendor/gen/https/deno.land/d9d653821e9f1717cbd7eb811e53650fb78255a6526ba2f1ee18f438dc840517.js new file mode 100644 index 0000000..35caf1b --- /dev/null +++ b/vendor/gen/https/deno.land/d9d653821e9f1717cbd7eb811e53650fb78255a6526ba2f1ee18f438dc840517.js @@ -0,0 +1,9 @@ +import { Type } from "../type.ts"; +import { integer } from "../../flags/types/integer.ts"; +/** Integer type. */ export class IntegerType extends Type { + /** Parse integer type. */ parse(type) { + return integer(type); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC90eXBlcy9pbnRlZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tIFwiLi4vdHlwZS50c1wiO1xuaW1wb3J0IHR5cGUgeyBBcmd1bWVudFZhbHVlIH0gZnJvbSBcIi4uL3R5cGVzLnRzXCI7XG5pbXBvcnQgeyBpbnRlZ2VyIH0gZnJvbSBcIi4uLy4uL2ZsYWdzL3R5cGVzL2ludGVnZXIudHNcIjtcblxuLyoqIEludGVnZXIgdHlwZS4gKi9cbmV4cG9ydCBjbGFzcyBJbnRlZ2VyVHlwZSBleHRlbmRzIFR5cGU8bnVtYmVyPiB7XG4gIC8qKiBQYXJzZSBpbnRlZ2VyIHR5cGUuICovXG4gIHB1YmxpYyBwYXJzZSh0eXBlOiBBcmd1bWVudFZhbHVlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gaW50ZWdlcih0eXBlKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsSUFBSSxRQUFRLGFBQWE7QUFFbEMsU0FBUyxPQUFPLFFBQVEsK0JBQStCO0FBRXZELGtCQUFrQixHQUNsQixPQUFPLE1BQU0sb0JBQW9CO0VBQy9CLHdCQUF3QixHQUN4QixBQUFPLE1BQU0sSUFBbUIsRUFBVTtJQUN4QyxPQUFPLFFBQVE7RUFDakI7QUFDRiJ9 +// denoCacheMetadata=12545180727166727837,11319682507756441535
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/da191e04599bc403f4efba8fce8427aef969431bff7a6f72bcdb883003a981e6.js b/vendor/gen/https/deno.land/da191e04599bc403f4efba8fce8427aef969431bff7a6f72bcdb883003a981e6.js new file mode 100644 index 0000000..d02c412 --- /dev/null +++ b/vendor/gen/https/deno.land/da191e04599bc403f4efba8fce8427aef969431bff7a6f72bcdb883003a981e6.js @@ -0,0 +1,6 @@ +export { deflate, inflate, gzip, gunzip, zlib, unzlib } from "./pkg/denoflate.js"; +import init from "./pkg/denoflate.js"; +import { wasm } from "./pkg/denoflate_bg.wasm.js"; +await init(wasm); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvZGVub2ZsYXRlQDEuMi4xL21vZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBkZWZsYXRlLFxuICBpbmZsYXRlLFxuICBnemlwLFxuICBndW56aXAsXG4gIHpsaWIsXG4gIHVuemxpYixcbn0gZnJvbSBcIi4vcGtnL2Rlbm9mbGF0ZS5qc1wiO1xuXG5pbXBvcnQgaW5pdCBmcm9tIFwiLi9wa2cvZGVub2ZsYXRlLmpzXCI7XG5pbXBvcnQgeyB3YXNtIH0gZnJvbSBcIi4vcGtnL2Rlbm9mbGF0ZV9iZy53YXNtLmpzXCI7XG5cbmF3YWl0IGluaXQod2FzbSk7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FDRSxPQUFPLEVBQ1AsT0FBTyxFQUNQLElBQUksRUFDSixNQUFNLEVBQ04sSUFBSSxFQUNKLE1BQU0sUUFDRCxxQkFBcUI7QUFFNUIsT0FBTyxVQUFVLHFCQUFxQjtBQUN0QyxTQUFTLElBQUksUUFBUSw2QkFBNkI7QUFFbEQsTUFBTSxLQUFLIn0= +// denoCacheMetadata=7003155876221575681,13008824904001605273
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/da5cde75ecd58bfc9df9cf6e8ac10f2871c184dfd68fedbdd0ebe1dba6e1b598.js b/vendor/gen/https/deno.land/da5cde75ecd58bfc9df9cf6e8ac10f2871c184dfd68fedbdd0ebe1dba6e1b598.js new file mode 100644 index 0000000..3f241fb --- /dev/null +++ b/vendor/gen/https/deno.land/da5cde75ecd58bfc9df9cf6e8ac10f2871c184dfd68fedbdd0ebe1dba6e1b598.js @@ -0,0 +1,7 @@ +// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { isWindows } from "../_util/os.ts"; +export const SEP = isWindows ? "\\" : "/"; +export const SEP_PATTERN = isWindows ? /[\\/]+/ : /\/+/; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE3MC4wL3BhdGgvc2VwYXJhdG9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjIgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGlzV2luZG93cyB9IGZyb20gXCIuLi9fdXRpbC9vcy50c1wiO1xuXG5leHBvcnQgY29uc3QgU0VQID0gaXNXaW5kb3dzID8gXCJcXFxcXCIgOiBcIi9cIjtcbmV4cG9ydCBjb25zdCBTRVBfUEFUVEVSTiA9IGlzV2luZG93cyA/IC9bXFxcXC9dKy8gOiAvXFwvKy87XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQyxTQUFTLFNBQVMsUUFBUSxpQkFBaUI7QUFFM0MsT0FBTyxNQUFNLE1BQU0sWUFBWSxPQUFPLElBQUk7QUFDMUMsT0FBTyxNQUFNLGNBQWMsWUFBWSxXQUFXLE1BQU0ifQ== +// denoCacheMetadata=2599654808639539181,14346142432040228099
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/db0b2d75d0ac611a2e0bb54cffae722ff107d36bd76c5cbac2c78fd57aec1a17.js b/vendor/gen/https/deno.land/db0b2d75d0ac611a2e0bb54cffae722ff107d36bd76c5cbac2c78fd57aec1a17.js new file mode 100644 index 0000000..066cf29 --- /dev/null +++ b/vendor/gen/https/deno.land/db0b2d75d0ac611a2e0bb54cffae722ff107d36bd76c5cbac2c78fd57aec1a17.js @@ -0,0 +1,44 @@ +class VentoBaseError extends Error { + name = this.constructor.name; +} +export class TemplateError extends VentoBaseError { + path; + source; + position; + constructor(path = "<unknown>", source = "<empty file>", position = 0, cause){ + const { line, column, code } = errorLine(source, position); + super(`Error in template ${path}:${line}:${column}\n\n${code.trim()}\n\n`, { + cause + }), this.path = path, this.source = source, this.position = position; + } +} +export class TransformError extends VentoBaseError { + position; + constructor(message, position = 0, cause){ + super(message, { + cause + }), this.position = position; + } +} +/** Returns the number and code of the errored line */ export function errorLine(source, position) { + let line = 1; + let column = 1; + for(let index = 0; index < position; index++){ + if (source[index] === "\n" || source[index] === "\r" && source[index + 1] === "\n") { + line++; + column = 1; + if (source[index] === "\r") { + index++; + } + } else { + column++; + } + } + return { + line, + column, + code: source.split("\n")[line - 1] + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9zcmMvZXJyb3JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImNsYXNzIFZlbnRvQmFzZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBvdmVycmlkZSBuYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xufVxuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVFcnJvciBleHRlbmRzIFZlbnRvQmFzZUVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHBhdGg6IHN0cmluZyA9IFwiPHVua25vd24+XCIsXG4gICAgcHVibGljIHNvdXJjZTogc3RyaW5nID0gXCI8ZW1wdHkgZmlsZT5cIixcbiAgICBwdWJsaWMgcG9zaXRpb246IG51bWJlciA9IDAsXG4gICAgY2F1c2U/OiBFcnJvcixcbiAgKSB7XG4gICAgY29uc3QgeyBsaW5lLCBjb2x1bW4sIGNvZGUgfSA9IGVycm9yTGluZShzb3VyY2UsIHBvc2l0aW9uKTtcbiAgICBzdXBlcihcbiAgICAgIGBFcnJvciBpbiB0ZW1wbGF0ZSAke3BhdGh9OiR7bGluZX06JHtjb2x1bW59XFxuXFxuJHtjb2RlLnRyaW0oKX1cXG5cXG5gLFxuICAgICAgeyBjYXVzZSB9LFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRyYW5zZm9ybUVycm9yIGV4dGVuZHMgVmVudG9CYXNlRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgcHVibGljIHBvc2l0aW9uOiBudW1iZXIgPSAwLFxuICAgIGNhdXNlPzogRXJyb3IsXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UsIHsgY2F1c2UgfSk7XG4gIH1cbn1cblxuLyoqIFJldHVybnMgdGhlIG51bWJlciBhbmQgY29kZSBvZiB0aGUgZXJyb3JlZCBsaW5lICovXG5leHBvcnQgZnVuY3Rpb24gZXJyb3JMaW5lKFxuICBzb3VyY2U6IHN0cmluZyxcbiAgcG9zaXRpb246IG51bWJlcixcbik6IHsgbGluZTogbnVtYmVyOyBjb2x1bW46IG51bWJlcjsgY29kZTogc3RyaW5nIH0ge1xuICBsZXQgbGluZSA9IDE7XG4gIGxldCBjb2x1bW4gPSAxO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBwb3NpdGlvbjsgaW5kZXgrKykge1xuICAgIGlmIChcbiAgICAgIHNvdXJjZVtpbmRleF0gPT09IFwiXFxuXCIgfHxcbiAgICAgIChzb3VyY2VbaW5kZXhdID09PSBcIlxcclwiICYmIHNvdXJjZVtpbmRleCArIDFdID09PSBcIlxcblwiKVxuICAgICkge1xuICAgICAgbGluZSsrO1xuICAgICAgY29sdW1uID0gMTtcblxuICAgICAgaWYgKHNvdXJjZVtpbmRleF0gPT09IFwiXFxyXCIpIHtcbiAgICAgICAgaW5kZXgrKztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29sdW1uKys7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsgbGluZSwgY29sdW1uLCBjb2RlOiBzb3VyY2Uuc3BsaXQoXCJcXG5cIilbbGluZSAtIDFdIH07XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSx1QkFBdUI7RUFDbEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztBQUN4QztBQUVBLE9BQU8sTUFBTSxzQkFBc0I7Ozs7RUFDakMsWUFDRSxBQUFPLE9BQWUsV0FBVyxFQUNqQyxBQUFPLFNBQWlCLGNBQWMsRUFDdEMsQUFBTyxXQUFtQixDQUFDLEVBQzNCLEtBQWEsQ0FDYjtJQUNBLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLFVBQVUsUUFBUTtJQUNqRCxLQUFLLENBQ0gsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUksRUFBRSxLQUFLLElBQUksR0FBRyxJQUFJLENBQUMsRUFDbkU7TUFBRTtJQUFNLFNBUkgsT0FBQSxXQUNBLFNBQUEsYUFDQSxXQUFBO0VBUVQ7QUFDRjtBQUVBLE9BQU8sTUFBTSx1QkFBdUI7O0VBQ2xDLFlBQ0UsT0FBZSxFQUNmLEFBQU8sV0FBbUIsQ0FBQyxFQUMzQixLQUFhLENBQ2I7SUFDQSxLQUFLLENBQUMsU0FBUztNQUFFO0lBQU0sU0FIaEIsV0FBQTtFQUlUO0FBQ0Y7QUFFQSxvREFBb0QsR0FDcEQsT0FBTyxTQUFTLFVBQ2QsTUFBYyxFQUNkLFFBQWdCO0VBRWhCLElBQUksT0FBTztFQUNYLElBQUksU0FBUztFQUViLElBQUssSUFBSSxRQUFRLEdBQUcsUUFBUSxVQUFVLFFBQVM7SUFDN0MsSUFDRSxNQUFNLENBQUMsTUFBTSxLQUFLLFFBQ2pCLE1BQU0sQ0FBQyxNQUFNLEtBQUssUUFBUSxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssTUFDakQ7TUFDQTtNQUNBLFNBQVM7TUFFVCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssTUFBTTtRQUMxQjtNQUNGO0lBQ0YsT0FBTztNQUNMO0lBQ0Y7RUFDRjtFQUVBLE9BQU87SUFBRTtJQUFNO0lBQVEsTUFBTSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO0VBQUM7QUFDNUQifQ== +// denoCacheMetadata=3002498879481372295,1768270274336382248
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/dc17962467533991133f70ea8148335749ee94c09706f4ad12e0e1eac11b748d.js b/vendor/gen/https/deno.land/dc17962467533991133f70ea8148335749ee94c09706f4ad12e0e1eac11b748d.js new file mode 100644 index 0000000..84fea21 --- /dev/null +++ b/vendor/gen/https/deno.land/dc17962467533991133f70ea8148335749ee94c09706f4ad12e0e1eac11b748d.js @@ -0,0 +1,134 @@ +// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. +/** + * {@linkcode encode} and {@linkcode decode} for + * [base64](https://en.wikipedia.org/wiki/Base64) encoding. + * + * This module is browser compatible. + * + * @example + * ```ts + * import { + * decode, + * encode, + * } from "https://deno.land/std@$STD_VERSION/encoding/base64.ts"; + * + * const b64Repr = "Zm9vYg=="; + * + * const binaryData = decode(b64Repr); + * console.log(binaryData); + * // => Uint8Array [ 102, 111, 111, 98 ] + * + * console.log(encode(binaryData)); + * // => Zm9vYg== + * ``` + * + * @module + */ const base64abc = [ + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "+", + "/" +]; +/** + * CREDIT: https://gist.github.com/enepomnyaschih/72c423f727d395eeaa09697058238727 + * Encodes a given Uint8Array, ArrayBuffer or string into RFC4648 base64 representation + * @param data + */ export function encode(data) { + const uint8 = typeof data === "string" ? new TextEncoder().encode(data) : data instanceof Uint8Array ? data : new Uint8Array(data); + let result = "", i; + const l = uint8.length; + for(i = 2; i < l; i += 3){ + result += base64abc[uint8[i - 2] >> 2]; + result += base64abc[(uint8[i - 2] & 0x03) << 4 | uint8[i - 1] >> 4]; + result += base64abc[(uint8[i - 1] & 0x0f) << 2 | uint8[i] >> 6]; + result += base64abc[uint8[i] & 0x3f]; + } + if (i === l + 1) { + // 1 octet yet to write + result += base64abc[uint8[i - 2] >> 2]; + result += base64abc[(uint8[i - 2] & 0x03) << 4]; + result += "=="; + } + if (i === l) { + // 2 octets yet to write + result += base64abc[uint8[i - 2] >> 2]; + result += base64abc[(uint8[i - 2] & 0x03) << 4 | uint8[i - 1] >> 4]; + result += base64abc[(uint8[i - 1] & 0x0f) << 2]; + result += "="; + } + return result; +} +/** + * Decodes a given RFC4648 base64 encoded string + * @param b64 + */ export function decode(b64) { + const binString = atob(b64); + const size = binString.length; + const bytes = new Uint8Array(size); + for(let i = 0; i < size; i++){ + bytes[i] = binString.charCodeAt(i); + } + return bytes; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE3MC4wL2VuY29kaW5nL2Jhc2U2NC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDIyIHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuXG4vKipcbiAqIHtAbGlua2NvZGUgZW5jb2RlfSBhbmQge0BsaW5rY29kZSBkZWNvZGV9IGZvclxuICogW2Jhc2U2NF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFzZTY0KSBlbmNvZGluZy5cbiAqXG4gKiBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQge1xuICogICBkZWNvZGUsXG4gKiAgIGVuY29kZSxcbiAqIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vZW5jb2RpbmcvYmFzZTY0LnRzXCI7XG4gKlxuICogY29uc3QgYjY0UmVwciA9IFwiWm05dllnPT1cIjtcbiAqXG4gKiBjb25zdCBiaW5hcnlEYXRhID0gZGVjb2RlKGI2NFJlcHIpO1xuICogY29uc29sZS5sb2coYmluYXJ5RGF0YSk7XG4gKiAvLyA9PiBVaW50OEFycmF5IFsgMTAyLCAxMTEsIDExMSwgOTggXVxuICpcbiAqIGNvbnNvbGUubG9nKGVuY29kZShiaW5hcnlEYXRhKSk7XG4gKiAvLyA9PiBabTl2WWc9PVxuICogYGBgXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmNvbnN0IGJhc2U2NGFiYyA9IFtcbiAgXCJBXCIsXG4gIFwiQlwiLFxuICBcIkNcIixcbiAgXCJEXCIsXG4gIFwiRVwiLFxuICBcIkZcIixcbiAgXCJHXCIsXG4gIFwiSFwiLFxuICBcIklcIixcbiAgXCJKXCIsXG4gIFwiS1wiLFxuICBcIkxcIixcbiAgXCJNXCIsXG4gIFwiTlwiLFxuICBcIk9cIixcbiAgXCJQXCIsXG4gIFwiUVwiLFxuICBcIlJcIixcbiAgXCJTXCIsXG4gIFwiVFwiLFxuICBcIlVcIixcbiAgXCJWXCIsXG4gIFwiV1wiLFxuICBcIlhcIixcbiAgXCJZXCIsXG4gIFwiWlwiLFxuICBcImFcIixcbiAgXCJiXCIsXG4gIFwiY1wiLFxuICBcImRcIixcbiAgXCJlXCIsXG4gIFwiZlwiLFxuICBcImdcIixcbiAgXCJoXCIsXG4gIFwiaVwiLFxuICBcImpcIixcbiAgXCJrXCIsXG4gIFwibFwiLFxuICBcIm1cIixcbiAgXCJuXCIsXG4gIFwib1wiLFxuICBcInBcIixcbiAgXCJxXCIsXG4gIFwiclwiLFxuICBcInNcIixcbiAgXCJ0XCIsXG4gIFwidVwiLFxuICBcInZcIixcbiAgXCJ3XCIsXG4gIFwieFwiLFxuICBcInlcIixcbiAgXCJ6XCIsXG4gIFwiMFwiLFxuICBcIjFcIixcbiAgXCIyXCIsXG4gIFwiM1wiLFxuICBcIjRcIixcbiAgXCI1XCIsXG4gIFwiNlwiLFxuICBcIjdcIixcbiAgXCI4XCIsXG4gIFwiOVwiLFxuICBcIitcIixcbiAgXCIvXCIsXG5dO1xuXG4vKipcbiAqIENSRURJVDogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vZW5lcG9tbnlhc2NoaWgvNzJjNDIzZjcyN2QzOTVlZWFhMDk2OTcwNTgyMzg3MjdcbiAqIEVuY29kZXMgYSBnaXZlbiBVaW50OEFycmF5LCBBcnJheUJ1ZmZlciBvciBzdHJpbmcgaW50byBSRkM0NjQ4IGJhc2U2NCByZXByZXNlbnRhdGlvblxuICogQHBhcmFtIGRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZShkYXRhOiBBcnJheUJ1ZmZlciB8IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHVpbnQ4ID0gdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCJcbiAgICA/IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShkYXRhKVxuICAgIDogZGF0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXlcbiAgICA/IGRhdGFcbiAgICA6IG5ldyBVaW50OEFycmF5KGRhdGEpO1xuICBsZXQgcmVzdWx0ID0gXCJcIixcbiAgICBpO1xuICBjb25zdCBsID0gdWludDgubGVuZ3RoO1xuICBmb3IgKGkgPSAyOyBpIDwgbDsgaSArPSAzKSB7XG4gICAgcmVzdWx0ICs9IGJhc2U2NGFiY1t1aW50OFtpIC0gMl0gPj4gMl07XG4gICAgcmVzdWx0ICs9IGJhc2U2NGFiY1soKHVpbnQ4W2kgLSAyXSAmIDB4MDMpIDw8IDQpIHwgKHVpbnQ4W2kgLSAxXSA+PiA0KV07XG4gICAgcmVzdWx0ICs9IGJhc2U2NGFiY1soKHVpbnQ4W2kgLSAxXSAmIDB4MGYpIDw8IDIpIHwgKHVpbnQ4W2ldID4+IDYpXTtcbiAgICByZXN1bHQgKz0gYmFzZTY0YWJjW3VpbnQ4W2ldICYgMHgzZl07XG4gIH1cbiAgaWYgKGkgPT09IGwgKyAxKSB7XG4gICAgLy8gMSBvY3RldCB5ZXQgdG8gd3JpdGVcbiAgICByZXN1bHQgKz0gYmFzZTY0YWJjW3VpbnQ4W2kgLSAyXSA+PiAyXTtcbiAgICByZXN1bHQgKz0gYmFzZTY0YWJjWyh1aW50OFtpIC0gMl0gJiAweDAzKSA8PCA0XTtcbiAgICByZXN1bHQgKz0gXCI9PVwiO1xuICB9XG4gIGlmIChpID09PSBsKSB7XG4gICAgLy8gMiBvY3RldHMgeWV0IHRvIHdyaXRlXG4gICAgcmVzdWx0ICs9IGJhc2U2NGFiY1t1aW50OFtpIC0gMl0gPj4gMl07XG4gICAgcmVzdWx0ICs9IGJhc2U2NGFiY1soKHVpbnQ4W2kgLSAyXSAmIDB4MDMpIDw8IDQpIHwgKHVpbnQ4W2kgLSAxXSA+PiA0KV07XG4gICAgcmVzdWx0ICs9IGJhc2U2NGFiY1sodWludDhbaSAtIDFdICYgMHgwZikgPDwgMl07XG4gICAgcmVzdWx0ICs9IFwiPVwiO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRGVjb2RlcyBhIGdpdmVuIFJGQzQ2NDggYmFzZTY0IGVuY29kZWQgc3RyaW5nXG4gKiBAcGFyYW0gYjY0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGUoYjY0OiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgY29uc3QgYmluU3RyaW5nID0gYXRvYihiNjQpO1xuICBjb25zdCBzaXplID0gYmluU3RyaW5nLmxlbmd0aDtcbiAgY29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShzaXplKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICBieXRlc1tpXSA9IGJpblN0cmluZy5jaGFyQ29kZUF0KGkpO1xuICB9XG4gIHJldHVybiBieXRlcztcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFFMUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXdCQyxHQUVELE1BQU0sWUFBWTtFQUNoQjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtDQUNEO0FBRUQ7Ozs7Q0FJQyxHQUNELE9BQU8sU0FBUyxPQUFPLElBQTBCO0VBQy9DLE1BQU0sUUFBUSxPQUFPLFNBQVMsV0FDMUIsSUFBSSxjQUFjLE1BQU0sQ0FBQyxRQUN6QixnQkFBZ0IsYUFDaEIsT0FDQSxJQUFJLFdBQVc7RUFDbkIsSUFBSSxTQUFTLElBQ1g7RUFDRixNQUFNLElBQUksTUFBTSxNQUFNO0VBQ3RCLElBQUssSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLLEVBQUc7SUFDekIsVUFBVSxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7SUFDdEMsVUFBVSxTQUFTLENBQUMsQUFBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLEtBQUssSUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRztJQUN2RSxVQUFVLFNBQVMsQ0FBQyxBQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksS0FBSyxJQUFNLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRztJQUNuRSxVQUFVLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLEtBQUs7RUFDdEM7RUFDQSxJQUFJLE1BQU0sSUFBSSxHQUFHO0lBQ2YsdUJBQXVCO0lBQ3ZCLFVBQVUsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO0lBQ3RDLFVBQVUsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksS0FBSyxFQUFFO0lBQy9DLFVBQVU7RUFDWjtFQUNBLElBQUksTUFBTSxHQUFHO0lBQ1gsd0JBQXdCO0lBQ3hCLFVBQVUsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO0lBQ3RDLFVBQVUsU0FBUyxDQUFDLEFBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxLQUFLLElBQU0sS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUc7SUFDdkUsVUFBVSxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxLQUFLLEVBQUU7SUFDL0MsVUFBVTtFQUNaO0VBQ0EsT0FBTztBQUNUO0FBRUE7OztDQUdDLEdBQ0QsT0FBTyxTQUFTLE9BQU8sR0FBVztFQUNoQyxNQUFNLFlBQVksS0FBSztFQUN2QixNQUFNLE9BQU8sVUFBVSxNQUFNO0VBQzdCLE1BQU0sUUFBUSxJQUFJLFdBQVc7RUFDN0IsSUFBSyxJQUFJLElBQUksR0FBRyxJQUFJLE1BQU0sSUFBSztJQUM3QixLQUFLLENBQUMsRUFBRSxHQUFHLFVBQVUsVUFBVSxDQUFDO0VBQ2xDO0VBQ0EsT0FBTztBQUNUIn0= +// denoCacheMetadata=15008789603030840279,3226718108940260178
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/dd8c23b12196ccee33022cfaae7ed223c72b26c1d78e3e991bceb9daa070f691.js b/vendor/gen/https/deno.land/dd8c23b12196ccee33022cfaae7ed223c72b26c1d78e3e991bceb9daa070f691.js new file mode 100644 index 0000000..0ebf69a --- /dev/null +++ b/vendor/gen/https/deno.land/dd8c23b12196ccee33022cfaae7ed223c72b26c1d78e3e991bceb9daa070f691.js @@ -0,0 +1,4 @@ +export * from "jsr:@std/front-matter@1.0.9/any"; +export { test } from "jsr:@std/front-matter@1.0.9"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvZGVwcy9mcm9udF9tYXR0ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcImpzcjpAc3RkL2Zyb250LW1hdHRlckAxLjAuOS9hbnlcIjtcbmV4cG9ydCB7IHRlc3QgfSBmcm9tIFwianNyOkBzdGQvZnJvbnQtbWF0dGVyQDEuMC45XCI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQ0FBa0M7QUFDaEQsU0FBUyxJQUFJLFFBQVEsOEJBQThCIn0= +// denoCacheMetadata=15937107815626275135,1695647080784804054
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/de234168948ad2f16752540df5d771bc45aea48a509c5bbf5bf5aa0b09b6bd58.js b/vendor/gen/https/deno.land/de234168948ad2f16752540df5d771bc45aea48a509c5bbf5bf5aa0b09b6bd58.js new file mode 100644 index 0000000..cf8288a --- /dev/null +++ b/vendor/gen/https/deno.land/de234168948ad2f16752540df5d771bc45aea48a509c5bbf5bf5aa0b09b6bd58.js @@ -0,0 +1,53 @@ +/** + * Get next words from the beginning of [content] until all words have a length lower or equal then [length]. + * + * @param length Max length of all words. + * @param content The text content. + */ import { Cell } from "./cell.ts"; +import { stripColor } from "./deps.ts"; +export function consumeWords(length, content) { + let consumed = ""; + const words = content.split("\n")[0]?.split(/ /g); + for(let i = 0; i < words.length; i++){ + const word = words[i]; + // consume minimum one word + if (consumed) { + const nextLength = strLength(word); + const consumedLength = strLength(consumed); + if (consumedLength + nextLength >= length) { + break; + } + } + consumed += (i > 0 ? " " : "") + word; + } + return consumed; +} +/** + * Get longest cell from given row index. + */ export function longest(index, rows, maxWidth) { + const cellLengths = rows.map((row)=>{ + const cell = row[index]; + const cellValue = cell instanceof Cell && cell.getColSpan() > 1 ? "" : cell?.toString() || ""; + return cellValue.split("\n").map((line)=>{ + const str = typeof maxWidth === "undefined" ? line : consumeWords(maxWidth, line); + return strLength(str) || 0; + }); + }).flat(); + return Math.max(...cellLengths); +} +export const strLength = (str)=>{ + str = stripColor(str); + let length = 0; + for(let i = 0; i < str.length; i++){ + const charCode = str.charCodeAt(i); + // Check for chinese characters: \u4e00 - \u9fa5 + if (charCode >= 19968 && charCode <= 40869) { + length += 2; + } else { + length += 1; + } + } + return length; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvdGFibGUvdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZXQgbmV4dCB3b3JkcyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgW2NvbnRlbnRdIHVudGlsIGFsbCB3b3JkcyBoYXZlIGEgbGVuZ3RoIGxvd2VyIG9yIGVxdWFsIHRoZW4gW2xlbmd0aF0uXG4gKlxuICogQHBhcmFtIGxlbmd0aCAgICBNYXggbGVuZ3RoIG9mIGFsbCB3b3Jkcy5cbiAqIEBwYXJhbSBjb250ZW50ICAgVGhlIHRleHQgY29udGVudC5cbiAqL1xuaW1wb3J0IHsgQ2VsbCwgSUNlbGwgfSBmcm9tIFwiLi9jZWxsLnRzXCI7XG5pbXBvcnQgeyBzdHJpcENvbG9yIH0gZnJvbSBcIi4vZGVwcy50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY29uc3VtZVdvcmRzKGxlbmd0aDogbnVtYmVyLCBjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgY29uc3VtZWQgPSBcIlwiO1xuICBjb25zdCB3b3Jkczogc3RyaW5nW10gPSBjb250ZW50LnNwbGl0KFwiXFxuXCIpWzBdPy5zcGxpdCgvIC9nKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHdvcmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qgd29yZDogc3RyaW5nID0gd29yZHNbaV07XG5cbiAgICAvLyBjb25zdW1lIG1pbmltdW0gb25lIHdvcmRcbiAgICBpZiAoY29uc3VtZWQpIHtcbiAgICAgIGNvbnN0IG5leHRMZW5ndGggPSBzdHJMZW5ndGgod29yZCk7XG4gICAgICBjb25zdCBjb25zdW1lZExlbmd0aCA9IHN0ckxlbmd0aChjb25zdW1lZCk7XG4gICAgICBpZiAoY29uc3VtZWRMZW5ndGggKyBuZXh0TGVuZ3RoID49IGxlbmd0aCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdW1lZCArPSAoaSA+IDAgPyBcIiBcIiA6IFwiXCIpICsgd29yZDtcbiAgfVxuXG4gIHJldHVybiBjb25zdW1lZDtcbn1cblxuLyoqXG4gKiBHZXQgbG9uZ2VzdCBjZWxsIGZyb20gZ2l2ZW4gcm93IGluZGV4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9uZ2VzdChcbiAgaW5kZXg6IG51bWJlcixcbiAgcm93czogSUNlbGxbXVtdLFxuICBtYXhXaWR0aD86IG51bWJlcixcbik6IG51bWJlciB7XG4gIGNvbnN0IGNlbGxMZW5ndGhzID0gcm93cy5tYXAoKHJvdykgPT4ge1xuICAgIGNvbnN0IGNlbGwgPSByb3dbaW5kZXhdO1xuICAgIGNvbnN0IGNlbGxWYWx1ZSA9IGNlbGwgaW5zdGFuY2VvZiBDZWxsICYmIGNlbGwuZ2V0Q29sU3BhbigpID4gMVxuICAgICAgPyBcIlwiXG4gICAgICA6IGNlbGw/LnRvU3RyaW5nKCkgfHwgXCJcIjtcblxuICAgIHJldHVybiBjZWxsVmFsdWVcbiAgICAgIC5zcGxpdChcIlxcblwiKVxuICAgICAgLm1hcCgobGluZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0ciA9IHR5cGVvZiBtYXhXaWR0aCA9PT0gXCJ1bmRlZmluZWRcIlxuICAgICAgICAgID8gbGluZVxuICAgICAgICAgIDogY29uc3VtZVdvcmRzKG1heFdpZHRoLCBsaW5lKTtcblxuICAgICAgICByZXR1cm4gc3RyTGVuZ3RoKHN0cikgfHwgMDtcbiAgICAgIH0pO1xuICB9KS5mbGF0KCk7XG5cbiAgcmV0dXJuIE1hdGgubWF4KC4uLmNlbGxMZW5ndGhzKTtcbn1cblxuZXhwb3J0IGNvbnN0IHN0ckxlbmd0aCA9IChzdHI6IHN0cmluZyk6IG51bWJlciA9PiB7XG4gIHN0ciA9IHN0cmlwQ29sb3Ioc3RyKTtcbiAgbGV0IGxlbmd0aCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY2hhckNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAvLyBDaGVjayBmb3IgY2hpbmVzZSBjaGFyYWN0ZXJzOiBcXHU0ZTAwIC0gXFx1OWZhNVxuICAgIGlmIChjaGFyQ29kZSA+PSAxOTk2OCAmJiBjaGFyQ29kZSA8PSA0MDg2OSkge1xuICAgICAgbGVuZ3RoICs9IDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxlbmd0aCArPSAxO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbGVuZ3RoO1xufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Q0FLQyxHQUNELFNBQVMsSUFBSSxRQUFlLFlBQVk7QUFDeEMsU0FBUyxVQUFVLFFBQVEsWUFBWTtBQUV2QyxPQUFPLFNBQVMsYUFBYSxNQUFjLEVBQUUsT0FBZTtFQUMxRCxJQUFJLFdBQVc7RUFDZixNQUFNLFFBQWtCLFFBQVEsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsTUFBTTtFQUV0RCxJQUFLLElBQUksSUFBSSxHQUFHLElBQUksTUFBTSxNQUFNLEVBQUUsSUFBSztJQUNyQyxNQUFNLE9BQWUsS0FBSyxDQUFDLEVBQUU7SUFFN0IsMkJBQTJCO0lBQzNCLElBQUksVUFBVTtNQUNaLE1BQU0sYUFBYSxVQUFVO01BQzdCLE1BQU0saUJBQWlCLFVBQVU7TUFDakMsSUFBSSxpQkFBaUIsY0FBYyxRQUFRO1FBQ3pDO01BQ0Y7SUFDRjtJQUVBLFlBQVksQ0FBQyxJQUFJLElBQUksTUFBTSxFQUFFLElBQUk7RUFDbkM7RUFFQSxPQUFPO0FBQ1Q7QUFFQTs7Q0FFQyxHQUNELE9BQU8sU0FBUyxRQUNkLEtBQWEsRUFDYixJQUFlLEVBQ2YsUUFBaUI7RUFFakIsTUFBTSxjQUFjLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDNUIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFNO0lBQ3ZCLE1BQU0sWUFBWSxnQkFBZ0IsUUFBUSxLQUFLLFVBQVUsS0FBSyxJQUMxRCxLQUNBLE1BQU0sY0FBYztJQUV4QixPQUFPLFVBQ0osS0FBSyxDQUFDLE1BQ04sR0FBRyxDQUFDLENBQUM7TUFDSixNQUFNLE1BQU0sT0FBTyxhQUFhLGNBQzVCLE9BQ0EsYUFBYSxVQUFVO01BRTNCLE9BQU8sVUFBVSxRQUFRO0lBQzNCO0VBQ0osR0FBRyxJQUFJO0VBRVAsT0FBTyxLQUFLLEdBQUcsSUFBSTtBQUNyQjtBQUVBLE9BQU8sTUFBTSxZQUFZLENBQUM7RUFDeEIsTUFBTSxXQUFXO0VBQ2pCLElBQUksU0FBUztFQUNiLElBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLE1BQU0sRUFBRSxJQUFLO0lBQ25DLE1BQU0sV0FBVyxJQUFJLFVBQVUsQ0FBQztJQUNoQyxnREFBZ0Q7SUFDaEQsSUFBSSxZQUFZLFNBQVMsWUFBWSxPQUFPO01BQzFDLFVBQVU7SUFDWixPQUFPO01BQ0wsVUFBVTtJQUNaO0VBQ0Y7RUFDQSxPQUFPO0FBQ1QsRUFBRSJ9 +// denoCacheMetadata=3363781928723257597,17718208346879488347
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/e373f2347336fe56eca5d0409c355d64c8d56c249db6412279b7fae7e78816bd.js b/vendor/gen/https/deno.land/e373f2347336fe56eca5d0409c355d64c8d56c249db6412279b7fae7e78816bd.js new file mode 100644 index 0000000..b5c6312 --- /dev/null +++ b/vendor/gen/https/deno.land/e373f2347336fe56eca5d0409c355d64c8d56c249db6412279b7fae7e78816bd.js @@ -0,0 +1,68 @@ +import { specifier } from "../deps/debugbar.ts"; +/** + * DebugBar is a class that manages collections of items to be displayed in a debug bar. + */ export default class DebugBar { + #url; + collections = []; + constructor(options = {}){ + this.#url = options.url || specifier; + } + get url() { + return this.#url; + } + /** + * Clear all collections + */ clear() { + this.collections.forEach((collection)=>collection.items = []); + } + /** + * Get a collection by name or create a new one if it doesn't exist + */ collection(name) { + const collection = this.collections.find((c)=>c.name === name); + if (collection) { + return collection; + } + const newCollection = name === "Build" ? buildCollection() : { + name, + items: [] + }; + this.collections.push(newCollection); + return newCollection; + } + /** + * Add a new item to the "Build" collection and return it + */ buildItem(title, context = "info") { + const collection = this.collection("Build"); + const item = { + title, + context + }; + collection.items.push(item); + return item; + } +} +/** Build collection created automatically by Lume */ function buildCollection() { + const collection = { + name: "Build", + icon: "fire", + empty: "No build messages found", + contexts: { + fatal: { + background: "important" + }, + error: { + background: "error" + }, + warn: { + background: "warning" + }, + info: { + background: "info" + } + }, + items: [] + }; + return collection; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS9kZWJ1Z2Jhci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzcGVjaWZpZXIgfSBmcm9tIFwiLi4vZGVwcy9kZWJ1Z2Jhci50c1wiO1xuXG5pbXBvcnQgdHlwZSB7IENvbGxlY3Rpb24sIEl0ZW0gfSBmcm9tIFwiLi4vZGVwcy9kZWJ1Z2Jhci50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIFVSTCBvZiB0aGUgZGVidWdiYXIgc2NyaXB0XG4gICAqL1xuICB1cmw/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVidWdCYXIgaXMgYSBjbGFzcyB0aGF0IG1hbmFnZXMgY29sbGVjdGlvbnMgb2YgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGEgZGVidWcgYmFyLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEZWJ1Z0JhciB7XG4gICN1cmw6IHN0cmluZztcbiAgY29sbGVjdGlvbnM6IENvbGxlY3Rpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9wdGlvbnMgPSB7fSkge1xuICAgIHRoaXMuI3VybCA9IG9wdGlvbnMudXJsIHx8IHNwZWNpZmllcjtcbiAgfVxuXG4gIGdldCB1cmwoKSB7XG4gICAgcmV0dXJuIHRoaXMuI3VybDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBhbGwgY29sbGVjdGlvbnNcbiAgICovXG4gIGNsZWFyKCkge1xuICAgIHRoaXMuY29sbGVjdGlvbnMuZm9yRWFjaCgoY29sbGVjdGlvbikgPT4gY29sbGVjdGlvbi5pdGVtcyA9IFtdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBjb2xsZWN0aW9uIGJ5IG5hbWUgb3IgY3JlYXRlIGEgbmV3IG9uZSBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAqL1xuICBjb2xsZWN0aW9uKG5hbWU6IHN0cmluZyk6IENvbGxlY3Rpb24ge1xuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSB0aGlzLmNvbGxlY3Rpb25zLmZpbmQoKGMpID0+IGMubmFtZSA9PT0gbmFtZSk7XG5cbiAgICBpZiAoY29sbGVjdGlvbikge1xuICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgfVxuXG4gICAgY29uc3QgbmV3Q29sbGVjdGlvbjogQ29sbGVjdGlvbiA9IG5hbWUgPT09IFwiQnVpbGRcIiA/IGJ1aWxkQ29sbGVjdGlvbigpIDoge1xuICAgICAgbmFtZSxcbiAgICAgIGl0ZW1zOiBbXSxcbiAgICB9O1xuXG4gICAgdGhpcy5jb2xsZWN0aW9ucy5wdXNoKG5ld0NvbGxlY3Rpb24pO1xuICAgIHJldHVybiBuZXdDb2xsZWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIG5ldyBpdGVtIHRvIHRoZSBcIkJ1aWxkXCIgY29sbGVjdGlvbiBhbmQgcmV0dXJuIGl0XG4gICAqL1xuICBidWlsZEl0ZW0odGl0bGU6IHN0cmluZywgY29udGV4dDogQnVpbGRDb250ZXh0ID0gXCJpbmZvXCIpOiBJdGVtIHtcbiAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5jb2xsZWN0aW9uKFwiQnVpbGRcIik7XG4gICAgY29uc3QgaXRlbTogSXRlbSA9IHtcbiAgICAgIHRpdGxlLFxuICAgICAgY29udGV4dCxcbiAgICB9O1xuXG4gICAgY29sbGVjdGlvbi5pdGVtcy5wdXNoKGl0ZW0pO1xuICAgIHJldHVybiBpdGVtO1xuICB9XG59XG5cbnR5cGUgQnVpbGRDb250ZXh0ID0gXCJmYXRhbFwiIHwgXCJlcnJvclwiIHwgXCJ3YXJuXCIgfCBcImluZm9cIjtcblxuLyoqIEJ1aWxkIGNvbGxlY3Rpb24gY3JlYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IEx1bWUgKi9cbmZ1bmN0aW9uIGJ1aWxkQ29sbGVjdGlvbigpOiBDb2xsZWN0aW9uIHtcbiAgY29uc3QgY29sbGVjdGlvbjogQ29sbGVjdGlvbiA9IHtcbiAgICBuYW1lOiBcIkJ1aWxkXCIsXG4gICAgaWNvbjogXCJmaXJlXCIsXG4gICAgZW1wdHk6IFwiTm8gYnVpbGQgbWVzc2FnZXMgZm91bmRcIixcbiAgICBjb250ZXh0czoge1xuICAgICAgZmF0YWw6IHtcbiAgICAgICAgYmFja2dyb3VuZDogXCJpbXBvcnRhbnRcIixcbiAgICAgIH0sXG4gICAgICBlcnJvcjoge1xuICAgICAgICBiYWNrZ3JvdW5kOiBcImVycm9yXCIsXG4gICAgICB9LFxuICAgICAgd2Fybjoge1xuICAgICAgICBiYWNrZ3JvdW5kOiBcIndhcm5pbmdcIixcbiAgICAgIH0sXG4gICAgICBpbmZvOiB7XG4gICAgICAgIGJhY2tncm91bmQ6IFwiaW5mb1wiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGl0ZW1zOiBbXSxcbiAgfTtcblxuICByZXR1cm4gY29sbGVjdGlvbjtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLFNBQVMsUUFBUSxzQkFBc0I7QUFXaEQ7O0NBRUMsR0FDRCxlQUFlLE1BQU07RUFDbkIsQ0FBQSxHQUFJLENBQVM7RUFDYixjQUE0QixFQUFFLENBQUM7RUFFL0IsWUFBWSxVQUFtQixDQUFDLENBQUMsQ0FBRTtJQUNqQyxJQUFJLENBQUMsQ0FBQSxHQUFJLEdBQUcsUUFBUSxHQUFHLElBQUk7RUFDN0I7RUFFQSxJQUFJLE1BQU07SUFDUixPQUFPLElBQUksQ0FBQyxDQUFBLEdBQUk7RUFDbEI7RUFFQTs7R0FFQyxHQUNELFFBQVE7SUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWUsV0FBVyxLQUFLLEdBQUcsRUFBRTtFQUNoRTtFQUVBOztHQUVDLEdBQ0QsV0FBVyxJQUFZLEVBQWM7SUFDbkMsTUFBTSxhQUFhLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBTSxFQUFFLElBQUksS0FBSztJQUUzRCxJQUFJLFlBQVk7TUFDZCxPQUFPO0lBQ1Q7SUFFQSxNQUFNLGdCQUE0QixTQUFTLFVBQVUsb0JBQW9CO01BQ3ZFO01BQ0EsT0FBTyxFQUFFO0lBQ1g7SUFFQSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUN0QixPQUFPO0VBQ1Q7RUFFQTs7R0FFQyxHQUNELFVBQVUsS0FBYSxFQUFFLFVBQXdCLE1BQU0sRUFBUTtJQUM3RCxNQUFNLGFBQWEsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUNuQyxNQUFNLE9BQWE7TUFDakI7TUFDQTtJQUNGO0lBRUEsV0FBVyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ3RCLE9BQU87RUFDVDtBQUNGO0FBSUEsbURBQW1ELEdBQ25ELFNBQVM7RUFDUCxNQUFNLGFBQXlCO0lBQzdCLE1BQU07SUFDTixNQUFNO0lBQ04sT0FBTztJQUNQLFVBQVU7TUFDUixPQUFPO1FBQ0wsWUFBWTtNQUNkO01BQ0EsT0FBTztRQUNMLFlBQVk7TUFDZDtNQUNBLE1BQU07UUFDSixZQUFZO01BQ2Q7TUFDQSxNQUFNO1FBQ0osWUFBWTtNQUNkO0lBQ0Y7SUFDQSxPQUFPLEVBQUU7RUFDWDtFQUVBLE9BQU87QUFDVCJ9 +// denoCacheMetadata=1769371486322726175,11564725590287215499
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/e4c8e4b371b67de364d0d508d4e1301bb691dbfc4fa99f37a5a32e017c69ad30.js b/vendor/gen/https/deno.land/e4c8e4b371b67de364d0d508d4e1301bb691dbfc4fa99f37a5a32e017c69ad30.js new file mode 100644 index 0000000..cfc16da --- /dev/null +++ b/vendor/gen/https/deno.land/e4c8e4b371b67de364d0d508d4e1301bb691dbfc4fa99f37a5a32e017c69ad30.js @@ -0,0 +1,5 @@ +/** String type handler. Excepts any value. */ export const string = ({ value })=>{ + return value; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvZmxhZ3MvdHlwZXMvc3RyaW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXJndW1lbnRWYWx1ZSwgVHlwZUhhbmRsZXIgfSBmcm9tIFwiLi4vdHlwZXMudHNcIjtcblxuLyoqIFN0cmluZyB0eXBlIGhhbmRsZXIuIEV4Y2VwdHMgYW55IHZhbHVlLiAqL1xuZXhwb3J0IGNvbnN0IHN0cmluZzogVHlwZUhhbmRsZXI8c3RyaW5nPiA9IChcbiAgeyB2YWx1ZSB9OiBBcmd1bWVudFZhbHVlLFxuKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIHZhbHVlO1xufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSw0Q0FBNEMsR0FDNUMsT0FBTyxNQUFNLFNBQThCLENBQ3pDLEVBQUUsS0FBSyxFQUFpQjtFQUV4QixPQUFPO0FBQ1QsRUFBRSJ9 +// denoCacheMetadata=8414343569222381439,9500255748461623515
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/e7bceb0bf728eb749e9c145128c9520b662a295ecadd239f363a05c52f178b5f.js b/vendor/gen/https/deno.land/e7bceb0bf728eb749e9c145128c9520b662a295ecadd239f363a05c52f178b5f.js new file mode 100644 index 0000000..8e71e4a --- /dev/null +++ b/vendor/gen/https/deno.land/e7bceb0bf728eb749e9c145128c9520b662a295ecadd239f363a05c52f178b5f.js @@ -0,0 +1,10 @@ +export * from "./flags.ts"; +export * from "./types.ts"; +export * from "./types/boolean.ts"; +export * from "./types/integer.ts"; +export * from "./types/number.ts"; +export * from "./types/string.ts"; +export * from "./deprecated.ts"; +export { ValidationError } from "./_errors.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvZmxhZ3MvbW9kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2ZsYWdzLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlcy50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMvYm9vbGVhbi50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMvaW50ZWdlci50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMvbnVtYmVyLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlcy9zdHJpbmcudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlcHJlY2F0ZWQudHNcIjtcbmV4cG9ydCB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gXCIuL19lcnJvcnMudHNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWE7QUFDM0IsY0FBYyxhQUFhO0FBQzNCLGNBQWMscUJBQXFCO0FBQ25DLGNBQWMscUJBQXFCO0FBQ25DLGNBQWMsb0JBQW9CO0FBQ2xDLGNBQWMsb0JBQW9CO0FBQ2xDLGNBQWMsa0JBQWtCO0FBQ2hDLFNBQVMsZUFBZSxRQUFRLGVBQWUifQ== +// denoCacheMetadata=2527565331018455288,18268326891733127118
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/e81338b01519599c2e66a798b892305c443ca2ffb64f85cb4287a76d893b2650.js b/vendor/gen/https/deno.land/e81338b01519599c2e66a798b892305c443ca2ffb64f85cb4287a76d893b2650.js new file mode 100644 index 0000000..56fc1b9 --- /dev/null +++ b/vendor/gen/https/deno.land/e81338b01519599c2e66a798b892305c443ca2ffb64f85cb4287a76d893b2650.js @@ -0,0 +1,10 @@ +import { InvalidTypeError } from "../_errors.ts"; +/** Number type handler. Excepts any numeric value. */ export const number = (type)=>{ + const value = Number(type.value); + if (Number.isFinite(value)) { + return value; + } + throw new InvalidTypeError(type); +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvZmxhZ3MvdHlwZXMvbnVtYmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXJndW1lbnRWYWx1ZSwgVHlwZUhhbmRsZXIgfSBmcm9tIFwiLi4vdHlwZXMudHNcIjtcbmltcG9ydCB7IEludmFsaWRUeXBlRXJyb3IgfSBmcm9tIFwiLi4vX2Vycm9ycy50c1wiO1xuXG4vKiogTnVtYmVyIHR5cGUgaGFuZGxlci4gRXhjZXB0cyBhbnkgbnVtZXJpYyB2YWx1ZS4gKi9cbmV4cG9ydCBjb25zdCBudW1iZXI6IFR5cGVIYW5kbGVyPG51bWJlcj4gPSAodHlwZTogQXJndW1lbnRWYWx1ZSk6IG51bWJlciA9PiB7XG4gIGNvbnN0IHZhbHVlID0gTnVtYmVyKHR5cGUudmFsdWUpO1xuICBpZiAoTnVtYmVyLmlzRmluaXRlKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHRocm93IG5ldyBJbnZhbGlkVHlwZUVycm9yKHR5cGUpO1xufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxTQUFTLGdCQUFnQixRQUFRLGdCQUFnQjtBQUVqRCxvREFBb0QsR0FDcEQsT0FBTyxNQUFNLFNBQThCLENBQUM7RUFDMUMsTUFBTSxRQUFRLE9BQU8sS0FBSyxLQUFLO0VBQy9CLElBQUksT0FBTyxRQUFRLENBQUMsUUFBUTtJQUMxQixPQUFPO0VBQ1Q7RUFFQSxNQUFNLElBQUksaUJBQWlCO0FBQzdCLEVBQUUifQ== +// denoCacheMetadata=9648384051611906888,12881446463467088110
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/eb8f80b56106578add3c34d4a67149cce6779fec8fbebb17a7ecbcca2ef41a52.js b/vendor/gen/https/deno.land/eb8f80b56106578add3c34d4a67149cce6779fec8fbebb17a7ecbcca2ef41a52.js new file mode 100644 index 0000000..b932f2a --- /dev/null +++ b/vendor/gen/https/deno.land/eb8f80b56106578add3c34d4a67149cce6779fec8fbebb17a7ecbcca2ef41a52.js @@ -0,0 +1,163 @@ +import { GenericPrompt } from "./_generic_prompt.ts"; +import { GenericSuggestions } from "./_generic_suggestions.ts"; +import { parseNumber } from "./_utils.ts"; +import { brightBlue, yellow } from "./deps.ts"; +import { Figures } from "./figures.ts"; +/** Number prompt representation. */ export class Number extends GenericSuggestions { + /** Execute the prompt and show cursor on end. */ static prompt(options) { + if (typeof options === "string") { + options = { + message: options + }; + } + return new this({ + pointer: brightBlue(Figures.POINTER_SMALL), + prefix: yellow("? "), + indent: " ", + listPointer: brightBlue(Figures.POINTER), + maxRows: 8, + min: -Infinity, + max: Infinity, + float: false, + round: 2, + ...options, + files: false, + keys: { + increaseValue: [ + "up", + "u", + "+" + ], + decreaseValue: [ + "down", + "d", + "-" + ], + ...options.keys ?? {} + } + }).prompt(); + } + /** + * Inject prompt value. Can be used for unit tests or pre selections. + * @param value Input value. + */ static inject(value) { + GenericPrompt.inject(value); + } + success(value) { + this.saveSuggestions(value); + return super.success(value); + } + /** + * Handle user input event. + * @param event Key event. + */ async handleEvent(event) { + switch(true){ + case this.settings.suggestions && this.isKey(this.settings.keys, "next", event): + if (this.settings.list) { + this.selectPreviousSuggestion(); + } else { + this.selectNextSuggestion(); + } + break; + case this.settings.suggestions && this.isKey(this.settings.keys, "previous", event): + if (this.settings.list) { + this.selectNextSuggestion(); + } else { + this.selectPreviousSuggestion(); + } + break; + case this.isKey(this.settings.keys, "increaseValue", event): + this.increaseValue(); + break; + case this.isKey(this.settings.keys, "decreaseValue", event): + this.decreaseValue(); + break; + default: + await super.handleEvent(event); + } + } + /** Increase input number. */ increaseValue() { + this.manipulateIndex(false); + } + /** Decrease input number. */ decreaseValue() { + this.manipulateIndex(true); + } + /** Decrease/increase input number. */ manipulateIndex(decrease) { + if (this.inputValue[this.inputIndex] === "-") { + this.inputIndex++; + } + if (this.inputValue.length && this.inputIndex > this.inputValue.length - 1) { + this.inputIndex--; + } + const decimalIndex = this.inputValue.indexOf("."); + const [abs, dec] = this.inputValue.split("."); + if (dec && this.inputIndex === decimalIndex) { + this.inputIndex--; + } + const inDecimal = decimalIndex !== -1 && this.inputIndex > decimalIndex; + let value = (inDecimal ? dec : abs) || "0"; + const oldLength = this.inputValue.length; + const index = inDecimal ? this.inputIndex - decimalIndex - 1 : this.inputIndex; + const increaseValue = Math.pow(10, value.length - index - 1); + value = (parseInt(value) + (decrease ? -increaseValue : increaseValue)).toString(); + this.inputValue = !dec ? value : this.inputIndex > decimalIndex ? abs + "." + value : value + "." + dec; + if (this.inputValue.length > oldLength) { + this.inputIndex++; + } else if (this.inputValue.length < oldLength && this.inputValue[this.inputIndex - 1] !== "-") { + this.inputIndex--; + } + this.inputIndex = Math.max(0, Math.min(this.inputIndex, this.inputValue.length - 1)); + } + /** + * Add char to input. + * @param char Char. + */ addChar(char) { + if (isNumeric(char)) { + super.addChar(char); + } else if (this.settings.float && char === "." && this.inputValue.indexOf(".") === -1 && (this.inputValue[0] === "-" ? this.inputIndex > 1 : this.inputIndex > 0)) { + super.addChar(char); + } + } + /** + * Validate input value. + * @param value User input value. + * @return True on success, false or error message on error. + */ validate(value) { + if (!isNumeric(value)) { + return false; + } + const val = parseFloat(value); + if (val > this.settings.max) { + return `Value must be lower or equal than ${this.settings.max}`; + } + if (val < this.settings.min) { + return `Value must be greater or equal than ${this.settings.min}`; + } + return true; + } + /** + * Map input value to output value. + * @param value Input value. + * @return Output value. + */ transform(value) { + const val = parseFloat(value); + if (this.settings.float) { + return parseFloat(val.toFixed(this.settings.round)); + } + return val; + } + /** + * Format output value. + * @param value Output value. + */ format(value) { + return value.toString(); + } + /** Get input input. */ getValue() { + return this.inputValue; + } +} +function isNumeric(value) { + return typeof value === "number" || !!value && !isNaN(parseNumber(value)); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvcHJvbXB0L251bWJlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEtleUNvZGUgfSBmcm9tIFwiLi4va2V5Y29kZS9rZXlfY29kZS50c1wiO1xuaW1wb3J0IHsgR2VuZXJpY1Byb21wdCB9IGZyb20gXCIuL19nZW5lcmljX3Byb21wdC50c1wiO1xuaW1wb3J0IHtcbiAgR2VuZXJpY1N1Z2dlc3Rpb25zLFxuICBHZW5lcmljU3VnZ2VzdGlvbnNLZXlzLFxuICBHZW5lcmljU3VnZ2VzdGlvbnNPcHRpb25zLFxuICBHZW5lcmljU3VnZ2VzdGlvbnNTZXR0aW5ncyxcbn0gZnJvbSBcIi4vX2dlbmVyaWNfc3VnZ2VzdGlvbnMudHNcIjtcbmltcG9ydCB7IHBhcnNlTnVtYmVyIH0gZnJvbSBcIi4vX3V0aWxzLnRzXCI7XG5pbXBvcnQgeyBicmlnaHRCbHVlLCB5ZWxsb3cgfSBmcm9tIFwiLi9kZXBzLnRzXCI7XG5pbXBvcnQgeyBGaWd1cmVzIH0gZnJvbSBcIi4vZmlndXJlcy50c1wiO1xuXG4vKiogTnVtYmVyIGtleSBvcHRpb25zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBOdW1iZXJLZXlzIGV4dGVuZHMgR2VuZXJpY1N1Z2dlc3Rpb25zS2V5cyB7XG4gIGluY3JlYXNlVmFsdWU/OiBzdHJpbmdbXTtcbiAgZGVjcmVhc2VWYWx1ZT86IHN0cmluZ1tdO1xufVxuXG50eXBlIFVuc3VwcG9ydGVkT3B0aW9ucyA9IFwiZmlsZXNcIjtcblxuLyoqIE51bWJlciBwcm9tcHQgb3B0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTnVtYmVyT3B0aW9uc1xuICBleHRlbmRzIE9taXQ8R2VuZXJpY1N1Z2dlc3Rpb25zT3B0aW9uczxudW1iZXIsIHN0cmluZz4sIFVuc3VwcG9ydGVkT3B0aW9ucz4ge1xuICBtaW4/OiBudW1iZXI7XG4gIG1heD86IG51bWJlcjtcbiAgZmxvYXQ/OiBib29sZWFuO1xuICByb3VuZD86IG51bWJlcjtcbiAga2V5cz86IE51bWJlcktleXM7XG59XG5cbi8qKiBOdW1iZXIgcHJvbXB0IHNldHRpbmdzLiAqL1xuaW50ZXJmYWNlIE51bWJlclNldHRpbmdzIGV4dGVuZHMgR2VuZXJpY1N1Z2dlc3Rpb25zU2V0dGluZ3M8bnVtYmVyLCBzdHJpbmc+IHtcbiAgbWluOiBudW1iZXI7XG4gIG1heDogbnVtYmVyO1xuICBmbG9hdDogYm9vbGVhbjtcbiAgcm91bmQ6IG51bWJlcjtcbiAga2V5cz86IE51bWJlcktleXM7XG59XG5cbi8qKiBOdW1iZXIgcHJvbXB0IHJlcHJlc2VudGF0aW9uLiAqL1xuZXhwb3J0IGNsYXNzIE51bWJlciBleHRlbmRzIEdlbmVyaWNTdWdnZXN0aW9uczxudW1iZXIsIHN0cmluZywgTnVtYmVyU2V0dGluZ3M+IHtcbiAgLyoqIEV4ZWN1dGUgdGhlIHByb21wdCBhbmQgc2hvdyBjdXJzb3Igb24gZW5kLiAqL1xuICBwdWJsaWMgc3RhdGljIHByb21wdChvcHRpb25zOiBzdHJpbmcgfCBOdW1iZXJPcHRpb25zKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIG9wdGlvbnMgPSB7IG1lc3NhZ2U6IG9wdGlvbnMgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IHRoaXMoe1xuICAgICAgcG9pbnRlcjogYnJpZ2h0Qmx1ZShGaWd1cmVzLlBPSU5URVJfU01BTEwpLFxuICAgICAgcHJlZml4OiB5ZWxsb3coXCI/IFwiKSxcbiAgICAgIGluZGVudDogXCIgXCIsXG4gICAgICBsaXN0UG9pbnRlcjogYnJpZ2h0Qmx1ZShGaWd1cmVzLlBPSU5URVIpLFxuICAgICAgbWF4Um93czogOCxcbiAgICAgIG1pbjogLUluZmluaXR5LFxuICAgICAgbWF4OiBJbmZpbml0eSxcbiAgICAgIGZsb2F0OiBmYWxzZSxcbiAgICAgIHJvdW5kOiAyLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGZpbGVzOiBmYWxzZSxcbiAgICAgIGtleXM6IHtcbiAgICAgICAgaW5jcmVhc2VWYWx1ZTogW1widXBcIiwgXCJ1XCIsIFwiK1wiXSxcbiAgICAgICAgZGVjcmVhc2VWYWx1ZTogW1wiZG93blwiLCBcImRcIiwgXCItXCJdLFxuICAgICAgICAuLi4ob3B0aW9ucy5rZXlzID8/IHt9KSxcbiAgICAgIH0sXG4gICAgfSkucHJvbXB0KCk7XG4gIH1cblxuICAvKipcbiAgICogSW5qZWN0IHByb21wdCB2YWx1ZS4gQ2FuIGJlIHVzZWQgZm9yIHVuaXQgdGVzdHMgb3IgcHJlIHNlbGVjdGlvbnMuXG4gICAqIEBwYXJhbSB2YWx1ZSBJbnB1dCB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaW5qZWN0KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBHZW5lcmljUHJvbXB0LmluamVjdCh2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3VjY2Vzcyh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICB0aGlzLnNhdmVTdWdnZXN0aW9ucyh2YWx1ZSk7XG4gICAgcmV0dXJuIHN1cGVyLnN1Y2Nlc3ModmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB1c2VyIGlucHV0IGV2ZW50LlxuICAgKiBAcGFyYW0gZXZlbnQgS2V5IGV2ZW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUV2ZW50KGV2ZW50OiBLZXlDb2RlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICBjYXNlIHRoaXMuc2V0dGluZ3Muc3VnZ2VzdGlvbnMgJiZcbiAgICAgICAgdGhpcy5pc0tleSh0aGlzLnNldHRpbmdzLmtleXMsIFwibmV4dFwiLCBldmVudCk6XG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmxpc3QpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdFByZXZpb3VzU3VnZ2VzdGlvbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0TmV4dFN1Z2dlc3Rpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5zZXR0aW5ncy5zdWdnZXN0aW9ucyAmJlxuICAgICAgICB0aGlzLmlzS2V5KHRoaXMuc2V0dGluZ3Mua2V5cywgXCJwcmV2aW91c1wiLCBldmVudCk6XG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLmxpc3QpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdE5leHRTdWdnZXN0aW9uKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RQcmV2aW91c1N1Z2dlc3Rpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5pc0tleSh0aGlzLnNldHRpbmdzLmtleXMsIFwiaW5jcmVhc2VWYWx1ZVwiLCBldmVudCk6XG4gICAgICAgIHRoaXMuaW5jcmVhc2VWYWx1ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5pc0tleSh0aGlzLnNldHRpbmdzLmtleXMsIFwiZGVjcmVhc2VWYWx1ZVwiLCBldmVudCk6XG4gICAgICAgIHRoaXMuZGVjcmVhc2VWYWx1ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGF3YWl0IHN1cGVyLmhhbmRsZUV2ZW50KGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvKiogSW5jcmVhc2UgaW5wdXQgbnVtYmVyLiAqL1xuICBwdWJsaWMgaW5jcmVhc2VWYWx1ZSgpIHtcbiAgICB0aGlzLm1hbmlwdWxhdGVJbmRleChmYWxzZSk7XG4gIH1cblxuICAvKiogRGVjcmVhc2UgaW5wdXQgbnVtYmVyLiAqL1xuICBwdWJsaWMgZGVjcmVhc2VWYWx1ZSgpIHtcbiAgICB0aGlzLm1hbmlwdWxhdGVJbmRleCh0cnVlKTtcbiAgfVxuXG4gIC8qKiBEZWNyZWFzZS9pbmNyZWFzZSBpbnB1dCBudW1iZXIuICovXG4gIHByb3RlY3RlZCBtYW5pcHVsYXRlSW5kZXgoZGVjcmVhc2U/OiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuaW5wdXRWYWx1ZVt0aGlzLmlucHV0SW5kZXhdID09PSBcIi1cIikge1xuICAgICAgdGhpcy5pbnB1dEluZGV4Kys7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5pbnB1dFZhbHVlLmxlbmd0aCAmJiAodGhpcy5pbnB1dEluZGV4ID4gdGhpcy5pbnB1dFZhbHVlLmxlbmd0aCAtIDEpXG4gICAgKSB7XG4gICAgICB0aGlzLmlucHV0SW5kZXgtLTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWNpbWFsSW5kZXg6IG51bWJlciA9IHRoaXMuaW5wdXRWYWx1ZS5pbmRleE9mKFwiLlwiKTtcbiAgICBjb25zdCBbYWJzLCBkZWNdID0gdGhpcy5pbnB1dFZhbHVlLnNwbGl0KFwiLlwiKTtcblxuICAgIGlmIChkZWMgJiYgdGhpcy5pbnB1dEluZGV4ID09PSBkZWNpbWFsSW5kZXgpIHtcbiAgICAgIHRoaXMuaW5wdXRJbmRleC0tO1xuICAgIH1cblxuICAgIGNvbnN0IGluRGVjaW1hbDogYm9vbGVhbiA9IGRlY2ltYWxJbmRleCAhPT0gLTEgJiZcbiAgICAgIHRoaXMuaW5wdXRJbmRleCA+IGRlY2ltYWxJbmRleDtcbiAgICBsZXQgdmFsdWU6IHN0cmluZyA9IChpbkRlY2ltYWwgPyBkZWMgOiBhYnMpIHx8IFwiMFwiO1xuICAgIGNvbnN0IG9sZExlbmd0aDogbnVtYmVyID0gdGhpcy5pbnB1dFZhbHVlLmxlbmd0aDtcbiAgICBjb25zdCBpbmRleDogbnVtYmVyID0gaW5EZWNpbWFsXG4gICAgICA/IHRoaXMuaW5wdXRJbmRleCAtIGRlY2ltYWxJbmRleCAtIDFcbiAgICAgIDogdGhpcy5pbnB1dEluZGV4O1xuICAgIGNvbnN0IGluY3JlYXNlVmFsdWUgPSBNYXRoLnBvdygxMCwgdmFsdWUubGVuZ3RoIC0gaW5kZXggLSAxKTtcblxuICAgIHZhbHVlID0gKHBhcnNlSW50KHZhbHVlKSArIChkZWNyZWFzZSA/IC1pbmNyZWFzZVZhbHVlIDogaW5jcmVhc2VWYWx1ZSkpXG4gICAgICAudG9TdHJpbmcoKTtcblxuICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICFkZWNcbiAgICAgID8gdmFsdWVcbiAgICAgIDogKHRoaXMuaW5wdXRJbmRleCA+IGRlY2ltYWxJbmRleFxuICAgICAgICA/IGFicyArIFwiLlwiICsgdmFsdWVcbiAgICAgICAgOiB2YWx1ZSArIFwiLlwiICsgZGVjKTtcblxuICAgIGlmICh0aGlzLmlucHV0VmFsdWUubGVuZ3RoID4gb2xkTGVuZ3RoKSB7XG4gICAgICB0aGlzLmlucHV0SW5kZXgrKztcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5pbnB1dFZhbHVlLmxlbmd0aCA8IG9sZExlbmd0aCAmJlxuICAgICAgdGhpcy5pbnB1dFZhbHVlW3RoaXMuaW5wdXRJbmRleCAtIDFdICE9PSBcIi1cIlxuICAgICkge1xuICAgICAgdGhpcy5pbnB1dEluZGV4LS07XG4gICAgfVxuXG4gICAgdGhpcy5pbnB1dEluZGV4ID0gTWF0aC5tYXgoXG4gICAgICAwLFxuICAgICAgTWF0aC5taW4odGhpcy5pbnB1dEluZGV4LCB0aGlzLmlucHV0VmFsdWUubGVuZ3RoIC0gMSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgY2hhciB0byBpbnB1dC5cbiAgICogQHBhcmFtIGNoYXIgQ2hhci5cbiAgICovXG4gIHByb3RlY3RlZCBhZGRDaGFyKGNoYXI6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChpc051bWVyaWMoY2hhcikpIHtcbiAgICAgIHN1cGVyLmFkZENoYXIoY2hhcik7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMuc2V0dGluZ3MuZmxvYXQgJiZcbiAgICAgIGNoYXIgPT09IFwiLlwiICYmXG4gICAgICB0aGlzLmlucHV0VmFsdWUuaW5kZXhPZihcIi5cIikgPT09IC0xICYmXG4gICAgICAodGhpcy5pbnB1dFZhbHVlWzBdID09PSBcIi1cIiA/IHRoaXMuaW5wdXRJbmRleCA+IDEgOiB0aGlzLmlucHV0SW5kZXggPiAwKVxuICAgICkge1xuICAgICAgc3VwZXIuYWRkQ2hhcihjaGFyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgaW5wdXQgdmFsdWUuXG4gICAqIEBwYXJhbSB2YWx1ZSBVc2VyIGlucHV0IHZhbHVlLlxuICAgKiBAcmV0dXJuIFRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3IgZXJyb3IgbWVzc2FnZSBvbiBlcnJvci5cbiAgICovXG4gIHByb3RlY3RlZCB2YWxpZGF0ZSh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB8IHN0cmluZyB7XG4gICAgaWYgKCFpc051bWVyaWModmFsdWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsOiBudW1iZXIgPSBwYXJzZUZsb2F0KHZhbHVlKTtcblxuICAgIGlmICh2YWwgPiB0aGlzLnNldHRpbmdzLm1heCkge1xuICAgICAgcmV0dXJuIGBWYWx1ZSBtdXN0IGJlIGxvd2VyIG9yIGVxdWFsIHRoYW4gJHt0aGlzLnNldHRpbmdzLm1heH1gO1xuICAgIH1cblxuICAgIGlmICh2YWwgPCB0aGlzLnNldHRpbmdzLm1pbikge1xuICAgICAgcmV0dXJuIGBWYWx1ZSBtdXN0IGJlIGdyZWF0ZXIgb3IgZXF1YWwgdGhhbiAke3RoaXMuc2V0dGluZ3MubWlufWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogTWFwIGlucHV0IHZhbHVlIHRvIG91dHB1dCB2YWx1ZS5cbiAgICogQHBhcmFtIHZhbHVlIElucHV0IHZhbHVlLlxuICAgKiBAcmV0dXJuIE91dHB1dCB2YWx1ZS5cbiAgICovXG4gIHByb3RlY3RlZCB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZyk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdmFsOiBudW1iZXIgPSBwYXJzZUZsb2F0KHZhbHVlKTtcblxuICAgIGlmICh0aGlzLnNldHRpbmdzLmZsb2F0KSB7XG4gICAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWwudG9GaXhlZCh0aGlzLnNldHRpbmdzLnJvdW5kKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXQgb3V0cHV0IHZhbHVlLlxuICAgKiBAcGFyYW0gdmFsdWUgT3V0cHV0IHZhbHVlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGZvcm1hdCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKiBHZXQgaW5wdXQgaW5wdXQuICovXG4gIHByb3RlY3RlZCBnZXRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlucHV0VmFsdWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNOdW1lcmljKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB2YWx1ZSBpcyBudW1iZXIgfCBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiIHx8ICghIXZhbHVlICYmICFpc05hTihwYXJzZU51bWJlcih2YWx1ZSkpKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxTQUFTLGFBQWEsUUFBUSx1QkFBdUI7QUFDckQsU0FDRSxrQkFBa0IsUUFJYiw0QkFBNEI7QUFDbkMsU0FBUyxXQUFXLFFBQVEsY0FBYztBQUMxQyxTQUFTLFVBQVUsRUFBRSxNQUFNLFFBQVEsWUFBWTtBQUMvQyxTQUFTLE9BQU8sUUFBUSxlQUFlO0FBNkJ2QyxrQ0FBa0MsR0FDbEMsT0FBTyxNQUFNLGVBQWU7RUFDMUIsK0NBQStDLEdBQy9DLE9BQWMsT0FBTyxPQUErQixFQUFtQjtJQUNyRSxJQUFJLE9BQU8sWUFBWSxVQUFVO01BQy9CLFVBQVU7UUFBRSxTQUFTO01BQVE7SUFDL0I7SUFFQSxPQUFPLElBQUksSUFBSSxDQUFDO01BQ2QsU0FBUyxXQUFXLFFBQVEsYUFBYTtNQUN6QyxRQUFRLE9BQU87TUFDZixRQUFRO01BQ1IsYUFBYSxXQUFXLFFBQVEsT0FBTztNQUN2QyxT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 +// denoCacheMetadata=1904135058651224109,14320392943239601583
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/ed1f5033c2c651877a8a846f864c21d6250a6a1b470777a89b1579a83b93de0b.js b/vendor/gen/https/deno.land/ed1f5033c2c651877a8a846f864c21d6250a6a1b470777a89b1579a83b93de0b.js new file mode 100644 index 0000000..dd843ba --- /dev/null +++ b/vendor/gen/https/deno.land/ed1f5033c2c651877a8a846f864c21d6250a6a1b470777a89b1579a83b93de0b.js @@ -0,0 +1,387 @@ +import { posix } from "../deps/path.ts"; +import { getExtension, normalizePath } from "./utils/path.ts"; +import { mergeData } from "./utils/merge_data.ts"; +import { getBasename, getPageUrl } from "./utils/page_url.ts"; +import { getPageDate } from "./utils/page_date.ts"; +import { Page, StaticFile } from "./file.ts"; +import { toProxy } from "./components.ts"; +/** + * Scan and load files from the source folder + * with the data, pages, assets and static files + */ export default class Source { + /** Filesystem reader to scan folders */ fs; + /** To load all _data files */ dataLoader; + /** To load all components */ componentLoader; + /** Info about how to handle different file formats */ formats; + /** The list of paths to ignore */ ignored = new Set(); + /** The path filters to ignore */ filters = []; + /** The data assigned per path */ scopedData; + /** The pages assigned per path */ scopedPages; + /** The components assigned per path */ scopedComponents; + /** Use pretty URLs */ prettyUrls; + /** Extra code generated by components */ extraCode = new Map(); + components; + /** The data assigned per path */ data = new Map(); + /** Custom parsers for basenames */ basenameParsers = []; + /** Files added with `site.add()` or `site.copy()` */ addedFiles = new Map(); + constructor(options){ + this.dataLoader = options.dataLoader; + this.componentLoader = options.componentLoader; + this.fs = options.fs; + this.formats = options.formats; + this.components = options.components; + this.scopedData = options.scopedData; + this.scopedPages = options.scopedPages; + this.scopedComponents = options.scopedComponents; + this.prettyUrls = options.prettyUrls; + this.basenameParsers = options.basenameParsers; + } + addIgnoredPath(path) { + this.ignored.add(normalizePath(path)); + } + addIgnoreFilter(filter) { + this.filters.push(filter); + } + addFile(from, to, isCopy = false) { + if (from.startsWith(".")) { + if (typeof to !== "function") { + throw new Error(`Added files by extensions like "${from}" expects a function to calculate the destination but got a string "${to}"`); + } + } else { + from = normalizePath(from); + } + if (typeof to === "string") { + if (to.endsWith("/")) { + to = to.slice(0, -1); + } + to = normalizePath(to); + } + this.addedFiles.set(from, [ + to, + isCopy + ]); + } + async build(...buildFilters) { + const pages = []; + const staticFiles = []; + this.data.clear(); + await this.#addDirectory(buildFilters, this.fs.entries.get("/"), "/", new Map(), {}, pages, staticFiles); + return [ + pages, + staticFiles + ]; + } + /** Returns the pages with extra code generated by the components */ *getComponentsExtraCode() { + const files = { + css: { + path: this.components.cssFile, + entries: new Map() + }, + js: { + path: this.components.jsFile, + entries: new Map() + } + }; + for (const [path, content] of this.extraCode){ + if (path.endsWith(".css")) { + files.css.entries.set(path, content); + continue; + } + if (path.endsWith(".js") || path.endsWith(".ts")) { + files.js.entries.set(path, content); + continue; + } + throw new Error(`Unknown component asset extension: ${path}`); + } + for (const { path, entries } of Object.values(files)){ + if (entries.size) { + yield { + path, + entries + }; + } + } + } + async #addDirectory(buildFilters, dir, parentPath, parentComponents, parentData, pages, staticFiles, destination) { + if (buildFilters.some((filter)=>!filter(dir))) { + return; + } + // Load _data + const dirData = await this.#loadDirData(dir, parentData); + let dirPath = posix.join(parentPath, dirData.basename); + // Load _components + const dirComponents = await this.#loadDirComponents(dir, parentComponents, dirData); + // Create the components proxy only if new components were found + if (dirComponents !== parentComponents) { + dirData.comp = toProxy(dirComponents, this.extraCode); + } + // Store the directory data to be used by other plugins + this.data.set(dir.path, dirData); + this.data.set(dirPath, dirData); + // Load pages created with `site.page()` + for await (const page of this.#getDirPages(dir.path, dirData)){ + if (buildFilters.some((filter)=>!filter(dir, page))) { + continue; + } + pages.push(page); + } + // The folder is added with `site.add("folder")` + const added = this.addedFiles.get(dir.path) || this.addedFiles.get(dirPath) || this.addedFiles.get(`${dir.path}/`) || this.addedFiles.get(`${dirPath}/`); + if (added) { + const [dest, isCopy] = added; + if (typeof dest === "function") { + const prev = destination?.[0]; + destination = [ + prev ? (path)=>dest(prev(path)) : dest, + isCopy + ]; + } else { + dirPath = dest; + destination ??= [ + (path)=>path, + isCopy + ]; + } + } + // Iterate over the directory entries + for (const entry of dir.children.values()){ + if (buildFilters.some((filter)=>!filter(entry))) { + continue; + } + if (entry.type === "file") { + await this.#addFile(buildFilters, entry, dirPath, dirData, pages, staticFiles, destination); + continue; + } + if (entry.type === "directory") { + if (this.#isIgnored(entry)) { + // Add possible inner entries + // For example: site.ignore("folder").add("folder/file.ext") + for (const path of this.addedFiles.keys()){ + if (path !== entry.path && !path.startsWith(`${entry.path}/`)) { + continue; + } + const subEntry = this.fs.entries.get(path); + if (!subEntry) { + continue; + } + if (subEntry.type === "file") { + await this.#addFile(buildFilters, subEntry, dirPath, dirData, pages, staticFiles, destination); + continue; + } + if (subEntry.type === "directory") { + await this.#addDirectory(buildFilters, subEntry, dirPath, dirComponents, dirData, pages, staticFiles, destination); + } + } + continue; + } + await this.#addDirectory(buildFilters, entry, dirPath, dirComponents, dirData, pages, staticFiles, destination); + } + } + } + async #addFile(buildFilters, file, dirPath, dirData, pages, staticFiles, destination) { + // The file is added with `site.add("file.ext")` + const added = this.addedFiles.get(file.path); + let [dest, isCopy] = added ?? destination ?? []; + // Merge the destination with the parent folder + if (added) { + const [addedDest] = added; + if (typeof addedDest === "function") { + const parentDest = destination?.[0]; + dest = parentDest ? (path)=>addedDest(parentDest(path)) : addedDest; + } + } else if (this.#isIgnored(file)) { + // The file or parent folder is ignored and the file not explicitly added + return; + } + const format = this.formats.search(file.path); + // The format is a page `site.loadPages([".ext"])` + if (format?.isPage && !isCopy) { + const page = await this.#loadPage(file, format, dirData, dirPath, dest); + if (page && (!buildFilters.length || buildFilters.every((filter)=>filter(file, page)))) { + pages.push(page); + } + return; + } + const ext = format?.ext || getExtension(file.name); + // The file is added explicitly with `site.add()` or `site.copy()` + if (added) { + const staticFile = createFile(file, ext, dirPath, dirData, dest); + staticFile.isCopy = !!isCopy; + staticFiles.push(staticFile); + return; + } + // The file is added with `site.add([".ext"])` + const addedExt = this.addedFiles.get(ext); + if (addedExt) { + const [addedExtDest, addedExtCopy] = addedExt; + if (typeof addedExtDest === "function") { + const parentDest = dest; + dest = typeof parentDest === "function" ? (path)=>addedExtDest(parentDest(path)) : addedExtDest; + } + if (addedExtCopy) { + isCopy = true; + } + } + // If `dest` exists is because: + // - the file was added with `site.add([".ext"])` + // - or any parent folder with `site.add("folder")` + if (dest) { + const staticFile = createFile(file, ext, dirPath, dirData, dest); + staticFile.isCopy = !!isCopy; + staticFiles.push(staticFile); + } + } + /** Check if the entry must be ignored by Lume */ #isIgnored(entry) { + return entry.name.startsWith(".") && (entry.type !== "directory" || !entry.path.endsWith("/.well-known")) || entry.name.startsWith("_") || this.ignored.has(entry.path) || this.filters.some((filter)=>filter(entry.path)); + } + /** Load a folder's _data and merge it with the parent data */ async #loadDirData(dir, parentData) { + // Parse the directory's basename + const { basename, ...parsedData } = runBasenameParsers(dir.name, this.basenameParsers); + // Load _data files + const dirDatas = []; + for (const entry of dir.children.values()){ + if (entry.type === "file" && entry.name.startsWith("_data.") || entry.type === "directory" && entry.name === "_data") { + const loaded = await this.dataLoader.load(entry); + if (loaded) { + dirDatas.push(loaded); + } + } + } + // Data registered from site.data() + const scopedData = this.scopedData.get(dir.path) || {}; + // Merge directory data + return mergeData(parentData, { + basename + }, scopedData, parsedData, ...dirDatas); + } + /** + * Load _components, merge them with the parent components + * and store on the data object + */ async #loadDirComponents(dir, parentComponents, data) { + // Components registered from site.component() + const scopedComponents = this.scopedComponents.get(dir.path); + let loadedComponents; + // Load _components files + for (const entry of dir.children.values()){ + if (entry.type === "directory" && entry.name === "_components") { + loadedComponents = await this.componentLoader.load(entry, data); + break; + } + } + // Merge the components + if (scopedComponents || loadedComponents) { + parentComponents = mergeComponents(parentComponents, scopedComponents || new Map(), loadedComponents || new Map()); + } + return parentComponents; + } + async *#getDirPages(path, dirData) { + const pages = this.scopedPages.get(path); + if (!pages) { + return; + } + for (const data of pages){ + const basename = posix.basename(data.url).replace(/\.[\w.]+$/, ""); + const page = new Page(); + page.data = mergeData(dirData, { + basename, + date: new Date() + }, data); + const url = getPageUrl(page, this.prettyUrls, path); + if (!url) { + continue; + } + page.data.url = url; + page.data.basename = getBasename(url); + page.data.date = getPageDate(page); + page.data.page = page; + // Prevent running the layout if the page is an asset + if (!data.layout && !page.outputPath.endsWith(".html")) { + delete page.data.layout; + } + yield page; + } + } + /** Load a page from a file entry */ async #loadPage(entry, format, dirData, dirPath, destination) { + // The format is a page or asset + const { loader, ext } = format; + if (!loader) { + throw new Error(`Missing loader for the page ${entry.path}`); + } + const { basename, ...parsedData } = runBasenameParsers(entry.name.slice(0, -ext.length), this.basenameParsers); + // Create the page + const page = new Page({ + path: entry.path.slice(0, -ext.length), + ext, + entry + }); + // Load and merge the page data + const pageData = await entry.getContent(loader); + page.data = mergeData(dirData, { + basename + }, this.scopedData.get(entry.path) || {}, parsedData, pageData); + // Calculate the page URL + const url = getPageUrl(page, this.prettyUrls, dirPath, destination); + if (!url) { + return; + } + page.data.url = url; + page.data.basename = getBasename(url); + // Calculate the page date + page.data.date = getPageDate(page); + // Save the page object in the data object + page.data.page = page; + // Prevent running the layout if the page is not HTML + if (!pageData.layout && !page.outputPath.endsWith(".html")) { + delete page.data.layout; + } + return page; + } +} +/** Merge the cascade components */ function mergeComponents(...components) { + return components.reduce((previous, current)=>{ + const components = new Map(previous); + for (const [key, value] of current){ + if (components.has(key)) { + const previousValue = components.get(key); + if (previousValue instanceof Map && value instanceof Map) { + components.set(key, mergeComponents(value, previousValue)); + } else { + components.set(key, value); + } + } else { + components.set(key, value); + } + } + return components; + }); +} +function runBasenameParsers(basename, basenameParsers) { + const data = { + basename + }; + for (const parser of basenameParsers){ + const res = parser(basename); + if (res === undefined) { + continue; + } + res.basename ??= basename; + Object.assign(data, res); + if (res.basename === "") { + break; + } + } + return data; +} +function createFile(entry, ext, dirPath, dirData, destination) { + const url = typeof destination === "string" ? destination : typeof destination === "function" ? destination(posix.join(dirPath, entry.name)) : posix.join(dirPath, entry.name); + return StaticFile.create({ + ...dirData, + url + }, { + ext, + path: entry.path.slice(0, -ext.length), + entry + }); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS9zb3VyY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcG9zaXggfSBmcm9tIFwiLi4vZGVwcy9wYXRoLnRzXCI7XG5pbXBvcnQgeyBnZXRFeHRlbnNpb24sIG5vcm1hbGl6ZVBhdGggfSBmcm9tIFwiLi91dGlscy9wYXRoLnRzXCI7XG5pbXBvcnQgeyBtZXJnZURhdGEgfSBmcm9tIFwiLi91dGlscy9tZXJnZV9kYXRhLnRzXCI7XG5pbXBvcnQgeyBnZXRCYXNlbmFtZSwgZ2V0UGFnZVVybCB9IGZyb20gXCIuL3V0aWxzL3BhZ2VfdXJsLnRzXCI7XG5pbXBvcnQgeyBnZXRQYWdlRGF0ZSB9IGZyb20gXCIuL3V0aWxzL3BhZ2VfZGF0ZS50c1wiO1xuaW1wb3J0IHsgUGFnZSwgU3RhdGljRmlsZSB9IGZyb20gXCIuL2ZpbGUudHNcIjtcbmltcG9ydCB7IHRvUHJveHkgfSBmcm9tIFwiLi9jb21wb25lbnRzLnRzXCI7XG5cbmltcG9ydCB0eXBlIHsgRGF0YSwgUmF3RGF0YSB9IGZyb20gXCIuL2ZpbGUudHNcIjtcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBGUywgRW50cnkgfSBmcm9tIFwiLi9mcy50c1wiO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIEZvcm1hdHMsIEZvcm1hdCB9IGZyb20gXCIuL2Zvcm1hdHMudHNcIjtcbmltcG9ydCB0eXBlIERhdGFMb2FkZXIgZnJvbSBcIi4vZGF0YV9sb2FkZXIudHNcIjtcbmltcG9ydCB0eXBlIHsgU2NvcGVGaWx0ZXIgfSBmcm9tIFwiLi9zY29wZXMudHNcIjtcbmltcG9ydCB0eXBlIHsgQ29tcG9uZW50TG9hZGVyLCBDb21wb25lbnRzIH0gZnJvbSBcIi4vY29tcG9uZW50cy50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbnMge1xuICBmb3JtYXRzOiBGb3JtYXRzO1xuICBkYXRhTG9hZGVyOiBEYXRhTG9hZGVyO1xuICBjb21wb25lbnRMb2FkZXI6IENvbXBvbmVudExvYWRlcjtcbiAgc2NvcGVkRGF0YTogTWFwPHN0cmluZywgUmF3RGF0YT47XG4gIHNjb3BlZFBhZ2VzOiBNYXA8c3RyaW5nLCBSYXdEYXRhW10+O1xuICBzY29wZWRDb21wb25lbnRzOiBNYXA8c3RyaW5nLCBDb21wb25lbnRzPjtcbiAgYmFzZW5hbWVQYXJzZXJzOiBCYXNlbmFtZVBhcnNlcltdO1xuICBmczogRlM7XG4gIHByZXR0eVVybHM6IGJvb2xlYW47XG4gIGNvbXBvbmVudHM6IHtcbiAgICBjc3NGaWxlOiBzdHJpbmc7XG4gICAganNGaWxlOiBzdHJpbmc7XG4gIH07XG59XG5cbi8qKlxuICogU2NhbiBhbmQgbG9hZCBmaWxlcyBmcm9tIHRoZSBzb3VyY2UgZm9sZGVyXG4gKiB3aXRoIHRoZSBkYXRhLCBwYWdlcywgYXNzZXRzIGFuZCBzdGF0aWMgZmlsZXNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU291cmNlIHtcbiAgLyoqIEZpbGVzeXN0ZW0gcmVhZGVyIHRvIHNjYW4gZm9sZGVycyAqL1xuICBmczogRlM7XG5cbiAgLyoqIFRvIGxvYWQgYWxsIF9kYXRhIGZpbGVzICovXG4gIGRhdGFMb2FkZXI6IERhdGFMb2FkZXI7XG5cbiAgLyoqIFRvIGxvYWQgYWxsIGNvbXBvbmVudHMgKi9cbiAgY29tcG9uZW50TG9hZGVyOiBDb21wb25lbnRMb2FkZXI7XG5cbiAgLyoqIEluZm8gYWJvdXQgaG93IHRvIGhhbmRsZSBkaWZmZXJlbnQgZmlsZSBmb3JtYXRzICovXG4gIGZvcm1hdHM6IEZvcm1hdHM7XG5cbiAgLyoqIFRoZSBsaXN0IG9mIHBhdGhzIHRvIGlnbm9yZSAqL1xuICBpZ25vcmVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgLyoqIFRoZSBwYXRoIGZpbHRlcnMgdG8gaWdub3JlICovXG4gIGZpbHRlcnM6IFNjb3BlRmlsdGVyW10gPSBbXTtcblxuICAvKiogVGhlIGRhdGEgYXNzaWduZWQgcGVyIHBhdGggKi9cbiAgc2NvcGVkRGF0YTogTWFwPHN0cmluZywgUmF3RGF0YT47XG5cbiAgLyoqIFRoZSBwYWdlcyBhc3NpZ25lZCBwZXIgcGF0aCAqL1xuICBzY29wZWRQYWdlczogTWFwPHN0cmluZywgUmF3RGF0YVtdPjtcblxuICAvKiogVGhlIGNvbXBvbmVudHMgYXNzaWduZWQgcGVyIHBhdGggKi9cbiAgc2NvcGVkQ29tcG9uZW50czogTWFwPHN0cmluZywgQ29tcG9uZW50cz47XG5cbiAgLyoqIFVzZSBwcmV0dHkgVVJMcyAqL1xuICBwcmV0dHlVcmxzOiBib29sZWFuO1xuXG4gIC8qKiBFeHRyYSBjb2RlIGdlbmVyYXRlZCBieSBjb21wb25lbnRzICovXG4gIGV4dHJhQ29kZSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmcgfCBFbnRyeT4oKTtcblxuICBjb21wb25lbnRzOiB7XG4gICAgLyoqIEZpbGUgbmFtZSB1c2VkIHRvIG91dHB1dCB0aGUgZXh0cmEgQ1NTIGNvZGUgZ2VuZXJhdGVkIGJ5IHRoZSBjb21wb25lbnRzICovXG4gICAgY3NzRmlsZTogc3RyaW5nO1xuXG4gICAgLyoqIEZpbGUgbmFtZSB1c2VkIHRvIG91dHB1dCB0aGUgZXh0cmEgSmF2YVNjcmlwdCBjb2RlIGdlbmVyYXRlZCBieSB0aGUgY29tcG9uZW50cyAqL1xuICAgIGpzRmlsZTogc3RyaW5nO1xuICB9O1xuXG4gIC8qKiBUaGUgZGF0YSBhc3NpZ25lZCBwZXIgcGF0aCAqL1xuICBkYXRhID0gbmV3IE1hcDxzdHJpbmcsIFBhcnRpYWw8RGF0YT4+KCk7XG5cbiAgLyoqIEN1c3RvbSBwYXJzZXJzIGZvciBiYXNlbmFtZXMgKi9cbiAgYmFzZW5hbWVQYXJzZXJzOiBCYXNlbmFtZVBhcnNlcltdID0gW107XG5cbiAgLyoqIEZpbGVzIGFkZGVkIHdpdGggYHNpdGUuYWRkKClgIG9yIGBzaXRlLmNvcHkoKWAgKi9cbiAgYWRkZWRGaWxlcyA9IG5ldyBNYXA8c3RyaW5nLCBbc3RyaW5nIHwgRGVzdGluYXRpb24sIGJvb2xlYW5dPigpO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9wdGlvbnMpIHtcbiAgICB0aGlzLmRhdGFMb2FkZXIgPSBvcHRpb25zLmRhdGFMb2FkZXI7XG4gICAgdGhpcy5jb21wb25lbnRMb2FkZXIgPSBvcHRpb25zLmNvbXBvbmVudExvYWRlcjtcbiAgICB0aGlzLmZzID0gb3B0aW9ucy5mcztcbiAgICB0aGlzLmZvcm1hdHMgPSBvcHRpb25zLmZvcm1hdHM7XG4gICAgdGhpcy5jb21wb25lbnRzID0gb3B0aW9ucy5jb21wb25lbnRzO1xuICAgIHRoaXMuc2NvcGVkRGF0YSA9IG9wdGlvbnMuc2NvcGVkRGF0YTtcbiAgICB0aGlzLnNjb3BlZFBhZ2VzID0gb3B0aW9ucy5zY29wZWRQYWdlcztcbiAgICB0aGlzLnNjb3BlZENvbXBvbmVudHMgPSBvcHRpb25zLnNjb3BlZENvbXBvbmVudHM7XG4gICAgdGhpcy5wcmV0dHlVcmxzID0gb3B0aW9ucy5wcmV0dHlVcmxzO1xuICAgIHRoaXMuYmFzZW5hbWVQYXJzZXJzID0gb3B0aW9ucy5iYXNlbmFtZVBhcnNlcnM7XG4gIH1cblxuICBhZGRJZ25vcmVkUGF0aChwYXRoOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlnbm9yZWQuYWRkKG5vcm1hbGl6ZVBhdGgocGF0aCkpO1xuICB9XG5cbiAgYWRkSWdub3JlRmlsdGVyKGZpbHRlcjogU2NvcGVGaWx0ZXIpIHtcbiAgICB0aGlzLmZpbHRlcnMucHVzaChmaWx0ZXIpO1xuICB9XG5cbiAgYWRkRmlsZShmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcgfCBEZXN0aW5hdGlvbiwgaXNDb3B5ID0gZmFsc2UpIHtcbiAgICBpZiAoZnJvbS5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgICAgaWYgKHR5cGVvZiB0byAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQWRkZWQgZmlsZXMgYnkgZXh0ZW5zaW9ucyBsaWtlIFwiJHtmcm9tfVwiIGV4cGVjdHMgYSBmdW5jdGlvbiB0byBjYWxjdWxhdGUgdGhlIGRlc3RpbmF0aW9uIGJ1dCBnb3QgYSBzdHJpbmcgXCIke3RvfVwiYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZnJvbSA9IG5vcm1hbGl6ZVBhdGgoZnJvbSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0byA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgaWYgKHRvLmVuZHNXaXRoKFwiL1wiKSkge1xuICAgICAgICB0byA9IHRvLnNsaWNlKDAsIC0xKTtcbiAgICAgIH1cblxuICAgICAgdG8gPSBub3JtYWxpemVQYXRoKHRvKTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZGVkRmlsZXMuc2V0KGZyb20sIFt0bywgaXNDb3B5XSk7XG4gIH1cblxuICBhc3luYyBidWlsZCguLi5idWlsZEZpbHRlcnM6IEJ1aWxkRmlsdGVyW10pOiBQcm9taXNlPFtQYWdlW10sIFN0YXRpY0ZpbGVbXV0+IHtcbiAgICBjb25zdCBwYWdlczogUGFnZVtdID0gW107XG4gICAgY29uc3Qgc3RhdGljRmlsZXM6IFN0YXRpY0ZpbGVbXSA9IFtdO1xuICAgIHRoaXMuZGF0YS5jbGVhcigpO1xuXG4gICAgYXdhaXQgdGhpcy4jYWRkRGlyZWN0b3J5KFxuICAgICAgYnVpbGRGaWx0ZXJzLFxuICAgICAgdGhpcy5mcy5lbnRyaWVzLmdldChcIi9cIikhLFxuICAgICAgXCIvXCIsXG4gICAgICBuZXcgTWFwKCksXG4gICAgICB7fSxcbiAgICAgIHBhZ2VzLFxuICAgICAgc3RhdGljRmlsZXMsXG4gICAgKTtcblxuICAgIHJldHVybiBbXG4gICAgICBwYWdlcyxcbiAgICAgIHN0YXRpY0ZpbGVzLFxuICAgIF07XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgcGFnZXMgd2l0aCBleHRyYSBjb2RlIGdlbmVyYXRlZCBieSB0aGUgY29tcG9uZW50cyAqL1xuICAqZ2V0Q29tcG9uZW50c0V4dHJhQ29kZSgpOiBHZW5lcmF0b3I8XG4gICAgeyBwYXRoOiBzdHJpbmc7IGVudHJpZXM6IE1hcDxzdHJpbmcsIHN0cmluZyB8IEVudHJ5PiB9XG4gID4ge1xuICAgIGNvbnN0IGZpbGVzID0ge1xuICAgICAgY3NzOiB7XG4gICAgICAgIHBhdGg6IHRoaXMuY29tcG9uZW50cy5jc3NGaWxlLFxuICAgICAgICBlbnRyaWVzOiBuZXcgTWFwPHN0cmluZywgc3RyaW5nIHwgRW50cnk+KCksXG4gICAgICB9LFxuICAgICAganM6IHtcbiAgICAgICAgcGF0aDogdGhpcy5jb21wb25lbnRzLmpzRmlsZSxcbiAgICAgICAgZW50cmllczogbmV3IE1hcDxzdHJpbmcsIHN0cmluZyB8IEVudHJ5PigpLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBbcGF0aCwgY29udGVudF0gb2YgdGhpcy5leHRyYUNvZGUpIHtcbiAgICAgIGlmIChwYXRoLmVuZHNXaXRoKFwiLmNzc1wiKSkge1xuICAgICAgICBmaWxlcy5jc3MuZW50cmllcy5zZXQocGF0aCwgY29udGVudCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAocGF0aC5lbmRzV2l0aChcIi5qc1wiKSB8fCBwYXRoLmVuZHNXaXRoKFwiLnRzXCIpKSB7XG4gICAgICAgIGZpbGVzLmpzLmVudHJpZXMuc2V0KHBhdGgsIGNvbnRlbnQpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGNvbXBvbmVudCBhc3NldCBleHRlbnNpb246ICR7cGF0aH1gKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHsgcGF0aCwgZW50cmllcyB9IG9mIE9iamVjdC52YWx1ZXMoZmlsZXMpKSB7XG4gICAgICBpZiAoZW50cmllcy5zaXplKSB7XG4gICAgICAgIHlpZWxkIHsgcGF0aCwgZW50cmllcyB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jICNhZGREaXJlY3RvcnkoXG4gICAgYnVpbGRGaWx0ZXJzOiBCdWlsZEZpbHRlcltdLFxuICAgIGRpcjogRW50cnksXG4gICAgcGFyZW50UGF0aDogc3RyaW5nLFxuICAgIHBhcmVudENvbXBvbmVudHM6IENvbXBvbmVudHMsXG4gICAgcGFyZW50RGF0YTogUGFydGlhbDxEYXRhPixcbiAgICBwYWdlczogUGFnZVtdLFxuICAgIHN0YXRpY0ZpbGVzOiBTdGF0aWNGaWxlW10sXG4gICAgZGVzdGluYXRpb24/OiBbRGVzdGluYXRpb24sIGJvb2xlYW5dLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoYnVpbGRGaWx0ZXJzLnNvbWUoKGZpbHRlcikgPT4gIWZpbHRlcihkaXIpKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIExvYWQgX2RhdGFcbiAgICBjb25zdCBkaXJEYXRhID0gYXdhaXQgdGhpcy4jbG9hZERpckRhdGEoZGlyLCBwYXJlbnREYXRhKTtcbiAgICBsZXQgZGlyUGF0aCA9IHBvc2l4LmpvaW4ocGFyZW50UGF0aCwgZGlyRGF0YS5iYXNlbmFtZSEpO1xuXG4gICAgLy8gTG9hZCBfY29tcG9uZW50c1xuICAgIGNvbnN0IGRpckNvbXBvbmVudHMgPSBhd2FpdCB0aGlzLiNsb2FkRGlyQ29tcG9uZW50cyhcbiAgICAgIGRpcixcbiAgICAgIHBhcmVudENvbXBvbmVudHMsXG4gICAgICBkaXJEYXRhLFxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgdGhlIGNvbXBvbmVudHMgcHJveHkgb25seSBpZiBuZXcgY29tcG9uZW50cyB3ZXJlIGZvdW5kXG4gICAgaWYgKGRpckNvbXBvbmVudHMgIT09IHBhcmVudENvbXBvbmVudHMpIHtcbiAgICAgIGRpckRhdGEuY29tcCA9IHRvUHJveHkoXG4gICAgICAgIGRpckNvbXBvbmVudHMsXG4gICAgICAgIHRoaXMuZXh0cmFDb2RlLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBTdG9yZSB0aGUgZGlyZWN0b3J5IGRhdGEgdG8gYmUgdXNlZCBieSBvdGhlciBwbHVnaW5zXG4gICAgdGhpcy5kYXRhLnNldChkaXIucGF0aCwgZGlyRGF0YSk7XG4gICAgdGhpcy5kYXRhLnNldChkaXJQYXRoLCBkaXJEYXRhKTtcblxuICAgIC8vIExvYWQgcGFnZXMgY3JlYXRlZCB3aXRoIGBzaXRlLnBhZ2UoKWBcbiAgICBmb3IgYXdhaXQgKGNvbnN0IHBhZ2Ugb2YgdGhpcy4jZ2V0RGlyUGFnZXMoZGlyLnBhdGgsIGRpckRhdGEpKSB7XG4gICAgICBpZiAoYnVpbGRGaWx0ZXJzLnNvbWUoKGZpbHRlcikgPT4gIWZpbHRlcihkaXIsIHBhZ2UpKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHBhZ2VzLnB1c2gocGFnZSk7XG4gICAgfVxuXG4gICAgLy8gVGhlIGZvbGRlciBpcyBhZGRlZCB3aXRoIGBzaXRlLmFkZChcImZvbGRlclwiKWBcbiAgICBjb25zdCBhZGRlZCA9IHRoaXMuYWRkZWRGaWxlcy5nZXQoZGlyLnBhdGgpIHx8XG4gICAgICB0aGlzLmFkZGVkRmlsZXMuZ2V0KGRpclBhdGgpIHx8XG4gICAgICB0aGlzLmFkZGVkRmlsZXMuZ2V0KGAke2Rpci5wYXRofS9gKSB8fFxuICAgICAgdGhpcy5hZGRlZEZpbGVzLmdldChgJHtkaXJQYXRofS9gKTtcblxuICAgIGlmIChhZGRlZCkge1xuICAgICAgY29uc3QgW2Rlc3QsIGlzQ29weV0gPSBhZGRlZDtcblxuICAgICAgaWYgKHR5cGVvZiBkZXN0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgY29uc3QgcHJldiA9IGRlc3RpbmF0aW9uPy5bMF07XG4gICAgICAgIGRlc3RpbmF0aW9uID0gW1xuICAgICAgICAgIHByZXYgPyAocGF0aDogc3RyaW5nKSA9PiBkZXN0KHByZXYocGF0aCkpIDogZGVzdCxcbiAgICAgICAgICBpc0NvcHksXG4gICAgICAgIF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkaXJQYXRoID0gZGVzdDtcbiAgICAgICAgZGVzdGluYXRpb24gPz89IFsocGF0aDogc3RyaW5nKSA9PiBwYXRoLCBpc0NvcHldO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgZGlyZWN0b3J5IGVudHJpZXNcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGRpci5jaGlsZHJlbi52YWx1ZXMoKSkge1xuICAgICAgaWYgKGJ1aWxkRmlsdGVycy5zb21lKChmaWx0ZXIpID0+ICFmaWx0ZXIoZW50cnkpKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGVudHJ5LnR5cGUgPT09IFwiZmlsZVwiKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuI2FkZEZpbGUoXG4gICAgICAgICAgYnVpbGRGaWx0ZXJzLFxuICAgICAgICAgIGVudHJ5LFxuICAgICAgICAgIGRpclBhdGgsXG4gICAgICAgICAgZGlyRGF0YSxcbiAgICAgICAgICBwYWdlcyxcbiAgICAgICAgICBzdGF0aWNGaWxlcyxcbiAgICAgICAgICBkZXN0aW5hdGlvbixcbiAgICAgICAgKTtcblxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGVudHJ5LnR5cGUgPT09IFwiZGlyZWN0b3J5XCIpIHtcbiAgICAgICAgaWYgKHRoaXMuI2lzSWdub3JlZChlbnRyeSkpIHtcbiAgICAgICAgICAvLyBBZGQgcG9zc2libGUgaW5uZXIgZW50cmllc1xuICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBzaXRlLmlnbm9yZShcImZvbGRlclwiKS5hZGQoXCJmb2xkZXIvZmlsZS5leHRcIilcbiAgICAgICAgICBmb3IgKGNvbnN0IHBhdGggb2YgdGhpcy5hZGRlZEZpbGVzLmtleXMoKSkge1xuICAgICAgICAgICAgaWYgKHBhdGggIT09IGVudHJ5LnBhdGggJiYgIXBhdGguc3RhcnRzV2l0aChgJHtlbnRyeS5wYXRofS9gKSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc3ViRW50cnkgPSB0aGlzLmZzLmVudHJpZXMuZ2V0KHBhdGgpO1xuXG4gICAgICAgICAgICBpZiAoIXN1YkVudHJ5KSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc3ViRW50cnkudHlwZSA9PT0gXCJmaWxlXCIpIHtcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy4jYWRkRmlsZShcbiAgICAgICAgICAgICAgICBidWlsZEZpbHRlcnMsXG4gICAgICAgICAgICAgICAgc3ViRW50cnksXG4gICAgICAgICAgICAgICAgZGlyUGF0aCxcbiAgICAgICAgICAgICAgICBkaXJEYXRhLFxuICAgICAgICAgICAgICAgIHBhZ2VzLFxuICAgICAgICAgICAgICAgIHN0YXRpY0ZpbGVzLFxuICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHN1YkVudHJ5LnR5cGUgPT09IFwiZGlyZWN0b3J5XCIpIHtcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy4jYWRkRGlyZWN0b3J5KFxuICAgICAgICAgICAgICAgIGJ1aWxkRmlsdGVycyxcbiAgICAgICAgICAgICAgICBzdWJFbnRyeSxcbiAgICAgICAgICAgICAgICBkaXJQYXRoLFxuICAgICAgICAgICAgICAgIGRpckNvbXBvbmVudHMsXG4gICAgICAgICAgICAgICAgZGlyRGF0YSxcbiAgICAgICAgICAgICAgICBwYWdlcyxcbiAgICAgICAgICAgICAgICBzdGF0aWNGaWxlcyxcbiAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbixcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHRoaXMuI2FkZERpcmVjdG9yeShcbiAgICAgICAgICBidWlsZEZpbHRlcnMsXG4gICAgICAgICAgZW50cnksXG4gICAgICAgICAgZGlyUGF0aCxcbiAgICAgICAgICBkaXJDb21wb25lbnRzLFxuICAgICAgICAgIGRpckRhdGEsXG4gICAgICAgICAgcGFnZXMsXG4gICAgICAgICAgc3RhdGljRmlsZXMsXG4gICAgICAgICAgZGVzdGluYXRpb24sXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgI2FkZEZpbGUoXG4gICAgYnVpbGRGaWx0ZXJzOiBCdWlsZEZpbHRlcltdLFxuICAgIGZpbGU6IEVudHJ5LFxuICAgIGRpclBhdGg6IHN0cmluZyxcbiAgICBkaXJEYXRhOiBQYXJ0aWFsPERhdGE+LFxuICAgIHBhZ2VzOiBQYWdlW10sXG4gICAgc3RhdGljRmlsZXM6IFN0YXRpY0ZpbGVbXSxcbiAgICBkZXN0aW5hdGlvbj86IFtEZXN0aW5hdGlvbiwgYm9vbGVhbl0sXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFRoZSBmaWxlIGlzIGFkZGVkIHdpdGggYHNpdGUuYWRkKFwiZmlsZS5leHRcIilgXG4gICAgY29uc3QgYWRkZWQgPSB0aGlzLmFkZGVkRmlsZXMuZ2V0KGZpbGUucGF0aCk7XG4gICAgbGV0IFtkZXN0LCBpc0NvcHldID0gYWRkZWQgPz8gZGVzdGluYXRpb24gPz8gW107XG5cbiAgICAvLyBNZXJnZSB0aGUgZGVzdGluYXRpb24gd2l0aCB0aGUgcGFyZW50IGZvbGRlclxuICAgIGlmIChhZGRlZCkge1xuICAgICAgY29uc3QgW2FkZGVkRGVzdF0gPSBhZGRlZDtcblxuICAgICAgaWYgKHR5cGVvZiBhZGRlZERlc3QgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjb25zdCBwYXJlbnREZXN0ID0gZGVzdGluYXRpb24/LlswXTtcbiAgICAgICAgZGVzdCA9IHBhcmVudERlc3QgPyAocGF0aCkgPT4gYWRkZWREZXN0KHBhcmVudERlc3QocGF0aCkpIDogYWRkZWREZXN0O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy4jaXNJZ25vcmVkKGZpbGUpKSB7XG4gICAgICAvLyBUaGUgZmlsZSBvciBwYXJlbnQgZm9sZGVyIGlzIGlnbm9yZWQgYW5kIHRoZSBmaWxlIG5vdCBleHBsaWNpdGx5IGFkZGVkXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybWF0ID0gdGhpcy5mb3JtYXRzLnNlYXJjaChmaWxlLnBhdGgpO1xuXG4gICAgLy8gVGhlIGZvcm1hdCBpcyBhIHBhZ2UgYHNpdGUubG9hZFBhZ2VzKFtcIi5leHRcIl0pYFxuICAgIGlmIChmb3JtYXQ/LmlzUGFnZSAmJiAhaXNDb3B5KSB7XG4gICAgICBjb25zdCBwYWdlID0gYXdhaXQgdGhpcy4jbG9hZFBhZ2UoXG4gICAgICAgIGZpbGUsXG4gICAgICAgIGZvcm1hdCxcbiAgICAgICAgZGlyRGF0YSxcbiAgICAgICAgZGlyUGF0aCxcbiAgICAgICAgZGVzdCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChcbiAgICAgICAgcGFnZSAmJlxuICAgICAgICAoIWJ1aWxkRmlsdGVycy5sZW5ndGggfHxcbiAgICAgICAgICBidWlsZEZpbHRlcnMuZXZlcnkoKGZpbHRlcikgPT4gZmlsdGVyKGZpbGUsIHBhZ2UpKSlcbiAgICAgICkge1xuICAgICAgICBwYWdlcy5wdXNoKHBhZ2UpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXh0ID0gZm9ybWF0Py5leHQgfHwgZ2V0RXh0ZW5zaW9uKGZpbGUubmFtZSk7XG5cbiAgICAvLyBUaGUgZmlsZSBpcyBhZGRlZCBleHBsaWNpdGx5IHdpdGggYHNpdGUuYWRkKClgIG9yIGBzaXRlLmNvcHkoKWBcbiAgICBpZiAoYWRkZWQpIHtcbiAgICAgIGNvbnN0IHN0YXRpY0ZpbGUgPSBjcmVhdGVGaWxlKFxuICAgICAgICBmaWxlLFxuICAgICAgICBleHQsXG4gICAgICAgIGRpclBhdGgsXG4gICAgICAgIGRpckRhdGEsXG4gICAgICAgIGRlc3QsXG4gICAgICApO1xuICAgICAgc3RhdGljRmlsZS5pc0NvcHkgPSAhIWlzQ29weTtcbiAgICAgIHN0YXRpY0ZpbGVzLnB1c2goc3RhdGljRmlsZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVGhlIGZpbGUgaXMgYWRkZWQgd2l0aCBgc2l0ZS5hZGQoW1wiLmV4dFwiXSlgXG4gICAgY29uc3QgYWRkZWRFeHQgPSB0aGlzLmFkZGVkRmlsZXMuZ2V0KGV4dCk7XG5cbiAgICBpZiAoYWRkZWRFeHQpIHtcbiAgICAgIGNvbnN0IFthZGRlZEV4dERlc3QsIGFkZGVkRXh0Q29weV0gPSBhZGRlZEV4dDtcblxuICAgICAgaWYgKHR5cGVvZiBhZGRlZEV4dERlc3QgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjb25zdCBwYXJlbnREZXN0ID0gZGVzdDtcbiAgICAgICAgZGVzdCA9IHR5cGVvZiBwYXJlbnREZXN0ID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICA/IChwYXRoKSA9PiBhZGRlZEV4dERlc3QocGFyZW50RGVzdChwYXRoKSlcbiAgICAgICAgICA6IGFkZGVkRXh0RGVzdDtcbiAgICAgIH1cbiAgICAgIGlmIChhZGRlZEV4dENvcHkpIHtcbiAgICAgICAgaXNDb3B5ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiBgZGVzdGAgZXhpc3RzIGlzIGJlY2F1c2U6XG4gICAgLy8gLSB0aGUgZmlsZSB3YXMgYWRkZWQgd2l0aCBgc2l0ZS5hZGQoW1wiLmV4dFwiXSlgXG4gICAgLy8gLSBvciBhbnkgcGFyZW50IGZvbGRlciB3aXRoIGBzaXRlLmFkZChcImZvbGRlclwiKWBcbiAgICBpZiAoZGVzdCkge1xuICAgICAgY29uc3Qgc3RhdGljRmlsZSA9IGNyZWF0ZUZpbGUoXG4gICAgICAgIGZpbGUsXG4gICAgICAgIGV4dCxcbiAgICAgICAgZGlyUGF0aCxcbiAgICAgICAgZGlyRGF0YSxcbiAgICAgICAgZGVzdCxcbiAgICAgICk7XG4gICAgICBzdGF0aWNGaWxlLmlzQ29weSA9ICEhaXNDb3B5O1xuICAgICAgc3RhdGljRmlsZXMucHVzaChzdGF0aWNGaWxlKTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2hlY2sgaWYgdGhlIGVudHJ5IG11c3QgYmUgaWdub3JlZCBieSBMdW1lICovXG4gICNpc0lnbm9yZWQoZW50cnk6IEVudHJ5KSB7XG4gICAgcmV0dXJuIChlbnRyeS5uYW1lLnN0YXJ0c1dpdGgoXCIuXCIpICYmXG4gICAgICAoZW50cnkudHlwZSAhPT0gXCJkaXJlY3RvcnlcIiB8fCAhZW50cnkucGF0aC5lbmRzV2l0aChcIi8ud2VsbC1rbm93blwiKSkpIHx8XG4gICAgICBlbnRyeS5uYW1lLnN0YXJ0c1dpdGgoXCJfXCIpIHx8XG4gICAgICB0aGlzLmlnbm9yZWQuaGFzKGVudHJ5LnBhdGgpIHx8XG4gICAgICB0aGlzLmZpbHRlcnMuc29tZSgoZmlsdGVyKSA9PiBmaWx0ZXIoZW50cnkucGF0aCkpO1xuICB9XG5cbiAgLyoqIExvYWQgYSBmb2xkZXIncyBfZGF0YSBhbmQgbWVyZ2UgaXQgd2l0aCB0aGUgcGFyZW50IGRhdGEgICovXG4gIGFzeW5jICNsb2FkRGlyRGF0YShkaXI6IEVudHJ5LCBwYXJlbnREYXRhOiBSYXdEYXRhKTogUHJvbWlzZTxQYXJ0aWFsPERhdGE+PiB7XG4gICAgLy8gUGFyc2UgdGhlIGRpcmVjdG9yeSdzIGJhc2VuYW1lXG4gICAgY29uc3QgeyBiYXNlbmFtZSwgLi4ucGFyc2VkRGF0YSB9ID0gcnVuQmFzZW5hbWVQYXJzZXJzKFxuICAgICAgZGlyLm5hbWUsXG4gICAgICB0aGlzLmJhc2VuYW1lUGFyc2VycyxcbiAgICApO1xuXG4gICAgLy8gTG9hZCBfZGF0YSBmaWxlc1xuICAgIGNvbnN0IGRpckRhdGFzOiBSYXdEYXRhW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZGlyLmNoaWxkcmVuLnZhbHVlcygpKSB7XG4gICAgICBpZiAoXG4gICAgICAgIChlbnRyeS50eXBlID09PSBcImZpbGVcIiAmJiBlbnRyeS5uYW1lLnN0YXJ0c1dpdGgoXCJfZGF0YS5cIikpIHx8XG4gICAgICAgIChlbnRyeS50eXBlID09PSBcImRpcmVjdG9yeVwiICYmIGVudHJ5Lm5hbWUgPT09IFwiX2RhdGFcIilcbiAgICAgICkge1xuICAgICAgICBjb25zdCBsb2FkZWQgPSBhd2FpdCB0aGlzLmRhdGFMb2FkZXIubG9hZChlbnRyeSk7XG4gICAgICAgIGlmIChsb2FkZWQpIHtcbiAgICAgICAgICBkaXJEYXRhcy5wdXNoKGxvYWRlZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEYXRhIHJlZ2lzdGVyZWQgZnJvbSBzaXRlLmRhdGEoKVxuICAgIGNvbnN0IHNjb3BlZERhdGEgPSB0aGlzLnNjb3BlZERhdGEuZ2V0KGRpci5wYXRoKSB8fCB7fTtcblxuICAgIC8vIE1lcmdlIGRpcmVjdG9yeSBkYXRhXG4gICAgcmV0dXJuIG1lcmdlRGF0YShcbiAgICAgIHBhcmVudERhdGEsXG4gICAgICB7IGJhc2VuYW1lIH0sXG4gICAgICBzY29wZWREYXRhLFxuICAgICAgcGFyc2VkRGF0YSxcbiAgICAgIC4uLmRpckRhdGFzLFxuICAgICkgYXMgUGFydGlhbDxEYXRhPjtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIF9jb21wb25lbnRzLCBtZXJnZSB0aGVtIHdpdGggdGhlIHBhcmVudCBjb21wb25lbnRzXG4gICAqIGFuZCBzdG9yZSBvbiB0aGUgZGF0YSBvYmplY3RcbiAgICovXG4gIGFzeW5jICNsb2FkRGlyQ29tcG9uZW50cyhcbiAgICBkaXI6IEVudHJ5LFxuICAgIHBhcmVudENvbXBvbmVudHM6IENvbXBvbmVudHMsXG4gICAgZGF0YTogUGFydGlhbDxEYXRhPixcbiAgKTogUHJvbWlzZTxDb21wb25lbnRzPiB7XG4gICAgLy8gQ29tcG9uZW50cyByZWdpc3RlcmVkIGZyb20gc2l0ZS5jb21wb25lbnQoKVxuICAgIGNvbnN0IHNjb3BlZENvbXBvbmVudHMgPSB0aGlzLnNjb3BlZENvbXBvbmVudHMuZ2V0KGRpci5wYXRoKTtcbiAgICBsZXQgbG9hZGVkQ29tcG9uZW50czogQ29tcG9uZW50cyB8IHVuZGVmaW5lZDtcblxuICAgIC8vIExvYWQgX2NvbXBvbmVudHMgZmlsZXNcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGRpci5jaGlsZHJlbi52YWx1ZXMoKSkge1xuICAgICAgaWYgKGVudHJ5LnR5cGUgPT09IFwiZGlyZWN0b3J5XCIgJiYgZW50cnkubmFtZSA9PT0gXCJfY29tcG9uZW50c1wiKSB7XG4gICAgICAgIGxvYWRlZENvbXBvbmVudHMgPSBhd2FpdCB0aGlzLmNvbXBvbmVudExvYWRlci5sb2FkKGVudHJ5LCBkYXRhKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTWVyZ2UgdGhlIGNvbXBvbmVudHNcbiAgICBpZiAoc2NvcGVkQ29tcG9uZW50cyB8fCBsb2FkZWRDb21wb25lbnRzKSB7XG4gICAgICBwYXJlbnRDb21wb25lbnRzID0gbWVyZ2VDb21wb25lbnRzKFxuICAgICAgICBwYXJlbnRDb21wb25lbnRzLFxuICAgICAgICBzY29wZWRDb21wb25lbnRzIHx8IG5ldyBNYXAoKSxcbiAgICAgICAgbG9hZGVkQ29tcG9uZW50cyB8fCBuZXcgTWFwKCksXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJlbnRDb21wb25lbnRzO1xuICB9XG5cbiAgYXN5bmMgKiNnZXREaXJQYWdlcyhcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgZGlyRGF0YTogUGFydGlhbDxEYXRhPixcbiAgKTogQXN5bmNHZW5lcmF0b3I8UGFnZT4ge1xuICAgIGNvbnN0IHBhZ2VzID0gdGhpcy5zY29wZWRQYWdlcy5nZXQocGF0aCk7XG4gICAgaWYgKCFwYWdlcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgZGF0YSBvZiBwYWdlcykge1xuICAgICAgY29uc3QgYmFzZW5hbWUgPSBwb3NpeC5iYXNlbmFtZShkYXRhLnVybCBhcyBzdHJpbmcpLnJlcGxhY2UoXG4gICAgICAgIC9cXC5bXFx3Ll0rJC8sXG4gICAgICAgIFwiXCIsXG4gICAgICApO1xuICAgICAgY29uc3QgcGFnZSA9IG5ldyBQYWdlKCk7XG4gICAgICBwYWdlLmRhdGEgPSBtZXJnZURhdGEoXG4gICAgICAgIGRpckRhdGEsXG4gICAgICAgIHsgYmFzZW5hbWUsIGRhdGU6IG5ldyBEYXRlKCkgfSxcbiAgICAgICAgZGF0YSxcbiAgICAgICkgYXMgRGF0YTtcblxuICAgICAgY29uc3QgdXJsID0gZ2V0UGFnZVVybChwYWdlLCB0aGlzLnByZXR0eVVybHMsIHBhdGgpO1xuICAgICAgaWYgKCF1cmwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBwYWdlLmRhdGEudXJsID0gdXJsO1xuICAgICAgcGFnZS5kYXRhLmJhc2VuYW1lID0gZ2V0QmFzZW5hbWUodXJsKTtcbiAgICAgIHBhZ2UuZGF0YS5kYXRlID0gZ2V0UGFnZURhdGUocGFnZSk7XG4gICAgICBwYWdlLmRhdGEucGFnZSA9IHBhZ2U7XG5cbiAgICAgIC8vIFByZXZlbnQgcnVubmluZyB0aGUgbGF5b3V0IGlmIHRoZSBwYWdlIGlzIGFuIGFzc2V0XG4gICAgICBpZiAoIWRhdGEubGF5b3V0ICYmICFwYWdlLm91dHB1dFBhdGguZW5kc1dpdGgoXCIuaHRtbFwiKSkge1xuICAgICAgICBkZWxldGUgcGFnZS5kYXRhLmxheW91dDtcbiAgICAgIH1cblxuICAgICAgeWllbGQgcGFnZTtcbiAgICB9XG4gIH1cblxuICAvKiogTG9hZCBhIHBhZ2UgZnJvbSBhIGZpbGUgZW50cnkgKi9cbiAgYXN5bmMgI2xvYWRQYWdlKFxuICAgIGVudHJ5OiBFbnRyeSxcbiAgICBmb3JtYXQ6IEZvcm1hdCxcbiAgICBkaXJEYXRhOiBQYXJ0aWFsPERhdGE+LFxuICAgIGRpclBhdGg6IHN0cmluZyxcbiAgICBkZXN0aW5hdGlvbj86IERlc3RpbmF0aW9uIHwgc3RyaW5nLFxuICApOiBQcm9taXNlPFBhZ2UgfCB1bmRlZmluZWQ+IHtcbiAgICAvLyBUaGUgZm9ybWF0IGlzIGEgcGFnZSBvciBhc3NldFxuICAgIGNvbnN0IHsgbG9hZGVyLCBleHQgfSA9IGZvcm1hdDtcblxuICAgIGlmICghbG9hZGVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBNaXNzaW5nIGxvYWRlciBmb3IgdGhlIHBhZ2UgJHtlbnRyeS5wYXRofWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHsgYmFzZW5hbWUsIC4uLnBhcnNlZERhdGEgfSA9IHJ1bkJhc2VuYW1lUGFyc2VycyhcbiAgICAgIGVudHJ5Lm5hbWUuc2xpY2UoMCwgLWV4dC5sZW5ndGgpLFxuICAgICAgdGhpcy5iYXNlbmFtZVBhcnNlcnMsXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSB0aGUgcGFnZVxuICAgIGNvbnN0IHBhZ2UgPSBuZXcgUGFnZSh7XG4gICAgICBwYXRoOiBlbnRyeS5wYXRoLnNsaWNlKDAsIC1leHQubGVuZ3RoKSxcbiAgICAgIGV4dCxcbiAgICAgIGVudHJ5LFxuICAgIH0pO1xuXG4gICAgLy8gTG9hZCBhbmQgbWVyZ2UgdGhlIHBhZ2UgZGF0YVxuICAgIGNvbnN0IHBhZ2VEYXRhID0gYXdhaXQgZW50cnkuZ2V0Q29udGVudChsb2FkZXIpO1xuICAgIHBhZ2UuZGF0YSA9IG1lcmdlRGF0YShcbiAgICAgIGRpckRhdGEsXG4gICAgICB7IGJhc2VuYW1lIH0sXG4gICAgICB0aGlzLnNjb3BlZERhdGEuZ2V0KGVudHJ5LnBhdGgpIHx8IHt9LFxuICAgICAgcGFyc2VkRGF0YSxcbiAgICAgIHBhZ2VEYXRhLFxuICAgICkgYXMgRGF0YTtcblxuICAgIC8vIENhbGN1bGF0ZSB0aGUgcGFnZSBVUkxcbiAgICBjb25zdCB1cmwgPSBnZXRQYWdlVXJsKHBhZ2UsIHRoaXMucHJldHR5VXJscywgZGlyUGF0aCwgZGVzdGluYXRpb24pO1xuXG4gICAgaWYgKCF1cmwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcGFnZS5kYXRhLnVybCA9IHVybDtcbiAgICBwYWdlLmRhdGEuYmFzZW5hbWUgPSBnZXRCYXNlbmFtZSh1cmwpO1xuXG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBwYWdlIGRhdGVcbiAgICBwYWdlLmRhdGEuZGF0ZSA9IGdldFBhZ2VEYXRlKHBhZ2UpO1xuXG4gICAgLy8gU2F2ZSB0aGUgcGFnZSBvYmplY3QgaW4gdGhlIGRhdGEgb2JqZWN0XG4gICAgcGFnZS5kYXRhLnBhZ2UgPSBwYWdlO1xuXG4gICAgLy8gUHJldmVudCBydW5uaW5nIHRoZSBsYXlvdXQgaWYgdGhlIHBhZ2UgaXMgbm90IEhUTUxcbiAgICBpZiAoIXBhZ2VEYXRhLmxheW91dCAmJiAhcGFnZS5vdXRwdXRQYXRoLmVuZHNXaXRoKFwiLmh0bWxcIikpIHtcbiAgICAgIGRlbGV0ZSBwYWdlLmRhdGEubGF5b3V0O1xuICAgIH1cblxuICAgIHJldHVybiBwYWdlO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIERlc3RpbmF0aW9uID0gKHBhdGg6IHN0cmluZykgPT4gc3RyaW5nO1xuXG5leHBvcnQgdHlwZSBCdWlsZEZpbHRlciA9IChlbnRyeTogRW50cnksIHBhZ2U/OiBQYWdlKSA9PiBib29sZWFuO1xuXG5leHBvcnQgdHlwZSBCYXNlbmFtZVBhcnNlciA9IChmaWxlbmFtZTogc3RyaW5nKSA9PiBSYXdEYXRhIHwgdW5kZWZpbmVkO1xuXG4vKiogTWVyZ2UgdGhlIGNhc2NhZGUgY29tcG9uZW50cyAqL1xuZnVuY3Rpb24gbWVyZ2VDb21wb25lbnRzKC4uLmNvbXBvbmVudHM6IENvbXBvbmVudHNbXSk6IENvbXBvbmVudHMge1xuICByZXR1cm4gY29tcG9uZW50cy5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PiB7XG4gICAgY29uc3QgY29tcG9uZW50cyA9IG5ldyBNYXAocHJldmlvdXMpO1xuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgY3VycmVudCkge1xuICAgICAgaWYgKGNvbXBvbmVudHMuaGFzKGtleSkpIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IGNvbXBvbmVudHMuZ2V0KGtleSk7XG5cbiAgICAgICAgaWYgKHByZXZpb3VzVmFsdWUgaW5zdGFuY2VvZiBNYXAgJiYgdmFsdWUgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgICAgICBjb21wb25lbnRzLnNldChrZXksIG1lcmdlQ29tcG9uZW50cyh2YWx1ZSwgcHJldmlvdXNWYWx1ZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbXBvbmVudHMuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb21wb25lbnRzLnNldChrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbXBvbmVudHM7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBydW5CYXNlbmFtZVBhcnNlcnMoXG4gIGJhc2VuYW1lOiBzdHJpbmcsXG4gIGJhc2VuYW1lUGFyc2VyczogQmFzZW5hbWVQYXJzZXJbXSxcbik6IFJhd0RhdGEge1xuICBjb25zdCBkYXRhOiBSYXdEYXRhID0geyBiYXNlbmFtZSB9O1xuXG4gIGZvciAoY29uc3QgcGFyc2VyIG9mIGJhc2VuYW1lUGFyc2Vycykge1xuICAgIGNvbnN0IHJlcyA9IHBhcnNlcihiYXNlbmFtZSk7XG4gICAgaWYgKHJlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgcmVzLmJhc2VuYW1lID8/PSBiYXNlbmFtZTtcbiAgICBPYmplY3QuYXNzaWduKGRhdGEsIHJlcyk7XG4gICAgaWYgKHJlcy5iYXNlbmFtZSA9PT0gXCJcIikge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRhdGE7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUZpbGUoXG4gIGVudHJ5OiBFbnRyeSxcbiAgZXh0OiBzdHJpbmcsXG4gIGRpclBhdGg6IHN0cmluZyxcbiAgZGlyRGF0YTogUGFydGlhbDxEYXRhPixcbiAgZGVzdGluYXRpb24/OiBzdHJpbmcgfCBEZXN0aW5hdGlvbixcbik6IFN0YXRpY0ZpbGUge1xuICBjb25zdCB1cmwgPSB0eXBlb2YgZGVzdGluYXRpb24gPT09IFwic3RyaW5nXCJcbiAgICA/IGRlc3RpbmF0aW9uXG4gICAgOiB0eXBlb2YgZGVzdGluYXRpb24gPT09IFwiZnVuY3Rpb25cIlxuICAgID8gZGVzdGluYXRpb24ocG9zaXguam9pbihkaXJQYXRoLCBlbnRyeS5uYW1lKSlcbiAgICA6IHBvc2l4LmpvaW4oZGlyUGF0aCwgZW50cnkubmFtZSk7XG5cbiAgcmV0dXJuIFN0YXRpY0ZpbGUuY3JlYXRlKHtcbiAgICAuLi5kaXJEYXRhLFxuICAgIHVybCxcbiAgfSwge1xuICAgIGV4dCxcbiAgICBwYXRoOiBlbnRyeS5wYXRoLnNsaWNlKDAsIC1leHQubGVuZ3RoKSxcbiAgICBlbnRyeSxcbiAgfSk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxLQUFLLFFBQVEsa0JBQWtCO0FBQ3hDLFNBQVMsWUFBWSxFQUFFLGFBQWEsUUFBUSxrQkFBa0I7QUFDOUQsU0FBUyxTQUFTLFFBQVEsd0JBQXdCO0FBQ2xELFNBQVMsV0FBVyxFQUFFLFVBQVUsUUFBUSxzQkFBc0I7QUFDOUQsU0FBUyxXQUFXLFFBQVEsdUJBQXVCO0FBQ25ELFNBQVMsSUFBSSxFQUFFLFVBQVUsUUFBUSxZQUFZO0FBQzdDLFNBQVMsT0FBTyxRQUFRLGtCQUFrQjtBQXlCMUM7OztDQUdDLEdBQ0QsZUFBZSxNQUFNO0VBQ25CLHNDQUFzQyxHQUN0QyxHQUFPO0VBRVAsNEJBQTRCLEdBQzVCLFdBQXVCO0VBRXZCLDJCQUEyQixHQUMzQixnQkFBaUM7RUFFakMsb0RBQW9ELEdBQ3BELFFBQWlCO0VBRWpCLGdDQUFnQyxHQUNoQyxVQUFVLElBQUksTUFBYztFQUU1QiwrQkFBK0IsR0FDL0IsVUFBeUIsRUFBRSxDQUFDO0VBRTVCLCtCQUErQixHQUMvQixXQUFpQztFQUVqQyxnQ0FBZ0MsR0FDaEMsWUFBb0M7RUFFcEMscUNBQXFDLEdBQ3JDLGlCQUEwQztFQUUxQyxvQkFBb0IsR0FDcEIsV0FBb0I7RUFFcEIsdUNBQXVDLEdBQ3ZDLFlBQVksSUFBSSxNQUE4QjtFQUU5QyxXQU1FO0VBRUYsK0JBQStCLEdBQy9CLE9BQU8sSUFBSSxN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 +// denoCacheMetadata=13709729320847836260,5002082971697085197
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/ed630f2b8500d6bda96430c93688cb4fbac733b20fd72c0d8a15328b95852453.js b/vendor/gen/https/deno.land/ed630f2b8500d6bda96430c93688cb4fbac733b20fd72c0d8a15328b95852453.js new file mode 100644 index 0000000..c0de4e1 --- /dev/null +++ b/vendor/gen/https/deno.land/ed630f2b8500d6bda96430c93688cb4fbac733b20fd72c0d8a15328b95852453.js @@ -0,0 +1,10 @@ +// deno-lint-ignore-file no-explicit-any +/** @deprecated Use `ArgumentType` instead. */ export var OptionType = /*#__PURE__*/ function(OptionType) { + OptionType["STRING"] = "string"; + OptionType["NUMBER"] = "number"; + OptionType["INTEGER"] = "integer"; + OptionType["BOOLEAN"] = "boolean"; + return OptionType; +}({}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvZmxhZ3MvZGVwcmVjYXRlZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBkZW5vLWxpbnQtaWdub3JlLWZpbGUgbm8tZXhwbGljaXQtYW55XG5cbmltcG9ydCB0eXBlIHtcbiAgQXJndW1lbnRPcHRpb25zLFxuICBBcmd1bWVudFZhbHVlLFxuICBEZWZhdWx0VmFsdWUsXG4gIEZsYWdPcHRpb25zLFxuICBQYXJzZUZsYWdzQ29udGV4dCxcbiAgUGFyc2VGbGFnc09wdGlvbnMsXG4gIFR5cGVIYW5kbGVyLFxuICBWYWx1ZUhhbmRsZXIsXG59IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2UgYFBhcnNlRmxhZ3NPcHRpb25zYCBpbnN0ZWFkLiAqL1xuZXhwb3J0IHR5cGUgSVBhcnNlT3B0aW9uczxURmxhZ09wdGlvbnMgZXh0ZW5kcyBGbGFnT3B0aW9ucyA9IEZsYWdPcHRpb25zPiA9XG4gIFBhcnNlRmxhZ3NPcHRpb25zPFRGbGFnT3B0aW9ucz47XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2UgYEZsYWdPcHRpb25zYCBpbnN0ZWFkLiAqL1xuZXhwb3J0IHR5cGUgSUZsYWdPcHRpb25zID0gRmxhZ09wdGlvbnM7XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2UgYEFyZ3VtZW50T3B0aW9uc2AgaW5zdGVhZC4gKi9cbmV4cG9ydCB0eXBlIElGbGFnQXJndW1lbnQgPSBBcmd1bWVudE9wdGlvbnM7XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2UgYERlZmF1bHRWYWx1ZWAgaW5zdGVhZC4gKi9cbmV4cG9ydCB0eXBlIElEZWZhdWx0VmFsdWU8VFZhbHVlID0gdW5rbm93bj4gPSBEZWZhdWx0VmFsdWU8VFZhbHVlPjtcblxuLyoqIEBkZXByZWNhdGVkIFVzZSBgVmFsdWVIYW5kbGVyYCBpbnN0ZWFkLiAqL1xuZXhwb3J0IHR5cGUgSUZsYWdWYWx1ZUhhbmRsZXI8VFZhbHVlID0gYW55LCBUUmV0dXJuID0gVFZhbHVlPiA9IFZhbHVlSGFuZGxlcjxcbiAgVFZhbHVlLFxuICBUUmV0dXJuXG4+O1xuXG4vKiogQGRlcHJlY2F0ZWQgVXNlIGBQYXJzZUZsYWdzQ29udGV4dGAgaW5zdGVhZC4gKi9cbmV4cG9ydCB0eXBlIElGbGFnc1Jlc3VsdDxcbiAgVEZsYWdzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIFRTdGFuZGFsb25lT3B0aW9uIGV4dGVuZHMgRmxhZ09wdGlvbnMgPSBGbGFnT3B0aW9ucyxcbj4gPSBQYXJzZUZsYWdzQ29udGV4dDxURmxhZ3MsIFRTdGFuZGFsb25lT3B0aW9uPjtcblxuLyoqIEBkZXByZWNhdGVkIFVzZSBgQXJndW1lbnRWYWx1ZWAgaW5zdGVhZC4gKi9cbmV4cG9ydCB0eXBlIElUeXBlSW5mbyA9IEFyZ3VtZW50VmFsdWU7XG5cbi8qKiBAZGVwcmVjYXRlZCBVc2UgYFR5cGVIYW5kbGVyYCBpbnN0ZWFkLiAqL1xuZXhwb3J0IHR5cGUgSVR5cGVIYW5kbGVyPFRSZXR1cm4gPSB1bmtub3duPiA9IFR5cGVIYW5kbGVyPFRSZXR1cm4+O1xuXG4vKiogQGRlcHJlY2F0ZWQgVXNlIGBBcmd1bWVudFR5cGVgIGluc3RlYWQuICovXG5leHBvcnQgZW51bSBPcHRpb25UeXBlIHtcbiAgU1RSSU5HID0gXCJzdHJpbmdcIixcbiAgTlVNQkVSID0gXCJudW1iZXJcIixcbiAgSU5URUdFUiA9IFwiaW50ZWdlclwiLFxuICBCT09MRUFOID0gXCJib29sZWFuXCIsXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0NBQXdDO0FBNEN4Qyw0Q0FBNEMsR0FDNUMsT0FBTyxJQUFBLEFBQUssb0NBQUE7Ozs7O1NBQUE7TUFLWCJ9 +// denoCacheMetadata=16068955283463829186,15909498969210643143
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/ed797ca86734190a29b9cc9a04450e54abb1935e4b18b4808e890bfd2ab9e793.js b/vendor/gen/https/deno.land/ed797ca86734190a29b9cc9a04450e54abb1935e4b18b4808e890bfd2ab9e793.js new file mode 100644 index 0000000..ced5473 --- /dev/null +++ b/vendor/gen/https/deno.land/ed797ca86734190a29b9cc9a04450e54abb1935e4b18b4808e890bfd2ab9e793.js @@ -0,0 +1,198 @@ +import { border } from "./border.ts"; +import { Cell } from "./cell.ts"; +import { TableLayout } from "./layout.ts"; +import { Row } from "./row.ts"; +/** Table representation. */ export class Table extends Array { + static _chars = { + ...border + }; + options = { + indent: 0, + border: false, + maxColWidth: Infinity, + minColWidth: 0, + padding: 1, + chars: { + ...Table._chars + } + }; + headerRow; + /** + * Create a new table. If rows is a table, all rows and options of the table + * will be copied to the new table. + * @param rows + */ static from(rows) { + const table = new this(...rows); + if (rows instanceof Table) { + table.options = { + ...rows.options + }; + table.headerRow = rows.headerRow ? Row.from(rows.headerRow) : undefined; + } + return table; + } + /** + * Create a new table from an array of json objects. An object represents a + * row and each property a column. + * @param rows Array of objects. + */ static fromJson(rows) { + return new this().fromJson(rows); + } + /** + * Set global default border characters. + * @param chars Border options. + */ static chars(chars) { + Object.assign(this._chars, chars); + return this; + } + /** + * Write table or rows to stdout. + * @param rows Table or rows. + */ static render(rows) { + Table.from(rows).render(); + } + /** + * Read data from an array of json objects. An object represents a + * row and each property a column. + * @param rows Array of objects. + */ fromJson(rows) { + this.header(Object.keys(rows[0])); + this.body(rows.map((row)=>Object.values(row))); + return this; + } + /** + * Set table header. + * @param header Header row or cells. + */ header(header) { + this.headerRow = header instanceof Row ? header : Row.from(header); + return this; + } + /** + * Set table body. + * @param rows Table rows. + */ body(rows) { + this.length = 0; + this.push(...rows); + return this; + } + /** Clone table recursively with header and options. */ clone() { + const table = new Table(...this.map((row)=>row instanceof Row ? row.clone() : Row.from(row).clone())); + table.options = { + ...this.options + }; + table.headerRow = this.headerRow?.clone(); + return table; + } + /** Generate table string. */ toString() { + return new TableLayout(this, this.options).toString(); + } + /** Write table to stdout. */ render() { + console.log(this.toString()); + return this; + } + /** + * Set max col with. + * @param width Max col width. + * @param override Override existing value. + */ maxColWidth(width, override = true) { + if (override || typeof this.options.maxColWidth === "undefined") { + this.options.maxColWidth = width; + } + return this; + } + /** + * Set min col width. + * @param width Min col width. + * @param override Override existing value. + */ minColWidth(width, override = true) { + if (override || typeof this.options.minColWidth === "undefined") { + this.options.minColWidth = width; + } + return this; + } + /** + * Set table indentation. + * @param width Indent width. + * @param override Override existing value. + */ indent(width, override = true) { + if (override || typeof this.options.indent === "undefined") { + this.options.indent = width; + } + return this; + } + /** + * Set cell padding. + * @param padding Cell padding. + * @param override Override existing value. + */ padding(padding, override = true) { + if (override || typeof this.options.padding === "undefined") { + this.options.padding = padding; + } + return this; + } + /** + * Enable/disable cell border. + * @param enable Enable/disable cell border. + * @param override Override existing value. + */ border(enable, override = true) { + if (override || typeof this.options.border === "undefined") { + this.options.border = enable; + } + return this; + } + /** + * Align table content. + * @param direction Align direction. + * @param override Override existing value. + */ align(direction, override = true) { + if (override || typeof this.options.align === "undefined") { + this.options.align = direction; + } + return this; + } + /** + * Set border characters. + * @param chars Border options. + */ chars(chars) { + Object.assign(this.options.chars, chars); + return this; + } + /** Get table header. */ getHeader() { + return this.headerRow; + } + /** Get table body. */ getBody() { + return [ + ...this + ]; + } + /** Get mac col widrth. */ getMaxColWidth() { + return this.options.maxColWidth; + } + /** Get min col width. */ getMinColWidth() { + return this.options.minColWidth; + } + /** Get table indentation. */ getIndent() { + return this.options.indent; + } + /** Get cell padding. */ getPadding() { + return this.options.padding; + } + /** Check if table has border. */ getBorder() { + return this.options.border === true; + } + /** Check if header row has border. */ hasHeaderBorder() { + const hasBorder = this.headerRow?.hasBorder(); + return hasBorder === true || this.getBorder() && hasBorder !== false; + } + /** Check if table bordy has border. */ hasBodyBorder() { + return this.getBorder() || this.some((row)=>row instanceof Row ? row.hasBorder() : row.some((cell)=>cell instanceof Cell ? cell.getBorder : false)); + } + /** Check if table header or body has border. */ hasBorder() { + return this.hasHeaderBorder() || this.hasBodyBorder(); + } + /** Get table alignment. */ getAlign() { + return this.options.align ?? "left"; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvdGFibGUvdGFibGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYm9yZGVyLCBJQm9yZGVyIH0gZnJvbSBcIi4vYm9yZGVyLnRzXCI7XG5pbXBvcnQgeyBDZWxsLCBEaXJlY3Rpb24gfSBmcm9tIFwiLi9jZWxsLnRzXCI7XG5pbXBvcnQgeyBUYWJsZUxheW91dCB9IGZyb20gXCIuL2xheW91dC50c1wiO1xuaW1wb3J0IHsgSURhdGFSb3csIElSb3csIFJvdyB9IGZyb20gXCIuL3Jvdy50c1wiO1xuXG4vKiogQm9yZGVyIGNoYXJhY3RlcnMgc2V0dGluZ3MuICovXG5leHBvcnQgdHlwZSBJQm9yZGVyT3B0aW9ucyA9IFBhcnRpYWw8SUJvcmRlcj47XG5cbi8qKiBUYWJsZSBvcHRpb25zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVGFibGVPcHRpb25zIHtcbiAgaW5kZW50PzogbnVtYmVyO1xuICBib3JkZXI/OiBib29sZWFuO1xuICBhbGlnbj86IERpcmVjdGlvbjtcbiAgbWF4Q29sV2lkdGg/OiBudW1iZXIgfCBudW1iZXJbXTtcbiAgbWluQ29sV2lkdGg/OiBudW1iZXIgfCBudW1iZXJbXTtcbiAgcGFkZGluZz86IG51bWJlciB8IG51bWJlcltdO1xuICBjaGFycz86IElCb3JkZXJPcHRpb25zO1xufVxuXG4vKiogVGFibGUgc2V0dGluZ3MuICovXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZVNldHRpbmdzIGV4dGVuZHMgUmVxdWlyZWQ8T21pdDxJVGFibGVPcHRpb25zLCBcImFsaWduXCI+PiB7XG4gIGNoYXJzOiBJQm9yZGVyO1xuICBhbGlnbj86IERpcmVjdGlvbjtcbn1cblxuLyoqIFRhYmxlIHR5cGUuICovXG5leHBvcnQgdHlwZSBJVGFibGU8VCBleHRlbmRzIElSb3cgPSBJUm93PiA9IFRbXSB8IFRhYmxlPFQ+O1xuXG4vKiogVGFibGUgcmVwcmVzZW50YXRpb24uICovXG5leHBvcnQgY2xhc3MgVGFibGU8VCBleHRlbmRzIElSb3cgPSBJUm93PiBleHRlbmRzIEFycmF5PFQ+IHtcbiAgcHJvdGVjdGVkIHN0YXRpYyBfY2hhcnM6IElCb3JkZXIgPSB7IC4uLmJvcmRlciB9O1xuICBwcm90ZWN0ZWQgb3B0aW9uczogSVRhYmxlU2V0dGluZ3MgPSB7XG4gICAgaW5kZW50OiAwLFxuICAgIGJvcmRlcjogZmFsc2UsXG4gICAgbWF4Q29sV2lkdGg6IEluZmluaXR5LFxuICAgIG1pbkNvbFdpZHRoOiAwLFxuICAgIHBhZGRpbmc6IDEsXG4gICAgY2hhcnM6IHsgLi4uVGFibGUuX2NoYXJzIH0sXG4gIH07XG4gIHByaXZhdGUgaGVhZGVyUm93PzogUm93O1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgdGFibGUuIElmIHJvd3MgaXMgYSB0YWJsZSwgYWxsIHJvd3MgYW5kIG9wdGlvbnMgb2YgdGhlIHRhYmxlXG4gICAqIHdpbGwgYmUgY29waWVkIHRvIHRoZSBuZXcgdGFibGUuXG4gICAqIEBwYXJhbSByb3dzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb208VCBleHRlbmRzIElSb3c+KHJvd3M6IElUYWJsZTxUPik6IFRhYmxlPFQ+IHtcbiAgICBjb25zdCB0YWJsZSA9IG5ldyB0aGlzKC4uLnJvd3MpO1xuICAgIGlmIChyb3dzIGluc3RhbmNlb2YgVGFibGUpIHtcbiAgICAgIHRhYmxlLm9wdGlvbnMgPSB7IC4uLihyb3dzIGFzIFRhYmxlKS5vcHRpb25zIH07XG4gICAgICB0YWJsZS5oZWFkZXJSb3cgPSByb3dzLmhlYWRlclJvdyA/IFJvdy5mcm9tKHJvd3MuaGVhZGVyUm93KSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHRhYmxlO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyB0YWJsZSBmcm9tIGFuIGFycmF5IG9mIGpzb24gb2JqZWN0cy4gQW4gb2JqZWN0IHJlcHJlc2VudHMgYVxuICAgKiByb3cgYW5kIGVhY2ggcHJvcGVydHkgYSBjb2x1bW4uXG4gICAqIEBwYXJhbSByb3dzIEFycmF5IG9mIG9iamVjdHMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Kc29uKHJvd3M6IElEYXRhUm93W10pOiBUYWJsZSB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKCkuZnJvbUpzb24ocm93cyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGdsb2JhbCBkZWZhdWx0IGJvcmRlciBjaGFyYWN0ZXJzLlxuICAgKiBAcGFyYW0gY2hhcnMgQm9yZGVyIG9wdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNoYXJzKGNoYXJzOiBJQm9yZGVyT3B0aW9ucyk6IHR5cGVvZiBUYWJsZSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLl9jaGFycywgY2hhcnMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlIHRhYmxlIG9yIHJvd3MgdG8gc3Rkb3V0LlxuICAgKiBAcGFyYW0gcm93cyBUYWJsZSBvciByb3dzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZW5kZXI8VCBleHRlbmRzIElSb3c+KHJvd3M6IElUYWJsZTxUPik6IHZvaWQge1xuICAgIFRhYmxlLmZyb20ocm93cykucmVuZGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVhZCBkYXRhIGZyb20gYW4gYXJyYXkgb2YganNvbiBvYmplY3RzLiBBbiBvYmplY3QgcmVwcmVzZW50cyBhXG4gICAqIHJvdyBhbmQgZWFjaCBwcm9wZXJ0eSBhIGNvbHVtbi5cbiAgICogQHBhcmFtIHJvd3MgQXJyYXkgb2Ygb2JqZWN0cy5cbiAgICovXG4gIHB1YmxpYyBmcm9tSnNvbihyb3dzOiBJRGF0YVJvd1tdKTogdGhpcyB7XG4gICAgdGhpcy5oZWFkZXIoT2JqZWN0LmtleXMocm93c1swXSkpO1xuICAgIHRoaXMuYm9keShyb3dzLm1hcCgocm93KSA9PiBPYmplY3QudmFsdWVzKHJvdykgYXMgVCkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0YWJsZSBoZWFkZXIuXG4gICAqIEBwYXJhbSBoZWFkZXIgSGVhZGVyIHJvdyBvciBjZWxscy5cbiAgICovXG4gIHB1YmxpYyBoZWFkZXIoaGVhZGVyOiBJUm93KTogdGhpcyB7XG4gICAgdGhpcy5oZWFkZXJSb3cgPSBoZWFkZXIgaW5zdGFuY2VvZiBSb3cgPyBoZWFkZXIgOiBSb3cuZnJvbShoZWFkZXIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0YWJsZSBib2R5LlxuICAgKiBAcGFyYW0gcm93cyBUYWJsZSByb3dzLlxuICAgKi9cbiAgcHVibGljIGJvZHkocm93czogVFtdKTogdGhpcyB7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuICAgIHRoaXMucHVzaCguLi5yb3dzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBDbG9uZSB0YWJsZSByZWN1cnNpdmVseSB3aXRoIGhlYWRlciBhbmQgb3B0aW9ucy4gKi9cbiAgcHVibGljIGNsb25lKCk6IFRhYmxlIHtcbiAgICBjb25zdCB0YWJsZSA9IG5ldyBUYWJsZShcbiAgICAgIC4uLnRoaXMubWFwKChyb3c6IFQpID0+XG4gICAgICAgIHJvdyBpbnN0YW5jZW9mIFJvdyA/IHJvdy5jbG9uZSgpIDogUm93LmZyb20ocm93KS5jbG9uZSgpXG4gICAgICApLFxuICAgICk7XG4gICAgdGFibGUub3B0aW9ucyA9IHsgLi4udGhpcy5vcHRpb25zIH07XG4gICAgdGFibGUuaGVhZGVyUm93ID0gdGhpcy5oZWFkZXJSb3c/LmNsb25lKCk7XG4gICAgcmV0dXJuIHRhYmxlO1xuICB9XG5cbiAgLyoqIEdlbmVyYXRlIHRhYmxlIHN0cmluZy4gKi9cbiAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBUYWJsZUxheW91dCh0aGlzLCB0aGlzLm9wdGlvbnMpLnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKiogV3JpdGUgdGFibGUgdG8gc3Rkb3V0LiAqL1xuICBwdWJsaWMgcmVuZGVyKCk6IHRoaXMge1xuICAgIGNvbnNvbGUubG9nKHRoaXMudG9TdHJpbmcoKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IG1heCBjb2wgd2l0aC5cbiAgICogQHBhcmFtIHdpZHRoICAgICBNYXggY29sIHdpZHRoLlxuICAgKiBAcGFyYW0gb3ZlcnJpZGUgIE92ZXJyaWRlIGV4aXN0aW5nIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIG1heENvbFdpZHRoKHdpZHRoOiBudW1iZXIgfCBudW1iZXJbXSwgb3ZlcnJpZGUgPSB0cnVlKTogdGhpcyB7XG4gICAgaWYgKG92ZXJyaWRlIHx8IHR5cGVvZiB0aGlzLm9wdGlvbnMubWF4Q29sV2lkdGggPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5tYXhDb2xXaWR0aCA9IHdpZHRoO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgbWluIGNvbCB3aWR0aC5cbiAgICogQHBhcmFtIHdpZHRoICAgICBNaW4gY29sIHdpZHRoLlxuICAgKiBAcGFyYW0gb3ZlcnJpZGUgIE92ZXJyaWRlIGV4aXN0aW5nIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIG1pbkNvbFdpZHRoKHdpZHRoOiBudW1iZXIgfCBudW1iZXJbXSwgb3ZlcnJpZGUgPSB0cnVlKTogdGhpcyB7XG4gICAgaWYgKG92ZXJyaWRlIHx8IHR5cGVvZiB0aGlzLm9wdGlvbnMubWluQ29sV2lkdGggPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5taW5Db2xXaWR0aCA9IHdpZHRoO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGFibGUgaW5kZW50YXRpb24uXG4gICAqIEBwYXJhbSB3aWR0aCAgICAgSW5kZW50IHdpZHRoLlxuICAgKiBAcGFyYW0gb3ZlcnJpZGUgIE92ZXJyaWRlIGV4aXN0aW5nIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIGluZGVudCh3aWR0aDogbnVtYmVyLCBvdmVycmlkZSA9IHRydWUpOiB0aGlzIHtcbiAgICBpZiAob3ZlcnJpZGUgfHwgdHlwZW9mIHRoaXMub3B0aW9ucy5pbmRlbnQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5pbmRlbnQgPSB3aWR0aDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGNlbGwgcGFkZGluZy5cbiAgICogQHBhcmFtIHBhZGRpbmcgICBDZWxsIHBhZGRpbmcuXG4gICAqIEBwYXJhbSBvdmVycmlkZSAgT3ZlcnJpZGUgZXhpc3RpbmcgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgcGFkZGluZyhwYWRkaW5nOiBudW1iZXIgfCBudW1iZXJbXSwgb3ZlcnJpZGUgPSB0cnVlKTogdGhpcyB7XG4gICAgaWYgKG92ZXJyaWRlIHx8IHR5cGVvZiB0aGlzLm9wdGlvbnMucGFkZGluZyA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgdGhpcy5vcHRpb25zLnBhZGRpbmcgPSBwYWRkaW5nO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGUvZGlzYWJsZSBjZWxsIGJvcmRlci5cbiAgICogQHBhcmFtIGVuYWJsZSAgICBFbmFibGUvZGlzYWJsZSBjZWxsIGJvcmRlci5cbiAgICogQHBhcmFtIG92ZXJyaWRlICBPdmVycmlkZSBleGlzdGluZyB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBib3JkZXIoZW5hYmxlOiBib29sZWFuLCBvdmVycmlkZSA9IHRydWUpOiB0aGlzIHtcbiAgICBpZiAob3ZlcnJpZGUgfHwgdHlwZW9mIHRoaXMub3B0aW9ucy5ib3JkZXIgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5ib3JkZXIgPSBlbmFibGU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsaWduIHRhYmxlIGNvbnRlbnQuXG4gICAqIEBwYXJhbSBkaXJlY3Rpb24gQWxpZ24gZGlyZWN0aW9uLlxuICAgKiBAcGFyYW0gb3ZlcnJpZGUgIE92ZXJyaWRlIGV4aXN0aW5nIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIGFsaWduKGRpcmVjdGlvbjogRGlyZWN0aW9uLCBvdmVycmlkZSA9IHRydWUpOiB0aGlzIHtcbiAgICBpZiAob3ZlcnJpZGUgfHwgdHlwZW9mIHRoaXMub3B0aW9ucy5hbGlnbiA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgdGhpcy5vcHRpb25zLmFsaWduID0gZGlyZWN0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYm9yZGVyIGNoYXJhY3RlcnMuXG4gICAqIEBwYXJhbSBjaGFycyBCb3JkZXIgb3B0aW9ucy5cbiAgICovXG4gIHB1YmxpYyBjaGFycyhjaGFyczogSUJvcmRlck9wdGlvbnMpOiB0aGlzIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMub3B0aW9ucy5jaGFycywgY2hhcnMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEdldCB0YWJsZSBoZWFkZXIuICovXG4gIHB1YmxpYyBnZXRIZWFkZXIoKTogUm93IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5oZWFkZXJSb3c7XG4gIH1cblxuICAvKiogR2V0IHRhYmxlIGJvZHkuICovXG4gIHB1YmxpYyBnZXRCb2R5KCk6IFRbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzXTtcbiAgfVxuXG4gIC8qKiBHZXQgbWFjIGNvbCB3aWRydGguICovXG4gIHB1YmxpYyBnZXRNYXhDb2xXaWR0aCgpOiBudW1iZXIgfCBudW1iZXJbXSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5tYXhDb2xXaWR0aDtcbiAgfVxuXG4gIC8qKiBHZXQgbWluIGNvbCB3aWR0aC4gKi9cbiAgcHVibGljIGdldE1pbkNvbFdpZHRoKCk6IG51bWJlciB8IG51bWJlcltdIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm1pbkNvbFdpZHRoO1xuICB9XG5cbiAgLyoqIEdldCB0YWJsZSBpbmRlbnRhdGlvbi4gKi9cbiAgcHVibGljIGdldEluZGVudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuaW5kZW50O1xuICB9XG5cbiAgLyoqIEdldCBjZWxsIHBhZGRpbmcuICovXG4gIHB1YmxpYyBnZXRQYWRkaW5nKCk6IG51bWJlciB8IG51bWJlcltdIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnBhZGRpbmc7XG4gIH1cblxuICAvKiogQ2hlY2sgaWYgdGFibGUgaGFzIGJvcmRlci4gKi9cbiAgcHVibGljIGdldEJvcmRlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmJvcmRlciA9PT0gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBDaGVjayBpZiBoZWFkZXIgcm93IGhhcyBib3JkZXIuICovXG4gIHB1YmxpYyBoYXNIZWFkZXJCb3JkZXIoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaGFzQm9yZGVyID0gdGhpcy5oZWFkZXJSb3c/Lmhhc0JvcmRlcigpO1xuICAgIHJldHVybiBoYXNCb3JkZXIgPT09IHRydWUgfHwgKHRoaXMuZ2V0Qm9yZGVyKCkgJiYgaGFzQm9yZGVyICE9PSBmYWxzZSk7XG4gIH1cblxuICAvKiogQ2hlY2sgaWYgdGFibGUgYm9yZHkgaGFzIGJvcmRlci4gKi9cbiAgcHVibGljIGhhc0JvZHlCb3JkZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Qm9yZGVyKCkgfHxcbiAgICAgIHRoaXMuc29tZSgocm93KSA9PlxuICAgICAgICByb3cgaW5zdGFuY2VvZiBSb3dcbiAgICAgICAgICA/IHJvdy5oYXNCb3JkZXIoKVxuICAgICAgICAgIDogcm93LnNvbWUoKGNlbGwpID0+IGNlbGwgaW5zdGFuY2VvZiBDZWxsID8gY2VsbC5nZXRCb3JkZXIgOiBmYWxzZSlcbiAgICAgICk7XG4gIH1cblxuICAvKiogQ2hlY2sgaWYgdGFibGUgaGVhZGVyIG9yIGJvZHkgaGFzIGJvcmRlci4gKi9cbiAgcHVibGljIGhhc0JvcmRlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXNIZWFkZXJCb3JkZXIoKSB8fCB0aGlzLmhhc0JvZHlCb3JkZXIoKTtcbiAgfVxuXG4gIC8qKiBHZXQgdGFibGUgYWxpZ25tZW50LiAqL1xuICBwdWJsaWMgZ2V0QWxpZ24oKTogRGlyZWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmFsaWduID8/IFwibGVmdFwiO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxNQUFNLFFBQWlCLGNBQWM7QUFDOUMsU0FBUyxJQUFJLFFBQW1CLFlBQVk7QUFDNUMsU0FBUyxXQUFXLFFBQVEsY0FBYztBQUMxQyxTQUF5QixHQUFHLFFBQVEsV0FBVztBQXlCL0MsMEJBQTBCLEdBQzFCLE9BQU8sTUFBTSxjQUFxQztFQUNoRCxPQUFpQixTQUFrQjtJQUFFLEdBQUcsTUFBTTtFQUFDLEVBQUU7RUFDdkMsVUFBMEI7SUFDbEMsUUFBUTtJQUNSLFFBQVE7SUFDUixhQUFhO0lBQ2IsYUFBYTtJQUNiLFNBQVM7SUFDVCxPQUFPO01BQUUsR0FBRyxNQUFNLE1BQU07SUFBQztFQUMzQixFQUFFO0VBQ00sVUFBZ0I7RUFFeEI7Ozs7R0FJQyxHQUNELE9BQWMsS0FBcUIsSUFBZSxFQUFZO0lBQzVELE1BQU0sUUFBUSxJQUFJLElBQUksSUFBSTtJQUMxQixJQUFJLGdCQUFnQixPQUFPO01BQ3pCLE1BQU0sT0FBTyxHQUFHO1FBQUUsR0FBRyxBQUFDLEtBQWUsT0FBTztNQUFDO01BQzdDLE1BQU0sU0FBUyxHQUFHLEtBQUssU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssU0FBUyxJQUFJO0lBQ2hFO0lBQ0EsT0FBTztFQUNUO0VBRUE7Ozs7R0FJQyxHQUNELE9BQWMsU0FBUyxJQUFnQixFQUFTO0lBQzlDLE9BQU8sSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDO0VBQzdCO0VBRUE7OztHQUdDLEdBQ0Qs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 +// denoCacheMetadata=114928163088947130,2896490680958758969
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/ed86b2884f587966d7603fa9d467a38520fdd0d9a0f8c97c7231d8aa8425e08e.js b/vendor/gen/https/deno.land/ed86b2884f587966d7603fa9d467a38520fdd0d9a0f8c97c7231d8aa8425e08e.js new file mode 100644 index 0000000..b58c0ef --- /dev/null +++ b/vendor/gen/https/deno.land/ed86b2884f587966d7603fa9d467a38520fdd0d9a0f8c97c7231d8aa8425e08e.js @@ -0,0 +1,37 @@ +// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { SEP } from "./separator.ts"; +/** Determines the common path from a set of paths, using an optional separator, + * which defaults to the OS default separator. + * + * ```ts + * import { common } from "https://deno.land/std@$STD_VERSION/path/mod.ts"; + * const p = common([ + * "./deno/std/path/mod.ts", + * "./deno/std/fs/mod.ts", + * ]); + * console.log(p); // "./deno/std/" + * ``` + */ export function common(paths, sep = SEP) { + const [first = "", ...remaining] = paths; + if (first === "" || remaining.length === 0) { + return first.substring(0, first.lastIndexOf(sep) + 1); + } + const parts = first.split(sep); + let endOfPrefix = parts.length; + for (const path of remaining){ + const compare = path.split(sep); + for(let i = 0; i < endOfPrefix; i++){ + if (compare[i] !== parts[i]) { + endOfPrefix = i; + } + } + if (endOfPrefix === 0) { + return ""; + } + } + const prefix = parts.slice(0, endOfPrefix).join(sep); + return prefix.endsWith(sep) ? prefix : `${prefix}${sep}`; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE3MC4wL3BhdGgvY29tbW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjIgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IFNFUCB9IGZyb20gXCIuL3NlcGFyYXRvci50c1wiO1xuXG4vKiogRGV0ZXJtaW5lcyB0aGUgY29tbW9uIHBhdGggZnJvbSBhIHNldCBvZiBwYXRocywgdXNpbmcgYW4gb3B0aW9uYWwgc2VwYXJhdG9yLFxuICogd2hpY2ggZGVmYXVsdHMgdG8gdGhlIE9TIGRlZmF1bHQgc2VwYXJhdG9yLlxuICpcbiAqIGBgYHRzXG4gKiAgICAgICBpbXBvcnQgeyBjb21tb24gfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9wYXRoL21vZC50c1wiO1xuICogICAgICAgY29uc3QgcCA9IGNvbW1vbihbXG4gKiAgICAgICAgIFwiLi9kZW5vL3N0ZC9wYXRoL21vZC50c1wiLFxuICogICAgICAgICBcIi4vZGVuby9zdGQvZnMvbW9kLnRzXCIsXG4gKiAgICAgICBdKTtcbiAqICAgICAgIGNvbnNvbGUubG9nKHApOyAvLyBcIi4vZGVuby9zdGQvXCJcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tbW9uKHBhdGhzOiBzdHJpbmdbXSwgc2VwID0gU0VQKTogc3RyaW5nIHtcbiAgY29uc3QgW2ZpcnN0ID0gXCJcIiwgLi4ucmVtYWluaW5nXSA9IHBhdGhzO1xuICBpZiAoZmlyc3QgPT09IFwiXCIgfHwgcmVtYWluaW5nLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBmaXJzdC5zdWJzdHJpbmcoMCwgZmlyc3QubGFzdEluZGV4T2Yoc2VwKSArIDEpO1xuICB9XG4gIGNvbnN0IHBhcnRzID0gZmlyc3Quc3BsaXQoc2VwKTtcblxuICBsZXQgZW5kT2ZQcmVmaXggPSBwYXJ0cy5sZW5ndGg7XG4gIGZvciAoY29uc3QgcGF0aCBvZiByZW1haW5pbmcpIHtcbiAgICBjb25zdCBjb21wYXJlID0gcGF0aC5zcGxpdChzZXApO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZW5kT2ZQcmVmaXg7IGkrKykge1xuICAgICAgaWYgKGNvbXBhcmVbaV0gIT09IHBhcnRzW2ldKSB7XG4gICAgICAgIGVuZE9mUHJlZml4ID0gaTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZW5kT2ZQcmVmaXggPT09IDApIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgfVxuICBjb25zdCBwcmVmaXggPSBwYXJ0cy5zbGljZSgwLCBlbmRPZlByZWZpeCkuam9pbihzZXApO1xuICByZXR1cm4gcHJlZml4LmVuZHNXaXRoKHNlcCkgPyBwcmVmaXggOiBgJHtwcmVmaXh9JHtzZXB9YDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBRXJDLFNBQVMsR0FBRyxRQUFRLGlCQUFpQjtBQUVyQzs7Ozs7Ozs7Ozs7Q0FXQyxHQUNELE9BQU8sU0FBUyxPQUFPLEtBQWUsRUFBRSxNQUFNLEdBQUc7RUFDL0MsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLEdBQUcsVUFBVSxHQUFHO0VBQ25DLElBQUksVUFBVSxNQUFNLFVBQVUsTUFBTSxLQUFLLEdBQUc7SUFDMUMsT0FBTyxNQUFNLFNBQVMsQ0FBQyxHQUFHLE1BQU0sV0FBVyxDQUFDLE9BQU87RUFDckQ7RUFDQSxNQUFNLFFBQVEsTUFBTSxLQUFLLENBQUM7RUFFMUIsSUFBSSxjQUFjLE1BQU0sTUFBTTtFQUM5QixLQUFLLE1BQU0sUUFBUSxVQUFXO0lBQzVCLE1BQU0sVUFBVSxLQUFLLEtBQUssQ0FBQztJQUMzQixJQUFLLElBQUksSUFBSSxHQUFHLElBQUksYUFBYSxJQUFLO01BQ3BDLElBQUksT0FBTyxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFO1FBQzNCLGNBQWM7TUFDaEI7SUFDRjtJQUVBLElBQUksZ0JBQWdCLEdBQUc7TUFDckIsT0FBTztJQUNUO0VBQ0Y7RUFDQSxNQUFNLFNBQVMsTUFBTSxLQUFLLENBQUMsR0FBRyxhQUFhLElBQUksQ0FBQztFQUNoRCxPQUFPLE9BQU8sUUFBUSxDQUFDLE9BQU8sU0FBUyxHQUFHLFNBQVMsS0FBSztBQUMxRCJ9 +// denoCacheMetadata=13151805853932857385,17089560130007283071
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/ee461dcf7bc911e1ae7f7325e06420f386fc9da6ca7120580368c1f192bf34ac.js b/vendor/gen/https/deno.land/ee461dcf7bc911e1ae7f7325e06420f386fc9da6ca7120580368c1f192bf34ac.js new file mode 100644 index 0000000..c8a6ffb --- /dev/null +++ b/vendor/gen/https/deno.land/ee461dcf7bc911e1ae7f7325e06420f386fc9da6ca7120580368c1f192bf34ac.js @@ -0,0 +1,18 @@ +import { parse } from "../../deps/yaml.ts"; +import { isPlainObject } from "../utils/object.ts"; +import { read } from "../utils/read.ts"; +/** Load and parse a YAML file */ export default async function yaml(path) { + const text = await read(path, false); + const content = parse(text); + if (!content) { + return {}; + } + if (isPlainObject(content)) { + return content; + } + return { + content + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY29yZS9sb2FkZXJzL3lhbWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGFyc2UgfSBmcm9tIFwiLi4vLi4vZGVwcy95YW1sLnRzXCI7XG5pbXBvcnQgeyBpc1BsYWluT2JqZWN0IH0gZnJvbSBcIi4uL3V0aWxzL29iamVjdC50c1wiO1xuaW1wb3J0IHsgcmVhZCB9IGZyb20gXCIuLi91dGlscy9yZWFkLnRzXCI7XG5cbmltcG9ydCB0eXBlIHsgUmF3RGF0YSB9IGZyb20gXCIuLi9maWxlLnRzXCI7XG5cbi8qKiBMb2FkIGFuZCBwYXJzZSBhIFlBTUwgZmlsZSAqL1xuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24geWFtbChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPFJhd0RhdGE+IHtcbiAgY29uc3QgdGV4dCA9IGF3YWl0IHJlYWQocGF0aCwgZmFsc2UpO1xuICBjb25zdCBjb250ZW50ID0gcGFyc2UodGV4dCk7XG5cbiAgaWYgKCFjb250ZW50KSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgaWYgKGlzUGxhaW5PYmplY3QoY29udGVudCkpIHtcbiAgICByZXR1cm4gY29udGVudCBhcyBSYXdEYXRhO1xuICB9XG5cbiAgcmV0dXJuIHsgY29udGVudCB9O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsS0FBSyxRQUFRLHFCQUFxQjtBQUMzQyxTQUFTLGFBQWEsUUFBUSxxQkFBcUI7QUFDbkQsU0FBUyxJQUFJLFFBQVEsbUJBQW1CO0FBSXhDLCtCQUErQixHQUMvQixlQUFlLGVBQWUsS0FBSyxJQUFZO0VBQzdDLE1BQU0sT0FBTyxNQUFNLEtBQUssTUFBTTtFQUM5QixNQUFNLFVBQVUsTUFBTTtFQUV0QixJQUFJLENBQUMsU0FBUztJQUNaLE9BQU8sQ0FBQztFQUNWO0VBRUEsSUFBSSxjQUFjLFVBQVU7SUFDMUIsT0FBTztFQUNUO0VBRUEsT0FBTztJQUFFO0VBQVE7QUFDbkIifQ== +// denoCacheMetadata=6554171975770041103,10379854333678606252
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/f077dc9f645c546d47a82c55a975266381b30c45d73900e03bb18e702d746344.js b/vendor/gen/https/deno.land/f077dc9f645c546d47a82c55a975266381b30c45d73900e03bb18e702d746344.js new file mode 100644 index 0000000..cbce20d --- /dev/null +++ b/vendor/gen/https/deno.land/f077dc9f645c546d47a82c55a975266381b30c45d73900e03bb18e702d746344.js @@ -0,0 +1,116 @@ +import analyze from "./js.ts"; +export default function tokenize(source) { + const tokens = []; + let type = "string"; + let position = 0; + try { + while(source.length > 0){ + if (type === "string") { + const index = source.indexOf("{{"); + const code = index === -1 ? source : source.slice(0, index); + tokens.push([ + type, + code, + position + ]); + if (index === -1) { + break; + } + position += index; + source = source.slice(index); + type = source.startsWith("{{#") ? "comment" : "tag"; + continue; + } + if (type === "comment") { + source = source.slice(3); + const index = source.indexOf("#}}"); + const comment = index === -1 ? source : source.slice(0, index); + tokens.push([ + type, + comment, + position + ]); + if (index === -1) { + break; + } + position += index + 3; + source = source.slice(index + 3); + type = "string"; + continue; + } + if (type === "tag") { + const indexes = parseTag(source); + const lastIndex = indexes.length - 1; + let tag; + indexes.reduce((prev, curr, index)=>{ + const code = source.slice(prev, curr - 2); + // Tag + if (index === 1) { + tag = [ + type, + code, + position + ]; + tokens.push(tag); + return curr; + } + // Filters + tokens.push([ + "filter", + code + ]); + return curr; + }); + position += indexes[lastIndex]; + source = source.slice(indexes[lastIndex]); + type = "string"; + // Search the closing echo tag {{ /echo }} + if (tag?.[1].match(/^\-?\s*echo\s*\-?$/)) { + const end = source.match(/{{\-?\s*\/echo\s*\-?}}/); + if (!end) { + throw new Error("Unclosed echo tag"); + } + const rawCode = source.slice(0, end.index); + tag[1] = `echo ${JSON.stringify(rawCode)}`; + const length = Number(end.index) + end[0].length; + source = source.slice(length); + position += length; + } + continue; + } + } + } catch (error) { + return { + tokens, + position, + error: error + }; + } + return { + tokens, + position, + error: undefined + }; +} +/** + * Parse a tag and return the indexes of the start and end brackets, and the filters between. + * For example: {{ tag |> filter1 |> filter2 }} => [2, 9, 20, 31] + */ export function parseTag(source) { + const indexes = [ + 2 + ]; + analyze(source, (type, index)=>{ + if (type === "close") { + indexes.push(index); + return false; + } + if (type === "new-filter") { + indexes.push(index); + } else if (type === "unclosed") { + throw new Error("Unclosed tag"); + } + }); + return indexes; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9zcmMvdG9rZW5pemVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhbmFseXplIGZyb20gXCIuL2pzLnRzXCI7XG5cbmV4cG9ydCB0eXBlIFRva2VuVHlwZSA9IFwic3RyaW5nXCIgfCBcInRhZ1wiIHwgXCJmaWx0ZXJcIiB8IFwiY29tbWVudFwiO1xuZXhwb3J0IHR5cGUgVG9rZW4gPSBbVG9rZW5UeXBlLCBzdHJpbmcsIG51bWJlcj9dO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuaXplUmVzdWx0IHtcbiAgdG9rZW5zOiBUb2tlbltdO1xuICBwb3NpdGlvbjogbnVtYmVyO1xuICBlcnJvcjogRXJyb3IgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRva2VuaXplKHNvdXJjZTogc3RyaW5nKTogVG9rZW5pemVSZXN1bHQge1xuICBjb25zdCB0b2tlbnM6IFRva2VuW10gPSBbXTtcbiAgbGV0IHR5cGU6IFRva2VuVHlwZSA9IFwic3RyaW5nXCI7XG4gIGxldCBwb3NpdGlvbiA9IDA7XG5cbiAgdHJ5IHtcbiAgICB3aGlsZSAoc291cmNlLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICh0eXBlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gc291cmNlLmluZGV4T2YoXCJ7e1wiKTtcbiAgICAgICAgY29uc3QgY29kZSA9IGluZGV4ID09PSAtMSA/IHNvdXJjZSA6IHNvdXJjZS5zbGljZSgwLCBpbmRleCk7XG5cbiAgICAgICAgdG9rZW5zLnB1c2goW3R5cGUsIGNvZGUsIHBvc2l0aW9uXSk7XG5cbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcG9zaXRpb24gKz0gaW5kZXg7XG4gICAgICAgIHNvdXJjZSA9IHNvdXJjZS5zbGljZShpbmRleCk7XG4gICAgICAgIHR5cGUgPSBzb3VyY2Uuc3RhcnRzV2l0aChcInt7I1wiKSA/IFwiY29tbWVudFwiIDogXCJ0YWdcIjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlID09PSBcImNvbW1lbnRcIikge1xuICAgICAgICBzb3VyY2UgPSBzb3VyY2Uuc2xpY2UoMyk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gc291cmNlLmluZGV4T2YoXCIjfX1cIik7XG4gICAgICAgIGNvbnN0IGNvbW1lbnQgPSBpbmRleCA9PT0gLTEgPyBzb3VyY2UgOiBzb3VyY2Uuc2xpY2UoMCwgaW5kZXgpO1xuICAgICAgICB0b2tlbnMucHVzaChbdHlwZSwgY29tbWVudCwgcG9zaXRpb25dKTtcblxuICAgICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBwb3NpdGlvbiArPSBpbmRleCArIDM7XG4gICAgICAgIHNvdXJjZSA9IHNvdXJjZS5zbGljZShpbmRleCArIDMpO1xuICAgICAgICB0eXBlID0gXCJzdHJpbmdcIjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlID09PSBcInRhZ1wiKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ZXMgPSBwYXJzZVRhZyhzb3VyY2UpO1xuICAgICAgICBjb25zdCBsYXN0SW5kZXggPSBpbmRleGVzLmxlbmd0aCAtIDE7XG4gICAgICAgIGxldCB0YWc6IFRva2VuIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIGluZGV4ZXMucmVkdWNlKChwcmV2LCBjdXJyLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvZGUgPSBzb3VyY2Uuc2xpY2UocHJldiwgY3VyciAtIDIpO1xuXG4gICAgICAgICAgLy8gVGFnXG4gICAgICAgICAgaWYgKGluZGV4ID09PSAxKSB7XG4gICAgICAgICAgICB0YWcgPSBbdHlwZSwgY29kZSwgcG9zaXRpb25dO1xuICAgICAgICAgICAgdG9rZW5zLnB1c2godGFnKTtcbiAgICAgICAgICAgIHJldHVybiBjdXJyO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEZpbHRlcnNcbiAgICAgICAgICB0b2tlbnMucHVzaChbXCJmaWx0ZXJcIiwgY29kZV0pO1xuICAgICAgICAgIHJldHVybiBjdXJyO1xuICAgICAgICB9KTtcblxuICAgICAgICBwb3NpdGlvbiArPSBpbmRleGVzW2xhc3RJbmRleF07XG4gICAgICAgIHNvdXJjZSA9IHNvdXJjZS5zbGljZShpbmRleGVzW2xhc3RJbmRleF0pO1xuICAgICAgICB0eXBlID0gXCJzdHJpbmdcIjtcblxuICAgICAgICAvLyBTZWFyY2ggdGhlIGNsb3NpbmcgZWNobyB0YWcge3sgL2VjaG8gfX1cbiAgICAgICAgaWYgKHRhZz8uWzFdLm1hdGNoKC9eXFwtP1xccyplY2hvXFxzKlxcLT8kLykpIHtcbiAgICAgICAgICBjb25zdCBlbmQgPSBzb3VyY2UubWF0Y2goL3t7XFwtP1xccypcXC9lY2hvXFxzKlxcLT99fS8pO1xuXG4gICAgICAgICAgaWYgKCFlbmQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuY2xvc2VkIGVjaG8gdGFnXCIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHJhd0NvZGUgPSBzb3VyY2Uuc2xpY2UoMCwgZW5kLmluZGV4KTtcbiAgICAgICAgICB0YWdbMV0gPSBgZWNobyAke0pTT04uc3RyaW5naWZ5KHJhd0NvZGUpfWA7XG4gICAgICAgICAgY29uc3QgbGVuZ3RoID0gTnVtYmVyKGVuZC5pbmRleCkgKyBlbmRbMF0ubGVuZ3RoO1xuICAgICAgICAgIHNvdXJjZSA9IHNvdXJjZS5zbGljZShsZW5ndGgpO1xuICAgICAgICAgIHBvc2l0aW9uICs9IGxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4geyB0b2tlbnMsIHBvc2l0aW9uLCBlcnJvcjogZXJyb3IgYXMgRXJyb3IgfCB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7IHRva2VucywgcG9zaXRpb24sIGVycm9yOiB1bmRlZmluZWQgfTtcbn1cblxuLyoqXG4gKiBQYXJzZSBhIHRhZyBhbmQgcmV0dXJuIHRoZSBpbmRleGVzIG9mIHRoZSBzdGFydCBhbmQgZW5kIGJyYWNrZXRzLCBhbmQgdGhlIGZpbHRlcnMgYmV0d2Vlbi5cbiAqIEZvciBleGFtcGxlOiB7eyB0YWcgfD4gZmlsdGVyMSB8PiBmaWx0ZXIyIH19ID0+IFsyLCA5LCAyMCwgMzFdXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRhZyhzb3VyY2U6IHN0cmluZyk6IG51bWJlcltdIHtcbiAgY29uc3QgaW5kZXhlczogbnVtYmVyW10gPSBbMl07XG5cbiAgYW5hbHl6ZShzb3VyY2UsICh0eXBlLCBpbmRleCkgPT4ge1xuICAgIGlmICh0eXBlID09PSBcImNsb3NlXCIpIHtcbiAgICAgIGluZGV4ZXMucHVzaChpbmRleCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09IFwibmV3LWZpbHRlclwiKSB7XG4gICAgICBpbmRleGVzLnB1c2goaW5kZXgpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJ1bmNsb3NlZFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmNsb3NlZCB0YWdcIik7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gaW5kZXhlcztcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLGFBQWEsVUFBVTtBQVc5QixlQUFlLFNBQVMsU0FBUyxNQUFjO0VBQzdDLE1BQU0sU0FBa0IsRUFBRTtFQUMxQixJQUFJLE9BQWtCO0VBQ3RCLElBQUksV0FBVztFQUVmLElBQUk7SUFDRixNQUFPLE9BQU8sTUFBTSxHQUFHLEVBQUc7TUFDeEIsSUFBSSxTQUFTLFVBQVU7UUFDckIsTUFBTSxRQUFRLE9BQU8sT0FBTyxDQUFDO1FBQzdC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 +// denoCacheMetadata=4919684051523569975,4133447679794853030
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/f1561e684b27ff55faacd9771405941bd912fc01fa66fcf29258f32063199bd6.js b/vendor/gen/https/deno.land/f1561e684b27ff55faacd9771405941bd912fc01fa66fcf29258f32063199bd6.js new file mode 100644 index 0000000..5b3f6a8 --- /dev/null +++ b/vendor/gen/https/deno.land/f1561e684b27ff55faacd9771405941bd912fc01fa66fcf29258f32063199bd6.js @@ -0,0 +1,4 @@ +import Sizzle from "./sizzle.js"; +export const DOM = Sizzle; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvZGVub19kb21AdjAuMS40OS9zcmMvZG9tL3NlbGVjdG9ycy9zaXp6bGUtdHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNpenpsZSBmcm9tIFwiLi9zaXp6bGUuanNcIjtcbmltcG9ydCB0eXBlIHsgRWxlbWVudCB9IGZyb20gXCIuLi9lbGVtZW50LnRzXCI7XG5pbXBvcnQgdHlwZSB7IERvY3VtZW50IH0gZnJvbSBcIi4uL2RvY3VtZW50LnRzXCI7XG5cbmV4cG9ydCBjb25zdCBET006IChkb2M6IERvY3VtZW50KSA9PiB7XG4gIGZpcnN0KFxuICAgIHNlbGVjdG9yOiBzdHJpbmcsXG4gICAgY29udGV4dDogRWxlbWVudCB8IERvY3VtZW50LFxuICApOiBFbGVtZW50IHwgbnVsbDtcbiAgbWF0Y2goXG4gICAgc2VsZWN0b3I6IHN0cmluZyxcbiAgICBjb250ZXh0OiBFbGVtZW50IHwgRG9jdW1lbnQsXG4gICk6IGJvb2xlYW47XG4gIHNlbGVjdChcbiAgICBzZWxlY3Rvcjogc3RyaW5nLFxuICAgIGNvbnRleHQ6IEVsZW1lbnQgfCBEb2N1bWVudCxcbiAgKTogRWxlbWVudFtdO1xufSA9IFNpenpsZSBhcyBhbnk7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxZQUFZLGNBQWM7QUFJakMsT0FBTyxNQUFNLE1BYVQsT0FBYyJ9 +// denoCacheMetadata=14759262006530515638,10229695178846719273
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/f182e676d52341f44023b0b0e7f431da35821eed8c08bc4dfa93983aeca96e38.js b/vendor/gen/https/deno.land/f182e676d52341f44023b0b0e7f431da35821eed8c08bc4dfa93983aeca96e38.js new file mode 100644 index 0000000..f973f15 --- /dev/null +++ b/vendor/gen/https/deno.land/f182e676d52341f44023b0b0e7f431da35821eed8c08bc4dfa93983aeca96e38.js @@ -0,0 +1,51 @@ +export default function() { + return (env)=>{ + env.tags.push(exportTag); + }; +} +function exportTag(env, code, _output, tokens) { + if (!code.startsWith("export ")) { + return; + } + const expression = code.replace(/^export\s+/, ""); + const { dataVarname } = env.options; + // Value is set (e.g. {{ export foo = "bar" }}) + if (expression.includes("=")) { + const match = code.match(/^export\s+([\w]+)\s*=\s*([\s\S]+)$/); + if (!match) { + throw new Error(`Invalid export tag: ${code}`); + } + const [, variable, value] = match; + const val = env.compileFilters(tokens, value); + return `if (${dataVarname}.hasOwnProperty("${variable}")) { + ${variable} = ${val}; + } else { + var ${variable} = ${val}; + } + ${dataVarname}["${variable}"] = ${variable}; + __exports["${variable}"] = ${variable}; + `; + } + // Value is captured (eg: {{ export foo }}bar{{ /export }}) + const compiled = []; + const compiledFilters = env.compileFilters(tokens, expression); + compiled.push(`if (${dataVarname}.hasOwnProperty("${expression}")) { + ${expression} = ""; + } else { + var ${expression} = ""; + } + `); + compiled.push(...env.compileTokens(tokens, expression, [ + "/export" + ])); + if (tokens.length && (tokens[0][0] !== "tag" || tokens[0][1] !== "/export")) { + throw new Error(`Missing closing tag for export tag: ${code}`); + } + tokens.shift(); + compiled.push(`${expression} = ${compiledFilters};`); + compiled.push(`${dataVarname}["${expression.trim()}"] = ${expression};`); + compiled.push(`__exports["${expression.trim()}"] = ${expression};`); + return compiled.join("\n"); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9wbHVnaW5zL2V4cG9ydC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFRva2VuIH0gZnJvbSBcIi4uL3NyYy90b2tlbml6ZXIudHNcIjtcbmltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnQsIFBsdWdpbiB9IGZyb20gXCIuLi9zcmMvZW52aXJvbm1lbnQudHNcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCk6IFBsdWdpbiB7XG4gIHJldHVybiAoZW52OiBFbnZpcm9ubWVudCkgPT4ge1xuICAgIGVudi50YWdzLnB1c2goZXhwb3J0VGFnKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZXhwb3J0VGFnKFxuICBlbnY6IEVudmlyb25tZW50LFxuICBjb2RlOiBzdHJpbmcsXG4gIF9vdXRwdXQ6IHN0cmluZyxcbiAgdG9rZW5zOiBUb2tlbltdLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFjb2RlLnN0YXJ0c1dpdGgoXCJleHBvcnQgXCIpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZXhwcmVzc2lvbiA9IGNvZGUucmVwbGFjZSgvXmV4cG9ydFxccysvLCBcIlwiKTtcbiAgY29uc3QgeyBkYXRhVmFybmFtZSB9ID0gZW52Lm9wdGlvbnM7XG5cbiAgLy8gVmFsdWUgaXMgc2V0IChlLmcuIHt7IGV4cG9ydCBmb28gPSBcImJhclwiIH19KVxuICBpZiAoZXhwcmVzc2lvbi5pbmNsdWRlcyhcIj1cIikpIHtcbiAgICBjb25zdCBtYXRjaCA9IGNvZGUubWF0Y2goL15leHBvcnRcXHMrKFtcXHddKylcXHMqPVxccyooW1xcc1xcU10rKSQvKTtcblxuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBleHBvcnQgdGFnOiAke2NvZGV9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgWywgdmFyaWFibGUsIHZhbHVlXSA9IG1hdGNoO1xuICAgIGNvbnN0IHZhbCA9IGVudi5jb21waWxlRmlsdGVycyh0b2tlbnMsIHZhbHVlKTtcblxuICAgIHJldHVybiBgaWYgKCR7ZGF0YVZhcm5hbWV9Lmhhc093blByb3BlcnR5KFwiJHt2YXJpYWJsZX1cIikpIHtcbiAgICAgICR7dmFyaWFibGV9ID0gJHt2YWx9O1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgJHt2YXJpYWJsZX0gPSAke3ZhbH07XG4gICAgfVxuICAgICR7ZGF0YVZhcm5hbWV9W1wiJHt2YXJpYWJsZX1cIl0gPSAke3ZhcmlhYmxlfTtcbiAgICBfX2V4cG9ydHNbXCIke3ZhcmlhYmxlfVwiXSA9ICR7dmFyaWFibGV9O1xuICAgIGA7XG4gIH1cblxuICAvLyBWYWx1ZSBpcyBjYXB0dXJlZCAoZWc6IHt7IGV4cG9ydCBmb28gfX1iYXJ7eyAvZXhwb3J0IH19KVxuICBjb25zdCBjb21waWxlZDogc3RyaW5nW10gPSBbXTtcbiAgY29uc3QgY29tcGlsZWRGaWx0ZXJzID0gZW52LmNvbXBpbGVGaWx0ZXJzKHRva2VucywgZXhwcmVzc2lvbik7XG5cbiAgY29tcGlsZWQucHVzaChgaWYgKCR7ZGF0YVZhcm5hbWV9Lmhhc093blByb3BlcnR5KFwiJHtleHByZXNzaW9ufVwiKSkge1xuICAgICR7ZXhwcmVzc2lvbn0gPSBcIlwiO1xuICB9IGVsc2Uge1xuICAgIHZhciAke2V4cHJlc3Npb259ID0gXCJcIjtcbiAgfVxuICBgKTtcblxuICBjb21waWxlZC5wdXNoKC4uLmVudi5jb21waWxlVG9rZW5zKHRva2VucywgZXhwcmVzc2lvbiwgW1wiL2V4cG9ydFwiXSkpO1xuXG4gIGlmICh0b2tlbnMubGVuZ3RoICYmICh0b2tlbnNbMF1bMF0gIT09IFwidGFnXCIgfHwgdG9rZW5zWzBdWzFdICE9PSBcIi9leHBvcnRcIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgY2xvc2luZyB0YWcgZm9yIGV4cG9ydCB0YWc6ICR7Y29kZX1gKTtcbiAgfVxuXG4gIHRva2Vucy5zaGlmdCgpO1xuICBjb21waWxlZC5wdXNoKGAke2V4cHJlc3Npb259ID0gJHtjb21waWxlZEZpbHRlcnN9O2ApO1xuICBjb21waWxlZC5wdXNoKGAke2RhdGFWYXJuYW1lfVtcIiR7ZXhwcmVzc2lvbi50cmltKCl9XCJdID0gJHtleHByZXNzaW9ufTtgKTtcbiAgY29tcGlsZWQucHVzaChgX19leHBvcnRzW1wiJHtleHByZXNzaW9uLnRyaW0oKX1cIl0gPSAke2V4cHJlc3Npb259O2ApO1xuICByZXR1cm4gY29tcGlsZWQuam9pbihcIlxcblwiKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxlQUFlO0VBQ2IsT0FBTyxDQUFDO0lBQ04sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO0VBQ2hCO0FBQ0Y7QUFFQSxTQUFTLFVBQ1AsR0FBZ0IsRUFDaEIsSUFBWSxFQUNaLE9BQWUsRUFDZixNQUFlO0VBRWYsSUFBSSxDQUFDLEtBQUssVUFBVSxDQUFDLFlBQVk7SUFDL0I7RUFDRjtFQUVBLE1BQU0sYUFBYSxLQUFLLE9BQU8sQ0FBQyxjQUFjO0VBQzlDLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLE9BQU87RUFFbkMsK0NBQStDO0VBQy9DLElBQUksV0FBVyxRQUFRLENBQUMsTUFBTTtJQUM1QixNQUFNLFFBQVEsS0FBSyxLQUFLLENBQUM7SUFFekIsSUFBSSxDQUFDLE9BQU87TUFDVixNQUFNLElBQUksTUFBTSxDQUFDLG9CQUFvQixFQUFFLE1BQU07SUFDL0M7SUFFQSxNQUFNLEdBQUcsVUFBVSxNQUFNLEdBQUc7SUFDNUIsTUFBTSxNQUFNLElBQUksY0FBYyxDQUFDLFFBQVE7SUFFdkMsT0FBTyxDQUFDLElBQUksRUFBRSxZQUFZLGlCQUFpQixFQUFFLFNBQVM7TUFDcEQsRUFBRSxTQUFTLEdBQUcsRUFBRSxJQUFJOztVQUVoQixFQUFFLFNBQVMsR0FBRyxFQUFFLElBQUk7O0lBRTFCLEVBQUUsWUFBWSxFQUFFLEVBQUUsU0FBUyxLQUFLLEVBQUUsU0FBUztlQUNoQyxFQUFFLFNBQVMsS0FBSyxFQUFFLFNBQVM7SUFDdEMsQ0FBQztFQUNIO0VBRUEsMkRBQTJEO0VBQzNELE1BQU0sV0FBcUIsRUFBRTtFQUM3QixNQUFNLGtCQUFrQixJQUFJLGNBQWMsQ0FBQyxRQUFRO0VBRW5ELFNBQVMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLFlBQVksaUJBQWlCLEVBQUUsV0FBVztJQUM3RCxFQUFFLFdBQVc7O1FBRVQsRUFBRSxXQUFXOztFQUVuQixDQUFDO0VBRUQsU0FBUyxJQUFJLElBQUksSUFBSSxhQUFhLENBQUMsUUFBUSxZQUFZO0lBQUM7R0FBVTtFQUVsRSxJQUFJLE9BQU8sTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssU0FBUyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxTQUFTLEdBQUc7SUFDM0UsTUFBTSxJQUFJLE1BQU0sQ0FBQyxvQ0FBb0MsRUFBRSxNQUFNO0VBQy9EO0VBRUEsT0FBTyxLQUFLO0VBQ1osU0FBUyxJQUFJLENBQUMsR0FBRyxXQUFXLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0VBQ25ELFNBQVMsSUFBSSxDQUFDLEdBQUcsWUFBWSxFQUFFLEVBQUUsV0FBVyxJQUFJLEdBQUcsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0VBQ3ZFLFNBQVMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLFdBQVcsSUFBSSxHQUFHLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztFQUNsRSxPQUFPLFNBQVMsSUFBSSxDQUFDO0FBQ3ZCIn0= +// denoCacheMetadata=9442748214727048622,591656589154776256
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/f5ab6a7e6b26573f6cb96ffcf1cb5c4eba0a44d7737754299ecf5ebb12af5906.js b/vendor/gen/https/deno.land/f5ab6a7e6b26573f6cb96ffcf1cb5c4eba0a44d7737754299ecf5ebb12af5906.js new file mode 100644 index 0000000..48d728b --- /dev/null +++ b/vendor/gen/https/deno.land/f5ab6a7e6b26573f6cb96ffcf1cb5c4eba0a44d7737754299ecf5ebb12af5906.js @@ -0,0 +1,4 @@ +export * from "https://deno.land/x/esbuild@v0.25.4/mod.js"; +export { denoPlugins } from "jsr:@luca/esbuild-deno-loader@0.11.1"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvZGVwcy9lc2J1aWxkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC94L2VzYnVpbGRAdjAuMjUuNC9tb2QuanNcIjtcbmV4cG9ydCB7IGRlbm9QbHVnaW5zIH0gZnJvbSBcImpzcjpAbHVjYS9lc2J1aWxkLWRlbm8tbG9hZGVyQDAuMTEuMVwiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNkNBQTZDO0FBQzNELFNBQVMsV0FBVyxRQUFRLHVDQUF1QyJ9 +// denoCacheMetadata=47152614018096681,18106692563007830614
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/f64818ea7796afb334b74e1511bde33341be04316575a248563f571b7eae772b.js b/vendor/gen/https/deno.land/f64818ea7796afb334b74e1511bde33341be04316575a248563f571b7eae772b.js new file mode 100644 index 0000000..4c6cb33 --- /dev/null +++ b/vendor/gen/https/deno.land/f64818ea7796afb334b74e1511bde33341be04316575a248563f571b7eae772b.js @@ -0,0 +1,171 @@ +import { encodeBase64 } from "./deps.ts"; +/** Escape sequence: `\x1B` */ const ESC = "\x1B"; +/** Control sequence intro: `\x1B[` */ const CSI = `${ESC}[`; +/** Operating system command: `\x1B]` */ const OSC = `${ESC}]`; +/** Link separator */ const SEP = ";"; +/** Ring audio bell: `\u0007` */ export const bel = "\u0007"; +/** Get cursor position. */ export const cursorPosition = `${CSI}6n`; +/** + * Move cursor to x, y, counting from the top left corner. + * @param x Position left. + * @param y Position top. + */ export function cursorTo(x, y) { + if (typeof y !== "number") { + return `${CSI}${x}G`; + } + return `${CSI}${y};${x}H`; +} +/** + * Move cursor by offset. + * @param x Offset left. + * @param y Offset top. + */ export function cursorMove(x, y) { + let ret = ""; + if (x < 0) { + ret += `${CSI}${-x}D`; + } else if (x > 0) { + ret += `${CSI}${x}C`; + } + if (y < 0) { + ret += `${CSI}${-y}A`; + } else if (y > 0) { + ret += `${CSI}${y}B`; + } + return ret; +} +/** + * Move cursor up by n lines. + * @param count Number of lines. + */ export function cursorUp(count = 1) { + return `${CSI}${count}A`; +} +/** + * Move cursor down by n lines. + * @param count Number of lines. + */ export function cursorDown(count = 1) { + return `${CSI}${count}B`; +} +/** + * Move cursor forward by n lines. + * @param count Number of lines. + */ export function cursorForward(count = 1) { + return `${CSI}${count}C`; +} +/** + * Move cursor backward by n lines. + * @param count Number of lines. + */ export function cursorBackward(count = 1) { + return `${CSI}${count}D`; +} +/** + * Move cursor to the beginning of the line n lines down. + * @param count Number of lines. + */ export function cursorNextLine(count = 1) { + return `${CSI}E`.repeat(count); +} +/** + * Move cursor to the beginning of the line n lines up. + * @param count Number of lines. + */ export function cursorPrevLine(count = 1) { + return `${CSI}F`.repeat(count); +} +/** Move cursor to first column of current row. */ export const cursorLeft = `${CSI}G`; +/** Hide cursor. */ export const cursorHide = `${CSI}?25l`; +/** Show cursor. */ export const cursorShow = `${CSI}?25h`; +/** Save cursor. */ export const cursorSave = `${ESC}7`; +/** Restore cursor. */ export const cursorRestore = `${ESC}8`; +/** + * Scroll window up by n lines. + * @param count Number of lines. + */ export function scrollUp(count = 1) { + return `${CSI}S`.repeat(count); +} +/** + * Scroll window down by n lines. + * @param count Number of lines. + */ export function scrollDown(count = 1) { + return `${CSI}T`.repeat(count); +} +/** Clear screen. */ export const eraseScreen = `${CSI}2J`; +/** + * Clear screen up by n lines. + * @param count Number of lines. + */ export function eraseUp(count = 1) { + return `${CSI}1J`.repeat(count); +} +/** + * Clear screen down by n lines. + * @param count Number of lines. + */ export function eraseDown(count = 1) { + return `${CSI}0J`.repeat(count); +} +/** Clear current line. */ export const eraseLine = `${CSI}2K`; +/** Clear to line end. */ export const eraseLineEnd = `${CSI}0K`; +/** Clear to line start. */ export const eraseLineStart = `${CSI}1K`; +/** + * Clear screen and move cursor by n lines up and move cursor to first column. + * @param count Number of lines. + */ export function eraseLines(count) { + let clear = ""; + for(let i = 0; i < count; i++){ + clear += eraseLine + (i < count - 1 ? cursorUp() : ""); + } + clear += cursorLeft; + return clear; +} +/** Clear the terminal screen. (Viewport) */ export const clearScreen = "\u001Bc"; +/** + * Clear the whole terminal, including scrollback buffer. + * (Not just the visible part of it). + */ export const clearTerminal = Deno.build.os === "windows" ? `${eraseScreen}${CSI}0f` : `${eraseScreen}${CSI}3J${CSI}H`; +/** + * Create link. + * @param text Link text. + * @param url Link url. + * ``` + * console.log( + * ansi.link("Click me.", "https://deno.land"), + * ); + * ``` + */ export function link(text, url) { + return [ + OSC, + "8", + SEP, + SEP, + url, + bel, + text, + OSC, + "8", + SEP, + SEP, + bel + ].join(""); +} +/** + * Create image. + * @param buffer Image buffer. + * @param options Image options. + * ``` + * const response = await fetch("https://deno.land/images/hashrock_simple.png"); + * const imageBuffer: ArrayBuffer = await response.arrayBuffer(); + * console.log( + * ansi.image(imageBuffer), + * ); + * ``` + */ export function image(buffer, options) { + let ret = `${OSC}1337;File=inline=1`; + if (options?.width) { + ret += `;width=${options.width}`; + } + if (options?.height) { + ret += `;height=${options.height}`; + } + if (options?.preserveAspectRatio === false) { + ret += ";preserveAspectRatio=0"; + } + return ret + ":" + encodeBase64(buffer) + bel; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvYW5zaS9hbnNpX2VzY2FwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZW5jb2RlQmFzZTY0IH0gZnJvbSBcIi4vZGVwcy50c1wiO1xuXG4vKiogRXNjYXBlIHNlcXVlbmNlOiBgXFx4MUJgICovXG5jb25zdCBFU0MgPSBcIlxceDFCXCI7XG4vKiogQ29udHJvbCBzZXF1ZW5jZSBpbnRybzogYFxceDFCW2AgKi9cbmNvbnN0IENTSSA9IGAke0VTQ31bYDtcbi8qKiBPcGVyYXRpbmcgc3lzdGVtIGNvbW1hbmQ6IGBcXHgxQl1gICovXG5jb25zdCBPU0MgPSBgJHtFU0N9XWA7XG4vKiogTGluayBzZXBhcmF0b3IgKi9cbmNvbnN0IFNFUCA9IFwiO1wiO1xuXG4vKiogUmluZyBhdWRpbyBiZWxsOiBgXFx1MDAwN2AgKi9cbmV4cG9ydCBjb25zdCBiZWwgPSBcIlxcdTAwMDdcIjtcbi8qKiBHZXQgY3Vyc29yIHBvc2l0aW9uLiAqL1xuZXhwb3J0IGNvbnN0IGN1cnNvclBvc2l0aW9uID0gYCR7Q1NJfTZuYDtcblxuLyoqXG4gKiBNb3ZlIGN1cnNvciB0byB4LCB5LCBjb3VudGluZyBmcm9tIHRoZSB0b3AgbGVmdCBjb3JuZXIuXG4gKiBAcGFyYW0geCBQb3NpdGlvbiBsZWZ0LlxuICogQHBhcmFtIHkgUG9zaXRpb24gdG9wLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3Vyc29yVG8oeDogbnVtYmVyLCB5PzogbnVtYmVyKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiB5ICE9PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIGAke0NTSX0ke3h9R2A7XG4gIH1cbiAgcmV0dXJuIGAke0NTSX0ke3l9OyR7eH1IYDtcbn1cblxuLyoqXG4gKiBNb3ZlIGN1cnNvciBieSBvZmZzZXQuXG4gKiBAcGFyYW0geCBPZmZzZXQgbGVmdC5cbiAqIEBwYXJhbSB5IE9mZnNldCB0b3AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjdXJzb3JNb3ZlKHg6IG51bWJlciwgeTogbnVtYmVyKTogc3RyaW5nIHtcbiAgbGV0IHJldCA9IFwiXCI7XG5cbiAgaWYgKHggPCAwKSB7XG4gICAgcmV0ICs9IGAke0NTSX0key14fURgO1xuICB9IGVsc2UgaWYgKHggPiAwKSB7XG4gICAgcmV0ICs9IGAke0NTSX0ke3h9Q2A7XG4gIH1cblxuICBpZiAoeSA8IDApIHtcbiAgICByZXQgKz0gYCR7Q1NJfSR7LXl9QWA7XG4gIH0gZWxzZSBpZiAoeSA+IDApIHtcbiAgICByZXQgKz0gYCR7Q1NJfSR7eX1CYDtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICogTW92ZSBjdXJzb3IgdXAgYnkgbiBsaW5lcy5cbiAqIEBwYXJhbSBjb3VudCBOdW1iZXIgb2YgbGluZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjdXJzb3JVcChjb3VudCA9IDEpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7Q1NJfSR7Y291bnR9QWA7XG59XG5cbi8qKlxuICogTW92ZSBjdXJzb3IgZG93biBieSBuIGxpbmVzLlxuICogQHBhcmFtIGNvdW50IE51bWJlciBvZiBsaW5lcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGN1cnNvckRvd24oY291bnQgPSAxKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke0NTSX0ke2NvdW50fUJgO1xufVxuXG4vKipcbiAqIE1vdmUgY3Vyc29yIGZvcndhcmQgYnkgbiBsaW5lcy5cbiAqIEBwYXJhbSBjb3VudCBOdW1iZXIgb2YgbGluZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjdXJzb3JGb3J3YXJkKGNvdW50ID0gMSk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtDU0l9JHtjb3VudH1DYDtcbn1cblxuLyoqXG4gKiBNb3ZlIGN1cnNvciBiYWNrd2FyZCBieSBuIGxpbmVzLlxuICogQHBhcmFtIGNvdW50IE51bWJlciBvZiBsaW5lcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGN1cnNvckJhY2t3YXJkKGNvdW50ID0gMSk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtDU0l9JHtjb3VudH1EYDtcbn1cblxuLyoqXG4gKiBNb3ZlIGN1cnNvciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lIG4gbGluZXMgZG93bi5cbiAqIEBwYXJhbSBjb3VudCBOdW1iZXIgb2YgbGluZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjdXJzb3JOZXh0TGluZShjb3VudCA9IDEpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7Q1NJfUVgLnJlcGVhdChjb3VudCk7XG59XG5cbi8qKlxuICogTW92ZSBjdXJzb3IgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZSBuIGxpbmVzIHVwLlxuICogQHBhcmFtIGNvdW50IE51bWJlciBvZiBsaW5lcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGN1cnNvclByZXZMaW5lKGNvdW50ID0gMSk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtDU0l9RmAucmVwZWF0KGNvdW50KTtcbn1cblxuLyoqIE1vdmUgY3Vyc29yIHRvIGZpcnN0IGNvbHVtbiBvZiBjdXJyZW50IHJvdy4gKi9cbmV4cG9ydCBjb25zdCBjdXJzb3JMZWZ0ID0gYCR7Q1NJfUdgO1xuLyoqIEhpZGUgY3Vyc29yLiAqL1xuZXhwb3J0IGNvbnN0IGN1cnNvckhpZGUgPSBgJHtDU0l9PzI1bGA7XG4vKiogU2hvdyBjdXJzb3IuICovXG5leHBvcnQgY29uc3QgY3Vyc29yU2hvdyA9IGAke0NTSX0/MjVoYDtcbi8qKiBTYXZlIGN1cnNvci4gKi9cbmV4cG9ydCBjb25zdCBjdXJzb3JTYXZlID0gYCR7RVNDfTdgO1xuLyoqIFJlc3RvcmUgY3Vyc29yLiAqL1xuZXhwb3J0IGNvbnN0IGN1cnNvclJlc3RvcmUgPSBgJHtFU0N9OGA7XG5cbi8qKlxuICogU2Nyb2xsIHdpbmRvdyB1cCBieSBuIGxpbmVzLlxuICogQHBhcmFtIGNvdW50IE51bWJlciBvZiBsaW5lcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNjcm9sbFVwKGNvdW50ID0gMSk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtDU0l9U2AucmVwZWF0KGNvdW50KTtcbn1cblxuLyoqXG4gKiBTY3JvbGwgd2luZG93IGRvd24gYnkgbiBsaW5lcy5cbiAqIEBwYXJhbSBjb3VudCBOdW1iZXIgb2YgbGluZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY3JvbGxEb3duKGNvdW50ID0gMSk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtDU0l9VGAucmVwZWF0KGNvdW50KTtcbn1cblxuLyoqIENsZWFyIHNjcmVlbi4gKi9cbmV4cG9ydCBjb25zdCBlcmFzZVNjcmVlbiA9IGAke0NTSX0ySmA7XG5cbi8qKlxuICogQ2xlYXIgc2NyZWVuIHVwIGJ5IG4gbGluZXMuXG4gKiBAcGFyYW0gY291bnQgTnVtYmVyIG9mIGxpbmVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXJhc2VVcChjb3VudCA9IDEpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7Q1NJfTFKYC5yZXBlYXQoY291bnQpO1xufVxuXG4vKipcbiAqIENsZWFyIHNjcmVlbiBkb3duIGJ5IG4gbGluZXMuXG4gKiBAcGFyYW0gY291bnQgTnVtYmVyIG9mIGxpbmVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXJhc2VEb3duKGNvdW50ID0gMSk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtDU0l9MEpgLnJlcGVhdChjb3VudCk7XG59XG5cbi8qKiBDbGVhciBjdXJyZW50IGxpbmUuICovXG5leHBvcnQgY29uc3QgZXJhc2VMaW5lID0gYCR7Q1NJfTJLYDtcbi8qKiBDbGVhciB0byBsaW5lIGVuZC4gKi9cbmV4cG9ydCBjb25zdCBlcmFzZUxpbmVFbmQgPSBgJHtDU0l9MEtgO1xuLyoqIENsZWFyIHRvIGxpbmUgc3RhcnQuICovXG5leHBvcnQgY29uc3QgZXJhc2VMaW5lU3RhcnQgPSBgJHtDU0l9MUtgO1xuXG4vKipcbiAqIENsZWFyIHNjcmVlbiBhbmQgbW92ZSBjdXJzb3IgYnkgbiBsaW5lcyB1cCBhbmQgbW92ZSBjdXJzb3IgdG8gZmlyc3QgY29sdW1uLlxuICogQHBhcmFtIGNvdW50IE51bWJlciBvZiBsaW5lcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVyYXNlTGluZXMoY291bnQ6IG51bWJlcik6IHN0cmluZyB7XG4gIGxldCBjbGVhciA9IFwiXCI7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgIGNsZWFyICs9IGVyYXNlTGluZSArIChpIDwgY291bnQgLSAxID8gY3Vyc29yVXAoKSA6IFwiXCIpO1xuICB9XG4gIGNsZWFyICs9IGN1cnNvckxlZnQ7XG4gIHJldHVybiBjbGVhcjtcbn1cblxuLyoqIENsZWFyIHRoZSB0ZXJtaW5hbCBzY3JlZW4uIChWaWV3cG9ydCkgKi9cbmV4cG9ydCBjb25zdCBjbGVhclNjcmVlbiA9IFwiXFx1MDAxQmNcIjtcblxuLyoqXG4gKiBDbGVhciB0aGUgd2hvbGUgdGVybWluYWwsIGluY2x1ZGluZyBzY3JvbGxiYWNrIGJ1ZmZlci5cbiAqIChOb3QganVzdCB0aGUgdmlzaWJsZSBwYXJ0IG9mIGl0KS5cbiAqL1xuZXhwb3J0IGNvbnN0IGNsZWFyVGVybWluYWwgPSBEZW5vLmJ1aWxkLm9zID09PSBcIndpbmRvd3NcIlxuICA/IGAke2VyYXNlU2NyZWVufSR7Q1NJfTBmYFxuICAvLyAxLiBFcmFzZXMgdGhlIHNjcmVlbiAoT25seSBkb25lIGluIGNhc2UgYDJgIGlzIG5vdCBzdXBwb3J0ZWQpXG4gIC8vIDIuIEVyYXNlcyB0aGUgd2hvbGUgc2NyZWVuIGluY2x1ZGluZyBzY3JvbGxiYWNrIGJ1ZmZlclxuICAvLyAzLiBNb3ZlcyBjdXJzb3IgdG8gdGhlIHRvcC1sZWZ0IHBvc2l0aW9uXG4gIC8vIE1vcmUgaW5mbzogaHR0cHM6Ly93d3cucmVhbC13b3JsZC1zeXN0ZW1zLmNvbS9kb2NzL0FOU0ljb2RlLmh0bWxcbiAgOiBgJHtlcmFzZVNjcmVlbn0ke0NTSX0zSiR7Q1NJfUhgO1xuXG4vKipcbiAqIENyZWF0ZSBsaW5rLlxuICogQHBhcmFtIHRleHQgTGluayB0ZXh0LlxuICogQHBhcmFtIHVybCBMaW5rIHVybC5cbiAqIGBgYFxuICogY29uc29sZS5sb2coXG4gKiAgIGFuc2kubGluayhcIkNsaWNrIG1lLlwiLCBcImh0dHBzOi8vZGVuby5sYW5kXCIpLFxuICogKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbGluayh0ZXh0OiBzdHJpbmcsIHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIFtcbiAgICBPU0MsXG4gICAgXCI4XCIsXG4gICAgU0VQLFxuICAgIFNFUCxcbiAgICB1cmwsXG4gICAgYmVsLFxuICAgIHRleHQsXG4gICAgT1NDLFxuICAgIFwiOFwiLFxuICAgIFNFUCxcbiAgICBTRVAsXG4gICAgYmVsLFxuICBdLmpvaW4oXCJcIik7XG59XG5cbi8qKiBJbWFnZSBvcHRpb25zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbWFnZU9wdGlvbnMge1xuICB3aWR0aD86IG51bWJlcjtcbiAgaGVpZ2h0PzogbnVtYmVyO1xuICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgaW1hZ2UuXG4gKiBAcGFyYW0gYnVmZmVyICBJbWFnZSBidWZmZXIuXG4gKiBAcGFyYW0gb3B0aW9ucyBJbWFnZSBvcHRpb25zLlxuICogYGBgXG4gKiBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKFwiaHR0cHM6Ly9kZW5vLmxhbmQvaW1hZ2VzL2hhc2hyb2NrX3NpbXBsZS5wbmdcIik7XG4gKiBjb25zdCBpbWFnZUJ1ZmZlcjogQXJyYXlCdWZmZXIgPSBhd2FpdCByZXNwb25zZS5hcnJheUJ1ZmZlcigpO1xuICogY29uc29sZS5sb2coXG4gKiAgIGFuc2kuaW1hZ2UoaW1hZ2VCdWZmZXIpLFxuICogKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gaW1hZ2UoXG4gIGJ1ZmZlcjogc3RyaW5nIHwgQXJyYXlCdWZmZXIsXG4gIG9wdGlvbnM/OiBJbWFnZU9wdGlvbnMsXG4pOiBzdHJpbmcge1xuICBsZXQgcmV0ID0gYCR7T1NDfTEzMzc7RmlsZT1pbmxpbmU9MWA7XG5cbiAgaWYgKG9wdGlvbnM/LndpZHRoKSB7XG4gICAgcmV0ICs9IGA7d2lkdGg9JHtvcHRpb25zLndpZHRofWA7XG4gIH1cblxuICBpZiAob3B0aW9ucz8uaGVpZ2h0KSB7XG4gICAgcmV0ICs9IGA7aGVpZ2h0PSR7b3B0aW9ucy5oZWlnaHR9YDtcbiAgfVxuXG4gIGlmIChvcHRpb25zPy5wcmVzZXJ2ZUFzcGVjdFJhdGlvID09PSBmYWxzZSkge1xuICAgIHJldCArPSBcIjtwcmVzZXJ2ZUFzcGVjdFJhdGlvPTBcIjtcbiAgfVxuXG4gIHJldHVybiByZXQgKyBcIjpcIiArIGVuY29kZUJhc2U2NChidWZmZXIpICsgYmVsO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsWUFBWSxRQUFRLFlBQVk7QUFFekMsNEJBQTRCLEdBQzVCLE1BQU0sTUFBTTtBQUNaLG9DQUFvQyxHQUNwQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNyQixzQ0FBc0MsR0FDdEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDckIsbUJBQW1CLEdBQ25CLE1BQU0sTUFBTTtBQUVaLDhCQUE4QixHQUM5QixPQUFPLE1BQU0sTUFBTSxTQUFTO0FBQzVCLHlCQUF5QixHQUN6QixPQUFPLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUV6Qzs7OztDQUlDLEdBQ0QsT0FBTyxTQUFTLFNBQVMsQ0FBUyxFQUFFLENBQVU7RUFDNUMsSUFBSSxPQUFPLE1BQU0sVUFBVTtJQUN6QixPQUFPLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQztFQUN0QjtFQUNBLE9BQU8sR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzNCO0FBRUE7Ozs7Q0FJQyxHQUNELE9BQU8sU0FBUyxXQUFXLENBQVMsRUFBRSxDQUFTO0VBQzdDLElBQUksTUFBTTtFQUVWLElBQUksSUFBSSxHQUFHO0lBQ1QsT0FBTyxHQUFHLE1BQU0s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 +// denoCacheMetadata=13163747317120128472,15437401025873900096
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/f6b9b2bd96618d6fbd88b97b38a1f5c50174bb785acbc29de06f1535dd58f755.js b/vendor/gen/https/deno.land/f6b9b2bd96618d6fbd88b97b38a1f5c50174bb785acbc29de06f1535dd58f755.js new file mode 100644 index 0000000..1b4e45f --- /dev/null +++ b/vendor/gen/https/deno.land/f6b9b2bd96618d6fbd88b97b38a1f5c50174bb785acbc29de06f1535dd58f755.js @@ -0,0 +1,40 @@ +import { Provider } from "../provider.ts"; +export class NestLandProvider extends Provider { + name = "nest.land"; + repositoryUrl = "https://nest.land/package/"; + registryUrl = "https://x.nest.land/"; + moduleName; + constructor({ name } = {}){ + super(); + this.moduleName = name; + } + async getVersions(name) { + const response = await fetch(`https://nest.land/api/package-client`, { + method: "post", + body: JSON.stringify({ + data: { + name: this.moduleName ?? name + } + }), + headers: { + "Content-Type": "application/json" + } + }); + if (!response.ok) { + throw new Error("couldn't fetch the latest version - try again after sometime"); + } + const { body: { latestVersion, packageUploadNames } } = await response.json(); + return { + latest: latestVersion, + versions: packageUploadNames.map((version)=>version.replace(new RegExp(`^${this.moduleName ?? name}@`), "")).reverse() + }; + } + getRepositoryUrl(name) { + return new URL(`${this.moduleName ?? name}/`, this.repositoryUrl).href; + } + getRegistryUrl(name, version) { + return new URL(`${this.moduleName ?? name}@${version}/`, this.registryUrl).href; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC91cGdyYWRlL3Byb3ZpZGVyL25lc3RfbGFuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm92aWRlciwgVmVyc2lvbnMgfSBmcm9tIFwiLi4vcHJvdmlkZXIudHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOZXN0TGFuZFByb3ZpZGVyT3B0aW9ucyB7XG4gIG5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBOZXN0TGFuZFByb3ZpZGVyIGV4dGVuZHMgUHJvdmlkZXIge1xuICBuYW1lID0gXCJuZXN0LmxhbmRcIjtcbiAgcHJpdmF0ZSByZWFkb25seSByZXBvc2l0b3J5VXJsID0gXCJodHRwczovL25lc3QubGFuZC9wYWNrYWdlL1wiO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lzdHJ5VXJsID0gXCJodHRwczovL3gubmVzdC5sYW5kL1wiO1xuICBwcml2YXRlIHJlYWRvbmx5IG1vZHVsZU5hbWU/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoeyBuYW1lIH06IE5lc3RMYW5kUHJvdmlkZXJPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubW9kdWxlTmFtZSA9IG5hbWU7XG4gIH1cblxuICBhc3luYyBnZXRWZXJzaW9ucyhcbiAgICBuYW1lOiBzdHJpbmcsXG4gICk6IFByb21pc2U8VmVyc2lvbnM+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGBodHRwczovL25lc3QubGFuZC9hcGkvcGFja2FnZS1jbGllbnRgLCB7XG4gICAgICBtZXRob2Q6IFwicG9zdFwiLFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBkYXRhOiB7IG5hbWU6IHRoaXMubW9kdWxlTmFtZSA/PyBuYW1lIH0gfSksXG4gICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgfSk7XG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcImNvdWxkbid0IGZldGNoIHRoZSBsYXRlc3QgdmVyc2lvbiAtIHRyeSBhZ2FpbiBhZnRlciBzb21ldGltZVwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCB7IGJvZHk6IHsgbGF0ZXN0VmVyc2lvbiwgcGFja2FnZVVwbG9hZE5hbWVzIH0gfSA9IGF3YWl0IHJlc3BvbnNlXG4gICAgICAuanNvbigpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxhdGVzdDogbGF0ZXN0VmVyc2lvbixcbiAgICAgIHZlcnNpb25zOiBwYWNrYWdlVXBsb2FkTmFtZXMubWFwKFxuICAgICAgICAodmVyc2lvbjogc3RyaW5nKSA9PlxuICAgICAgICAgIHZlcnNpb24ucmVwbGFjZShuZXcgUmVnRXhwKGBeJHt0aGlzLm1vZHVsZU5hbWUgPz8gbmFtZX1AYCksIFwiXCIpLFxuICAgICAgKS5yZXZlcnNlKCksXG4gICAgfTtcbiAgfVxuXG4gIGdldFJlcG9zaXRvcnlVcmwobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IFVSTChgJHt0aGlzLm1vZHVsZU5hbWUgPz8gbmFtZX0vYCwgdGhpcy5yZXBvc2l0b3J5VXJsKS5ocmVmO1xuICB9XG5cbiAgZ2V0UmVnaXN0cnlVcmwobmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgVVJMKGAke3RoaXMubW9kdWxlTmFtZSA/PyBuYW1lfUAke3ZlcnNpb259L2AsIHRoaXMucmVnaXN0cnlVcmwpXG4gICAgICAuaHJlZjtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsUUFBUSxRQUFrQixpQkFBaUI7QUFNcEQsT0FBTyxNQUFNLHlCQUF5QjtFQUNwQyxPQUFPLFlBQVk7RUFDRixnQkFBZ0IsNkJBQTZCO0VBQzdDLGNBQWMsdUJBQXVCO0VBQ3JDLFdBQW9CO0VBRXJDLFlBQVksRUFBRSxJQUFJLEVBQTJCLEdBQUcsQ0FBQyxDQUFDLENBQUU7SUFDbEQsS0FBSztJQUNMLElBQUksQ0FBQyxVQUFVLEdBQUc7RUFDcEI7RUFFQSxNQUFNLFlBQ0osSUFBWSxFQUNPO0lBQ25CLE1BQU0sV0FBVyxNQUFNLE1BQU0sQ0FBQyxvQ0FBb0MsQ0FBQyxFQUFFO01BQ25FLFFBQVE7TUFDUixNQUFNLEtBQUssU0FBUyxDQUFDO1FBQUUsTUFBTTtVQUFFLE1BQU0sSUFBSSxDQUFDLFVBQVUsSUFBSTtRQUFLO01BQUU7TUFDL0QsU0FBUztRQUFFLGdCQUFnQjtNQUFtQjtJQUNoRDtJQUNBLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRTtNQUNoQixNQUFNLElBQUksTUFDUjtJQUVKO0lBRUEsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxHQUFHLE1BQU0sU0FDM0QsSUFBSTtJQUVQLE9BQU87TUFDTCxRQUFRO01BQ1IsVUFBVSxtQkFBbUIsR0FBRyxDQUM5QixDQUFDLFVBQ0MsUUFBUSxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxLQUM5RCxPQUFPO0lBQ1g7RUFDRjtFQUVBLGlCQUFpQixJQUFZLEVBQVU7SUFDckMsT0FBTyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJO0VBQ3hFO0VBRUEsZUFBZSxJQUFZLEVBQUUsT0FBZSxFQUFVO0lBQ3BELE9BQU8sSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQ3RFLElBQUk7RUFDVDtBQUNGIn0= +// denoCacheMetadata=14023167665678013032,16272080554233527
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/f934b190b693fc774b58f2eb8cfd39ef420d11cd108028b71a788a4f975c05a4.js b/vendor/gen/https/deno.land/f934b190b693fc774b58f2eb8cfd39ef420d11cd108028b71a788a4f975c05a4.js new file mode 100644 index 0000000..511c729 --- /dev/null +++ b/vendor/gen/https/deno.land/f934b190b693fc774b58f2eb8cfd39ef420d11cd108028b71a788a4f975c05a4.js @@ -0,0 +1,9 @@ +import { number } from "../../flags/types/number.ts"; +import { Type } from "../type.ts"; +/** Number type. */ export class NumberType extends Type { + /** Parse number type. */ parse(type) { + return number(type); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvY2xpZmZ5QHYwLjI1LjcvY29tbWFuZC90eXBlcy9udW1iZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbnVtYmVyIH0gZnJvbSBcIi4uLy4uL2ZsYWdzL3R5cGVzL251bWJlci50c1wiO1xuaW1wb3J0IHsgVHlwZSB9IGZyb20gXCIuLi90eXBlLnRzXCI7XG5pbXBvcnQgdHlwZSB7IEFyZ3VtZW50VmFsdWUgfSBmcm9tIFwiLi4vdHlwZXMudHNcIjtcblxuLyoqIE51bWJlciB0eXBlLiAqL1xuZXhwb3J0IGNsYXNzIE51bWJlclR5cGUgZXh0ZW5kcyBUeXBlPG51bWJlcj4ge1xuICAvKiogUGFyc2UgbnVtYmVyIHR5cGUuICovXG4gIHB1YmxpYyBwYXJzZSh0eXBlOiBBcmd1bWVudFZhbHVlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gbnVtYmVyKHR5cGUpO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxNQUFNLFFBQVEsOEJBQThCO0FBQ3JELFNBQVMsSUFBSSxRQUFRLGFBQWE7QUFHbEMsaUJBQWlCLEdBQ2pCLE9BQU8sTUFBTSxtQkFBbUI7RUFDOUIsdUJBQXVCLEdBQ3ZCLEFBQU8sTUFBTSxJQUFtQixFQUFVO0lBQ3hDLE9BQU8sT0FBTztFQUNoQjtBQUNGIn0= +// denoCacheMetadata=17418560466108694433,17056633641924312807
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/fc05666a60f1512f32e3b7e8552b2385add292079bd266bc201dbf7f087411cb.js b/vendor/gen/https/deno.land/fc05666a60f1512f32e3b7e8552b2385add292079bd266bc201dbf7f087411cb.js new file mode 100644 index 0000000..042974d --- /dev/null +++ b/vendor/gen/https/deno.land/fc05666a60f1512f32e3b7e8552b2385add292079bd266bc201dbf7f087411cb.js @@ -0,0 +1,3 @@ +export * from "jsr:@std/crypto@1.0.5"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvZGVwcy9jcnlwdG8udHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcImpzcjpAc3RkL2NyeXB0b0AxLjAuNVwiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCIn0= +// denoCacheMetadata=5202012748752243782,18071772491568230034
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/fdaf1203a8e5af8f885066836e1b4da9dedd6ff81f3dabb347d119a209ebc6a3.js b/vendor/gen/https/deno.land/fdaf1203a8e5af8f885066836e1b4da9dedd6ff81f3dabb347d119a209ebc6a3.js new file mode 100644 index 0000000..11aa023 --- /dev/null +++ b/vendor/gen/https/deno.land/fdaf1203a8e5af8f885066836e1b4da9dedd6ff81f3dabb347d119a209ebc6a3.js @@ -0,0 +1,23 @@ +import { path } from "../deps.ts"; +export class FileLoader { + #root; + constructor(root = Deno.cwd()){ + this.#root = root; + } + async load(file) { + return { + source: await Deno.readTextFile(file) + }; + } + resolve(from, file) { + if (file.startsWith(".")) { + return path.join(path.dirname(from), file); + } + if (file.startsWith(this.#root)) { + return file; + } + return path.join(this.#root, file); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvdmVudG9AdjEuMTMuMC9zcmMvbG9hZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhdGggfSBmcm9tIFwiLi4vZGVwcy50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlU291cmNlIHtcbiAgc291cmNlOiBzdHJpbmc7XG4gIGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2FkZXIge1xuICBsb2FkKGZpbGU6IHN0cmluZyk6IFRlbXBsYXRlU291cmNlIHwgUHJvbWlzZTxUZW1wbGF0ZVNvdXJjZT47XG4gIHJlc29sdmUoZnJvbTogc3RyaW5nLCBmaWxlOiBzdHJpbmcpOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBGaWxlTG9hZGVyIGltcGxlbWVudHMgTG9hZGVyIHtcbiAgI3Jvb3Q6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihyb290ID0gRGVuby5jd2QoKSkge1xuICAgIHRoaXMuI3Jvb3QgPSByb290O1xuICB9XG5cbiAgYXN5bmMgbG9hZChmaWxlOiBzdHJpbmcpOiBQcm9taXNlPFRlbXBsYXRlU291cmNlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNvdXJjZTogYXdhaXQgRGVuby5yZWFkVGV4dEZpbGUoZmlsZSksXG4gICAgfTtcbiAgfVxuXG4gIHJlc29sdmUoZnJvbTogc3RyaW5nLCBmaWxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChmaWxlLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgICByZXR1cm4gcGF0aC5qb2luKHBhdGguZGlybmFtZShmcm9tKSwgZmlsZSk7XG4gICAgfVxuXG4gICAgaWYgKGZpbGUuc3RhcnRzV2l0aCh0aGlzLiNyb290KSkge1xuICAgICAgcmV0dXJuIGZpbGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhdGguam9pbih0aGlzLiNyb290LCBmaWxlKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVMsSUFBSSxRQUFRLGFBQWE7QUFZbEMsT0FBTyxNQUFNO0VBQ1gsQ0FBQSxJQUFLLENBQVM7RUFFZCxZQUFZLE9BQU8sS0FBSyxHQUFHLEVBQUUsQ0FBRTtJQUM3QixJQUFJLENBQUMsQ0FBQSxJQUFLLEdBQUc7RUFDZjtFQUVBLE1BQU0sS0FBSyxJQUFZLEVBQTJCO0lBQ2hELE9BQU87TUFDTCxRQUFRLE1BQU0sS0FBSyxZQUFZLENBQUM7SUFDbEM7RUFDRjtFQUVBLFFBQVEsSUFBWSxFQUFFLElBQVksRUFBVTtJQUMxQyxJQUFJLEtBQUssVUFBVSxDQUFDLE1BQU07TUFDeEIsT0FBTyxLQUFLLElBQUksQ0FBQyxLQUFLLE9BQU8sQ0FBQyxPQUFPO0lBQ3ZDO0lBRUEsSUFBSSxLQUFLLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQSxJQUFLLEdBQUc7TUFDL0IsT0FBTztJQUNUO0lBRUEsT0FBTyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxJQUFLLEVBQUU7RUFDL0I7QUFDRiJ9 +// denoCacheMetadata=13559671411018262912,4342862516494239873
\ No newline at end of file diff --git a/vendor/gen/https/deno.land/fe21d44375cf065a9abcbcf926f7f4583ceb12e84f57f12b6d2149919d79d05b.js b/vendor/gen/https/deno.land/fe21d44375cf065a9abcbcf926f7f4583ceb12e84f57f12b6d2149919d79d05b.js new file mode 100644 index 0000000..026d3ff --- /dev/null +++ b/vendor/gen/https/deno.land/fe21d44375cf065a9abcbcf926f7f4583ceb12e84f57f12b6d2149919d79d05b.js @@ -0,0 +1,54 @@ +// deno-lint-ignore-file no-explicit-any +class S { + #length = 0; + #type; + constructor(type){ + this.#type = type; + } + get length() { + return this.#length; + } + clear() { + this.#length = 0; + Object.keys(this).forEach((key)=>{ + delete this[key]; + }); + this.#sync("clear"); + } + getItem(key) { + return this[key] ?? null; + } + key(index) { + return Object.keys(this)[index] ?? null; + } + removeItem(key) { + delete this[key]; + this.#length--; + this.#sync("removeItem", key); + } + setItem(key, value) { + this[key] = value; + this.#length++; + this.#sync("setItem", key, value); + } + #sync(method, ...args) { + if (this.#type) { + globalThis.postMessage({ + type: this.#type, + method, + args + }); + } + } +} +// sessionStorage is always empty +globalThis.sessionStorage = new S(); +export function initLocalStorage(data) { + const storage = new S("localStorage"); + for (const [key, value] of Object.entries(data)){ + storage.setItem(key, value); + } + globalThis.localStorage = storage; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvbHVtZUB2My4wLjIvY2xpL21pc3Npbmdfd29ya2VyX2FwaXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZGVuby1saW50LWlnbm9yZS1maWxlIG5vLWV4cGxpY2l0LWFueVxuXG5jbGFzcyBTIGltcGxlbWVudHMgU3RvcmFnZSB7XG4gICNsZW5ndGg6IG51bWJlciA9IDA7XG4gICN0eXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG5cbiAgY29uc3RydWN0b3IodHlwZT86IHN0cmluZykge1xuICAgIHRoaXMuI3R5cGUgPSB0eXBlO1xuICB9XG5cbiAgZ2V0IGxlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy4jbGVuZ3RoO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy4jbGVuZ3RoID0gMDtcbiAgICBPYmplY3Qua2V5cyh0aGlzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGRlbGV0ZSB0aGlzW2tleV07XG4gICAgfSk7XG4gICAgdGhpcy4jc3luYyhcImNsZWFyXCIpO1xuICB9XG5cbiAgZ2V0SXRlbShrZXk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzW2tleV0gPz8gbnVsbDtcbiAgfVxuXG4gIGtleShpbmRleDogbnVtYmVyKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMpW2luZGV4XSA/PyBudWxsO1xuICB9XG5cbiAgcmVtb3ZlSXRlbShrZXk6IHN0cmluZykge1xuICAgIGRlbGV0ZSB0aGlzW2tleV07XG4gICAgdGhpcy4jbGVuZ3RoLS07XG4gICAgdGhpcy4jc3luYyhcInJlbW92ZUl0ZW1cIiwga2V5KTtcbiAgfVxuXG4gIHNldEl0ZW0oa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzW2tleV0gPSB2YWx1ZTtcbiAgICB0aGlzLiNsZW5ndGgrKztcbiAgICB0aGlzLiNzeW5jKFwic2V0SXRlbVwiLCBrZXksIHZhbHVlKTtcbiAgfVxuXG4gICNzeW5jKG1ldGhvZDogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICBpZiAodGhpcy4jdHlwZSkge1xuICAgICAgZ2xvYmFsVGhpcy5wb3N0TWVzc2FnZSh7XG4gICAgICAgIHR5cGU6IHRoaXMuI3R5cGUsXG4gICAgICAgIG1ldGhvZCxcbiAgICAgICAgYXJncyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vLyBzZXNzaW9uU3RvcmFnZSBpcyBhbHdheXMgZW1wdHlcbmdsb2JhbFRoaXMuc2Vzc2lvblN0b3JhZ2UgPSBuZXcgUygpO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5pdExvY2FsU3RvcmFnZShkYXRhOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XG4gIGNvbnN0IHN0b3JhZ2UgPSBuZXcgUyhcImxvY2FsU3RvcmFnZVwiKTtcblxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhkYXRhKSkge1xuICAgIHN0b3JhZ2Uuc2V0SXRlbShrZXksIHZhbHVlKTtcbiAgfVxuXG4gIGdsb2JhbFRoaXMubG9jYWxTdG9yYWdlID0gc3RvcmFnZTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3Q0FBd0M7QUFFeEMsTUFBTTtFQUNKLENBQUEsTUFBTyxHQUFXLEVBQUU7RUFDcEIsQ0FBQSxJQUFLLENBQXNCO0VBRzNCLFlBQVksSUFBYSxDQUFFO0lBQ3pCLElBQUksQ0FBQyxDQUFBLElBQUssR0FBRztFQUNmO0VBRUEsSUFBSSxTQUFTO0lBQ1gsT0FBTyxJQUFJLENBQUMsQ0FBQSxNQUFPO0VBQ3JCO0VBRUEsUUFBUTtJQUNOLElBQUksQ0FBQyxDQUFBLE1BQU8sR0FBRztJQUNmLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztNQUN6QixPQUFPLElBQUksQ0FBQyxJQUFJO0lBQ2xCO0lBQ0EsSUFBSSxDQUFDLENBQUEsSUFBSyxDQUFDO0VBQ2I7RUFFQSxRQUFRLEdBQVcsRUFBaUI7SUFDbEMsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJO0VBQ3RCO0VBRUEsSUFBSSxLQUFhLEVBQWlCO0lBQ2hDLE9BQU8sT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJO0VBQ3JDO0VBRUEsV0FBVyxHQUFXLEVBQUU7SUFDdEIsT0FBTyxJQUFJLENBQUMsSUFBSTtJQUNoQixJQUFJLENBQUMsQ0FBQSxNQUFPO0lBQ1osSUFBSSxDQUFDLENBQUEsSUFBSyxDQUFDLGNBQWM7RUFDM0I7RUFFQSxRQUFRLEdBQVcsRUFBRSxLQUFVLEVBQUU7SUFDL0IsSUFBSSxDQUFDLElBQUksR0FBRztJQUNaLElBQUksQ0FBQyxDQUFBLE1BQU87SUFDWixJQUFJLENBQUMsQ0FBQSxJQUFLLENBQUMsV0FBVyxLQUFLO0VBQzdCO0VBRUEsQ0FBQSxJQUFLLENBQUMsTUFBYyxFQUFFLEdBQUcsSUFBZTtJQUN0QyxJQUFJLElBQUksQ0FBQyxDQUFBLElBQUssRUFBRTtNQUNkLFdBQVcsV0FBVyxDQUFDO1FBQ3JCLE1BQU0sSUFBSSxDQUFDLENBQUEsSUFBSztRQUNoQjtRQUNBO01BQ0Y7SUFDRjtFQUNGO0FBQ0Y7QUFFQSxpQ0FBaUM7QUFDakMsV0FBVyxjQUFjLEdBQUcsSUFBSTtBQUVoQyxPQUFPLFNBQVMsaUJBQWlCLElBQTRCO0VBQzNELE1BQU0sVUFBVSxJQUFJLEVBQUU7RUFFdEIsS0FBSyxNQUFNLENBQUMsS0FBSyxNQUFNLElBQUksT0FBTyxPQUFPLENBQUMsTUFBTztJQUMvQyxRQUFRLE9BQU8sQ0FBQyxLQUFLO0VBQ3ZCO0VBRUEsV0FBVyxZQUFZLEdBQUc7QUFDNUIifQ== +// denoCacheMetadata=671101722071726688,16024146587975248583
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/0048572f7e9d90059453f4d0e932f038e6b729b85f2790af70a5744efde0a290.js b/vendor/gen/https/jsr.io/0048572f7e9d90059453f4d0e932f038e6b729b85f2790af70a5744efde0a290.js new file mode 100644 index 0000000..1b97b71 --- /dev/null +++ b/vendor/gen/https/jsr.io/0048572f7e9d90059453f4d0e932f038e6b729b85f2790af70a5744efde0a290.js @@ -0,0 +1,117 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { CHAR_BACKWARD_SLASH } from "../_common/constants.ts"; +import { resolve } from "./resolve.ts"; +import { assertArgs } from "../_common/relative.ts"; +/** + * Return the relative path from `from` to `to` based on current working directory. + * + * An example in windws, for instance: + * from = 'C:\\orandea\\test\\aaa' + * to = 'C:\\orandea\\impl\\bbb' + * The output of the function should be: '..\\..\\impl\\bbb' + * + * @example Usage + * ```ts + * import { relative } from "@std/path/windows/relative"; + * import { assertEquals } from "@std/assert"; + * + * const relativePath = relative("C:\\foobar\\test\\aaa", "C:\\foobar\\impl\\bbb"); + * assertEquals(relativePath, "..\\..\\impl\\bbb"); + * ``` + * + * @param from The path from which to calculate the relative path + * @param to The path to which to calculate the relative path + * @returns The relative path from `from` to `to` + */ export function relative(from, to) { + assertArgs(from, to); + const fromOrig = resolve(from); + const toOrig = resolve(to); + if (fromOrig === toOrig) return ""; + from = fromOrig.toLowerCase(); + to = toOrig.toLowerCase(); + if (from === to) return ""; + // Trim any leading backslashes + let fromStart = 0; + let fromEnd = from.length; + for(; fromStart < fromEnd; ++fromStart){ + if (from.charCodeAt(fromStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for(; fromEnd - 1 > fromStart; --fromEnd){ + if (from.charCodeAt(fromEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const fromLen = fromEnd - fromStart; + // Trim any leading backslashes + let toStart = 0; + let toEnd = to.length; + for(; toStart < toEnd; ++toStart){ + if (to.charCodeAt(toStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for(; toEnd - 1 > toStart; --toEnd){ + if (to.charCodeAt(toEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const toLen = toEnd - toStart; + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for(; i <= length; ++i){ + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='C:\\foo\\bar'; to='C:\\foo\\bar\\baz' + return toOrig.slice(toStart + i + 1); + } else if (i === 2) { + // We get here if `from` is the device root. + // For example: from='C:\\'; to='C:\\foo' + return toOrig.slice(toStart + i); + } + } + if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='C:\\foo\\bar'; to='C:\\foo' + lastCommonSep = i; + } else if (i === 2) { + // We get here if `to` is the device root. + // For example: from='C:\\foo\\bar'; to='C:\\' + lastCommonSep = 3; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === CHAR_BACKWARD_SLASH) lastCommonSep = i; + } + // We found a mismatch before the first common path separator was seen, so + // return the original `to`. + if (i !== length && lastCommonSep === -1) { + return toOrig; + } + let out = ""; + if (lastCommonSep === -1) lastCommonSep = 0; + // Generate the relative path based on the path difference between `to` and + // `from` + for(i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i){ + if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) { + if (out.length === 0) out += ".."; + else out += "\\.."; + } + } + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) { + return out + toOrig.slice(toStart + lastCommonSep, toEnd); + } else { + toStart += lastCommonSep; + if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) ++toStart; + return toOrig.slice(toStart, toEnd); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS93aW5kb3dzL3JlbGF0aXZlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IENIQVJfQkFDS1dBUkRfU0xBU0ggfSBmcm9tIFwiLi4vX2NvbW1vbi9jb25zdGFudHMudHNcIjtcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tIFwiLi9yZXNvbHZlLnRzXCI7XG5pbXBvcnQgeyBhc3NlcnRBcmdzIH0gZnJvbSBcIi4uL19jb21tb24vcmVsYXRpdmUudHNcIjtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIHJlbGF0aXZlIHBhdGggZnJvbSBgZnJvbWAgdG8gYHRvYCBiYXNlZCBvbiBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LlxuICpcbiAqIEFuIGV4YW1wbGUgaW4gd2luZHdzLCBmb3IgaW5zdGFuY2U6XG4gKiAgZnJvbSA9ICdDOlxcXFxvcmFuZGVhXFxcXHRlc3RcXFxcYWFhJ1xuICogIHRvID0gJ0M6XFxcXG9yYW5kZWFcXFxcaW1wbFxcXFxiYmInXG4gKiBUaGUgb3V0cHV0IG9mIHRoZSBmdW5jdGlvbiBzaG91bGQgYmU6ICcuLlxcXFwuLlxcXFxpbXBsXFxcXGJiYidcbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHJlbGF0aXZlIH0gZnJvbSBcIkBzdGQvcGF0aC93aW5kb3dzL3JlbGF0aXZlXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCByZWxhdGl2ZVBhdGggPSByZWxhdGl2ZShcIkM6XFxcXGZvb2JhclxcXFx0ZXN0XFxcXGFhYVwiLCBcIkM6XFxcXGZvb2JhclxcXFxpbXBsXFxcXGJiYlwiKTtcbiAqIGFzc2VydEVxdWFscyhyZWxhdGl2ZVBhdGgsIFwiLi5cXFxcLi5cXFxcaW1wbFxcXFxiYmJcIik7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gZnJvbSBUaGUgcGF0aCBmcm9tIHdoaWNoIHRvIGNhbGN1bGF0ZSB0aGUgcmVsYXRpdmUgcGF0aFxuICogQHBhcmFtIHRvIFRoZSBwYXRoIHRvIHdoaWNoIHRvIGNhbGN1bGF0ZSB0aGUgcmVsYXRpdmUgcGF0aFxuICogQHJldHVybnMgVGhlIHJlbGF0aXZlIHBhdGggZnJvbSBgZnJvbWAgdG8gYHRvYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVsYXRpdmUoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKTogc3RyaW5nIHtcbiAgYXNzZXJ0QXJncyhmcm9tLCB0byk7XG5cbiAgY29uc3QgZnJvbU9yaWcgPSByZXNvbHZlKGZyb20pO1xuICBjb25zdCB0b09yaWcgPSByZXNvbHZlKHRvKTtcblxuICBpZiAoZnJvbU9yaWcgPT09IHRvT3JpZykgcmV0dXJuIFwiXCI7XG5cbiAgZnJvbSA9IGZyb21PcmlnLnRvTG93ZXJDYXNlKCk7XG4gIHRvID0gdG9PcmlnLnRvTG93ZXJDYXNlKCk7XG5cbiAgaWYgKGZyb20gPT09IHRvKSByZXR1cm4gXCJcIjtcblxuICAvLyBUcmltIGFueSBsZWFkaW5nIGJhY2tzbGFzaGVzXG4gIGxldCBmcm9tU3RhcnQgPSAwO1xuICBsZXQgZnJvbUVuZCA9IGZyb20ubGVuZ3RoO1xuICBmb3IgKDsgZnJvbVN0YXJ0IDwgZnJvbUVuZDsgKytmcm9tU3RhcnQpIHtcbiAgICBpZiAoZnJvbS5jaGFyQ29kZUF0KGZyb21TdGFydCkgIT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIGJyZWFrO1xuICB9XG4gIC8vIFRyaW0gdHJhaWxpbmcgYmFja3NsYXNoZXMgKGFwcGxpY2FibGUgdG8gVU5DIHBhdGhzIG9ubHkpXG4gIGZvciAoOyBmcm9tRW5kIC0gMSA+IGZyb21TdGFydDsgLS1mcm9tRW5kKSB7XG4gICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tRW5kIC0gMSkgIT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIGJyZWFrO1xuICB9XG4gIGNvbnN0IGZyb21MZW4gPSBmcm9tRW5kIC0gZnJvbVN0YXJ0O1xuXG4gIC8vIFRyaW0gYW55IGxlYWRpbmcgYmFja3NsYXNoZXNcbiAgbGV0IHRvU3RhcnQgPSAwO1xuICBsZXQgdG9FbmQgPSB0by5sZW5ndGg7XG4gIGZvciAoOyB0b1N0YXJ0IDwgdG9FbmQ7ICsrdG9TdGFydCkge1xuICAgIGlmICh0by5jaGFyQ29kZUF0KHRvU3RhcnQpICE9PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSBicmVhaztcbiAgfVxuICAvLyBUcmltIHRyYWlsaW5nIGJhY2tzbGFzaGVzIChhcHBsaWNhYmxlIHRvIFVOQyBwYXRocyBvbmx5KVxuICBmb3IgKDsgdG9FbmQgLSAxID4gdG9TdGFydDsgLS10b0VuZCkge1xuICAgIGlmICh0by5jaGFyQ29kZUF0KHRvRW5kIC0gMSkgIT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIGJyZWFrO1xuICB9XG4gIGNvbnN0IHRvTGVuID0gdG9FbmQgLSB0b1N0YXJ0O1xuXG4gIC8vIENvbXBhcmUgcGF0aHMgdG8gZmluZCB0aGUgbG9uZ2VzdCBjb21tb24gcGF0aCBmcm9tIHJvb3RcbiAgY29uc3QgbGVuZ3RoID0gZnJvbUxlbiA8IHRvTGVuID8gZnJvbUxlbiA6IHRvTGVuO1xuICBsZXQgbGFzdENvbW1vblNlcCA9IC0xO1xuICBsZXQgaSA9IDA7XG4gIGZvciAoOyBpIDw9IGxlbmd0aDsgKytpKSB7XG4gICAgaWYgKGkgPT09IGxlbmd0aCkge1xuICAgICAgaWYgKHRvTGVuID4gbGVuZ3RoKSB7XG4gICAgICAgIGlmICh0by5jaGFyQ29kZUF0KHRvU3RhcnQgKyBpKSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkge1xuICAgICAgICAgIC8vIFdlIGdldCBoZXJlIGlmIGBmcm9tYCBpcyB0aGUgZXhhY3QgYmFzZSBwYXRoIGZvciBgdG9gLlxuICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPSdDOlxcXFxmb29cXFxcYmFyJzsgdG89J0M6XFxcXGZvb1xcXFxiYXJcXFxcYmF6J1xuICAgICAgICAgIHJldHVybiB0b09yaWcuc2xpY2UodG9TdGFydCArIGkgKyAxKTtcbiAgICAgICAgfSBlbHNlIGlmIChpID09PSAyKSB7XG4gICAgICAgICAgLy8gV2UgZ2V0IGhlcmUgaWYgYGZyb21gIGlzIHRoZSBkZXZpY2Ugcm9vdC5cbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nQzpcXFxcJzsgdG89J0M6XFxcXGZvbydcbiAgICAgICAgICByZXR1cm4gdG9PcmlnLnNsaWNlKHRvU3RhcnQgKyBpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGZyb21MZW4gPiBsZW5ndGgpIHtcbiAgICAgICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQgKyBpKSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkge1xuICAgICAgICAgIC8vIFdlIGdldCBoZXJlIGlmIGB0b2AgaXMgdGhlIGV4YWN0IGJhc2UgcGF0aCBmb3IgYGZyb21gLlxuICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPSdDOlxcXFxmb29cXFxcYmFyJzsgdG89J0M6XFxcXGZvbydcbiAgICAgICAgICBsYXN0Q29tbW9uU2VwID0gaTtcbiAgICAgICAgfSBlbHNlIGlmIChpID09PSAyKSB7XG4gICAgICAgICAgLy8gV2UgZ2V0IGhlcmUgaWYgYHRvYCBpcyB0aGUgZGV2aWNlIHJvb3QuXG4gICAgICAgICAgLy8gRm9yIGV4YW1wbGU6IGZyb209J0M6XFxcXGZvb1xcXFxiYXInOyB0bz0nQzpcXFxcJ1xuICAgICAgICAgIGxhc3RDb21tb25TZXAgPSAzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY29uc3QgZnJvbUNvZGUgPSBmcm9tLmNoYXJDb2RlQXQoZnJvbVN0YXJ0ICsgaSk7XG4gICAgY29uc3QgdG9Db2RlID0gdG8uY2hhckNvZGVBdCh0b1N0YXJ0ICsgaSk7XG4gICAgaWYgKGZyb21Db2RlICE9PSB0b0NvZGUpIGJyZWFrO1xuICAgIGVsc2UgaWYgKGZyb21Db2RlID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSBsYXN0Q29tbW9uU2VwID0gaTtcbiAgfVxuXG4gIC8vIFdlIGZvdW5kIGEgbWlzbWF0Y2ggYmVmb3JlIHRoZSBmaXJzdCBjb21tb24gcGF0aCBzZXBhcmF0b3Igd2FzIHNlZW4sIHNvXG4gIC8vIHJldHVybiB0aGUgb3JpZ2luYWwgYHRvYC5cbiAgaWYgKGkgIT09IGxlbmd0aCAmJiBsYXN0Q29tbW9uU2VwID09PSAtMSkge1xuICAgIHJldHVybiB0b09yaWc7XG4gIH1cblxuICBsZXQgb3V0ID0gXCJcIjtcbiAgaWYgKGxhc3RDb21tb25TZXAgPT09IC0xKSBsYXN0Q29tbW9uU2VwID0gMDtcbiAgLy8gR2VuZXJhdGUgdGhlIHJlbGF0aXZlIHBhdGggYmFzZWQgb24gdGhlIHBhdGggZGlmZmVyZW5jZSBiZXR3ZWVuIGB0b2AgYW5kXG4gIC8vIGBmcm9tYFxuICBmb3IgKGkgPSBmcm9tU3RhcnQgKyBsYXN0Q29tbW9uU2VwICsgMTsgaSA8PSBmcm9tRW5kOyArK2kpIHtcbiAgICBpZiAoaSA9PT0gZnJvbUVuZCB8fCBmcm9tLmNoYXJDb2RlQXQoaSkgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHtcbiAgICAgIGlmIChvdXQubGVuZ3RoID09PSAwKSBvdXQgKz0gXCIuLlwiO1xuICAgICAgZWxzZSBvdXQgKz0gXCJcXFxcLi5cIjtcbiAgICB9XG4gIH1cblxuICAvLyBMYXN0bHksIGFwcGVuZCB0aGUgcmVzdCBvZiB0aGUgZGVzdGluYXRpb24gKGB0b2ApIHBhdGggdGhhdCBjb21lcyBhZnRlclxuICAvLyB0aGUgY29tbW9uIHBhdGggcGFydHNcbiAgaWYgKG91dC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIG91dCArIHRvT3JpZy5zbGljZSh0b1N0YXJ0ICsgbGFzdENvbW1vblNlcCwgdG9FbmQpO1xuICB9IGVsc2Uge1xuICAgIHRvU3RhcnQgKz0gbGFzdENvbW1vblNlcDtcbiAgICBpZiAodG9PcmlnLmNoYXJDb2RlQXQodG9TdGFydCkgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpICsrdG9TdGFydDtcbiAgICByZXR1cm4gdG9PcmlnLnNsaWNlKHRvU3RhcnQsIHRvRW5kKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckMsU0FBUyxtQkFBbUIsUUFBUSwwQkFBMEI7QUFDOUQsU0FBUyxPQUFPLFFBQVEsZUFBZTtBQUN2QyxTQUFTLFVBQVUsUUFBUSx5QkFBeUI7QUFFcEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBb0JDLEdBQ0QsT0FBTyxTQUFTLFNBQVMsSUFBWSxFQUFFLEVBQVU7RUFDL0MsV0FBVyxNQUFNO0VBRWpCLE1BQU0sV0FBVyxRQUFRO0VBQ3pCLE1BQU0sU0FBUyxRQUFRO0VBRXZCLElBQUksYUFBYSxRQUFRLE9BQU87RUFFaEMsT0FBTyxTQUFTLFdBQVc7RUFDM0IsS0FBSyxPQUFPLFdBQVc7RUFFdkIsSUFBSSxTQUFTLElBQUksT0FBTztFQUV4QiwrQkFBK0I7RUFDL0IsSUFBSSxZQUFZO0VBQ2hCLElBQUksVUFBVSxLQUFLLE1BQU07RUFDekIsTUFBTyxZQUFZLFNBQVMsRUFBRSxVQUFXO0lBQ3ZDLElBQUksS0FBSyxVQUFVLENBQUMsZUFBZSxxQkFBcUI7RUFDMUQ7RUFDQSwyREFBMkQ7RUFDM0QsTUFBTyxVQUFVLElBQUksV0FBVyxFQUFFLFFBQVM7SUFDekMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxVQUFVLE9BQU8scUJBQXFCO0VBQzVEO0VBQ0EsTUFBTSxVQUFVLFVBQVU7RUFFMUIsK0JBQStCO0VBQy9CLElBQUksVUFBVTtFQUNkLElBQUksUUFBUSxHQUFHLE1BQU07RUFDckIsTUFBTyxVQUFVLE9BQU8sRUFBRSxRQUFTO0lBQ2pDLElBQUksR0FBRyxVQUFVLENBQUMsYUFBYSxxQkFBcUI7RUFDdEQ7RUFDQSwyREFBMkQ7RUFDM0QsTUFBTyxRQUFRLElBQUksU0FBUyxFQUFFLE1BQU87SUFDbkMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLE9BQU8scUJBQXFCO0VBQ3hEO0VBQ0EsTUFBTSxRQUFRLFFBQVE7RUFFdEIsMERBQTBEO0VBQzFELE1BQU0sU0FBUyxVQUFVLFFBQVEsVUFBVTtFQUMzQyxJQUFJLGdCQUFnQixDQUFDO0VBQ3JCLElBQUksSUFBSTtFQUNSLE1BQU8sS0FBSyxRQUFRLEVBQUUsRUFBRztJQUN2QixJQUFJLE1BQU0sUUFBUTtNQUNoQixJQUFJLFFBQVEsUUFBUTtRQUNsQixJQUFJLEdBQUcsVUFBVSxDQUFDLFVBQVUsT0FBTyxxQkFBcUI7VUFDdEQseURBQXlEO1VBQ3pELDJEQUEyRDtVQUMzRCxPQUFPLE9BQU8sS0FBSyxDQUFDLFVBQVUsSUFBSTtRQUNwQyxPQUFPLElBQUksTUFBTSxHQUFHO1VBQ2xCLDRDQUE0QztVQUM1Qyx5Q0FBeUM7VUFDekMsT0FBTyxPQUFPLEtBQUssQ0FBQyxVQUFVO1FBQ2hDO01BQ0Y7TUFDQSxJQUFJLFVBQVUsUUFBUTtRQUNwQixJQUFJLEtBQUssVUFBVSxDQUFDLFlBQVksT0FBTyxxQkFBcUI7VUFDMUQseURBQXlEO1VBQ3pELGlEQUFpRDtVQUNqRCxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLE1BQU0sR0FBRztVQUNsQiwwQ0FBMEM7VUFDMUMsOENBQThDO1VBQzlDLGdCQUFnQjtRQUNsQjtNQUNGO01BQ0E7SUFDRjtJQUNBLE1BQU0sV0FBVyxLQUFLLFVBQVUsQ0FBQyxZQUFZO0lBQzdDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxVQUFVO0lBQ3ZDLElBQUksYUFBYSxRQUFRO1NBQ3BCLElBQUksYUFBYSxxQkFBcUIsZ0JBQWdCO0VBQzdEO0VBRUEsMEVBQTBFO0VBQzFFLDRCQUE0QjtFQUM1QixJQUFJLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxHQUFHO0lBQ3hDLE9BQU87RUFDVDtFQUVBLElBQUksTUFBTTtFQUNWLElBQUksa0JBQWtCLENBQUMsR0FBRyxnQkFBZ0I7RUFDMUMsMkVBQTJFO0VBQzNFLFNBQVM7RUFDVCxJQUFLLElBQUksWUFBWSxnQkFBZ0IsR0FBRyxLQUFLLFNBQVMsRUFBRSxFQUFHO0lBQ3pELElBQUksTUFBTSxXQUFXLEtBQUssVUFBVSxDQUFDLE9BQU8scUJBQXFCO01BQy9ELElBQUksSUFBSSxNQUFNLEtBQUssR0FBRyxPQUFPO1dBQ3hCLE9BQU87SUFDZDtFQUNGO0VBRUEsMEVBQTBFO0VBQzFFLHdCQUF3QjtFQUN4QixJQUFJLElBQUksTUFBTSxHQUFHLEdBQUc7SUFDbEIsT0FBTyxNQUFNLE9BQU8sS0FBSyxDQUFDLFVBQVUsZUFBZTtFQUNyRCxPQUFPO0lBQ0wsV0FBVztJQUNYLElBQUksT0FBTyxVQUFVLENBQUMsYUFBYSxxQkFBcUIsRUFBRTtJQUMxRCxPQUFPLE9BQU8sS0FBSyxDQUFDLFNBQVM7RUFDL0I7QUFDRiJ9 +// denoCacheMetadata=5543987685683672443,18039060282610121701
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/015c88c241d68e20fcbdb0dd94cb199af1fa83ad2cbe5064cb25e36dcdf406e5.js b/vendor/gen/https/jsr.io/015c88c241d68e20fcbdb0dd94cb199af1fa83ad2cbe5064cb25e36dcdf406e5.js new file mode 100644 index 0000000..88e262e --- /dev/null +++ b/vendor/gen/https/jsr.io/015c88c241d68e20fcbdb0dd94cb199af1fa83ad2cbe5064cb25e36dcdf406e5.js @@ -0,0 +1,30 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { extname as posixExtname } from "./posix/extname.ts"; +import { extname as windowsExtname } from "./windows/extname.ts"; +/** + * Return the extension of the path with leading period ("."). + * + * @example Usage + * ```ts + * import { extname } from "@std/path/extname"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(extname("C:\\home\\user\\Documents\\image.png"), ".png"); + * } else { + * assertEquals(extname("/home/user/Documents/image.png"), ".png"); + * } + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `extname` from `@std/path/unstable-extname`. + * + * @param path Path with extension. + * @returns The file extension. E.g. returns `.ts` for `file.ts`. + */ export function extname(path) { + return isWindows ? windowsExtname(path) : posixExtname(path); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9leHRuYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGlzV2luZG93cyB9IGZyb20gXCIuL19vcy50c1wiO1xuaW1wb3J0IHsgZXh0bmFtZSBhcyBwb3NpeEV4dG5hbWUgfSBmcm9tIFwiLi9wb3NpeC9leHRuYW1lLnRzXCI7XG5pbXBvcnQgeyBleHRuYW1lIGFzIHdpbmRvd3NFeHRuYW1lIH0gZnJvbSBcIi4vd2luZG93cy9leHRuYW1lLnRzXCI7XG4vKipcbiAqIFJldHVybiB0aGUgZXh0ZW5zaW9uIG9mIHRoZSBwYXRoIHdpdGggbGVhZGluZyBwZXJpb2QgKFwiLlwiKS5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGV4dG5hbWUgfSBmcm9tIFwiQHN0ZC9wYXRoL2V4dG5hbWVcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGlmIChEZW5vLmJ1aWxkLm9zID09PSBcIndpbmRvd3NcIikge1xuICogICBhc3NlcnRFcXVhbHMoZXh0bmFtZShcIkM6XFxcXGhvbWVcXFxcdXNlclxcXFxEb2N1bWVudHNcXFxcaW1hZ2UucG5nXCIpLCBcIi5wbmdcIik7XG4gKiB9IGVsc2Uge1xuICogICBhc3NlcnRFcXVhbHMoZXh0bmFtZShcIi9ob21lL3VzZXIvRG9jdW1lbnRzL2ltYWdlLnBuZ1wiKSwgXCIucG5nXCIpO1xuICogfVxuICogYGBgXG4gKlxuICogTm90ZTogSWYgeW91IGFyZSB3b3JraW5nIHdpdGggZmlsZSBVUkxzLFxuICogdXNlIHRoZSBuZXcgdmVyc2lvbiBvZiBgZXh0bmFtZWAgZnJvbSBgQHN0ZC9wYXRoL3Vuc3RhYmxlLWV4dG5hbWVgLlxuICpcbiAqIEBwYXJhbSBwYXRoIFBhdGggd2l0aCBleHRlbnNpb24uXG4gKiBAcmV0dXJucyBUaGUgZmlsZSBleHRlbnNpb24uIEUuZy4gcmV0dXJucyBgLnRzYCBmb3IgYGZpbGUudHNgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0bmFtZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gaXNXaW5kb3dzID8gd2luZG93c0V4dG5hbWUocGF0aCkgOiBwb3NpeEV4dG5hbWUocGF0aCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQyxTQUFTLFNBQVMsUUFBUSxXQUFXO0FBQ3JDLFNBQVMsV0FBVyxZQUFZLFFBQVEscUJBQXFCO0FBQzdELFNBQVMsV0FBVyxjQUFjLFFBQVEsdUJBQXVCO0FBQ2pFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW9CQyxHQUNELE9BQU8sU0FBUyxRQUFRLElBQVk7RUFDbEMsT0FBTyxZQUFZLGVBQWUsUUFBUSxhQUFhO0FBQ3pEIn0= +// denoCacheMetadata=7911667330114746305,16002204069946144952
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/016dfa2b631fd2ff95f5f0da03575c1a3e85c532e60ac5a50208fb4ab606b893.js b/vendor/gen/https/jsr.io/016dfa2b631fd2ff95f5f0da03575c1a3e85c532e60ac5a50208fb4ab606b893.js new file mode 100644 index 0000000..d4e099d --- /dev/null +++ b/vendor/gen/https/jsr.io/016dfa2b631fd2ff95f5f0da03575c1a3e85c532e60ac5a50208fb4ab606b893.js @@ -0,0 +1,71 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * A transform stream that only transforms from the zero-indexed `start` and + * `end` bytes (both inclusive). + * + * @example Basic usage + * ```ts + * import { ByteSliceStream } from "@std/streams/byte-slice-stream"; + * import { assertEquals } from "@std/assert"; + * + * const stream = ReadableStream.from([ + * new Uint8Array([0, 1]), + * new Uint8Array([2, 3, 4]), + * ]); + * const slicedStream = stream.pipeThrough(new ByteSliceStream(1, 3)); + * + * assertEquals( + * await Array.fromAsync(slicedStream), + * [new Uint8Array([1]), new Uint8Array([2, 3])] + * ); + * ``` + * + * @example Get a range of bytes from a fetch response body + * ```ts + * import { ByteSliceStream } from "@std/streams/byte-slice-stream"; + * import { assertEquals } from "@std/assert"; + * + * const response = await fetch("https://example.com"); + * const rangedStream = response.body! + * .pipeThrough(new ByteSliceStream(3, 8)); + * const collected = await Array.fromAsync(rangedStream); + * assertEquals(collected[0]?.length, 6); + * ``` + */ export class ByteSliceStream extends TransformStream { + #offsetStart = 0; + #offsetEnd = 0; + /** + * Constructs a new instance. + * + * @param start The zero-indexed byte index to start reading from. + * @param end The zero-indexed byte index to stop reading at. Inclusive. + */ constructor(start = 0, end = Infinity){ + super({ + start: ()=>{ + if (start < 0) { + throw new RangeError(`Cannot construct ByteSliceStream as start must be >= 0: received ${start}`); + } + end += 1; + }, + transform: (chunk, controller)=>{ + this.#offsetStart = this.#offsetEnd; + this.#offsetEnd += chunk.byteLength; + if (this.#offsetEnd > start) { + if (this.#offsetStart < start) { + chunk = chunk.slice(start - this.#offsetStart); + } + if (this.#offsetEnd >= end) { + chunk = chunk.slice(0, chunk.byteLength - this.#offsetEnd + end); + controller.enqueue(chunk); + controller.terminate(); + } else { + controller.enqueue(chunk); + } + } + } + }); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvc3RyZWFtcy8xLjAuOS9ieXRlX3NsaWNlX3N0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vKipcbiAqIEEgdHJhbnNmb3JtIHN0cmVhbSB0aGF0IG9ubHkgdHJhbnNmb3JtcyBmcm9tIHRoZSB6ZXJvLWluZGV4ZWQgYHN0YXJ0YCBhbmRcbiAqIGBlbmRgIGJ5dGVzIChib3RoIGluY2x1c2l2ZSkuXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBCeXRlU2xpY2VTdHJlYW0gfSBmcm9tIFwiQHN0ZC9zdHJlYW1zL2J5dGUtc2xpY2Utc3RyZWFtXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBzdHJlYW0gPSBSZWFkYWJsZVN0cmVhbS5mcm9tKFtcbiAqICAgbmV3IFVpbnQ4QXJyYXkoWzAsIDFdKSxcbiAqICAgbmV3IFVpbnQ4QXJyYXkoWzIsIDMsIDRdKSxcbiAqIF0pO1xuICogY29uc3Qgc2xpY2VkU3RyZWFtID0gc3RyZWFtLnBpcGVUaHJvdWdoKG5ldyBCeXRlU2xpY2VTdHJlYW0oMSwgMykpO1xuICpcbiAqIGFzc2VydEVxdWFscyhcbiAqICAgYXdhaXQgQXJyYXkuZnJvbUFzeW5jKHNsaWNlZFN0cmVhbSksXG4gKiAgW25ldyBVaW50OEFycmF5KFsxXSksIG5ldyBVaW50OEFycmF5KFsyLCAzXSldXG4gKiApO1xuICogYGBgXG4gKlxuICogQGV4YW1wbGUgR2V0IGEgcmFuZ2Ugb2YgYnl0ZXMgZnJvbSBhIGZldGNoIHJlc3BvbnNlIGJvZHlcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBCeXRlU2xpY2VTdHJlYW0gfSBmcm9tIFwiQHN0ZC9zdHJlYW1zL2J5dGUtc2xpY2Utc3RyZWFtXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiKTtcbiAqIGNvbnN0IHJhbmdlZFN0cmVhbSA9IHJlc3BvbnNlLmJvZHkhXG4gKiAgIC5waXBlVGhyb3VnaChuZXcgQnl0ZVNsaWNlU3RyZWFtKDMsIDgpKTtcbiAqIGNvbnN0IGNvbGxlY3RlZCA9IGF3YWl0IEFycmF5LmZyb21Bc3luYyhyYW5nZWRTdHJlYW0pO1xuICogYXNzZXJ0RXF1YWxzKGNvbGxlY3RlZFswXT8ubGVuZ3RoLCA2KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgQnl0ZVNsaWNlU3RyZWFtIGV4dGVuZHMgVHJhbnNmb3JtU3RyZWFtPFVpbnQ4QXJyYXksIFVpbnQ4QXJyYXk+IHtcbiAgI29mZnNldFN0YXJ0ID0gMDtcbiAgI29mZnNldEVuZCA9IDA7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBuZXcgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSBzdGFydCBUaGUgemVyby1pbmRleGVkIGJ5dGUgaW5kZXggdG8gc3RhcnQgcmVhZGluZyBmcm9tLlxuICAgKiBAcGFyYW0gZW5kIFRoZSB6ZXJvLWluZGV4ZWQgYnl0ZSBpbmRleCB0byBzdG9wIHJlYWRpbmcgYXQuIEluY2x1c2l2ZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHN0YXJ0ID0gMCwgZW5kOiBudW1iZXIgPSBJbmZpbml0eSkge1xuICAgIHN1cGVyKHtcbiAgICAgIHN0YXJ0OiAoKSA9PiB7XG4gICAgICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcbiAgICAgICAgICAgIGBDYW5ub3QgY29uc3RydWN0IEJ5dGVTbGljZVN0cmVhbSBhcyBzdGFydCBtdXN0IGJlID49IDA6IHJlY2VpdmVkICR7c3RhcnR9YCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGVuZCArPSAxO1xuICAgICAgfSxcbiAgICAgIHRyYW5zZm9ybTogKGNodW5rLCBjb250cm9sbGVyKSA9PiB7XG4gICAgICAgIHRoaXMuI29mZnNldFN0YXJ0ID0gdGhpcy4jb2Zmc2V0RW5kO1xuICAgICAgICB0aGlzLiNvZmZzZXRFbmQgKz0gY2h1bmsuYnl0ZUxlbmd0aDtcbiAgICAgICAgaWYgKHRoaXMuI29mZnNldEVuZCA+IHN0YXJ0KSB7XG4gICAgICAgICAgaWYgKHRoaXMuI29mZnNldFN0YXJ0IDwgc3RhcnQpIHtcbiAgICAgICAgICAgIGNodW5rID0gY2h1bmsuc2xpY2Uoc3RhcnQgLSB0aGlzLiNvZmZzZXRTdGFydCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLiNvZmZzZXRFbmQgPj0gZW5kKSB7XG4gICAgICAgICAgICBjaHVuayA9IGNodW5rLnNsaWNlKDAsIGNodW5rLmJ5dGVMZW5ndGggLSB0aGlzLiNvZmZzZXRFbmQgKyBlbmQpO1xuICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKTtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIudGVybWluYXRlKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FnQ0MsR0FDRCxPQUFPLE1BQU0sd0JBQXdCO0VBQ25DLENBQUEsV0FBWSxHQUFHLEVBQUU7RUFDakIsQ0FBQSxTQUFVLEdBQUcsRUFBRTtFQUVmOzs7OztHQUtDLEdBQ0QsWUFBWSxRQUFRLENBQUMsRUFBRSxNQUFjLFFBQVEsQ0FBRTtJQUM3QyxLQUFLLENBQUM7TUFDSixPQUFPO1FBQ0wsSUFBSSxRQUFRLEdBQUc7VUFDYixNQUFNLElBQUksV0FDUixDQUFDLGlFQUFpRSxFQUFFLE9BQU87UUFFL0U7UUFDQSxPQUFPO01BQ1Q7TUFDQSxXQUFXLENBQUMsT0FBTztRQUNqQixJQUFJLENBQUMsQ0FBQSxXQUFZLEdBQUcsSUFBSSxDQUFDLENBQUEsU0FBVTtRQUNuQyxJQUFJLENBQUMsQ0FBQSxTQUFVLElBQUksTUFBTSxVQUFVO1FBQ25DLElBQUksSUFBSSxDQUFDLENBQUEsU0FBVSxHQUFHLE9BQU87VUFDM0IsSUFBSSxJQUFJLENBQUMsQ0FBQSxXQUFZLEdBQUcsT0FBTztZQUM3QixRQUFRLE1BQU0sS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUEsV0FBWTtVQUMvQztVQUNBLElBQUksSUFBSSxDQUFDLENBQUEsU0FBVSxJQUFJLEtBQUs7WUFDMUIsUUFBUSxNQUFNLEtBQUssQ0FBQyxHQUFHLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFBLFNBQVUsR0FBRztZQUM1RCxXQUFXLE9BQU8sQ0FBQztZQUNuQixXQUFXLFNBQVM7VUFDdEIsT0FBTztZQUNMLFdBQVcsT0FBTyxDQUFDO1VBQ3JCO1FBQ0Y7TUFDRjtJQUNGO0VBQ0Y7QUFDRiJ9 +// denoCacheMetadata=65000068033875156,9656424773187970768
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/04da19a95e47f74a8bbf4e6444261cdbbf6b41168a7ef4686aeeeb41244e6364.js b/vendor/gen/https/jsr.io/04da19a95e47f74a8bbf4e6444261cdbbf6b41168a7ef4686aeeeb41244e6364.js new file mode 100644 index 0000000..4a701d4 --- /dev/null +++ b/vendor/gen/https/jsr.io/04da19a95e47f74a8bbf4e6444261cdbbf6b41168a7ef4686aeeeb41244e6364.js @@ -0,0 +1,39 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +/** + * Gets the IPv4 or IPv6 network address of the machine. + * + * @experimental **UNSTABLE**: New API, yet to be vetted. + + * + * This is inspired by the util of the same name in + * {@linkcode https://www.npmjs.com/package/serve | npm:serve}. + * + * For more advanced use, use {@linkcode Deno.networkInterfaces} directly. + * + * @see {@link https://github.com/vercel/serve/blob/1ea55b1b5004f468159b54775e4fb3090fedbb2b/source/utilities/http.ts#L33} + * + * @param family The IP protocol version of the interface to get the address of. + * @returns The IPv4 network address of the machine or `undefined` if not found. + * + * @example Get the IPv4 network address (default) + * ```ts no-assert no-eval + * import { getNetworkAddress } from "@std/net/unstable-get-network-address"; + * + * const hostname = getNetworkAddress()!; + * + * Deno.serve({ port: 0, hostname }, () => new Response("Hello, world!")); + * ``` + * + * @example Get the IPv6 network address + * ```ts no-assert no-eval + * import { getNetworkAddress } from "@std/net/unstable-get-network-address"; + * + * const hostname = getNetworkAddress("IPv6")!; + * + * Deno.serve({ port: 0, hostname }, () => new Response("Hello, world!")); + * ``` + */ export function getNetworkAddress(family = "IPv4") { + return Deno.networkInterfaces().find((i)=>i.family === family && i.mac !== "00:00:00:00:00:00" && (family === "IPv4" ? !i.address.startsWith("127") : !(i.address === "::1" || i.address === "fe80::1") && i.scopeid === 0))?.address; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvbmV0LzEuMC40L3Vuc3RhYmxlX2dldF9uZXR3b3JrX2FkZHJlc3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8qKlxuICogR2V0cyB0aGUgSVB2NCBvciBJUHY2IG5ldHdvcmsgYWRkcmVzcyBvZiB0aGUgbWFjaGluZS5cbiAqXG4gKiBAZXhwZXJpbWVudGFsICoqVU5TVEFCTEUqKjogTmV3IEFQSSwgeWV0IHRvIGJlIHZldHRlZC5cblxuICpcbiAqIFRoaXMgaXMgaW5zcGlyZWQgYnkgdGhlIHV0aWwgb2YgdGhlIHNhbWUgbmFtZSBpblxuICoge0BsaW5rY29kZSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9zZXJ2ZSB8IG5wbTpzZXJ2ZX0uXG4gKlxuICogRm9yIG1vcmUgYWR2YW5jZWQgdXNlLCB1c2Uge0BsaW5rY29kZSBEZW5vLm5ldHdvcmtJbnRlcmZhY2VzfSBkaXJlY3RseS5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vdmVyY2VsL3NlcnZlL2Jsb2IvMWVhNTViMWI1MDA0ZjQ2ODE1OWI1NDc3NWU0ZmIzMDkwZmVkYmIyYi9zb3VyY2UvdXRpbGl0aWVzL2h0dHAudHMjTDMzfVxuICpcbiAqIEBwYXJhbSBmYW1pbHkgVGhlIElQIHByb3RvY29sIHZlcnNpb24gb2YgdGhlIGludGVyZmFjZSB0byBnZXQgdGhlIGFkZHJlc3Mgb2YuXG4gKiBAcmV0dXJucyBUaGUgSVB2NCBuZXR3b3JrIGFkZHJlc3Mgb2YgdGhlIG1hY2hpbmUgb3IgYHVuZGVmaW5lZGAgaWYgbm90IGZvdW5kLlxuICpcbiAqIEBleGFtcGxlIEdldCB0aGUgSVB2NCBuZXR3b3JrIGFkZHJlc3MgKGRlZmF1bHQpXG4gKiBgYGB0cyBuby1hc3NlcnQgbm8tZXZhbFxuICogaW1wb3J0IHsgZ2V0TmV0d29ya0FkZHJlc3MgfSBmcm9tIFwiQHN0ZC9uZXQvdW5zdGFibGUtZ2V0LW5ldHdvcmstYWRkcmVzc1wiO1xuICpcbiAqIGNvbnN0IGhvc3RuYW1lID0gZ2V0TmV0d29ya0FkZHJlc3MoKSE7XG4gKlxuICogRGVuby5zZXJ2ZSh7IHBvcnQ6IDAsIGhvc3RuYW1lIH0sICgpID0+IG5ldyBSZXNwb25zZShcIkhlbGxvLCB3b3JsZCFcIikpO1xuICogYGBgXG4gKlxuICogQGV4YW1wbGUgR2V0IHRoZSBJUHY2IG5ldHdvcmsgYWRkcmVzc1xuICogYGBgdHMgbm8tYXNzZXJ0IG5vLWV2YWxcbiAqIGltcG9ydCB7IGdldE5ldHdvcmtBZGRyZXNzIH0gZnJvbSBcIkBzdGQvbmV0L3Vuc3RhYmxlLWdldC1uZXR3b3JrLWFkZHJlc3NcIjtcbiAqXG4gKiBjb25zdCBob3N0bmFtZSA9IGdldE5ldHdvcmtBZGRyZXNzKFwiSVB2NlwiKSE7XG4gKlxuICogRGVuby5zZXJ2ZSh7IHBvcnQ6IDAsIGhvc3RuYW1lIH0sICgpID0+IG5ldyBSZXNwb25zZShcIkhlbGxvLCB3b3JsZCFcIikpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXR3b3JrQWRkcmVzcyhcbiAgZmFtaWx5OiBEZW5vLk5ldHdvcmtJbnRlcmZhY2VJbmZvW1wiZmFtaWx5XCJdID0gXCJJUHY0XCIsXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gRGVuby5uZXR3b3JrSW50ZXJmYWNlcygpXG4gICAgLmZpbmQoKGkpID0+XG4gICAgICBpLmZhbWlseSA9PT0gZmFtaWx5ICYmXG4gICAgICBpLm1hYyAhPT0gXCIwMDowMDowMDowMDowMDowMFwiICYmXG4gICAgICAoZmFtaWx5ID09PSBcIklQdjRcIlxuICAgICAgICAvLyBDYW5ub3QgbGllIHdpdGhpbiAxMjcuMC4wLjAvOFxuICAgICAgICA/ICFpLmFkZHJlc3Muc3RhcnRzV2l0aChcIjEyN1wiKVxuICAgICAgICAvLyBDYW5ub3QgYmUgbG9vcGJhY2sgb3IgbGluay1sb2NhbCBhZGRyZXNzZXNcbiAgICAgICAgOiAhKGkuYWRkcmVzcyA9PT0gXCI6OjFcIiB8fCBpLmFkZHJlc3MgPT09IFwiZmU4MDo6MVwiKSAmJiBpLnNjb3BlaWQgPT09IDApXG4gICAgKVxuICAgID8uYWRkcmVzcztcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWlDQyxHQUNELE9BQU8sU0FBUyxrQkFDZCxTQUE4QyxNQUFNO0VBRXBELE9BQU8sS0FBSyxpQkFBaUIsR0FDMUIsSUFBSSxDQUFDLENBQUMsSUFDTCxFQUFFLE1BQU0sS0FBSyxVQUNiLEVBQUUsR0FBRyxLQUFLLHVCQUNWLENBQUMsV0FBVyxTQUVSLENBQUMsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLFNBRXRCLENBQUMsQ0FBQyxFQUFFLE9BQU8sS0FBSyxTQUFTLEVBQUUsT0FBTyxLQUFLLFNBQVMsS0FBSyxFQUFFLE9BQU8sS0FBSyxDQUFDLElBRXhFO0FBQ04ifQ== +// denoCacheMetadata=8742219564818071545,10713096536573211212
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/057a32a8a2a061c80fc3ac3cfd0ae77b08f46dd05a750d3db5775d2d7ebaa39a.js b/vendor/gen/https/jsr.io/057a32a8a2a061c80fc3ac3cfd0ae77b08f46dd05a750d3db5775d2d7ebaa39a.js new file mode 100644 index 0000000..f621484 --- /dev/null +++ b/vendor/gen/https/jsr.io/057a32a8a2a061c80fc3ac3cfd0ae77b08f46dd05a750d3db5775d2d7ebaa39a.js @@ -0,0 +1,16 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. +import { CHAR_BACKWARD_SLASH, CHAR_FORWARD_SLASH, CHAR_LOWERCASE_A, CHAR_LOWERCASE_Z, CHAR_UPPERCASE_A, CHAR_UPPERCASE_Z } from "../_common/constants.ts"; +export function isPosixPathSeparator(code) { + return code === CHAR_FORWARD_SLASH; +} +export function isPathSeparator(code) { + return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; +} +export function isWindowsDeviceRoot(code) { + return code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z || code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC93aW5kb3dzL191dGlsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgdGhlIEJyb3dzZXJpZnkgYXV0aG9ycy4gTUlUIExpY2Vuc2UuXG4vLyBQb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYnJvd3NlcmlmeS9wYXRoLWJyb3dzZXJpZnkvXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7XG4gIENIQVJfQkFDS1dBUkRfU0xBU0gsXG4gIENIQVJfRk9SV0FSRF9TTEFTSCxcbiAgQ0hBUl9MT1dFUkNBU0VfQSxcbiAgQ0hBUl9MT1dFUkNBU0VfWixcbiAgQ0hBUl9VUFBFUkNBU0VfQSxcbiAgQ0hBUl9VUFBFUkNBU0VfWixcbn0gZnJvbSBcIi4uL19jb21tb24vY29uc3RhbnRzLnRzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Bvc2l4UGF0aFNlcGFyYXRvcihjb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNvZGUgPT09IENIQVJfRk9SV0FSRF9TTEFTSDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUGF0aFNlcGFyYXRvcihjb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNvZGUgPT09IENIQVJfRk9SV0FSRF9TTEFTSCB8fCBjb2RlID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNXaW5kb3dzRGV2aWNlUm9vdChjb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICAoY29kZSA+PSBDSEFSX0xPV0VSQ0FTRV9BICYmIGNvZGUgPD0gQ0hBUl9MT1dFUkNBU0VfWikgfHxcbiAgICAoY29kZSA+PSBDSEFSX1VQUEVSQ0FTRV9BICYmIGNvZGUgPD0gQ0hBUl9VUFBFUkNBU0VfWilcbiAgKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUsaURBQWlEO0FBQ2pELDZEQUE2RDtBQUM3RCxxQ0FBcUM7QUFFckMsU0FDRSxtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGdCQUFnQixRQUNYLDBCQUEwQjtBQUVqQyxPQUFPLFNBQVMscUJBQXFCLElBQVk7RUFDL0MsT0FBTyxTQUFTO0FBQ2xCO0FBRUEsT0FBTyxTQUFTLGdCQUFnQixJQUFZO0VBQzFDLE9BQU8sU0FBUyxzQkFBc0IsU0FBUztBQUNqRDtBQUVBLE9BQU8sU0FBUyxvQkFBb0IsSUFBWTtFQUM5QyxPQUNFLEFBQUMsUUFBUSxvQkFBb0IsUUFBUSxvQkFDcEMsUUFBUSxvQkFBb0IsUUFBUTtBQUV6QyJ9 +// denoCacheMetadata=995808612164581303,10752406681973636287
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/0593e0ab0c93abb5a17250ca2b65b8a7b5d23a9253f8a163f6fdc115396ef93d.js b/vendor/gen/https/jsr.io/0593e0ab0c93abb5a17250ca2b65b8a7b5d23a9253f8a163f6fdc115396ef93d.js new file mode 100644 index 0000000..ba5a5df --- /dev/null +++ b/vendor/gen/https/jsr.io/0593e0ab0c93abb5a17250ca2b65b8a7b5d23a9253f8a163f6fdc115396ef93d.js @@ -0,0 +1,40 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { parse as posixParse } from "./posix/parse.ts"; +import { parse as windowsParse } from "./windows/parse.ts"; +/** + * Return an object containing the parsed components of the path. + * + * Use {@linkcode https://jsr.io/@std/path/doc/~/format | format()} to reverse + * the result. + * + * @example Usage + * ```ts + * import { parse } from "@std/path/parse"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * const parsedPathObj = parse("C:\\path\\to\\script.ts"); + * assertEquals(parsedPathObj.root, "C:\\"); + * assertEquals(parsedPathObj.dir, "C:\\path\\to"); + * assertEquals(parsedPathObj.base, "script.ts"); + * assertEquals(parsedPathObj.ext, ".ts"); + * assertEquals(parsedPathObj.name, "script"); + * } else { + * const parsedPathObj = parse("/path/to/dir/script.ts"); + * parsedPathObj.root; // "/" + * parsedPathObj.dir; // "/path/to/dir" + * parsedPathObj.base; // "script.ts" + * parsedPathObj.ext; // ".ts" + * parsedPathObj.name; // "script" + * } + * ``` + * + * @param path Path to process + * @returns An object with the parsed path components. + */ export function parse(path) { + return isWindows ? windowsParse(path) : posixParse(path); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9wYXJzZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBpc1dpbmRvd3MgfSBmcm9tIFwiLi9fb3MudHNcIjtcbmltcG9ydCB0eXBlIHsgUGFyc2VkUGF0aCB9IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5pbXBvcnQgeyBwYXJzZSBhcyBwb3NpeFBhcnNlIH0gZnJvbSBcIi4vcG9zaXgvcGFyc2UudHNcIjtcbmltcG9ydCB7IHBhcnNlIGFzIHdpbmRvd3NQYXJzZSB9IGZyb20gXCIuL3dpbmRvd3MvcGFyc2UudHNcIjtcblxuZXhwb3J0IHR5cGUgeyBQYXJzZWRQYXRoIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcblxuLyoqXG4gKiBSZXR1cm4gYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHBhcnNlZCBjb21wb25lbnRzIG9mIHRoZSBwYXRoLlxuICpcbiAqIFVzZSB7QGxpbmtjb2RlIGh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC9kb2Mvfi9mb3JtYXQgfCBmb3JtYXQoKX0gdG8gcmV2ZXJzZVxuICogdGhlIHJlc3VsdC5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHBhcnNlIH0gZnJvbSBcIkBzdGQvcGF0aC9wYXJzZVwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogaWYgKERlbm8uYnVpbGQub3MgPT09IFwid2luZG93c1wiKSB7XG4gKiAgIGNvbnN0IHBhcnNlZFBhdGhPYmogPSBwYXJzZShcIkM6XFxcXHBhdGhcXFxcdG9cXFxcc2NyaXB0LnRzXCIpO1xuICogICBhc3NlcnRFcXVhbHMocGFyc2VkUGF0aE9iai5yb290LCBcIkM6XFxcXFwiKTtcbiAqICAgYXNzZXJ0RXF1YWxzKHBhcnNlZFBhdGhPYmouZGlyLCBcIkM6XFxcXHBhdGhcXFxcdG9cIik7XG4gKiAgIGFzc2VydEVxdWFscyhwYXJzZWRQYXRoT2JqLmJhc2UsIFwic2NyaXB0LnRzXCIpO1xuICogICBhc3NlcnRFcXVhbHMocGFyc2VkUGF0aE9iai5leHQsIFwiLnRzXCIpO1xuICogICBhc3NlcnRFcXVhbHMocGFyc2VkUGF0aE9iai5uYW1lLCBcInNjcmlwdFwiKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGNvbnN0IHBhcnNlZFBhdGhPYmogPSBwYXJzZShcIi9wYXRoL3RvL2Rpci9zY3JpcHQudHNcIik7XG4gKiAgIHBhcnNlZFBhdGhPYmoucm9vdDsgLy8gXCIvXCJcbiAqICAgcGFyc2VkUGF0aE9iai5kaXI7IC8vIFwiL3BhdGgvdG8vZGlyXCJcbiAqICAgcGFyc2VkUGF0aE9iai5iYXNlOyAvLyBcInNjcmlwdC50c1wiXG4gKiAgIHBhcnNlZFBhdGhPYmouZXh0OyAvLyBcIi50c1wiXG4gKiAgIHBhcnNlZFBhdGhPYmoubmFtZTsgLy8gXCJzY3JpcHRcIlxuICogfVxuICogYGBgXG4gKlxuICogQHBhcmFtIHBhdGggUGF0aCB0byBwcm9jZXNzXG4gKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCB0aGUgcGFyc2VkIHBhdGggY29tcG9uZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKHBhdGg6IHN0cmluZyk6IFBhcnNlZFBhdGgge1xuICByZXR1cm4gaXNXaW5kb3dzID8gd2luZG93c1BhcnNlKHBhdGgpIDogcG9zaXhQYXJzZShwYXRoKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBRXJDLFNBQVMsU0FBUyxRQUFRLFdBQVc7QUFFckMsU0FBUyxTQUFTLFVBQVUsUUFBUSxtQkFBbUI7QUFDdkQsU0FBUyxTQUFTLFlBQVksUUFBUSxxQkFBcUI7QUFJM0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQThCQyxHQUNELE9BQU8sU0FBUyxNQUFNLElBQVk7RUFDaEMsT0FBTyxZQUFZLGFBQWEsUUFBUSxXQUFXO0FBQ3JEIn0= +// denoCacheMetadata=13383546776027254442,10475310697389530189
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/069edb2631331d75ad72b912ca478f8a30a5d043879d0059987ff081a47d25e5.js b/vendor/gen/https/jsr.io/069edb2631331d75ad72b912ca478f8a30a5d043879d0059987ff081a47d25e5.js new file mode 100644 index 0000000..df7dd07 --- /dev/null +++ b/vendor/gen/https/jsr.io/069edb2631331d75ad72b912ca478f8a30a5d043879d0059987ff081a47d25e5.js @@ -0,0 +1,181 @@ +export async function rootInfo() { + if (!tmpDir) tmpDir = Deno.makeTempDirSync(); + const opts = { + args: [ + "info", + "--json", + "--no-config", + "--no-lock" + ], + cwd: tmpDir, + env: { + DENO_NO_PACKAGE_JSON: "true" + }, + stdout: "piped", + stderr: "inherit" + }; + const output = await new Deno.Command(Deno.execPath(), opts).output(); + if (!output.success) { + throw new Error(`Failed to call 'deno info'`); + } + const txt = new TextDecoder().decode(output.stdout); + return JSON.parse(txt); +} +let tmpDir; +async function info(specifier, options) { + const args = [ + "info", + "--json" + ]; + if (!Deno.version.deno.startsWith("1.")) { + args.push("--allow-import"); + } + const opts = { + args, + cwd: undefined, + env: { + DENO_NO_PACKAGE_JSON: "true" + }, + stdout: "piped", + stderr: "inherit" + }; + if (typeof options.config === "string") { + opts.args.push("--config", options.config); + } else { + opts.args.push("--no-config"); + } + if (options.importMap) { + opts.args.push("--import-map", options.importMap); + } + if (typeof options.lock === "string") { + opts.args.push("--lock", options.lock); + } else if (!options.cwd) { + opts.args.push("--no-lock"); + } + if (options.nodeModulesDir !== undefined) { + if (Deno.version.deno.startsWith("1.")) { + if (options.nodeModulesDir === "auto") { + opts.args.push("--node-modules-dir"); + } else if (options.nodeModulesDir === "manual") { + opts.args.push("--unstable-byonm"); + } + } else { + opts.args.push(`--node-modules-dir=${options.nodeModulesDir}`); + } + } + if (options.cwd) { + opts.cwd = options.cwd; + } else { + if (!tmpDir) tmpDir = Deno.makeTempDirSync(); + opts.cwd = tmpDir; + } + opts.args.push(specifier); + const output = await new Deno.Command(Deno.execPath(), opts).output(); + if (!output.success) { + throw new Error(`Failed to call 'deno info' on '${specifier}'`); + } + const txt = new TextDecoder().decode(output.stdout); + return JSON.parse(txt); +} +export class InfoCache { + #options; + #pending = null; + #modules = new Map(); + #redirects = new Map(); + #npmPackages = new Map(); + constructor(options = {}){ + this.#options = options; + } + async get(specifier) { + let entry = this.#getCached(specifier); + if (entry !== undefined) return entry; + await this.#queueLoad(specifier); + entry = this.#getCached(specifier); + if (entry === undefined) { + throw new Error(`Unreachable: '${specifier}' loaded but not reachable`); + } + return entry; + } + getNpmPackage(id) { + return this.#npmPackages.get(id); + } + #resolve(specifier) { + const original = specifier; + let counter = 0; + while(counter++ < 10){ + const redirect = this.#redirects.get(specifier); + if (redirect === undefined) return specifier; + specifier = redirect; + } + throw new Error(`Too many redirects for '${original}'`); + } + #getCached(specifier) { + specifier = this.#resolve(specifier); + return this.#modules.get(specifier); + } + async #queueLoad(specifier) { + while(true){ + if (this.#pending === null) { + this.#pending = { + specifiers: new Set([ + specifier + ]), + done: (async ()=>{ + await new Promise((r)=>setTimeout(r, 5)); + const specifiers = this.#pending.specifiers; + this.#pending.specifiers = null; + await this.#load([ + ...specifiers + ]); + this.#pending = null; + })() + }; + await this.#pending.done; + return; + } else if (this.#pending.specifiers !== null) { + this.#pending.specifiers.add(specifier); + await this.#pending.done; + return; + } else { + await this.#pending.done; + } + } + } + async #load(specifiers) { + await this.#populate(specifiers); + for (let specifier of specifiers){ + specifier = this.#resolve(specifier); + const entry = this.#modules.get(specifier); + if (entry === undefined && specifier.startsWith("npm:")) { + // we hit https://github.com/denoland/deno/issues/18043, so we have to + // perform another load to get the actual data of the redirected specifier + await this.#populate([ + specifier + ]); + } + } + } + async #populate(specifiers) { + let specifier; + if (specifiers.length === 1) { + specifier = specifiers[0]; + } else { + specifier = `data:application/javascript,${encodeURIComponent(specifiers.map((s)=>`import ${JSON.stringify(s)};`).join(""))}`; + } + const { modules, redirects, npmPackages } = await info(specifier, this.#options); + for (const module of modules){ + if (specifiers.length !== 1 && module.specifier === specifier) continue; + this.#modules.set(module.specifier, module); + } + for (const [from, to] of Object.entries(redirects)){ + this.#redirects.set(from, to); + } + if (npmPackages !== undefined) { + for (const [id, npmPackage] of Object.entries(npmPackages)){ + this.#npmPackages.set(id, npmPackage); + } + } + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BsdWNhL2VzYnVpbGQtZGVuby1sb2FkZXIvMC4xMS4xL3NyYy9kZW5vLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUm9vdEluZm9PdXRwdXQge1xuICBkZW5vRGlyOiBzdHJpbmc7XG4gIG5wbUNhY2hlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByb290SW5mbygpOiBQcm9taXNlPFJvb3RJbmZvT3V0cHV0PiB7XG4gIGlmICghdG1wRGlyKSB0bXBEaXIgPSBEZW5vLm1ha2VUZW1wRGlyU3luYygpO1xuICBjb25zdCBvcHRzID0ge1xuICAgIGFyZ3M6IFtcImluZm9cIiwgXCItLWpzb25cIiwgXCItLW5vLWNvbmZpZ1wiLCBcIi0tbm8tbG9ja1wiXSxcbiAgICBjd2Q6IHRtcERpcixcbiAgICBlbnY6IHsgREVOT19OT19QQUNLQUdFX0pTT046IFwidHJ1ZVwiIH0gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBzdGRvdXQ6IFwicGlwZWRcIixcbiAgICBzdGRlcnI6IFwiaW5oZXJpdFwiLFxuICB9O1xuXG4gIGNvbnN0IG91dHB1dCA9IGF3YWl0IG5ldyBEZW5vLkNvbW1hbmQoXG4gICAgRGVuby5leGVjUGF0aCgpLFxuICAgIG9wdHMgYXMgRGVuby5Db21tYW5kT3B0aW9ucyxcbiAgKS5vdXRwdXQoKTtcbiAgaWYgKCFvdXRwdXQuc3VjY2Vzcykge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGNhbGwgJ2Rlbm8gaW5mbydgKTtcbiAgfVxuICBjb25zdCB0eHQgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUob3V0cHV0LnN0ZG91dCk7XG4gIHJldHVybiBKU09OLnBhcnNlKHR4dCk7XG59XG5cbi8vIExpZnRlZCBmcm9tIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9kZW5vbGFuZC9kZW5vX2dyYXBoLzg5YWZmZTQzYzlkM2Q1YzkxNjVjODA4OTY4N2MxMDdkNTNlZDhmZTEvbGliL21lZGlhX3R5cGUudHNcbmV4cG9ydCB0eXBlIE1lZGlhVHlwZSA9XG4gIHwgXCJKYXZhU2NyaXB0XCJcbiAgfCBcIk1qc1wiXG4gIHwgXCJDanNcIlxuICB8IFwiSlNYXCJcbiAgfCBcIlR5cGVTY3JpcHRcIlxuICB8IFwiTXRzXCJcbiAgfCBcIkN0c1wiXG4gIHwgXCJEdHNcIlxuICB8IFwiRG10c1wiXG4gIHwgXCJEY3RzXCJcbiAgfCBcIlRTWFwiXG4gIHwgXCJKc29uXCJcbiAgfCBcIldhc21cIlxuICB8IFwiVHNCdWlsZEluZm9cIlxuICB8IFwiU291cmNlTWFwXCJcbiAgfCBcIlVua25vd25cIjtcblxuaW50ZXJmYWNlIEluZm9PdXRwdXQge1xuICByb290czogc3RyaW5nW107XG4gIG1vZHVsZXM6IE1vZHVsZUVudHJ5W107XG4gIHJlZGlyZWN0czogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgbnBtUGFja2FnZXM/OiBSZWNvcmQ8c3RyaW5nLCBOcG1QYWNrYWdlPjtcbn1cblxuZXhwb3J0IHR5cGUgTW9kdWxlRW50cnkgPVxuICB8IE1vZHVsZUVudHJ5RXJyb3JcbiAgfCBNb2R1bGVFbnRyeUVzbVxuICB8IE1vZHVsZUVudHJ5SnNvblxuICB8IE1vZHVsZUVudHJ5TnBtXG4gIHwgTW9kdWxlRW50cnlOb2RlO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vZHVsZUVudHJ5QmFzZSB7XG4gIHNwZWNpZmllcjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vZHVsZUVudHJ5RXJyb3IgZXh0ZW5kcyBNb2R1bGVFbnRyeUJhc2Uge1xuICBlcnJvcjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vZHVsZUVudHJ5RXNtIGV4dGVuZHMgTW9kdWxlRW50cnlCYXNlIHtcbiAga2luZDogXCJlc21cIjtcbiAgbG9jYWw6IHN0cmluZyB8IG51bGw7XG4gIGVtaXQ6IHN0cmluZyB8IG51bGw7XG4gIG1hcDogc3RyaW5nIHwgbnVsbDtcbiAgbWVkaWFUeXBlOiBNZWRpYVR5cGU7XG4gIHNpemU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb2R1bGVFbnRyeUpzb24gZXh0ZW5kcyBNb2R1bGVFbnRyeUJhc2Uge1xuICBraW5kOiBcImFzc2VydGVkXCIgfCBcImpzb25cIjtcbiAgbG9jYWw6IHN0cmluZyB8IG51bGw7XG4gIG1lZGlhVHlwZTogTWVkaWFUeXBlO1xuICBzaXplOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlRW50cnlOcG0gZXh0ZW5kcyBNb2R1bGVFbnRyeUJhc2Uge1xuICBraW5kOiBcIm5wbVwiO1xuICBucG1QYWNrYWdlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlRW50cnlOb2RlIGV4dGVuZHMgTW9kdWxlRW50cnlCYXNlIHtcbiAga2luZDogXCJub2RlXCI7XG4gIG1vZHVsZU5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOcG1QYWNrYWdlIHtcbiAgbmFtZTogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGRlcGVuZGVuY2llczogc3RyaW5nW107XG4gIHJlZ2lzdHJ5VXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluZm9PcHRpb25zIHtcbiAgY3dkPzogc3RyaW5nO1xuICBjb25maWc/OiBzdHJpbmc7XG4gIGltcG9ydE1hcD86IHN0cmluZztcbiAgbG9jaz86IHN0cmluZztcbiAgbm9kZU1vZHVsZXNEaXI/OiBcImF1dG9cIiB8IFwibWFudWFsXCIgfCBcIm5vbmVcIjtcbn1cblxubGV0IHRtcERpcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5hc3luYyBmdW5jdGlvbiBpbmZvKFxuICBzcGVjaWZpZXI6IHN0cmluZyxcbiAgb3B0aW9uczogSW5mb09wdGlvbnMsXG4pOiBQcm9taXNlPEluZm9PdXRwdXQ+IHtcbiAgY29uc3QgYXJncyA9IFtcImluZm9cIiwgXCItLWpzb25cIl07XG4gIGlmICghRGVuby52ZXJzaW9uLmRlbm8uc3RhcnRzV2l0aChcIjEuXCIpKSB7XG4gICAgYXJncy5wdXNoKFwiLS1hbGxvdy1pbXBvcnRcIik7XG4gIH1cbiAgY29uc3Qgb3B0cyA9IHtcbiAgICBhcmdzLFxuICAgIGN3ZDogdW5kZWZpbmVkIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBlbnY6IHsgREVOT19OT19QQUNLQUdFX0pTT046IFwidHJ1ZVwiIH0gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBzdGRvdXQ6IFwicGlwZWRcIixcbiAgICBzdGRlcnI6IFwiaW5oZXJpdFwiLFxuICB9O1xuICBpZiAodHlwZW9mIG9wdGlvbnMuY29uZmlnID09PSBcInN0cmluZ1wiKSB7XG4gICAgb3B0cy5hcmdzLnB1c2goXCItLWNvbmZpZ1wiLCBvcHRpb25zLmNvbmZpZyk7XG4gIH0gZWxzZSB7XG4gICAgb3B0cy5hcmdzLnB1c2goXCItLW5vLWNvbmZpZ1wiKTtcbiAgfVxuICBpZiAob3B0aW9ucy5pbXBvcnRNYXApIHtcbiAgICBvcHRzLmFyZ3MucHVzaChcIi0taW1wb3J0LW1hcFwiLCBvcHRpb25zLmltcG9ydE1hcCk7XG4gIH1cbiAgaWYgKHR5cGVvZiBvcHRpb25zLmxvY2sgPT09IFwic3RyaW5nXCIpIHtcbiAgICBvcHRzLmFyZ3MucHVzaChcIi0tbG9ja1wiLCBvcHRpb25zLmxvY2spO1xuICB9IGVsc2UgaWYgKCFvcHRpb25zLmN3ZCkge1xuICAgIG9wdHMuYXJncy5wdXNoKFwiLS1uby1sb2NrXCIpO1xuICB9XG4gIGlmIChvcHRpb25zLm5vZGVNb2R1bGVzRGlyICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoRGVuby52ZXJzaW9uLmRlbm8uc3RhcnRzV2l0aChcIjEuXCIpKSB7XG4gICAgICBpZiAob3B0aW9ucy5ub2RlTW9kdWxlc0RpciA9PT0gXCJhdXRvXCIpIHtcbiAgICAgICAgb3B0cy5hcmdzLnB1c2goXCItLW5vZGUtbW9kdWxlcy1kaXJcIik7XG4gICAgICB9IGVsc2UgaWYgKG9wdGlvbnMubm9kZU1vZHVsZXNEaXIgPT09IFwibWFudWFsXCIpIHtcbiAgICAgICAgb3B0cy5hcmdzLnB1c2goXCItLXVuc3RhYmxlLWJ5b25tXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvcHRzLmFyZ3MucHVzaChgLS1ub2RlLW1vZHVsZXMtZGlyPSR7b3B0aW9ucy5ub2RlTW9kdWxlc0Rpcn1gKTtcbiAgICB9XG4gIH1cbiAgaWYgKG9wdGlvbnMuY3dkKSB7XG4gICAgb3B0cy5jd2QgPSBvcHRpb25zLmN3ZDtcbiAgfSBlbHNlIHtcbiAgICBpZiAoIXRtcERpcikgdG1wRGlyID0gRGVuby5tYWtlVGVtcERpclN5bmMoKTtcbiAgICBvcHRzLmN3ZCA9IHRtcERpcjtcbiAgfVxuXG4gIG9wdHMuYXJncy5wdXNoKHNwZWNpZmllcik7XG5cbiAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgbmV3IERlbm8uQ29tbWFuZChcbiAgICBEZW5vLmV4ZWNQYXRoKCksXG4gICAgb3B0cyBhcyBEZW5vLkNvbW1hbmRPcHRpb25zLFxuICApLm91dHB1dCgpO1xuICBpZiAoIW91dHB1dC5zdWNjZXNzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gY2FsbCAnZGVubyBpbmZvJyBvbiAnJHtzcGVjaWZpZXJ9J2ApO1xuICB9XG4gIGNvbnN0IHR4dCA9IG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShvdXRwdXQuc3Rkb3V0KTtcbiAgcmV0dXJuIEpTT04ucGFyc2UodHh0KTtcbn1cblxuZXhwb3J0IGNsYXNzIEluZm9DYWNoZSB7XG4gICNvcHRpb25zOiBJbmZvT3B0aW9ucztcblxuICAjcGVuZGluZzogeyBkb25lOiBQcm9taXNlPHZvaWQ+OyBzcGVjaWZpZXJzOiBTZXQ8c3RyaW5nPiB8IG51bGwgfSB8IG51bGwgPVxuICAgIG51bGw7XG5cbiAgI21vZHVsZXM6IE1hcDxzdHJpbmcsIE1vZHVsZUVudHJ5PiA9IG5ldyBNYXAoKTtcbiAgI3JlZGlyZWN0czogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcbiAgI25wbVBhY2thZ2VzOiBNYXA8c3RyaW5nLCBOcG1QYWNrYWdlPiA9IG5ldyBNYXAoKTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJbmZvT3B0aW9ucyA9IHt9KSB7XG4gICAgdGhpcy4jb3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICBhc3luYyBnZXQoc3BlY2lmaWVyOiBzdHJpbmcpOiBQcm9taXNlPE1vZHVsZUVudHJ5PiB7XG4gICAgbGV0IGVudHJ5ID0gdGhpcy4jZ2V0Q2FjaGVkKHNwZWNpZmllcik7XG4gICAgaWYgKGVudHJ5ICE9PSB1bmRlZmluZWQpIHJldHVybiBlbnRyeTtcblxuICAgIGF3YWl0IHRoaXMuI3F1ZXVlTG9hZChzcGVjaWZpZXIpO1xuXG4gICAgZW50cnkgPSB0aGlzLiNnZXRDYWNoZWQoc3BlY2lmaWVyKTtcbiAgICBpZiAoZW50cnkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlYWNoYWJsZTogJyR7c3BlY2lmaWVyfScgbG9hZGVkIGJ1dCBub3QgcmVhY2hhYmxlYCk7XG4gICAgfVxuICAgIHJldHVybiBlbnRyeTtcbiAgfVxuXG4gIGdldE5wbVBhY2thZ2UoaWQ6IHN0cmluZyk6IE5wbVBhY2thZ2UgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNucG1QYWNrYWdlcy5nZXQoaWQpO1xuICB9XG5cbiAgI3Jlc29sdmUoc3BlY2lmaWVyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG9yaWdpbmFsID0gc3BlY2lmaWVyO1xuICAgIGxldCBjb3VudGVyID0gMDtcbiAgICB3aGlsZSAoY291bnRlcisrIDwgMTApIHtcbiAgICAgIGNvbnN0IHJlZGlyZWN0ID0gdGhpcy4jcmVkaXJlY3RzLmdldChzcGVjaWZpZXIpO1xuICAgICAgaWYgKHJlZGlyZWN0ID09PSB1bmRlZmluZWQpIHJldHVybiBzcGVjaWZpZXI7XG4gICAgICBzcGVjaWZpZXIgPSByZWRpcmVjdDtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUb28gbWFueSByZWRpcmVjdHMgZm9yICcke29yaWdpbmFsfSdgKTtcbiAgfVxuXG4gICNnZXRDYWNoZWQoc3BlY2lmaWVyOiBzdHJpbmcpOiBNb2R1bGVFbnRyeSB8IHVuZGVmaW5lZCB7XG4gICAgc3BlY2lmaWVyID0gdGhpcy4jcmVzb2x2ZShzcGVjaWZpZXIpO1xuICAgIHJldHVybiB0aGlzLiNtb2R1bGVzLmdldChzcGVjaWZpZXIpO1xuICB9XG5cbiAgYXN5bmMgI3F1ZXVlTG9hZChzcGVjaWZpZXI6IHN0cmluZykge1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAodGhpcy4jcGVuZGluZyA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLiNwZW5kaW5nID0ge1xuICAgICAgICAgIHNwZWNpZmllcnM6IG5ldyBTZXQoW3NwZWNpZmllcl0pLFxuICAgICAgICAgIGRvbmU6IChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCA1KSk7XG4gICAgICAgICAgICBjb25zdCBzcGVjaWZpZXJzID0gdGhpcy4jcGVuZGluZyEuc3BlY2lmaWVycyE7XG4gICAgICAgICAgICB0aGlzLiNwZW5kaW5nIS5zcGVjaWZpZXJzID0gbnVsbDtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuI2xvYWQoWy4uLnNwZWNpZmllcnNdKTtcbiAgICAgICAgICAgIHRoaXMuI3BlbmRpbmcgPSBudWxsO1xuICAgICAgICAgIH0pKCksXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IHRoaXMuI3BlbmRpbmcuZG9uZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLiNwZW5kaW5nLnNwZWNpZmllcnMgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy4jcGVuZGluZy5zcGVjaWZpZXJzLmFkZChzcGVjaWZpZXIpO1xuICAgICAgICBhd2FpdCB0aGlzLiNwZW5kaW5nLmRvbmU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHRoaXMuI3BlbmRpbmcuZG9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyAjbG9hZChzcGVjaWZpZXJzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuI3BvcHVsYXRlKHNwZWNpZmllcnMpO1xuICAgIGZvciAobGV0IHNwZWNpZmllciBvZiBzcGVjaWZpZXJzKSB7XG4gICAgICBzcGVjaWZpZXIgPSB0aGlzLiNyZXNvbHZlKHNwZWNpZmllcik7XG4gICAgICBjb25zdCBlbnRyeSA9IHRoaXMuI21vZHVsZXMuZ2V0KHNwZWNpZmllcik7XG4gICAgICBpZiAoZW50cnkgPT09IHVuZGVmaW5lZCAmJiBzcGVjaWZpZXIuc3RhcnRzV2l0aChcIm5wbTpcIikpIHtcbiAgICAgICAgLy8gd2UgaGl0IGh0dHBzOi8vZ2l0aHViLmNvbS9kZW5vbGFuZC9kZW5vL2lzc3Vlcy8xODA0Mywgc28gd2UgaGF2ZSB0b1xuICAgICAgICAvLyBwZXJmb3JtIGFub3RoZXIgbG9hZCB0byBnZXQgdGhlIGFjdHVhbCBkYXRhIG9mIHRoZSByZWRpcmVjdGVkIHNwZWNpZmllclxuICAgICAgICBhd2FpdCB0aGlzLiNwb3B1bGF0ZShbc3BlY2lmaWVyXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgI3BvcHVsYXRlKHNwZWNpZmllcnM6IHN0cmluZ1tdKSB7XG4gICAgbGV0IHNwZWNpZmllcjtcbiAgICBpZiAoc3BlY2lmaWVycy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHNwZWNpZmllciA9IHNwZWNpZmllcnNbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHNwZWNpZmllciA9IGBkYXRhOmFwcGxpY2F0aW9uL2phdmFzY3JpcHQsJHtcbiAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KFxuICAgICAgICAgIHNwZWNpZmllcnMubWFwKChzKSA9PiBgaW1wb3J0ICR7SlNPTi5zdHJpbmdpZnkocyl9O2ApLmpvaW4oXCJcIiksXG4gICAgICAgIClcbiAgICAgIH1gO1xuICAgIH1cbiAgICBjb25zdCB7IG1vZHVsZXMsIHJlZGlyZWN0cywgbnBtUGFja2FnZXMgfSA9IGF3YWl0IGluZm8oXG4gICAgICBzcGVjaWZpZXIsXG4gICAgICB0aGlzLiNvcHRpb25zLFxuICAgICk7XG4gICAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlcykge1xuICAgICAgaWYgKHNwZWNpZmllcnMubGVuZ3RoICE9PSAxICYmIG1vZHVsZS5zcGVjaWZpZXIgPT09IHNwZWNpZmllcikgY29udGludWU7XG4gICAgICB0aGlzLiNtb2R1bGVzLnNldChtb2R1bGUuc3BlY2lmaWVyLCBtb2R1bGUpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IFtmcm9tLCB0b10gb2YgT2JqZWN0LmVudHJpZXMocmVkaXJlY3RzKSkge1xuICAgICAgdGhpcy4jcmVkaXJlY3RzLnNldChmcm9tLCB0byk7XG4gICAgfVxuICAgIGlmIChucG1QYWNrYWdlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmb3IgKGNvbnN0IFtpZCwgbnBtUGFja2FnZV0gb2YgT2JqZWN0LmVudHJpZXMobnBtUGFja2FnZXMpKSB7XG4gICAgICAgIHRoaXMuI25wbVBhY2thZ2VzLnNldChpZCwgbnBtUGFja2FnZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxlQUFlO0VBQ3BCLElBQUksQ0FBQyxRQUFRLFNBQVMsS0FBSyxlQUFlO0VBQzFDLE1BQU0sT0FBTztJQUNYLE1BQU07TUFBQztNQUFRO01BQVU7TUFBZTtLQUFZO0lBQ3BELEtBQUs7SUFDTCxLQUFLO01BQUUsc0JBQXNCO0lBQU87SUFDcEMsUUFBUTtJQUNSLFFBQVE7RUFDVjtFQUVBLE1BQU0sU0FBUyxNQUFNLElBQUksS0FBSyxPQUFPLENBQ25DLEtBQUssUUFBUSxJQUNiLE1BQ0EsTUFBTTtFQUNSLElBQUksQ0FBQyxPQUFPLE9BQU8sRUFB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 +// denoCacheMetadata=6143771484644692677,18158484726321119823
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/081236b688f80c0c99d298ab430a6547867a10504949c43e730bc01c7d00a232.js b/vendor/gen/https/jsr.io/081236b688f80c0c99d298ab430a6547867a10504949c43e730bc01c7d00a232.js new file mode 100644 index 0000000..fb6c701 --- /dev/null +++ b/vendor/gen/https/jsr.io/081236b688f80c0c99d298ab430a6547867a10504949c43e730bc01c7d00a232.js @@ -0,0 +1,17 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +export function _format(sep, pathObject) { + const dir = pathObject.dir || pathObject.root; + const base = pathObject.base || (pathObject.name ?? "") + (pathObject.ext ?? ""); + if (!dir) return base; + if (base === sep) return dir; + if (dir === pathObject.root) return dir + base; + return dir + sep + base; +} +export function assertArg(pathObject) { + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError(`The "pathObject" argument must be of type Object, received type "${typeof pathObject}"`); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9fY29tbW9uL2Zvcm1hdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgdHlwZSB7IFBhcnNlZFBhdGggfSBmcm9tIFwiLi4vdHlwZXMudHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIF9mb3JtYXQoXG4gIHNlcDogc3RyaW5nLFxuICBwYXRoT2JqZWN0OiBQYXJ0aWFsPFBhcnNlZFBhdGg+LFxuKTogc3RyaW5nIHtcbiAgY29uc3QgZGlyOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBwYXRoT2JqZWN0LmRpciB8fCBwYXRoT2JqZWN0LnJvb3Q7XG4gIGNvbnN0IGJhc2U6IHN0cmluZyA9IHBhdGhPYmplY3QuYmFzZSB8fFxuICAgIChwYXRoT2JqZWN0Lm5hbWUgPz8gXCJcIikgKyAocGF0aE9iamVjdC5leHQgPz8gXCJcIik7XG4gIGlmICghZGlyKSByZXR1cm4gYmFzZTtcbiAgaWYgKGJhc2UgPT09IHNlcCkgcmV0dXJuIGRpcjtcbiAgaWYgKGRpciA9PT0gcGF0aE9iamVjdC5yb290KSByZXR1cm4gZGlyICsgYmFzZTtcbiAgcmV0dXJuIGRpciArIHNlcCArIGJhc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRBcmcocGF0aE9iamVjdDogUGFydGlhbDxQYXJzZWRQYXRoPikge1xuICBpZiAocGF0aE9iamVjdCA9PT0gbnVsbCB8fCB0eXBlb2YgcGF0aE9iamVjdCAhPT0gXCJvYmplY3RcIikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBgVGhlIFwicGF0aE9iamVjdFwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBPYmplY3QsIHJlY2VpdmVkIHR5cGUgXCIke3R5cGVvZiBwYXRoT2JqZWN0fVwiYCxcbiAgICApO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUlyQyxPQUFPLFNBQVMsUUFDZCxHQUFXLEVBQ1gsVUFBK0I7RUFFL0IsTUFBTSxNQUEwQixXQUFXLEdBQUcsSUFBSSxXQUFXLElBQUk7RUFDakUsTUFBTSxPQUFlLFdBQVcsSUFBSSxJQUNsQyxDQUFDLFdBQVcsSUFBSSxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLEVBQUU7RUFDakQsSUFBSSxDQUFDLEtBQUssT0FBTztFQUNqQixJQUFJLFNBQVMsS0FBSyxPQUFPO0VBQ3pCLElBQUksUUFBUSxXQUFXLElBQUksRUFBRSxPQUFPLE1BQU07RUFDMUMsT0FBTyxNQUFNLE1BQU07QUFDckI7QUFFQSxPQUFPLFNBQVMsVUFBVSxVQUErQjtFQUN2RCxJQUFJLGVBQWUsUUFBUSxPQUFPLGVBQWUsVUFBVTtJQUN6RCxNQUFNLElBQUksVUFDUixDQUFDLGlFQUFpRSxFQUFFLE9BQU8sV0FBVyxDQUFDLENBQUM7RUFFNUY7QUFDRiJ9 +// denoCacheMetadata=5458619976571249189,14553661700719468948
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/0a5487698f5644dfd1a0f393d451106e457ee09ddce0b2f0fab8ef8678a6625a.js b/vendor/gen/https/jsr.io/0a5487698f5644dfd1a0f393d451106e457ee09ddce0b2f0fab8ef8678a6625a.js new file mode 100644 index 0000000..e2f1943 --- /dev/null +++ b/vendor/gen/https/jsr.io/0a5487698f5644dfd1a0f393d451106e457ee09ddce0b2f0fab8ef8678a6625a.js @@ -0,0 +1,82 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { globToRegExp as posixGlobToRegExp } from "./posix/glob_to_regexp.ts"; +import { globToRegExp as windowsGlobToRegExp } from "./windows/glob_to_regexp.ts"; +/** + * Converts a glob string to a regular expression. + * + * Tries to match bash glob expansion as closely as possible. + * + * Basic glob syntax: + * - `*` - Matches everything without leaving the path segment. + * - `?` - Matches any single character. + * - `{foo,bar}` - Matches `foo` or `bar`. + * - `[abcd]` - Matches `a`, `b`, `c` or `d`. + * - `[a-d]` - Matches `a`, `b`, `c` or `d`. + * - `[!abcd]` - Matches any single character besides `a`, `b`, `c` or `d`. + * - `[[:<class>:]]` - Matches any character belonging to `<class>`. + * - `[[:alnum:]]` - Matches any digit or letter. + * - `[[:digit:]abc]` - Matches any digit, `a`, `b` or `c`. + * - See https://facelessuser.github.io/wcmatch/glob/#posix-character-classes + * for a complete list of supported character classes. + * - `\` - Escapes the next character for an `os` other than `"windows"`. + * - \` - Escapes the next character for `os` set to `"windows"`. + * - `/` - Path separator. + * - `\` - Additional path separator only for `os` set to `"windows"`. + * + * Extended syntax: + * - Requires `{ extended: true }`. + * - `?(foo|bar)` - Matches 0 or 1 instance of `{foo,bar}`. + * - `@(foo|bar)` - Matches 1 instance of `{foo,bar}`. They behave the same. + * - `*(foo|bar)` - Matches _n_ instances of `{foo,bar}`. + * - `+(foo|bar)` - Matches _n > 0_ instances of `{foo,bar}`. + * - `!(foo|bar)` - Matches anything other than `{foo,bar}`. + * - See https://www.linuxjournal.com/content/bash-extended-globbing. + * + * Globstar syntax: + * - Requires `{ globstar: true }`. + * - `**` - Matches any number of any path segments. + * - Must comprise its entire path segment in the provided glob. + * - See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * + * Note the following properties: + * - The generated `RegExp` is anchored at both start and end. + * - Repeating and trailing separators are tolerated. Trailing separators in the + * provided glob have no meaning and are discarded. + * - Absolute globs will only match absolute paths, etc. + * - Empty globs will match nothing. + * - Any special glob syntax must be contained to one path segment. For example, + * `?(foo|bar/baz)` is invalid. The separator will take precedence and the + * first segment ends with an unclosed group. + * - If a path segment ends with unclosed groups or a dangling escape prefix, a + * parse error has occurred. Every character for that segment is taken + * literally in this event. + * + * Limitations: + * - A negative group like `!(foo|bar)` will wrongly be converted to a negative + * look-ahead followed by a wildcard. This means that `!(foo).js` will wrongly + * fail to match `foobar.js`, even though `foobar` is not `foo`. Effectively, + * `!(foo|bar)` is treated like `!(@(foo|bar)*)`. This will work correctly if + * the group occurs not nested at the end of the segment. + * + * @example Usage + * ```ts + * import { globToRegExp } from "@std/path/glob-to-regexp"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(globToRegExp("*.js"), /^[^\\/]*\.js(?:\\|\/)*$/); + * } else { + * assertEquals(globToRegExp("*.js"), /^[^/]*\.js\/*$/); + * } + * ``` + * + * @param glob Glob string to convert. + * @param options Conversion options. + * @returns The regular expression equivalent to the glob. + */ export function globToRegExp(glob, options = {}) { + return isWindows ? windowsGlobToRegExp(glob, options) : posixGlobToRegExp(glob, options); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9nbG9iX3RvX3JlZ2V4cC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgdHlwZSB7IEdsb2JPcHRpb25zIH0gZnJvbSBcIi4vX2NvbW1vbi9nbG9iX3RvX3JlZ19leHAudHNcIjtcbmltcG9ydCB7IGlzV2luZG93cyB9IGZyb20gXCIuL19vcy50c1wiO1xuXG5pbXBvcnQgeyBnbG9iVG9SZWdFeHAgYXMgcG9zaXhHbG9iVG9SZWdFeHAgfSBmcm9tIFwiLi9wb3NpeC9nbG9iX3RvX3JlZ2V4cC50c1wiO1xuaW1wb3J0IHtcbiAgZ2xvYlRvUmVnRXhwIGFzIHdpbmRvd3NHbG9iVG9SZWdFeHAsXG59IGZyb20gXCIuL3dpbmRvd3MvZ2xvYl90b19yZWdleHAudHNcIjtcblxuZXhwb3J0IHR5cGUgeyBHbG9iT3B0aW9ucyB9O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgZ2xvYiBzdHJpbmcgdG8gYSByZWd1bGFyIGV4cHJlc3Npb24uXG4gKlxuICogVHJpZXMgdG8gbWF0Y2ggYmFzaCBnbG9iIGV4cGFuc2lvbiBhcyBjbG9zZWx5IGFzIHBvc3NpYmxlLlxuICpcbiAqIEJhc2ljIGdsb2Igc3ludGF4OlxuICogLSBgKmAgLSBNYXRjaGVzIGV2ZXJ5dGhpbmcgd2l0aG91dCBsZWF2aW5nIHRoZSBwYXRoIHNlZ21lbnQuXG4gKiAtIGA/YCAtIE1hdGNoZXMgYW55IHNpbmdsZSBjaGFyYWN0ZXIuXG4gKiAtIGB7Zm9vLGJhcn1gIC0gTWF0Y2hlcyBgZm9vYCBvciBgYmFyYC5cbiAqIC0gYFthYmNkXWAgLSBNYXRjaGVzIGBhYCwgYGJgLCBgY2Agb3IgYGRgLlxuICogLSBgW2EtZF1gIC0gTWF0Y2hlcyBgYWAsIGBiYCwgYGNgIG9yIGBkYC5cbiAqIC0gYFshYWJjZF1gIC0gTWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3RlciBiZXNpZGVzIGBhYCwgYGJgLCBgY2Agb3IgYGRgLlxuICogLSBgW1s6PGNsYXNzPjpdXWAgLSBNYXRjaGVzIGFueSBjaGFyYWN0ZXIgYmVsb25naW5nIHRvIGA8Y2xhc3M+YC5cbiAqICAgICAtIGBbWzphbG51bTpdXWAgLSBNYXRjaGVzIGFueSBkaWdpdCBvciBsZXR0ZXIuXG4gKiAgICAgLSBgW1s6ZGlnaXQ6XWFiY11gIC0gTWF0Y2hlcyBhbnkgZGlnaXQsIGBhYCwgYGJgIG9yIGBjYC5cbiAqICAgICAtIFNlZSBodHRwczovL2ZhY2VsZXNzdXNlci5naXRodWIuaW8vd2NtYXRjaC9nbG9iLyNwb3NpeC1jaGFyYWN0ZXItY2xhc3Nlc1xuICogICAgICAgZm9yIGEgY29tcGxldGUgbGlzdCBvZiBzdXBwb3J0ZWQgY2hhcmFjdGVyIGNsYXNzZXMuXG4gKiAtIGBcXGAgLSBFc2NhcGVzIHRoZSBuZXh0IGNoYXJhY3RlciBmb3IgYW4gYG9zYCBvdGhlciB0aGFuIGBcIndpbmRvd3NcImAuXG4gKiAtIFxcYCAtIEVzY2FwZXMgdGhlIG5leHQgY2hhcmFjdGVyIGZvciBgb3NgIHNldCB0byBgXCJ3aW5kb3dzXCJgLlxuICogLSBgL2AgLSBQYXRoIHNlcGFyYXRvci5cbiAqIC0gYFxcYCAtIEFkZGl0aW9uYWwgcGF0aCBzZXBhcmF0b3Igb25seSBmb3IgYG9zYCBzZXQgdG8gYFwid2luZG93c1wiYC5cbiAqXG4gKiBFeHRlbmRlZCBzeW50YXg6XG4gKiAtIFJlcXVpcmVzIGB7IGV4dGVuZGVkOiB0cnVlIH1gLlxuICogLSBgPyhmb298YmFyKWAgLSBNYXRjaGVzIDAgb3IgMSBpbnN0YW5jZSBvZiBge2ZvbyxiYXJ9YC5cbiAqIC0gYEAoZm9vfGJhcilgIC0gTWF0Y2hlcyAxIGluc3RhbmNlIG9mIGB7Zm9vLGJhcn1gLiBUaGV5IGJlaGF2ZSB0aGUgc2FtZS5cbiAqIC0gYCooZm9vfGJhcilgIC0gTWF0Y2hlcyBfbl8gaW5zdGFuY2VzIG9mIGB7Zm9vLGJhcn1gLlxuICogLSBgKyhmb298YmFyKWAgLSBNYXRjaGVzIF9uID4gMF8gaW5zdGFuY2VzIG9mIGB7Zm9vLGJhcn1gLlxuICogLSBgIShmb298YmFyKWAgLSBNYXRjaGVzIGFueXRoaW5nIG90aGVyIHRoYW4gYHtmb28sYmFyfWAuXG4gKiAtIFNlZSBodHRwczovL3d3dy5saW51eGpvdXJuYWwuY29tL2NvbnRlbnQvYmFzaC1leHRlbmRlZC1nbG9iYmluZy5cbiAqXG4gKiBHbG9ic3RhciBzeW50YXg6XG4gKiAtIFJlcXVpcmVzIGB7IGdsb2JzdGFyOiB0cnVlIH1gLlxuICogLSBgKipgIC0gTWF0Y2hlcyBhbnkgbnVtYmVyIG9mIGFueSBwYXRoIHNlZ21lbnRzLlxuICogICAgIC0gTXVzdCBjb21wcmlzZSBpdHMgZW50aXJlIHBhdGggc2VnbWVudCBpbiB0aGUgcHJvdmlkZWQgZ2xvYi5cbiAqIC0gU2VlIGh0dHBzOi8vd3d3LmxpbnV4am91cm5hbC5jb20vY29udGVudC9nbG9ic3Rhci1uZXctYmFzaC1nbG9iYmluZy1vcHRpb24uXG4gKlxuICogTm90ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKiAtIFRoZSBnZW5lcmF0ZWQgYFJlZ0V4cGAgaXMgYW5jaG9yZWQgYXQgYm90aCBzdGFydCBhbmQgZW5kLlxuICogLSBSZXBlYXRpbmcgYW5kIHRyYWlsaW5nIHNlcGFyYXRvcnMgYXJlIHRvbGVyYXRlZC4gVHJhaWxpbmcgc2VwYXJhdG9ycyBpbiB0aGVcbiAqICAgcHJvdmlkZWQgZ2xvYiBoYXZlIG5vIG1lYW5pbmcgYW5kIGFyZSBkaXNjYXJkZWQuXG4gKiAtIEFic29sdXRlIGdsb2JzIHdpbGwgb25seSBtYXRjaCBhYnNvbHV0ZSBwYXRocywgZXRjLlxuICogLSBFbXB0eSBnbG9icyB3aWxsIG1hdGNoIG5vdGhpbmcuXG4gKiAtIEFueSBzcGVjaWFsIGdsb2Igc3ludGF4IG11c3QgYmUgY29udGFpbmVkIHRvIG9uZSBwYXRoIHNlZ21lbnQuIEZvciBleGFtcGxlLFxuICogICBgPyhmb298YmFyL2JheilgIGlzIGludmFsaWQuIFRoZSBzZXBhcmF0b3Igd2lsbCB0YWtlIHByZWNlZGVuY2UgYW5kIHRoZVxuICogICBmaXJzdCBzZWdtZW50IGVuZHMgd2l0aCBhbiB1bmNsb3NlZCBncm91cC5cbiAqIC0gSWYgYSBwYXRoIHNlZ21lbnQgZW5kcyB3aXRoIHVuY2xvc2VkIGdyb3VwcyBvciBhIGRhbmdsaW5nIGVzY2FwZSBwcmVmaXgsIGFcbiAqICAgcGFyc2UgZXJyb3IgaGFzIG9jY3VycmVkLiBFdmVyeSBjaGFyYWN0ZXIgZm9yIHRoYXQgc2VnbWVudCBpcyB0YWtlblxuICogICBsaXRlcmFsbHkgaW4gdGhpcyBldmVudC5cbiAqXG4gKiBMaW1pdGF0aW9uczpcbiAqIC0gQSBuZWdhdGl2ZSBncm91cCBsaWtlIGAhKGZvb3xiYXIpYCB3aWxsIHdyb25nbHkgYmUgY29udmVydGVkIHRvIGEgbmVnYXRpdmVcbiAqICAgbG9vay1haGVhZCBmb2xsb3dlZCBieSBhIHdpbGRjYXJkLiBUaGlzIG1lYW5zIHRoYXQgYCEoZm9vKS5qc2Agd2lsbCB3cm9uZ2x5XG4gKiAgIGZhaWwgdG8gbWF0Y2ggYGZvb2Jhci5qc2AsIGV2ZW4gdGhvdWdoIGBmb29iYXJgIGlzIG5vdCBgZm9vYC4gRWZmZWN0aXZlbHksXG4gKiAgIGAhKGZvb3xiYXIpYCBpcyB0cmVhdGVkIGxpa2UgYCEoQChmb298YmFyKSopYC4gVGhpcyB3aWxsIHdvcmsgY29ycmVjdGx5IGlmXG4gKiAgIHRoZSBncm91cCBvY2N1cnMgbm90IG5lc3RlZCBhdCB0aGUgZW5kIG9mIHRoZSBzZWdtZW50LlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZ2xvYlRvUmVnRXhwIH0gZnJvbSBcIkBzdGQvcGF0aC9nbG9iLXRvLXJlZ2V4cFwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogaWYgKERlbm8uYnVpbGQub3MgPT09IFwid2luZG93c1wiKSB7XG4gKiAgIGFzc2VydEVxdWFscyhnbG9iVG9SZWdFeHAoXCIqLmpzXCIpLCAvXlteXFxcXC9dKlxcLmpzKD86XFxcXHxcXC8pKiQvKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGFzc2VydEVxdWFscyhnbG9iVG9SZWdFeHAoXCIqLmpzXCIpLCAvXlteL10qXFwuanNcXC8qJC8pO1xuICogfVxuICogYGBgXG4gKlxuICogQHBhcmFtIGdsb2IgR2xvYiBzdHJpbmcgdG8gY29udmVydC5cbiAqIEBwYXJhbSBvcHRpb25zIENvbnZlcnNpb24gb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gZXF1aXZhbGVudCB0byB0aGUgZ2xvYi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdsb2JUb1JlZ0V4cChcbiAgZ2xvYjogc3RyaW5nLFxuICBvcHRpb25zOiBHbG9iT3B0aW9ucyA9IHt9LFxuKTogUmVnRXhwIHtcbiAgcmV0dXJuIGlzV2luZG93c1xuICAgID8gd2luZG93c0dsb2JUb1JlZ0V4cChnbG9iLCBvcHRpb25zKVxuICAgIDogcG9zaXhHbG9iVG9SZWdFeHAoZ2xvYiwgb3B0aW9ucyk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUdyQyxTQUFTLFNBQVMsUUFBUSxXQUFXO0FBRXJDLFNBQVMsZ0JBQWdCLGlCQUFpQixRQUFRLDRCQUE0QjtBQUM5RSxTQUNFLGdCQUFnQixtQkFBbUIsUUFDOUIsOEJBQThCO0FBSXJDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0F3RUMsR0FDRCxPQUFPLFNBQVMsYUFDZCxJQUFZLEVBQ1osVUFBdUIsQ0FBQyxDQUFDO0VBRXpCLE9BQU8sWUFDSCxvQkFBb0IsTUFBTSxXQUMxQixrQkFBa0IsTUFBTTtBQUM5QiJ9 +// denoCacheMetadata=4065142243584942294,6630785705735499786
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/0a97246903f0a65f9d85f5bd92a9fc811546233af84935178147a3841cc915ed.js b/vendor/gen/https/jsr.io/0a97246903f0a65f9d85f5bd92a9fc811546233af84935178147a3841cc915ed.js new file mode 100644 index 0000000..557f954 --- /dev/null +++ b/vendor/gen/https/jsr.io/0a97246903f0a65f9d85f5bd92a9fc811546233af84935178147a3841cc915ed.js @@ -0,0 +1,53 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { normalizeString } from "../_common/normalize_string.ts"; +import { assertPath } from "../_common/assert_path.ts"; +import { isPosixPathSeparator } from "./_util.ts"; +/** + * Resolves path segments into a `path`. + * + * @example Usage + * ```ts + * import { resolve } from "@std/path/posix/resolve"; + * import { assertEquals } from "@std/assert"; + * + * const path = resolve("/foo", "bar", "baz/asdf", "quux", ".."); + * assertEquals(path, "/foo/bar/baz/asdf"); + * ``` + * + * @param pathSegments The path segments to resolve. + * @returns The resolved path. + */ export function resolve(...pathSegments) { + let resolvedPath = ""; + let resolvedAbsolute = false; + for(let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--){ + let path; + if (i >= 0) path = pathSegments[i]; + else { + // deno-lint-ignore no-explicit-any + const { Deno } = globalThis; + if (typeof Deno?.cwd !== "function") { + throw new TypeError("Resolved a relative path without a current working directory (CWD)"); + } + path = Deno.cwd(); + } + assertPath(path); + // Skip empty entries + if (path.length === 0) { + continue; + } + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = isPosixPathSeparator(path.charCodeAt(0)); + } + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when Deno.cwd() fails) + // Normalize the path + resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, "/", isPosixPathSeparator); + if (resolvedAbsolute) { + if (resolvedPath.length > 0) return `/${resolvedPath}`; + else return "/"; + } else if (resolvedPath.length > 0) return resolvedPath; + else return "."; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9wb3NpeC9yZXNvbHZlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IG5vcm1hbGl6ZVN0cmluZyB9IGZyb20gXCIuLi9fY29tbW9uL25vcm1hbGl6ZV9zdHJpbmcudHNcIjtcbmltcG9ydCB7IGFzc2VydFBhdGggfSBmcm9tIFwiLi4vX2NvbW1vbi9hc3NlcnRfcGF0aC50c1wiO1xuaW1wb3J0IHsgaXNQb3NpeFBhdGhTZXBhcmF0b3IgfSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuXG4vKipcbiAqIFJlc29sdmVzIHBhdGggc2VnbWVudHMgaW50byBhIGBwYXRoYC5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHJlc29sdmUgfSBmcm9tIFwiQHN0ZC9wYXRoL3Bvc2l4L3Jlc29sdmVcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IHBhdGggPSByZXNvbHZlKFwiL2Zvb1wiLCBcImJhclwiLCBcImJhei9hc2RmXCIsIFwicXV1eFwiLCBcIi4uXCIpO1xuICogYXNzZXJ0RXF1YWxzKHBhdGgsIFwiL2Zvby9iYXIvYmF6L2FzZGZcIik7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gcGF0aFNlZ21lbnRzIFRoZSBwYXRoIHNlZ21lbnRzIHRvIHJlc29sdmUuXG4gKiBAcmV0dXJucyBUaGUgcmVzb2x2ZWQgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmUoLi4ucGF0aFNlZ21lbnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIGxldCByZXNvbHZlZFBhdGggPSBcIlwiO1xuICBsZXQgcmVzb2x2ZWRBYnNvbHV0ZSA9IGZhbHNlO1xuXG4gIGZvciAobGV0IGkgPSBwYXRoU2VnbWVudHMubGVuZ3RoIC0gMTsgaSA+PSAtMSAmJiAhcmVzb2x2ZWRBYnNvbHV0ZTsgaS0tKSB7XG4gICAgbGV0IHBhdGg6IHN0cmluZztcblxuICAgIGlmIChpID49IDApIHBhdGggPSBwYXRoU2VnbWVudHNbaV0hO1xuICAgIGVsc2Uge1xuICAgICAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgICAgIGNvbnN0IHsgRGVubyB9ID0gZ2xvYmFsVGhpcyBhcyBhbnk7XG4gICAgICBpZiAodHlwZW9mIERlbm8/LmN3ZCAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgXCJSZXNvbHZlZCBhIHJlbGF0aXZlIHBhdGggd2l0aG91dCBhIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgKENXRClcIixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHBhdGggPSBEZW5vLmN3ZCgpO1xuICAgIH1cblxuICAgIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgICAvLyBTa2lwIGVtcHR5IGVudHJpZXNcbiAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHJlc29sdmVkUGF0aCA9IGAke3BhdGh9LyR7cmVzb2x2ZWRQYXRofWA7XG4gICAgcmVzb2x2ZWRBYnNvbHV0ZSA9IGlzUG9zaXhQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdCgwKSk7XG4gIH1cblxuICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwYXRoIHNob3VsZCBiZSByZXNvbHZlZCB0byBhIGZ1bGwgYWJzb2x1dGUgcGF0aCwgYnV0XG4gIC8vIGhhbmRsZSByZWxhdGl2ZSBwYXRocyB0byBiZSBzYWZlIChtaWdodCBoYXBwZW4gd2hlbiBEZW5vLmN3ZCgpIGZhaWxzKVxuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgcGF0aFxuICByZXNvbHZlZFBhdGggPSBub3JtYWxpemVTdHJpbmcoXG4gICAgcmVzb2x2ZWRQYXRoLFxuICAgICFyZXNvbHZlZEFic29sdXRlLFxuICAgIFwiL1wiLFxuICAgIGlzUG9zaXhQYXRoU2VwYXJhdG9yLFxuICApO1xuXG4gIGlmIChyZXNvbHZlZEFic29sdXRlKSB7XG4gICAgaWYgKHJlc29sdmVkUGF0aC5sZW5ndGggPiAwKSByZXR1cm4gYC8ke3Jlc29sdmVkUGF0aH1gO1xuICAgIGVsc2UgcmV0dXJuIFwiL1wiO1xuICB9IGVsc2UgaWYgKHJlc29sdmVkUGF0aC5sZW5ndGggPiAwKSByZXR1cm4gcmVzb2x2ZWRQYXRoO1xuICBlbHNlIHJldHVybiBcIi5cIjtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBRXJDLFNBQVMsZUFBZSxRQUFRLGlDQUFpQztBQUNqRSxTQUFTLFVBQVUsUUFBUSw0QkFBNEI7QUFDdkQsU0FBUyxvQkFBb0IsUUFBUSxhQUFhO0FBRWxEOzs7Ozs7Ozs7Ozs7OztDQWNDLEdBQ0QsT0FBTyxTQUFTLFFBQVEsR0FBRyxZQUFzQjtFQUMvQyxJQUFJLGVBQWU7RUFDbkIsSUFBSSxtQkFBbUI7RUFFdkIsSUFBSyxJQUFJLElBQUksYUFBYSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLGtCQUFrQixJQUFLO0lBQ3ZFLElBQUk7SUFFSixJQUFJLEtBQUssR0FBRyxPQUFPLFlBQVksQ0FBQyxFQUFFO1NBQzdCO01BQ0gsbUNBQW1DO01BQ25DLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRztNQUNqQixJQUFJLE9BQU8sTUFBTSxRQUFRLFlBQVk7UUFDbkMsTUFBTSxJQUFJLFVBQ1I7TUFFSjtNQUNBLE9BQU8sS0FBSyxHQUFHO0lBQ2pCO0lBRUEsV0FBVztJQUVYLHFCQUFxQjtJQUNyQixJQUFJLEtBQUssTUFBTSxLQUFLLEdBQUc7TUFDckI7SUFDRjtJQUVBLGVBQWUsR0FBRyxLQUFLLENBQUMsRUFBRSxjQUFjO0lBQ3hDLG1CQUFtQixxQkFBcUIsS0FBSyxVQUFVLENBQUM7RUFDMUQ7RUFFQSx5RUFBeUU7RUFDekUsd0VBQXdFO0VBRXhFLHFCQUFxQjtFQUNyQixlQUFlLGdCQUNiLGNBQ0EsQ0FBQyxrQkFDRCxLQUNBO0VBR0YsSUFBSSxrQkFBa0I7SUFDcEIsSUFBSSxhQUFhLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEVBQUUsY0FBYztTQUNqRCxPQUFPO0VBQ2QsT0FBTyxJQUFJLGFBQWEsTUFBTSxHQUFHLEdBQUcsT0FBTztPQUN0QyxPQUFPO0FBQ2QifQ== +// denoCacheMetadata=5383713626755671370,14741270772440329704
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/0bc2c76582e1b8a41cb5a25cac9c0a9f93939f069c0738a0944227ae078f0834.js b/vendor/gen/https/jsr.io/0bc2c76582e1b8a41cb5a25cac9c0a9f93939f069c0738a0944227ae078f0834.js new file mode 100644 index 0000000..1a2f060 --- /dev/null +++ b/vendor/gen/https/jsr.io/0bc2c76582e1b8a41cb5a25cac9c0a9f93939f069c0738a0944227ae078f0834.js @@ -0,0 +1,134 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +import { isSubdir } from "./_is_subdir.ts"; +import { isSamePath } from "./_is_same_path.ts"; +const EXISTS_ERROR = new Deno.errors.AlreadyExists("dest already exists."); +/** + * Asynchronously moves a file or directory (along with its contents). + * + * Requires `--allow-read` and `--allow-write` permissions. + * + * @see {@link https://docs.deno.com/runtime/manual/basics/permissions#file-system-access} + * for more information on Deno's permissions system. + * + * @param src The source file or directory as a string or URL. + * @param dest The destination file or directory as a string or URL. + * @param options Options for the move operation. + * @throws {Deno.errors.AlreadyExists} If `dest` already exists and + * `options.overwrite` is `false`. + * @throws {Deno.errors.NotSupported} If `src` is a sub-directory of `dest`. + * + * @returns A void promise that resolves once the operation completes. + * + * @example Basic usage + * ```ts ignore + * import { move } from "@std/fs/move"; + * + * await move("./foo", "./bar"); + * ``` + * + * This will move the file or directory at `./foo` to `./bar` without + * overwriting. + * + * @example Overwriting + * ```ts ignore + * import { move } from "@std/fs/move"; + * + * await move("./foo", "./bar", { overwrite: true }); + * ``` + * + * This will move the file or directory at `./foo` to `./bar`, overwriting + * `./bar` if it already exists. + */ export async function move(src, dest, options) { + const { overwrite = false } = options ?? {}; + const srcStat = await Deno.stat(src); + if (srcStat.isDirectory && (isSubdir(src, dest) || isSamePath(src, dest))) { + throw new Deno.errors.NotSupported(`Cannot move '${src}' to a subdirectory of itself, '${dest}'.`); + } + if (overwrite) { + if (isSamePath(src, dest)) return; + try { + await Deno.remove(dest, { + recursive: true + }); + } catch (error) { + if (!(error instanceof Deno.errors.NotFound)) { + throw error; + } + } + } else { + try { + await Deno.lstat(dest); + return Promise.reject(EXISTS_ERROR); + } catch { + // Do nothing... + } + } + await Deno.rename(src, dest); +} +/** + * Synchronously moves a file or directory (along with its contents). + * + * Requires `--allow-read` and `--allow-write` permissions. + * + * @see {@link https://docs.deno.com/runtime/manual/basics/permissions#file-system-access} + * for more information on Deno's permissions system. + * + * @param src The source file or directory as a string or URL. + * @param dest The destination file or directory as a string or URL. + * @param options Options for the move operation. + * @throws {Deno.errors.AlreadyExists} If `dest` already exists and + * `options.overwrite` is `false`. + * @throws {Deno.errors.NotSupported} If `src` is a sub-directory of `dest`. + * + * @returns A void value that returns once the operation completes. + * + * @example Basic usage + * ```ts ignore + * import { moveSync } from "@std/fs/move"; + * + * moveSync("./foo", "./bar"); + * ``` + * + * This will move the file or directory at `./foo` to `./bar` without + * overwriting. + * + * @example Overwriting + * ```ts ignore + * import { moveSync } from "@std/fs/move"; + * + * moveSync("./foo", "./bar", { overwrite: true }); + * ``` + * + * This will move the file or directory at `./foo` to `./bar`, overwriting + * `./bar` if it already exists. + */ export function moveSync(src, dest, options) { + const { overwrite = false } = options ?? {}; + const srcStat = Deno.statSync(src); + if (srcStat.isDirectory && (isSubdir(src, dest) || isSamePath(src, dest))) { + throw new Deno.errors.NotSupported(`Cannot move '${src}' to a subdirectory of itself, '${dest}'.`); + } + if (overwrite) { + if (isSamePath(src, dest)) return; + try { + Deno.removeSync(dest, { + recursive: true + }); + } catch (error) { + if (!(error instanceof Deno.errors.NotFound)) { + throw error; + } + } + } else { + try { + Deno.lstatSync(dest); + throw EXISTS_ERROR; + } catch (error) { + if (error === EXISTS_ERROR) { + throw error; + } + } + } + Deno.renameSync(src, dest); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnMvMS4wLjE3L21vdmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbmltcG9ydCB7IGlzU3ViZGlyIH0gZnJvbSBcIi4vX2lzX3N1YmRpci50c1wiO1xuaW1wb3J0IHsgaXNTYW1lUGF0aCB9IGZyb20gXCIuL19pc19zYW1lX3BhdGgudHNcIjtcblxuY29uc3QgRVhJU1RTX0VSUk9SID0gbmV3IERlbm8uZXJyb3JzLkFscmVhZHlFeGlzdHMoXCJkZXN0IGFscmVhZHkgZXhpc3RzLlwiKTtcblxuLyoqIE9wdGlvbnMgZm9yIHtAbGlua2NvZGUgbW92ZX0gYW5kIHtAbGlua2NvZGUgbW92ZVN5bmN9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb3ZlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkZXN0aW5hdGlvbiBmaWxlIHNob3VsZCBiZSBvdmVyd3JpdHRlbiBpZiBpdCBhbHJlYWR5IGV4aXN0cy5cbiAgICpcbiAgICogQGRlZmF1bHQge2ZhbHNlfVxuICAgKi9cbiAgb3ZlcndyaXRlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBc3luY2hyb25vdXNseSBtb3ZlcyBhIGZpbGUgb3IgZGlyZWN0b3J5IChhbG9uZyB3aXRoIGl0cyBjb250ZW50cykuXG4gKlxuICogUmVxdWlyZXMgYC0tYWxsb3ctcmVhZGAgYW5kIGAtLWFsbG93LXdyaXRlYCBwZXJtaXNzaW9ucy5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2RvY3MuZGVuby5jb20vcnVudGltZS9tYW51YWwvYmFzaWNzL3Blcm1pc3Npb25zI2ZpbGUtc3lzdGVtLWFjY2Vzc31cbiAqIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIERlbm8ncyBwZXJtaXNzaW9ucyBzeXN0ZW0uXG4gKlxuICogQHBhcmFtIHNyYyBUaGUgc291cmNlIGZpbGUgb3IgZGlyZWN0b3J5IGFzIGEgc3RyaW5nIG9yIFVSTC5cbiAqIEBwYXJhbSBkZXN0IFRoZSBkZXN0aW5hdGlvbiBmaWxlIG9yIGRpcmVjdG9yeSBhcyBhIHN0cmluZyBvciBVUkwuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciB0aGUgbW92ZSBvcGVyYXRpb24uXG4gKiBAdGhyb3dzIHtEZW5vLmVycm9ycy5BbHJlYWR5RXhpc3RzfSBJZiBgZGVzdGAgYWxyZWFkeSBleGlzdHMgYW5kXG4gKiBgb3B0aW9ucy5vdmVyd3JpdGVgIGlzIGBmYWxzZWAuXG4gKiBAdGhyb3dzIHtEZW5vLmVycm9ycy5Ob3RTdXBwb3J0ZWR9IElmIGBzcmNgIGlzIGEgc3ViLWRpcmVjdG9yeSBvZiBgZGVzdGAuXG4gKlxuICogQHJldHVybnMgQSB2b2lkIHByb21pc2UgdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBvcGVyYXRpb24gY29tcGxldGVzLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiBgYGB0cyBpZ25vcmVcbiAqIGltcG9ydCB7IG1vdmUgfSBmcm9tIFwiQHN0ZC9mcy9tb3ZlXCI7XG4gKlxuICogYXdhaXQgbW92ZShcIi4vZm9vXCIsIFwiLi9iYXJcIik7XG4gKiBgYGBcbiAqXG4gKiBUaGlzIHdpbGwgbW92ZSB0aGUgZmlsZSBvciBkaXJlY3RvcnkgYXQgYC4vZm9vYCB0byBgLi9iYXJgIHdpdGhvdXRcbiAqIG92ZXJ3cml0aW5nLlxuICpcbiAqIEBleGFtcGxlIE92ZXJ3cml0aW5nXG4gKiBgYGB0cyBpZ25vcmVcbiAqIGltcG9ydCB7IG1vdmUgfSBmcm9tIFwiQHN0ZC9mcy9tb3ZlXCI7XG4gKlxuICogYXdhaXQgbW92ZShcIi4vZm9vXCIsIFwiLi9iYXJcIiwgeyBvdmVyd3JpdGU6IHRydWUgfSk7XG4gKiBgYGBcbiAqXG4gKiBUaGlzIHdpbGwgbW92ZSB0aGUgZmlsZSBvciBkaXJlY3RvcnkgYXQgYC4vZm9vYCB0byBgLi9iYXJgLCBvdmVyd3JpdGluZ1xuICogYC4vYmFyYCBpZiBpdCBhbHJlYWR5IGV4aXN0cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1vdmUoXG4gIHNyYzogc3RyaW5nIHwgVVJMLFxuICBkZXN0OiBzdHJpbmcgfCBVUkwsXG4gIG9wdGlvbnM/OiBNb3ZlT3B0aW9ucyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IG92ZXJ3cml0ZSA9IGZhbHNlIH0gPSBvcHRpb25zID8/IHt9O1xuXG4gIGNvbnN0IHNyY1N0YXQgPSBhd2FpdCBEZW5vLnN0YXQoc3JjKTtcblxuICBpZiAoXG4gICAgc3JjU3RhdC5pc0RpcmVjdG9yeSAmJlxuICAgIChpc1N1YmRpcihzcmMsIGRlc3QpIHx8IGlzU2FtZVBhdGgoc3JjLCBkZXN0KSlcbiAgKSB7XG4gICAgdGhyb3cgbmV3IERlbm8uZXJyb3JzLk5vdFN1cHBvcnRlZChcbiAgICAgIGBDYW5ub3QgbW92ZSAnJHtzcmN9JyB0byBhIHN1YmRpcmVjdG9yeSBvZiBpdHNlbGYsICcke2Rlc3R9Jy5gLFxuICAgICk7XG4gIH1cblxuICBpZiAob3ZlcndyaXRlKSB7XG4gICAgaWYgKGlzU2FtZVBhdGgoc3JjLCBkZXN0KSkgcmV0dXJuO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBEZW5vLnJlbW92ZShkZXN0LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBEZW5vLmVycm9ycy5Ob3RGb3VuZCkpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBEZW5vLmxzdGF0KGRlc3QpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KEVYSVNUU19FUlJPUik7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBEbyBub3RoaW5nLi4uXG4gICAgfVxuICB9XG5cbiAgYXdhaXQgRGVuby5yZW5hbWUoc3JjLCBkZXN0KTtcbn1cblxuLyoqXG4gKiBTeW5jaHJvbm91c2x5IG1vdmVzIGEgZmlsZSBvciBkaXJlY3RvcnkgKGFsb25nIHdpdGggaXRzIGNvbnRlbnRzKS5cbiAqXG4gKiBSZXF1aXJlcyBgLS1hbGxvdy1yZWFkYCBhbmQgYC0tYWxsb3ctd3JpdGVgIHBlcm1pc3Npb25zLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZG9jcy5kZW5vLmNvbS9ydW50aW1lL21hbnVhbC9iYXNpY3MvcGVybWlzc2lvbnMjZmlsZS1zeXN0ZW0tYWNjZXNzfVxuICogZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gRGVubydzIHBlcm1pc3Npb25zIHN5c3RlbS5cbiAqXG4gKiBAcGFyYW0gc3JjIFRoZSBzb3VyY2UgZmlsZSBvciBkaXJlY3RvcnkgYXMgYSBzdHJpbmcgb3IgVVJMLlxuICogQHBhcmFtIGRlc3QgVGhlIGRlc3RpbmF0aW9uIGZpbGUgb3IgZGlyZWN0b3J5IGFzIGEgc3RyaW5nIG9yIFVSTC5cbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIHRoZSBtb3ZlIG9wZXJhdGlvbi5cbiAqIEB0aHJvd3Mge0Rlbm8uZXJyb3JzLkFscmVhZHlFeGlzdHN9IElmIGBkZXN0YCBhbHJlYWR5IGV4aXN0cyBhbmRcbiAqIGBvcHRpb25zLm92ZXJ3cml0ZWAgaXMgYGZhbHNlYC5cbiAqIEB0aHJvd3Mge0Rlbm8uZXJyb3JzLk5vdFN1cHBvcnRlZH0gSWYgYHNyY2AgaXMgYSBzdWItZGlyZWN0b3J5IG9mIGBkZXN0YC5cbiAqXG4gKiBAcmV0dXJucyBBIHZvaWQgdmFsdWUgdGhhdCByZXR1cm5zIG9uY2UgdGhlIG9wZXJhdGlvbiBjb21wbGV0ZXMuXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgbW92ZVN5bmMgfSBmcm9tIFwiQHN0ZC9mcy9tb3ZlXCI7XG4gKlxuICogbW92ZVN5bmMoXCIuL2Zvb1wiLCBcIi4vYmFyXCIpO1xuICogYGBgXG4gKlxuICogVGhpcyB3aWxsIG1vdmUgdGhlIGZpbGUgb3IgZGlyZWN0b3J5IGF0IGAuL2Zvb2AgdG8gYC4vYmFyYCB3aXRob3V0XG4gKiBvdmVyd3JpdGluZy5cbiAqXG4gKiBAZXhhbXBsZSBPdmVyd3JpdGluZ1xuICogYGBgdHMgaWdub3JlXG4gKiBpbXBvcnQgeyBtb3ZlU3luYyB9IGZyb20gXCJAc3RkL2ZzL21vdmVcIjtcbiAqXG4gKiBtb3ZlU3luYyhcIi4vZm9vXCIsIFwiLi9iYXJcIiwgeyBvdmVyd3JpdGU6IHRydWUgfSk7XG4gKiBgYGBcbiAqXG4gKiBUaGlzIHdpbGwgbW92ZSB0aGUgZmlsZSBvciBkaXJlY3RvcnkgYXQgYC4vZm9vYCB0byBgLi9iYXJgLCBvdmVyd3JpdGluZ1xuICogYC4vYmFyYCBpZiBpdCBhbHJlYWR5IGV4aXN0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vdmVTeW5jKFxuICBzcmM6IHN0cmluZyB8IFVSTCxcbiAgZGVzdDogc3RyaW5nIHwgVVJMLFxuICBvcHRpb25zPzogTW92ZU9wdGlvbnMsXG4pOiB2b2lkIHtcbiAgY29uc3QgeyBvdmVyd3JpdGUgPSBmYWxzZSB9ID0gb3B0aW9ucyA/PyB7fTtcblxuICBjb25zdCBzcmNTdGF0ID0gRGVuby5zdGF0U3luYyhzcmMpO1xuXG4gIGlmIChcbiAgICBzcmNTdGF0LmlzRGlyZWN0b3J5ICYmXG4gICAgKGlzU3ViZGlyKHNyYywgZGVzdCkgfHwgaXNTYW1lUGF0aChzcmMsIGRlc3QpKVxuICApIHtcbiAgICB0aHJvdyBuZXcgRGVuby5lcnJvcnMuTm90U3VwcG9ydGVkKFxuICAgICAgYENhbm5vdCBtb3ZlICcke3NyY30nIHRvIGEgc3ViZGlyZWN0b3J5IG9mIGl0c2VsZiwgJyR7ZGVzdH0nLmAsXG4gICAgKTtcbiAgfVxuXG4gIGlmIChvdmVyd3JpdGUpIHtcbiAgICBpZiAoaXNTYW1lUGF0aChzcmMsIGRlc3QpKSByZXR1cm47XG4gICAgdHJ5IHtcbiAgICAgIERlbm8ucmVtb3ZlU3luYyhkZXN0LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBEZW5vLmVycm9ycy5Ob3RGb3VuZCkpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICBEZW5vLmxzdGF0U3luYyhkZXN0KTtcbiAgICAgIHRocm93IEVYSVNUU19FUlJPUjtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yID09PSBFWElTVFNfRVJST1IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgRGVuby5yZW5hbWVTeW5jKHNyYywgZGVzdCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELFNBQVMsUUFBUSxRQUFRLGtCQUFrQjtBQUMzQyxTQUFTLFVBQVUsUUFBUSxxQkFBcUI7QUFFaEQsTUFBTSxlQUFlLElBQUksS0FBSyxNQUFNLENBQUMsYUFBYSxDQUFDO0FBWW5EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FvQ0MsR0FDRCxPQUFPLGVBQWUsS0FDcEIsR0FBaUIsRUFDakIsSUFBa0IsRUFDbEIsT0FBcUI7RUFFckIsTUFBTSxFQUFFLFlBQVksS0FBSyxFQUFFLEdBQUcsV0FBVyxDQUFDO0VBRTFDLE1BQU0sVUFBVSxNQUFNLEtBQUssSUFBSSxDQUFDO0VBRWhDLElBQ0UsUUFBUSxXQUFXLElBQ25CLENBQUMsU0FBUyxLQUFLLFNBQVMsV0FBVyxLQUFLLEtBQUssR0FDN0M7SUFDQSxNQUFNLElBQUksS0FBSyxNQUFNLENBQUMsWUFBWSxDQUNoQyxDQUFDLGFBQWEsRUFBRSxJQUFJLGdDQUFnQyxFQUFFLEtBQUssRUFBRSxDQUFDO0VBRWxFO0VBRUEsSUFBSSxXQUFXO0lBQ2IsSUFBSSxXQUFXLEtBQUssT0FBTztJQUMzQixJQUFJO01BQ0YsTUFBTSxLQUFLLE1BQU0sQ0FBQyxNQUFNO1FBQUUsV0FBVztNQUFLO0lBQzVDLEVBQUUsT0FBTyxPQUFPO01BQ2QsSUFBSSxDQUFDLENBQUMsaUJBQWlCLEtBQUssTUFBTSxDQUFDLFFBQVEsR0FBRztRQUM1QyxNQUFNO01BQ1I7SUFDRjtFQUNGLE9BQU87SUFDTCxJQUFJO01BQ0YsTUFBTSxLQUFLLEtBQUssQ0FBQztNQUNqQixPQUFPLFFBQVEsTUFBTSxDQUFDO0lBQ3hCLEVBQUUsT0FBTTtJQUNOLGdCQUFnQjtJQUNsQjtFQUNGO0VBRUEsTUFBTSxLQUFLLE1BQU0sQ0FBQyxLQUFLO0FBQ3pCO0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW9DQyxHQUNELE9BQU8sU0FBUyxTQUNkLEdBQWlCLEVBQ2pCLElBQWtCLEVBQ2xCLE9BQXFCO0VBRXJCLE1BQU0sRUFBRSxZQUFZLEtBQUssRUFBRSxHQUFHLFdBQVcsQ0FBQztFQUUxQyxNQUFNLFVBQVUsS0FBSyxRQUFRLENBQUM7RUFFOUIsSUFDRSxRQUFRLFdBQVcsSUFDbkIsQ0FBQyxTQUFTLEtBQUssU0FBUyxXQUFXLEtBQUssS0FBSyxHQUM3QztJQUNBLE1BQU0sSUFBSSxLQUFLLE1BQU0sQ0FBQyxZQUFZLENBQ2hDLENBQUMsYUFBYSxFQUFFLElBQUksZ0NBQWdDLEVBQUUsS0FBSyxFQUFFLENBQUM7RUFFbEU7RUFFQSxJQUFJLFdBQVc7SUFDYixJQUFJLFdBQVcsS0FBSyxPQUFPO0lBQzNCLElBQUk7TUFDRixLQUFLLFVBQVUsQ0FBQyxNQUFNO1FBQUUsV0FBVztNQUFLO0lBQzFDLEVBQUUsT0FBTyxPQUFPO01BQ2QsSUFBSSxDQUFDLENBQUMsaUJBQWlCLEtBQUssTUFBTSxDQUFDLFFBQVEsR0FBRztRQUM1QyxNQUFNO01BQ1I7SUFDRjtFQUNGLE9BQU87SUFDTCxJQUFJO01BQ0YsS0FBSyxTQUFTLENBQUM7TUFDZixNQUFNO0lBQ1IsRUFBRSxPQUFPLE9BQU87TUFDZCxJQUFJLFVBQVUsY0FBYztRQUMxQixNQUFNO01BQ1I7SUFDRjtFQUNGO0VBRUEsS0FBSyxVQUFVLENBQUMsS0FBSztBQUN2QiJ9 +// denoCacheMetadata=806473274462951643,2715127819446038078
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/0c4d9698d06eda300c8819213081f7e749cce45215b2584b8ad836b846a1436f.js b/vendor/gen/https/jsr.io/0c4d9698d06eda300c8819213081f7e749cce45215b2584b8ad836b846a1436f.js new file mode 100644 index 0000000..741d7b3 --- /dev/null +++ b/vendor/gen/https/jsr.io/0c4d9698d06eda300c8819213081f7e749cce45215b2584b8ad836b846a1436f.js @@ -0,0 +1,859 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +// This module is generated from {@link https://www.iana.org/assignments/http-fields/http-fields.xhtml#field-names | IANA Hypertext Transfer Protocol (HTTP) Field Name Registry} +/** + * HTTP Headers with status permanent + * + * @experimental **UNSTABLE**: New API, yet to be vetted. + * + * @see {@link https://www.iana.org/assignments/http-fields/http-fields.xhtml#field-names | IANA Hypertext Transfer Protocol (HTTP) Field Name Registry} + */ export const HEADER = { + /** + * HTTP Header A-IM + * + * @see {@link https://www.iana.org/go/rfc3229 | RFC 3229: Delta encoding in HTTP} + */ AIm: "A-IM", + /** + * HTTP Header Accept + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 12.5.1: HTTP Semantics} + */ Accept: "Accept", + /** + * HTTP Header Accept-Additions + * + * @see {@link https://www.iana.org/go/rfc2324 | RFC 2324: Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)} + */ AcceptAdditions: "Accept-Additions", + /** + * HTTP Header Accept-CH + * + * @see {@link https://www.iana.org/go/rfc8942 | RFC 8942, Section 3.1: HTTP Client Hints} + */ AcceptCh: "Accept-CH", + /** + * HTTP Header Accept-Datetime + * + * @see {@link https://www.iana.org/go/rfc7089 | RFC 7089: HTTP Framework for Time-Based Access to Resource States -- Memento} + */ AcceptDatetime: "Accept-Datetime", + /** + * HTTP Header Accept-Encoding + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 12.5.3: HTTP Semantics} + */ AcceptEncoding: "Accept-Encoding", + /** + * HTTP Header Accept-Features + * + * @see {@link https://www.iana.org/go/rfc2295 | RFC 2295: Transparent Content Negotiation in HTTP} + */ AcceptFeatures: "Accept-Features", + /** + * HTTP Header Accept-Language + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 12.5.4: HTTP Semantics} + */ AcceptLanguage: "Accept-Language", + /** + * HTTP Header Accept-Patch + * + * @see {@link https://www.iana.org/go/rfc5789 | RFC 5789: PATCH Method for HTTP} + */ AcceptPatch: "Accept-Patch", + /** + * HTTP Header Accept-Post + * + * @see {@link https://www.w3.org/TR/ldp | Linked Data Platform 1.0} + */ AcceptPost: "Accept-Post", + /** + * HTTP Header Accept-Ranges + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 14.3: HTTP Semantics} + */ AcceptRanges: "Accept-Ranges", + /** + * HTTP Header Accept-Signature + * + * @see {@link https://www.iana.org/go/draft-ietf-httpbis-message-signatures-19 | RFC-ietf-httpbis-message-signatures-19, Section 5.1: HTTP Message Signatures} + */ AcceptSignature: "Accept-Signature", + /** + * HTTP Header Access-Control-Allow-Credentials + * + * @see {@link https://fetch.spec.whatwg.org/#http-access-control-allow-credentials | Fetch} + */ AccessControlAllowCredentials: "Access-Control-Allow-Credentials", + /** + * HTTP Header Access-Control-Allow-Headers + * + * @see {@link https://fetch.spec.whatwg.org/#http-access-control-allow-headers | Fetch} + */ AccessControlAllowHeaders: "Access-Control-Allow-Headers", + /** + * HTTP Header Access-Control-Allow-Methods + * + * @see {@link https://fetch.spec.whatwg.org/#http-access-control-allow-methods | Fetch} + */ AccessControlAllowMethods: "Access-Control-Allow-Methods", + /** + * HTTP Header Access-Control-Allow-Origin + * + * @see {@link https://fetch.spec.whatwg.org/#http-access-control-allow-origin | Fetch} + */ AccessControlAllowOrigin: "Access-Control-Allow-Origin", + /** + * HTTP Header Access-Control-Expose-Headers + * + * @see {@link https://fetch.spec.whatwg.org/#http-access-control-expose-headers | Fetch} + */ AccessControlExposeHeaders: "Access-Control-Expose-Headers", + /** + * HTTP Header Access-Control-Max-Age + * + * @see {@link https://fetch.spec.whatwg.org/#http-access-control-max-age | Fetch} + */ AccessControlMaxAge: "Access-Control-Max-Age", + /** + * HTTP Header Access-Control-Request-Headers + * + * @see {@link https://fetch.spec.whatwg.org/#http-access-control-request-headers | Fetch} + */ AccessControlRequestHeaders: "Access-Control-Request-Headers", + /** + * HTTP Header Access-Control-Request-Method + * + * @see {@link https://fetch.spec.whatwg.org/#http-access-control-request-method | Fetch} + */ AccessControlRequestMethod: "Access-Control-Request-Method", + /** + * HTTP Header Age + * + * @see {@link https://www.iana.org/go/rfc9111 | RFC9111, Section 5.1: HTTP Caching} + */ Age: "Age", + /** + * HTTP Header Allow + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 10.2.1: HTTP Semantics} + */ Allow: "Allow", + /** + * HTTP Header ALPN + * + * @see {@link https://www.iana.org/go/rfc7639 | RFC 7639, Section 2: The ALPN HTTP Header Field} + */ ALPN: "ALPN", + /** + * HTTP Header Alt-Svc + * + * @see {@link https://www.iana.org/go/rfc7838 | RFC 7838: HTTP Alternative Services} + */ AltSvc: "Alt-Svc", + /** + * HTTP Header Alt-Used + * + * @see {@link https://www.iana.org/go/rfc7838 | RFC 7838: HTTP Alternative Services} + */ AltUsed: "Alt-Used", + /** + * HTTP Header Alternates + * + * @see {@link https://www.iana.org/go/rfc2295 | RFC 2295: Transparent Content Negotiation in HTTP} + */ Alternates: "Alternates", + /** + * HTTP Header Apply-To-Redirect-Ref + * + * @see {@link https://www.iana.org/go/rfc4437 | RFC 4437: Web Distributed Authoring and Versioning (WebDAV) Redirect Reference Resources} + */ ApplyToRedirectRef: "Apply-To-Redirect-Ref", + /** + * HTTP Header Authentication-Control + * + * @see {@link https://www.iana.org/go/rfc8053 | RFC 8053, Section 4: HTTP Authentication Extensions for Interactive Clients} + */ AuthenticationControl: "Authentication-Control", + /** + * HTTP Header Authentication-Info + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 11.6.3: HTTP Semantics} + */ AuthenticationInfo: "Authentication-Info", + /** + * HTTP Header Authorization + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 11.6.2: HTTP Semantics} + */ Authorization: "Authorization", + /** + * HTTP Header Cache-Control + * + * @see {@link https://www.iana.org/go/rfc9111 | RFC9111, Section 5.2} + */ CacheControl: "Cache-Control", + /** + * HTTP Header Cache-Status + * + * @see {@link https://www.iana.org/go/rfc9211 | RFC9211: The Cache-Status HTTP Response Header Field} + */ CacheStatus: "Cache-Status", + /** + * HTTP Header Cal-Managed-ID + * + * @see {@link https://www.iana.org/go/rfc8607 | RFC 8607, Section 5.1: Calendaring Extensions to WebDAV (CalDAV): Managed Attachments} + */ CalManagedId: "Cal-Managed-ID", + /** + * HTTP Header CalDAV-Timezones + * + * @see {@link https://www.iana.org/go/rfc7809 | RFC 7809, Section 7.1: Calendaring Extensions to WebDAV (CalDAV): Time Zones by Reference} + */ CaldavTimezones: "CalDAV-Timezones", + /** + * HTTP Header Capsule-Protocol + * + * @see {@link https://www.iana.org/go/rfc9297 | RFC9297} + */ CapsuleProtocol: "Capsule-Protocol", + /** + * HTTP Header CDN-Cache-Control + * + * @see {@link https://www.iana.org/go/rfc9213 | RFC9213: Targeted HTTP Cache Control} + */ CdnCacheControl: "CDN-Cache-Control", + /** + * HTTP Header CDN-Loop + * + * @see {@link https://www.iana.org/go/rfc8586 | RFC 8586: Loop Detection in Content Delivery Networks (CDNs)} + */ CdnLoop: "CDN-Loop", + /** + * HTTP Header Cert-Not-After + * + * @see {@link https://www.iana.org/go/rfc8739 | RFC 8739, Section 3.3: Support for Short-Term, Automatically Renewed (STAR) Certificates in the Automated Certificate Management Environment (ACME)} + */ CertNotAfter: "Cert-Not-After", + /** + * HTTP Header Cert-Not-Before + * + * @see {@link https://www.iana.org/go/rfc8739 | RFC 8739, Section 3.3: Support for Short-Term, Automatically Renewed (STAR) Certificates in the Automated Certificate Management Environment (ACME)} + */ CertNotBefore: "Cert-Not-Before", + /** + * HTTP Header Clear-Site-Data + * + * @see {@link https://w3.org/TR/clear-site-data/#header | Clear Site Data} + */ ClearSiteData: "Clear-Site-Data", + /** + * HTTP Header Client-Cert + * + * @see {@link https://www.iana.org/go/rfc9440 | RFC9440, Section 2: Client-Cert HTTP Header Field} + */ ClientCert: "Client-Cert", + /** + * HTTP Header Client-Cert-Chain + * + * @see {@link https://www.iana.org/go/rfc9440 | RFC9440, Section 2: Client-Cert HTTP Header Field} + */ ClientCertChain: "Client-Cert-Chain", + /** + * HTTP Header Close + * + * @see {@link https://www.iana.org/go/rfc9112 | RFC9112, Section 9.6: HTTP/1.1} + */ Close: "Close", + /** + * HTTP Header Connection + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 7.6.1: HTTP Semantics} + */ Connection: "Connection", + /** + * HTTP Header Content-Digest + * + * @see {@link https://www.iana.org/go/draft-ietf-httpbis-digest-headers-13 | RFC-ietf-httpbis-digest-headers-13, Section 2: Digest Fields} + */ ContentDigest: "Content-Digest", + /** + * HTTP Header Content-Disposition + * + * @see {@link https://www.iana.org/go/rfc6266 | RFC 6266: Use of the Content-Disposition Header Field in the + Hypertext Transfer Protocol (HTTP)} + */ ContentDisposition: "Content-Disposition", + /** + * HTTP Header Content-Encoding + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 8.4: HTTP Semantics} + */ ContentEncoding: "Content-Encoding", + /** + * HTTP Header Content-Language + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 8.5: HTTP Semantics} + */ ContentLanguage: "Content-Language", + /** + * HTTP Header Content-Length + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 8.6: HTTP Semantics} + */ ContentLength: "Content-Length", + /** + * HTTP Header Content-Location + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 8.7: HTTP Semantics} + */ ContentLocation: "Content-Location", + /** + * HTTP Header Content-Range + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 14.4: HTTP Semantics} + */ ContentRange: "Content-Range", + /** + * HTTP Header Content-Security-Policy + * + * @see {@link https://www.w3.org/TR/CSP/#csp-header | Content Security Policy Level 3} + */ ContentSecurityPolicy: "Content-Security-Policy", + /** + * HTTP Header Content-Security-Policy-Report-Only + * + * @see {@link https://www.w3.org/TR/CSP/#cspro-header | Content Security Policy Level 3} + */ ContentSecurityPolicyReportOnly: "Content-Security-Policy-Report-Only", + /** + * HTTP Header Content-Type + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 8.3: HTTP Semantics} + */ ContentType: "Content-Type", + /** + * HTTP Header Cookie + * + * @see {@link https://www.iana.org/go/rfc6265 | RFC 6265: HTTP State Management Mechanism} + */ Cookie: "Cookie", + /** + * HTTP Header Cross-Origin-Embedder-Policy + * + * @see {@link https://html.spec.whatwg.org/multipage/origin.html#cross-origin-embedder-policy | HTML} + */ CrossOriginEmbedderPolicy: "Cross-Origin-Embedder-Policy", + /** + * HTTP Header Cross-Origin-Embedder-Policy-Report-Only + * + * @see {@link https://html.spec.whatwg.org/multipage/origin.html#cross-origin-embedder-policy-report-only | HTML} + */ CrossOriginEmbedderPolicyReportOnly: "Cross-Origin-Embedder-Policy-Report-Only", + /** + * HTTP Header Cross-Origin-Opener-Policy + * + * @see {@link https://html.spec.whatwg.org/multipage/origin.html#cross-origin-opener-policy-2 | HTML} + */ CrossOriginOpenerPolicy: "Cross-Origin-Opener-Policy", + /** + * HTTP Header Cross-Origin-Opener-Policy-Report-Only + * + * @see {@link https://html.spec.whatwg.org/multipage/origin.html#cross-origin-opener-policy-report-only | HTML} + */ CrossOriginOpenerPolicyReportOnly: "Cross-Origin-Opener-Policy-Report-Only", + /** + * HTTP Header Cross-Origin-Resource-Policy + * + * @see {@link https://fetch.spec.whatwg.org/#cross-origin-resource-policy-header | Fetch} + */ CrossOriginResourcePolicy: "Cross-Origin-Resource-Policy", + /** + * HTTP Header DASL + * + * @see {@link https://www.iana.org/go/rfc5323 | RFC 5323: Web Distributed Authoring and Versioning (WebDAV) SEARCH} + */ DASL: "DASL", + /** + * HTTP Header Date + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 6.6.1: HTTP Semantics} + */ Date: "Date", + /** + * HTTP Header DAV + * + * @see {@link https://www.iana.org/go/rfc4918 | RFC 4918: HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)} + */ DAV: "DAV", + /** + * HTTP Header Delta-Base + * + * @see {@link https://www.iana.org/go/rfc3229 | RFC 3229: Delta encoding in HTTP} + */ DeltaBase: "Delta-Base", + /** + * HTTP Header Depth + * + * @see {@link https://www.iana.org/go/rfc4918 | RFC 4918: HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)} + */ Depth: "Depth", + /** + * HTTP Header Destination + * + * @see {@link https://www.iana.org/go/rfc4918 | RFC 4918: HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)} + */ Destination: "Destination", + /** + * HTTP Header DPoP + * + * @see {@link https://www.iana.org/go/rfc9449 | RFC9449: OAuth 2.0 Demonstrating Proof of Possession (DPoP)} + */ DPoP: "DPoP", + /** + * HTTP Header DPoP-Nonce + * + * @see {@link https://www.iana.org/go/rfc9449 | RFC9449: OAuth 2.0 Demonstrating Proof of Possession (DPoP)} + */ DpopNonce: "DPoP-Nonce", + /** + * HTTP Header Early-Data + * + * @see {@link https://www.iana.org/go/rfc8470 | RFC 8470: Using Early Data in HTTP} + */ EarlyData: "Early-Data", + /** + * HTTP Header ETag + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 8.8.3: HTTP Semantics} + */ ETag: "ETag", + /** + * HTTP Header Expect + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 10.1.1: HTTP Semantics} + */ Expect: "Expect", + /** + * HTTP Header Expires + * + * @see {@link https://www.iana.org/go/rfc9111 | RFC9111, Section 5.3: HTTP Caching} + */ Expires: "Expires", + /** + * HTTP Header Forwarded + * + * @see {@link https://www.iana.org/go/rfc7239 | RFC 7239: Forwarded HTTP Extension} + */ Forwarded: "Forwarded", + /** + * HTTP Header From + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 10.1.2: HTTP Semantics} + */ From: "From", + /** + * HTTP Header Hobareg + * + * @see {@link https://www.iana.org/go/rfc7486 | RFC 7486, Section 6.1.1: HTTP Origin-Bound Authentication (HOBA)} + */ Hobareg: "Hobareg", + /** + * HTTP Header Host + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 7.2: HTTP Semantics} + */ Host: "Host", + /** + * HTTP Header If + * + * @see {@link https://www.iana.org/go/rfc4918 | RFC 4918: HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)} + */ If: "If", + /** + * HTTP Header If-Match + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 13.1.1: HTTP Semantics} + */ IfMatch: "If-Match", + /** + * HTTP Header If-Modified-Since + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 13.1.3: HTTP Semantics} + */ IfModifiedSince: "If-Modified-Since", + /** + * HTTP Header If-None-Match + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 13.1.2: HTTP Semantics} + */ IfNoneMatch: "If-None-Match", + /** + * HTTP Header If-Range + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 13.1.5: HTTP Semantics} + */ IfRange: "If-Range", + /** + * HTTP Header If-Schedule-Tag-Match + * + * @see {@link https://www.iana.org/go/rfc6638 | RFC 6338: Scheduling Extensions to CalDAV} + */ IfScheduleTagMatch: "If-Schedule-Tag-Match", + /** + * HTTP Header If-Unmodified-Since + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 13.1.4: HTTP Semantics} + */ IfUnmodifiedSince: "If-Unmodified-Since", + /** + * HTTP Header IM + * + * @see {@link https://www.iana.org/go/rfc3229 | RFC 3229: Delta encoding in HTTP} + */ IM: "IM", + /** + * HTTP Header Include-Referred-Token-Binding-ID + * + * @see {@link https://www.iana.org/go/rfc8473 | RFC 8473: Token Binding over HTTP} + */ IncludeReferredTokenBindingId: "Include-Referred-Token-Binding-ID", + /** + * HTTP Header Keep-Alive + * + * @see {@link https://www.iana.org/go/rfc2068 | RFC 2068: Hypertext Transfer Protocol -- HTTP/1.1} + */ KeepAlive: "Keep-Alive", + /** + * HTTP Header Label + * + * @see {@link https://www.iana.org/go/rfc3253 | RFC 3253: Versioning Extensions to WebDAV: (Web Distributed Authoring and Versioning)} + */ Label: "Label", + /** + * HTTP Header Last-Event-ID + * + * @see {@link https://html.spec.whatwg.org/multipage/server-sent-events.html#last-event-id | HTML} + */ LastEventId: "Last-Event-ID", + /** + * HTTP Header Last-Modified + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 8.8.2: HTTP Semantics} + */ LastModified: "Last-Modified", + /** + * HTTP Header Link + * + * @see {@link https://www.iana.org/go/rfc8288 | RFC 8288: Web Linking} + */ Link: "Link", + /** + * HTTP Header Location + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 10.2.2: HTTP Semantics} + */ Location: "Location", + /** + * HTTP Header Lock-Token + * + * @see {@link https://www.iana.org/go/rfc4918 | RFC 4918: HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)} + */ LockToken: "Lock-Token", + /** + * HTTP Header Max-Forwards + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 7.6.2: HTTP Semantics} + */ MaxForwards: "Max-Forwards", + /** + * HTTP Header Memento-Datetime + * + * @see {@link https://www.iana.org/go/rfc7089 | RFC 7089: HTTP Framework for Time-Based Access to Resource States -- Memento} + */ MementoDatetime: "Memento-Datetime", + /** + * HTTP Header Meter + * + * @see {@link https://www.iana.org/go/rfc2227 | RFC 2227: Simple Hit-Metering and Usage-Limiting for HTTP} + */ Meter: "Meter", + /** + * HTTP Header MIME-Version + * + * @see {@link https://www.iana.org/go/rfc9112 | RFC9112, Appendix B.1: HTTP/1.1} + */ MimeVersion: "MIME-Version", + /** + * HTTP Header Negotiate + * + * @see {@link https://www.iana.org/go/rfc2295 | RFC 2295: Transparent Content Negotiation in HTTP} + */ Negotiate: "Negotiate", + /** + * HTTP Header NEL + * + * @see {@link https://www.w3.org/TR/network-error-logging/ | Network Error Logging} + */ NEL: "NEL", + /** + * HTTP Header OData-EntityId + * + * @see {@link http://docs.oasis-open.org/odata/odata/v4.01/csprd05/part1-protocol/odata-v4.01-csprd05-part1-protocol.html#_Toc14172735 | OData Version 4.01 Part 1: Protocol} + * @see {@link #OASIS | OASIS} + * @see {@link #Chet_Ensign | Chet_Ensign} + */ OdataEntityid: "OData-EntityId", + /** + * HTTP Header OData-Isolation + * + * @see {@link http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_HeaderIsolationODataIsolation | OData Version 4.01 Part 1: Protocol} + * @see {@link #OASIS | OASIS} + * @see {@link #Chet_Ensign | Chet_Ensign} + */ OdataIsolation: "OData-Isolation", + /** + * HTTP Header OData-MaxVersion + * + * @see {@link http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_HeaderODataMaxVersion | OData Version 4.01 Part 1: Protocol} + * @see {@link #OASIS | OASIS} + * @see {@link #Chet_Ensign | Chet_Ensign} + */ OdataMaxversion: "OData-MaxVersion", + /** + * HTTP Header OData-Version + * + * @see {@link http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_HeaderODataVersion | OData Version 4.01 Part 1: Protocol} + * @see {@link #OASIS | OASIS} + * @see {@link #Chet_Ensign | Chet_Ensign} + */ OdataVersion: "OData-Version", + /** + * HTTP Header Optional-WWW-Authenticate + * + * @see {@link https://www.iana.org/go/rfc8053 | RFC 8053, Section 3: HTTP Authentication Extensions for Interactive Clients} + */ OptionalWwwAuthenticate: "Optional-WWW-Authenticate", + /** + * HTTP Header Ordering-Type + * + * @see {@link https://www.iana.org/go/rfc3648 | RFC 3648: Web Distributed Authoring and Versioning (WebDAV) Ordered Collections Protocol} + */ OrderingType: "Ordering-Type", + /** + * HTTP Header Origin + * + * @see {@link https://www.iana.org/go/rfc6454 | RFC 6454: The Web Origin Concept} + */ Origin: "Origin", + /** + * HTTP Header Origin-Agent-Cluster + * + * @see {@link https://html.spec.whatwg.org/multipage/origin.html#origin-agent-cluster | HTML} + */ OriginAgentCluster: "Origin-Agent-Cluster", + /** + * HTTP Header OSCORE + * + * @see {@link https://www.iana.org/go/rfc8613 | RFC 8613, Section 11.1: Object Security for Constrained RESTful Environments (OSCORE)} + */ OSCORE: "OSCORE", + /** + * HTTP Header OSLC-Core-Version + * + * @see {@link https://docs.oasis-open-projects.org/oslc-op/core/v3.0/oslc-core.html | OASIS Project Specification 01} + * @see {@link #OASIS | OASIS} + * @see {@link #Chet_Ensign | Chet_Ensign} + */ OslcCoreVersion: "OSLC-Core-Version", + /** + * HTTP Header Overwrite + * + * @see {@link https://www.iana.org/go/rfc4918 | RFC 4918: HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)} + */ Overwrite: "Overwrite", + /** + * HTTP Header Ping-From + * + * @see {@link https://html.spec.whatwg.org/multipage/links.html#ping-from | HTML} + */ PingFrom: "Ping-From", + /** + * HTTP Header Ping-To + * + * @see {@link https://html.spec.whatwg.org/multipage/links.html#ping-to | HTML} + */ PingTo: "Ping-To", + /** + * HTTP Header Position + * + * @see {@link https://www.iana.org/go/rfc3648 | RFC 3648: Web Distributed Authoring and Versioning (WebDAV) Ordered Collections Protocol} + */ Position: "Position", + /** + * HTTP Header Prefer + * + * @see {@link https://www.iana.org/go/rfc7240 | RFC 7240: Prefer Header for HTTP} + */ Prefer: "Prefer", + /** + * HTTP Header Preference-Applied + * + * @see {@link https://www.iana.org/go/rfc7240 | RFC 7240: Prefer Header for HTTP} + */ PreferenceApplied: "Preference-Applied", + /** + * HTTP Header Priority + * + * @see {@link https://www.iana.org/go/rfc9218 | RFC9218: Extensible Prioritization Scheme for HTTP} + */ Priority: "Priority", + /** + * HTTP Header Proxy-Authenticate + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 11.7.1: HTTP Semantics} + */ ProxyAuthenticate: "Proxy-Authenticate", + /** + * HTTP Header Proxy-Authentication-Info + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 11.7.3: HTTP Semantics} + */ ProxyAuthenticationInfo: "Proxy-Authentication-Info", + /** + * HTTP Header Proxy-Authorization + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 11.7.2: HTTP Semantics} + */ ProxyAuthorization: "Proxy-Authorization", + /** + * HTTP Header Proxy-Status + * + * @see {@link https://www.iana.org/go/rfc9209 | RFC9209: The Proxy-Status HTTP Response Header Field} + */ ProxyStatus: "Proxy-Status", + /** + * HTTP Header Public-Key-Pins + * + * @see {@link https://www.iana.org/go/rfc7469 | RFC 7469: Public Key Pinning Extension for HTTP} + */ PublicKeyPins: "Public-Key-Pins", + /** + * HTTP Header Public-Key-Pins-Report-Only + * + * @see {@link https://www.iana.org/go/rfc7469 | RFC 7469: Public Key Pinning Extension for HTTP} + */ PublicKeyPinsReportOnly: "Public-Key-Pins-Report-Only", + /** + * HTTP Header Range + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 14.2: HTTP Semantics} + */ Range: "Range", + /** + * HTTP Header Redirect-Ref + * + * @see {@link https://www.iana.org/go/rfc4437 | RFC 4437: Web Distributed Authoring and Versioning (WebDAV) Redirect Reference Resources} + */ RedirectRef: "Redirect-Ref", + /** + * HTTP Header Referer + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 10.1.3: HTTP Semantics} + */ Referer: "Referer", + /** + * HTTP Header Refresh + * + * @see {@link https://html.spec.whatwg.org/multipage/browsing-the-web.html#refresh | HTML} + */ Refresh: "Refresh", + /** + * HTTP Header Replay-Nonce + * + * @see {@link https://www.iana.org/go/rfc8555 | RFC 8555, Section 6.5.1: Automatic Certificate Management Environment (ACME)} + */ ReplayNonce: "Replay-Nonce", + /** + * HTTP Header Repr-Digest + * + * @see {@link https://www.iana.org/go/draft-ietf-httpbis-digest-headers-13 | RFC-ietf-httpbis-digest-headers-13, Section 3: Digest Fields} + */ ReprDigest: "Repr-Digest", + /** + * HTTP Header Retry-After + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 10.2.3: HTTP Semantics} + */ RetryAfter: "Retry-After", + /** + * HTTP Header Schedule-Reply + * + * @see {@link https://www.iana.org/go/rfc6638 | RFC 6638: Scheduling Extensions to CalDAV} + */ ScheduleReply: "Schedule-Reply", + /** + * HTTP Header Schedule-Tag + * + * @see {@link https://www.iana.org/go/rfc6638 | RFC 6338: Scheduling Extensions to CalDAV} + */ ScheduleTag: "Schedule-Tag", + /** + * HTTP Header Sec-Purpose + * + * @see {@link https://fetch.spec.whatwg.org/#sec-purpose-header | Fetch} + */ SecPurpose: "Sec-Purpose", + /** + * HTTP Header Sec-Token-Binding + * + * @see {@link https://www.iana.org/go/rfc8473 | RFC 8473: Token Binding over HTTP} + */ SecTokenBinding: "Sec-Token-Binding", + /** + * HTTP Header Sec-WebSocket-Accept + * + * @see {@link https://www.iana.org/go/rfc6455 | RFC 6455: The WebSocket Protocol} + */ SecWebsocketAccept: "Sec-WebSocket-Accept", + /** + * HTTP Header Sec-WebSocket-Extensions + * + * @see {@link https://www.iana.org/go/rfc6455 | RFC 6455: The WebSocket Protocol} + */ SecWebsocketExtensions: "Sec-WebSocket-Extensions", + /** + * HTTP Header Sec-WebSocket-Key + * + * @see {@link https://www.iana.org/go/rfc6455 | RFC 6455: The WebSocket Protocol} + */ SecWebsocketKey: "Sec-WebSocket-Key", + /** + * HTTP Header Sec-WebSocket-Protocol + * + * @see {@link https://www.iana.org/go/rfc6455 | RFC 6455: The WebSocket Protocol} + */ SecWebsocketProtocol: "Sec-WebSocket-Protocol", + /** + * HTTP Header Sec-WebSocket-Version + * + * @see {@link https://www.iana.org/go/rfc6455 | RFC 6455: The WebSocket Protocol} + */ SecWebsocketVersion: "Sec-WebSocket-Version", + /** + * HTTP Header Server + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 10.2.4: HTTP Semantics} + */ Server: "Server", + /** + * HTTP Header Server-Timing + * + * @see {@link https://www.w3.org/TR/server-timing/ | Server Timing} + */ ServerTiming: "Server-Timing", + /** + * HTTP Header Set-Cookie + * + * @see {@link https://www.iana.org/go/rfc6265 | RFC 6265: HTTP State Management Mechanism} + */ SetCookie: "Set-Cookie", + /** + * HTTP Header Signature + * + * @see {@link https://www.iana.org/go/draft-ietf-httpbis-message-signatures-19 | RFC-ietf-httpbis-message-signatures-19, Section 4.2: HTTP Message Signatures} + */ Signature: "Signature", + /** + * HTTP Header Signature-Input + * + * @see {@link https://www.iana.org/go/draft-ietf-httpbis-message-signatures-19 | RFC-ietf-httpbis-message-signatures-19, Section 4.1: HTTP Message Signatures} + */ SignatureInput: "Signature-Input", + /** + * HTTP Header SLUG + * + * @see {@link https://www.iana.org/go/rfc5023 | RFC 5023: The Atom Publishing Protocol} + */ SLUG: "SLUG", + /** + * HTTP Header SoapAction + * + * @see {@link https://www.w3.org/TR/2000/NOTE-SOAP-20000508 | Simple Object Access Protocol (SOAP) 1.1} + */ SoapAction: "SoapAction", + /** + * HTTP Header Status-URI + * + * @see {@link https://www.iana.org/go/rfc2518 | RFC 2518: HTTP Extensions for Distributed Authoring -- WEBDAV} + */ StatusUri: "Status-URI", + /** + * HTTP Header Strict-Transport-Security + * + * @see {@link https://www.iana.org/go/rfc6797 | RFC 6797: HTTP Strict Transport Security (HSTS)} + */ StrictTransportSecurity: "Strict-Transport-Security", + /** + * HTTP Header Sunset + * + * @see {@link https://www.iana.org/go/rfc8594 | RFC 8594: The Sunset HTTP Header Field} + */ Sunset: "Sunset", + /** + * HTTP Header TCN + * + * @see {@link https://www.iana.org/go/rfc2295 | RFC 2295: Transparent Content Negotiation in HTTP} + */ TCN: "TCN", + /** + * HTTP Header TE + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 10.1.4: HTTP Semantics} + */ TE: "TE", + /** + * HTTP Header Timeout + * + * @see {@link https://www.iana.org/go/rfc4918 | RFC 4918: HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)} + */ Timeout: "Timeout", + /** + * HTTP Header Topic + * + * @see {@link https://www.iana.org/go/rfc8030 | RFC 8030, Section 5.4: Generic Event Delivery Using HTTP Push} + */ Topic: "Topic", + /** + * HTTP Header Traceparent + * + * @see {@link https://www.w3.org/TR/trace-context/#traceparent-header | Trace Context} + */ Traceparent: "Traceparent", + /** + * HTTP Header Tracestate + * + * @see {@link https://www.w3.org/TR/trace-context/#tracestate-header | Trace Context} + */ Tracestate: "Tracestate", + /** + * HTTP Header Trailer + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 6.6.2: HTTP Semantics} + */ Trailer: "Trailer", + /** + * HTTP Header Transfer-Encoding + * + * @see {@link https://www.iana.org/go/rfc9112 | RFC9112, Section 6.1: HTTP Semantics} + */ TransferEncoding: "Transfer-Encoding", + /** + * HTTP Header TTL + * + * @see {@link https://www.iana.org/go/rfc8030 | RFC 8030, Section 5.2: Generic Event Delivery Using HTTP Push} + */ TTL: "TTL", + /** + * HTTP Header Upgrade + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 7.8: HTTP Semantics} + */ Upgrade: "Upgrade", + /** + * HTTP Header Urgency + * + * @see {@link https://www.iana.org/go/rfc8030 | RFC 8030, Section 5.3: Generic Event Delivery Using HTTP Push} + */ Urgency: "Urgency", + /** + * HTTP Header User-Agent + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 10.1.5: HTTP Semantics} + */ UserAgent: "User-Agent", + /** + * HTTP Header Variant-Vary + * + * @see {@link https://www.iana.org/go/rfc2295 | RFC 2295: Transparent Content Negotiation in HTTP} + */ VariantVary: "Variant-Vary", + /** + * HTTP Header Vary + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 12.5.5: HTTP Semantics} + */ Vary: "Vary", + /** + * HTTP Header Via + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 7.6.3: HTTP Semantics} + */ Via: "Via", + /** + * HTTP Header Want-Content-Digest + * + * @see {@link https://www.iana.org/go/draft-ietf-httpbis-digest-headers-13 | RFC-ietf-httpbis-digest-headers-13, Section 4: Digest Fields} + */ WantContentDigest: "Want-Content-Digest", + /** + * HTTP Header Want-Repr-Digest + * + * @see {@link https://www.iana.org/go/draft-ietf-httpbis-digest-headers-13 | RFC-ietf-httpbis-digest-headers-13, Section 4: Digest Fields} + */ WantReprDigest: "Want-Repr-Digest", + /** + * HTTP Header WWW-Authenticate + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 11.6.1: HTTP Semantics} + */ WwwAuthenticate: "WWW-Authenticate", + /** + * HTTP Header X-Content-Type-Options + * + * @see {@link https://fetch.spec.whatwg.org/#x-content-type-options-header | Fetch} + */ XContentTypeOptions: "X-Content-Type-Options", + /** + * HTTP Header X-Frame-Options + * + * @see {@link https://html.spec.whatwg.org/multipage/browsing-the-web.html#x-frame-options | HTML} + */ XFrameOptions: "X-Frame-Options" +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvaHR0cC8xLjAuMTYvdW5zdGFibGVfaGVhZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG4vLyBUaGlzIG1vZHVsZSBpcyBnZW5lcmF0ZWQgZnJvbSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvaHR0cC1maWVsZHMvaHR0cC1maWVsZHMueGh0bWwjZmllbGQtbmFtZXMgfCBJQU5BIEh5cGVydGV4dCBUcmFuc2ZlciBQcm90b2NvbCAoSFRUUCkgRmllbGQgTmFtZSBSZWdpc3RyeX1cblxuLyoqXG4gKiBIVFRQIEhlYWRlcnMgd2l0aCBzdGF0dXMgcGVybWFuZW50XG4gKlxuICogQGV4cGVyaW1lbnRhbCAqKlVOU1RBQkxFKio6IE5ldyBBUEksIHlldCB0byBiZSB2ZXR0ZWQuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvaHR0cC1maWVsZHMvaHR0cC1maWVsZHMueGh0bWwjZmllbGQtbmFtZXMgfCBJQU5BIEh5cGVydGV4dCBUcmFuc2ZlciBQcm90b2NvbCAoSFRUUCkgRmllbGQgTmFtZSBSZWdpc3RyeX1cbiAqL1xuZXhwb3J0IGNvbnN0IEhFQURFUiA9IHtcbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIEEtSU1cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjMzIyOSB8IFJGQyAzMjI5OiBEZWx0YSBlbmNvZGluZyBpbiBIVFRQfVxuICAgKi9cbiAgQUltOiBcIkEtSU1cIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgQWNjZXB0XG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzkxMTAgfCBSRkM5MTEwLCBTZWN0aW9uIDEyLjUuMTogSFRUUCBTZW1hbnRpY3N9XG4gICAqL1xuICBBY2NlcHQ6IFwiQWNjZXB0XCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIEFjY2VwdC1BZGRpdGlvbnNcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjMjMyNCB8IFJGQyAyMzI0OiBIeXBlciBUZXh0IENvZmZlZSBQb3QgQ29udHJvbCBQcm90b2NvbCAoSFRDUENQLzEuMCl9XG4gICAqL1xuICBBY2NlcHRBZGRpdGlvbnM6IFwiQWNjZXB0LUFkZGl0aW9uc1wiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBBY2NlcHQtQ0hcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjODk0MiB8IFJGQyA4OTQyLCBTZWN0aW9uIDMuMTogSFRUUCBDbGllbnQgSGludHN9XG4gICAqL1xuICBBY2NlcHRDaDogXCJBY2NlcHQtQ0hcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgQWNjZXB0LURhdGV0aW1lXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzcwODkgfCBSRkMgNzA4OTogSFRUUCBGcmFtZXdvcmsgZm9yIFRpbWUtQmFzZWQgQWNjZXNzIHRvIFJlc291cmNlIFN0YXRlcyAtLSBNZW1lbnRvfVxuICAgKi9cbiAgQWNjZXB0RGF0ZXRpbWU6IFwiQWNjZXB0LURhdGV0aW1lXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIEFjY2VwdC1FbmNvZGluZ1xuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM5MTEwIHwgUkZDOTExMCwgU2VjdGlvbiAxMi41LjM6IEhUVFAgU2VtYW50aWNzfVxuICAgKi9cbiAgQWNjZXB0RW5jb2Rpbmc6IFwiQWNjZXB0LUVuY29kaW5nXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIEFjY2VwdC1GZWF0dXJlc1xuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmMyMjk1IHwgUkZDIDIyOTU6IFRyYW5zcGFyZW50IENvbnRlbnQgTmVnb3RpYXRpb24gaW4gSFRUUH1cbiAgICovXG4gIEFjY2VwdEZlYXR1cmVzOiBcIkFjY2VwdC1GZWF0dXJlc1wiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBBY2NlcHQtTGFuZ3VhZ2VcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjOTExMCB8IFJGQzkxMTAsIFNlY3Rpb24gMTIuNS40OiBIVFRQIFNlbWFudGljc31cbiAgICovXG4gIEFjY2VwdExhbmd1YWdlOiBcIkFjY2VwdC1MYW5ndWFnZVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBBY2NlcHQtUGF0Y2hcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjNTc4OSB8IFJGQyA1Nzg5OiBQQVRDSCBNZXRob2QgZm9yIEhUVFB9XG4gICAqL1xuICBBY2NlcHRQYXRjaDogXCJBY2NlcHQtUGF0Y2hcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgQWNjZXB0LVBvc3RcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cudzMub3JnL1RSL2xkcCB8IExpbmtlZCBEYXRhIFBsYXRmb3JtIDEuMH1cbiAgICovXG4gIEFjY2VwdFBvc3Q6IFwiQWNjZXB0LVBvc3RcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgQWNjZXB0LVJhbmdlc1xuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM5MTEwIHwgUkZDOTExMCwgU2VjdGlvbiAxNC4zOiBIVFRQIFNlbWFudGljc31cbiAgICovXG4gIEFjY2VwdFJhbmdlczogXCJBY2NlcHQtUmFuZ2VzXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIEFjY2VwdC1TaWduYXR1cmVcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vZHJhZnQtaWV0Zi1odHRwYmlzLW1lc3NhZ2Utc2lnbmF0dXJlcy0xOSB8IFJGQy1pZXRmLWh0dHBiaXMtbWVzc2FnZS1zaWduYXR1cmVzLTE5LCBTZWN0aW9uIDUuMTogSFRUUCBNZXNzYWdlIFNpZ25hdHVyZXN9XG4gICAqL1xuICBBY2NlcHRTaWduYXR1cmU6IFwiQWNjZXB0LVNpZ25hdHVyZVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBBY2Nlc3MtQ29udHJvbC1BbGxvdy1DcmVkZW50aWFsc1xuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jaHR0cC1hY2Nlc3MtY29udHJvbC1hbGxvdy1jcmVkZW50aWFscyB8IEZldGNofVxuICAgKi9cbiAgQWNjZXNzQ29udHJvbEFsbG93Q3JlZGVudGlhbHM6IFwiQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHNcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVyc1xuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jaHR0cC1hY2Nlc3MtY29udHJvbC1hbGxvdy1oZWFkZXJzIHwgRmV0Y2h9XG4gICAqL1xuICBBY2Nlc3NDb250cm9sQWxsb3dIZWFkZXJzOiBcIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnNcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kc1xuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jaHR0cC1hY2Nlc3MtY29udHJvbC1hbGxvdy1tZXRob2RzIHwgRmV0Y2h9XG4gICAqL1xuICBBY2Nlc3NDb250cm9sQWxsb3dNZXRob2RzOiBcIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHNcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNodHRwLWFjY2Vzcy1jb250cm9sLWFsbG93LW9yaWdpbiB8IEZldGNofVxuICAgKi9cbiAgQWNjZXNzQ29udHJvbEFsbG93T3JpZ2luOiBcIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpblwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVyc1xuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jaHR0cC1hY2Nlc3MtY29udHJvbC1leHBvc2UtaGVhZGVycyB8IEZldGNofVxuICAgKi9cbiAgQWNjZXNzQ29udHJvbEV4cG9zZUhlYWRlcnM6IFwiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnNcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgQWNjZXNzLUNvbnRyb2wtTWF4LUFnZVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jaHR0cC1hY2Nlc3MtY29udHJvbC1tYXgtYWdlIHwgRmV0Y2h9XG4gICAqL1xuICBBY2Nlc3NDb250cm9sTWF4QWdlOiBcIkFjY2Vzcy1Db250cm9sLU1heC1BZ2VcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgQWNjZXNzLUNvbnRyb2wtUmVxdWVzdC1IZWFkZXJzXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNodHRwLWFjY2Vzcy1jb250cm9sLXJlcXVlc3QtaGVhZGVycyB8IEZldGNofVxuICAgKi9cbiAgQWNjZXNzQ29udHJvbFJlcXVlc3RIZWFkZXJzOiBcIkFjY2Vzcy1Db250cm9sLVJlcXVlc3QtSGVhZGVyc1wiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBBY2Nlc3MtQ29udHJvbC1SZXF1ZXN0LU1ldGhvZFxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jaHR0cC1hY2Nlc3MtY29udHJvbC1yZXF1ZXN0LW1ldGhvZCB8IEZldGNofVxuICAgKi9cbiAgQWNjZXNzQ29udHJvbFJlcXVlc3RNZXRob2Q6IFwiQWNjZXNzLUNvbnRyb2wtUmVxdWVzdC1NZXRob2RcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgQWdlXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzkxMTEgfCBSRkM5MTExLCBTZWN0aW9uIDUuMTogSFRUUCBDYWNoaW5nfVxuICAgKi9cbiAgQWdlOiBcIkFnZVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBBbGxvd1xuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM5MTEwIHwgUkZDOTExMCwgU2VjdGlvbiAxMC4yLjE6IEhUVFAgU2VtYW50aWNzfVxuICAgKi9cbiAgQWxsb3c6IFwiQWxsb3dcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgQUxQTlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM3NjM5IHwgUkZDIDc2MzksIFNlY3Rpb24gMjogVGhlIEFMUE4gSFRUUCBIZWFkZXIgRmllbGR9XG4gICAqL1xuICBBTFBOOiBcIkFMUE5cIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgQWx0LVN2Y1xuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM3ODM4IHwgUkZDIDc4Mzg6IEhUVFAgQWx0ZXJuYXRpdmUgU2VydmljZXN9XG4gICAqL1xuICBBbHRTdmM6IFwiQWx0LVN2Y1wiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBBbHQtVXNlZFxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM3ODM4IHwgUkZDIDc4Mzg6IEhUVFAgQWx0ZXJuYXRpdmUgU2VydmljZXN9XG4gICAqL1xuICBBbHRVc2VkOiBcIkFsdC1Vc2VkXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIEFsdGVybmF0ZXNcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjMjI5NSB8IFJGQyAyMjk1OiBUcmFuc3BhcmVudCBDb250ZW50IE5lZ290aWF0aW9uIGluIEhUVFB9XG4gICAqL1xuICBBbHRlcm5hdGVzOiBcIkFsdGVybmF0ZXNcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgQXBwbHktVG8tUmVkaXJlY3QtUmVmXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzQ0MzcgfCBSRkMgNDQzNzogV2ViIERpc3RyaWJ1dGVkIEF1dGhvcmluZyBhbmQgVmVyc2lvbmluZyAoV2ViREFWKSBSZWRpcmVjdCBSZWZlcmVuY2UgUmVzb3VyY2VzfVxuICAgKi9cbiAgQXBwbHlUb1JlZGlyZWN0UmVmOiBcIkFwcGx5LVRvLVJlZGlyZWN0LVJlZlwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBBdXRoZW50aWNhdGlvbi1Db250cm9sXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzgwNTMgfCBSRkMgODA1MywgU2VjdGlvbiA0OiBIVFRQIEF1dGhlbnRpY2F0aW9uIEV4dGVuc2lvbnMgZm9yIEludGVyYWN0aXZlIENsaWVudHN9XG4gICAqL1xuICBBdXRoZW50aWNhdGlvbkNvbnRyb2w6IFwiQXV0aGVudGljYXRpb24tQ29udHJvbFwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBBdXRoZW50aWNhdGlvbi1JbmZvXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzkxMTAgfCBSRkM5MTEwLCBTZWN0aW9uIDExLjYuMzogSFRUUCBTZW1hbnRpY3N9XG4gICAqL1xuICBBdXRoZW50aWNhdGlvbkluZm86IFwiQXV0aGVudGljYXRpb24tSW5mb1wiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBBdXRob3JpemF0aW9uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzkxMTAgfCBSRkM5MTEwLCBTZWN0aW9uIDExLjYuMjogSFRUUCBTZW1hbnRpY3N9XG4gICAqL1xuICBBdXRob3JpemF0aW9uOiBcIkF1dGhvcml6YXRpb25cIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgQ2FjaGUtQ29udHJvbFxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM5MTExIHwgUkZDOTExMSwgU2VjdGlvbiA1LjJ9XG4gICAqL1xuICBDYWNoZUNvbnRyb2w6IFwiQ2FjaGUtQ29udHJvbFwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBDYWNoZS1TdGF0dXNcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjOTIxMSB8IFJGQzkyMTE6IFRoZSBDYWNoZS1TdGF0dXMgSFRUUCBSZXNwb25zZSBIZWFkZXIgRmllbGR9XG4gICAqL1xuICBDYWNoZVN0YXR1czogXCJDYWNoZS1TdGF0dXNcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgQ2FsLU1hbmFnZWQtSURcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjODYwNyB8IFJGQyA4NjA3LCBTZWN0aW9uIDUuMTogQ2FsZW5kYXJpbmcgRXh0ZW5zaW9ucyB0byBXZWJEQVYgKENhbERBVik6IE1hbmFnZWQgQXR0YWNobWVudHN9XG4gICAqL1xuICBDYWxNYW5hZ2VkSWQ6IFwiQ2FsLU1hbmFnZWQtSURcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgQ2FsREFWLVRpbWV6b25lc1xuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM3ODA5IHwgUkZDIDc4MDksIFNlY3Rpb24gNy4xOiBDYWxlbmRhcmluZyBFeHRlbnNpb25zIHRvIFdlYkRBViAoQ2FsREFWKTogVGltZSBab25lcyBieSBSZWZlcmVuY2V9XG4gICAqL1xuICBDYWxkYXZUaW1lem9uZXM6IFwiQ2FsREFWLVRpbWV6b25lc1wiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBDYXBzdWxlLVByb3RvY29sXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzkyOTcgfCBSRkM5Mjk3fVxuICAgKi9cbiAgQ2Fwc3VsZVByb3RvY29sOiBcIkNhcHN1bGUtUHJvdG9jb2xcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgQ0ROLUNhY2hlLUNvbnRyb2xcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjOTIxMyB8IFJGQzkyMTM6IFRhcmdldGVkIEhUVFAgQ2FjaGUgQ29udHJvbH1cbiAgICovXG4gIENkbkNhY2hlQ29udHJvbDogXCJDRE4tQ2FjaGUtQ29udHJvbFwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBDRE4tTG9vcFxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM4NTg2IHwgUkZDIDg1ODY6IExvb3AgRGV0ZWN0aW9uIGluIENvbnRlbnQgRGVsaXZlcnkgTmV0d29ya3MgKENETnMpfVxuICAgKi9cbiAgQ2RuTG9vcDogXCJDRE4tTG9vcFwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBDZXJ0LU5vdC1BZnRlclxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM4NzM5IHwgUkZDIDg3MzksIFNlY3Rpb24gMy4zOiBTdXBwb3J0IGZvciBTaG9ydC1UZXJtLCBBdXRvbWF0aWNhbGx5IFJlbmV3ZWQgKFNUQVIpIENlcnRpZmljYXRlcyBpbiB0aGUgQXV0b21hdGVkIENlcnRpZmljYXRlIE1hbmFnZW1lbnQgRW52aXJvbm1lbnQgKEFDTUUpfVxuICAgKi9cbiAgQ2VydE5vdEFmdGVyOiBcIkNlcnQtTm90LUFmdGVyXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIENlcnQtTm90LUJlZm9yZVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM4NzM5IHwgUkZDIDg3MzksIFNlY3Rpb24gMy4zOiBTdXBwb3J0IGZvciBTaG9ydC1UZXJtLCBBdXRvbWF0aWNhbGx5IFJlbmV3ZWQgKFNUQVIpIENlcnRpZmljYXRlcyBpbiB0aGUgQXV0b21hdGVkIENlcnRpZmljYXRlIE1hbmFnZW1lbnQgRW52aXJvbm1lbnQgKEFDTUUpfVxuICAgKi9cbiAgQ2VydE5vdEJlZm9yZTogXCJDZXJ0LU5vdC1CZWZvcmVcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgQ2xlYXItU2l0ZS1EYXRhXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vdzMub3JnL1RSL2NsZWFyLXNpdGUtZGF0YS8jaGVhZGVyIHwgQ2xlYXIgU2l0ZSBEYXRhfVxuICAgKi9cbiAgQ2xlYXJTaXRlRGF0YTogXCJDbGVhci1TaXRlLURhdGFcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgQ2xpZW50LUNlcnRcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjOTQ0MCB8IFJGQzk0NDAsIFNlY3Rpb24gMjogQ2xpZW50LUNlcnQgSFRUUCBIZWFkZXIgRmllbGR9XG4gICAqL1xuICBDbGllbnRDZXJ0OiBcIkNsaWVudC1DZXJ0XCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIENsaWVudC1DZXJ0LUNoYWluXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzk0NDAgfCBSRkM5NDQwLCBTZWN0aW9uIDI6IENsaWVudC1DZXJ0IEhUVFAgSGVhZGVyIEZpZWxkfVxuICAgKi9cbiAgQ2xpZW50Q2VydENoYWluOiBcIkNsaWVudC1DZXJ0LUNoYWluXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIENsb3NlXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzkxMTIgfCBSRkM5MTEyLCBTZWN0aW9uIDkuNjogSFRUUC8xLjF9XG4gICAqL1xuICBDbG9zZTogXCJDbG9zZVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBDb25uZWN0aW9uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzkxMTAgfCBSRkM5MTEwLCBTZWN0aW9uIDcuNi4xOiBIVFRQIFNlbWFudGljc31cbiAgICovXG4gIENvbm5lY3Rpb246IFwiQ29ubmVjdGlvblwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBDb250ZW50LURpZ2VzdFxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9kcmFmdC1pZXRmLWh0dHBiaXMtZGlnZXN0LWhlYWRlcnMtMTMgfCBSRkMtaWV0Zi1odHRwYmlzLWRpZ2VzdC1oZWFkZXJzLTEzLCBTZWN0aW9uIDI6IERpZ2VzdCBGaWVsZHN9XG4gICAqL1xuICBDb250ZW50RGlnZXN0OiBcIkNvbnRlbnQtRGlnZXN0XCIsXG5cbiAgLyoqXG4gKiBIVFRQIEhlYWRlciBDb250ZW50LURpc3Bvc2l0aW9uXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjNjI2NiB8IFJGQyA2MjY2OiBVc2Ugb2YgdGhlIENvbnRlbnQtRGlzcG9zaXRpb24gSGVhZGVyIEZpZWxkIGluIHRoZVxuICAgICAgICBIeXBlcnRleHQgVHJhbnNmZXIgUHJvdG9jb2wgKEhUVFApfVxuICovXG4gIENvbnRlbnREaXNwb3NpdGlvbjogXCJDb250ZW50LURpc3Bvc2l0aW9uXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIENvbnRlbnQtRW5jb2RpbmdcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjOTExMCB8IFJGQzkxMTAsIFNlY3Rpb24gOC40OiBIVFRQIFNlbWFudGljc31cbiAgICovXG4gIENvbnRlbnRFbmNvZGluZzogXCJDb250ZW50LUVuY29kaW5nXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIENvbnRlbnQtTGFuZ3VhZ2VcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjOTExMCB8IFJGQzkxMTAsIFNlY3Rpb24gOC41OiBIVFRQIFNlbWFudGljc31cbiAgICovXG4gIENvbnRlbnRMYW5ndWFnZTogXCJDb250ZW50LUxhbmd1YWdlXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIENvbnRlbnQtTGVuZ3RoXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzkxMTAgfCBSRkM5MTEwLCBTZWN0aW9uIDguNjogSFRUUCBTZW1hbnRpY3N9XG4gICAqL1xuICBDb250ZW50TGVuZ3RoOiBcIkNvbnRlbnQtTGVuZ3RoXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIENvbnRlbnQtTG9jYXRpb25cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjOTExMCB8IFJGQzkxMTAsIFNlY3Rpb24gOC43OiBIVFRQIFNlbWFudGljc31cbiAgICovXG4gIENvbnRlbnRMb2NhdGlvbjogXCJDb250ZW50LUxvY2F0aW9uXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIENvbnRlbnQtUmFuZ2VcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjOTExMCB8IFJGQzkxMTAsIFNlY3Rpb24gMTQuNDogSFRUUCBTZW1hbnRpY3N9XG4gICAqL1xuICBDb250ZW50UmFuZ2U6IFwiQ29udGVudC1SYW5nZVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBDb250ZW50LVNlY3VyaXR5LVBvbGljeVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy53My5vcmcvVFIvQ1NQLyNjc3AtaGVhZGVyIHwgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgTGV2ZWwgM31cbiAgICovXG4gIENvbnRlbnRTZWN1cml0eVBvbGljeTogXCJDb250ZW50LVNlY3VyaXR5LVBvbGljeVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBDb250ZW50LVNlY3VyaXR5LVBvbGljeS1SZXBvcnQtT25seVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy53My5vcmcvVFIvQ1NQLyNjc3Byby1oZWFkZXIgfCBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBMZXZlbCAzfVxuICAgKi9cbiAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVwb3J0T25seTogXCJDb250ZW50LVNlY3VyaXR5LVBvbGljeS1SZXBvcnQtT25seVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBDb250ZW50LVR5cGVcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjOTExMCB8IFJGQzkxMTAsIFNlY3Rpb24gOC4zOiBIVFRQIFNlbWFudGljc31cbiAgICovXG4gIENvbnRlbnRUeXBlOiBcIkNvbnRlbnQtVHlwZVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBDb29raWVcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjNjI2NSB8IFJGQyA2MjY1OiBIVFRQIFN0YXRlIE1hbmFnZW1lbnQgTWVjaGFuaXNtfVxuICAgKi9cbiAgQ29va2llOiBcIkNvb2tpZVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBDcm9zcy1PcmlnaW4tRW1iZWRkZXItUG9saWN5XG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL29yaWdpbi5odG1sI2Nyb3NzLW9yaWdpbi1lbWJlZGRlci1wb2xpY3kgfCBIVE1MfVxuICAgKi9cbiAgQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeTogXCJDcm9zcy1PcmlnaW4tRW1iZWRkZXItUG9saWN5XCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIENyb3NzLU9yaWdpbi1FbWJlZGRlci1Qb2xpY3ktUmVwb3J0LU9ubHlcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb3JpZ2luLmh0bWwjY3Jvc3Mtb3JpZ2luLWVtYmVkZGVyLXBvbGljeS1yZXBvcnQtb25seSB8IEhUTUx9XG4gICAqL1xuICBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5UmVwb3J0T25seTpcbiAgICBcIkNyb3NzLU9yaWdpbi1FbWJlZGRlci1Qb2xpY3ktUmVwb3J0LU9ubHlcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3lcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb3JpZ2luLmh0bWwjY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3ktMiB8IEhUTUx9XG4gICAqL1xuICBDcm9zc09yaWdpbk9wZW5lclBvbGljeTogXCJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeS1SZXBvcnQtT25seVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9vcmlnaW4uaHRtbCNjcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS1yZXBvcnQtb25seSB8IEhUTUx9XG4gICAqL1xuICBDcm9zc09yaWdpbk9wZW5lclBvbGljeVJlcG9ydE9ubHk6IFwiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3ktUmVwb3J0LU9ubHlcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgQ3Jvc3MtT3JpZ2luLVJlc291cmNlLVBvbGljeVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY3Jvc3Mtb3JpZ2luLXJlc291cmNlLXBvbGljeS1oZWFkZXIgfCBGZXRjaH1cbiAgICovXG4gIENyb3NzT3JpZ2luUmVzb3VyY2VQb2xpY3k6IFwiQ3Jvc3MtT3JpZ2luLVJlc291cmNlLVBvbGljeVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBEQVNMXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzUzMjMgfCBSRkMgNTMyMzogV2ViIERpc3RyaWJ1dGVkIEF1dGhvcmluZyBhbmQgVmVyc2lvbmluZyAoV2ViREFWKSBTRUFSQ0h9XG4gICAqL1xuICBEQVNMOiBcIkRBU0xcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgRGF0ZVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM5MTEwIHwgUkZDOTExMCwgU2VjdGlvbiA2LjYuMTogSFRUUCBTZW1hbnRpY3N9XG4gICAqL1xuICBEYXRlOiBcIkRhdGVcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgREFWXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzQ5MTggfCBSRkMgNDkxODogSFRUUCBFeHRlbnNpb25zIGZvciBXZWIgRGlzdHJpYnV0ZWQgQXV0aG9yaW5nIGFuZCBWZXJzaW9uaW5nIChXZWJEQVYpfVxuICAgKi9cbiAgREFWOiBcIkRBVlwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBEZWx0YS1CYXNlXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzMyMjkgfCBSRkMgMzIyOTogRGVsdGEgZW5jb2RpbmcgaW4gSFRUUH1cbiAgICovXG4gIERlbHRhQmFzZTogXCJEZWx0YS1CYXNlXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIERlcHRoXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzQ5MTggfCBSRkMgNDkxODogSFRUUCBFeHRlbnNpb25zIGZvciBXZWIgRGlzdHJpYnV0ZWQgQXV0aG9yaW5nIGFuZCBWZXJzaW9uaW5nIChXZWJEQVYpfVxuICAgKi9cbiAgRGVwdGg6IFwiRGVwdGhcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgRGVzdGluYXRpb25cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjNDkxOCB8IFJGQyA0OTE4OiBIVFRQIEV4dGVuc2lvbnMgZm9yIFdlYiBEaXN0cmlidXRlZCBBdXRob3JpbmcgYW5kIFZlcnNpb25pbmcgKFdlYkRBVil9XG4gICAqL1xuICBEZXN0aW5hdGlvbjogXCJEZXN0aW5hdGlvblwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBEUG9QXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzk0NDkgfCBSRkM5NDQ5OiBPQXV0aCAyLjAgRGVtb25zdHJhdGluZyBQcm9vZiBvZiBQb3NzZXNzaW9uIChEUG9QKX1cbiAgICovXG4gIERQb1A6IFwiRFBvUFwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBEUG9QLU5vbmNlXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzk0NDkgfCBSRkM5NDQ5OiBPQXV0aCAyLjAgRGVtb25zdHJhdGluZyBQcm9vZiBvZiBQb3NzZXNzaW9uIChEUG9QKX1cbiAgICovXG4gIERwb3BOb25jZTogXCJEUG9QLU5vbmNlXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIEVhcmx5LURhdGFcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjODQ3MCB8IFJGQyA4NDcwOiBVc2luZyBFYXJseSBEYXRhIGluIEhUVFB9XG4gICAqL1xuICBFYXJseURhdGE6IFwiRWFybHktRGF0YVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBFVGFnXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzkxMTAgfCBSRkM5MTEwLCBTZWN0aW9uIDguOC4zOiBIVFRQIFNlbWFudGljc31cbiAgICovXG4gIEVUYWc6IFwiRVRhZ1wiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBFeHBlY3RcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjOTExMCB8IFJGQzkxMTAsIFNlY3Rpb24gMTAuMS4xOiBIVFRQIFNlbWFudGljc31cbiAgICovXG4gIEV4cGVjdDogXCJFeHBlY3RcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgRXhwaXJlc1xuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM5MTExIHwgUkZDOTExMSwgU2VjdGlvbiA1LjM6IEhUVFAgQ2FjaGluZ31cbiAgICovXG4gIEV4cGlyZXM6IFwiRXhwaXJlc1wiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBGb3J3YXJkZWRcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjNzIzOSB8IFJGQyA3MjM5OiBGb3J3YXJkZWQgSFRUUCBFeHRlbnNpb259XG4gICAqL1xuICBGb3J3YXJkZWQ6IFwiRm9yd2FyZGVkXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIEZyb21cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjOTExMCB8IFJGQzkxMTAsIFNlY3Rpb24gMTAuMS4yOiBIVFRQIFNlbWFudGljc31cbiAgICovXG4gIEZyb206IFwiRnJvbVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBIb2JhcmVnXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzc0ODYgfCBSRkMgNzQ4NiwgU2VjdGlvbiA2LjEuMTogSFRUUCBPcmlnaW4tQm91bmQgQXV0aGVudGljYXRpb24gKEhPQkEpfVxuICAgKi9cbiAgSG9iYXJlZzogXCJIb2JhcmVnXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIEhvc3RcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjOTExMCB8IFJGQzkxMTAsIFNlY3Rpb24gNy4yOiBIVFRQIFNlbWFudGljc31cbiAgICovXG4gIEhvc3Q6IFwiSG9zdFwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBJZlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM0OTE4IHwgUkZDIDQ5MTg6IEhUVFAgRXh0ZW5zaW9ucyBmb3IgV2ViIERpc3RyaWJ1dGVkIEF1dGhvcmluZyBhbmQgVmVyc2lvbmluZyAoV2ViREFWKX1cbiAgICovXG4gIElmOiBcIklmXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIElmLU1hdGNoXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzkxMTAgfCBSRkM5MTEwLCBTZWN0aW9uIDEzLjEuMTogSFRUUCBTZW1hbnRpY3N9XG4gICAqL1xuICBJZk1hdGNoOiBcIklmLU1hdGNoXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIElmLU1vZGlmaWVkLVNpbmNlXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzkxMTAgfCBSRkM5MTEwLCBTZWN0aW9uIDEzLjEuMzogSFRUUCBTZW1hbnRpY3N9XG4gICAqL1xuICBJZk1vZGlmaWVkU2luY2U6IFwiSWYtTW9kaWZpZWQtU2luY2VcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgSWYtTm9uZS1NYXRjaFxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM5MTEwIHwgUkZDOTExMCwgU2VjdGlvbiAxMy4xLjI6IEhUVFAgU2VtYW50aWNzfVxuICAgKi9cbiAgSWZOb25lTWF0Y2g6IFwiSWYtTm9uZS1NYXRjaFwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBJZi1SYW5nZVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM5MTEwIHwgUkZDOTExMCwgU2VjdGlvbiAxMy4xLjU6IEhUVFAgU2VtYW50aWNzfVxuICAgKi9cbiAgSWZSYW5nZTogXCJJZi1SYW5nZVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBJZi1TY2hlZHVsZS1UYWctTWF0Y2hcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjNjYzOCB8ICBSRkMgNjMzODogU2NoZWR1bGluZyBFeHRlbnNpb25zIHRvIENhbERBVn1cbiAgICovXG4gIElmU2NoZWR1bGVUYWdNYXRjaDogXCJJZi1TY2hlZHVsZS1UYWctTWF0Y2hcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgSWYtVW5tb2RpZmllZC1TaW5jZVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM5MTEwIHwgUkZDOTExMCwgU2VjdGlvbiAxMy4xLjQ6IEhUVFAgU2VtYW50aWNzfVxuICAgKi9cbiAgSWZVbm1vZGlmaWVkU2luY2U6IFwiSWYtVW5tb2RpZmllZC1TaW5jZVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBJTVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmMzMjI5IHwgUkZDIDMyMjk6IERlbHRhIGVuY29kaW5nIGluIEhUVFB9XG4gICAqL1xuICBJTTogXCJJTVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBJbmNsdWRlLVJlZmVycmVkLVRva2VuLUJpbmRpbmctSURcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjODQ3MyB8IFJGQyA4NDczOiBUb2tlbiBCaW5kaW5nIG92ZXIgSFRUUH1cbiAgICovXG4gIEluY2x1ZGVSZWZlcnJlZFRva2VuQmluZGluZ0lkOiBcIkluY2x1ZGUtUmVmZXJyZWQtVG9rZW4tQmluZGluZy1JRFwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBLZWVwLUFsaXZlXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzIwNjggfCBSRkMgMjA2ODogSHlwZXJ0ZXh0IFRyYW5zZmVyIFByb3RvY29sIC0tIEhUVFAvMS4xfVxuICAgKi9cbiAgS2VlcEFsaXZlOiBcIktlZXAtQWxpdmVcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgTGFiZWxcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjMzI1MyB8IFJGQyAzMjUzOiBWZXJzaW9uaW5nIEV4dGVuc2lvbnMgdG8gV2ViREFWOiAoV2ViIERpc3RyaWJ1dGVkIEF1dGhvcmluZyBhbmQgVmVyc2lvbmluZyl9XG4gICAqL1xuICBMYWJlbDogXCJMYWJlbFwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBMYXN0LUV2ZW50LUlEXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NlcnZlci1zZW50LWV2ZW50cy5odG1sI2xhc3QtZXZlbnQtaWQgfCBIVE1MfVxuICAgKi9cbiAgTGFzdEV2ZW50SWQ6IFwiTGFzdC1FdmVudC1JRFwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBMYXN0LU1vZGlmaWVkXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzkxMTAgfCBSRkM5MTEwLCBTZWN0aW9uIDguOC4yOiBIVFRQIFNlbWFudGljc31cbiAgICovXG4gIExhc3RNb2RpZmllZDogXCJMYXN0LU1vZGlmaWVkXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIExpbmtcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjODI4OCB8IFJGQyA4Mjg4OiBXZWIgTGlua2luZ31cbiAgICovXG4gIExpbms6IFwiTGlua1wiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBMb2NhdGlvblxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM5MTEwIHwgUkZDOTExMCwgU2VjdGlvbiAxMC4yLjI6IEhUVFAgU2VtYW50aWNzfVxuICAgKi9cbiAgTG9jYXRpb246IFwiTG9jYXRpb25cIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgTG9jay1Ub2tlblxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM0OTE4IHwgUkZDIDQ5MTg6IEhUVFAgRXh0ZW5zaW9ucyBmb3IgV2ViIERpc3RyaWJ1dGVkIEF1dGhvcmluZyBhbmQgVmVyc2lvbmluZyAoV2ViREFWKX1cbiAgICovXG4gIExvY2tUb2tlbjogXCJMb2NrLVRva2VuXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIE1heC1Gb3J3YXJkc1xuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM5MTEwIHwgUkZDOTExMCwgU2VjdGlvbiA3LjYuMjogSFRUUCBTZW1hbnRpY3N9XG4gICAqL1xuICBNYXhGb3J3YXJkczogXCJNYXgtRm9yd2FyZHNcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgTWVtZW50by1EYXRldGltZVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM3MDg5IHwgUkZDIDcwODk6IEhUVFAgRnJhbWV3b3JrIGZvciBUaW1lLUJhc2VkIEFjY2VzcyB0byBSZXNvdXJjZSBTdGF0ZXMgLS0gTWVtZW50b31cbiAgICovXG4gIE1lbWVudG9EYXRldGltZTogXCJNZW1lbnRvLURhdGV0aW1lXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIE1ldGVyXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzIyMjcgfCBSRkMgMjIyNzogU2ltcGxlIEhpdC1NZXRlcmluZyBhbmQgVXNhZ2UtTGltaXRpbmcgZm9yIEhUVFB9XG4gICAqL1xuICBNZXRlcjogXCJNZXRlclwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBNSU1FLVZlcnNpb25cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjOTExMiB8IFJGQzkxMTIsIEFwcGVuZGl4IEIuMTogSFRUUC8xLjF9XG4gICAqL1xuICBNaW1lVmVyc2lvbjogXCJNSU1FLVZlcnNpb25cIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgTmVnb3RpYXRlXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzIyOTUgfCBSRkMgMjI5NTogVHJhbnNwYXJlbnQgQ29udGVudCBOZWdvdGlhdGlvbiBpbiBIVFRQfVxuICAgKi9cbiAgTmVnb3RpYXRlOiBcIk5lZ290aWF0ZVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBORUxcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cudzMub3JnL1RSL25ldHdvcmstZXJyb3ItbG9nZ2luZy8gfCBOZXR3b3JrIEVycm9yIExvZ2dpbmd9XG4gICAqL1xuICBORUw6IFwiTkVMXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIE9EYXRhLUVudGl0eUlkXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL29kYXRhL29kYXRhL3Y0LjAxL2NzcHJkMDUvcGFydDEtcHJvdG9jb2wvb2RhdGEtdjQuMDEtY3NwcmQwNS1wYXJ0MS1wcm90b2NvbC5odG1sI19Ub2MxNDE3MjczNSB8IE9EYXRhIFZlcnNpb24gNC4wMSBQYXJ0IDE6IFByb3RvY29sfVxuICAgKiBAc2VlIHtAbGluayAjT0FTSVMgfCBPQVNJU31cbiAgICogQHNlZSB7QGxpbmsgI0NoZXRfRW5zaWduIHwgQ2hldF9FbnNpZ259XG4gICAqL1xuICBPZGF0YUVudGl0eWlkOiBcIk9EYXRhLUVudGl0eUlkXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIE9EYXRhLUlzb2xhdGlvblxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy9vZGF0YS9vZGF0YS92NC4wMS9vZGF0YS12NC4wMS1wYXJ0MS1wcm90b2NvbC5odG1sI3NlY19IZWFkZXJJc29sYXRpb25PRGF0YUlzb2xhdGlvbiB8IE9EYXRhIFZlcnNpb24gNC4wMSBQYXJ0IDE6IFByb3RvY29sfVxuICAgKiBAc2VlIHtAbGluayAjT0FTSVMgfCBPQVNJU31cbiAgICogQHNlZSB7QGxpbmsgI0NoZXRfRW5zaWduIHwgQ2hldF9FbnNpZ259XG4gICAqL1xuICBPZGF0YUlzb2xhdGlvbjogXCJPRGF0YS1Jc29sYXRpb25cIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgT0RhdGEtTWF4VmVyc2lvblxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy9vZGF0YS9vZGF0YS92NC4wMS9vZGF0YS12NC4wMS1wYXJ0MS1wcm90b2NvbC5odG1sI3NlY19IZWFkZXJPRGF0YU1heFZlcnNpb24gfCBPRGF0YSBWZXJzaW9uIDQuMDEgUGFydCAxOiBQcm90b2NvbH1cbiAgICogQHNlZSB7QGxpbmsgI09BU0lTIHwgT0FTSVN9XG4gICAqIEBzZWUge0BsaW5rICNDaGV0X0Vuc2lnbiB8IENoZXRfRW5zaWdufVxuICAgKi9cbiAgT2RhdGFNYXh2ZXJzaW9uOiBcIk9EYXRhLU1heFZlcnNpb25cIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgT0RhdGEtVmVyc2lvblxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy9vZGF0YS9vZGF0YS92NC4wMS9vZGF0YS12NC4wMS1wYXJ0MS1wcm90b2NvbC5odG1sI3NlY19IZWFkZXJPRGF0YVZlcnNpb24gfCBPRGF0YSBWZXJzaW9uIDQuMDEgUGFydCAxOiBQcm90b2NvbH1cbiAgICogQHNlZSB7QGxpbmsgI09BU0lTIHwgT0FTSVN9XG4gICAqIEBzZWUge0BsaW5rICNDaGV0X0Vuc2lnbiB8IENoZXRfRW5zaWdufVxuICAgKi9cbiAgT2RhdGFWZXJzaW9uOiBcIk9EYXRhLVZlcnNpb25cIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgT3B0aW9uYWwtV1dXLUF1dGhlbnRpY2F0ZVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM4MDUzIHwgUkZDIDgwNTMsIFNlY3Rpb24gMzogSFRUUCBBdXRoZW50aWNhdGlvbiBFeHRlbnNpb25zIGZvciBJbnRlcmFjdGl2ZSBDbGllbnRzfVxuICAgKi9cbiAgT3B0aW9uYWxXd3dBdXRoZW50aWNhdGU6IFwiT3B0aW9uYWwtV1dXLUF1dGhlbnRpY2F0ZVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBPcmRlcmluZy1UeXBlXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzM2NDggfCBSRkMgMzY0ODogV2ViIERpc3RyaWJ1dGVkIEF1dGhvcmluZyBhbmQgVmVyc2lvbmluZyAoV2ViREFWKSBPcmRlcmVkIENvbGxlY3Rpb25zIFByb3RvY29sfVxuICAgKi9cbiAgT3JkZXJpbmdUeXBlOiBcIk9yZGVyaW5nLVR5cGVcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgT3JpZ2luXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzY0NTQgfCBSRkMgNjQ1NDogVGhlIFdlYiBPcmlnaW4gQ29uY2VwdH1cbiAgICovXG4gIE9yaWdpbjogXCJPcmlnaW5cIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgT3JpZ2luLUFnZW50LUNsdXN0ZXJcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvb3JpZ2luLmh0bWwjb3JpZ2luLWFnZW50LWNsdXN0ZXIgfCBIVE1MfVxuICAgKi9cbiAgT3JpZ2luQWdlbnRDbHVzdGVyOiBcIk9yaWdpbi1BZ2VudC1DbHVzdGVyXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIE9TQ09SRVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM4NjEzIHwgUkZDIDg2MTMsIFNlY3Rpb24gMTEuMTogT2JqZWN0IFNlY3VyaXR5IGZvciBDb25zdHJhaW5lZCBSRVNUZnVsIEVudmlyb25tZW50cyAoT1NDT1JFKX1cbiAgICovXG4gIE9TQ09SRTogXCJPU0NPUkVcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgT1NMQy1Db3JlLVZlcnNpb25cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLm9hc2lzLW9wZW4tcHJvamVjdHMub3JnL29zbGMtb3AvY29yZS92My4wL29zbGMtY29yZS5odG1sIHwgT0FTSVMgUHJvamVjdCBTcGVjaWZpY2F0aW9uIDAxfVxuICAgKiBAc2VlIHtAbGluayAjT0FTSVMgfCBPQVNJU31cbiAgICogQHNlZSB7QGxpbmsgI0NoZXRfRW5zaWduIHwgQ2hldF9FbnNpZ259XG4gICAqL1xuICBPc2xjQ29yZVZlcnNpb246IFwiT1NMQy1Db3JlLVZlcnNpb25cIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgT3ZlcndyaXRlXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzQ5MTggfCBSRkMgNDkxODogSFRUUCBFeHRlbnNpb25zIGZvciBXZWIgRGlzdHJpYnV0ZWQgQXV0aG9yaW5nIGFuZCBWZXJzaW9uaW5nIChXZWJEQVYpfVxuICAgKi9cbiAgT3ZlcndyaXRlOiBcIk92ZXJ3cml0ZVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBQaW5nLUZyb21cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvbGlua3MuaHRtbCNwaW5nLWZyb20gfCBIVE1MfVxuICAgKi9cbiAgUGluZ0Zyb206IFwiUGluZy1Gcm9tXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIFBpbmctVG9cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvbGlua3MuaHRtbCNwaW5nLXRvIHwgSFRNTH1cbiAgICovXG4gIFBpbmdUbzogXCJQaW5nLVRvXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIFBvc2l0aW9uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzM2NDggfCBSRkMgMzY0ODogV2ViIERpc3RyaWJ1dGVkIEF1dGhvcmluZyBhbmQgVmVyc2lvbmluZyAoV2ViREFWKSBPcmRlcmVkIENvbGxlY3Rpb25zIFByb3RvY29sfVxuICAgKi9cbiAgUG9zaXRpb246IFwiUG9zaXRpb25cIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgUHJlZmVyXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzcyNDAgfCBSRkMgNzI0MDogUHJlZmVyIEhlYWRlciBmb3IgSFRUUH1cbiAgICovXG4gIFByZWZlcjogXCJQcmVmZXJcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgUHJlZmVyZW5jZS1BcHBsaWVkXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzcyNDAgfCBSRkMgNzI0MDogUHJlZmVyIEhlYWRlciBmb3IgSFRUUH1cbiAgICovXG4gIFByZWZlcmVuY2VBcHBsaWVkOiBcIlByZWZlcmVuY2UtQXBwbGllZFwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBQcmlvcml0eVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM5MjE4IHwgUkZDOTIxODogRXh0ZW5zaWJsZSBQcmlvcml0aXphdGlvbiBTY2hlbWUgZm9yIEhUVFB9XG4gICAqL1xuICBQcmlvcml0eTogXCJQcmlvcml0eVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBQcm94eS1BdXRoZW50aWNhdGVcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjOTExMCB8IFJGQzkxMTAsIFNlY3Rpb24gMTEuNy4xOiBIVFRQIFNlbWFudGljc31cbiAgICovXG4gIFByb3h5QXV0aGVudGljYXRlOiBcIlByb3h5LUF1dGhlbnRpY2F0ZVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBQcm94eS1BdXRoZW50aWNhdGlvbi1JbmZvXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzkxMTAgfCBSRkM5MTEwLCBTZWN0aW9uIDExLjcuMzogSFRUUCBTZW1hbnRpY3N9XG4gICAqL1xuICBQcm94eUF1dGhlbnRpY2F0aW9uSW5mbzogXCJQcm94eS1BdXRoZW50aWNhdGlvbi1JbmZvXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIFByb3h5LUF1dGhvcml6YXRpb25cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjOTExMCB8IFJGQzkxMTAsIFNlY3Rpb24gMTEuNy4yOiBIVFRQIFNlbWFudGljc31cbiAgICovXG4gIFByb3h5QXV0aG9yaXphdGlvbjogXCJQcm94eS1BdXRob3JpemF0aW9uXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIFByb3h5LVN0YXR1c1xuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM5MjA5IHwgUkZDOTIwOTogVGhlIFByb3h5LVN0YXR1cyBIVFRQIFJlc3BvbnNlIEhlYWRlciBGaWVsZH1cbiAgICovXG4gIFByb3h5U3RhdHVzOiBcIlByb3h5LVN0YXR1c1wiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBQdWJsaWMtS2V5LVBpbnNcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjNzQ2OSB8IFJGQyA3NDY5OiBQdWJsaWMgS2V5IFBpbm5pbmcgRXh0ZW5zaW9uIGZvciBIVFRQfVxuICAgKi9cbiAgUHVibGljS2V5UGluczogXCJQdWJsaWMtS2V5LVBpbnNcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgUHVibGljLUtleS1QaW5zLVJlcG9ydC1Pbmx5XG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzc0NjkgfCBSRkMgNzQ2OTogUHVibGljIEtleSBQaW5uaW5nIEV4dGVuc2lvbiBmb3IgSFRUUH1cbiAgICovXG4gIFB1YmxpY0tleVBpbnNSZXBvcnRPbmx5OiBcIlB1YmxpYy1LZXktUGlucy1SZXBvcnQtT25seVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBSYW5nZVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM5MTEwIHwgUkZDOTExMCwgU2VjdGlvbiAxNC4yOiBIVFRQIFNlbWFudGljc31cbiAgICovXG4gIFJhbmdlOiBcIlJhbmdlXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIFJlZGlyZWN0LVJlZlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM0NDM3IHwgUkZDIDQ0Mzc6IFdlYiBEaXN0cmlidXRlZCBBdXRob3JpbmcgYW5kIFZlcnNpb25pbmcgKFdlYkRBVikgUmVkaXJlY3QgUmVmZXJlbmNlIFJlc291cmNlc31cbiAgICovXG4gIFJlZGlyZWN0UmVmOiBcIlJlZGlyZWN0LVJlZlwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBSZWZlcmVyXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzkxMTAgfCBSRkM5MTEwLCBTZWN0aW9uIDEwLjEuMzogSFRUUCBTZW1hbnRpY3N9XG4gICAqL1xuICBSZWZlcmVyOiBcIlJlZmVyZXJcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgUmVmcmVzaFxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9icm93c2luZy10aGUtd2ViLmh0bWwjcmVmcmVzaCB8IEhUTUx9XG4gICAqL1xuICBSZWZyZXNoOiBcIlJlZnJlc2hcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgUmVwbGF5LU5vbmNlXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzg1NTUgfCBSRkMgODU1NSwgU2VjdGlvbiA2LjUuMTogQXV0b21hdGljIENlcnRpZmljYXRlIE1hbmFnZW1lbnQgRW52aXJvbm1lbnQgKEFDTUUpfVxuICAgKi9cbiAgUmVwbGF5Tm9uY2U6IFwiUmVwbGF5LU5vbmNlXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIFJlcHItRGlnZXN0XG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL2RyYWZ0LWlldGYtaHR0cGJpcy1kaWdlc3QtaGVhZGVycy0xMyB8IFJGQy1pZXRmLWh0dHBiaXMtZGlnZXN0LWhlYWRlcnMtMTMsIFNlY3Rpb24gMzogRGlnZXN0IEZpZWxkc31cbiAgICovXG4gIFJlcHJEaWdlc3Q6IFwiUmVwci1EaWdlc3RcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgUmV0cnktQWZ0ZXJcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjOTExMCB8IFJGQzkxMTAsIFNlY3Rpb24gMTAuMi4zOiBIVFRQIFNlbWFudGljc31cbiAgICovXG4gIFJldHJ5QWZ0ZXI6IFwiUmV0cnktQWZ0ZXJcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgU2NoZWR1bGUtUmVwbHlcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjNjYzOCB8IFJGQyA2NjM4OiBTY2hlZHVsaW5nIEV4dGVuc2lvbnMgdG8gQ2FsREFWfVxuICAgKi9cbiAgU2NoZWR1bGVSZXBseTogXCJTY2hlZHVsZS1SZXBseVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBTY2hlZHVsZS1UYWdcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjNjYzOCB8IFJGQyA2MzM4OiBTY2hlZHVsaW5nIEV4dGVuc2lvbnMgdG8gQ2FsREFWfVxuICAgKi9cbiAgU2NoZWR1bGVUYWc6IFwiU2NoZWR1bGUtVGFnXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIFNlYy1QdXJwb3NlXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNzZWMtcHVycG9zZS1oZWFkZXIgfCBGZXRjaH1cbiAgICovXG4gIFNlY1B1cnBvc2U6IFwiU2VjLVB1cnBvc2VcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgU2VjLVRva2VuLUJpbmRpbmdcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjODQ3MyB8IFJGQyA4NDczOiBUb2tlbiBCaW5kaW5nIG92ZXIgSFRUUH1cbiAgICovXG4gIFNlY1Rva2VuQmluZGluZzogXCJTZWMtVG9rZW4tQmluZGluZ1wiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBTZWMtV2ViU29ja2V0LUFjY2VwdFxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM2NDU1IHwgUkZDIDY0NTU6IFRoZSBXZWJTb2NrZXQgUHJvdG9jb2x9XG4gICAqL1xuICBTZWNXZWJzb2NrZXRBY2NlcHQ6IFwiU2VjLVdlYlNvY2tldC1BY2NlcHRcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzY0NTUgfCBSRkMgNjQ1NTogVGhlIFdlYlNvY2tldCBQcm90b2NvbH1cbiAgICovXG4gIFNlY1dlYnNvY2tldEV4dGVuc2lvbnM6IFwiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIFNlYy1XZWJTb2NrZXQtS2V5XG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzY0NTUgfCBSRkMgNjQ1NTogVGhlIFdlYlNvY2tldCBQcm90b2NvbH1cbiAgICovXG4gIFNlY1dlYnNvY2tldEtleTogXCJTZWMtV2ViU29ja2V0LUtleVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBTZWMtV2ViU29ja2V0LVByb3RvY29sXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzY0NTUgfCBSRkMgNjQ1NTogVGhlIFdlYlNvY2tldCBQcm90b2NvbH1cbiAgICovXG4gIFNlY1dlYnNvY2tldFByb3RvY29sOiBcIlNlYy1XZWJTb2NrZXQtUHJvdG9jb2xcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgU2VjLVdlYlNvY2tldC1WZXJzaW9uXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzY0NTUgfCBSRkMgNjQ1NTogVGhlIFdlYlNvY2tldCBQcm90b2NvbH1cbiAgICovXG4gIFNlY1dlYnNvY2tldFZlcnNpb246IFwiU2VjLVdlYlNvY2tldC1WZXJzaW9uXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIFNlcnZlclxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM5MTEwIHwgUkZDOTExMCwgU2VjdGlvbiAxMC4yLjQ6IEhUVFAgU2VtYW50aWNzfVxuICAgKi9cbiAgU2VydmVyOiBcIlNlcnZlclwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBTZXJ2ZXItVGltaW5nXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9zZXJ2ZXItdGltaW5nLyB8IFNlcnZlciBUaW1pbmd9XG4gICAqL1xuICBTZXJ2ZXJUaW1pbmc6IFwiU2VydmVyLVRpbWluZ1wiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBTZXQtQ29va2llXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzYyNjUgfCBSRkMgNjI2NTogSFRUUCBTdGF0ZSBNYW5hZ2VtZW50IE1lY2hhbmlzbX1cbiAgICovXG4gIFNldENvb2tpZTogXCJTZXQtQ29va2llXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIFNpZ25hdHVyZVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9kcmFmdC1pZXRmLWh0dHBiaXMtbWVzc2FnZS1zaWduYXR1cmVzLTE5IHwgUkZDLWlldGYtaHR0cGJpcy1tZXNzYWdlLXNpZ25hdHVyZXMtMTksIFNlY3Rpb24gNC4yOiBIVFRQIE1lc3NhZ2UgU2lnbmF0dXJlc31cbiAgICovXG4gIFNpZ25hdHVyZTogXCJTaWduYXR1cmVcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgU2lnbmF0dXJlLUlucHV0XG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL2RyYWZ0LWlldGYtaHR0cGJpcy1tZXNzYWdlLXNpZ25hdHVyZXMtMTkgfCBSRkMtaWV0Zi1odHRwYmlzLW1lc3NhZ2Utc2lnbmF0dXJlcy0xOSwgU2VjdGlvbiA0LjE6IEhUVFAgTWVzc2FnZSBTaWduYXR1cmVzfVxuICAgKi9cbiAgU2lnbmF0dXJlSW5wdXQ6IFwiU2lnbmF0dXJlLUlucHV0XCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIFNMVUdcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjNTAyMyB8IFJGQyA1MDIzOiBUaGUgQXRvbSBQdWJsaXNoaW5nIFByb3RvY29sfVxuICAgKi9cbiAgU0xVRzogXCJTTFVHXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIFNvYXBBY3Rpb25cbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cudzMub3JnL1RSLzIwMDAvTk9URS1TT0FQLTIwMDAwNTA4IHwgU2ltcGxlIE9iamVjdCBBY2Nlc3MgUHJvdG9jb2wgKFNPQVApIDEuMX1cbiAgICovXG4gIFNvYXBBY3Rpb246IFwiU29hcEFjdGlvblwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBTdGF0dXMtVVJJXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzI1MTggfCBSRkMgMjUxODogSFRUUCBFeHRlbnNpb25zIGZvciBEaXN0cmlidXRlZCBBdXRob3JpbmcgLS0gV0VCREFWfVxuICAgKi9cbiAgU3RhdHVzVXJpOiBcIlN0YXR1cy1VUklcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM2Nzk3IHwgUkZDIDY3OTc6IEhUVFAgU3RyaWN0IFRyYW5zcG9ydCBTZWN1cml0eSAoSFNUUyl9XG4gICAqL1xuICBTdHJpY3RUcmFuc3BvcnRTZWN1cml0eTogXCJTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5XCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIFN1bnNldFxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM4NTk0IHwgUkZDIDg1OTQ6IFRoZSBTdW5zZXQgSFRUUCBIZWFkZXIgRmllbGR9XG4gICAqL1xuICBTdW5zZXQ6IFwiU3Vuc2V0XCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIFRDTlxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmMyMjk1IHwgUkZDIDIyOTU6IFRyYW5zcGFyZW50IENvbnRlbnQgTmVnb3RpYXRpb24gaW4gSFRUUH1cbiAgICovXG4gIFRDTjogXCJUQ05cIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgVEVcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjOTExMCB8IFJGQzkxMTAsIFNlY3Rpb24gMTAuMS40OiBIVFRQIFNlbWFudGljc31cbiAgICovXG4gIFRFOiBcIlRFXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIFRpbWVvdXRcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjNDkxOCB8IFJGQyA0OTE4OiBIVFRQIEV4dGVuc2lvbnMgZm9yIFdlYiBEaXN0cmlidXRlZCBBdXRob3JpbmcgYW5kIFZlcnNpb25pbmcgKFdlYkRBVil9XG4gICAqL1xuICBUaW1lb3V0OiBcIlRpbWVvdXRcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgVG9waWNcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjODAzMCB8IFJGQyA4MDMwLCBTZWN0aW9uIDUuNDogR2VuZXJpYyBFdmVudCBEZWxpdmVyeSBVc2luZyBIVFRQIFB1c2h9XG4gICAqL1xuICBUb3BpYzogXCJUb3BpY1wiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBUcmFjZXBhcmVudFxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy53My5vcmcvVFIvdHJhY2UtY29udGV4dC8jdHJhY2VwYXJlbnQtaGVhZGVyIHwgVHJhY2UgQ29udGV4dH1cbiAgICovXG4gIFRyYWNlcGFyZW50OiBcIlRyYWNlcGFyZW50XCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIFRyYWNlc3RhdGVcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cudzMub3JnL1RSL3RyYWNlLWNvbnRleHQvI3RyYWNlc3RhdGUtaGVhZGVyIHwgVHJhY2UgQ29udGV4dH1cbiAgICovXG4gIFRyYWNlc3RhdGU6IFwiVHJhY2VzdGF0ZVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBUcmFpbGVyXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzkxMTAgfCBSRkM5MTEwLCBTZWN0aW9uIDYuNi4yOiBIVFRQIFNlbWFudGljc31cbiAgICovXG4gIFRyYWlsZXI6IFwiVHJhaWxlclwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBUcmFuc2Zlci1FbmNvZGluZ1xuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM5MTEyIHwgUkZDOTExMiwgU2VjdGlvbiA2LjE6IEhUVFAgU2VtYW50aWNzfVxuICAgKi9cbiAgVHJhbnNmZXJFbmNvZGluZzogXCJUcmFuc2Zlci1FbmNvZGluZ1wiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBUVExcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjODAzMCB8IFJGQyA4MDMwLCBTZWN0aW9uIDUuMjogR2VuZXJpYyBFdmVudCBEZWxpdmVyeSBVc2luZyBIVFRQIFB1c2h9XG4gICAqL1xuICBUVEw6IFwiVFRMXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIFVwZ3JhZGVcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjOTExMCB8IFJGQzkxMTAsIFNlY3Rpb24gNy44OiBIVFRQIFNlbWFudGljc31cbiAgICovXG4gIFVwZ3JhZGU6IFwiVXBncmFkZVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBVcmdlbmN5XG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzgwMzAgfCBSRkMgODAzMCwgU2VjdGlvbiA1LjM6IEdlbmVyaWMgRXZlbnQgRGVsaXZlcnkgVXNpbmcgSFRUUCBQdXNofVxuICAgKi9cbiAgVXJnZW5jeTogXCJVcmdlbmN5XCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIFVzZXItQWdlbnRcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjOTExMCB8IFJGQzkxMTAsIFNlY3Rpb24gMTAuMS41OiBIVFRQIFNlbWFudGljc31cbiAgICovXG4gIFVzZXJBZ2VudDogXCJVc2VyLUFnZW50XCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIFZhcmlhbnQtVmFyeVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmMyMjk1IHwgUkZDIDIyOTU6IFRyYW5zcGFyZW50IENvbnRlbnQgTmVnb3RpYXRpb24gaW4gSFRUUH1cbiAgICovXG4gIFZhcmlhbnRWYXJ5OiBcIlZhcmlhbnQtVmFyeVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBWYXJ5XG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzkxMTAgfCBSRkM5MTEwLCBTZWN0aW9uIDEyLjUuNTogSFRUUCBTZW1hbnRpY3N9XG4gICAqL1xuICBWYXJ5OiBcIlZhcnlcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgVmlhXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzkxMTAgfCBSRkM5MTEwLCBTZWN0aW9uIDcuNi4zOiBIVFRQIFNlbWFudGljc31cbiAgICovXG4gIFZpYTogXCJWaWFcIixcblxuICAvKipcbiAgICogSFRUUCBIZWFkZXIgV2FudC1Db250ZW50LURpZ2VzdFxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9kcmFmdC1pZXRmLWh0dHBiaXMtZGlnZXN0LWhlYWRlcnMtMTMgfCBSRkMtaWV0Zi1odHRwYmlzLWRpZ2VzdC1oZWFkZXJzLTEzLCBTZWN0aW9uIDQ6IERpZ2VzdCBGaWVsZHN9XG4gICAqL1xuICBXYW50Q29udGVudERpZ2VzdDogXCJXYW50LUNvbnRlbnQtRGlnZXN0XCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIFdhbnQtUmVwci1EaWdlc3RcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vZHJhZnQtaWV0Zi1odHRwYmlzLWRpZ2VzdC1oZWFkZXJzLTEzIHwgUkZDLWlldGYtaHR0cGJpcy1kaWdlc3QtaGVhZGVycy0xMywgU2VjdGlvbiA0OiBEaWdlc3QgRmllbGRzfVxuICAgKi9cbiAgV2FudFJlcHJEaWdlc3Q6IFwiV2FudC1SZXByLURpZ2VzdFwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBXV1ctQXV0aGVudGljYXRlXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzkxMTAgfCBSRkM5MTEwLCBTZWN0aW9uIDExLjYuMTogSFRUUCBTZW1hbnRpY3N9XG4gICAqL1xuICBXd3dBdXRoZW50aWNhdGU6IFwiV1dXLUF1dGhlbnRpY2F0ZVwiLFxuXG4gIC8qKlxuICAgKiBIVFRQIEhlYWRlciBYLUNvbnRlbnQtVHlwZS1PcHRpb25zXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyN4LWNvbnRlbnQtdHlwZS1vcHRpb25zLWhlYWRlciB8IEZldGNofVxuICAgKi9cbiAgWENvbnRlbnRUeXBlT3B0aW9uczogXCJYLUNvbnRlbnQtVHlwZS1PcHRpb25zXCIsXG5cbiAgLyoqXG4gICAqIEhUVFAgSGVhZGVyIFgtRnJhbWUtT3B0aW9uc1xuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9icm93c2luZy10aGUtd2ViLmh0bWwjeC1mcmFtZS1vcHRpb25zIHwgSFRNTH1cbiAgICovXG4gIFhGcmFtZU9wdGlvbnM6IFwiWC1GcmFtZS1PcHRpb25zXCIsXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIEEgSFRUUCBIZWFkZXJcbiAqXG4gKiBAZXhwZXJpbWVudGFsICoqVU5TVEFCTEUqKjogTmV3IEFQSSwgeWV0IHRvIGJlIHZldHRlZC5cbiAqL1xuZXhwb3J0IHR5cGUgSGVhZGVyID0gdHlwZW9mIEhFQURFUltrZXlvZiB0eXBlb2YgSEVBREVSXTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBQ3JDLGlMQUFpTDtBQUVqTDs7Ozs7O0NBTUMsR0FDRCxPQUFPLE1BQU0sU0FBUztFQUNwQjs7OztHQUlDLEdBQ0QsS0FBSztFQUVMOzs7O0dBSUMsR0FDRCxRQUFRO0VBRVI7Ozs7R0FJQyxHQUNELGlCQUFpQjtFQUVqQjs7OztHQUlDLEdBQ0QsVUFBVTtFQUVWOzs7O0dBSUMsR0FDRCxnQkFBZ0I7RUFFaEI7Ozs7R0FJQyxHQUNELGdCQUFnQjtFQUVoQjs7OztHQUlDLEdBQ0QsZ0JBQWdCO0VBRWhCOzs7O0dBSUMsR0FDRCxnQkFBZ0I7RUFF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 +// denoCacheMetadata=3671378470241720507,4838857949902680540
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/0d09955d261f90a3e9026087e0ef08c617c90c39a9d0f19465e0ef5d9f597d15.js b/vendor/gen/https/jsr.io/0d09955d261f90a3e9026087e0ef08c617c90c39a9d0f19465e0ef5d9f597d15.js new file mode 100644 index 0000000..f50fee1 --- /dev/null +++ b/vendor/gen/https/jsr.io/0d09955d261f90a3e9026087e0ef08c617c90c39a9d0f19465e0ef5d9f597d15.js @@ -0,0 +1,34 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * Returns `true` if the prefix array appears at the start of the source array, + * `false` otherwise. + * + * The complexity of this function is `O(prefix.length)`. + * + * @param source Source array to check. + * @param prefix Prefix array to check for. + * @returns `true` if the prefix array appears at the start of the source array, + * `false` otherwise. + * + * @example Basic usage + * ```ts + * import { startsWith } from "@std/bytes/starts-with"; + * import { assertEquals } from "@std/assert"; + * + * const source = new Uint8Array([0, 1, 2, 1, 2, 1, 2, 3]); + * const prefix = new Uint8Array([0, 1, 2]); + * + * assertEquals(startsWith(source, prefix), true); + * ``` + */ export function startsWith(source, prefix) { + if (prefix.length > source.length) { + return false; + } + for(let i = 0; i < prefix.length; i++){ + if (source[i] !== prefix[i]) return false; + } + return true; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvYnl0ZXMvMS4wLjYvc3RhcnRzX3dpdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuLyoqXG4gKiBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJlZml4IGFycmF5IGFwcGVhcnMgYXQgdGhlIHN0YXJ0IG9mIHRoZSBzb3VyY2UgYXJyYXksXG4gKiBgZmFsc2VgIG90aGVyd2lzZS5cbiAqXG4gKiBUaGUgY29tcGxleGl0eSBvZiB0aGlzIGZ1bmN0aW9uIGlzIGBPKHByZWZpeC5sZW5ndGgpYC5cbiAqXG4gKiBAcGFyYW0gc291cmNlIFNvdXJjZSBhcnJheSB0byBjaGVjay5cbiAqIEBwYXJhbSBwcmVmaXggUHJlZml4IGFycmF5IHRvIGNoZWNrIGZvci5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJlZml4IGFycmF5IGFwcGVhcnMgYXQgdGhlIHN0YXJ0IG9mIHRoZSBzb3VyY2UgYXJyYXksXG4gKiBgZmFsc2VgIG90aGVyd2lzZS5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHN0YXJ0c1dpdGggfSBmcm9tIFwiQHN0ZC9ieXRlcy9zdGFydHMtd2l0aFwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3Qgc291cmNlID0gbmV3IFVpbnQ4QXJyYXkoWzAsIDEsIDIsIDEsIDIsIDEsIDIsIDNdKTtcbiAqIGNvbnN0IHByZWZpeCA9IG5ldyBVaW50OEFycmF5KFswLCAxLCAyXSk7XG4gKlxuICogYXNzZXJ0RXF1YWxzKHN0YXJ0c1dpdGgoc291cmNlLCBwcmVmaXgpLCB0cnVlKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRzV2l0aChzb3VyY2U6IFVpbnQ4QXJyYXksIHByZWZpeDogVWludDhBcnJheSk6IGJvb2xlYW4ge1xuICBpZiAocHJlZml4Lmxlbmd0aCA+IHNvdXJjZS5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHByZWZpeC5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzb3VyY2VbaV0gIT09IHByZWZpeFtpXSkgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXFCQyxHQUNELE9BQU8sU0FBUyxXQUFXLE1BQWtCLEVBQUUsTUFBa0I7RUFDL0QsSUFBSSxPQUFPLE1BQU0sR0FBRyxPQUFPLE1BQU0sRUFBRTtJQUNqQyxPQUFPO0VBQ1Q7RUFFQSxJQUFLLElBQUksSUFBSSxHQUFHLElBQUksT0FBTyxNQUFNLEVBQUUsSUFBSztJQUN0QyxJQUFJLE1BQU0sQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPO0VBQ3RDO0VBQ0EsT0FBTztBQUNUIn0= +// denoCacheMetadata=1253292498248986327,16669658808768210622
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/0fa0ca839dbb298b989195e7b6298a1f91f3a831335f6e1c56ac264ab3065575.js b/vendor/gen/https/jsr.io/0fa0ca839dbb298b989195e7b6298a1f91f3a831335f6e1c56ac264ab3065575.js new file mode 100644 index 0000000..b5f9dcb --- /dev/null +++ b/vendor/gen/https/jsr.io/0fa0ca839dbb298b989195e7b6298a1f91f3a831335f6e1c56ac264ab3065575.js @@ -0,0 +1,109 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { CHAR_DOT } from "../_common/constants.ts"; +import { stripTrailingSeparators } from "../_common/strip_trailing_separators.ts"; +import { assertPath } from "../_common/assert_path.ts"; +import { isPosixPathSeparator } from "./_util.ts"; +/** + * Return a `ParsedPath` object of the `path`. + * + * @example Usage + * ```ts + * import { parse } from "@std/path/posix/parse"; + * import { assertEquals } from "@std/assert"; + * + * const path = parse("/home/user/file.txt"); + * assertEquals(path, { + * root: "/", + * dir: "/home/user", + * base: "file.txt", + * ext: ".txt", + * name: "file" + * }); + * ``` + * + * @param path The path to parse. + * @returns The parsed path object. + */ export function parse(path) { + assertPath(path); + const ret = { + root: "", + dir: "", + base: "", + ext: "", + name: "" + }; + if (path.length === 0) return ret; + const isAbsolute = isPosixPathSeparator(path.charCodeAt(0)); + let start; + if (isAbsolute) { + ret.root = "/"; + start = 1; + } else { + start = 0; + } + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + // Get non-dir info + for(; i >= start; --i){ + const code = path.charCodeAt(i); + if (isPosixPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot + preDotState === 0 || // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + if (end !== -1) { + if (startPart === 0 && isAbsolute) { + ret.base = ret.name = path.slice(1, end); + } else { + ret.base = ret.name = path.slice(startPart, end); + } + } + // Fallback to '/' in case there is no basename + ret.base = ret.base || "/"; + } else { + if (startPart === 0 && isAbsolute) { + ret.name = path.slice(1, startDot); + ret.base = path.slice(1, end); + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + } + ret.ext = path.slice(startDot, end); + } + if (startPart > 0) { + ret.dir = stripTrailingSeparators(path.slice(0, startPart - 1), isPosixPathSeparator); + } else if (isAbsolute) ret.dir = "/"; + return ret; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9wb3NpeC9wYXJzZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBDSEFSX0RPVCB9IGZyb20gXCIuLi9fY29tbW9uL2NvbnN0YW50cy50c1wiO1xuaW1wb3J0IHR5cGUgeyBQYXJzZWRQYXRoIH0gZnJvbSBcIi4uL3R5cGVzLnRzXCI7XG5pbXBvcnQgeyBzdHJpcFRyYWlsaW5nU2VwYXJhdG9ycyB9IGZyb20gXCIuLi9fY29tbW9uL3N0cmlwX3RyYWlsaW5nX3NlcGFyYXRvcnMudHNcIjtcbmltcG9ydCB7IGFzc2VydFBhdGggfSBmcm9tIFwiLi4vX2NvbW1vbi9hc3NlcnRfcGF0aC50c1wiO1xuaW1wb3J0IHsgaXNQb3NpeFBhdGhTZXBhcmF0b3IgfSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuXG5leHBvcnQgdHlwZSB7IFBhcnNlZFBhdGggfSBmcm9tIFwiLi4vdHlwZXMudHNcIjtcblxuLyoqXG4gKiBSZXR1cm4gYSBgUGFyc2VkUGF0aGAgb2JqZWN0IG9mIHRoZSBgcGF0aGAuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBwYXJzZSB9IGZyb20gXCJAc3RkL3BhdGgvcG9zaXgvcGFyc2VcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IHBhdGggPSBwYXJzZShcIi9ob21lL3VzZXIvZmlsZS50eHRcIik7XG4gKiBhc3NlcnRFcXVhbHMocGF0aCwge1xuICogICByb290OiBcIi9cIixcbiAqICAgZGlyOiBcIi9ob21lL3VzZXJcIixcbiAqICAgYmFzZTogXCJmaWxlLnR4dFwiLFxuICogICBleHQ6IFwiLnR4dFwiLFxuICogICBuYW1lOiBcImZpbGVcIlxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byBwYXJzZS5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgcGF0aCBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZShwYXRoOiBzdHJpbmcpOiBQYXJzZWRQYXRoIHtcbiAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICBjb25zdCByZXQ6IFBhcnNlZFBhdGggPSB7IHJvb3Q6IFwiXCIsIGRpcjogXCJcIiwgYmFzZTogXCJcIiwgZXh0OiBcIlwiLCBuYW1lOiBcIlwiIH07XG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHJldDtcbiAgY29uc3QgaXNBYnNvbHV0ZSA9IGlzUG9zaXhQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdCgwKSk7XG4gIGxldCBzdGFydDogbnVtYmVyO1xuICBpZiAoaXNBYnNvbHV0ZSkge1xuICAgIHJldC5yb290ID0gXCIvXCI7XG4gICAgc3RhcnQgPSAxO1xuICB9IGVsc2Uge1xuICAgIHN0YXJ0ID0gMDtcbiAgfVxuICBsZXQgc3RhcnREb3QgPSAtMTtcbiAgbGV0IHN0YXJ0UGFydCA9IDA7XG4gIGxldCBlbmQgPSAtMTtcbiAgbGV0IG1hdGNoZWRTbGFzaCA9IHRydWU7XG4gIGxldCBpID0gcGF0aC5sZW5ndGggLSAxO1xuXG4gIC8vIFRyYWNrIHRoZSBzdGF0ZSBvZiBjaGFyYWN0ZXJzIChpZiBhbnkpIHdlIHNlZSBiZWZvcmUgb3VyIGZpcnN0IGRvdCBhbmRcbiAgLy8gYWZ0ZXIgYW55IHBhdGggc2VwYXJhdG9yIHdlIGZpbmRcbiAgbGV0IHByZURvdFN0YXRlID0gMDtcblxuICAvLyBHZXQgbm9uLWRpciBpbmZvXG4gIGZvciAoOyBpID49IHN0YXJ0OyAtLWkpIHtcbiAgICBjb25zdCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChpc1Bvc2l4UGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgc3RhcnRQYXJ0ID0gaSArIDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAvLyBleHRlbnNpb25cbiAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgZW5kID0gaSArIDE7XG4gICAgfVxuICAgIGlmIChjb2RlID09PSBDSEFSX0RPVCkge1xuICAgICAgLy8gSWYgdGhpcyBpcyBvdXIgZmlyc3QgZG90LCBtYXJrIGl0IGFzIHRoZSBzdGFydCBvZiBvdXIgZXh0ZW5zaW9uXG4gICAgICBpZiAoc3RhcnREb3QgPT09IC0xKSBzdGFydERvdCA9IGk7XG4gICAgICBlbHNlIGlmIChwcmVEb3RTdGF0ZSAhPT0gMSkgcHJlRG90U3RhdGUgPSAxO1xuICAgIH0gZWxzZSBpZiAoc3RhcnREb3QgIT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgYSBub24tZG90IGFuZCBub24tcGF0aCBzZXBhcmF0b3IgYmVmb3JlIG91ciBkb3QsIHNvIHdlIHNob3VsZFxuICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb25cbiAgICAgIHByZURvdFN0YXRlID0gLTE7XG4gICAgfVxuICB9XG5cbiAgaWYgKFxuICAgIHN0YXJ0RG90ID09PSAtMSB8fFxuICAgIGVuZCA9PT0gLTEgfHxcbiAgICAvLyBXZSBzYXcgYSBub24tZG90IGNoYXJhY3RlciBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGRvdFxuICAgIHByZURvdFN0YXRlID09PSAwIHx8XG4gICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgJy4uJ1xuICAgIChwcmVEb3RTdGF0ZSA9PT0gMSAmJiBzdGFydERvdCA9PT0gZW5kIC0gMSAmJiBzdGFydERvdCA9PT0gc3RhcnRQYXJ0ICsgMSlcbiAgKSB7XG4gICAgaWYgKGVuZCAhPT0gLTEpIHtcbiAgICAgIGlmIChzdGFydFBhcnQgPT09IDAgJiYgaXNBYnNvbHV0ZSkge1xuICAgICAgICByZXQuYmFzZSA9IHJldC5uYW1lID0gcGF0aC5zbGljZSgxLCBlbmQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0LmJhc2UgPSByZXQubmFtZSA9IHBhdGguc2xpY2Uoc3RhcnRQYXJ0LCBlbmQpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBGYWxsYmFjayB0byAnLycgaW4gY2FzZSB0aGVyZSBpcyBubyBiYXNlbmFtZVxuICAgIHJldC5iYXNlID0gcmV0LmJhc2UgfHwgXCIvXCI7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHN0YXJ0UGFydCA9PT0gMCAmJiBpc0Fic29sdXRlKSB7XG4gICAgICByZXQubmFtZSA9IHBhdGguc2xpY2UoMSwgc3RhcnREb3QpO1xuICAgICAgcmV0LmJhc2UgPSBwYXRoLnNsaWNlKDEsIGVuZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldC5uYW1lID0gcGF0aC5zbGljZShzdGFydFBhcnQsIHN0YXJ0RG90KTtcbiAgICAgIHJldC5iYXNlID0gcGF0aC5zbGljZShzdGFydFBhcnQsIGVuZCk7XG4gICAgfVxuICAgIHJldC5leHQgPSBwYXRoLnNsaWNlKHN0YXJ0RG90LCBlbmQpO1xuICB9XG5cbiAgaWYgKHN0YXJ0UGFydCA+IDApIHtcbiAgICByZXQuZGlyID0gc3RyaXBUcmFpbGluZ1NlcGFyYXRvcnMoXG4gICAgICBwYXRoLnNsaWNlKDAsIHN0YXJ0UGFydCAtIDEpLFxuICAgICAgaXNQb3NpeFBhdGhTZXBhcmF0b3IsXG4gICAgKTtcbiAgfSBlbHNlIGlmIChpc0Fic29sdXRlKSByZXQuZGlyID0gXCIvXCI7XG5cbiAgcmV0dXJuIHJldDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBRXJDLFNBQVMsUUFBUSxRQUFRLDBCQUEwQjtBQUVuRCxTQUFTLHVCQUF1QixRQUFRLDBDQUEwQztBQUNsRixTQUFTLFVBQVUsUUFBUSw0QkFBNEI7QUFDdkQsU0FBUyxvQkFBb0IsUUFBUSxhQUFhO0FBSWxEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW9CQyxHQUNELE9BQU8sU0FBUyxNQUFNLElBQVk7RUFDaEMsV0FBVztFQUVYLE1BQU0sTUFBa0I7SUFBRSxNQUFNO0lBQUksS0FBSztJQUFJLE1BQU07SUFBSSxLQUFLO0lBQUksTUFBTTtFQUFHO0VBQ3pFLElBQUksS0FBSyxNQUFNLEtBQUssR0FBRyxPQUFPO0VBQzlCLE1BQU0sYUFBYSxxQkFBcUIsS0FBSyxVQUFVLENBQUM7RUFDeEQsSUFBSTtFQUNKLElBQUksWUFBWTtJQUNkLElBQUksSUFBSSxHQUFHO0lBQ1gsUUFBUTtFQUNWLE9BQU87SUFDTCxRQUFRO0VBQ1Y7RUFDQSxJQUFJLFdBQVcsQ0FBQztFQUNoQixJQUFJLFlBQVk7RUFDaEIsSUFBSSxNQUFNLENBQUM7RUFDWCxJQUFJLGVBQWU7RUFDbkIsSUFBSSxJQUFJLEtBQUssTUFBTSxHQUFHO0VBRXRCLHlFQUF5RTtFQUN6RSxtQ0FBbUM7RUFDbkMsSUFBSSxjQUFjO0VBRWxCLG1CQUFtQjtFQUNuQixNQUFPLEtBQUssT0FBTyxFQUFFLEVBQUc7SUFDdEIsTUFBTSxPQUFPLEtBQUssVUFBVSxDQUFDO0lBQzdCLElBQUkscUJBQXFCLE9BQU87TUFDOUIsb0VBQW9FO01BQ3BFLGdEQUFnRDtNQUNoRCxJQUFJLENBQUMsY0FBYztRQUNqQixZQUFZLElBQUk7UUFDaEI7TUFDRjtNQUNBO0lBQ0Y7SUFDQSxJQUFJLFFBQVEsQ0FBQyxHQUFHO01BQ2QsbUVBQW1FO01BQ25FLFlBQVk7TUFDWixlQUFlO01BQ2YsTUFBTSxJQUFJO0lBQ1o7SUFDQSxJQUFJLFNBQVMsVUFBVTtNQUNyQixrRUFBa0U7TUFDbEUsSUFBSSxhQUFhLENBQUMsR0FBRyxXQUFXO1dBQzNCLElBQUksZ0JBQWdCLEdBQUcsY0FBYztJQUM1QyxPQUFPLElBQUksYUFBYSxDQUFDLEdBQUc7TUFDMUIsdUVBQXVFO01BQ3ZFLHFEQUFxRDtNQUNyRCxjQUFjLENBQUM7SUFDakI7RUFDRjtFQUVBLElBQ0UsYUFBYSxDQUFDLEtBQ2QsUUFBUSxDQUFDLEtBQ1Qsd0RBQXdEO0VBQ3hELGdCQUFnQixLQUNoQiwwREFBMEQ7RUFDekQsZ0JBQWdCLEtBQUssYUFBYSxNQUFNLEtBQUssYUFBYSxZQUFZLEdBQ3ZFO0lBQ0EsSUFBSSxRQUFRLENBQUMsR0FBRztNQUNkLElBQUksY0FBYyxLQUFLLFlBQVk7UUFDakMsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsS0FBSyxLQUFLLENBQUMsR0FBRztNQUN0QyxPQUFPO1FBQ0wsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsS0FBSyxLQUFLLENBQUMsV0FBVztNQUM5QztJQUNGO0lBQ0EsK0NBQStDO0lBQy9DLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJO0VBQ3pCLE9BQU87SUFDTCxJQUFJLGNBQWMsS0FBSyxZQUFZO01BQ2pDLElBQUksSUFBSSxHQUFHLEtBQUssS0FBSyxDQUFDLEdBQUc7TUFDekIsSUFBSSxJQUFJLEdBQUcsS0FBSyxLQUFLLENBQUMsR0FBRztJQUMzQixPQUFPO01BQ0wsSUFBSSxJQUFJLEdBQUcsS0FBSyxLQUFLLENBQUMsV0FBVztNQUNqQyxJQUFJLElBQUksR0FBRyxLQUFLLEtBQUssQ0FBQyxXQUFXO0lBQ25DO0lBQ0EsSUFBSSxHQUFHLEdBQUcsS0FBSyxLQUFLLENBQUMsVUFBVTtFQUNqQztFQUVBLElBQUksWUFBWSxHQUFHO0lBQ2pCLElBQUksR0FBRyxHQUFHLHdCQUNSLEtBQUssS0FBSyxDQUFDLEdBQUcsWUFBWSxJQUMxQjtFQUVKLE9BQU8sSUFBSSxZQUFZLElBQUksR0FBRyxHQUFHO0VBRWpDLE9BQU87QUFDVCJ9 +// denoCacheMetadata=11989369226527532725,10013800609034690049
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/0fc017f09bf1a62205dd12c68444f7489a60d91780e13e119bf99a190da44eb3.js b/vendor/gen/https/jsr.io/0fc017f09bf1a62205dd12c68444f7489a60d91780e13e119bf99a190da44eb3.js new file mode 100644 index 0000000..3d34783 --- /dev/null +++ b/vendor/gen/https/jsr.io/0fc017f09bf1a62205dd12c68444f7489a60d91780e13e119bf99a190da44eb3.js @@ -0,0 +1,43 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { indexOfNeedle } from "./index_of_needle.ts"; +/** + * Determines whether the source array contains the needle array. + * + * The complexity of this function is `O(source.length * needle.length)`. + * + * @param source Source array to check. + * @param needle Needle array to check for. + * @param start Start index in the source array to begin the search. Defaults to + * 0. + * @returns `true` if the source array contains the needle array, `false` + * otherwise. + * + * @example Basic usage + * ```ts + * import { includesNeedle } from "@std/bytes/includes-needle"; + * import { assertEquals } from "@std/assert"; + * + * const source = new Uint8Array([0, 1, 2, 1, 2, 1, 2, 3]); + * const needle = new Uint8Array([1, 2]); + * + * assertEquals(includesNeedle(source, needle), true); + * ``` + * + * @example Start index + * ```ts + * import { includesNeedle } from "@std/bytes/includes-needle"; + * import { assertEquals } from "@std/assert"; + * + * const source = new Uint8Array([0, 1, 2, 1, 2, 1, 2, 3]); + * const needle = new Uint8Array([1, 2]); + * + * assertEquals(includesNeedle(source, needle, 3), true); + * assertEquals(includesNeedle(source, needle, 6), false); + * ``` + * The search will start at the specified index in the source array. + */ export function includesNeedle(source, needle, start = 0) { + return indexOfNeedle(source, needle, start) !== -1; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvYnl0ZXMvMS4wLjYvaW5jbHVkZXNfbmVlZGxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGluZGV4T2ZOZWVkbGUgfSBmcm9tIFwiLi9pbmRleF9vZl9uZWVkbGUudHNcIjtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNvdXJjZSBhcnJheSBjb250YWlucyB0aGUgbmVlZGxlIGFycmF5LlxuICpcbiAqIFRoZSBjb21wbGV4aXR5IG9mIHRoaXMgZnVuY3Rpb24gaXMgYE8oc291cmNlLmxlbmd0aCAqIG5lZWRsZS5sZW5ndGgpYC5cbiAqXG4gKiBAcGFyYW0gc291cmNlIFNvdXJjZSBhcnJheSB0byBjaGVjay5cbiAqIEBwYXJhbSBuZWVkbGUgTmVlZGxlIGFycmF5IHRvIGNoZWNrIGZvci5cbiAqIEBwYXJhbSBzdGFydCBTdGFydCBpbmRleCBpbiB0aGUgc291cmNlIGFycmF5IHRvIGJlZ2luIHRoZSBzZWFyY2guIERlZmF1bHRzIHRvXG4gKiAwLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBzb3VyY2UgYXJyYXkgY29udGFpbnMgdGhlIG5lZWRsZSBhcnJheSwgYGZhbHNlYFxuICogb3RoZXJ3aXNlLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgaW5jbHVkZXNOZWVkbGUgfSBmcm9tIFwiQHN0ZC9ieXRlcy9pbmNsdWRlcy1uZWVkbGVcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IHNvdXJjZSA9IG5ldyBVaW50OEFycmF5KFswLCAxLCAyLCAxLCAyLCAxLCAyLCAzXSk7XG4gKiBjb25zdCBuZWVkbGUgPSBuZXcgVWludDhBcnJheShbMSwgMl0pO1xuICpcbiAqIGFzc2VydEVxdWFscyhpbmNsdWRlc05lZWRsZShzb3VyY2UsIG5lZWRsZSksIHRydWUpO1xuICogYGBgXG4gKlxuICogQGV4YW1wbGUgU3RhcnQgaW5kZXhcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBpbmNsdWRlc05lZWRsZSB9IGZyb20gXCJAc3RkL2J5dGVzL2luY2x1ZGVzLW5lZWRsZVwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3Qgc291cmNlID0gbmV3IFVpbnQ4QXJyYXkoWzAsIDEsIDIsIDEsIDIsIDEsIDIsIDNdKTtcbiAqIGNvbnN0IG5lZWRsZSA9IG5ldyBVaW50OEFycmF5KFsxLCAyXSk7XG4gKlxuICogYXNzZXJ0RXF1YWxzKGluY2x1ZGVzTmVlZGxlKHNvdXJjZSwgbmVlZGxlLCAzKSwgdHJ1ZSk7XG4gKiBhc3NlcnRFcXVhbHMoaW5jbHVkZXNOZWVkbGUoc291cmNlLCBuZWVkbGUsIDYpLCBmYWxzZSk7XG4gKiBgYGBcbiAqIFRoZSBzZWFyY2ggd2lsbCBzdGFydCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4IGluIHRoZSBzb3VyY2UgYXJyYXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmNsdWRlc05lZWRsZShcbiAgc291cmNlOiBVaW50OEFycmF5LFxuICBuZWVkbGU6IFVpbnQ4QXJyYXksXG4gIHN0YXJ0ID0gMCxcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gaW5kZXhPZk5lZWRsZShzb3VyY2UsIG5lZWRsZSwgc3RhcnQpICE9PSAtMTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDLFNBQVMsYUFBYSxRQUFRLHVCQUF1QjtBQUVyRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FtQ0MsR0FDRCxPQUFPLFNBQVMsZUFDZCxNQUFrQixFQUNsQixNQUFrQixFQUNsQixRQUFRLENBQUM7RUFFVCxPQUFPLGNBQWMsUUFBUSxRQUFRLFdBQVcsQ0FBQztBQUNuRCJ9 +// denoCacheMetadata=14077613187559187765,14514656645531185404
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/0fd081c84bc9d4e5df142cdf1f33522ed70a5b80565ebe3bb6e43e367ab6931a.js b/vendor/gen/https/jsr.io/0fd081c84bc9d4e5df142cdf1f33522ed70a5b80565ebe3bb6e43e367ab6931a.js new file mode 100644 index 0000000..1e41145 --- /dev/null +++ b/vendor/gen/https/jsr.io/0fd081c84bc9d4e5df142cdf1f33522ed70a5b80565ebe3bb6e43e367ab6931a.js @@ -0,0 +1,29 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { _format, assertArg } from "../_common/format.ts"; +/** + * Generate a path from `ParsedPath` object. + * + * @example Usage + * ```ts + * import { format } from "@std/path/posix/format"; + * import { assertEquals } from "@std/assert"; + * + * const path = format({ + * root: "/", + * dir: "/path/dir", + * base: "file.txt", + * ext: ".txt", + * name: "file" + * }); + * assertEquals(path, "/path/dir/file.txt"); + * ``` + * + * @param pathObject The path object to format. + * @returns The formatted path. + */ export function format(pathObject) { + assertArg(pathObject); + return _format("/", pathObject); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9wb3NpeC9mb3JtYXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgX2Zvcm1hdCwgYXNzZXJ0QXJnIH0gZnJvbSBcIi4uL19jb21tb24vZm9ybWF0LnRzXCI7XG5pbXBvcnQgdHlwZSB7IFBhcnNlZFBhdGggfSBmcm9tIFwiLi4vdHlwZXMudHNcIjtcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHBhdGggZnJvbSBgUGFyc2VkUGF0aGAgb2JqZWN0LlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSBcIkBzdGQvcGF0aC9wb3NpeC9mb3JtYXRcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IHBhdGggPSBmb3JtYXQoe1xuICogICByb290OiBcIi9cIixcbiAqICAgZGlyOiBcIi9wYXRoL2RpclwiLFxuICogICBiYXNlOiBcImZpbGUudHh0XCIsXG4gKiAgIGV4dDogXCIudHh0XCIsXG4gKiAgIG5hbWU6IFwiZmlsZVwiXG4gKiB9KTtcbiAqIGFzc2VydEVxdWFscyhwYXRoLCBcIi9wYXRoL2Rpci9maWxlLnR4dFwiKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBwYXRoT2JqZWN0IFRoZSBwYXRoIG9iamVjdCB0byBmb3JtYXQuXG4gKiBAcmV0dXJucyBUaGUgZm9ybWF0dGVkIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXQocGF0aE9iamVjdDogUGFydGlhbDxQYXJzZWRQYXRoPik6IHN0cmluZyB7XG4gIGFzc2VydEFyZyhwYXRoT2JqZWN0KTtcbiAgcmV0dXJuIF9mb3JtYXQoXCIvXCIsIHBhdGhPYmplY3QpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxxQ0FBcUM7QUFFckMsU0FBUyxPQUFPLEVBQUUsU0FBUyxRQUFRLHVCQUF1QjtBQUcxRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FvQkMsR0FDRCxPQUFPLFNBQVMsT0FBTyxVQUErQjtFQUNwRCxVQUFVO0VBQ1YsT0FBTyxRQUFRLEtBQUs7QUFDdEIifQ== +// denoCacheMetadata=12601032765621314918,8234236310090286298
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/1032cb573d730ec0e72a1a1cf5caae0f5c1a05814e04acfb8822bdeaae948ce2.js b/vendor/gen/https/jsr.io/1032cb573d730ec0e72a1a1cf5caae0f5c1a05814e04acfb8822bdeaae948ce2.js new file mode 100644 index 0000000..afa0bf9 --- /dev/null +++ b/vendor/gen/https/jsr.io/1032cb573d730ec0e72a1a1cf5caae0f5c1a05814e04acfb8822bdeaae948ce2.js @@ -0,0 +1,33 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { normalize } from "./normalize.ts"; +import { SEPARATOR_PATTERN } from "./constants.ts"; +/** + * Like normalize(), but doesn't collapse "**\/.." when `globstar` is true. + * + * @example Usage + * ```ts + * import { normalizeGlob } from "@std/path/windows/normalize-glob"; + * import { assertEquals } from "@std/assert"; + * + * const normalized = normalizeGlob("**\\foo\\..\\bar", { globstar: true }); + * assertEquals(normalized, "**\\bar"); + * ``` + * + * @param glob The glob pattern to normalize. + * @param options The options for glob pattern. + * @returns The normalized glob pattern. + */ export function normalizeGlob(glob, options = {}) { + const { globstar = false } = options; + if (glob.match(/\0/g)) { + throw new Error(`Glob contains invalid characters: "${glob}"`); + } + if (!globstar) { + return normalize(glob); + } + const s = SEPARATOR_PATTERN.source; + const badParentPattern = new RegExp(`(?<=(${s}|^)\\*\\*${s})\\.\\.(?=${s}|$)`, "g"); + return normalize(glob.replace(badParentPattern, "\0")).replace(/\0/g, ".."); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS93aW5kb3dzL25vcm1hbGl6ZV9nbG9iLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB0eXBlIHsgR2xvYk9wdGlvbnMgfSBmcm9tIFwiLi4vX2NvbW1vbi9nbG9iX3RvX3JlZ19leHAudHNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuL25vcm1hbGl6ZS50c1wiO1xuaW1wb3J0IHsgU0VQQVJBVE9SX1BBVFRFUk4gfSBmcm9tIFwiLi9jb25zdGFudHMudHNcIjtcblxuZXhwb3J0IHR5cGUgeyBHbG9iT3B0aW9ucyB9O1xuXG4vKipcbiAqIExpa2Ugbm9ybWFsaXplKCksIGJ1dCBkb2Vzbid0IGNvbGxhcHNlIFwiKipcXC8uLlwiIHdoZW4gYGdsb2JzdGFyYCBpcyB0cnVlLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgbm9ybWFsaXplR2xvYiB9IGZyb20gXCJAc3RkL3BhdGgvd2luZG93cy9ub3JtYWxpemUtZ2xvYlwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZUdsb2IoXCIqKlxcXFxmb29cXFxcLi5cXFxcYmFyXCIsIHsgZ2xvYnN0YXI6IHRydWUgfSk7XG4gKiBhc3NlcnRFcXVhbHMobm9ybWFsaXplZCwgXCIqKlxcXFxiYXJcIik7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gZ2xvYiBUaGUgZ2xvYiBwYXR0ZXJuIHRvIG5vcm1hbGl6ZS5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciBnbG9iIHBhdHRlcm4uXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBnbG9iIHBhdHRlcm4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVHbG9iKFxuICBnbG9iOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFBpY2s8R2xvYk9wdGlvbnMsIFwiZ2xvYnN0YXJcIj4gPSB7fSxcbik6IHN0cmluZyB7XG4gIGNvbnN0IHsgZ2xvYnN0YXIgPSBmYWxzZSB9OiBHbG9iT3B0aW9ucyA9IG9wdGlvbnM7XG4gIGlmIChnbG9iLm1hdGNoKC9cXDAvZykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEdsb2IgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzOiBcIiR7Z2xvYn1cImApO1xuICB9XG4gIGlmICghZ2xvYnN0YXIpIHtcbiAgICByZXR1cm4gbm9ybWFsaXplKGdsb2IpO1xuICB9XG4gIGNvbnN0IHMgPSBTRVBBUkFUT1JfUEFUVEVSTi5zb3VyY2U7XG4gIGNvbnN0IGJhZFBhcmVudFBhdHRlcm4gPSBuZXcgUmVnRXhwKFxuICAgIGAoPzw9KCR7c318XilcXFxcKlxcXFwqJHtzfSlcXFxcLlxcXFwuKD89JHtzfXwkKWAsXG4gICAgXCJnXCIsXG4gICk7XG4gIHJldHVybiBub3JtYWxpemUoZ2xvYi5yZXBsYWNlKGJhZFBhcmVudFBhdHRlcm4sIFwiXFwwXCIpKS5yZXBsYWNlKC9cXDAvZywgXCIuLlwiKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBR3JDLFNBQVMsU0FBUyxRQUFRLGlCQUFpQjtBQUMzQyxTQUFTLGlCQUFpQixRQUFRLGlCQUFpQjtBQUluRDs7Ozs7Ozs7Ozs7Ozs7O0NBZUMsR0FDRCxPQUFPLFNBQVMsY0FDZCxJQUFZLEVBQ1osVUFBeUMsQ0FBQyxDQUFDO0VBRTNDLE1BQU0sRUFBRSxXQUFXLEtBQUssRUFBRSxHQUFnQjtFQUMxQyxJQUFJLEtBQUssS0FBSyxDQUFDLFFBQVE7SUFDckIsTUFBTSxJQUFJLE1BQU0sQ0FBQyxtQ0FBbUMsRUFBRSxLQUFLLENBQUMsQ0FBQztFQUMvRDtFQUNBLElBQUksQ0FBQyxVQUFVO0lBQ2IsT0FBTyxVQUFVO0VBQ25CO0VBQ0EsTUFBTSxJQUFJLGtCQUFrQixNQUFNO0VBQ2xDLE1BQU0sbUJBQW1CLElBQUksT0FDM0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFDekM7RUFFRixPQUFPLFVBQVUsS0FBSyxPQUFPLENBQUMsa0JBQWtCLE9BQU8sT0FBTyxDQUFDLE9BQU87QUFDeEUifQ== +// denoCacheMetadata=3368400298130917731,7152979695103990922
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/1343090cfa12d7a373df3737a8aea05573e14a2cc46e3c02f8cc4f571ef21428.js b/vendor/gen/https/jsr.io/1343090cfa12d7a373df3737a8aea05573e14a2cc46e3c02f8cc4f571ef21428.js new file mode 100644 index 0000000..9f58d43 --- /dev/null +++ b/vendor/gen/https/jsr.io/1343090cfa12d7a373df3737a8aea05573e14a2cc46e3c02f8cc4f571ef21428.js @@ -0,0 +1,34 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { normalizeGlob as posixNormalizeGlob } from "./posix/normalize_glob.ts"; +import { normalizeGlob as windowsNormalizeGlob } from "./windows/normalize_glob.ts"; +/** + * Normalizes a glob string. + * + * Behaves like + * {@linkcode https://jsr.io/@std/path/doc/~/normalize | normalize()}, but + * doesn't collapse "**\/.." when `globstar` is true. + * + * @example Usage + * ```ts + * import { normalizeGlob } from "@std/path/normalize-glob"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(normalizeGlob("foo\\bar\\..\\baz"), "foo\\baz"); + * assertEquals(normalizeGlob("foo\\**\\..\\bar\\..\\baz", { globstar: true }), "foo\\**\\..\\baz"); + * } else { + * assertEquals(normalizeGlob("foo/bar/../baz"), "foo/baz"); + * assertEquals(normalizeGlob("foo/**\/../bar/../baz", { globstar: true }), "foo/**\/../baz"); + * } + * ``` + * + * @param glob Glob string to normalize. + * @param options Glob options. + * @returns The normalized glob string. + */ export function normalizeGlob(glob, options = {}) { + return isWindows ? windowsNormalizeGlob(glob, options) : posixNormalizeGlob(glob, options); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9ub3JtYWxpemVfZ2xvYi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgdHlwZSB7IEdsb2JPcHRpb25zIH0gZnJvbSBcIi4vX2NvbW1vbi9nbG9iX3RvX3JlZ19leHAudHNcIjtcbmltcG9ydCB7IGlzV2luZG93cyB9IGZyb20gXCIuL19vcy50c1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplR2xvYiBhcyBwb3NpeE5vcm1hbGl6ZUdsb2IgfSBmcm9tIFwiLi9wb3NpeC9ub3JtYWxpemVfZ2xvYi50c1wiO1xuaW1wb3J0IHtcbiAgbm9ybWFsaXplR2xvYiBhcyB3aW5kb3dzTm9ybWFsaXplR2xvYixcbn0gZnJvbSBcIi4vd2luZG93cy9ub3JtYWxpemVfZ2xvYi50c1wiO1xuXG5leHBvcnQgdHlwZSB7IEdsb2JPcHRpb25zIH07XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIGdsb2Igc3RyaW5nLlxuICpcbiAqIEJlaGF2ZXMgbGlrZVxuICoge0BsaW5rY29kZSBodHRwczovL2pzci5pby9Ac3RkL3BhdGgvZG9jL34vbm9ybWFsaXplIHwgbm9ybWFsaXplKCl9LCBidXRcbiAqIGRvZXNuJ3QgY29sbGFwc2UgXCIqKlxcLy4uXCIgd2hlbiBgZ2xvYnN0YXJgIGlzIHRydWUuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBub3JtYWxpemVHbG9iIH0gZnJvbSBcIkBzdGQvcGF0aC9ub3JtYWxpemUtZ2xvYlwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogaWYgKERlbm8uYnVpbGQub3MgPT09IFwid2luZG93c1wiKSB7XG4gKiAgIGFzc2VydEVxdWFscyhub3JtYWxpemVHbG9iKFwiZm9vXFxcXGJhclxcXFwuLlxcXFxiYXpcIiksIFwiZm9vXFxcXGJhelwiKTtcbiAqICAgYXNzZXJ0RXF1YWxzKG5vcm1hbGl6ZUdsb2IoXCJmb29cXFxcKipcXFxcLi5cXFxcYmFyXFxcXC4uXFxcXGJhelwiLCB7IGdsb2JzdGFyOiB0cnVlIH0pLCBcImZvb1xcXFwqKlxcXFwuLlxcXFxiYXpcIik7XG4gKiB9IGVsc2Uge1xuICogICBhc3NlcnRFcXVhbHMobm9ybWFsaXplR2xvYihcImZvby9iYXIvLi4vYmF6XCIpLCBcImZvby9iYXpcIik7XG4gKiAgIGFzc2VydEVxdWFscyhub3JtYWxpemVHbG9iKFwiZm9vLyoqXFwvLi4vYmFyLy4uL2JhelwiLCB7IGdsb2JzdGFyOiB0cnVlIH0pLCBcImZvby8qKlxcLy4uL2JhelwiKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBnbG9iIEdsb2Igc3RyaW5nIHRvIG5vcm1hbGl6ZS5cbiAqIEBwYXJhbSBvcHRpb25zIEdsb2Igb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIGdsb2Igc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplR2xvYihcbiAgZ2xvYjogc3RyaW5nLFxuICBvcHRpb25zOiBHbG9iT3B0aW9ucyA9IHt9LFxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlzV2luZG93c1xuICAgID8gd2luZG93c05vcm1hbGl6ZUdsb2IoZ2xvYiwgb3B0aW9ucylcbiAgICA6IHBvc2l4Tm9ybWFsaXplR2xvYihnbG9iLCBvcHRpb25zKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBR3JDLFNBQVMsU0FBUyxRQUFRLFdBQVc7QUFDckMsU0FBUyxpQkFBaUIsa0JBQWtCLFFBQVEsNEJBQTRCO0FBQ2hGLFNBQ0UsaUJBQWlCLG9CQUFvQixRQUNoQyw4QkFBOEI7QUFJckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXdCQyxHQUNELE9BQU8sU0FBUyxjQUNkLElBQVksRUFDWixVQUF1QixDQUFDLENBQUM7RUFFekIsT0FBTyxZQUNILHFCQUFxQixNQUFNLFdBQzNCLG1CQUFtQixNQUFNO0FBQy9CIn0= +// denoCacheMetadata=17178300520264829265,9516137527160285885
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/1385e88bf982d9ebd71bd1ae75298f5d421441a57bf8383721cd875960901f13.js b/vendor/gen/https/jsr.io/1385e88bf982d9ebd71bd1ae75298f5d421441a57bf8383721cd875960901f13.js new file mode 100644 index 0000000..1a38d45 --- /dev/null +++ b/vendor/gen/https/jsr.io/1385e88bf982d9ebd71bd1ae75298f5d421441a57bf8383721cd875960901f13.js @@ -0,0 +1,40 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { assertPath } from "./assert_path.ts"; +export function stripSuffix(name, suffix) { + if (suffix.length >= name.length) { + return name; + } + const lenDiff = name.length - suffix.length; + for(let i = suffix.length - 1; i >= 0; --i){ + if (name.charCodeAt(lenDiff + i) !== suffix.charCodeAt(i)) { + return name; + } + } + return name.slice(0, -suffix.length); +} +export function lastPathSegment(path, isSep, start = 0) { + let matchedNonSeparator = false; + let end = path.length; + for(let i = path.length - 1; i >= start; --i){ + if (isSep(path.charCodeAt(i))) { + if (matchedNonSeparator) { + start = i + 1; + break; + } + } else if (!matchedNonSeparator) { + matchedNonSeparator = true; + end = i + 1; + } + } + return path.slice(start, end); +} +export function assertArgs(path, suffix) { + assertPath(path); + if (path.length === 0) return path; + if (typeof suffix !== "string") { + throw new TypeError(`Suffix must be a string, received "${JSON.stringify(suffix)}"`); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9fY29tbW9uL2Jhc2VuYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGFzc2VydFBhdGggfSBmcm9tIFwiLi9hc3NlcnRfcGF0aC50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gc3RyaXBTdWZmaXgobmFtZTogc3RyaW5nLCBzdWZmaXg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChzdWZmaXgubGVuZ3RoID49IG5hbWUubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG5hbWU7XG4gIH1cblxuICBjb25zdCBsZW5EaWZmID0gbmFtZS5sZW5ndGggLSBzdWZmaXgubGVuZ3RoO1xuXG4gIGZvciAobGV0IGkgPSBzdWZmaXgubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICBpZiAobmFtZS5jaGFyQ29kZUF0KGxlbkRpZmYgKyBpKSAhPT0gc3VmZml4LmNoYXJDb2RlQXQoaSkpIHtcbiAgICAgIHJldHVybiBuYW1lO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuYW1lLnNsaWNlKDAsIC1zdWZmaXgubGVuZ3RoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhc3RQYXRoU2VnbWVudChcbiAgcGF0aDogc3RyaW5nLFxuICBpc1NlcDogKGNoYXI6IG51bWJlcikgPT4gYm9vbGVhbixcbiAgc3RhcnQgPSAwLFxuKTogc3RyaW5nIHtcbiAgbGV0IG1hdGNoZWROb25TZXBhcmF0b3IgPSBmYWxzZTtcbiAgbGV0IGVuZCA9IHBhdGgubGVuZ3RoO1xuXG4gIGZvciAobGV0IGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gc3RhcnQ7IC0taSkge1xuICAgIGlmIChpc1NlcChwYXRoLmNoYXJDb2RlQXQoaSkpKSB7XG4gICAgICBpZiAobWF0Y2hlZE5vblNlcGFyYXRvcikge1xuICAgICAgICBzdGFydCA9IGkgKyAxO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFtYXRjaGVkTm9uU2VwYXJhdG9yKSB7XG4gICAgICBtYXRjaGVkTm9uU2VwYXJhdG9yID0gdHJ1ZTtcbiAgICAgIGVuZCA9IGkgKyAxO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0LCBlbmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0QXJncyhwYXRoOiBzdHJpbmcsIHN1ZmZpeDogc3RyaW5nKSB7XG4gIGFzc2VydFBhdGgocGF0aCk7XG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHBhdGg7XG4gIGlmICh0eXBlb2Ygc3VmZml4ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIGBTdWZmaXggbXVzdCBiZSBhIHN0cmluZywgcmVjZWl2ZWQgXCIke0pTT04uc3RyaW5naWZ5KHN1ZmZpeCl9XCJgLFxuICAgICk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBRXJDLFNBQVMsVUFBVSxRQUFRLG1CQUFtQjtBQUU5QyxPQUFPLFNBQVMsWUFBWSxJQUFZLEVBQUUsTUFBYztFQUN0RCxJQUFJLE9BQU8sTUFBTSxJQUFJLEtBQUssTUFBTSxFQUFFO0lBQ2hDLE9BQU87RUFDVDtFQUVBLE1BQU0sVUFBVSxLQUFLLE1BQU0sR0FBRyxPQUFPLE1BQU07RUFFM0MsSUFBSyxJQUFJLElBQUksT0FBTyxNQUFNLEdBQUcsR0FBRyxLQUFLLEdBQUcsRUFBRSxFQUFHO0lBQzNDLElBQUksS0FBSyxVQUFVLENBQUMsVUFBVSxPQUFPLE9BQU8sVUFBVSxDQUFDLElBQUk7TUFDekQsT0FBTztJQUNUO0VBQ0Y7RUFFQSxPQUFPLEtBQUssS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLE1BQU07QUFDckM7QUFFQSxPQUFPLFNBQVMsZ0JBQ2QsSUFBWSxFQUNaLEtBQWdDLEVBQ2hDLFFBQVEsQ0FBQztFQUVULElBQUksc0JBQXNCO0VBQzFCLElBQUksTUFBTSxLQUFLLE1BQU07RUFFckIsSUFBSyxJQUFJLElBQUksS0FBSyxNQUFNLEdBQUcsR0FBRyxLQUFLLE9BQU8sRUFBRSxFQUFHO0lBQzdDLElBQUksTUFBTSxLQUFLLFVBQVUsQ0FBQyxLQUFLO01BQzdCLElBQUkscUJBQXFCO1FBQ3ZCLFFBQVEsSUFBSTtRQUNaO01BQ0Y7SUFDRixPQUFPLElBQUksQ0FBQyxxQkFBcUI7TUFDL0Isc0JBQXNCO01BQ3RCLE1BQU0sSUFBSTtJQUNaO0VBQ0Y7RUFFQSxPQUFPLEtBQUssS0FBSyxDQUFDLE9BQU87QUFDM0I7QUFFQSxPQUFPLFNBQVMsV0FBVyxJQUFZLEVBQUUsTUFBYztFQUNyRCxXQUFXO0VBQ1gsSUFBSSxLQUFLLE1BQU0sS0FBSyxHQUFHLE9BQU87RUFDOUIsSUFBSSxPQUFPLFdBQVcsVUFBVTtJQUM5QixNQUFNLElBQUksVUFDUixDQUFDLG1DQUFtQyxFQUFFLEtBQUssU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0VBRW5FO0FBQ0YifQ== +// denoCacheMetadata=9984219589405700441,6032829829896232868
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/14c2e7d7cbd0578d0c71adcc5f68504350c3a4245895784bf8741d53c6c61c43.js b/vendor/gen/https/jsr.io/14c2e7d7cbd0578d0c71adcc5f68504350c3a4245895784bf8741d53c6c61c43.js new file mode 100644 index 0000000..a85407e --- /dev/null +++ b/vendor/gen/https/jsr.io/14c2e7d7cbd0578d0c71adcc5f68504350c3a4245895784bf8741d53c6c61c43.js @@ -0,0 +1,131 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * Provides functions for dealing with and matching ETags, including + * {@linkcode eTag} to calculate an etag for a given entity, + * {@linkcode ifMatch} for validating if an ETag matches against a `If-Match` + * header and {@linkcode ifNoneMatch} for validating an Etag against an + * `If-None-Match` header. + * + * See further information on the `ETag` header on + * {@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag | MDN}. + * + * @module + */ import { encodeBase64 as base64Encode } from "jsr:@std/encoding@^1.0.10/base64"; +const encoder = new TextEncoder(); +const DEFAULT_ALGORITHM = "SHA-256"; +function isFileInfo(value) { + return Boolean(value && typeof value === "object" && "mtime" in value && "size" in value); +} +async function calcEntity(entity, { algorithm = DEFAULT_ALGORITHM }) { + // a short circuit for zero length entities + if (entity.length === 0) { + return `0-47DEQpj8HBSa+/TImW+5JCeuQeR`; + } + if (typeof entity === "string") { + entity = encoder.encode(entity); + } + const hash = base64Encode(await crypto.subtle.digest(algorithm, entity)).substring(0, 27); + return `${entity.length.toString(16)}-${hash}`; +} +async function calcFileInfo(fileInfo, { algorithm = DEFAULT_ALGORITHM }) { + if (fileInfo.mtime) { + const hash = base64Encode(await crypto.subtle.digest(algorithm, encoder.encode(fileInfo.mtime.toJSON()))).substring(0, 27); + return `${fileInfo.size.toString(16)}-${hash}`; + } +} +export async function eTag(entity, options = {}) { + const weak = options.weak ?? isFileInfo(entity); + const tag = await (isFileInfo(entity) ? calcFileInfo(entity, options) : calcEntity(entity, options)); + return tag ? weak ? `W/"${tag}"` : `"${tag}"` : undefined; +} +const STAR_REGEXP = /^\s*\*\s*$/; +const COMMA_REGEXP = /\s*,\s*/; +/** A helper function that takes the value from the `If-Match` header and a + * calculated etag for the target. By using strong comparison, return `true` if + * the values match, otherwise `false`. + * + * See MDN's [`If-Match`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Match) + * article for more information on how to use this function. + * + * @example Usage + * ```ts ignore + * import { + * eTag, + * ifMatch, + * } from "@std/http/etag"; + * import { assert } from "@std/assert"; + * + * const body = "hello deno!"; + * + * Deno.serve(async (req) => { + * const ifMatchValue = req.headers.get("if-match"); + * const etag = await eTag(body); + * assert(etag); + * if (!ifMatchValue || ifMatch(ifMatchValue, etag)) { + * return new Response(body, { status: 200, headers: { etag } }); + * } else { + * return new Response(null, { status: 412, statusText: "Precondition Failed"}); + * } + * }); + * ``` + * + * @param value the If-Match header value. + * @param etag the ETag to check against. + * @returns whether or not the parameters match. + */ export function ifMatch(value, etag) { + // Weak tags cannot be matched and return false. + if (!value || !etag || etag.startsWith("W/")) { + return false; + } + if (STAR_REGEXP.test(value)) { + return true; + } + const tags = value.split(COMMA_REGEXP); + return tags.includes(etag); +} +/** A helper function that takes the value from the `If-None-Match` header and + * a calculated etag for the target entity and returns `false` if the etag for + * the entity matches the supplied value, otherwise `true`. + * + * See MDN's [`If-None-Match`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match) + * article for more information on how to use this function. + * + * @example Usage + * ```ts ignore + * import { + * eTag, + * ifNoneMatch, + * } from "@std/http/etag"; + * import { assert } from "@std/assert"; + * + * const body = "hello deno!"; + * + * Deno.serve(async (req) => { + * const ifNoneMatchValue = req.headers.get("if-none-match"); + * const etag = await eTag(body); + * assert(etag); + * if (!ifNoneMatch(ifNoneMatchValue, etag)) { + * return new Response(null, { status: 304, headers: { etag } }); + * } else { + * return new Response(body, { status: 200, headers: { etag } }); + * } + * }); + * ``` + * + * @param value the If-None-Match header value. + * @param etag the ETag to check against. + * @returns whether or not the parameters do not match. + */ export function ifNoneMatch(value, etag) { + if (!value || !etag) { + return true; + } + if (STAR_REGEXP.test(value)) { + return false; + } + etag = etag.startsWith("W/") ? etag.slice(2) : etag; + const tags = value.split(COMMA_REGEXP).map((tag)=>tag.startsWith("W/") ? tag.slice(2) : tag); + return !tags.includes(etag); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvaHR0cC8xLjAuMTYvZXRhZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vKipcbiAqIFByb3ZpZGVzIGZ1bmN0aW9ucyBmb3IgZGVhbGluZyB3aXRoIGFuZCBtYXRjaGluZyBFVGFncywgaW5jbHVkaW5nXG4gKiB7QGxpbmtjb2RlIGVUYWd9IHRvIGNhbGN1bGF0ZSBhbiBldGFnIGZvciBhIGdpdmVuIGVudGl0eSxcbiAqIHtAbGlua2NvZGUgaWZNYXRjaH0gZm9yIHZhbGlkYXRpbmcgaWYgYW4gRVRhZyBtYXRjaGVzIGFnYWluc3QgYSBgSWYtTWF0Y2hgXG4gKiBoZWFkZXIgYW5kIHtAbGlua2NvZGUgaWZOb25lTWF0Y2h9IGZvciB2YWxpZGF0aW5nIGFuIEV0YWcgYWdhaW5zdCBhblxuICogYElmLU5vbmUtTWF0Y2hgIGhlYWRlci5cbiAqXG4gKiBTZWUgZnVydGhlciBpbmZvcm1hdGlvbiBvbiB0aGUgYEVUYWdgIGhlYWRlciBvblxuICoge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9FVGFnIHwgTUROfS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgZW5jb2RlQmFzZTY0IGFzIGJhc2U2NEVuY29kZSB9IGZyb20gXCJqc3I6QHN0ZC9lbmNvZGluZ0BeMS4wLjEwL2Jhc2U2NFwiO1xuXG4vKipcbiAqIEp1c3QgdGhlIHBhcnQgb2Yge0BsaW5rY29kZSBEZW5vLkZpbGVJbmZvfSB0aGF0IGlzIHJlcXVpcmVkIHRvIGNhbGN1bGF0ZSBhbiBgRVRhZ2AsXG4gKiBzbyBwYXJ0aWFsIG9yIHVzZXIgZ2VuZXJhdGVkIGZpbGUgaW5mb3JtYXRpb24gY2FuIGJlIHBhc3NlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWxlSW5mbyB7XG4gIC8qKiBUaGUgbGFzdCBtb2RpZmljYXRpb24gdGltZSBvZiB0aGUgZmlsZS4gVGhpcyBjb3JyZXNwb25kcyB0byB0aGUgYG10aW1lYFxuICAgKiBmaWVsZCBmcm9tIGBzdGF0YCBvbiBMaW51eC9NYWMgT1MgYW5kIGBmdExhc3RXcml0ZVRpbWVgIG9uIFdpbmRvd3MuIFRoaXNcbiAgICogbWF5IG5vdCBiZSBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3Jtcy4gKi9cbiAgbXRpbWU6IERhdGUgfCBudWxsO1xuICAvKiogVGhlIHNpemUgb2YgdGhlIGZpbGUsIGluIGJ5dGVzLiAqL1xuICBzaXplOiBudW1iZXI7XG59XG5cbmNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcblxuY29uc3QgREVGQVVMVF9BTEdPUklUSE06IEFsZ29yaXRobUlkZW50aWZpZXIgPSBcIlNIQS0yNTZcIjtcblxuLyoqIE9wdGlvbnMgZm9yIHtAbGlua2NvZGUgZVRhZ30uICovXG5leHBvcnQgaW50ZXJmYWNlIEVUYWdPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgZGlnZXN0IGFsZ29yaXRobSB0byB1c2UgdG8gY2FsY3VsYXRlIHRoZSBldGFnLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7XCJTSEEtMjU2XCJ9XG4gICAqL1xuICBhbGdvcml0aG0/OiBBbGdvcml0aG1JZGVudGlmaWVyO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBjYWxjdWxhdGluZyB0aGUgYEVUYWdgLCBlaXRoZXIgZm9yY2luZ1xuICAgKiBhIHRhZyB0byBiZSBsYWJlbGxlZCB3ZWFrIG9yIG5vdC5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gYHRydWVgIHdoZW4gdGhlIGVudGl0eSBpcyBhIGBGaWxlSW5mb2AgYW5kIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgd2Vhaz86IGJvb2xlYW47XG59XG5cbmZ1bmN0aW9uIGlzRmlsZUluZm8odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBGaWxlSW5mbyB7XG4gIHJldHVybiBCb29sZWFuKFxuICAgIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiBcIm10aW1lXCIgaW4gdmFsdWUgJiYgXCJzaXplXCIgaW4gdmFsdWUsXG4gICk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNhbGNFbnRpdHkoXG4gIGVudGl0eTogc3RyaW5nIHwgVWludDhBcnJheSxcbiAgeyBhbGdvcml0aG0gPSBERUZBVUxUX0FMR09SSVRITSB9OiBFVGFnT3B0aW9ucyxcbikge1xuICAvLyBhIHNob3J0IGNpcmN1aXQgZm9yIHplcm8gbGVuZ3RoIGVudGl0aWVzXG4gIGlmIChlbnRpdHkubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGAwLTQ3REVRcGo4SEJTYSsvVEltVys1SkNldVFlUmA7XG4gIH1cblxuICBpZiAodHlwZW9mIGVudGl0eSA9PT0gXCJzdHJpbmdcIikge1xuICAgIGVudGl0eSA9IGVuY29kZXIuZW5jb2RlKGVudGl0eSk7XG4gIH1cblxuICBjb25zdCBoYXNoID0gYmFzZTY0RW5jb2RlKGF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KGFsZ29yaXRobSwgZW50aXR5KSlcbiAgICAuc3Vic3RyaW5nKDAsIDI3KTtcblxuICByZXR1cm4gYCR7ZW50aXR5Lmxlbmd0aC50b1N0cmluZygxNil9LSR7aGFzaH1gO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjYWxjRmlsZUluZm8oXG4gIGZpbGVJbmZvOiBGaWxlSW5mbyxcbiAgeyBhbGdvcml0aG0gPSBERUZBVUxUX0FMR09SSVRITSB9OiBFVGFnT3B0aW9ucyxcbikge1xuICBpZiAoZmlsZUluZm8ubXRpbWUpIHtcbiAgICBjb25zdCBoYXNoID0gYmFzZTY0RW5jb2RlKFxuICAgICAgYXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoXG4gICAgICAgIGFsZ29yaXRobSxcbiAgICAgICAgZW5jb2Rlci5lbmNvZGUoZmlsZUluZm8ubXRpbWUudG9KU09OKCkpLFxuICAgICAgKSxcbiAgICApLnN1YnN0cmluZygwLCAyNyk7XG4gICAgcmV0dXJuIGAke2ZpbGVJbmZvLnNpemUudG9TdHJpbmcoMTYpfS0ke2hhc2h9YDtcbiAgfVxufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBhbiBFVGFnIGZvciBzdHJpbmcgb3IgYFVpbnQ4QXJyYXlgIGVudGl0aWVzLiBUaGlzIHJldHVybnMgYVxuICoge0BsaW5rY29kZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvRVRhZyNldGFnX3ZhbHVlIHwgc3Ryb25nIHRhZ31cbiAqIG9mIHRoZSBmb3JtIGBcIjxhc2NpaSBjaGFycz5cImAsIHdoaWNoIGd1YXJhbnRlZXMgdGhlIGJ5dGUtZm9yLWJ5dGUgZXF1YWxpdHkgb2YgdGhlIHJlc291cmNlLlxuICpcbiAqIFlvdSBjYW4gb3B0aW9uYWxseSBzZXQgdHJ1ZSB0byB0aGUgYHdlYWtgIG9wdGlvbiB0byBnZXQgYSB3ZWFrIHRhZy5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGVUYWcgfSBmcm9tIFwiQHN0ZC9odHRwL2V0YWdcIjtcbiAqIGltcG9ydCB7IGFzc2VydCB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IGJvZHkgPSBcImhlbGxvIGRlbm8hXCI7XG4gKlxuICogY29uc3QgZXRhZyA9IGF3YWl0IGVUYWcoYm9keSk7XG4gKiBhc3NlcnQoZXRhZyk7XG4gKlxuICogY29uc3QgcmVzID0gbmV3IFJlc3BvbnNlKGJvZHksIHsgaGVhZGVyczogeyBldGFnIH0gfSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gZW50aXR5IFRoZSBlbnRpdHkgdG8gZ2V0IHRoZSBFVGFnIGZvci5cbiAqIEBwYXJhbSBvcHRpb25zIFZhcmlvdXMgYWRkaXRpb25hbCBvcHRpb25zLlxuICogQHJldHVybnMgVGhlIGNhbGN1bGF0ZWQgRVRhZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVUYWcoXG4gIGVudGl0eTogc3RyaW5nIHwgVWludDhBcnJheSxcbiAgb3B0aW9ucz86IEVUYWdPcHRpb25zLFxuKTogUHJvbWlzZTxzdHJpbmc+O1xuLyoqXG4gKiBDYWxjdWxhdGUgYW4gRVRhZyBmb3IgZmlsZSBpbmZvcm1hdGlvbiBlbnRpdHkuIFRoaXMgcmV0dXJucyBhXG4gKiB7QGxpbmtjb2RlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9FVGFnI3cgfCB3ZWFrIHRhZ31cbiAqIG9mIHRoZSBmb3JtIGBXXFxcIjxhc2NpaSBjaGFycz5cImAsIHdoaWNoIGd1YXJhbnRlZXMgdGhlIGVxdWl2YWxlbmNlIG9mIHRoZSByZXNvdXJjZSxcbiAqIG5vdCB0aGUgYnl0ZS1mb3ItYnl0ZSBlcXVhbGl0eS5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGVUYWcgfSBmcm9tIFwiQHN0ZC9odHRwL2V0YWdcIjtcbiAqIGltcG9ydCB7IGFzc2VydCB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IGZpbGVJbmZvID0gYXdhaXQgRGVuby5zdGF0KFwiUkVBRE1FLm1kXCIpO1xuICpcbiAqIGNvbnN0IGV0YWcgPSBhd2FpdCBlVGFnKGZpbGVJbmZvKTtcbiAqIGFzc2VydChldGFnKTtcbiAqXG4gKiB1c2luZyBmaWxlID0gYXdhaXQgRGVuby5vcGVuKFwiUkVBRE1FLm1kXCIpO1xuICpcbiAqIGNvbnN0IHJlcyA9IG5ldyBSZXNwb25zZShmaWxlLnJlYWRhYmxlLCB7IGhlYWRlcnM6IHsgZXRhZyB9IH0pO1xuICogYGBgXG4gKlxuICogQHBhcmFtIGVudGl0eSBUaGUgZW50aXR5IHRvIGdldCB0aGUgRVRhZyBmb3IuXG4gKiBAcGFyYW0gb3B0aW9ucyBWYXJpb3VzIGFkZGl0aW9uYWwgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSBjYWxjdWxhdGVkIEVUYWcuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlVGFnKFxuICBlbnRpdHk6IEZpbGVJbmZvLFxuICBvcHRpb25zPzogRVRhZ09wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD47XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZVRhZyhcbiAgZW50aXR5OiBzdHJpbmcgfCBVaW50OEFycmF5IHwgRmlsZUluZm8sXG4gIG9wdGlvbnM6IEVUYWdPcHRpb25zID0ge30sXG4pOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCB3ZWFrID0gb3B0aW9ucy53ZWFrID8/IGlzRmlsZUluZm8oZW50aXR5KTtcbiAgY29uc3QgdGFnID1cbiAgICBhd2FpdCAoaXNGaWxlSW5mbyhlbnRpdHkpXG4gICAgICA/IGNhbGNGaWxlSW5mbyhlbnRpdHksIG9wdGlvbnMpXG4gICAgICA6IGNhbGNFbnRpdHkoZW50aXR5LCBvcHRpb25zKSk7XG5cbiAgcmV0dXJuIHRhZyA/IHdlYWsgPyBgVy9cIiR7dGFnfVwiYCA6IGBcIiR7dGFnfVwiYCA6IHVuZGVmaW5lZDtcbn1cblxuY29uc3QgU1RBUl9SRUdFWFAgPSAvXlxccypcXCpcXHMqJC87XG5jb25zdCBDT01NQV9SRUdFWFAgPSAvXFxzKixcXHMqLztcblxuLyoqIEEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdGhlIHZhbHVlIGZyb20gdGhlIGBJZi1NYXRjaGAgaGVhZGVyIGFuZCBhXG4gKiBjYWxjdWxhdGVkIGV0YWcgZm9yIHRoZSB0YXJnZXQuIEJ5IHVzaW5nIHN0cm9uZyBjb21wYXJpc29uLCByZXR1cm4gYHRydWVgIGlmXG4gKiB0aGUgdmFsdWVzIG1hdGNoLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqXG4gKiBTZWUgTUROJ3MgW2BJZi1NYXRjaGBdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9JZi1NYXRjaClcbiAqIGFydGljbGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBpZ25vcmVcbiAqIGltcG9ydCB7XG4gKiAgIGVUYWcsXG4gKiAgIGlmTWF0Y2gsXG4gKiB9IGZyb20gXCJAc3RkL2h0dHAvZXRhZ1wiO1xuICogaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3QgYm9keSA9IFwiaGVsbG8gZGVubyFcIjtcbiAqXG4gKiBEZW5vLnNlcnZlKGFzeW5jIChyZXEpID0+IHtcbiAqICAgY29uc3QgaWZNYXRjaFZhbHVlID0gcmVxLmhlYWRlcnMuZ2V0KFwiaWYtbWF0Y2hcIik7XG4gKiAgIGNvbnN0IGV0YWcgPSBhd2FpdCBlVGFnKGJvZHkpO1xuICogICBhc3NlcnQoZXRhZyk7XG4gKiAgIGlmICghaWZNYXRjaFZhbHVlIHx8IGlmTWF0Y2goaWZNYXRjaFZhbHVlLCBldGFnKSkge1xuICogICAgIHJldHVybiBuZXcgUmVzcG9uc2UoYm9keSwgeyBzdGF0dXM6IDIwMCwgaGVhZGVyczogeyBldGFnIH0gfSk7XG4gKiAgIH0gZWxzZSB7XG4gKiAgICAgcmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7IHN0YXR1czogNDEyLCBzdGF0dXNUZXh0OiBcIlByZWNvbmRpdGlvbiBGYWlsZWRcIn0pO1xuICogICB9XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB2YWx1ZSB0aGUgSWYtTWF0Y2ggaGVhZGVyIHZhbHVlLlxuICogQHBhcmFtIGV0YWcgdGhlIEVUYWcgdG8gY2hlY2sgYWdhaW5zdC5cbiAqIEByZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBwYXJhbWV0ZXJzIG1hdGNoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaWZNYXRjaChcbiAgdmFsdWU6IHN0cmluZyB8IG51bGwsXG4gIGV0YWc6IHN0cmluZyB8IHVuZGVmaW5lZCxcbik6IGJvb2xlYW4ge1xuICAvLyBXZWFrIHRhZ3MgY2Fubm90IGJlIG1hdGNoZWQgYW5kIHJldHVybiBmYWxzZS5cbiAgaWYgKCF2YWx1ZSB8fCAhZXRhZyB8fCBldGFnLnN0YXJ0c1dpdGgoXCJXL1wiKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoU1RBUl9SRUdFWFAudGVzdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBjb25zdCB0YWdzID0gdmFsdWUuc3BsaXQoQ09NTUFfUkVHRVhQKTtcbiAgcmV0dXJuIHRhZ3MuaW5jbHVkZXMoZXRhZyk7XG59XG5cbi8qKiBBIGhlbHBlciBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSB2YWx1ZSBmcm9tIHRoZSBgSWYtTm9uZS1NYXRjaGAgaGVhZGVyIGFuZFxuICogYSBjYWxjdWxhdGVkIGV0YWcgZm9yIHRoZSB0YXJnZXQgZW50aXR5IGFuZCByZXR1cm5zIGBmYWxzZWAgaWYgdGhlIGV0YWcgZm9yXG4gKiB0aGUgZW50aXR5IG1hdGNoZXMgdGhlIHN1cHBsaWVkIHZhbHVlLCBvdGhlcndpc2UgYHRydWVgLlxuICpcbiAqIFNlZSBNRE4ncyBbYElmLU5vbmUtTWF0Y2hgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvSWYtTm9uZS1NYXRjaClcbiAqIGFydGljbGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBpZ25vcmVcbiAqIGltcG9ydCB7XG4gKiAgIGVUYWcsXG4gKiAgIGlmTm9uZU1hdGNoLFxuICogfSBmcm9tIFwiQHN0ZC9odHRwL2V0YWdcIjtcbiAqIGltcG9ydCB7IGFzc2VydCB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IGJvZHkgPSBcImhlbGxvIGRlbm8hXCI7XG4gKlxuICogRGVuby5zZXJ2ZShhc3luYyAocmVxKSA9PiB7XG4gKiAgIGNvbnN0IGlmTm9uZU1hdGNoVmFsdWUgPSByZXEuaGVhZGVycy5nZXQoXCJpZi1ub25lLW1hdGNoXCIpO1xuICogICBjb25zdCBldGFnID0gYXdhaXQgZVRhZyhib2R5KTtcbiAqICAgYXNzZXJ0KGV0YWcpO1xuICogICBpZiAoIWlmTm9uZU1hdGNoKGlmTm9uZU1hdGNoVmFsdWUsIGV0YWcpKSB7XG4gKiAgICAgcmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7IHN0YXR1czogMzA0LCBoZWFkZXJzOiB7IGV0YWcgfSB9KTtcbiAqICAgfSBlbHNlIHtcbiAqICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKGJvZHksIHsgc3RhdHVzOiAyMDAsIGhlYWRlcnM6IHsgZXRhZyB9IH0pO1xuICogICB9XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB2YWx1ZSB0aGUgSWYtTm9uZS1NYXRjaCBoZWFkZXIgdmFsdWUuXG4gKiBAcGFyYW0gZXRhZyB0aGUgRVRhZyB0byBjaGVjayBhZ2FpbnN0LlxuICogQHJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHBhcmFtZXRlcnMgZG8gbm90IG1hdGNoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaWZOb25lTWF0Y2goXG4gIHZhbHVlOiBzdHJpbmcgfCBudWxsLFxuICBldGFnOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4pOiBib29sZWFuIHtcbiAgaWYgKCF2YWx1ZSB8fCAhZXRhZykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChTVEFSX1JFR0VYUC50ZXN0KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBldGFnID0gZXRhZy5zdGFydHNXaXRoKFwiVy9cIikgPyBldGFnLnNsaWNlKDIpIDogZXRhZztcbiAgY29uc3QgdGFncyA9IHZhbHVlLnNwbGl0KENPTU1BX1JFR0VYUCkubWFwKCh0YWcpID0+XG4gICAgdGFnLnN0YXJ0c1dpdGgoXCJXL1wiKSA/IHRhZy5zbGljZSgyKSA6IHRhZ1xuICApO1xuICByZXR1cm4gIXRhZ3MuaW5jbHVkZXMoZXRhZyk7XG59XG4iXSwibmFtZXMi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 +// denoCacheMetadata=13067080872163740025,16931646735443454902
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/14c325e4d60cdbf83301211077ecbce5016df36cafc4ee08329a89cd724a7891.js b/vendor/gen/https/jsr.io/14c325e4d60cdbf83301211077ecbce5016df36cafc4ee08329a89cd724a7891.js new file mode 100644 index 0000000..c3018c5 --- /dev/null +++ b/vendor/gen/https/jsr.io/14c325e4d60cdbf83301211077ecbce5016df36cafc4ee08329a89cd724a7891.js @@ -0,0 +1,73 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * Check whether byte slices are equal to each other using 8-bit comparisons. + * + * @param a First array to check equality + * @param b Second array to check equality + * @returns `true` if the arrays are equal, `false` otherwise + * + * @private + */ function equalsNaive(a, b) { + for(let i = 0; i < b.length; i++){ + if (a[i] !== b[i]) return false; + } + return true; +} +/** Check whether byte slices are equal to each other using 32-bit comparisons. + * + * @param a First array to check equality. + * @param b Second array to check equality. + * @returns `true` if the arrays are equal, `false` otherwise. + * + * @private + */ function equals32Bit(a, b) { + const len = a.length; + const compactOffset = 3 - (a.byteOffset + 3) % 4; + const compactLen = Math.floor((len - compactOffset) / 4); + const compactA = new Uint32Array(a.buffer, a.byteOffset + compactOffset, compactLen); + const compactB = new Uint32Array(b.buffer, b.byteOffset + compactOffset, compactLen); + for(let i = 0; i < compactOffset; i++){ + if (a[i] !== b[i]) return false; + } + for(let i = 0; i < compactA.length; i++){ + if (compactA[i] !== compactB[i]) return false; + } + for(let i = compactOffset + compactLen * 4; i < len; i++){ + if (a[i] !== b[i]) return false; + } + return true; +} +/** + * Byte length threshold for when to use 32-bit comparisons, based on + * benchmarks. + * + * @see {@link https://github.com/denoland/std/pull/4635} + */ const THRESHOLD_32_BIT = 160; +/** + * Check whether byte slices are equal to each other. + * + * @param a First array to check equality. + * @param b Second array to check equality. + * @returns `true` if the arrays are equal, `false` otherwise. + * + * @example Basic usage + * ```ts + * import { equals } from "@std/bytes/equals"; + * import { assertEquals } from "@std/assert"; + * + * const a = new Uint8Array([1, 2, 3]); + * const b = new Uint8Array([1, 2, 3]); + * const c = new Uint8Array([4, 5, 6]); + * + * assertEquals(equals(a, b), true); + * assertEquals(equals(a, c), false); + * ``` + */ export function equals(a, b) { + if (a.length !== b.length) { + return false; + } + return a.length >= THRESHOLD_32_BIT && a.byteOffset % 4 === b.byteOffset % 4 ? equals32Bit(a, b) : equalsNaive(a, b); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvYnl0ZXMvMS4wLjYvZXF1YWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciBieXRlIHNsaWNlcyBhcmUgZXF1YWwgdG8gZWFjaCBvdGhlciB1c2luZyA4LWJpdCBjb21wYXJpc29ucy5cbiAqXG4gKiBAcGFyYW0gYSBGaXJzdCBhcnJheSB0byBjaGVjayBlcXVhbGl0eVxuICogQHBhcmFtIGIgU2Vjb25kIGFycmF5IHRvIGNoZWNrIGVxdWFsaXR5XG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFycmF5cyBhcmUgZXF1YWwsIGBmYWxzZWAgb3RoZXJ3aXNlXG4gKlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gZXF1YWxzTmFpdmUoYTogVWludDhBcnJheSwgYjogVWludDhBcnJheSk6IGJvb2xlYW4ge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoYVtpXSAhPT0gYltpXSkgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKiogQ2hlY2sgd2hldGhlciBieXRlIHNsaWNlcyBhcmUgZXF1YWwgdG8gZWFjaCBvdGhlciB1c2luZyAzMi1iaXQgY29tcGFyaXNvbnMuXG4gKlxuICogQHBhcmFtIGEgRmlyc3QgYXJyYXkgdG8gY2hlY2sgZXF1YWxpdHkuXG4gKiBAcGFyYW0gYiBTZWNvbmQgYXJyYXkgdG8gY2hlY2sgZXF1YWxpdHkuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFycmF5cyBhcmUgZXF1YWwsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGVxdWFsczMyQml0KGE6IFVpbnQ4QXJyYXksIGI6IFVpbnQ4QXJyYXkpOiBib29sZWFuIHtcbiAgY29uc3QgbGVuID0gYS5sZW5ndGg7XG4gIGNvbnN0IGNvbXBhY3RPZmZzZXQgPSAzIC0gKChhLmJ5dGVPZmZzZXQgKyAzKSAlIDQpO1xuICBjb25zdCBjb21wYWN0TGVuID0gTWF0aC5mbG9vcigobGVuIC0gY29tcGFjdE9mZnNldCkgLyA0KTtcbiAgY29uc3QgY29tcGFjdEEgPSBuZXcgVWludDMyQXJyYXkoXG4gICAgYS5idWZmZXIsXG4gICAgYS5ieXRlT2Zmc2V0ICsgY29tcGFjdE9mZnNldCxcbiAgICBjb21wYWN0TGVuLFxuICApO1xuICBjb25zdCBjb21wYWN0QiA9IG5ldyBVaW50MzJBcnJheShcbiAgICBiLmJ1ZmZlcixcbiAgICBiLmJ5dGVPZmZzZXQgKyBjb21wYWN0T2Zmc2V0LFxuICAgIGNvbXBhY3RMZW4sXG4gICk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY29tcGFjdE9mZnNldDsgaSsrKSB7XG4gICAgaWYgKGFbaV0gIT09IGJbaV0pIHJldHVybiBmYWxzZTtcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbXBhY3RBLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGNvbXBhY3RBW2ldICE9PSBjb21wYWN0QltpXSkgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGZvciAobGV0IGkgPSBjb21wYWN0T2Zmc2V0ICsgY29tcGFjdExlbiAqIDQ7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChhW2ldICE9PSBiW2ldKSByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogQnl0ZSBsZW5ndGggdGhyZXNob2xkIGZvciB3aGVuIHRvIHVzZSAzMi1iaXQgY29tcGFyaXNvbnMsIGJhc2VkIG9uXG4gKiBiZW5jaG1hcmtzLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9kZW5vbGFuZC9zdGQvcHVsbC80NjM1fVxuICovXG5jb25zdCBUSFJFU0hPTERfMzJfQklUID0gMTYwO1xuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgYnl0ZSBzbGljZXMgYXJlIGVxdWFsIHRvIGVhY2ggb3RoZXIuXG4gKlxuICogQHBhcmFtIGEgRmlyc3QgYXJyYXkgdG8gY2hlY2sgZXF1YWxpdHkuXG4gKiBAcGFyYW0gYiBTZWNvbmQgYXJyYXkgdG8gY2hlY2sgZXF1YWxpdHkuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFycmF5cyBhcmUgZXF1YWwsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZXF1YWxzIH0gZnJvbSBcIkBzdGQvYnl0ZXMvZXF1YWxzXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBhID0gbmV3IFVpbnQ4QXJyYXkoWzEsIDIsIDNdKTtcbiAqIGNvbnN0IGIgPSBuZXcgVWludDhBcnJheShbMSwgMiwgM10pO1xuICogY29uc3QgYyA9IG5ldyBVaW50OEFycmF5KFs0LCA1LCA2XSk7XG4gKlxuICogYXNzZXJ0RXF1YWxzKGVxdWFscyhhLCBiKSwgdHJ1ZSk7XG4gKiBhc3NlcnRFcXVhbHMoZXF1YWxzKGEsIGMpLCBmYWxzZSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVxdWFscyhhOiBVaW50OEFycmF5LCBiOiBVaW50OEFycmF5KTogYm9vbGVhbiB7XG4gIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGEubGVuZ3RoID49IFRIUkVTSE9MRF8zMl9CSVQgJiZcbiAgICAgIChhLmJ5dGVPZmZzZXQgJSA0KSA9PT0gKGIuYnl0ZU9mZnNldCAlIDQpXG4gICAgPyBlcXVhbHMzMkJpdChhLCBiKVxuICAgIDogZXF1YWxzTmFpdmUoYSwgYik7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQzs7Ozs7Ozs7Q0FRQyxHQUNELFNBQVMsWUFBWSxDQUFhLEVBQUUsQ0FBYTtFQUMvQyxJQUFLLElBQUksSUFBSSxHQUFHLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSztJQUNqQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPO0VBQzVCO0VBQ0EsT0FBTztBQUNUO0FBRUE7Ozs7Ozs7Q0FPQyxHQUNELFNBQVMsWUFBWSxDQUFhLEVBQUUsQ0FBYTtFQUMvQyxNQUFNLE1BQU0sRUFBRSxNQUFNO0VBQ3BCLE1BQU0sZ0JBQWdCLElBQUssQ0FBQyxFQUFFLFVBQVUsR0FBRyxDQUFDLElBQUk7RUFDaEQsTUFBTSxhQUFhLEtBQUssS0FBSyxDQUFDLENBQUMsTUFBTSxhQUFhLElBQUk7RUFDdEQsTUFBTSxXQUFXLElBQUksWUFDbkIsRUFBRSxNQUFNLEVBQ1IsRUFBRSxVQUFVLEdBQUcsZUFDZjtFQUVGLE1BQU0sV0FBVyxJQUFJLFlBQ25CLEVBQUUsTUFBTSxFQUNSLEVBQUUsVUFBVSxHQUFHLGVBQ2Y7RUFFRixJQUFLLElBQUksSUFBSSxHQUFHLElBQUksZUFBZSxJQUFLO0lBQ3RDLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU87RUFDNUI7RUFDQSxJQUFLLElBQUksSUFBSSxHQUFHLElBQUksU0FBUyxNQUFNLEVBQUUsSUFBSztJQUN4QyxJQUFJLFFBQVEsQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLEVBQUUsRUFBRSxPQUFPO0VBQzFDO0VBQ0EsSUFBSyxJQUFJLElBQUksZ0JBQWdCLGFBQWEsR0FBRyxJQUFJLEtBQUssSUFBSztJQUN6RCxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPO0VBQzVCO0VBQ0EsT0FBTztBQUNUO0FBRUE7Ozs7O0NBS0MsR0FDRCxNQUFNLG1CQUFtQjtBQUV6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW1CQyxHQUNELE9BQU8sU0FBUyxPQUFPLENBQWEsRUFBRSxDQUFhO0VBQ2pELElBQUksRUFBRSxNQUFNLEtBQUssRUFBRSxNQUFNLEVBQUU7SUFDekIsT0FBTztFQUNUO0VBQ0EsT0FBTyxFQUFFLE1BQU0sSUFBSSxvQkFDZixBQUFDLEVBQUUsVUFBVSxHQUFHLE1BQVEsRUFBRSxVQUFVLEdBQUcsSUFDdkMsWUFBWSxHQUFHLEtBQ2YsWUFBWSxHQUFHO0FBQ3JCIn0= +// denoCacheMetadata=12704657965864534442,16607678003465889335
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/169a7a9f9f4503f27e19e895b1d11e116a8ba7e62fea05683820204e82f3dda8.js b/vendor/gen/https/jsr.io/169a7a9f9f4503f27e19e895b1d11e116a8ba7e62fea05683820204e82f3dda8.js new file mode 100644 index 0000000..35edec1 --- /dev/null +++ b/vendor/gen/https/jsr.io/169a7a9f9f4503f27e19e895b1d11e116a8ba7e62fea05683820204e82f3dda8.js @@ -0,0 +1,74 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { CHAR_COLON, CHAR_DOT } from "../_common/constants.ts"; +import { assertPath } from "../_common/assert_path.ts"; +import { isPathSeparator, isWindowsDeviceRoot } from "./_util.ts"; +/** + * Return the extension of the `path` with leading period. + * + * @example Usage + * ```ts + * import { extname } from "@std/path/windows/extname"; + * import { assertEquals } from "@std/assert"; + * + * const ext = extname("file.ts"); + * assertEquals(ext, ".ts"); + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `extname` from `@std/path/windows/unstable-extname`. + * + * @param path The path to get the extension from. + * @returns The extension of the `path`. + */ export function extname(path) { + assertPath(path); + let start = 0; + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + if (path.length >= 2 && path.charCodeAt(1) === CHAR_COLON && isWindowsDeviceRoot(path.charCodeAt(0))) { + start = startPart = 2; + } + for(let i = path.length - 1; i >= start; --i){ + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot + preDotState === 0 || // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + return ""; + } + return path.slice(startDot, end); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC93aW5kb3dzL2V4dG5hbWUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgQ0hBUl9DT0xPTiwgQ0hBUl9ET1QgfSBmcm9tIFwiLi4vX2NvbW1vbi9jb25zdGFudHMudHNcIjtcbmltcG9ydCB7IGFzc2VydFBhdGggfSBmcm9tIFwiLi4vX2NvbW1vbi9hc3NlcnRfcGF0aC50c1wiO1xuaW1wb3J0IHsgaXNQYXRoU2VwYXJhdG9yLCBpc1dpbmRvd3NEZXZpY2VSb290IH0gZnJvbSBcIi4vX3V0aWwudHNcIjtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIGV4dGVuc2lvbiBvZiB0aGUgYHBhdGhgIHdpdGggbGVhZGluZyBwZXJpb2QuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBleHRuYW1lIH0gZnJvbSBcIkBzdGQvcGF0aC93aW5kb3dzL2V4dG5hbWVcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IGV4dCA9IGV4dG5hbWUoXCJmaWxlLnRzXCIpO1xuICogYXNzZXJ0RXF1YWxzKGV4dCwgXCIudHNcIik7XG4gKiBgYGBcbiAqXG4gKiBOb3RlOiBJZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBmaWxlIFVSTHMsXG4gKiB1c2UgdGhlIG5ldyB2ZXJzaW9uIG9mIGBleHRuYW1lYCBmcm9tIGBAc3RkL3BhdGgvd2luZG93cy91bnN0YWJsZS1leHRuYW1lYC5cbiAqXG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byBnZXQgdGhlIGV4dGVuc2lvbiBmcm9tLlxuICogQHJldHVybnMgVGhlIGV4dGVuc2lvbiBvZiB0aGUgYHBhdGhgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0bmFtZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuXG4gIGxldCBzdGFydCA9IDA7XG4gIGxldCBzdGFydERvdCA9IC0xO1xuICBsZXQgc3RhcnRQYXJ0ID0gMDtcbiAgbGV0IGVuZCA9IC0xO1xuICBsZXQgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgLy8gVHJhY2sgdGhlIHN0YXRlIG9mIGNoYXJhY3RlcnMgKGlmIGFueSkgd2Ugc2VlIGJlZm9yZSBvdXIgZmlyc3QgZG90IGFuZFxuICAvLyBhZnRlciBhbnkgcGF0aCBzZXBhcmF0b3Igd2UgZmluZFxuICBsZXQgcHJlRG90U3RhdGUgPSAwO1xuXG4gIC8vIENoZWNrIGZvciBhIGRyaXZlIGxldHRlciBwcmVmaXggc28gYXMgbm90IHRvIG1pc3Rha2UgdGhlIGZvbGxvd2luZ1xuICAvLyBwYXRoIHNlcGFyYXRvciBhcyBhbiBleHRyYSBzZXBhcmF0b3IgYXQgdGhlIGVuZCBvZiB0aGUgcGF0aCB0aGF0IGNhbiBiZVxuICAvLyBkaXNyZWdhcmRlZFxuXG4gIGlmIChcbiAgICBwYXRoLmxlbmd0aCA+PSAyICYmXG4gICAgcGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OICYmXG4gICAgaXNXaW5kb3dzRGV2aWNlUm9vdChwYXRoLmNoYXJDb2RlQXQoMCkpXG4gICkge1xuICAgIHN0YXJ0ID0gc3RhcnRQYXJ0ID0gMjtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gc3RhcnQ7IC0taSkge1xuICAgIGNvbnN0IGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgc3RhcnRQYXJ0ID0gaSArIDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAvLyBleHRlbnNpb25cbiAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgZW5kID0gaSArIDE7XG4gICAgfVxuICAgIGlmIChjb2RlID09PSBDSEFSX0RPVCkge1xuICAgICAgLy8gSWYgdGhpcyBpcyBvdXIgZmlyc3QgZG90LCBtYXJrIGl0IGFzIHRoZSBzdGFydCBvZiBvdXIgZXh0ZW5zaW9uXG4gICAgICBpZiAoc3RhcnREb3QgPT09IC0xKSBzdGFydERvdCA9IGk7XG4gICAgICBlbHNlIGlmIChwcmVEb3RTdGF0ZSAhPT0gMSkgcHJlRG90U3RhdGUgPSAxO1xuICAgIH0gZWxzZSBpZiAoc3RhcnREb3QgIT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgYSBub24tZG90IGFuZCBub24tcGF0aCBzZXBhcmF0b3IgYmVmb3JlIG91ciBkb3QsIHNvIHdlIHNob3VsZFxuICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb25cbiAgICAgIHByZURvdFN0YXRlID0gLTE7XG4gICAgfVxuICB9XG5cbiAgaWYgKFxuICAgIHN0YXJ0RG90ID09PSAtMSB8fFxuICAgIGVuZCA9PT0gLTEgfHxcbiAgICAvLyBXZSBzYXcgYSBub24tZG90IGNoYXJhY3RlciBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGRvdFxuICAgIHByZURvdFN0YXRlID09PSAwIHx8XG4gICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgJy4uJ1xuICAgIChwcmVEb3RTdGF0ZSA9PT0gMSAmJiBzdGFydERvdCA9PT0gZW5kIC0gMSAmJiBzdGFydERvdCA9PT0gc3RhcnRQYXJ0ICsgMSlcbiAgKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbiAgcmV0dXJuIHBhdGguc2xpY2Uoc3RhcnREb3QsIGVuZCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQyxTQUFTLFVBQVUsRUFBRSxRQUFRLFFBQVEsMEJBQTBCO0FBQy9ELFNBQVMsVUFBVSxRQUFRLDRCQUE0QjtBQUN2RCxTQUFTLGVBQWUsRUFBRSxtQkFBbUIsUUFBUSxhQUFhO0FBRWxFOzs7Ozs7Ozs7Ozs7Ozs7OztDQWlCQyxHQUNELE9BQU8sU0FBUyxRQUFRLElBQVk7RUFDbEMsV0FBVztFQUVYLElBQUksUUFBUTtFQUNaLElBQUksV0FBVyxDQUFDO0VBQ2hCLElBQUksWUFBWTtFQUNoQixJQUFJLE1BQU0sQ0FBQztFQUNYLElBQUksZUFBZTtFQUNuQix5RUFBeUU7RUFDekUsbUNBQW1DO0VBQ25DLElBQUksY0FBYztFQUVsQixxRUFBcUU7RUFDckUsMEVBQTBFO0VBQzFFLGNBQWM7RUFFZCxJQUNFLEtBQUssTUFBTSxJQUFJLEtBQ2YsS0FBSyxVQUFVLENBQUMsT0FBTyxjQUN2QixvQkFBb0IsS0FBSyxVQUFVLENBQUMsS0FDcEM7SUFDQSxRQUFRLFlBQVk7RUFDdEI7RUFFQSxJQUFLLElBQUksSUFBSSxLQUFLLE1BQU0sR0FBRyxHQUFHLEtBQUssT0FBTyxFQUFFLEVBQUc7SUFDN0MsTUFBTSxPQUFPLEtBQUssVUFBVSxDQUFDO0lBQzdCLElBQUksZ0JBQWdCLE9BQU87TUFDekIsb0VBQW9FO01BQ3BFLGdEQUFnRDtNQUNoRCxJQUFJLENBQUMsY0FBYztRQUNqQixZQUFZLElBQUk7UUFDaEI7TUFDRjtNQUNBO0lBQ0Y7SUFDQSxJQUFJLFFBQVEsQ0FBQyxHQUFHO01BQ2QsbUVBQW1FO01BQ25FLFlBQVk7TUFDWixlQUFlO01BQ2YsTUFBTSxJQUFJO0lBQ1o7SUFDQSxJQUFJLFNBQVMsVUFBVTtNQUNyQixrRUFBa0U7TUFDbEUsSUFBSSxhQUFhLENBQUMsR0FBRyxXQUFXO1dBQzNCLElBQUksZ0JBQWdCLEdBQUcsY0FBYztJQUM1QyxPQUFPLElBQUksYUFBYSxDQUFDLEdBQUc7TUFDMUIsdUVBQXVFO01BQ3ZFLHFEQUFxRDtNQUNyRCxjQUFjLENBQUM7SUFDakI7RUFDRjtFQUVBLElBQ0UsYUFBYSxDQUFDLEtBQ2QsUUFBUSxDQUFDLEtBQ1Qsd0RBQXdEO0VBQ3hELGdCQUFnQixLQUNoQiwwREFBMEQ7RUFDekQsZ0JBQWdCLEtBQUssYUFBYSxNQUFNLEtBQUssYUFBYSxZQUFZLEdBQ3ZFO0lBQ0EsT0FBTztFQUNUO0VBQ0EsT0FBTyxLQUFLLEtBQUssQ0FBQyxVQUFVO0FBQzlCIn0= +// denoCacheMetadata=8011577690149871662,10906453524834987688
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/179f2e8864819323bbe3744a75a9f3ad1b214c60aeb28f569fd1147416bf8a9b.js b/vendor/gen/https/jsr.io/179f2e8864819323bbe3744a75a9f3ad1b214c60aeb28f569fd1147416bf8a9b.js new file mode 100644 index 0000000..e56d670 --- /dev/null +++ b/vendor/gen/https/jsr.io/179f2e8864819323bbe3744a75a9f3ad1b214c60aeb28f569fd1147416bf8a9b.js @@ -0,0 +1,47 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +export { digest, DigestContext } from "./lib/deno_std_wasm_crypto.mjs"; +/** + * All cryptographic hash/digest algorithms supported by std/crypto. + * + * For algorithms that are supported by WebCrypto, the name here will match the + * one used by WebCrypto. Otherwise we prefer the formatting used in the + * algorithm's official specification. All names are uppercase to facilitate + * case-insensitive comparisons required by the WebCrypto spec. + */ export const DIGEST_ALGORITHM_NAMES = [ + "BLAKE2B", + "BLAKE2B-128", + "BLAKE2B-160", + "BLAKE2B-224", + "BLAKE2B-256", + "BLAKE2B-384", + "BLAKE2S", + "BLAKE3", + "KECCAK-224", + "KECCAK-256", + "KECCAK-384", + "KECCAK-512", + "SHA-384", + "SHA3-224", + "SHA3-256", + "SHA3-384", + "SHA3-512", + "SHAKE128", + "SHAKE256", + "TIGER", + // insecure (length-extendable): + "RIPEMD-160", + "SHA-224", + "SHA-256", + "SHA-512", + // insecure (length-extendable and collidable): + "MD4", + "MD5", + "SHA-1", + // insecure (non-cryptographic) + "FNV32", + "FNV32A", + "FNV64", + "FNV64A" +]; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvY3J5cHRvLzEuMC41L193YXNtL21vZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuZXhwb3J0IHsgZGlnZXN0LCBEaWdlc3RDb250ZXh0IH0gZnJvbSBcIi4vbGliL2Rlbm9fc3RkX3dhc21fY3J5cHRvLm1qc1wiO1xuXG4vKipcbiAqIEFsbCBjcnlwdG9ncmFwaGljIGhhc2gvZGlnZXN0IGFsZ29yaXRobXMgc3VwcG9ydGVkIGJ5IHN0ZC9jcnlwdG8uXG4gKlxuICogRm9yIGFsZ29yaXRobXMgdGhhdCBhcmUgc3VwcG9ydGVkIGJ5IFdlYkNyeXB0bywgdGhlIG5hbWUgaGVyZSB3aWxsIG1hdGNoIHRoZVxuICogb25lIHVzZWQgYnkgV2ViQ3J5cHRvLiBPdGhlcndpc2Ugd2UgcHJlZmVyIHRoZSBmb3JtYXR0aW5nIHVzZWQgaW4gdGhlXG4gKiBhbGdvcml0aG0ncyBvZmZpY2lhbCBzcGVjaWZpY2F0aW9uLiBBbGwgbmFtZXMgYXJlIHVwcGVyY2FzZSB0byBmYWNpbGl0YXRlXG4gKiBjYXNlLWluc2Vuc2l0aXZlIGNvbXBhcmlzb25zIHJlcXVpcmVkIGJ5IHRoZSBXZWJDcnlwdG8gc3BlYy5cbiAqL1xuZXhwb3J0IGNvbnN0IERJR0VTVF9BTEdPUklUSE1fTkFNRVMgPSBbXG4gIFwiQkxBS0UyQlwiLFxuICBcIkJMQUtFMkItMTI4XCIsXG4gIFwiQkxBS0UyQi0xNjBcIixcbiAgXCJCTEFLRTJCLTIyNFwiLFxuICBcIkJMQUtFMkItMjU2XCIsXG4gIFwiQkxBS0UyQi0zODRcIixcbiAgXCJCTEFLRTJTXCIsXG4gIFwiQkxBS0UzXCIsXG4gIFwiS0VDQ0FLLTIyNFwiLFxuICBcIktFQ0NBSy0yNTZcIixcbiAgXCJLRUNDQUstMzg0XCIsXG4gIFwiS0VDQ0FLLTUxMlwiLFxuICBcIlNIQS0zODRcIixcbiAgXCJTSEEzLTIyNFwiLFxuICBcIlNIQTMtMjU2XCIsXG4gIFwiU0hBMy0zODRcIixcbiAgXCJTSEEzLTUxMlwiLFxuICBcIlNIQUtFMTI4XCIsXG4gIFwiU0hBS0UyNTZcIixcbiAgXCJUSUdFUlwiLFxuICAvLyBpbnNlY3VyZSAobGVuZ3RoLWV4dGVuZGFibGUpOlxuICBcIlJJUEVNRC0xNjBcIixcbiAgXCJTSEEtMjI0XCIsXG4gIFwiU0hBLTI1NlwiLFxuICBcIlNIQS01MTJcIixcbiAgLy8gaW5zZWN1cmUgKGxlbmd0aC1leHRlbmRhYmxlIGFuZCBjb2xsaWRhYmxlKTpcbiAgXCJNRDRcIixcbiAgXCJNRDVcIixcbiAgXCJTSEEtMVwiLFxuICAvLyBpbnNlY3VyZSAobm9uLWNyeXB0b2dyYXBoaWMpXG4gIFwiRk5WMzJcIixcbiAgXCJGTlYzMkFcIixcbiAgXCJGTlY2NFwiLFxuICBcIkZOVjY0QVwiLFxuXSBhcyBjb25zdDtcblxuLyoqIEFuIGFsZ29yaXRobSBuYW1lIHN1cHBvcnRlZCBieSBzdGQvY3J5cHRvLiAqL1xuZXhwb3J0IHR5cGUgRGlnZXN0QWxnb3JpdGhtTmFtZSA9IHR5cGVvZiBESUdFU1RfQUxHT1JJVEhNX05BTUVTW251bWJlcl07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELFNBQVMsTUFBTSxFQUFFLGFBQWEsUUFBUSxpQ0FBaUM7QUFFdkU7Ozs7Ozs7Q0FPQyxHQUNELE9BQU8sTUFBTSx5QkFBeUI7RUFDcEM7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLGdDQUFnQztFQUNoQztFQUNBO0VBQ0E7RUFDQTtFQUNBLCtDQUErQztFQUMvQztFQUNBO0VBQ0E7RUFDQSwrQkFBK0I7RUFDL0I7RUFDQTtFQUNBO0VBQ0E7Q0FDRCxDQUFVIn0= +// denoCacheMetadata=16208085553614233131,2888225469090550892
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/1a8c8e54fd981ec59cc603b3e473ea85f1f02651cd6fd641a3e460eb4e69311b.js b/vendor/gen/https/jsr.io/1a8c8e54fd981ec59cc603b3e473ea85f1f02651cd6fd641a3e460eb4e69311b.js new file mode 100644 index 0000000..28f973c --- /dev/null +++ b/vendor/gen/https/jsr.io/1a8c8e54fd981ec59cc603b3e473ea85f1f02651cd6fd641a3e460eb4e69311b.js @@ -0,0 +1,28 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { encodeWhitespace } from "../_common/to_file_url.ts"; +import { isAbsolute } from "./is_absolute.ts"; +/** + * Converts a path string to a file URL. + * + * @example Usage + * ```ts + * import { toFileUrl } from "@std/path/posix/to-file-url"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(toFileUrl("/home/foo"), new URL("file:///home/foo")); + * assertEquals(toFileUrl("/home/foo bar"), new URL("file:///home/foo%20bar")); + * ``` + * + * @param path The path to convert. + * @returns The file URL. + */ export function toFileUrl(path) { + if (!isAbsolute(path)) { + throw new TypeError(`Path must be absolute: received "${path}"`); + } + const url = new URL("file:///"); + url.pathname = encodeWhitespace(path.replace(/%/g, "%25").replace(/\\/g, "%5C")); + return url; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9wb3NpeC90b19maWxlX3VybC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBlbmNvZGVXaGl0ZXNwYWNlIH0gZnJvbSBcIi4uL19jb21tb24vdG9fZmlsZV91cmwudHNcIjtcbmltcG9ydCB7IGlzQWJzb2x1dGUgfSBmcm9tIFwiLi9pc19hYnNvbHV0ZS50c1wiO1xuXG4vKipcbiAqIENvbnZlcnRzIGEgcGF0aCBzdHJpbmcgdG8gYSBmaWxlIFVSTC5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHRvRmlsZVVybCB9IGZyb20gXCJAc3RkL3BhdGgvcG9zaXgvdG8tZmlsZS11cmxcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydEVxdWFscyh0b0ZpbGVVcmwoXCIvaG9tZS9mb29cIiksIG5ldyBVUkwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpKTtcbiAqIGFzc2VydEVxdWFscyh0b0ZpbGVVcmwoXCIvaG9tZS9mb28gYmFyXCIpLCBuZXcgVVJMKFwiZmlsZTovLy9ob21lL2ZvbyUyMGJhclwiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGZpbGUgVVJMLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9GaWxlVXJsKHBhdGg6IHN0cmluZyk6IFVSTCB7XG4gIGlmICghaXNBYnNvbHV0ZShwYXRoKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFBhdGggbXVzdCBiZSBhYnNvbHV0ZTogcmVjZWl2ZWQgXCIke3BhdGh9XCJgKTtcbiAgfVxuXG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoXCJmaWxlOi8vL1wiKTtcbiAgdXJsLnBhdGhuYW1lID0gZW5jb2RlV2hpdGVzcGFjZShcbiAgICBwYXRoLnJlcGxhY2UoLyUvZywgXCIlMjVcIikucmVwbGFjZSgvXFxcXC9nLCBcIiU1Q1wiKSxcbiAgKTtcbiAgcmV0dXJuIHVybDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDLFNBQVMsZ0JBQWdCLFFBQVEsNEJBQTRCO0FBQzdELFNBQVMsVUFBVSxRQUFRLG1CQUFtQjtBQUU5Qzs7Ozs7Ozs7Ozs7Ozs7Q0FjQyxHQUNELE9BQU8sU0FBUyxVQUFVLElBQVk7RUFDcEMsSUFBSSxDQUFDLFdBQVcsT0FBTztJQUNyQixNQUFNLElBQUksVUFBVSxDQUFDLGlDQUFpQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0VBQ2pFO0VBRUEsTUFBTSxNQUFNLElBQUksSUFBSTtFQUNwQixJQUFJLFFBQVEsR0FBRyxpQkFDYixLQUFLLE9BQU8sQ0FBQyxNQUFNLE9BQU8sT0FBTyxDQUFDLE9BQU87RUFFM0MsT0FBTztBQUNUIn0= +// denoCacheMetadata=1331179479001042497,10636658652871043538
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/1ac3d76153ab81b8cf0f6675645e174a12faae32e6fa6524ab909e0b03c3348f.js b/vendor/gen/https/jsr.io/1ac3d76153ab81b8cf0f6675645e174a12faae32e6fa6524ab909e0b03c3348f.js new file mode 100644 index 0000000..4ff045b --- /dev/null +++ b/vendor/gen/https/jsr.io/1ac3d76153ab81b8cf0f6675645e174a12faae32e6fa6524ab909e0b03c3348f.js @@ -0,0 +1,1239 @@ +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2025 the Deno authors. MIT license. +import { AMPERSAND, ASTERISK, BACKSLASH, CARRIAGE_RETURN, COLON, COMMA, COMMERCIAL_AT, DOT, DOUBLE_QUOTE, EXCLAMATION, GRAVE_ACCENT, GREATER_THAN, isEOL, isFlowIndicator, isWhiteSpace, isWhiteSpaceOrEOL, LEFT_CURLY_BRACKET, LEFT_SQUARE_BRACKET, LINE_FEED, MINUS, PERCENT, PLUS, QUESTION, RIGHT_CURLY_BRACKET, RIGHT_SQUARE_BRACKET, SHARP, SINGLE_QUOTE, SMALLER_THAN, SPACE, VERTICAL_LINE } from "./_chars.ts"; +import { DEFAULT_SCHEMA } from "./_schema.ts"; +import { isObject, isPlainObject } from "./_utils.ts"; +const CONTEXT_FLOW_IN = 1; +const CONTEXT_FLOW_OUT = 2; +const CONTEXT_BLOCK_IN = 3; +const CONTEXT_BLOCK_OUT = 4; +const CHOMPING_CLIP = 1; +const CHOMPING_STRIP = 2; +const CHOMPING_KEEP = 3; +const PATTERN_NON_PRINTABLE = // deno-lint-ignore no-control-regex +/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; +const PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; +const PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; +const PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; +const PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; +const ESCAPED_HEX_LENGTHS = new Map([ + [ + 0x78, + 2 + ], + [ + 0x75, + 4 + ], + [ + 0x55, + 8 + ] +]); +const SIMPLE_ESCAPE_SEQUENCES = new Map([ + [ + 0x30, + "\x00" + ], + [ + 0x61, + "\x07" + ], + [ + 0x62, + "\x08" + ], + [ + 0x74, + "\x09" + ], + [ + 0x09, + "\x09" + ], + [ + 0x6e, + "\x0A" + ], + [ + 0x76, + "\x0B" + ], + [ + 0x66, + "\x0C" + ], + [ + 0x72, + "\x0D" + ], + [ + 0x65, + "\x1B" + ], + [ + 0x20, + " " + ], + [ + 0x22, + '"' + ], + [ + 0x2f, + "/" + ], + [ + 0x5c, + "\\" + ], + [ + 0x4e, + "\x85" + ], + [ + 0x5f, + "\xA0" + ], + [ + 0x4c, + "\u2028" + ], + [ + 0x50, + "\u2029" + ] +]); +/** + * Converts a hexadecimal character code to its decimal value. + */ function hexCharCodeToNumber(charCode) { + // Check if the character code is in the range for '0' to '9' + if (0x30 <= charCode && charCode <= 0x39) return charCode - 0x30; // Convert '0'-'9' to 0-9 + // Normalize the character code to lowercase if it's a letter + const lc = charCode | 0x20; + // Check if the character code is in the range for 'a' to 'f' + if (0x61 <= lc && lc <= 0x66) return lc - 0x61 + 10; // Convert 'a'-'f' to 10-15 + return -1; +} +/** + * Converts a decimal character code to its decimal value. + */ function decimalCharCodeToNumber(charCode) { + // Check if the character code is in the range for '0' to '9' + if (0x30 <= charCode && charCode <= 0x39) return charCode - 0x30; // Convert '0'-'9' to 0-9 + return -1; +} +/** + * Converts a Unicode code point to a string. + */ function codepointToChar(codepoint) { + // Check if the code point is within the Basic Multilingual Plane (BMP) + if (codepoint <= 0xffff) return String.fromCharCode(codepoint); // Convert BMP code point to character + // Encode UTF-16 surrogate pair for code points beyond BMP + // Reference: https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF + return String.fromCharCode((codepoint - 0x010000 >> 10) + 0xd800, (codepoint - 0x010000 & 0x03ff) + 0xdc00); +} +const INDENT = 4; +const MAX_LENGTH = 75; +const DELIMITERS = "\x00\r\n\x85\u2028\u2029"; +function getSnippet(buffer, position) { + if (!buffer) return null; + let start = position; + let end = position; + let head = ""; + let tail = ""; + while(start > 0 && !DELIMITERS.includes(buffer.charAt(start - 1))){ + start--; + if (position - start > MAX_LENGTH / 2 - 1) { + head = " ... "; + start += 5; + break; + } + } + while(end < buffer.length && !DELIMITERS.includes(buffer.charAt(end))){ + end++; + if (end - position > MAX_LENGTH / 2 - 1) { + tail = " ... "; + end -= 5; + break; + } + } + const snippet = buffer.slice(start, end); + const indent = " ".repeat(INDENT); + const caretIndent = " ".repeat(INDENT + position - start + head.length); + return `${indent + head + snippet + tail}\n${caretIndent}^`; +} +function markToString(buffer, position, line, column) { + let where = `at line ${line + 1}, column ${column + 1}`; + const snippet = getSnippet(buffer, position); + if (snippet) where += `:\n${snippet}`; + return where; +} +export class LoaderState { + input; + length; + lineIndent = 0; + lineStart = 0; + position = 0; + line = 0; + onWarning; + allowDuplicateKeys; + implicitTypes; + typeMap; + version; + checkLineBreaks = false; + tagMap = new Map(); + anchorMap = new Map(); + tag; + anchor; + kind; + result = ""; + constructor(input, { schema = DEFAULT_SCHEMA, onWarning, allowDuplicateKeys = false }){ + this.input = input; + this.onWarning = onWarning; + this.allowDuplicateKeys = allowDuplicateKeys; + this.implicitTypes = schema.implicitTypes; + this.typeMap = schema.typeMap; + this.length = input.length; + this.version = null; + this.readIndent(); + } + skipWhitespaces() { + let ch = this.peek(); + while(isWhiteSpace(ch)){ + ch = this.next(); + } + } + skipComment() { + let ch = this.peek(); + if (ch !== SHARP) return; + ch = this.next(); + while(ch !== 0 && !isEOL(ch)){ + ch = this.next(); + } + } + readIndent() { + let char = this.peek(); + while(char === SPACE){ + this.lineIndent += 1; + char = this.next(); + } + } + peek(offset = 0) { + return this.input.charCodeAt(this.position + offset); + } + next() { + this.position += 1; + return this.peek(); + } + #createError(message) { + const mark = markToString(this.input, this.position, this.line, this.position - this.lineStart); + return new SyntaxError(`${message} ${mark}`); + } + dispatchWarning(message) { + const error = this.#createError(message); + this.onWarning?.(error); + } + yamlDirectiveHandler(...args) { + if (this.version !== null) { + throw this.#createError("Cannot handle YAML directive: duplication of %YAML directive"); + } + if (args.length !== 1) { + throw this.#createError("Cannot handle YAML directive: YAML directive accepts exactly one argument"); + } + const match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); + if (match === null) { + throw this.#createError("Cannot handle YAML directive: ill-formed argument"); + } + const major = parseInt(match[1], 10); + const minor = parseInt(match[2], 10); + if (major !== 1) { + throw this.#createError("Cannot handle YAML directive: unacceptable YAML version"); + } + this.version = args[0] ?? null; + this.checkLineBreaks = minor < 2; + if (minor !== 1 && minor !== 2) { + return this.dispatchWarning("Cannot handle YAML directive: unsupported YAML version"); + } + } + tagDirectiveHandler(...args) { + if (args.length !== 2) { + throw this.#createError(`Cannot handle tag directive: directive accepts exactly two arguments, received ${args.length}`); + } + const handle = args[0]; + const prefix = args[1]; + if (!PATTERN_TAG_HANDLE.test(handle)) { + throw this.#createError(`Cannot handle tag directive: ill-formed handle (first argument) in "${handle}"`); + } + if (this.tagMap.has(handle)) { + throw this.#createError(`Cannot handle tag directive: previously declared suffix for "${handle}" tag handle`); + } + if (!PATTERN_TAG_URI.test(prefix)) { + throw this.#createError("Cannot handle tag directive: ill-formed tag prefix (second argument) of the TAG directive"); + } + this.tagMap.set(handle, prefix); + } + captureSegment(start, end, checkJson) { + if (start < end) { + const result = this.input.slice(start, end); + if (checkJson) { + for(let position = 0; position < result.length; position++){ + const character = result.charCodeAt(position); + if (!(character === 0x09 || 0x20 <= character && character <= 0x10ffff)) { + throw this.#createError(`Expected valid JSON character: received "${character}"`); + } + } + } else if (PATTERN_NON_PRINTABLE.test(result)) { + throw this.#createError("Stream contains non-printable characters"); + } + this.result += result; + } + } + readBlockSequence(nodeIndent) { + let detected = false; + const tag = this.tag; + const anchor = this.anchor; + const result = []; + if (this.anchor !== null && typeof this.anchor !== "undefined") { + this.anchorMap.set(this.anchor, result); + } + let ch = this.peek(); + while(ch !== 0){ + if (ch !== MINUS) { + break; + } + const following = this.peek(1); + if (!isWhiteSpaceOrEOL(following)) { + break; + } + detected = true; + this.position++; + if (this.skipSeparationSpace(true, -1)) { + if (this.lineIndent <= nodeIndent) { + result.push(null); + ch = this.peek(); + continue; + } + } + const line = this.line; + this.composeNode(nodeIndent, CONTEXT_BLOCK_IN, false, true); + result.push(this.result); + this.skipSeparationSpace(true, -1); + ch = this.peek(); + if ((this.line === line || this.lineIndent > nodeIndent) && ch !== 0) { + throw this.#createError("Cannot read block sequence: bad indentation of a sequence entry"); + } else if (this.lineIndent < nodeIndent) { + break; + } + } + if (detected) { + this.tag = tag; + this.anchor = anchor; + this.kind = "sequence"; + this.result = result; + return true; + } + return false; + } + mergeMappings(destination, source, overridableKeys) { + if (!isObject(source)) { + throw this.#createError("Cannot merge mappings: the provided source object is unacceptable"); + } + for (const [key, value] of Object.entries(source)){ + if (Object.hasOwn(destination, key)) continue; + Object.defineProperty(destination, key, { + value, + writable: true, + enumerable: true, + configurable: true + }); + overridableKeys.add(key); + } + } + storeMappingPair(result, overridableKeys, keyTag, keyNode, valueNode, startLine, startPos) { + // The output is a plain object here, so keys can only be strings. + // We need to convert keyNode to a string, but doing so can hang the process + // (deeply nested arrays that explode exponentially using aliases). + if (Array.isArray(keyNode)) { + keyNode = Array.prototype.slice.call(keyNode); + for(let index = 0; index < keyNode.length; index++){ + if (Array.isArray(keyNode[index])) { + throw this.#createError("Cannot store mapping pair: nested arrays are not supported inside keys"); + } + if (typeof keyNode === "object" && isPlainObject(keyNode[index])) { + keyNode[index] = "[object Object]"; + } + } + } + // Avoid code execution in load() via toString property + // (still use its own toString for arrays, timestamps, + // and whatever user schema extensions happen to have @@toStringTag) + if (typeof keyNode === "object" && isPlainObject(keyNode)) { + keyNode = "[object Object]"; + } + keyNode = String(keyNode); + if (keyTag === "tag:yaml.org,2002:merge") { + if (Array.isArray(valueNode)) { + for(let index = 0; index < valueNode.length; index++){ + this.mergeMappings(result, valueNode[index], overridableKeys); + } + } else { + this.mergeMappings(result, valueNode, overridableKeys); + } + } else { + if (!this.allowDuplicateKeys && !overridableKeys.has(keyNode) && Object.hasOwn(result, keyNode)) { + this.line = startLine || this.line; + this.position = startPos || this.position; + throw this.#createError("Cannot store mapping pair: duplicated key"); + } + Object.defineProperty(result, keyNode, { + value: valueNode, + writable: true, + enumerable: true, + configurable: true + }); + overridableKeys.delete(keyNode); + } + return result; + } + readLineBreak() { + const ch = this.peek(); + if (ch === LINE_FEED) { + this.position++; + } else if (ch === CARRIAGE_RETURN) { + this.position++; + if (this.peek() === LINE_FEED) { + this.position++; + } + } else { + throw this.#createError("Cannot read line: line break not found"); + } + this.line += 1; + this.lineStart = this.position; + } + skipSeparationSpace(allowComments, checkIndent) { + let lineBreaks = 0; + let ch = this.peek(); + while(ch !== 0){ + this.skipWhitespaces(); + ch = this.peek(); + if (allowComments) { + this.skipComment(); + ch = this.peek(); + } + if (isEOL(ch)) { + this.readLineBreak(); + ch = this.peek(); + lineBreaks++; + this.lineIndent = 0; + this.readIndent(); + ch = this.peek(); + } else { + break; + } + } + if (checkIndent !== -1 && lineBreaks !== 0 && this.lineIndent < checkIndent) { + this.dispatchWarning("deficient indentation"); + } + return lineBreaks; + } + testDocumentSeparator() { + let ch = this.peek(); + // Condition this.position === this.lineStart is tested + // in parent on each call, for efficiency. No needs to test here again. + if ((ch === MINUS || ch === DOT) && ch === this.peek(1) && ch === this.peek(2)) { + ch = this.peek(3); + if (ch === 0 || isWhiteSpaceOrEOL(ch)) { + return true; + } + } + return false; + } + writeFoldedLines(count) { + if (count === 1) { + this.result += " "; + } else if (count > 1) { + this.result += "\n".repeat(count - 1); + } + } + readPlainScalar(nodeIndent, withinFlowCollection) { + const kind = this.kind; + const result = this.result; + let ch = this.peek(); + if (isWhiteSpaceOrEOL(ch) || isFlowIndicator(ch) || ch === SHARP || ch === AMPERSAND || ch === ASTERISK || ch === EXCLAMATION || ch === VERTICAL_LINE || ch === GREATER_THAN || ch === SINGLE_QUOTE || ch === DOUBLE_QUOTE || ch === PERCENT || ch === COMMERCIAL_AT || ch === GRAVE_ACCENT) { + return false; + } + let following; + if (ch === QUESTION || ch === MINUS) { + following = this.peek(1); + if (isWhiteSpaceOrEOL(following) || withinFlowCollection && isFlowIndicator(following)) { + return false; + } + } + this.kind = "scalar"; + this.result = ""; + let captureEnd = this.position; + let captureStart = this.position; + let hasPendingContent = false; + let line = 0; + while(ch !== 0){ + if (ch === COLON) { + following = this.peek(1); + if (isWhiteSpaceOrEOL(following) || withinFlowCollection && isFlowIndicator(following)) { + break; + } + } else if (ch === SHARP) { + const preceding = this.peek(-1); + if (isWhiteSpaceOrEOL(preceding)) { + break; + } + } else if (this.position === this.lineStart && this.testDocumentSeparator() || withinFlowCollection && isFlowIndicator(ch)) { + break; + } else if (isEOL(ch)) { + line = this.line; + const lineStart = this.lineStart; + const lineIndent = this.lineIndent; + this.skipSeparationSpace(false, -1); + if (this.lineIndent >= nodeIndent) { + hasPendingContent = true; + ch = this.peek(); + continue; + } else { + this.position = captureEnd; + this.line = line; + this.lineStart = lineStart; + this.lineIndent = lineIndent; + break; + } + } + if (hasPendingContent) { + this.captureSegment(captureStart, captureEnd, false); + this.writeFoldedLines(this.line - line); + captureStart = captureEnd = this.position; + hasPendingContent = false; + } + if (!isWhiteSpace(ch)) { + captureEnd = this.position + 1; + } + ch = this.next(); + } + this.captureSegment(captureStart, captureEnd, false); + if (this.result) { + return true; + } + this.kind = kind; + this.result = result; + return false; + } + readSingleQuotedScalar(nodeIndent) { + let ch = this.peek(); + if (ch !== SINGLE_QUOTE) { + return false; + } + this.kind = "scalar"; + this.result = ""; + this.position++; + let captureStart = this.position; + let captureEnd = this.position; + ch = this.peek(); + while(ch !== 0){ + if (ch === SINGLE_QUOTE) { + this.captureSegment(captureStart, this.position, true); + ch = this.next(); + if (ch === SINGLE_QUOTE) { + captureStart = this.position; + this.position++; + captureEnd = this.position; + } else { + return true; + } + } else if (isEOL(ch)) { + this.captureSegment(captureStart, captureEnd, true); + this.writeFoldedLines(this.skipSeparationSpace(false, nodeIndent)); + captureStart = captureEnd = this.position; + } else if (this.position === this.lineStart && this.testDocumentSeparator()) { + throw this.#createError("Unexpected end of the document within a single quoted scalar"); + } else { + this.position++; + captureEnd = this.position; + } + ch = this.peek(); + } + throw this.#createError("Unexpected end of the stream within a single quoted scalar"); + } + readDoubleQuotedScalar(nodeIndent) { + let ch = this.peek(); + if (ch !== DOUBLE_QUOTE) { + return false; + } + this.kind = "scalar"; + this.result = ""; + this.position++; + let captureEnd = this.position; + let captureStart = this.position; + let tmp; + ch = this.peek(); + while(ch !== 0){ + if (ch === DOUBLE_QUOTE) { + this.captureSegment(captureStart, this.position, true); + this.position++; + return true; + } + if (ch === BACKSLASH) { + this.captureSegment(captureStart, this.position, true); + ch = this.next(); + if (isEOL(ch)) { + this.skipSeparationSpace(false, nodeIndent); + } else if (ch < 256 && SIMPLE_ESCAPE_SEQUENCES.has(ch)) { + this.result += SIMPLE_ESCAPE_SEQUENCES.get(ch); + this.position++; + } else if ((tmp = ESCAPED_HEX_LENGTHS.get(ch) ?? 0) > 0) { + let hexLength = tmp; + let hexResult = 0; + for(; hexLength > 0; hexLength--){ + ch = this.next(); + if ((tmp = hexCharCodeToNumber(ch)) >= 0) { + hexResult = (hexResult << 4) + tmp; + } else { + throw this.#createError("Cannot read double quoted scalar: expected hexadecimal character"); + } + } + this.result += codepointToChar(hexResult); + this.position++; + } else { + throw this.#createError("Cannot read double quoted scalar: unknown escape sequence"); + } + captureStart = captureEnd = this.position; + } else if (isEOL(ch)) { + this.captureSegment(captureStart, captureEnd, true); + this.writeFoldedLines(this.skipSeparationSpace(false, nodeIndent)); + captureStart = captureEnd = this.position; + } else if (this.position === this.lineStart && this.testDocumentSeparator()) { + throw this.#createError("Unexpected end of the document within a double quoted scalar"); + } else { + this.position++; + captureEnd = this.position; + } + ch = this.peek(); + } + throw this.#createError("Unexpected end of the stream within a double quoted scalar"); + } + readFlowCollection(nodeIndent) { + let ch = this.peek(); + let terminator; + let isMapping = true; + let result = {}; + if (ch === LEFT_SQUARE_BRACKET) { + terminator = RIGHT_SQUARE_BRACKET; + isMapping = false; + result = []; + } else if (ch === LEFT_CURLY_BRACKET) { + terminator = RIGHT_CURLY_BRACKET; + } else { + return false; + } + if (this.anchor !== null && typeof this.anchor !== "undefined") { + this.anchorMap.set(this.anchor, result); + } + ch = this.next(); + const tag = this.tag; + const anchor = this.anchor; + let readNext = true; + let valueNode = null; + let keyNode = null; + let keyTag = null; + let isExplicitPair = false; + let isPair = false; + let following = 0; + let line = 0; + const overridableKeys = new Set(); + while(ch !== 0){ + this.skipSeparationSpace(true, nodeIndent); + ch = this.peek(); + if (ch === terminator) { + this.position++; + this.tag = tag; + this.anchor = anchor; + this.kind = isMapping ? "mapping" : "sequence"; + this.result = result; + return true; + } + if (!readNext) { + throw this.#createError("Cannot read flow collection: missing comma between flow collection entries"); + } + keyTag = keyNode = valueNode = null; + isPair = isExplicitPair = false; + if (ch === QUESTION) { + following = this.peek(1); + if (isWhiteSpaceOrEOL(following)) { + isPair = isExplicitPair = true; + this.position++; + this.skipSeparationSpace(true, nodeIndent); + } + } + line = this.line; + this.composeNode(nodeIndent, CONTEXT_FLOW_IN, false, true); + keyTag = this.tag || null; + keyNode = this.result; + this.skipSeparationSpace(true, nodeIndent); + ch = this.peek(); + if ((isExplicitPair || this.line === line) && ch === COLON) { + isPair = true; + ch = this.next(); + this.skipSeparationSpace(true, nodeIndent); + this.composeNode(nodeIndent, CONTEXT_FLOW_IN, false, true); + valueNode = this.result; + } + if (isMapping) { + this.storeMappingPair(result, overridableKeys, keyTag, keyNode, valueNode); + } else if (isPair) { + result.push(this.storeMappingPair({}, overridableKeys, keyTag, keyNode, valueNode)); + } else { + result.push(keyNode); + } + this.skipSeparationSpace(true, nodeIndent); + ch = this.peek(); + if (ch === COMMA) { + readNext = true; + ch = this.next(); + } else { + readNext = false; + } + } + throw this.#createError("Cannot read flow collection: unexpected end of the stream within a flow collection"); + } + // Handles block scaler styles: e.g. '|', '>', '|-' and '>-'. + // https://yaml.org/spec/1.2.2/#81-block-scalar-styles + readBlockScalar(nodeIndent) { + let chomping = CHOMPING_CLIP; + let didReadContent = false; + let detectedIndent = false; + let textIndent = nodeIndent; + let emptyLines = 0; + let atMoreIndented = false; + let ch = this.peek(); + let folding = false; + if (ch === VERTICAL_LINE) { + folding = false; + } else if (ch === GREATER_THAN) { + folding = true; + } else { + return false; + } + this.kind = "scalar"; + this.result = ""; + let tmp = 0; + while(ch !== 0){ + ch = this.next(); + if (ch === PLUS || ch === MINUS) { + if (CHOMPING_CLIP === chomping) { + chomping = ch === PLUS ? CHOMPING_KEEP : CHOMPING_STRIP; + } else { + throw this.#createError("Cannot read block: chomping mode identifier repeated"); + } + } else if ((tmp = decimalCharCodeToNumber(ch)) >= 0) { + if (tmp === 0) { + throw this.#createError("Cannot read block: indentation width must be greater than 0"); + } else if (!detectedIndent) { + textIndent = nodeIndent + tmp - 1; + detectedIndent = true; + } else { + throw this.#createError("Cannot read block: indentation width identifier repeated"); + } + } else { + break; + } + } + if (isWhiteSpace(ch)) { + this.skipWhitespaces(); + this.skipComment(); + ch = this.peek(); + } + while(ch !== 0){ + this.readLineBreak(); + this.lineIndent = 0; + ch = this.peek(); + while((!detectedIndent || this.lineIndent < textIndent) && ch === SPACE){ + this.lineIndent++; + ch = this.next(); + } + if (!detectedIndent && this.lineIndent > textIndent) { + textIndent = this.lineIndent; + } + if (isEOL(ch)) { + emptyLines++; + continue; + } + // End of the scalar. + if (this.lineIndent < textIndent) { + // Perform the chomping. + if (chomping === CHOMPING_KEEP) { + this.result += "\n".repeat(didReadContent ? 1 + emptyLines : emptyLines); + } else if (chomping === CHOMPING_CLIP) { + if (didReadContent) { + // i.e. only if the scalar is not empty. + this.result += "\n"; + } + } + break; + } + // Folded style: use fancy rules to handle line breaks. + if (folding) { + // Lines starting with white space characters (more-indented lines) are not folded. + if (isWhiteSpace(ch)) { + atMoreIndented = true; + // except for the first content line (cf. Example 8.1) + this.result += "\n".repeat(didReadContent ? 1 + emptyLines : emptyLines); + // End of more-indented block. + } else if (atMoreIndented) { + atMoreIndented = false; + this.result += "\n".repeat(emptyLines + 1); + // Just one line break - perceive as the same line. + } else if (emptyLines === 0) { + if (didReadContent) { + // i.e. only if we have already read some scalar content. + this.result += " "; + } + // Several line breaks - perceive as different lines. + } else { + this.result += "\n".repeat(emptyLines); + } + // Literal style: just add exact number of line breaks between content lines. + } else { + // Keep all line breaks except the header line break. + this.result += "\n".repeat(didReadContent ? 1 + emptyLines : emptyLines); + } + didReadContent = true; + detectedIndent = true; + emptyLines = 0; + const captureStart = this.position; + while(!isEOL(ch) && ch !== 0){ + ch = this.next(); + } + this.captureSegment(captureStart, this.position, false); + } + return true; + } + readBlockMapping(nodeIndent, flowIndent) { + const tag = this.tag; + const anchor = this.anchor; + const result = {}; + const overridableKeys = new Set(); + let allowCompact = false; + let line; + let pos; + let keyTag = null; + let keyNode = null; + let valueNode = null; + let atExplicitKey = false; + let detected = false; + if (this.anchor !== null && typeof this.anchor !== "undefined") { + this.anchorMap.set(this.anchor, result); + } + let ch = this.peek(); + while(ch !== 0){ + const following = this.peek(1); + line = this.line; // Save the current line. + pos = this.position; + // + // Explicit notation case. There are two separate blocks: + // first for the key (denoted by "?") and second for the value (denoted by ":") + // + if ((ch === QUESTION || ch === COLON) && isWhiteSpaceOrEOL(following)) { + if (ch === QUESTION) { + if (atExplicitKey) { + this.storeMappingPair(result, overridableKeys, keyTag, keyNode, null); + keyTag = null; + keyNode = null; + valueNode = null; + } + detected = true; + atExplicitKey = true; + allowCompact = true; + } else if (atExplicitKey) { + // i.e. 0x3A/* : */ === character after the explicit key. + atExplicitKey = false; + allowCompact = true; + } else { + throw this.#createError("Cannot read block as explicit mapping pair is incomplete: a key node is missed or followed by a non-tabulated empty line"); + } + this.position += 1; + ch = following; + // + // Implicit notation case. Flow-style node as the key first, then ":", and the value. + // + } else if (this.composeNode(flowIndent, CONTEXT_FLOW_OUT, false, true)) { + if (this.line === line) { + ch = this.peek(); + this.skipWhitespaces(); + ch = this.peek(); + if (ch === COLON) { + ch = this.next(); + if (!isWhiteSpaceOrEOL(ch)) { + throw this.#createError("Cannot read block: a whitespace character is expected after the key-value separator within a block mapping"); + } + if (atExplicitKey) { + this.storeMappingPair(result, overridableKeys, keyTag, keyNode, null); + keyTag = null; + keyNode = null; + valueNode = null; + } + detected = true; + atExplicitKey = false; + allowCompact = false; + keyTag = this.tag; + keyNode = this.result; + } else if (detected) { + throw this.#createError("Cannot read an implicit mapping pair: missing colon"); + } else { + this.tag = tag; + this.anchor = anchor; + return true; // Keep the result of `composeNode`. + } + } else if (detected) { + throw this.#createError("Cannot read a block mapping entry: a multiline key may not be an implicit key"); + } else { + this.tag = tag; + this.anchor = anchor; + return true; // Keep the result of `composeNode`. + } + } else { + break; // Reading is done. Go to the epilogue. + } + // + // Common reading code for both explicit and implicit notations. + // + if (this.line === line || this.lineIndent > nodeIndent) { + if (this.composeNode(nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { + if (atExplicitKey) { + keyNode = this.result; + } else { + valueNode = this.result; + } + } + if (!atExplicitKey) { + this.storeMappingPair(result, overridableKeys, keyTag, keyNode, valueNode, line, pos); + keyTag = keyNode = valueNode = null; + } + this.skipSeparationSpace(true, -1); + ch = this.peek(); + } + if (this.lineIndent > nodeIndent && ch !== 0) { + throw this.#createError("Cannot read block: bad indentation of a mapping entry"); + } else if (this.lineIndent < nodeIndent) { + break; + } + } + // + // Epilogue. + // + // Special case: last mapping's node contains only the key in explicit notation. + if (atExplicitKey) { + this.storeMappingPair(result, overridableKeys, keyTag, keyNode, null); + } + // Expose the resulting mapping. + if (detected) { + this.tag = tag; + this.anchor = anchor; + this.kind = "mapping"; + this.result = result; + } + return detected; + } + readTagProperty() { + let isVerbatim = false; + let isNamed = false; + let tagHandle = ""; + let tagName; + let ch = this.peek(); + if (ch !== EXCLAMATION) return false; + if (this.tag !== null) { + throw this.#createError("Cannot read tag property: duplication of a tag property"); + } + ch = this.next(); + if (ch === SMALLER_THAN) { + isVerbatim = true; + ch = this.next(); + } else if (ch === EXCLAMATION) { + isNamed = true; + tagHandle = "!!"; + ch = this.next(); + } else { + tagHandle = "!"; + } + let position = this.position; + if (isVerbatim) { + do { + ch = this.next(); + }while (ch !== 0 && ch !== GREATER_THAN) + if (this.position < this.length) { + tagName = this.input.slice(position, this.position); + ch = this.next(); + } else { + throw this.#createError("Cannot read tag property: unexpected end of stream"); + } + } else { + while(ch !== 0 && !isWhiteSpaceOrEOL(ch)){ + if (ch === EXCLAMATION) { + if (!isNamed) { + tagHandle = this.input.slice(position - 1, this.position + 1); + if (!PATTERN_TAG_HANDLE.test(tagHandle)) { + throw this.#createError("Cannot read tag property: named tag handle contains invalid characters"); + } + isNamed = true; + position = this.position + 1; + } else { + throw this.#createError("Cannot read tag property: tag suffix cannot contain an exclamation mark"); + } + } + ch = this.next(); + } + tagName = this.input.slice(position, this.position); + if (PATTERN_FLOW_INDICATORS.test(tagName)) { + throw this.#createError("Cannot read tag property: tag suffix cannot contain flow indicator characters"); + } + } + if (tagName && !PATTERN_TAG_URI.test(tagName)) { + throw this.#createError(`Cannot read tag property: invalid characters in tag name "${tagName}"`); + } + if (isVerbatim) { + this.tag = tagName; + } else if (this.tagMap.has(tagHandle)) { + this.tag = this.tagMap.get(tagHandle) + tagName; + } else if (tagHandle === "!") { + this.tag = `!${tagName}`; + } else if (tagHandle === "!!") { + this.tag = `tag:yaml.org,2002:${tagName}`; + } else { + throw this.#createError(`Cannot read tag property: undeclared tag handle "${tagHandle}"`); + } + return true; + } + readAnchorProperty() { + let ch = this.peek(); + if (ch !== AMPERSAND) return false; + if (this.anchor !== null) { + throw this.#createError("Cannot read anchor property: duplicate anchor property"); + } + ch = this.next(); + const position = this.position; + while(ch !== 0 && !isWhiteSpaceOrEOL(ch) && !isFlowIndicator(ch)){ + ch = this.next(); + } + if (this.position === position) { + throw this.#createError("Cannot read anchor property: name of an anchor node must contain at least one character"); + } + this.anchor = this.input.slice(position, this.position); + return true; + } + readAlias() { + if (this.peek() !== ASTERISK) return false; + let ch = this.next(); + const position = this.position; + while(ch !== 0 && !isWhiteSpaceOrEOL(ch) && !isFlowIndicator(ch)){ + ch = this.next(); + } + if (this.position === position) { + throw this.#createError("Cannot read alias: alias name must contain at least one character"); + } + const alias = this.input.slice(position, this.position); + if (!this.anchorMap.has(alias)) { + throw this.#createError(`Cannot read alias: unidentified alias "${alias}"`); + } + this.result = this.anchorMap.get(alias); + this.skipSeparationSpace(true, -1); + return true; + } + composeNode(parentIndent, nodeContext, allowToSeek, allowCompact) { + let indentStatus = 1; // 1: this>parent, 0: this=parent, -1: this<parent + let atNewLine = false; + let hasContent = false; + let type; + this.tag = null; + this.anchor = null; + this.kind = null; + this.result = null; + const allowBlockScalars = CONTEXT_BLOCK_OUT === nodeContext || CONTEXT_BLOCK_IN === nodeContext; + let allowBlockCollections = allowBlockScalars; + const allowBlockStyles = allowBlockScalars; + if (allowToSeek) { + if (this.skipSeparationSpace(true, -1)) { + atNewLine = true; + if (this.lineIndent > parentIndent) { + indentStatus = 1; + } else if (this.lineIndent === parentIndent) { + indentStatus = 0; + } else if (this.lineIndent < parentIndent) { + indentStatus = -1; + } + } + } + if (indentStatus === 1) { + while(this.readTagProperty() || this.readAnchorProperty()){ + if (this.skipSeparationSpace(true, -1)) { + atNewLine = true; + allowBlockCollections = allowBlockStyles; + if (this.lineIndent > parentIndent) { + indentStatus = 1; + } else if (this.lineIndent === parentIndent) { + indentStatus = 0; + } else if (this.lineIndent < parentIndent) { + indentStatus = -1; + } + } else { + allowBlockCollections = false; + } + } + } + if (allowBlockCollections) { + allowBlockCollections = atNewLine || allowCompact; + } + if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { + const cond = CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext; + const flowIndent = cond ? parentIndent : parentIndent + 1; + const blockIndent = this.position - this.lineStart; + if (indentStatus === 1) { + if (allowBlockCollections && (this.readBlockSequence(blockIndent) || this.readBlockMapping(blockIndent, flowIndent)) || this.readFlowCollection(flowIndent)) { + hasContent = true; + } else { + if (allowBlockScalars && this.readBlockScalar(flowIndent) || this.readSingleQuotedScalar(flowIndent) || this.readDoubleQuotedScalar(flowIndent)) { + hasContent = true; + } else if (this.readAlias()) { + hasContent = true; + if (this.tag !== null || this.anchor !== null) { + throw this.#createError("Cannot compose node: alias node should not have any properties"); + } + } else if (this.readPlainScalar(flowIndent, CONTEXT_FLOW_IN === nodeContext)) { + hasContent = true; + if (this.tag === null) { + this.tag = "?"; + } + } + if (this.anchor !== null) { + this.anchorMap.set(this.anchor, this.result); + } + } + } else if (indentStatus === 0) { + // Special case: block sequences are allowed to have same indentation level as the parent. + // http://www.yaml.org/spec/1.2/spec.html#id2799784 + hasContent = allowBlockCollections && this.readBlockSequence(blockIndent); + } + } + if (this.tag !== null && this.tag !== "!") { + if (this.tag === "?") { + for(let typeIndex = 0; typeIndex < this.implicitTypes.length; typeIndex++){ + type = this.implicitTypes[typeIndex]; + // Implicit resolving is not allowed for non-scalar types, and '?' + // non-specific tag is only assigned to plain scalars. So, it isn't + // needed to check for 'kind' conformity. + if (type.resolve(this.result)) { + // `state.result` updated in resolver if matched + this.result = type.construct(this.result); + this.tag = type.tag; + if (this.anchor !== null) { + this.anchorMap.set(this.anchor, this.result); + } + break; + } + } + } else if (this.typeMap[this.kind ?? "fallback"].has(this.tag)) { + const map = this.typeMap[this.kind ?? "fallback"]; + type = map.get(this.tag); + if (this.result !== null && type.kind !== this.kind) { + throw this.#createError(`Unacceptable node kind for !<${this.tag}> tag: it should be "${type.kind}", not "${this.kind}"`); + } + if (!type.resolve(this.result)) { + // `state.result` updated in resolver if matched + throw this.#createError(`Cannot resolve a node with !<${this.tag}> explicit tag`); + } else { + this.result = type.construct(this.result); + if (this.anchor !== null) { + this.anchorMap.set(this.anchor, this.result); + } + } + } else { + throw this.#createError(`Cannot resolve unknown tag !<${this.tag}>`); + } + } + return this.tag !== null || this.anchor !== null || hasContent; + } + readDocument() { + const documentStart = this.position; + let hasDirectives = false; + this.version = null; + this.checkLineBreaks = false; + this.tagMap = new Map(); + this.anchorMap = new Map(); + let ch = this.peek(); + while(ch !== 0){ + this.skipSeparationSpace(true, -1); + ch = this.peek(); + if (this.lineIndent > 0 || ch !== PERCENT) { + break; + } + hasDirectives = true; + ch = this.next(); + let position = this.position; + while(ch !== 0 && !isWhiteSpaceOrEOL(ch)){ + ch = this.next(); + } + const directiveName = this.input.slice(position, this.position); + const directiveArgs = []; + if (directiveName.length < 1) { + throw this.#createError("Cannot read document: directive name length must be greater than zero"); + } + while(ch !== 0){ + this.skipWhitespaces(); + this.skipComment(); + ch = this.peek(); + if (isEOL(ch)) break; + position = this.position; + while(ch !== 0 && !isWhiteSpaceOrEOL(ch)){ + ch = this.next(); + } + directiveArgs.push(this.input.slice(position, this.position)); + } + if (ch !== 0) this.readLineBreak(); + switch(directiveName){ + case "YAML": + this.yamlDirectiveHandler(...directiveArgs); + break; + case "TAG": + this.tagDirectiveHandler(...directiveArgs); + break; + default: + this.dispatchWarning(`unknown document directive "${directiveName}"`); + break; + } + ch = this.peek(); + } + this.skipSeparationSpace(true, -1); + if (this.lineIndent === 0 && this.peek() === MINUS && this.peek(1) === MINUS && this.peek(2) === MINUS) { + this.position += 3; + this.skipSeparationSpace(true, -1); + } else if (hasDirectives) { + throw this.#createError("Cannot read document: directives end mark is expected"); + } + this.composeNode(this.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); + this.skipSeparationSpace(true, -1); + if (this.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(this.input.slice(documentStart, this.position))) { + this.dispatchWarning("non-ASCII line breaks are interpreted as content"); + } + if (this.position === this.lineStart && this.testDocumentSeparator()) { + if (this.peek() === DOT) { + this.position += 3; + this.skipSeparationSpace(true, -1); + } + } else if (this.position < this.length - 1) { + throw this.#createError("Cannot read document: end of the stream or a document separator is expected"); + } + return this.result; + } + *readDocuments() { + while(this.position < this.length - 1){ + yield this.readDocument(); + } + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQveWFtbC8xLjAuNi9fbG9hZGVyX3N0YXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFBvcnRlZCBmcm9tIGpzLXlhbWwgdjMuMTMuMTpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvanMteWFtbC9jb21taXQvNjY1YWFkZGE0MjM0OWRjYWU4NjlmMTIwNDBkOWIxMGVmMThkMTJkYVxuLy8gQ29weXJpZ2h0IDIwMTEtMjAxNSBieSBWaXRhbHkgUHV6cmluLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG5cbmltcG9ydCB7XG4gIEFNUEVSU0FORCxcbiAgQVNURVJJU0ssXG4gIEJBQ0tTTEFTSCxcbiAgQ0FSUklBR0VfUkVUVVJOLFxuICBDT0xPTixcbiAgQ09NTUEsXG4gIENPTU1FUkNJQUxfQVQsXG4gIERPVCxcbiAgRE9VQkxFX1FVT1RFLFxuICBFWENMQU1BVElPTixcbiAgR1JBVkVfQUNDRU5ULFxuICBHUkVBVEVSX1RIQU4sXG4gIGlzRU9MLFxuICBpc0Zsb3dJbmRpY2F0b3IsXG4gIGlzV2hpdGVTcGFjZSxcbiAgaXNXaGl0ZVNwYWNlT3JFT0wsXG4gIExFRlRfQ1VSTFlfQlJBQ0tFVCxcbiAgTEVGVF9TUVVBUkVfQlJBQ0tFVCxcbiAgTElORV9GRUVELFxuICBNSU5VUyxcbiAgUEVSQ0VOVCxcbiAgUExVUyxcbiAgUVVFU1RJT04sXG4gIFJJR0hUX0NVUkxZX0JSQUNLRVQsXG4gIFJJR0hUX1NRVUFSRV9CUkFDS0VULFxuICBTSEFSUCxcbiAgU0lOR0xFX1FVT1RFLFxuICBTTUFMTEVSX1RIQU4sXG4gIFNQQUNFLFxuICBWRVJUSUNBTF9MSU5FLFxufSBmcm9tIFwiLi9fY2hhcnMudHNcIjtcblxuaW1wb3J0IHsgREVGQVVMVF9TQ0hFTUEsIHR5cGUgU2NoZW1hLCB0eXBlIFR5cGVNYXAgfSBmcm9tIFwiLi9fc2NoZW1hLnRzXCI7XG5pbXBvcnQgdHlwZSB7IEtpbmRUeXBlLCBUeXBlIH0gZnJvbSBcIi4vX3R5cGUudHNcIjtcbmltcG9ydCB7IGlzT2JqZWN0LCBpc1BsYWluT2JqZWN0IH0gZnJvbSBcIi4vX3V0aWxzLnRzXCI7XG5cbmNvbnN0IENPTlRFWFRfRkxPV19JTiA9IDE7XG5jb25zdCBDT05URVhUX0ZMT1dfT1VUID0gMjtcbmNvbnN0IENPTlRFWFRfQkxPQ0tfSU4gPSAzO1xuY29uc3QgQ09OVEVYVF9CTE9DS19PVVQgPSA0O1xuXG5jb25zdCBDSE9NUElOR19DTElQID0gMTtcbmNvbnN0IENIT01QSU5HX1NUUklQID0gMjtcbmNvbnN0IENIT01QSU5HX0tFRVAgPSAzO1xuXG5jb25zdCBQQVRURVJOX05PTl9QUklOVEFCTEUgPVxuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWNvbnRyb2wtcmVnZXhcbiAgL1tcXHgwMC1cXHgwOFxceDBCXFx4MENcXHgwRS1cXHgxRlxceDdGLVxceDg0XFx4ODYtXFx4OUZcXHVGRkZFXFx1RkZGRl18W1xcdUQ4MDAtXFx1REJGRl0oPyFbXFx1REMwMC1cXHVERkZGXSl8KD86W15cXHVEODAwLVxcdURCRkZdfF4pW1xcdURDMDAtXFx1REZGRl0vO1xuY29uc3QgUEFUVEVSTl9OT05fQVNDSUlfTElORV9CUkVBS1MgPSAvW1xceDg1XFx1MjAyOFxcdTIwMjldLztcbmNvbnN0IFBBVFRFUk5fRkxPV19JTkRJQ0FUT1JTID0gL1ssXFxbXFxdXFx7XFx9XS87XG5jb25zdCBQQVRURVJOX1RBR19IQU5ETEUgPSAvXig/OiF8ISF8IVthLXpcXC1dKyEpJC9pO1xuY29uc3QgUEFUVEVSTl9UQUdfVVJJID1cbiAgL14oPzohfFteLFxcW1xcXVxce1xcfV0pKD86JVswLTlhLWZdezJ9fFswLTlhLXpcXC0jO1xcL1xcPzpAJj1cXCtcXCQsX1xcLiF+XFwqJ1xcKFxcKVxcW1xcXV0pKiQvaTtcblxuZXhwb3J0IGludGVyZmFjZSBMb2FkZXJTdGF0ZU9wdGlvbnMge1xuICAvKiogc3BlY2lmaWVzIGEgc2NoZW1hIHRvIHVzZS4gKi9cbiAgc2NoZW1hPzogU2NoZW1hO1xuICAvKiogY29tcGF0aWJpbGl0eSB3aXRoIEpTT04ucGFyc2UgYmVoYXZpb3VyLiAqL1xuICBhbGxvd0R1cGxpY2F0ZUtleXM/OiBib29sZWFuO1xuICAvKiogZnVuY3Rpb24gdG8gY2FsbCBvbiB3YXJuaW5nIG1lc3NhZ2VzLiAqL1xuICBvbldhcm5pbmc/KGVycm9yOiBFcnJvcik6IHZvaWQ7XG59XG5cbmNvbnN0IEVTQ0FQRURfSEVYX0xFTkdUSFMgPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPihbXG4gIFsweDc4LCAyXSwgLy8geFxuICBbMHg3NSwgNF0sIC8vIHVcbiAgWzB4NTUsIDhdLCAvLyBVXG5dKTtcblxuY29uc3QgU0lNUExFX0VTQ0FQRV9TRVFVRU5DRVMgPSBuZXcgTWFwPG51bWJlciwgc3RyaW5nPihbXG4gIFsweDMwLCBcIlxceDAwXCJdLCAvLyAwXG4gIFsweDYxLCBcIlxceDA3XCJdLCAvLyBhXG4gIFsweDYyLCBcIlxceDA4XCJdLCAvLyBiXG4gIFsweDc0LCBcIlxceDA5XCJdLCAvLyB0XG4gIFsweDA5LCBcIlxceDA5XCJdLCAvLyBUYWJcbiAgWzB4NmUsIFwiXFx4MEFcIl0sIC8vIG5cbiAgWzB4NzYsIFwiXFx4MEJcIl0sIC8vIHZcbiAgWzB4NjYsIFwiXFx4MENcIl0sIC8vIGZcbiAgWzB4NzIsIFwiXFx4MERcIl0sIC8vIHJcbiAgWzB4NjUsIFwiXFx4MUJcIl0sIC8vIGVcbiAgWzB4MjAsIFwiIFwiXSwgLy8gU3BhY2VcbiAgWzB4MjIsICdcIiddLCAvLyBcIlxuICBbMHgyZiwgXCIvXCJdLCAvLyAvXG4gIFsweDVjLCBcIlxcXFxcIl0sIC8vIFxcXG4gIFsweDRlLCBcIlxceDg1XCJdLCAvLyBOXG4gIFsweDVmLCBcIlxceEEwXCJdLCAvLyBfXG4gIFsweDRjLCBcIlxcdTIwMjhcIl0sIC8vIExcbiAgWzB4NTAsIFwiXFx1MjAyOVwiXSwgLy8gUFxuXSk7XG5cbi8qKlxuICogQ29udmVydHMgYSBoZXhhZGVjaW1hbCBjaGFyYWN0ZXIgY29kZSB0byBpdHMgZGVjaW1hbCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gaGV4Q2hhckNvZGVUb051bWJlcihjaGFyQ29kZTogbnVtYmVyKSB7XG4gIC8vIENoZWNrIGlmIHRoZSBjaGFyYWN0ZXIgY29kZSBpcyBpbiB0aGUgcmFuZ2UgZm9yICcwJyB0byAnOSdcbiAgaWYgKDB4MzAgPD0gY2hhckNvZGUgJiYgY2hhckNvZGUgPD0gMHgzOSkgcmV0dXJuIGNoYXJDb2RlIC0gMHgzMDsgLy8gQ29udmVydCAnMCctJzknIHRvIDAtOVxuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgY2hhcmFjdGVyIGNvZGUgdG8gbG93ZXJjYXNlIGlmIGl0J3MgYSBsZXR0ZXJcbiAgY29uc3QgbGMgPSBjaGFyQ29kZSB8IDB4MjA7XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIGNoYXJhY3RlciBjb2RlIGlzIGluIHRoZSByYW5nZSBmb3IgJ2EnIHRvICdmJ1xuICBpZiAoMHg2MSA8PSBsYyAmJiBsYyA8PSAweDY2KSByZXR1cm4gbGMgLSAweDYxICsgMTA7IC8vIENvbnZlcnQgJ2EnLSdmJyB0byAxMC0xNVxuXG4gIHJldHVybiAtMTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGRlY2ltYWwgY2hhcmFjdGVyIGNvZGUgdG8gaXRzIGRlY2ltYWwgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGRlY2ltYWxDaGFyQ29kZVRvTnVtYmVyKGNoYXJDb2RlOiBudW1iZXIpOiBudW1iZXIge1xuICAvLyBDaGVjayBpZiB0aGUgY2hhcmFjdGVyIGNvZGUgaXMgaW4gdGhlIHJhbmdlIGZvciAnMCcgdG8gJzknXG4gIGlmICgweDMwIDw9IGNoYXJDb2RlICYmIGNoYXJDb2RlIDw9IDB4MzkpIHJldHVybiBjaGFyQ29kZSAtIDB4MzA7IC8vIENvbnZlcnQgJzAnLSc5JyB0byAwLTlcbiAgcmV0dXJuIC0xO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgVW5pY29kZSBjb2RlIHBvaW50IHRvIGEgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBjb2RlcG9pbnRUb0NoYXIoY29kZXBvaW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAvLyBDaGVjayBpZiB0aGUgY29kZSBwb2ludCBpcyB3aXRoaW4gdGhlIEJhc2ljIE11bHRpbGluZ3VhbCBQbGFuZSAoQk1QKVxuICBpZiAoY29kZXBvaW50IDw9IDB4ZmZmZikgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZXBvaW50KTsgLy8gQ29udmVydCBCTVAgY29kZSBwb2ludCB0byBjaGFyYWN0ZXJcblxuICAvLyBFbmNvZGUgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyIGZvciBjb2RlIHBvaW50cyBiZXlvbmQgQk1QXG4gIC8vIFJlZmVyZW5jZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVVRGLTE2I0NvZGVfcG9pbnRzX1UuMkIwMTAwMDBfdG9fVS4yQjEwRkZGRlxuICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShcbiAgICAoKGNvZGVwb2ludCAtIDB4MDEwMDAwKSA+PiAxMCkgKyAweGQ4MDAsIC8vIEhpZ2ggc3Vycm9nYXRlXG4gICAgKChjb2RlcG9pbnQgLSAweDAxMDAwMCkgJiAweDAzZmYpICsgMHhkYzAwLCAvLyBMb3cgc3Vycm9nYXRlXG4gICk7XG59XG5cbmNvbnN0IElOREVOVCA9IDQ7XG5jb25zdCBNQVhfTEVOR1RIID0gNzU7XG5jb25zdCBERUxJTUlURVJTID0gXCJcXHgwMFxcclxcblxceDg1XFx1MjAyOFxcdTIwMjlcIjtcblxuZnVuY3Rpb24gZ2V0U25pcHBldChidWZmZXI6IHN0cmluZywgcG9zaXRpb246IG51bWJlcik6IHN0cmluZyB8IG51bGwge1xuICBpZiAoIWJ1ZmZlcikgcmV0dXJuIG51bGw7XG4gIGxldCBzdGFydCA9IHBvc2l0aW9uO1xuICBsZXQgZW5kID0gcG9zaXRpb247XG4gIGxldCBoZWFkID0gXCJcIjtcbiAgbGV0IHRhaWwgPSBcIlwiO1xuXG4gIHdoaWxlIChzdGFydCA+IDAgJiYgIURFTElNSVRFUlMuaW5jbHVkZXMoYnVmZmVyLmNoYXJBdChzdGFydCAtIDEpKSkge1xuICAgIHN0YXJ0LS07XG4gICAgaWYgKHBvc2l0aW9uIC0gc3RhcnQgPiBNQVhfTEVOR1RIIC8gMiAtIDEpIHtcbiAgICAgIGhlYWQgPSBcIiAuLi4gXCI7XG4gICAgICBzdGFydCArPSA1O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgd2hpbGUgKGVuZCA8IGJ1ZmZlci5sZW5ndGggJiYgIURFTElNSVRFUlMuaW5jbHVkZXMoYnVmZmVyLmNoYXJBdChlbmQpKSkge1xuICAgIGVuZCsrO1xuICAgIGlmIChlbmQgLSBwb3NpdGlvbiA+IE1BWF9MRU5HVEggLyAyIC0gMSkge1xuICAgICAgdGFpbCA9IFwiIC4uLiBcIjtcbiAgICAgIGVuZCAtPSA1O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc25pcHBldCA9IGJ1ZmZlci5zbGljZShzdGFydCwgZW5kKTtcbiAgY29uc3QgaW5kZW50ID0gXCIgXCIucmVwZWF0KElOREVOVCk7XG4gIGNvbnN0IGNhcmV0SW5kZW50ID0gXCIgXCIucmVwZWF0KElOREVOVCArIHBvc2l0aW9uIC0gc3RhcnQgKyBoZWFkLmxlbmd0aCk7XG4gIHJldHVybiBgJHtpbmRlbnQgKyBoZWFkICsgc25pcHBldCArIHRhaWx9XFxuJHtjYXJldEluZGVudH1eYDtcbn1cblxuZnVuY3Rpb24gbWFya1RvU3RyaW5nKFxuICBidWZmZXI6IHN0cmluZyxcbiAgcG9zaXRpb246IG51bWJlcixcbiAgbGluZTogbnVtYmVyLFxuICBjb2x1bW46IG51bWJlcixcbik6IHN0cmluZyB7XG4gIGxldCB3aGVyZSA9IGBhdCBsaW5lICR7bGluZSArIDF9LCBjb2x1bW4gJHtjb2x1bW4gKyAxfWA7XG4gIGNvbnN0IHNuaXBwZXQgPSBnZXRTbmlwcGV0KGJ1ZmZlciwgcG9zaXRpb24pO1xuICBpZiAoc25pcHBldCkgd2hlcmUgKz0gYDpcXG4ke3NuaXBwZXR9YDtcbiAgcmV0dXJuIHdoZXJlO1xufVxuXG5leHBvcnQgY2xhc3MgTG9hZGVyU3RhdGUge1xuICBpbnB1dDogc3RyaW5nO1xuICBsZW5ndGg6IG51bWJlcjtcbiAgbGluZUluZGVudCA9IDA7XG4gIGxpbmVTdGFydCA9IDA7XG4gIHBvc2l0aW9uID0gMDtcbiAgbGluZSA9IDA7XG4gIG9uV2FybmluZzogKChlcnJvcjogRXJyb3IpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICBhbGxvd0R1cGxpY2F0ZUtleXM6IGJvb2xlYW47XG4gIGltcGxpY2l0VHlwZXM6IFR5cGU8XCJzY2FsYXJcIj5bXTtcbiAgdHlwZU1hcDogVHlwZU1hcDtcblxuICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICBjaGVja0xpbmVCcmVha3MgPSBmYWxzZTtcbiAgdGFnTWFwID0gbmV3IE1hcCgpO1xuICBhbmNob3JNYXAgPSBuZXcgTWFwKCk7XG4gIHRhZzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgYW5jaG9yOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBraW5kOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICByZXN1bHQ6IHVua25vd25bXSB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgc3RyaW5nIHwgbnVsbCA9IFwiXCI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgaW5wdXQ6IHN0cmluZyxcbiAgICB7XG4gICAgICBzY2hlbWEgPSBERUZBVUxUX1NDSEVNQSxcbiAgICAgIG9uV2FybmluZyxcbiAgICAgIGFsbG93RHVwbGljYXRlS2V5cyA9IGZhbHNlLFxuICAgIH06IExvYWRlclN0YXRlT3B0aW9ucyxcbiAgKSB7XG4gICAgdGhpcy5pbnB1dCA9IGlucHV0O1xuICAgIHRoaXMub25XYXJuaW5nID0gb25XYXJuaW5nO1xuICAgIHRoaXMuYWxsb3dEdXBsaWNhdGVLZXlzID0gYWxsb3dEdXBsaWNhdGVLZXlzO1xuICAgIHRoaXMuaW1wbGljaXRUeXBlcyA9IHNjaGVtYS5pbXBsaWNpdFR5cGVzO1xuICAgIHRoaXMudHlwZU1hcCA9IHNjaGVtYS50eXBlTWFwO1xuICAgIHRoaXMubGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuICAgIHRoaXMudmVyc2lvbiA9IG51bGw7XG5cbiAgICB0aGlzLnJlYWRJbmRlbnQoKTtcbiAgfVxuXG4gIHNraXBXaGl0ZXNwYWNlcygpIHtcbiAgICBsZXQgY2ggPSB0aGlzLnBlZWsoKTtcbiAgICB3aGlsZSAoaXNXaGl0ZVNwYWNlKGNoKSkge1xuICAgICAgY2ggPSB0aGlzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBza2lwQ29tbWVudCgpIHtcbiAgICBsZXQgY2ggPSB0aGlzLnBlZWsoKTtcbiAgICBpZiAoY2ggIT09IFNIQVJQKSByZXR1cm47XG4gICAgY2ggPSB0aGlzLm5leHQoKTtcbiAgICB3aGlsZSAoY2ggIT09IDAgJiYgIWlzRU9MKGNoKSkge1xuICAgICAgY2ggPSB0aGlzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICByZWFkSW5kZW50KCkge1xuICAgIGxldCBjaGFyID0gdGhpcy5wZWVrKCk7XG4gICAgd2hpbGUgKGNoYXIgPT09IFNQQUNFKSB7XG4gICAgICB0aGlzLmxpbmVJbmRlbnQgKz0gMTtcbiAgICAgIGNoYXIgPSB0aGlzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBwZWVrKG9mZnNldCA9IDApIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dC5jaGFyQ29kZUF0KHRoaXMucG9zaXRpb24gKyBvZmZzZXQpO1xuICB9XG4gIG5leHQoKSB7XG4gICAgdGhpcy5wb3NpdGlvbiArPSAxO1xuICAgIHJldHVybiB0aGlzLnBlZWsoKTtcbiAgfVxuXG4gICNjcmVhdGVFcnJvcihtZXNzYWdlOiBzdHJpbmcpOiBTeW50YXhFcnJvciB7XG4gICAgY29uc3QgbWFyayA9IG1hcmtUb1N0cmluZyhcbiAgICAgIHRoaXMuaW5wdXQsXG4gICAgICB0aGlzLnBvc2l0aW9uLFxuICAgICAgdGhpcy5saW5lLFxuICAgICAgdGhpcy5wb3NpdGlvbiAtIHRoaXMubGluZVN0YXJ0LFxuICAgICk7XG4gICAgcmV0dXJuIG5ldyBTeW50YXhFcnJvcihgJHttZXNzYWdlfSAke21hcmt9YCk7XG4gIH1cblxuICBkaXNwYXRjaFdhcm5pbmcobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgY29uc3QgZXJyb3IgPSB0aGlzLiNjcmVhdGVFcnJvcihtZXNzYWdlKTtcbiAgICB0aGlzLm9uV2FybmluZz8uKGVycm9yKTtcbiAgfVxuXG4gIHlhbWxEaXJlY3RpdmVIYW5kbGVyKC4uLmFyZ3M6IHN0cmluZ1tdKSB7XG4gICAgaWYgKHRoaXMudmVyc2lvbiAhPT0gbnVsbCkge1xuICAgICAgdGhyb3cgdGhpcy4jY3JlYXRlRXJyb3IoXG4gICAgICAgIFwiQ2Fubm90IGhhbmRsZSBZQU1MIGRpcmVjdGl2ZTogZHVwbGljYXRpb24gb2YgJVlBTUwgZGlyZWN0aXZlXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChhcmdzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3cgdGhpcy4jY3JlYXRlRXJyb3IoXG4gICAgICAgIFwiQ2Fubm90IGhhbmRsZSBZQU1MIGRpcmVjdGl2ZTogWUFNTCBkaXJlY3RpdmUgYWNjZXB0cyBleGFjdGx5IG9uZSBhcmd1bWVudFwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBtYXRjaCA9IC9eKFswLTldKylcXC4oWzAtOV0rKSQvLmV4ZWMoYXJnc1swXSEpO1xuICAgIGlmIChtYXRjaCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgdGhpcy4jY3JlYXRlRXJyb3IoXG4gICAgICAgIFwiQ2Fubm90IGhhbmRsZSBZQU1MIGRpcmVjdGl2ZTogaWxsLWZvcm1lZCBhcmd1bWVudFwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBtYWpvciA9IHBhcnNlSW50KG1hdGNoWzFdISwgMTApO1xuICAgIGNvbnN0IG1pbm9yID0gcGFyc2VJbnQobWF0Y2hbMl0hLCAxMCk7XG4gICAgaWYgKG1ham9yICE9PSAxKSB7XG4gICAgICB0aHJvdyB0aGlzLiNjcmVhdGVFcnJvcihcbiAgICAgICAgXCJDYW5ub3QgaGFuZGxlIFlBTUwgZGlyZWN0aXZlOiB1bmFjY2VwdGFibGUgWUFNTCB2ZXJzaW9uXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMudmVyc2lvbiA9IGFyZ3NbMF0gPz8gbnVsbDtcbiAgICB0aGlzLmNoZWNrTGluZUJyZWFrcyA9IG1pbm9yIDwgMjtcbiAgICBpZiAobWlub3IgIT09IDEgJiYgbWlub3IgIT09IDIpIHtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoV2FybmluZyhcbiAgICAgICAgXCJDYW5ub3QgaGFuZGxlIFlBTUwgZGlyZWN0aXZlOiB1bnN1cHBvcnRlZCBZQU1MIHZlcnNpb25cIixcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHRhZ0RpcmVjdGl2ZUhhbmRsZXIoLi4uYXJnczogc3RyaW5nW10pIHtcbiAgICBpZiAoYXJncy5sZW5ndGggIT09IDIpIHtcbiAgICAgIHRocm93IHRoaXMuI2NyZWF0ZUVycm9yKFxuICAgICAgICBgQ2Fubm90IGhhbmRsZSB0YWcgZGlyZWN0aXZlOiBkaXJlY3RpdmUgYWNjZXB0cyBleGFjdGx5IHR3byBhcmd1bWVudHMsIHJlY2VpdmVkICR7YXJncy5sZW5ndGh9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlID0gYXJnc1swXSE7XG4gICAgY29uc3QgcHJlZml4ID0gYXJnc1sxXSE7XG5cbiAgICBpZiAoIVBBVFRFUk5fVEFHX0hBTkRMRS50ZXN0KGhhbmRsZSkpIHtcbiAgICAgIHRocm93IHRoaXMuI2NyZWF0ZUVycm9yKFxuICAgICAgICBgQ2Fubm90IGhhbmRsZSB0YWcgZGlyZWN0aXZlOiBpbGwtZm9ybWVkIGhhbmRsZSAoZmlyc3QgYXJndW1lbnQpIGluIFwiJHtoYW5kbGV9XCJgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YWdNYXAuaGFzKGhhbmRsZSkpIHtcbiAgICAgIHRocm93IHRoaXMuI2NyZWF0ZUVycm9yKFxuICAgICAgICBgQ2Fubm90IGhhbmRsZSB0YWcgZGlyZWN0aXZlOiBwcmV2aW91c2x5IGRlY2xhcmVkIHN1ZmZpeCBmb3IgXCIke2hhbmRsZX1cIiB0YWcgaGFuZGxlYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCFQQVRURVJOX1RBR19VUkkudGVzdChwcmVmaXgpKSB7XG4gICAgICB0aHJvdyB0aGlzLiNjcmVhdGVFcnJvcihcbiAgICAgICAgXCJDYW5ub3QgaGFuZGxlIHRhZyBkaXJlY3RpdmU6IGlsbC1mb3JtZWQgdGFnIHByZWZpeCAoc2Vjb25kIGFyZ3VtZW50KSBvZiB0aGUgVEFHIGRpcmVjdGl2ZVwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnRhZ01hcC5zZXQoaGFuZGxlLCBwcmVmaXgpO1xuICB9XG4gIGNhcHR1cmVTZWdtZW50KHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyLCBjaGVja0pzb246IGJvb2xlYW4pIHtcbiAgICBpZiAoc3RhcnQgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuaW5wdXQuc2xpY2Uoc3RhcnQsIGVuZCk7XG5cbiAgICAgIGlmIChjaGVja0pzb24pIHtcbiAgICAgICAgZm9yIChcbiAgICAgICAgICBsZXQgcG9zaXRpb24gPSAwO1xuICAgICAgICAgIHBvc2l0aW9uIDwgcmVzdWx0Lmxlbmd0aDtcbiAgICAgICAgICBwb3NpdGlvbisrXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGNoYXJhY3RlciA9IHJlc3VsdC5jaGFyQ29kZUF0KHBvc2l0aW9uKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAhKGNoYXJhY3RlciA9PT0gMHgwOSB8fFxuICAgICAgICAgICAgICAoMHgyMCA8PSBjaGFyYWN0ZXIgJiYgY2hhcmFjdGVyIDw9IDB4MTBmZmZmKSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMuI2NyZWF0ZUVycm9yKFxuICAgICAgICAgICAgICBgRXhwZWN0ZWQgdmFsaWQgSlNPTiBjaGFyYWN0ZXI6IHJlY2VpdmVkIFwiJHtjaGFyYWN0ZXJ9XCJgLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoUEFUVEVSTl9OT05fUFJJTlRBQkxFLnRlc3QocmVzdWx0KSkge1xuICAgICAgICB0aHJvdyB0aGlzLiNjcmVhdGVFcnJvcihcIlN0cmVhbSBjb250YWlucyBub24tcHJpbnRhYmxlIGNoYXJhY3RlcnNcIik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVzdWx0ICs9IHJlc3VsdDtcbiAgICB9XG4gIH1cbiAgcmVhZEJsb2NrU2VxdWVuY2Uobm9kZUluZGVudDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgbGV0IGRldGVjdGVkID0gZmFsc2U7XG5cbiAgICBjb25zdCB0YWcgPSB0aGlzLnRhZztcbiAgICBjb25zdCBhbmNob3IgPSB0aGlzLmFuY2hvcjtcbiAgICBjb25zdCByZXN1bHQ6IHVua25vd25bXSA9IFtdO1xuXG4gICAgaWYgKHRoaXMuYW5jaG9yICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLmFuY2hvciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgdGhpcy5hbmNob3JNYXAuc2V0KHRoaXMuYW5jaG9yLCByZXN1bHQpO1xuICAgIH1cblxuICAgIGxldCBjaCA9IHRoaXMucGVlaygpO1xuXG4gICAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgICBpZiAoY2ggIT09IE1JTlVTKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmb2xsb3dpbmcgPSB0aGlzLnBlZWsoMSk7XG5cbiAgICAgIGlmICghaXNXaGl0ZVNwYWNlT3JFT0woZm9sbG93aW5nKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgZGV0ZWN0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5wb3NpdGlvbisrO1xuXG4gICAgICBpZiAodGhpcy5za2lwU2VwYXJhdGlvblNwYWNlKHRydWUsIC0xKSkge1xuICAgICAgICBpZiAodGhpcy5saW5lSW5kZW50IDw9IG5vZGVJbmRlbnQpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChudWxsKTtcbiAgICAgICAgICBjaCA9IHRoaXMucGVlaygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxpbmUgPSB0aGlzLmxpbmU7XG4gICAgICB0aGlzLmNvbXBvc2VOb2RlKG5vZGVJbmRlbnQsIENPTlRFWFRfQkxPQ0tfSU4sIGZhbHNlLCB0cnVlKTtcbiAgICAgIHJlc3VsdC5wdXNoKHRoaXMucmVzdWx0KTtcbiAgICAgIHRoaXMuc2tpcFNlcGFyYXRpb25TcGFjZSh0cnVlLCAtMSk7XG5cbiAgICAgIGNoID0gdGhpcy5wZWVrKCk7XG5cbiAgICAgIGlmICgodGhpcy5saW5lID09PSBsaW5lIHx8IHRoaXMubGluZUluZGVudCA+IG5vZGVJbmRlbnQpICYmIGNoICE9PSAwKSB7XG4gICAgICAgIHRocm93IHRoaXMuI2NyZWF0ZUVycm9yKFxuICAgICAgICAgIFwiQ2Fubm90IHJlYWQgYmxvY2sgc2VxdWVuY2U6IGJhZCBpbmRlbnRhdGlvbiBvZiBhIHNlcXVlbmNlIGVudHJ5XCIsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubGluZUluZGVudCA8IG5vZGVJbmRlbnQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRldGVjdGVkKSB7XG4gICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgIHRoaXMuYW5jaG9yID0gYW5jaG9yO1xuICAgICAgdGhpcy5raW5kID0gXCJzZXF1ZW5jZVwiO1xuICAgICAgdGhpcy5yZXN1bHQgPSByZXN1bHQ7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIG1lcmdlTWFwcGluZ3MoXG4gICAgZGVzdGluYXRpb246IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHNvdXJjZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgb3ZlcnJpZGFibGVLZXlzOiBTZXQ8c3RyaW5nPixcbiAgKSB7XG4gICAgaWYgKCFpc09iamVjdChzb3VyY2UpKSB7XG4gICAgICB0aHJvdyB0aGlzLiNjcmVhdGVFcnJvcihcbiAgICAgICAgXCJDYW5ub3QgbWVyZ2UgbWFwcGluZ3M6IHRoZSBwcm92aWRlZCBzb3VyY2Ugb2JqZWN0IGlzIHVuYWNjZXB0YWJsZVwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhzb3VyY2UpKSB7XG4gICAgICBpZiAoT2JqZWN0Lmhhc093bihkZXN0aW5hdGlvbiwga2V5KSkgY29udGludWU7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGVzdGluYXRpb24sIGtleSwge1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgb3ZlcnJpZGFibGVLZXlzLmFkZChrZXkpO1xuICAgIH1cbiAgfVxuICBzdG9yZU1hcHBpbmdQYWlyKFxuICAgIHJlc3VsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgb3ZlcnJpZGFibGVLZXlzOiBTZXQ8c3RyaW5nPixcbiAgICBrZXlUYWc6IHN0cmluZyB8IG51bGwsXG4gICAga2V5Tm9kZTogUmVjb3JkPFByb3BlcnR5S2V5LCB1bmtub3duPiB8IHVua25vd25bXSB8IHN0cmluZyB8IG51bGwsXG4gICAgdmFsdWVOb2RlOiB1bmtub3duLFxuICAgIHN0YXJ0TGluZT86IG51bWJlcixcbiAgICBzdGFydFBvcz86IG51bWJlcixcbiAgKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIC8vIFRoZSBvdXRwdXQgaXMgYSBwbGFpbiBvYmplY3QgaGVyZSwgc28ga2V5cyBjYW4gb25seSBiZSBzdHJpbmdzLlxuICAgIC8vIFdlIG5lZWQgdG8gY29udmVydCBrZXlOb2RlIHRvIGEgc3RyaW5nLCBidXQgZG9pbmcgc28gY2FuIGhhbmcgdGhlIHByb2Nlc3NcbiAgICAvLyAoZGVlcGx5IG5lc3RlZCBhcnJheXMgdGhhdCBleHBsb2RlIGV4cG9uZW50aWFsbHkgdXNpbmcgYWxpYXNlcykuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5Tm9kZSkpIHtcbiAgICAgIGtleU5vZGUgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChrZXlOb2RlKTtcblxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGtleU5vZGUubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGtleU5vZGVbaW5kZXhdKSkge1xuICAgICAgICAgIHRocm93IHRoaXMuI2NyZWF0ZUVycm9yKFxuICAgICAgICAgICAgXCJDYW5ub3Qgc3RvcmUgbWFwcGluZyBwYWlyOiBuZXN0ZWQgYXJyYXlzIGFyZSBub3Qgc3VwcG9ydGVkIGluc2lkZSBrZXlzXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2Yga2V5Tm9kZSA9PT0gXCJvYmplY3RcIiAmJiBpc1BsYWluT2JqZWN0KGtleU5vZGVbaW5kZXhdKSkge1xuICAgICAgICAgIGtleU5vZGVbaW5kZXhdID0gXCJbb2JqZWN0IE9iamVjdF1cIjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEF2b2lkIGNvZGUgZXhlY3V0aW9uIGluIGxvYWQoKSB2aWEgdG9TdHJpbmcgcHJvcGVydHlcbiAgICAvLyAoc3RpbGwgdXNlIGl0cyBvd24gdG9TdHJpbmcgZm9yIGFycmF5cywgdGltZXN0YW1wcyxcbiAgICAvLyBhbmQgd2hhdGV2ZXIgdXNlciBzY2hlbWEgZXh0ZW5zaW9ucyBoYXBwZW4gdG8gaGF2ZSBAQHRvU3RyaW5nVGFnKVxuICAgIGlmICh0eXBlb2Yga2V5Tm9kZSA9PT0gXCJvYmplY3RcIiAmJiBpc1BsYWluT2JqZWN0KGtleU5vZGUpKSB7XG4gICAgICBrZXlOb2RlID0gXCJbb2JqZWN0IE9iamVjdF1cIjtcbiAgICB9XG5cbiAgICBrZXlOb2RlID0gU3RyaW5nKGtleU5vZGUpO1xuXG4gICAgaWYgKGtleVRhZyA9PT0gXCJ0YWc6eWFtbC5vcmcsMjAwMjptZXJnZVwiKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZU5vZGUpKSB7XG4gICAgICAgIGZvciAoXG4gICAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgICBpbmRleCA8IHZhbHVlTm9kZS5sZW5ndGg7XG4gICAgICAgICAgaW5kZXgrK1xuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLm1lcmdlTWFwcGluZ3MocmVzdWx0LCB2YWx1ZU5vZGVbaW5kZXhdLCBvdmVycmlkYWJsZUtleXMpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1lcmdlTWFwcGluZ3MoXG4gICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgIHZhbHVlTm9kZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgICBvdmVycmlkYWJsZUtleXMsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChcbiAgICAgICAgIXRoaXMuYWxsb3dEdXBsaWNhdGVLZXlzICYmXG4gICAgICAgICFvdmVycmlkYWJsZUtleXMuaGFzKGtleU5vZGUpICYmXG4gICAgICAgIE9iamVjdC5oYXNPd24ocmVzdWx0LCBrZXlOb2RlKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubGluZSA9IHN0YXJ0TGluZSB8fCB0aGlzLmxpbmU7XG4gICAgICAgIHRoaXMucG9zaXRpb24gPSBzdGFydFBvcyB8fCB0aGlzLnBvc2l0aW9uO1xuICAgICAgICB0aHJvdyB0aGlzLiNjcmVhdGVFcnJvcihcIkNhbm5vdCBzdG9yZSBtYXBwaW5nIHBhaXI6IGR1cGxpY2F0ZWQga2V5XCIpO1xuICAgICAgfVxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlc3VsdCwga2V5Tm9kZSwge1xuICAgICAgICB2YWx1ZTogdmFsdWVOb2RlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgICBvdmVycmlkYWJsZUtleXMuZGVsZXRlKGtleU5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgcmVhZExpbmVCcmVhaygpIHtcbiAgICBjb25zdCBjaCA9IHRoaXMucGVlaygpO1xuXG4gICAgaWYgKGNoID09PSBMSU5FX0ZFRUQpIHtcbiAgICAgIHRoaXMucG9zaXRpb24rKztcbiAgICB9IGVsc2UgaWYgKGNoID09PSBDQVJSSUFHRV9SRVRVUk4pIHtcbiAgICAgIHRoaXMucG9zaXRpb24rKztcbiAgICAgIGlmICh0aGlzLnBlZWsoKSA9PT0gTElORV9GRUVEKSB7XG4gICAgICAgIHRoaXMucG9zaXRpb24rKztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgdGhpcy4jY3JlYXRlRXJyb3IoXCJDYW5ub3QgcmVhZCBsaW5lOiBsaW5lIGJyZWFrIG5vdCBmb3VuZFwiKTtcbiAgICB9XG5cbiAgICB0aGlzLmxpbmUgKz0gMTtcbiAgICB0aGlzLmxpbmVTdGFydCA9IHRoaXMucG9zaXRpb247XG4gIH1cbiAgc2tpcFNlcGFyYXRpb25TcGFjZShhbGxvd0NvbW1lbnRzOiBib29sZWFuLCBjaGVja0luZGVudDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgbGluZUJyZWFrcyA9IDA7XG4gICAgbGV0IGNoID0gdGhpcy5wZWVrKCk7XG5cbiAgICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICAgIHRoaXMuc2tpcFdoaXRlc3BhY2VzKCk7XG4gICAgICBjaCA9IHRoaXMucGVlaygpO1xuXG4gICAgICBpZiAoYWxsb3dDb21tZW50cykge1xuICAgICAgICB0aGlzLnNraXBDb21tZW50KCk7XG4gICAgICAgIGNoID0gdGhpcy5wZWVrKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0VPTChjaCkpIHtcbiAgICAgICAgdGhpcy5yZWFkTGluZUJyZWFrKCk7XG5cbiAgICAgICAgY2ggPSB0aGlzLnBlZWsoKTtcbiAgICAgICAgbGluZUJyZWFrcysrO1xuICAgICAgICB0aGlzLmxpbmVJbmRlbnQgPSAwO1xuXG4gICAgICAgIHRoaXMucmVhZEluZGVudCgpO1xuICAgICAgICBjaCA9IHRoaXMucGVlaygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgY2hlY2tJbmRlbnQgIT09IC0xICYmXG4gICAgICBsaW5lQnJlYWtzICE9PSAwICYmXG4gICAgICB0aGlzLmxpbmVJbmRlbnQgPCBjaGVja0luZGVudFxuICAgICkge1xuICAgICAgdGhpcy5kaXNwYXRjaFdhcm5pbmcoXCJkZWZpY2llbnQgaW5kZW50YXRpb25cIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmVCcmVha3M7XG4gIH1cbiAgdGVzdERvY3VtZW50U2VwYXJhdG9yKCk6IGJvb2xlYW4ge1xuICAgIGxldCBjaCA9IHRoaXMucGVlaygpO1xuXG4gICAgLy8gQ29uZGl0aW9uIHRoaXMucG9zaXRpb24gPT09IHRoaXMubGluZVN0YXJ0IGlzIHRlc3RlZFxuICAgIC8vIGluIHBhcmVudCBvbiBlYWNoIGNhbGwsIGZvciBlZmZpY2llbmN5LiBObyBuZWVkcyB0byB0ZXN0IGhlcmUgYWdhaW4uXG4gICAgaWYgKFxuICAgICAgKGNoID09PSBNSU5VUyB8fCBjaCA9PT0gRE9UKSAmJlxuICAgICAgY2ggPT09IHRoaXMucGVlaygxKSAmJlxuICAgICAgY2ggPT09IHRoaXMucGVlaygyKVxuICAgICkge1xuICAgICAgY2ggPSB0aGlzLnBlZWsoMyk7XG5cbiAgICAgIGlmIChjaCA9PT0gMCB8fCBpc1doaXRlU3BhY2VPckVPTChjaCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHdyaXRlRm9sZGVkTGluZXMoY291bnQ6IG51bWJlcikge1xuICAgIGlmIChjb3VudCA9PT0gMSkge1xuICAgICAgdGhpcy5yZXN1bHQgKz0gXCIgXCI7XG4gICAgfSBlbHNlIGlmIChjb3VudCA+IDEpIHtcbiAgICAgIHRoaXMucmVzdWx0ICs9IFwiXFxuXCIucmVwZWF0KGNvdW50IC0gMSk7XG4gICAgfVxuICB9XG4gIHJlYWRQbGFpblNjYWxhcihub2RlSW5kZW50OiBudW1iZXIsIHdpdGhpbkZsb3dDb2xsZWN0aW9uOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgY29uc3Qga2luZCA9IHRoaXMua2luZDtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnJlc3VsdDtcbiAgICBsZXQgY2ggPSB0aGlzLnBlZWsoKTtcblxuICAgIGlmIChcbiAgICAgIGlzV2hpdGVTcGFjZU9yRU9MKGNoKSB8fFxuICAgICAgaXNGbG93SW5kaWNhdG9yKGNoKSB8fFxuICAgICAgY2ggPT09IFNIQVJQIHx8XG4gICAgICBjaCA9PT0gQU1QRVJTQU5EIHx8XG4gICAgICBjaCA9PT0gQVNURVJJU0sgfHxcbiAgICAgIGNoID09PSBFWENMQU1BVElPTiB8fFxuICAgICAgY2ggPT09IFZFUlRJQ0FMX0xJTkUgfHxcbiAgICAgIGNoID09PSBHUkVBVEVSX1RIQU4gfHxcbiAgICAgIGNoID09PSBTSU5HTEVfUVVPVEUgfHxcbiAgICAgIGNoID09PSBET1VCTEVfUVVPVEUgfHxcbiAgICAgIGNoID09PSBQRVJDRU5UIHx8XG4gICAgICBjaCA9PT0gQ09NTUVSQ0lBTF9BVCB8fFxuICAgICAgY2ggPT09IEdSQVZFX0FDQ0VOVFxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBmb2xsb3dpbmc6IG51bWJlcjtcbiAgICBpZiAoY2ggPT09IFFVRVNUSU9OIHx8IGNoID09PSBNSU5VUykge1xuICAgICAgZm9sbG93aW5nID0gdGhpcy5wZWVrKDEpO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGlzV2hpdGVTcGFjZU9yRU9MKGZvbGxvd2luZykgfHxcbiAgICAgICAgKHdpdGhpbkZsb3dDb2xsZWN0aW9uICYmIGlzRmxvd0luZGljYXRvcihmb2xsb3dpbmcpKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmtpbmQgPSBcInNjYWxhclwiO1xuICAgIHRoaXMucmVzdWx0ID0gXCJcIjtcbiAgICBsZXQgY2FwdHVyZUVuZCA9IHRoaXMucG9zaXRpb247XG4gICAgbGV0IGNhcHR1cmVTdGFydCA9IHRoaXMucG9zaXRpb247XG4gICAgbGV0IGhhc1BlbmRpbmdDb250ZW50ID0gZmFsc2U7XG4gICAgbGV0IGxpbmUgPSAwO1xuICAgIHdoaWxlIChjaCAhPT0gMCkge1xuICAgICAgaWYgKGNoID09PSBDT0xPTikge1xuICAgICAgICBmb2xsb3dpbmcgPSB0aGlzLnBlZWsoMSk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGlzV2hpdGVTcGFjZU9yRU9MKGZvbGxvd2luZykgfHxcbiAgICAgICAgICAod2l0aGluRmxvd0NvbGxlY3Rpb24gJiYgaXNGbG93SW5kaWNhdG9yKGZvbGxvd2luZykpXG4gICAgICAgICkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNoID09PSBTSEFSUCkge1xuICAgICAgICBjb25zdCBwcmVjZWRpbmcgPSB0aGlzLnBlZWsoLTEpO1xuXG4gICAgICAgIGlmIChpc1doaXRlU3BhY2VPckVPTChwcmVjZWRpbmcpKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICh0aGlzLnBvc2l0aW9uID09PSB0aGlzLmxpbmVTdGFydCAmJiB0aGlzLnRlc3REb2N1bWVudFNlcGFyYXRvcigpKSB8fFxuICAgICAgICAod2l0aGluRmxvd0NvbGxlY3Rpb24gJiYgaXNGbG93SW5kaWNhdG9yKGNoKSlcbiAgICAgICkge1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSBpZiAoaXNFT0woY2gpKSB7XG4gICAgICAgIGxpbmUgPSB0aGlzLmxpbmU7XG4gICAgICAgIGNvbnN0IGxpbmVTdGFydCA9IHRoaXMubGluZVN0YXJ0O1xuICAgICAgICBjb25zdCBsaW5lSW5kZW50ID0gdGhpcy5saW5lSW5kZW50O1xuICAgICAgICB0aGlzLnNraXBTZXBhcmF0aW9uU3BhY2UoZmFsc2UsIC0xKTtcblxuICAgICAgICBpZiAodGhpcy5saW5lSW5kZW50ID49IG5vZGVJbmRlbnQpIHtcbiAgICAgICAgICBoYXNQZW5kaW5nQ29udGVudCA9IHRydWU7XG4gICAgICAgICAgY2ggPSB0aGlzLnBlZWsoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uID0gY2FwdHVyZUVuZDtcbiAgICAgICAgICB0aGlzLmxpbmUgPSBsaW5lO1xuICAgICAgICAgIHRoaXMubGluZVN0YXJ0ID0gbGluZVN0YXJ0O1xuICAgICAgICAgIHRoaXMubGluZUluZGVudCA9IGxpbmVJbmRlbnQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGhhc1BlbmRpbmdDb250ZW50KSB7XG4gICAgICAgIHRoaXMuY2FwdHVyZVNlZ21lbnQoY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kLCBmYWxzZSk7XG4gICAgICAgIHRoaXMud3JpdGVGb2xkZWRMaW5lcyh0aGlzLmxpbmUgLSBsaW5lKTtcbiAgICAgICAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHRoaXMucG9zaXRpb247XG4gICAgICAgIGhhc1BlbmRpbmdDb250ZW50ID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNXaGl0ZVNwYWNlKGNoKSkge1xuICAgICAgICBjYXB0dXJlRW5kID0gdGhpcy5wb3NpdGlvbiArIDE7XG4gICAgICB9XG5cbiAgICAgIGNoID0gdGhpcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgdGhpcy5jYXB0dXJlU2VnbWVudChjYXB0dXJlU3RhcnQsIGNhcHR1cmVFbmQsIGZhbHNlKTtcblxuICAgIGlmICh0aGlzLnJlc3VsdCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5raW5kID0ga2luZDtcbiAgICB0aGlzLnJlc3VsdCA9IHJlc3VsdDtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmVhZFNpbmdsZVF1b3RlZFNjYWxhcihub2RlSW5kZW50OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBsZXQgY2ggPSB0aGlzLnBlZWsoKTtcblxuICAgIGlmIChjaCAhPT0gU0lOR0xFX1FVT1RFKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5raW5kID0gXCJzY2FsYXJcIjtcbiAgICB0aGlzLnJlc3VsdCA9IFwiXCI7XG4gICAgdGhpcy5wb3NpdGlvbisrO1xuICAgIGxldCBjYXB0dXJlU3RhcnQgPSB0aGlzLnBvc2l0aW9uO1xuICAgIGxldCBjYXB0dXJlRW5kID0gdGhpcy5wb3NpdGlvbjtcblxuICAgIGNoID0gdGhpcy5wZWVrKCk7XG4gICAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgICBpZiAoY2ggPT09IFNJTkdMRV9RVU9URSkge1xuICAgICAgICB0aGlzLmNhcHR1cmVTZWdtZW50KGNhcHR1cmVTdGFydCwgdGhpcy5wb3NpdGlvbiwgdHJ1ZSk7XG4gICAgICAgIGNoID0gdGhpcy5uZXh0KCk7XG5cbiAgICAgICAgaWYgKGNoID09PSBTSU5HTEVfUVVPVEUpIHtcbiAgICAgICAgICBjYXB0dXJlU3RhcnQgPSB0aGlzLnBvc2l0aW9uO1xuICAgICAgICAgIHRoaXMucG9zaXRpb24rKztcbiAgICAgICAgICBjYXB0dXJlRW5kID0gdGhpcy5wb3NpdGlvbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpc0VPTChjaCkpIHtcbiAgICAgICAgdGhpcy5jYXB0dXJlU2VnbWVudChjYXB0dXJlU3RhcnQsIGNhcHR1cmVFbmQsIHRydWUpO1xuICAgICAgICB0aGlzLndyaXRlRm9sZGVkTGluZXModGhpcy5za2lwU2VwYXJhdGlvblNwYWNlKGZhbHNlLCBub2RlSW5kZW50KSk7XG4gICAgICAgIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSB0aGlzLnBvc2l0aW9uO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdGhpcy5wb3NpdGlvbiA9PT0gdGhpcy5saW5lU3RhcnQgJiZcbiAgICAgICAgdGhpcy50ZXN0RG9jdW1lbnRTZXBhcmF0b3IoKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IHRoaXMuI2NyZWF0ZUVycm9yKFxuICAgICAgICAgIFwiVW5leHBlY3RlZCBlbmQgb2YgdGhlIGRvY3VtZW50IHdpdGhpbiBhIHNpbmdsZSBxdW90ZWQgc2NhbGFyXCIsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBvc2l0aW9uKys7XG4gICAgICAgIGNhcHR1cmVFbmQgPSB0aGlzLnBvc2l0aW9uO1xuICAgICAgfVxuICAgICAgY2ggPSB0aGlzLnBlZWsoKTtcbiAgICB9XG5cbiAgICB0aHJvdyB0aGlzLiNjcmVhdGVFcnJvcihcbiAgICAgIFwiVW5leHBlY3RlZCBlbmQgb2YgdGhlIHN0cmVhbSB3aXRoaW4gYSBzaW5nbGUgcXVvdGVkIHNjYWxhclwiLFxuICAgICk7XG4gIH1cbiAgcmVhZERvdWJsZVF1b3RlZFNjYWxhcihub2RlSW5kZW50OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBsZXQgY2ggPSB0aGlzLnBlZWsoKTtcblxuICAgIGlmIChjaCAhPT0gRE9VQkxFX1FVT1RFKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5raW5kID0gXCJzY2FsYXJcIjtcbiAgICB0aGlzLnJlc3VsdCA9IFwiXCI7XG4gICAgdGhpcy5wb3NpdGlvbisrO1xuICAgIGxldCBjYXB0dXJlRW5kID0gdGhpcy5wb3NpdGlvbjtcbiAgICBsZXQgY2FwdHVyZVN0YXJ0ID0gdGhpcy5wb3NpdGlvbjtcbiAgICBsZXQgdG1wOiBudW1iZXI7XG4gICAgY2ggPSB0aGlzLnBlZWsoKTtcbiAgICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICAgIGlmIChjaCA9PT0gRE9VQkxFX1FVT1RFKSB7XG4gICAgICAgIHRoaXMuY2FwdHVyZVNlZ21lbnQoY2FwdHVyZVN0YXJ0LCB0aGlzLnBvc2l0aW9uLCB0cnVlKTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbisrO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChjaCA9PT0gQkFDS1NMQVNIKSB7XG4gICAgICAgIHRoaXMuY2FwdHVyZVNlZ21lbnQoY2FwdHVyZVN0YXJ0LCB0aGlzLnBvc2l0aW9uLCB0cnVlKTtcbiAgICAgICAgY2ggPSB0aGlzLm5leHQoKTtcblxuICAgICAgICBpZiAoaXNFT0woY2gpKSB7XG4gICAgICAgICAgdGhpcy5za2lwU2VwYXJhdGlvblNwYWNlKGZhbHNlLCBub2RlSW5kZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChjaCA8IDI1NiAmJiBTSU1QTEVfRVNDQVBFX1NFUVVFTkNFUy5oYXMoY2gpKSB7XG4gICAgICAgICAgdGhpcy5yZXN1bHQgKz0gU0lNUExFX0VTQ0FQRV9TRVFVRU5DRVMuZ2V0KGNoKTtcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uKys7XG4gICAgICAgIH0gZWxzZSBpZiAoKHRtcCA9IEVTQ0FQRURfSEVYX0xFTkdUSFMuZ2V0KGNoKSA/PyAwKSA+IDApIHtcbiAgICAgICAgICBsZXQgaGV4TGVuZ3RoID0gdG1wO1xuICAgICAgICAgIGxldCBoZXhSZXN1bHQgPSAwO1xuXG4gICAgICAgICAgZm9yICg7IGhleExlbmd0aCA+IDA7IGhleExlbmd0aC0tKSB7XG4gICAgICAgICAgICBjaCA9IHRoaXMubmV4dCgpO1xuXG4gICAgICAgICAgICBpZiAoKHRtcCA9IGhleENoYXJDb2RlVG9OdW1iZXIoY2gpKSA+PSAwKSB7XG4gICAgICAgICAgICAgIGhleFJlc3VsdCA9IChoZXhSZXN1bHQgPDwgNCkgKyB0bXA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aHJvdyB0aGlzLiNjcmVhdGVFcnJvcihcbiAgICAgICAgICAgICAgICBcIkNhbm5vdCByZWFkIGRvdWJsZSBxdW90ZWQgc2NhbGFyOiBleHBlY3RlZCBoZXhhZGVjaW1hbCBjaGFyYWN0ZXJcIixcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnJlc3VsdCArPSBjb2RlcG9pbnRUb0NoYXIoaGV4UmVzdWx0KTtcblxuICAgICAgICAgIHRoaXMucG9zaXRpb24rKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyB0aGlzLiNjcmVhdGVFcnJvcihcbiAgICAgICAgICAgIFwiQ2Fubm90IHJlYWQgZG91YmxlIHF1b3RlZCBzY2FsYXI6IHVua25vd24gZXNjYXBlIHNlcXVlbmNlXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSB0aGlzLnBvc2l0aW9uO1xuICAgICAgfSBlbHNlIGlmIChpc0VPTChjaCkpIHtcbiAgICAgICAgdGhpcy5jYXB0dXJlU2VnbWVudChjYXB0dXJlU3RhcnQsIGNhcHR1cmVFbmQsIHRydWUpO1xuICAgICAgICB0aGlzLndyaXRlRm9sZGVkTGluZXModGhpcy5za2lwU2VwYXJhdGlvblNwYWNlKGZhbHNlLCBub2RlSW5kZW50KSk7XG4gICAgICAgIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSB0aGlzLnBvc2l0aW9uO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdGhpcy5wb3NpdGlvbiA9PT0gdGhpcy5saW5lU3RhcnQgJiZcbiAgICAgICAgdGhpcy50ZXN0RG9jdW1lbnRTZXBhcmF0b3IoKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IHRoaXMuI2NyZWF0ZUVycm9yKFxuICAgICAgICAgIFwiVW5leHBlY3RlZCBlbmQgb2YgdGhlIGRvY3VtZW50IHdpdGhpbiBhIGRvdWJsZSBxdW90ZWQgc2NhbGFyXCIsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBvc2l0aW9uKys7XG4gICAgICAgIGNhcHR1cmVFbmQgPSB0aGlzLnBvc2l0aW9uO1xuICAgICAgfVxuICAgICAgY2ggPSB0aGlzLnBlZWsoKTtcbiAgICB9XG5cbiAgICB0aHJvdyB0aGlzLiNjcmVhdGVFcnJvcihcbiAgICAgIFwiVW5leHBlY3RlZCBlbmQgb2YgdGhlIHN0cmVhbSB3aXRoaW4gYSBkb3VibGUgcXVvdGVkIHNjYWxhclwiLFxuICAgICk7XG4gIH1cbiAgcmVhZEZsb3dDb2xsZWN0aW9uKG5vZGVJbmRlbnQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGxldCBjaCA9IHRoaXMucGVlaygpO1xuICAgIGxldCB0ZXJtaW5hdG9yOiBudW1iZXI7XG4gICAgbGV0IGlzTWFwcGluZyA9IHRydWU7XG4gICAgbGV0IHJlc3VsdCA9IHt9O1xuICAgIGlmIChjaCA9PT0gTEVGVF9TUVVBUkVfQlJBQ0tFVCkge1xuICAgICAgdGVybWluYXRvciA9IFJJR0hUX1NRVUFSRV9CUkFDS0VUO1xuICAgICAgaXNNYXBwaW5nID0gZmFsc2U7XG4gICAgICByZXN1bHQgPSBbXTtcbiAgICB9IGVsc2UgaWYgKGNoID09PSBMRUZUX0NVUkxZX0JSQUNLRVQpIHtcbiAgICAgIHRlcm1pbmF0b3IgPSBSSUdIVF9DVVJMWV9CUkFDS0VUO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYW5jaG9yICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLmFuY2hvciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgdGhpcy5hbmNob3JNYXAuc2V0KHRoaXMuYW5jaG9yLCByZXN1bHQpO1xuICAgIH1cblxuICAgIGNoID0gdGhpcy5uZXh0KCk7XG5cbiAgICBjb25zdCB0YWcgPSB0aGlzLnRhZztcbiAgICBjb25zdCBhbmNob3IgPSB0aGlzLmFuY2hvcjtcbiAgICBsZXQgcmVhZE5leHQgPSB0cnVlO1xuICAgIGxldCB2YWx1ZU5vZGUgPSBudWxsO1xuICAgIGxldCBrZXlOb2RlID0gbnVsbDtcbiAgICBsZXQga2V5VGFnOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgaXNFeHBsaWNpdFBhaXIgPSBmYWxzZTtcbiAgICBsZXQgaXNQYWlyID0gZmFsc2U7XG4gICAgbGV0IGZvbGxvd2luZyA9IDA7XG4gICAgbGV0IGxpbmUgPSAwO1xuICAgIGNvbnN0IG92ZXJyaWRhYmxlS2V5cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIHdoaWxlIChjaCAhPT0gMCkge1xuICAgICAgdGhpcy5za2lwU2VwYXJhdGlvblNwYWNlKHRydWUsIG5vZGVJbmRlbnQpO1xuXG4gICAgICBjaCA9IHRoaXMucGVlaygpO1xuXG4gICAgICBpZiAoY2ggPT09IHRlcm1pbmF0b3IpIHtcbiAgICAgICAgdGhpcy5wb3NpdGlvbisrO1xuICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgdGhpcy5hbmNob3IgPSBhbmNob3I7XG4gICAgICAgIHRoaXMua2luZCA9IGlzTWFwcGluZyA/IFwibWFwcGluZ1wiIDogXCJzZXF1ZW5jZVwiO1xuICAgICAgICB0aGlzLnJlc3VsdCA9IHJlc3VsdDtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoIXJlYWROZXh0KSB7XG4gICAgICAgIHRocm93IHRoaXMuI2NyZWF0ZUVycm9yKFxuICAgICAgICAgIFwiQ2Fubm90IHJlYWQgZmxvdyBjb2xsZWN0aW9uOiBtaXNzaW5nIGNvbW1hIGJldHdlZW4gZmxvdyBjb2xsZWN0aW9uIGVudHJpZXNcIixcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAga2V5VGFnID0ga2V5Tm9kZSA9IHZhbHVlTm9kZSA9IG51bGw7XG4gICAgICBpc1BhaXIgPSBpc0V4cGxpY2l0UGFpciA9IGZhbHNlO1xuXG4gICAgICBpZiAoY2ggPT09IFFVRVNUSU9OKSB7XG4gICAgICAgIGZvbGxvd2luZyA9IHRoaXMucGVlaygxKTtcblxuICAgICAgICBpZiAoaXNXaGl0ZVNwYWNlT3JFT0woZm9sbG93aW5nKSkge1xuICAgICAgICAgIGlzUGFpciA9IGlzRXhwbGljaXRQYWlyID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnBvc2l0aW9uKys7XG4gICAgICAgICAgdGhpcy5za2lwU2VwYXJhdGlvblNwYWNlKHRydWUsIG5vZGVJbmRlbnQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxpbmUgPSB0aGlzLmxpbmU7XG4gICAgICB0aGlzLmNvbXBvc2VOb2RlKG5vZGVJbmRlbnQsIENPTlRFWFRfRkxPV19JTiwgZmFsc2UsIHRydWUpO1xuICAgICAga2V5VGFnID0gdGhpcy50YWcgfHwgbnVsbDtcbiAgICAgIGtleU5vZGUgPSB0aGlzLnJlc3VsdDtcbiAgICAgIHRoaXMuc2tpcFNlcGFyYXRpb25TcGFjZSh0cnVlLCBub2RlSW5kZW50KTtcblxuICAgICAgY2ggPSB0aGlzLnBlZWsoKTtcblxuICAgICAgaWYgKChpc0V4cGxpY2l0UGFpciB8fCB0aGlzLmxpbmUgPT09IGxpbmUpICYmIGNoID09PSBDT0xPTikge1xuICAgICAgICBpc1BhaXIgPSB0cnVlO1xuICAgICAgICBjaCA9IHRoaXMubmV4dCgpO1xuICAgICAgICB0aGlzLnNraXBTZXBhcmF0aW9uU3BhY2UodHJ1ZSwgbm9kZUluZGVudCk7XG4gICAgICAgIHRoaXMuY29tcG9zZU5vZGUobm9kZUluZGVudCwgQ09OVEVYVF9GTE9XX0lOLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgIHZhbHVlTm9kZSA9IHRoaXMucmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNNYXBwaW5nKSB7XG4gICAgICAgIHRoaXMuc3RvcmVNYXBwaW5nUGFpcihcbiAgICAgICAgICByZXN1bHQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgICAgb3ZlcnJpZGFibGVLZXlzLFxuICAgICAgICAgIGtleVRhZyxcbiAgICAgICAgICBrZXlOb2RlLFxuICAgICAgICAgIHZhbHVlTm9kZSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNQYWlyKSB7XG4gICAgICAgIChyZXN1bHQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXSkucHVzaChcbiAgICAgICAgICB0aGlzLnN0b3JlTWFwcGluZ1BhaXIoXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICAgIG92ZXJyaWRhYmxlS2V5cyxcbiAgICAgICAgICAgIGtleVRhZyxcbiAgICAgICAgICAgIGtleU5vZGUsXG4gICAgICAgICAgICB2YWx1ZU5vZGUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIChyZXN1bHQgYXMgdW5rbm93bltdKS5wdXNoKGtleU5vZGUpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNraXBTZXBhcmF0aW9uU3BhY2UodHJ1ZSwgbm9kZUluZGVudCk7XG5cbiAgICAgIGNoID0gdGhpcy5wZWVrKCk7XG5cbiAgICAgIGlmIChjaCA9PT0gQ09NTUEpIHtcbiAgICAgICAgcmVhZE5leHQgPSB0cnVlO1xuICAgICAgICBjaCA9IHRoaXMubmV4dCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVhZE5leHQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyB0aGlzLiNjcmVhdGVFcnJvcihcbiAgICAgIFwiQ2Fubm90IHJlYWQgZmxvdyBjb2xsZWN0aW9uOiB1bmV4cGVjdGVkIGVuZCBvZiB0aGUgc3RyZWFtIHdpdGhpbiBhIGZsb3cgY29sbGVjdGlvblwiLFxuICAgICk7XG4gIH1cbiAgLy8gSGFuZGxlcyBibG9jayBzY2FsZXIgc3R5bGVzOiBlLmcuICd8JywgJz4nLCAnfC0nIGFuZCAnPi0nLlxuICAvLyBodHRwczovL3lhbWwub3JnL3NwZWMvMS4yLjIvIzgxLWJsb2NrLXNjYWxhci1zdHlsZXNcbiAgcmVhZEJsb2NrU2NhbGFyKG5vZGVJbmRlbnQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGxldCBjaG9tcGluZyA9IENIT01QSU5HX0NMSVA7XG4gICAgbGV0IGRpZFJlYWRDb250ZW50ID0gZmFsc2U7XG4gICAgbGV0IGRldGVjdGVkSW5kZW50ID0gZmFsc2U7XG4gICAgbGV0IHRleHRJbmRlbnQgPSBub2RlSW5kZW50O1xuICAgIGxldCBlbXB0eUxpbmVzID0gMDtcbiAgICBsZXQgYXRNb3JlSW5kZW50ZWQgPSBmYWxzZTtcblxuICAgIGxldCBjaCA9IHRoaXMucGVlaygpO1xuXG4gICAgbGV0IGZvbGRpbmcgPSBmYWxzZTtcbiAgICBpZiAoY2ggPT09IFZFUlRJQ0FMX0xJTkUpIHtcbiAgICAgIGZvbGRpbmcgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGNoID09PSBHUkVBVEVSX1RIQU4pIHtcbiAgICAgIGZvbGRpbmcgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5raW5kID0gXCJzY2FsYXJcIjtcbiAgICB0aGlzLnJlc3VsdCA9IFwiXCI7XG5cbiAgICBsZXQgdG1wID0gMDtcbiAgICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICAgIGNoID0gdGhpcy5uZXh0KCk7XG5cbiAgICAgIGlmIChjaCA9PT0gUExVUyB8fCBjaCA9PT0gTUlOVVMpIHtcbiAgICAgICAgaWYgKENIT01QSU5HX0NMSVAgPT09IGNob21waW5nKSB7XG4gICAgICAgICAgY2hvbXBpbmcgPSBjaCA9PT0gUExVUyA/IENIT01QSU5HX0tFRVAgOiBDSE9NUElOR19TVFJJUDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyB0aGlzLiNjcmVhdGVFcnJvcihcbiAgICAgICAgICAgIFwiQ2Fubm90IHJlYWQgYmxvY2s6IGNob21waW5nIG1vZGUgaWRlbnRpZmllciByZXBlYXRlZFwiLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoKHRtcCA9IGRlY2ltYWxDaGFyQ29kZVRvTnVtYmVyKGNoKSkgPj0gMCkge1xuICAgICAgICBpZiAodG1wID09PSAwKSB7XG4gICAgICAgICAgdGhyb3cgdGhpcy4jY3JlYXRlRXJyb3IoXG4gICAgICAgICAgICBcIkNhbm5vdCByZWFkIGJsb2NrOiBpbmRlbnRhdGlvbiB3aWR0aCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmICghZGV0ZWN0ZWRJbmRlbnQpIHtcbiAgICAgICAgICB0ZXh0SW5kZW50ID0gbm9kZUluZGVudCArIHRtcCAtIDE7XG4gICAgICAgICAgZGV0ZWN0ZWRJbmRlbnQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IHRoaXMuI2NyZWF0ZUVycm9yKFxuICAgICAgICAgICAgXCJDYW5ub3QgcmVhZCBibG9jazogaW5kZW50YXRpb24gd2lkdGggaWRlbnRpZmllciByZXBlYXRlZFwiLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpc1doaXRlU3BhY2UoY2gpKSB7XG4gICAgICB0aGlzLnNraXBXaGl0ZXNwYWNlcygpO1xuICAgICAgdGhpcy5za2lwQ29tbWVudCgpO1xuICAgICAgY2ggPSB0aGlzLnBlZWsoKTtcbiAgICB9XG5cbiAgICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICAgIHRoaXMucmVhZExpbmVCcmVhaygpO1xuICAgICAgdGhpcy5saW5lSW5kZW50ID0gMDtcblxuICAgICAgY2ggPSB0aGlzLnBlZWsoKTtcblxuICAgICAgd2hpbGUgKFxuICAgICAgICAoIWRldGVjdGVkSW5kZW50IHx8IHRoaXMubGluZUluZGVudCA8IHRleHRJbmRlbnQpICYmXG4gICAgICAgIGNoID09PSBTUEFDRVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubGluZUluZGVudCsrO1xuICAgICAgICBjaCA9IHRoaXMubmV4dCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWRldGVjdGVkSW5kZW50ICYmIHRoaXMubGluZUluZGVudCA+IHRleHRJbmRlbnQpIHtcbiAgICAgICAgdGV4dEluZGVudCA9IHRoaXMubGluZUluZGVudDtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzRU9MKGNoKSkge1xuICAgICAgICBlbXB0eUxpbmVzKys7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBFbmQgb2YgdGhlIHNjYWxhci5cbiAgICAgIGlmICh0aGlzLmxpbmVJbmRlbnQgPCB0ZXh0SW5kZW50KSB7XG4gICAgICAgIC8vIFBlcmZvcm0gdGhlIGNob21waW5nLlxuICAgICAgICBpZiAoY2hvbXBpbmcgPT09IENIT01QSU5HX0tFRVApIHtcbiAgICAgICAgICB0aGlzLnJlc3VsdCArPSBcIlxcblwiLnJlcGVhdChcbiAgICAgICAgICAgIGRpZFJlYWRDb250ZW50ID8gMSArIGVtcHR5TGluZXMgOiBlbXB0eUxpbmVzLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hvbXBpbmcgPT09IENIT01QSU5HX0NMSVApIHtcbiAgICAgICAgICBpZiAoZGlkUmVhZENvbnRlbnQpIHtcbiAgICAgICAgICAgIC8vIGkuZS4gb25seSBpZiB0aGUgc2NhbGFyIGlzIG5vdCBlbXB0eS5cbiAgICAgICAgICAgIHRoaXMucmVzdWx0ICs9IFwiXFxuXCI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQnJlYWsgdGhpcyBgd2hpbGVgIGN5Y2xlIGFuZCBnbyB0byB0aGUgZnVuY3Rpb24ncyBlcGlsb2d1ZS5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIEZvbGRlZCBzdHlsZTogdXNlIGZhbmN5IHJ1bGVzIHRvIGhhbmRsZSBsaW5lIGJyZWFrcy5cbiAgICAgIGlmIChmb2xkaW5nKSB7XG4gICAgICAgIC8vIExpbmVzIHN0YXJ0aW5nIHdpdGggd2hpdGUgc3BhY2UgY2hhcmFjdGVycyAobW9yZS1pbmRlbnRlZCBsaW5lcykgYXJlIG5vdCBmb2xkZWQuXG4gICAgICAgIGlmIChpc1doaXRlU3BhY2UoY2gpKSB7XG4gICAgICAgICAgYXRNb3JlSW5kZW50ZWQgPSB0cnVlO1xuICAgICAgICAgIC8vIGV4Y2VwdCBmb3IgdGhlIGZpcnN0IGNvbnRlbnQgbGluZSAoY2YuIEV4YW1wbGUgOC4xKVxuICAgICAgICAgIHRoaXMucmVzdWx0ICs9IFwiXFxuXCIucmVwZWF0KFxuICAgICAgICAgICAgZGlkUmVhZENvbnRlbnQgPyAxICsgZW1wdHlMaW5lcyA6IGVtcHR5TGluZXMsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIC8vIEVuZCBvZiBtb3JlLWluZGVudGVkIGJsb2NrLlxuICAgICAgICB9IGVsc2UgaWYgKGF0TW9yZUluZGVudGVkKSB7XG4gICAgICAgICAgYXRNb3JlSW5kZW50ZWQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnJlc3VsdCArPSBcIlxcblwiLnJlcGVhdChlbXB0eUxpbmVzICsgMSk7XG5cbiAgICAgICAgICAvLyBKdXN0IG9uZSBsaW5lIGJyZWFrIC0gcGVyY2VpdmUgYXMgdGhlIHNhbWUgbGluZS5cbiAgICAgICAgfSBlbHNlIGlmIChlbXB0eUxpbmVzID09PSAwKSB7XG4gICAgICAgICAgaWYgKGRpZFJlYWRDb250ZW50KSB7XG4gICAgICAgICAgICAvLyBpLmUuIG9ubHkgaWYgd2UgaGF2ZSBhbHJlYWR5IHJlYWQgc29tZSBzY2FsYXIgY29udGVudC5cbiAgICAgICAgICAgIHRoaXMucmVzdWx0ICs9IFwiIFwiO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFNldmVyYWwgbGluZSBicmVha3MgLSBwZXJjZWl2ZSBhcyBkaWZmZXJlbnQgbGluZXMuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXN1bHQgKz0gXCJcXG5cIi5yZXBlYXQoZW1wdHlMaW5lcyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBMaXRlcmFsIHN0eWxlOiBqdXN0IGFkZCBleGFjdCBudW1iZXIgb2YgbGluZSBicmVha3MgYmV0d2VlbiBjb250ZW50IGxpbmVzLlxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gS2VlcCBhbGwgbGluZSBicmVha3MgZXhjZXB0IHRoZSBoZWFkZXIgbGluZSBicmVhay5cbiAgICAgICAgdGhpcy5yZXN1bHQgKz0gXCJcXG5cIi5yZXBlYXQoXG4gICAgICAgICAgZGlkUmVhZENvbnRlbnQgPyAxICsgZW1wdHlMaW5lcyA6IGVtcHR5TGluZXMsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGRpZFJlYWRDb250ZW50ID0gdHJ1ZTtcbiAgICAgIGRldGVjdGVkSW5kZW50ID0gdHJ1ZTtcbiAgICAgIGVtcHR5TGluZXMgPSAwO1xuICAgICAgY29uc3QgY2FwdHVyZVN0YXJ0ID0gdGhpcy5wb3NpdGlvbjtcblxuICAgICAgd2hpbGUgKCFpc0VPTChjaCkgJiYgY2ggIT09IDApIHtcbiAgICAgICAgY2ggPSB0aGlzLm5leHQoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jYXB0dXJlU2VnbWVudChjYXB0dXJlU3RhcnQsIHRoaXMucG9zaXRpb24sIGZhbHNlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZWFkQmxvY2tNYXBwaW5nKG5vZGVJbmRlbnQ6IG51bWJlciwgZmxvd0luZGVudDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdGFnID0gdGhpcy50YWc7XG4gICAgY29uc3QgYW5jaG9yID0gdGhpcy5hbmNob3I7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgY29uc3Qgb3ZlcnJpZGFibGVLZXlzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBsZXQgYWxsb3dDb21wYWN0ID0gZmFsc2U7XG4gICAgbGV0IGxpbmU6IG51bWJlcjtcbiAgICBsZXQgcG9zOiBudW1iZXI7XG4gICAgbGV0IGtleVRhZyA9IG51bGw7XG4gICAgbGV0IGtleU5vZGUgPSBudWxsO1xuICAgIGxldCB2YWx1ZU5vZGUgPSBudWxsO1xuICAgIGxldCBhdEV4cGxpY2l0S2V5ID0gZmFsc2U7XG4gICAgbGV0IGRldGVjdGVkID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5hbmNob3IgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuYW5jaG9yICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICB0aGlzLmFuY2hvck1hcC5zZXQodGhpcy5hbmNob3IsIHJlc3VsdCk7XG4gICAgfVxuXG4gICAgbGV0IGNoID0gdGhpcy5wZWVrKCk7XG5cbiAgICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICAgIGNvbnN0IGZvbGxvd2luZyA9IHRoaXMucGVlaygxKTtcbiAgICAgIGxpbmUgPSB0aGlzLmxpbmU7IC8vIFNhdmUgdGhlIGN1cnJlbnQgbGluZS5cbiAgICAgIHBvcyA9IHRoaXMucG9zaXRpb247XG5cbiAgICAgIC8vXG4gICAgICAvLyBFeHBsaWNpdCBub3RhdGlvbiBjYXNlLiBUaGVyZSBhcmUgdHdvIHNlcGFyYXRlIGJsb2NrczpcbiAgICAgIC8vIGZpcnN0IGZvciB0aGUga2V5IChkZW5vdGVkIGJ5IFwiP1wiKSBhbmQgc2Vjb25kIGZvciB0aGUgdmFsdWUgKGRlbm90ZWQgYnkgXCI6XCIpXG4gICAgICAvL1xuICAgICAgaWYgKChjaCA9PT0gUVVFU1RJT04gfHwgY2ggPT09IENPTE9OKSAmJiBpc1doaXRlU3BhY2VPckVPTChmb2xsb3dpbmcpKSB7XG4gICAgICAgIGlmIChjaCA9PT0gUVVFU1RJT04pIHtcbiAgICAgICAgICBpZiAoYXRFeHBsaWNpdEtleSkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZU1hcHBpbmdQYWlyKFxuICAgICAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgICAgIG92ZXJyaWRhYmxlS2V5cyxcbiAgICAgICAgICAgICAga2V5VGFnIGFzIHN0cmluZyxcbiAgICAgICAgICAgICAga2V5Tm9kZSxcbiAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBrZXlUYWcgPSBudWxsO1xuICAgICAgICAgICAga2V5Tm9kZSA9IG51bGw7XG4gICAgICAgICAgICB2YWx1ZU5vZGUgPSBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRldGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICBhdEV4cGxpY2l0S2V5ID0gdHJ1ZTtcbiAgICAgICAgICBhbGxvd0NvbXBhY3QgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKGF0RXhwbGljaXRLZXkpIHtcbiAgICAgICAgICAvLyBpLmUuIDB4M0EvKiA6ICovID09PSBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIGV4cGxpY2l0IGtleS5cbiAgICAgICAgICBhdEV4cGxpY2l0S2V5ID0gZmFsc2U7XG4gICAgICAgICAgYWxsb3dDb21wYWN0ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyB0aGlzLiNjcmVhdGVFcnJvcihcbiAgICAgICAgICAgIFwiQ2Fubm90IHJlYWQgYmxvY2sgYXMgZXhwbGljaXQgbWFwcGluZyBwYWlyIGlzIGluY29tcGxldGU6IGEga2V5IG5vZGUgaXMgbWlzc2VkIG9yIGZvbGxvd2VkIGJ5IGEgbm9uLXRhYnVsYXRlZCBlbXB0eSBsaW5lXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucG9zaXRpb24gKz0gMTtcbiAgICAgICAgY2ggPSBmb2xsb3dpbmc7XG5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gSW1wbGljaXQgbm90YXRpb24gY2FzZS4gRmxvdy1zdHlsZSBub2RlIGFzIHRoZSBrZXkgZmlyc3QsIHRoZW4gXCI6XCIsIGFuZCB0aGUgdmFsdWUuXG4gICAgICAgIC8vXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY29tcG9zZU5vZGUoZmxvd0luZGVudCwgQ09OVEVYVF9GTE9XX09VVCwgZmFsc2UsIHRydWUpKSB7XG4gICAgICAgIGlmICh0aGlzLmxpbmUgPT09IGxpbmUpIHtcbiAgICAgICAgICBjaCA9IHRoaXMucGVlaygpO1xuXG4gICAgICAgICAgdGhpcy5za2lwV2hpdGVzcGFjZXMoKTtcbiAgICAgICAgICBjaCA9IHRoaXMucGVlaygpO1xuXG4gICAgICAgICAgaWYgKGNoID09PSBDT0xPTikge1xuICAgICAgICAgICAgY2ggPSB0aGlzLm5leHQoKTtcblxuICAgICAgICAgICAgaWYgKCFpc1doaXRlU3BhY2VPckVPTChjaCkpIHtcbiAgICAgICAgICAgICAgdGhyb3cgdGhpcy4jY3JlYXRlRXJyb3IoXG4gICAgICAgICAgICAgICAgXCJDYW5ub3QgcmVhZCBibG9jazogYSB3aGl0ZXNwYWNlIGNoYXJhY3RlciBpcyBleHBlY3RlZCBhZnRlciB0aGUga2V5LXZhbHVlIHNlcGFyYXRvciB3aXRoaW4gYSBibG9jayBtYXBwaW5nXCIsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChhdEV4cGxpY2l0S2V5KSB7XG4gICAgICAgICAgICAgIHRoaXMuc3RvcmVNYXBwaW5nUGFpcihcbiAgICAgICAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgICAgICAgb3ZlcnJpZGFibGVLZXlzLFxuICAgICAgICAgICAgICAgIGtleVRhZyBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgICAga2V5Tm9kZSxcbiAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBrZXlUYWcgPSBudWxsO1xuICAgICAgICAgICAgICBrZXlOb2RlID0gbnVsbDtcbiAgICAgICAgICAgICAgdmFsdWVOb2RlID0gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGV0ZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgYXRFeHBsaWNpdEtleSA9IGZhbHNlO1xuICAgICAgICAgICAgYWxsb3dDb21wYWN0ID0gZmFsc2U7XG4gICAgICAgICAgICBrZXlUYWcgPSB0aGlzLnRhZztcbiAgICAgICAgICAgIGtleU5vZGUgPSB0aGlzLnJlc3VsdDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGRldGVjdGVkKSB7XG4gICAgICAgICAgICB0aHJvdyB0aGlzLiNjcmVhdGVFcnJvcihcbiAgICAgICAgICAgICAgXCJDYW5ub3QgcmVhZCBhbiBpbXBsaWNpdCBtYXBwaW5nIHBhaXI6IG1pc3NpbmcgY29sb25cIixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgICAgICAgICAgdGhpcy5hbmNob3IgPSBhbmNob3I7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gS2VlcCB0aGUgcmVzdWx0IG9mIGBjb21wb3NlTm9kZWAuXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGRldGVjdGVkKSB7XG4gICAgICAgICAgdGhyb3cgdGhpcy4jY3JlYXRlRXJyb3IoXG4gICAgICAgICAgICBcIkNhbm5vdCByZWFkIGEgYmxvY2sgbWFwcGluZyBlbnRyeTogYSBtdWx0aWxpbmUga2V5IG1heSBub3QgYmUgYW4gaW1wbGljaXQga2V5XCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgICB0aGlzLmFuY2hvciA9IGFuY2hvcjtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gS2VlcCB0aGUgcmVzdWx0IG9mIGBjb21wb3NlTm9kZWAuXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrOyAvLyBSZWFkaW5nIGlzIGRvbmUuIEdvIHRvIHRoZSBlcGlsb2d1ZS5cbiAgICAgIH1cblxuICAgICAgLy9cbiAgICAgIC8vIENvbW1vbiByZWFkaW5nIGNvZGUgZm9yIGJvdGggZXhwbGljaXQgYW5kIGltcGxpY2l0IG5vdGF0aW9ucy5cbiAgICAgIC8vXG4gICAgICBpZiAodGhpcy5saW5lID09PSBsaW5lIHx8IHRoaXMubGluZUluZGVudCA+IG5vZGVJbmRlbnQpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuY29tcG9zZU5vZGUobm9kZUluZGVudCwgQ09OVEVYVF9CTE9DS19PVVQsIHRydWUsIGFsbG93Q29tcGFjdClcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKGF0RXhwbGljaXRLZXkpIHtcbiAgICAgICAgICAgIGtleU5vZGUgPSB0aGlzLnJlc3VsdDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWVOb2RlID0gdGhpcy5yZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFhdEV4cGxpY2l0S2V5KSB7XG4gICAgICAgICAgdGhpcy5zdG9yZU1hcHBpbmdQYWlyKFxuICAgICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgICAgb3ZlcnJpZGFibGVLZXlzLFxuICAgICAgICAgICAga2V5VGFnIGFzIHN0cmluZyxcbiAgICAgICAgICAgIGtleU5vZGUsXG4gICAgICAgICAgICB2YWx1ZU5vZGUsXG4gICAgICAgICAgICBsaW5lLFxuICAgICAgICAgICAgcG9zLFxuICAgICAgICAgICk7XG4gICAgICAgICAga2V5VGFnID0ga2V5Tm9kZSA9IHZhbHVlTm9kZSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNraXBTZXBhcmF0aW9uU3BhY2UodHJ1ZSwgLTEpO1xuICAgICAgICBjaCA9IHRoaXMucGVlaygpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5saW5lSW5kZW50ID4gbm9kZUluZGVudCAmJiBjaCAhPT0gMCkge1xuICAgICAgICB0aHJvdyB0aGlzLiNjcmVhdGVFcnJvcihcbiAgICAgICAgICBcIkNhbm5vdCByZWFkIGJsb2NrOiBiYWQgaW5kZW50YXRpb24gb2YgYSBtYXBwaW5nIGVudHJ5XCIsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubGluZUluZGVudCA8IG5vZGVJbmRlbnQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy9cbiAgICAvLyBFcGlsb2d1ZS5cbiAgICAvL1xuXG4gICAgLy8gU3BlY2lhbCBjYXNlOiBsYXN0IG1hcHBpbmcncyBub2RlIGNvbnRhaW5zIG9ubHkgdGhlIGtleSBpbiBleHBsaWNpdCBub3RhdGlvbi5cbiAgICBpZiAoYXRFeHBsaWNpdEtleSkge1xuICAgICAgdGhpcy5zdG9yZU1hcHBpbmdQYWlyKFxuICAgICAgICByZXN1bHQsXG4gICAgICAgIG92ZXJyaWRhYmxlS2V5cyxcbiAgICAgICAga2V5VGFnIGFzIHN0cmluZyxcbiAgICAgICAga2V5Tm9kZSxcbiAgICAgICAgbnVsbCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRXhwb3NlIHRoZSByZXN1bHRpbmcgbWFwcGluZy5cbiAgICBpZiAoZGV0ZWN0ZWQpIHtcbiAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgICAgdGhpcy5hbmNob3IgPSBhbmNob3I7XG4gICAgICB0aGlzLmtpbmQgPSBcIm1hcHBpbmdcIjtcbiAgICAgIHRoaXMucmVzdWx0ID0gcmVzdWx0O1xuICAgIH1cblxuICAgIHJldHVybiBkZXRlY3RlZDtcbiAgfVxuICByZWFkVGFnUHJvcGVydHkoKTogYm9vbGVhbiB7XG4gICAgbGV0IGlzVmVyYmF0aW0gPSBmYWxzZTtcbiAgICBsZXQgaXNOYW1lZCA9IGZhbHNlO1xuICAgIGxldCB0YWdIYW5kbGUgPSBcIlwiO1xuICAgIGxldCB0YWdOYW1lOiBzdHJpbmc7XG5cbiAgICBsZXQgY2ggPSB0aGlzLnBlZWsoKTtcblxuICAgIGlmIChjaCAhPT0gRVhDTEFNQVRJT04pIHJldHVybiBmYWxzZTtcblxuICAgIGlmICh0aGlzLnRhZyAhPT0gbnVsbCkge1xuICAgICAgdGhyb3cgdGhpcy4jY3JlYXRlRXJyb3IoXG4gICAgICAgIFwiQ2Fubm90IHJlYWQgdGFnIHByb3BlcnR5OiBkdXBsaWNhdGlvbiBvZiBhIHRhZyBwcm9wZXJ0eVwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjaCA9IHRoaXMubmV4dCgpO1xuXG4gICAgaWYgKGNoID09PSBTTUFMTEVSX1RIQU4pIHtcbiAgICAgIGlzVmVyYmF0aW0gPSB0cnVlO1xuICAgICAgY2ggPSB0aGlzLm5leHQoKTtcbiAgICB9IGVsc2UgaWYgKGNoID09PSBFWENMQU1BVElPTikge1xuICAgICAgaXNOYW1lZCA9IHRydWU7XG4gICAgICB0YWdIYW5kbGUgPSBcIiEhXCI7XG4gICAgICBjaCA9IHRoaXMubmV4dCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YWdIYW5kbGUgPSBcIiFcIjtcbiAgICB9XG5cbiAgICBsZXQgcG9zaXRpb24gPSB0aGlzLnBvc2l0aW9uO1xuXG4gICAgaWYgKGlzVmVyYmF0aW0pIHtcbiAgICAgIGRvIHtcbiAgICAgICAgY2ggPSB0aGlzLm5leHQoKTtcbiAgICAgIH0gd2hpbGUgKGNoICE9PSAwICYmIGNoICE9PSBHUkVBVEVSX1RIQU4pO1xuXG4gICAgICBpZiAodGhpcy5wb3NpdGlvbiA8IHRoaXMubGVuZ3RoKSB7XG4gICAgICAgIHRhZ05hbWUgPSB0aGlzLmlucHV0LnNsaWNlKHBvc2l0aW9uLCB0aGlzLnBvc2l0aW9uKTtcbiAgICAgICAgY2ggPSB0aGlzLm5leHQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IHRoaXMuI2NyZWF0ZUVycm9yKFxuICAgICAgICAgIFwiQ2Fubm90IHJlYWQgdGFnIHByb3BlcnR5OiB1bmV4cGVjdGVkIGVuZCBvZiBzdHJlYW1cIixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgd2hpbGUgKGNoICE9PSAwICYmICFpc1doaXRlU3BhY2VPckVPTChjaCkpIHtcbiAgICAgICAgaWYgKGNoID09PSBFWENMQU1BVElPTikge1xuICAgICAgICAgIGlmICghaXNOYW1lZCkge1xuICAgICAgICAgICAgdGFnSGFuZGxlID0gdGhpcy5pbnB1dC5zbGljZShwb3NpdGlvbiAtIDEsIHRoaXMucG9zaXRpb24gKyAxKTtcblxuICAgICAgICAgICAgaWYgKCFQQVRURVJOX1RBR19IQU5ETEUudGVzdCh0YWdIYW5kbGUpKSB7XG4gICAgICAgICAgICAgIHRocm93IHRoaXMuI2NyZWF0ZUVycm9yKFxuICAgICAgICAgICAgICAgIFwiQ2Fubm90IHJlYWQgdGFnIHByb3BlcnR5OiBuYW1lZCB0YWcgaGFuZGxlIGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVyc1wiLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpc05hbWVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbiArIDE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMuI2NyZWF0ZUVycm9yKFxuICAgICAgICAgICAgICBcIkNhbm5vdCByZWFkIHRhZyBwcm9wZXJ0eTogdGFnIHN1ZmZpeCBjYW5ub3QgY29udGFpbiBhbiBleGNsYW1hdGlvbiBtYXJrXCIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNoID0gdGhpcy5uZXh0KCk7XG4gICAgICB9XG5cbiAgICAgIHRhZ05hbWUgPSB0aGlzLmlucHV0LnNsaWNlKHBvc2l0aW9uLCB0aGlzLnBvc2l0aW9uKTtcblxuICAgICAgaWYgKFBBVFRFUk5fRkxPV19JTkRJQ0FUT1JTLnRlc3QodGFnTmFtZSkpIHtcbiAgICAgICAgdGhyb3cgdGhpcy4jY3JlYXRlRXJyb3IoXG4gICAgICAgICAgXCJDYW5ub3QgcmVhZCB0YWcgcHJvcGVydHk6IHRhZyBzdWZmaXggY2Fubm90IGNvbnRhaW4gZmxvdyBpbmRpY2F0b3IgY2hhcmFjdGVyc1wiLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0YWdOYW1lICYmICFQQVRURVJOX1RBR19VUkkudGVzdCh0YWdOYW1lKSkge1xuICAgICAgdGhyb3cgdGhpcy4jY3JlYXRlRXJyb3IoXG4gICAgICAgIGBDYW5ub3QgcmVhZCB0YWcgcHJvcGVydHk6IGludmFsaWQgY2hhcmFjdGVycyBpbiB0YWcgbmFtZSBcIiR7dGFnTmFtZX1cImAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChpc1ZlcmJhdGltKSB7XG4gICAgICB0aGlzLnRhZyA9IHRhZ05hbWU7XG4gICAgfSBlbHNlIGlmICh0aGlzLnRhZ01hcC5oYXModGFnSGFuZGxlKSkge1xuICAgICAgdGhpcy50YWcgPSB0aGlzLnRhZ01hcC5nZXQodGFnSGFuZGxlKSArIHRhZ05hbWU7XG4gICAgfSBlbHNlIGlmICh0YWdIYW5kbGUgPT09IFwiIVwiKSB7XG4gICAgICB0aGlzLnRhZyA9IGAhJHt0YWdOYW1lfWA7XG4gICAgfSBlbHNlIGlmICh0YWdIYW5kbGUgPT09IFwiISFcIikge1xuICAgICAgdGhpcy50YWcgPSBgdGFnOnlhbWwub3JnLDIwMDI6JHt0YWdOYW1lfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IHRoaXMuI2NyZWF0ZUVycm9yKFxuICAgICAgICBgQ2Fubm90IHJlYWQgdGFnIHByb3BlcnR5OiB1bmRlY2xhcmVkIHRhZyBoYW5kbGUgXCIke3RhZ0hhbmRsZX1cImAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJlYWRBbmNob3JQcm9wZXJ0eSgpOiBib29sZWFuIHtcbiAgICBsZXQgY2ggPSB0aGlzLnBlZWsoKTtcbiAgICBpZiAoY2ggIT09IEFNUEVSU0FORCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgICB0aHJvdyB0aGlzLiNjcmVhdGVFcnJvcihcbiAgICAgICAgXCJDYW5ub3QgcmVhZCBhbmNob3IgcHJvcGVydHk6IGR1cGxpY2F0ZSBhbmNob3IgcHJvcGVydHlcIixcbiAgICAgICk7XG4gICAgfVxuICAgIGNoID0gdGhpcy5uZXh0KCk7XG5cbiAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMucG9zaXRpb247XG4gICAgd2hpbGUgKGNoICE9PSAwICYmICFpc1doaXRlU3BhY2VPckVPTChjaCkgJiYgIWlzRmxvd0luZGljYXRvcihjaCkpIHtcbiAgICAgIGNoID0gdGhpcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucG9zaXRpb24gPT09IHBvc2l0aW9uKSB7XG4gICAgICB0aHJvdyB0aGlzLiNjcmVhdGVFcnJvcihcbiAgICAgICAgXCJDYW5ub3QgcmVhZCBhbmNob3IgcHJvcGVydHk6IG5hbWUgb2YgYW4gYW5jaG9yIG5vZGUgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXJcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5hbmNob3IgPSB0aGlzLmlucHV0LnNsaWNlKHBvc2l0aW9uLCB0aGlzLnBvc2l0aW9uKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZWFkQWxpYXMoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMucGVlaygpICE9PSBBU1RFUklTSykgcmV0dXJuIGZhbHNlO1xuXG4gICAgbGV0IGNoID0gdGhpcy5uZXh0KCk7XG5cbiAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMucG9zaXRpb247XG5cbiAgICB3aGlsZSAoY2ggIT09IDAgJiYgIWlzV2hpdGVTcGFjZU9yRU9MKGNoKSAmJiAhaXNGbG93SW5kaWNhdG9yKGNoKSkge1xuICAgICAgY2ggPSB0aGlzLm5leHQoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wb3NpdGlvbiA9PT0gcG9zaXRpb24pIHtcbiAgICAgIHRocm93IHRoaXMuI2NyZWF0ZUVycm9yKFxuICAgICAgICBcIkNhbm5vdCByZWFkIGFsaWFzOiBhbGlhcyBuYW1lIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGFsaWFzID0gdGhpcy5pbnB1dC5zbGljZShwb3NpdGlvbiwgdGhpcy5wb3NpdGlvbik7XG4gICAgaWYgKCF0aGlzLmFuY2hvck1hcC5oYXMoYWxpYXMpKSB7XG4gICAgICB0aHJvdyB0aGlzLiNjcmVhdGVFcnJvcihcbiAgICAgICAgYENhbm5vdCByZWFkIGFsaWFzOiB1bmlkZW50aWZpZWQgYWxpYXMgXCIke2FsaWFzfVwiYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXN1bHQgPSB0aGlzLmFuY2hvck1hcC5nZXQoYWxpYXMpO1xuICAgIHRoaXMuc2tpcFNlcGFyYXRpb25TcGFjZSh0cnVlLCAtMSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb21wb3NlTm9kZShcbiAgICBwYXJlbnRJbmRlbnQ6IG51bWJlcixcbiAgICBub2RlQ29udGV4dDogbnVtYmVyLFxuICAgIGFsbG93VG9TZWVrOiBib29sZWFuLFxuICAgIGFsbG93Q29tcGFjdDogYm9vbGVhbixcbiAgKTogYm9vbGVhbiB7XG4gICAgbGV0IGluZGVudFN0YXR1cyA9IDE7IC8vIDE6IHRoaXM+cGFyZW50LCAwOiB0aGlzPXBhcmVudCwgLTE6IHRoaXM8cGFyZW50XG4gICAgbGV0IGF0TmV3TGluZSA9IGZhbHNlO1xuICAgIGxldCBoYXNDb250ZW50ID0gZmFsc2U7XG4gICAgbGV0IHR5cGU6IFR5cGU8S2luZFR5cGU+O1xuXG4gICAgdGhpcy50YWcgPSBudWxsO1xuICAgIHRoaXMuYW5jaG9yID0gbnVsbDtcbiAgICB0aGlzLmtpbmQgPSBudWxsO1xuICAgIHRoaXMucmVzdWx0ID0gbnVsbDtcblxuICAgIGNvbnN0IGFsbG93QmxvY2tTY2FsYXJzID0gQ09OVEVYVF9CTE9DS19PVVQgPT09IG5vZGVDb250ZXh0IHx8XG4gICAgICBDT05URVhUX0JMT0NLX0lOID09PSBub2RlQ29udGV4dDtcblxuICAgIGxldCBhbGxvd0Jsb2NrQ29sbGVjdGlvbnMgPSBhbGxvd0Jsb2NrU2NhbGFycztcbiAgICBjb25zdCBhbGxvd0Jsb2NrU3R5bGVzID0gYWxsb3dCbG9ja1NjYWxhcnM7XG5cbiAgICBpZiAoYWxsb3dUb1NlZWspIHtcbiAgICAgIGlmICh0aGlzLnNraXBTZXBhcmF0aW9uU3BhY2UodHJ1ZSwgLTEpKSB7XG4gICAgICAgIGF0TmV3TGluZSA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMubGluZUluZGVudCA+IHBhcmVudEluZGVudCkge1xuICAgICAgICAgIGluZGVudFN0YXR1cyA9IDE7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5saW5lSW5kZW50ID09PSBwYXJlbnRJbmRlbnQpIHtcbiAgICAgICAgICBpbmRlbnRTdGF0dXMgPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubGluZUluZGVudCA8IHBhcmVudEluZGVudCkge1xuICAgICAgICAgIGluZGVudFN0YXR1cyA9IC0xO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGluZGVudFN0YXR1cyA9PT0gMSkge1xuICAgICAgd2hpbGUgKHRoaXMucmVhZFRhZ1Byb3BlcnR5KCkgfHwgdGhpcy5yZWFkQW5jaG9yUHJvcGVydHkoKSkge1xuICAgICAgICBpZiAodGhpcy5za2lwU2VwYXJhdGlvblNwYWNlKHRydWUsIC0xKSkge1xuICAgICAgICAgIGF0TmV3TGluZSA9IHRydWU7XG4gICAgICAgICAgYWxsb3dCbG9ja0NvbGxlY3Rpb25zID0gYWxsb3dCbG9ja1N0eWxlcztcblxuICAgICAgICAgIGlmICh0aGlzLmxpbmVJbmRlbnQgPiBwYXJlbnRJbmRlbnQpIHtcbiAgICAgICAgICAgIGluZGVudFN0YXR1cyA9IDE7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmxpbmVJbmRlbnQgPT09IHBhcmVudEluZGVudCkge1xuICAgICAgICAgICAgaW5kZW50U3RhdHVzID0gMDtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubGluZUluZGVudCA8IHBhcmVudEluZGVudCkge1xuICAgICAgICAgICAgaW5kZW50U3RhdHVzID0gLTE7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFsbG93QmxvY2tDb2xsZWN0aW9ucyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGFsbG93QmxvY2tDb2xsZWN0aW9ucykge1xuICAgICAgYWxsb3dCbG9ja0NvbGxlY3Rpb25zID0gYXROZXdMaW5lIHx8IGFsbG93Q29tcGFjdDtcbiAgICB9XG5cbiAgICBpZiAoaW5kZW50U3RhdHVzID09PSAxIHx8IENPTlRFWFRfQkxPQ0tfT1VUID09PSBub2RlQ29udGV4dCkge1xuICAgICAgY29uc3QgY29uZCA9IENPTlRFWFRfRkxPV19JTiA9PT0gbm9kZUNvbnRleHQgfHxcbiAgICAgICAgQ09OVEVYVF9GTE9XX09VVCA9PT0gbm9kZUNvbnRleHQ7XG4gICAgICBjb25zdCBmbG93SW5kZW50ID0gY29uZCA/IHBhcmVudEluZGVudCA6IHBhcmVudEluZGVudCArIDE7XG5cbiAgICAgIGNvbnN0IGJsb2NrSW5kZW50ID0gdGhpcy5wb3NpdGlvbiAtIHRoaXMubGluZVN0YXJ0O1xuXG4gICAgICBpZiAoaW5kZW50U3RhdHVzID09PSAxKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAoYWxsb3dCbG9ja0NvbGxlY3Rpb25zICYmXG4gICAgICAgICAgICAodGhpcy5yZWFkQmxvY2tTZXF1ZW5jZShibG9ja0luZGVudCkgfHxcbiAgICAgICAgICAgICAgdGhpcy5yZWFkQmxvY2tNYXBwaW5nKGJsb2NrSW5kZW50LCBmbG93SW5kZW50KSkpIHx8XG4gICAgICAgICAgdGhpcy5yZWFkRmxvd0NvbGxlY3Rpb24oZmxvd0luZGVudClcbiAgICAgICAgKSB7XG4gICAgICAgICAgaGFzQ29udGVudCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGFsbG93QmxvY2tTY2FsYXJzICYmIHRoaXMucmVhZEJsb2NrU2NhbGFyKGZsb3dJbmRlbnQpKSB8fFxuICAgICAgICAgICAgdGhpcy5yZWFkU2luZ2xlUXVvdGVkU2NhbGFyKGZsb3dJbmRlbnQpIHx8XG4gICAgICAgICAgICB0aGlzLnJlYWREb3VibGVRdW90ZWRTY2FsYXIoZmxvd0luZGVudClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGhhc0NvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZWFkQWxpYXMoKSkge1xuICAgICAgICAgICAgaGFzQ29udGVudCA9IHRydWU7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRhZyAhPT0gbnVsbCB8fCB0aGlzLmFuY2hvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICB0aHJvdyB0aGlzLiNjcmVhdGVFcnJvcihcbiAgICAgICAgICAgICAgICBcIkNhbm5vdCBjb21wb3NlIG5vZGU6IGFsaWFzIG5vZGUgc2hvdWxkIG5vdCBoYXZlIGFueSBwcm9wZXJ0aWVzXCIsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIHRoaXMucmVhZFBsYWluU2NhbGFyKGZsb3dJbmRlbnQsIENPTlRFWFRfRkxPV19JTiA9PT0gbm9kZUNvbnRleHQpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBoYXNDb250ZW50ID0gdHJ1ZTtcblxuICAgICAgICAgICAgaWYgKHRoaXMudGFnID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIHRoaXMudGFnID0gXCI/XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmFuY2hvck1hcC5zZXQodGhpcy5hbmNob3IsIHRoaXMucmVzdWx0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaW5kZW50U3RhdHVzID09PSAwKSB7XG4gICAgICAgIC8vIFNwZWNpYWwgY2FzZTogYmxvY2sgc2VxdWVuY2VzIGFyZSBhbGxvd2VkIHRvIGhhdmUgc2FtZSBpbmRlbnRhdGlvbiBsZXZlbCBhcyB0aGUgcGFyZW50LlxuICAgICAgICAvLyBodHRwOi8vd3d3LnlhbWwub3JnL3NwZWMvMS4yL3NwZWMuaHRtbCNpZDI3OTk3ODRcbiAgICAgICAgaGFzQ29udGVudCA9IGFsbG93QmxvY2tDb2xsZWN0aW9ucyAmJlxuICAgICAgICAgIHRoaXMucmVhZEJsb2NrU2VxdWVuY2UoYmxvY2tJbmRlbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnRhZyAhPT0gbnVsbCAmJiB0aGlzLnRhZyAhPT0gXCIhXCIpIHtcbiAgICAgIGlmICh0aGlzLnRhZyA9PT0gXCI/XCIpIHtcbiAgICAgICAgZm9yIChcbiAgICAgICAgICBsZXQgdHlwZUluZGV4ID0gMDtcbiAgICAgICAgICB0eXBlSW5kZXggPCB0aGlzLmltcGxpY2l0VHlwZXMubGVuZ3RoO1xuICAgICAgICAgIHR5cGVJbmRleCsrXG4gICAgICAgICkge1xuICAgICAgICAgIHR5cGUgPSB0aGlzLmltcGxpY2l0VHlwZXNbdHlwZUluZGV4XSE7XG5cbiAgICAgICAgICAvLyBJbXBsaWNpdCByZXNvbHZpbmcgaXMgbm90IGFsbG93ZWQgZm9yIG5vbi1zY2FsYXIgdHlwZXMsIGFuZCAnPydcbiAgICAgICAgICAvLyBub24tc3BlY2lmaWMgdGFnIGlzIG9ubHkgYXNzaWduZWQgdG8gcGxhaW4gc2NhbGFycy4gU28sIGl0IGlzbid0XG4gICAgICAgICAgLy8gbmVlZGVkIHRvIGNoZWNrIGZvciAna2luZCcgY29uZm9ybWl0eS5cblxuICAgICAgICAgIGlmICh0eXBlLnJlc29sdmUodGhpcy5yZXN1bHQpKSB7XG4gICAgICAgICAgICAvLyBgc3RhdGUucmVzdWx0YCB1cGRhdGVkIGluIHJlc29sdmVyIGlmIG1hdGNoZWRcbiAgICAgICAgICAgIHRoaXMucmVzdWx0ID0gdHlwZS5jb25zdHJ1Y3QodGhpcy5yZXN1bHQpO1xuICAgICAgICAgICAgdGhpcy50YWcgPSB0eXBlLnRhZztcbiAgICAgICAgICAgIGlmICh0aGlzLmFuY2hvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICB0aGlzLmFuY2hvck1hcC5zZXQodGhpcy5hbmNob3IsIHRoaXMucmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGVNYXBbdGhpcy5raW5kID8/IFwiZmFsbGJhY2tcIl0uaGFzKHRoaXMudGFnKSkge1xuICAgICAgICBjb25zdCBtYXAgPSB0aGlzLnR5cGVNYXBbdGhpcy5raW5kID8/IFwiZmFsbGJhY2tcIl07XG4gICAgICAgIHR5cGUgPSBtYXAuZ2V0KHRoaXMudGFnKSE7XG5cbiAgICAgICAgaWYgKHRoaXMucmVzdWx0ICE9PSBudWxsICYmIHR5cGUua2luZCAhPT0gdGhpcy5raW5kKSB7XG4gICAgICAgICAgdGhyb3cgdGhpcy4jY3JlYXRlRXJyb3IoXG4gICAgICAgICAgICBgVW5hY2NlcHRhYmxlIG5vZGUga2luZCBmb3IgITwke3RoaXMudGFnfT4gdGFnOiBpdCBzaG91bGQgYmUgXCIke3R5cGUua2luZH1cIiwgbm90IFwiJHt0aGlzLmtpbmR9XCJgLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXR5cGUucmVzb2x2ZSh0aGlzLnJlc3VsdCkpIHtcbiAgICAgICAgICAvLyBgc3RhdGUucmVzdWx0YCB1cGRhdGVkIGluIHJlc29sdmVyIGlmIG1hdGNoZWRcbiAgICAgICAgICB0aHJvdyB0aGlzLiNjcmVhdGVFcnJvcihcbiAgICAgICAgICAgIGBDYW5ub3QgcmVzb2x2ZSBhIG5vZGUgd2l0aCAhPCR7dGhpcy50YWd9PiBleHBsaWNpdCB0YWdgLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXN1bHQgPSB0eXBlLmNvbnN0cnVjdCh0aGlzLnJlc3VsdCk7XG4gICAgICAgICAgaWYgKHRoaXMuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmFuY2hvck1hcC5zZXQodGhpcy5hbmNob3IsIHRoaXMucmVzdWx0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IHRoaXMuI2NyZWF0ZUVycm9yKGBDYW5ub3QgcmVzb2x2ZSB1bmtub3duIHRhZyAhPCR7dGhpcy50YWd9PmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRhZyAhPT0gbnVsbCB8fCB0aGlzLmFuY2hvciAhPT0gbnVsbCB8fCBoYXNDb250ZW50O1xuICB9XG5cbiAgcmVhZERvY3VtZW50KCkge1xuICAgIGNvbnN0IGRvY3VtZW50U3RhcnQgPSB0aGlzLnBvc2l0aW9uO1xuXG4gICAgbGV0IGhhc0RpcmVjdGl2ZXMgPSBmYWxzZTtcblxuICAgIHRoaXMudmVyc2lvbiA9IG51bGw7XG4gICAgdGhpcy5jaGVja0xpbmVCcmVha3MgPSBmYWxzZTtcbiAgICB0aGlzLnRhZ01hcCA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLmFuY2hvck1hcCA9IG5ldyBNYXAoKTtcblxuICAgIGxldCBjaCA9IHRoaXMucGVlaygpO1xuICAgIHdoaWxlIChjaCAhPT0gMCkge1xuICAgICAgdGhpcy5za2lwU2VwYXJhdGlvblNwYWNlKHRydWUsIC0xKTtcblxuICAgICAgY2ggPSB0aGlzLnBlZWsoKTtcblxuICAgICAgaWYgKHRoaXMubGluZUluZGVudCA+IDAgfHwgY2ggIT09IFBFUkNFTlQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGhhc0RpcmVjdGl2ZXMgPSB0cnVlO1xuICAgICAgY2ggPSB0aGlzLm5leHQoKTtcbiAgICAgIGxldCBwb3NpdGlvbiA9IHRoaXMucG9zaXRpb247XG5cbiAgICAgIHdoaWxlIChjaCAhPT0gMCAmJiAhaXNXaGl0ZVNwYWNlT3JFT0woY2gpKSB7XG4gICAgICAgIGNoID0gdGhpcy5uZXh0KCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRpcmVjdGl2ZU5hbWUgPSB0aGlzLmlucHV0LnNsaWNlKHBvc2l0aW9uLCB0aGlzLnBvc2l0aW9uKTtcbiAgICAgIGNvbnN0IGRpcmVjdGl2ZUFyZ3MgPSBbXTtcblxuICAgICAgaWYgKGRpcmVjdGl2ZU5hbWUubGVuZ3RoIDwgMSkge1xuICAgICAgICB0aHJvdyB0aGlzLiNjcmVhdGVFcnJvcihcbiAgICAgICAgICBcIkNhbm5vdCByZWFkIGRvY3VtZW50OiBkaXJlY3RpdmUgbmFtZSBsZW5ndGggbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyb1wiLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICAgICAgdGhpcy5za2lwV2hpdGVzcGFjZXMoKTtcbiAgICAgICAgdGhpcy5za2lwQ29tbWVudCgpO1xuICAgICAgICBjaCA9IHRoaXMucGVlaygpO1xuXG4gICAgICAgIGlmIChpc0VPTChjaCkpIGJyZWFrO1xuXG4gICAgICAgIHBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbjtcblxuICAgICAgICB3aGlsZSAoY2ggIT09IDAgJiYgIWlzV2hpdGVTcGFjZU9yRU9MKGNoKSkge1xuICAgICAgICAgIGNoID0gdGhpcy5uZXh0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBkaXJlY3RpdmVBcmdzLnB1c2godGhpcy5pbnB1dC5zbGljZShwb3NpdGlvbiwgdGhpcy5wb3NpdGlvbikpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2ggIT09IDApIHRoaXMucmVhZExpbmVCcmVhaygpO1xuXG4gICAgICBzd2l0Y2ggKGRpcmVjdGl2ZU5hbWUpIHtcbiAgICAgICAgY2FzZSBcIllBTUxcIjpcbiAgICAgICAgICB0aGlzLnlhbWxEaXJlY3RpdmVIYW5kbGVyKC4uLmRpcmVjdGl2ZUFyZ3MpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiVEFHXCI6XG4gICAgICAgICAgdGhpcy50YWdEaXJlY3RpdmVIYW5kbGVyKC4uLmRpcmVjdGl2ZUFyZ3MpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRoaXMuZGlzcGF0Y2hXYXJuaW5nKFxuICAgICAgICAgICAgYHVua25vd24gZG9jdW1lbnQgZGlyZWN0aXZlIFwiJHtkaXJlY3RpdmVOYW1lfVwiYCxcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjaCA9IHRoaXMucGVlaygpO1xuICAgIH1cblxuICAgIHRoaXMuc2tpcFNlcGFyYXRpb25TcGFjZSh0cnVlLCAtMSk7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmxpbmVJbmRlbnQgPT09IDAgJiZcbiAgICAgIHRoaXMucGVlaygpID09PSBNSU5VUyAmJlxuICAgICAgdGhpcy5wZWVrKDEpID09PSBNSU5VUyAmJlxuICAgICAgdGhpcy5wZWVrKDIpID09PSBNSU5VU1xuICAgICkge1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSAzO1xuICAgICAgdGhpcy5za2lwU2VwYXJhdGlvblNwYWNlKHRydWUsIC0xKTtcbiAgICB9IGVsc2UgaWYgKGhhc0RpcmVjdGl2ZXMpIHtcbiAgICAgIHRocm93IHRoaXMuI2NyZWF0ZUVycm9yKFxuICAgICAgICBcIkNhbm5vdCByZWFkIGRvY3VtZW50OiBkaXJlY3RpdmVzIGVuZCBtYXJrIGlzIGV4cGVjdGVkXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuY29tcG9zZU5vZGUodGhpcy5saW5lSW5kZW50IC0gMSwgQ09OVEVYVF9CTE9DS19PVVQsIGZhbHNlLCB0cnVlKTtcbiAgICB0aGlzLnNraXBTZXBhcmF0aW9uU3BhY2UodHJ1ZSwgLTEpO1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy5jaGVja0xpbmVCcmVha3MgJiZcbiAgICAgIFBBVFRFUk5fTk9OX0FTQ0lJX0xJTkVfQlJFQUtTLnRlc3QoXG4gICAgICAgIHRoaXMuaW5wdXQuc2xpY2UoZG9jdW1lbnRTdGFydCwgdGhpcy5wb3NpdGlvbiksXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aGlzLmRpc3BhdGNoV2FybmluZyhcIm5vbi1BU0NJSSBsaW5lIGJyZWFrcyBhcmUgaW50ZXJwcmV0ZWQgYXMgY29udGVudFwiKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wb3NpdGlvbiA9PT0gdGhpcy5saW5lU3RhcnQgJiYgdGhpcy50ZXN0RG9jdW1lbnRTZXBhcmF0b3IoKSkge1xuICAgICAgaWYgKHRoaXMucGVlaygpID09PSBET1QpIHtcbiAgICAgICAgdGhpcy5wb3NpdGlvbiArPSAzO1xuICAgICAgICB0aGlzLnNraXBTZXBhcmF0aW9uU3BhY2UodHJ1ZSwgLTEpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5wb3NpdGlvbiA8IHRoaXMubGVuZ3RoIC0gMSkge1xuICAgICAgdGhyb3cgdGhpcy4jY3JlYXRlRXJyb3IoXG4gICAgICAgIFwiQ2Fubm90IHJlYWQgZG9jdW1lbnQ6IGVuZCBvZiB0aGUgc3RyZWFtIG9yIGEgZG9jdW1lbnQgc2VwYXJhdG9yIGlzIGV4cGVjdGVkXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlc3VsdDtcbiAgfVxuXG4gICpyZWFkRG9jdW1lbnRzKCkge1xuICAgIHdoaWxlICh0aGlzLnBvc2l0aW9uIDwgdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICB5aWVsZCB0aGlzLnJlYWREb2N1bWVudCgpO1xuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixvRkFBb0Y7QUFDcEYsMEVBQTBFO0FBQzFFLHFEQUFxRDtBQUVyRCxTQUNFLFNBQVMsRUFDVCxRQUFRLEVBQ1IsU0FBUyxFQUNULGVBQWUsRUFDZixLQUFLLEVBQ0wsS0FBSyxFQUNMLGFBQWEsRUFDYixHQUFHLEVBQ0gsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFDTCxlQUFlLEVBQ2YsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLFNBQVMsRUFDVCxLQUFLLEVBQ0wsT0FBTyxFQUNQLElBQUksRUFDSixRQUFRLEVBQ1IsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixLQUFLLEVBQ0wsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsYUFBYSxRQUNSLGNBQWM7QUFFckIsU0FBUyxjQUFjLFFBQW1DLGVBQWU7QUFFekUsU0FBUyxRQUFRLEVBQUUsYUFBYSxRQUFRLGNBQWM7QUFFdEQsTUFBTSxrQkFBa0I7QUFDeEIsTUFBTSxtQkFBbUI7QUFDekIsTUFBTSxtQkFBbUI7QUFDekIsTUFBTSxvQkFBb0I7QUFFMUIsTUFBTSxnQkFBZ0I7QUFDdEIsTUFBTSxpQkFBaUI7QUFDdkIsTUFBTSxnQkFBZ0I7QUFFdEIsTUFBTSx3QkFDSixvQ0FBb0M7QUFDcEM7QUFDRixNQUFNLGdDQUFnQztBQUN0QyxNQUFNLDBCQUEwQjtBQUNoQyxNQUFNLHFCQUFxQjtBQUMzQixNQUFNLGtCQUNKO0FBV0YsTUFBTSxzQkFBc0IsSUFBSSxJQUFvQjtFQUNsRDtJQUFDO0lBQU07R0FBRTtFQUNUO0lBQUM7SUFBTTtHQUFFO0VBQ1Q7SUFBQztJQUFNO0dBQUU7Q0FDVjtBQUVELE1BQU0sMEJBQTBCLElBQUksSUFBb0I7RUFDdEQ7SUFBQztJQUFNO0dBQU87RUFDZDtJQUFDO0lBQU07R0FBTztFQUNkO0lBQUM7SUFBTTtHQUFPO0VBQ2Q7SUFBQztJQUFNO0dBQU87RUFDZDtJQUFDO0lBQU07R0FBTztFQUNkO0lBQUM7SUFBTTtHQUFPO0VBQ2Q7SUFBQztJQUFNO0dBQU87RUFDZDtJQUFDO0lBQU07R0FBTztFQUNkO0lBQUM7SUFBTTtHQUFPO0VBQ2Q7SUFBQztJQUFNO0dBQU87RUFDZDtJQUFDO0lBQU07R0FBSTtFQUNYO0lBQUM7SUFBTTtHQUFJO0VBQ1g7SUFBQztJQUFNO0dBQUk7RUFDWDtJQUFDO0lBQU07R0FBSztFQUNaO0lBQUM7SUFBTTtHQUFPO0VBQ2Q7SUFBQztJQUFNO0dBQU87RUFDZDtJQUFDO0lBQU07R0FBUztFQUNoQjtJQUFDO0lBQU07R0FBUztDQUNqQjtBQUVEOztDQUVDLEdBQ0QsU0FBUyxvQkFBb0IsUUFBZ0I7RUFDM0MsNkRBQTZEO0VBQzdELElBQUksUUFBUSxZQUFZLFlBQVksTUFBTSxPQUFPLFdBQVcsTUFBTSx5QkFBeUI7RUFFM0YsNkRBQTZEO0VBQzdELE1BQU0sS0FBSyxXQUFXO0VBRXRCLDZEQUE2RDtFQUM3RCxJQUFJLFFBQVEsTUFBTSxNQUFNLE1BQU0sT0FBTyxLQUFLLE9BQU8sSUFBSSwyQkFBMkI7RUFFaEYsT0FBTyxDQUFDO0FBQ1Y7QUFFQTs7Q0FFQyxHQUNELFNBQVMsd0JBQXdCLFFBQWdCO0VBQy9DLDZEQUE2RDtFQUM3RCxJQUFJLFFBQVEsWUFBWSxZQUFZLE1BQU0sT0FBTyxXQUFXLE1BQU0seUJBQXlCO0VBQzNGLE9BQU8sQ0FBQztBQUNWO0FBRUE7O0NBRUMsR0FDRCxTQUFTLGdCQUFnQixTQUFpQjtFQUN4Qyx1RUFBdUU7RUFDdkUsSUFBSSxhQUFhLFFBQVEsT0FBTyxPQUFPLFlBQVksQ0FBQyxZQUFZLHNDQUFzQztFQUV0RywwREFBMEQ7RUFDMUQsdUZBQXVGO0VBQ3ZGLE9BQU8sT0FBTyxZQUFZLENBQ3hCLENBQUMsQUFBQyxZQUFZLFlBQWEsRUFBRSxJQUFJLFFBQ2pDLENBQUMsQUFBQyxZQUFZLFdBQVksTUFBTSxJQUFJO0FBRXhDO0FBRUEsTUFBTSxTQUFTO0FBQ2YsTUFBTSxhQUFhO0FBQ25CLE1BQU0sYUFBYTtBQUVuQixTQUFTLFdBQVcsTUFBYyxFQUFFLFFBQWdCO0VBQ2xELElBQUksQ0FBQyxRQUFRLE9BQU87RUFDcEIsSUFBSSxRQUFRO0VBQ1osSUFBSSxNQUFNO0VBQ1YsSUFBSSxPQUFPO0VBQ1gsSUFBSSxPQUFPO0VBRVgsTUFBTyxRQUFRLEtBQUssQ0FBQyxXQUFXLFFBQVEsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxRQUFRLElBQUs7SUFDbEU7SUFDQSxJQUFJLFdBQVcsUUFBUSxhQUFhLElBQUksR0FBRztNQUN6QyxPQUFPO01BQ1AsU0FBUztNQUNUO0lBQ0Y7RUFDRjtFQUVBLE1BQU8sTUFBTSxPQUFPLE1BQU0sSUFBSSxDQUFDLFdBQVcsUUFBUSxDQUFDLE9BQU8sTUFBTSxDQUFDLE1BQU87SUFDdEU7SUFDQSxJQUFJLE1BQU0sV0FBVyxhQUFhLElBQUksR0FBRztNQUN2QyxPQUFPO01BQ1AsT0FBTztNQUNQO0lBQ0Y7RUFDRjtFQUVBLE1BQU0sVUFBVSxPQUFPLEtBQUssQ0FBQyxPQUFPO0VBQ3BDLE1BQU0sU0FBUyxJQUFJLE1BQU0sQ0FBQztFQUMxQixNQUFNLGNBQWMsSUFBSSxNQUFNLENBQUMsU0FBUyxXQUFXLFFBQVEsS0FBSyxNQUFNO0VBQ3RFLE9BQU8sR0FBRyxTQUFTLE9BQU8sVUFBVSxLQUFLLEVBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUM3RDtBQUVBLFNBQVMsYUFDUCxNQUFjLEVBQ2QsUUFBZ0IsRUFDaEIsSUFBWSxFQUNaLE1BQWM7RUFFZCxJQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEdBQUc7RUFDdkQsTUFBTSxVQUFVLFdBQVcsUUFBUTtFQUNuQyxJQUFJLFNBQVMsU0FBUyxDQUFDLEdBQUcsRUFBRSxTQUFTO0VBQ3JDLE9BQU87QUFDVDtBQUVBLE9BQU8sTUFBTTtFQUNYLE1BQWM7RUFDZCxPQUFlO0VBQ2YsYUFBYSxFQUFFO0VBQ2YsWUFBWSxFQUFFO0VBQ2QsV0FBVyxFQUFFO0VBQ2IsT0FBTyxFQUFFO0VBQ1QsVUFBZ0Q7RUFDaEQsbUJBQTRCO0VBQzVCLGNBQWdDO0VBQ2hDLFFBQWlCO0VBRWpCLFFBQXVCO0VBQ3ZCLGtCQUFrQixNQUFNO0VBQ3hCLFNBQVMsSUFBSSxNQUFNO0VBQ25CLFlBQVksSUFBSSxNQUFNO0VBQ3RCLElBQStCO0VBQy9CLE9BQWtDO0VBQ2xDLEtBQWdDO0VBQ2hDLFNBQThELEdBQUc7RUFFakUsWUFDRSxLQUFhLEVBQ2IsRUFDRSxTQUFTLGNBQWMsRUFDdkIsU0FBUyxFQUNULHFCQUFxQixLQUFLLEVBQ1AsQ0FDckI7SUFDQSxJQUFJLENBQUMsS0FBSyxHQUFHO0lBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRztJQUNqQixJQUFJLENBQUMsa0JBQWtCLEdBQUc7SUFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLGFBQWE7SUFDekMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLE9BQU87SUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLE1BQU07SUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRztJQUVmLElBQUksQ0FBQyxVQUFVO0VBQ2pCO0VBRUEsa0JBQWtCO0lBQ2hCLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSTtJQUNsQixNQUFPLGFBQWEsSUFBSztNQUN2QixLQUFLLElBQUksQ0FBQyxJQUFJO0lBQ2hCO0VBQ0Y7RUFFQSxjQUFjO0lBQ1osSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJO0lBQ2xCLElBQUksT0FBTyxPQUFPO0lBQ2xCLEtBQUssSUFBSSxDQUFDLElBQUk7SUFDZCxNQUFPLE9BQU8sS0FBSyxDQUFDLE1BQU0sSUFBSztNQUM3QixLQUFLLElBQUksQ0FBQyxJQUFJO0lBQ2hCO0VBQ0Y7RUFFQSxhQUFhO0lBQ1gsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJO0lBQ3BCLE1BQU8sU0FBUyxNQUFPO01BQ3JCLElBQUksQ0FBQyxVQUFVLElBQUk7TUFDbkIsT0FBTyxJQUFJLENBQUMsSUFBSTtJQUNsQjtFQUNGO0VBRUEsS0FBSyxTQUFTLENBQUMsRUFBRTtJQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRztFQUMvQztFQUNBLE9BQU87SUFDTCxJQUFJLENBQUMsUUFBUSxJQUFJO0lBQ2pCLE9BQU8sSUFBSSxDQUFDLElBQUk7RUFDbEI7RUFFQSxDQUFBLFdBQVksQ0FBQyxPQUFlO0lBQzFCLE1BQU0sT0FBTyxhQUNYLElBQUksQ0FBQyxLQUFLLEVBQ1YsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVM7SUFFaEMsT0FBTyxJQUFJLFlBQVksR0FBRyxRQUFRLENBQUMsRUFBRSxNQUFNO0VBQzdDO0VBRUEsZ0JBQWdCLE9BQWUsRUFBRTtJQUMvQixNQUFNLFFBQVEsSUFBSSxDQUFDLENBQUEsV0FBWSxDQUFDO0lBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUc7RUFDbkI7RUFFQSxxQkFBcUIsR0FBRyxJQUFjLEVBQUU7SUFDdEMsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLE1BQU07TUFDekIsTUFBTSxJQUFJLENBQUMsQ0FBQSxXQUFZLENBQ3JCO0lBRUo7SUFFQSxJQUFJLEtBQUssTUFBTSxLQUFLLEdBQUc7TUFDckIsTUFBTSxJQUFJLENBQUMsQ0FBQSxXQUFZLENBQ3JCO0lBRUo7SUFFQSxNQUFNLFFBQVEsdUJBQXVCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUNqRCxJQUFJLFVBQVUsTUFBTTtNQUNsQixNQUFNLElBQUksQ0FBQyxDQUFBLFdBQVksQ0FDckI7SUFFSjtJQUVBLE1BQU0sUUFBUSxTQUFTLEtBQUssQ0FBQyxFQUFFLEVBQUc7SUFDbEMsTUFBTSxRQUFRLFNBQVMsS0FBSyxDQUFDLEVBQUUsRUFBRztJQUNsQyxJQUFJLFVBQVUsR0FBRztNQUNmLE1BQU0sSUFBSSxDQUFDLENBQUEsV0FBWSxDQUNyQjtJQUVKO0lBRUEsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJO0lBQzFCLElBQUksQ0FBQyxlQUFlLEdBQUcsUUFBUTtJQUMvQixJQUFJLFVBQVUsS0FBSyxVQUFVLEdBQUc7TUFDOUIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUN6QjtJQUVKO0VBQ0Y7RUFDQSxvQkFBb0IsR0FBRyxJQUFjLEVBQUU7SUFDckMsSUFBSSxLQUFLLE1BQU0sS0FBSyxHQUFHO01BQ3JCLE1BQU0sSUFBSSxDQUFDLENBQUEsV0FBWSxDQUNyQixDQUFDLCtFQUErRSxFQUFFLEtBQUssTUFBTSxFQUFFO0lBRW5HO0lBRUEsTUFBTSxTQUFTLElBQUksQ0FBQyxFQUFFO0lBQ3RCLE1BQU0sU0FBUyxJQUFJLENBQUMsRUFBRTtJQUV0QixJQUFJLENBQUMsbUJBQW1CLElBQUksQ0FBQyxTQUFTO01BQ3BDLE1BQU0sSUFBSSxDQUFDLENBQUEsV0FBWSxDQUNyQixDQUFDLG9FQUFvRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXBGO0lBRUEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTO01BQzNCLE1BQU0sSUFBSSxDQUFDLENBQUEsV0FBWSxDQUNyQixDQUFDLDZEQUE2RCxFQUFFLE9BQU8sWUFBWSxDQUFDO0lBRXhGO0lBRUEsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsU0FBUztNQUNqQyxNQUFNLElBQUksQ0FBQyxDQUFBLFdBQVksQ0FDckI7SUFFSjtJQUVBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVE7RUFDMUI7RUFDQSxlQUFlLEtBQWEsRUFBRSxHQUFXLEVBQUUsU0FBa0IsRUFBRTtJQUM3RCxJQUFJLFFBQVEsS0FBSztNQUNmLE1BQU0sU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPO01BRXZDLElBQUksV0FBVztRQUNiLElBQ0UsSUFBSSxXQUFXLEdBQ2YsV0FBVyxPQUFPLE1BQU0sRUFDeEIsV0FDQTtVQUNBLE1BQU0sWUFBWSxPQUFPLFVBQVUsQ0FBQztVQUNwQyxJQUNFLENBQUMsQ0FBQyxjQUFjLFFBQ2IsUUFBUSxhQUFhLGFBQWEsUUFBUyxHQUM5QztZQUNBLE1BQU0sSUFBSSxDQUFDLENBQUEsV0FBWSxDQUNyQixDQUFDLHlDQUF5QyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1VBRTVEO1FBQ0Y7TUFDRixPQUFPLElBQUksc0JBQXNCLElBQUksQ0FBQyxTQUFTO1FBQzdDLE1BQU0sSUFBSSxDQUFDLENBQUEsV0FBWSxDQUFDO01BQzFCO01BRUEsSUFBSSxDQUFDLE1BQU0sSUFBSTtJQUNqQjtFQUNGO0VBQ0Esa0JBQWtCLFVBQWtCLEVBQVc7SUFDN0MsSUFBSSxXQUFXO0lBRWYsTUFBTSxNQUFNLElBQUksQ0FBQyxHQUFHO0lBQ3BCLE1BQU0sU0FBUyxJQUFJLENBQUMsTUFBTTtJQUMxQixNQUFNLFNBQW9CLEVBQUU7SUFFNUIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLGFBQWE7TUFDOUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtJQUNsQztJQUVBLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSTtJQUVsQixNQUFPLE9BQU8sRUFBRztNQUNmLElBQUksT0FBTyxPQUFPO1FBQ2hCO01BQ0Y7TUFFQSxNQUFNLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQztNQUU1QixJQUFJLENBQUMsa0JBQWtCLFlBQVk7UUFDakM7TUFDRjtNQUVBLFdBQVc7TUFDWCxJQUFJLENBQUMsUUFBUTtNQUViLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxJQUFJO1FBQ3RDLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxZQUFZO1VBQ2pDLE9BQU8sSUFBSSxDQUFDO1VBQ1osS0FBSyxJQUFJLENBQUMsSUFBSTtVQUNkO1FBQ0Y7TUFDRjtNQUVBLE1BQU0sT0FBTyxJQUFJLENBQUMsSUFBSTtNQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksa0JBQWtCLE9BQU87TUFDdEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07TUFDdkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztNQUVoQyxLQUFLLElBQUksQ0FBQyxJQUFJO01BRWQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsS0FBSyxPQUFPLEdBQUc7UUFDcEUsTUFBTSxJQUFJLENBQUMsQ0FBQSxXQUFZLENBQ3JCO01BRUosT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsWUFBWTtRQUN2QztNQUNGO0lBQ0Y7SUFFQSxJQUFJLFVBQVU7TUFDWixJQUFJLENBQUMsR0FBRyxHQUFHO01BQ1gsSUFBSSxDQUFDLE1BQU0sR0FBRztNQUNkLElBQUksQ0FBQyxJQUFJLEdBQUc7TUFDWixJQUFJLENBQUMsTUFBTSxHQUFHO01BQ2QsT0FBTztJQUNUO0lBQ0EsT0FBTztFQUNUO0VBQ0EsY0FDRSxXQUFvQyxFQUNwQyxNQUErQixFQUMvQixlQUE0QixFQUM1QjtJQUNBLElBQUksQ0FBQyxTQUFTLFNBQVM7TUFDckIsTUFBTSxJQUFJLENBQUMsQ0FBQSxXQUFZLENBQ3JCO0lBRUo7SUFFQSxLQUFLLE1BQU0sQ0FBQyxLQUFLLE1BQU0sSUFBSSxPQUFPLE9BQU8sQ0FBQyxRQUFTO01BQ2pELElBQUksT0FBTyxNQUFNLENBQUMsYUFBYSxNQUFNO01BQ3JDLE9BQU8sY0FBYyxDQUFDLGFBQWEsS0FBSztRQUN0QztRQUNBLFVBQVU7UUFDVixZQUFZO1FBQ1osY0FBYztNQUNoQjtNQUNBLGdCQUFnQixHQUFHLENBQUM7SUFDdEI7RUFDRjtFQUNBLGlCQUNFLE1BQStCLEVBQy9CLGVBQTRCLEVBQzVCLE1BQXFCLEVBQ3JCLE9BQWlFLEVBQ2pFLFNBQWtCLEVBQ2xCLFNBQWtCLEVBQ2xCLFFBQWlCLEVBQ1E7SUFDekIsa0VBQWtFO0lBQ2xFLDRFQUE0RTtJQUM1RSxtRUFBbUU7SUFDbkUsSUFBSSxNQUFNLE9BQU8sQ0FBQyxVQUFVO01BQzFCLFVBQVUsTUFBTSxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztNQUVyQyxJQUFLLElBQUksUUFBUSxHQUFHLFFBQVEsUUFBUSxNQUFNLEVBQUUsUUFBUztRQUNuRCxJQUFJLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUc7VUFDakMsTUFBTSxJQUFJLENBQUMsQ0FBQSxXQUFZLENBQ3JCO1FBRUo7UUFFQSxJQUFJLE9BQU8sWUFBWSxZQUFZLGNBQWMsT0FBTyxDQUFDLE1BQU0sR0FBRztVQUNoRSxPQUFPLENBQUMsTUFBTSxHQUFHO1FBQ25CO01BQ0Y7SUFDRjtJQUVBLHVEQUF1RDtJQUN2RCxzREFBc0Q7SUFDdEQsb0VBQW9FO0lBQ3BFLElBQUksT0FBTyxZQUFZLFlBQVksY0FBYyxVQUFVO01BQ3pELFVBQVU7SUFDWjtJQUVBLFVBQVUsT0FBTztJQUVqQixJQUFJLFdBQVcsMkJBQTJCO01BQ3hDLElBQUksTUFBTSxPQUFPLENBQUMsWUFBWTtRQUM1QixJQUNFLElBQUksUUFBUSxHQUNaLFFBQVEsVUFBVSxNQUFNLEVBQ3hCLFFBQ0E7VUFDQSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsU0FBUyxDQUFDLE1BQU0sRUFBRTtRQUMvQztNQUNGLE9BQU87UUFDTCxJQUFJLENBQUMsYUFBYSxDQUNoQixRQUNBLFdBQ0E7TUFFSjtJQUNGLE9BQU87TUFDTCxJQUNFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUN4QixDQUFDLGdCQUFnQixHQUFHLENBQUMsWUFDckIsT0FBTyxNQUFNLENBQUMsUUFBUSxVQUN0QjtRQUNBLElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxJQUFJLENBQUMsSUFBSTtRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFlBQVksSUFBSSxDQUFDLFFBQVE7UUFDekMsTUFBTSxJQUFJLENBQUMsQ0FBQSxXQUFZLENBQUM7TUFDMUI7TUFDQSxPQUFPLGNBQWMsQ0FBQyxRQUFRLFNBQVM7UUFDckMsT0FBTztRQUNQLFVBQVU7UUFDVixZQUFZO1FBQ1osY0FBYztNQUNoQjtNQUNBLGdCQUFnQixNQUFNLENBQUM7SUFDekI7SUFFQSxPQUFPO0VBQ1Q7RUFDQSxnQkFBZ0I7SUFDZCxNQUFNLEtBQUssSUFBSSxDQUFDLElBQUk7SUFFcEIsSUFBSSxPQUFPLFdBQVc7TUFDcEIsSUFBSSxDQUFDLFFBQVE7SUFDZixPQUFPLElBQUksT0FBTyxpQkFBaUI7TUFDakMsSUFBSSxDQUFDLFFBQVE7TUFDYixJQUFJLElBQUksQ0FBQyxJQUFJLE9BQU8sV0FBVztRQUM3QixJQUFJLENBQUMsUUFBUTtNQUNmO0lBQ0YsT0FBTztNQUNMLE1BQU0sSUFBSSxDQUFDLENBQUEsV0FBWSxDQUFDO0lBQzFCO0lBRUEsSUFBSSxDQUFDLElBQUksSUFBSTtJQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVE7RUFDaEM7RUFDQSxvQkFBb0IsYUFBc0IsRUFBRSxXQUFtQixFQUFVO0lBQ3ZFLElBQUksYUFBYTtJQUNqQixJQUFJLEtBQUssSUFBSSxDQUFDLElBQUk7SUFFbEIsTUFBTyxPQUFPLEVBQUc7TUFDZixJQUFJLENBQUMsZUFBZTtNQUNwQixLQUFLLElBQUksQ0FBQyxJQUFJO01BRWQsSUFBSSxlQUFlO1FBQ2pCLElBQUksQ0FBQyxXQUFXO1FBQ2hCLEtBQUssSUFBSSxDQUFDLElBQUk7TUFDaEI7TUFFQSxJQUFJLE1BQU0sS0FBSztRQUNiLElBQUksQ0FBQyxhQUFhO1FBRWxCLEtBQUssSUFBSSxDQUFDLElBQUk7UUFDZDtRQUNBLElBQUksQ0FBQyxVQUFVLEdBQUc7UUFFbEIsSUFBSSxDQUFDLFVBQVU7UUFDZixLQUFLLElBQUksQ0FBQyxJQUFJO01BQ2hCLE9BQU87UUFDTDtNQUNGO0lBQ0Y7SUFFQSxJQUNFLGdCQUFnQixDQUFDLEtBQ2pCLGVBQWUsS0FDZixJQUFJLENBQUMsVUFBVSxHQUFHLGFBQ2xCO01BQ0EsSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUN2QjtJQUVBLE9BQU87RUFDVDtFQUNBLHdCQUFpQztJQUMvQixJQUFJLEtBQUssSUFBSSxDQUFDLElBQUk7SUFFbEIsdURBQXVEO0lBQ3ZELHVFQUF1RTtJQUN2RSxJQUNFLENBQUMsT0FBTyxTQUFTLE9BQU8sR0FBRyxLQUMzQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFDakIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQ2pCO01BQ0EsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDO01BRWYsSUFBSSxPQUFPLEtBQUssa0JBQWtCLEtBQUs7UUFDckMsT0FBTztNQUNUO0lBQ0Y7SUFFQSxPQUFPO0VBQ1Q7RUFDQSxpQkFBaUIsS0FBYSxFQUFFO0lBQzlCLElBQUksVUFBVSxHQUFHO01BQ2YsSUFBSSxDQUFDLE1BQU0sSUFBSTtJQUNqQixPQUFPLElBQUksUUFBUSxHQUFHO01BQ3BCLElBQUksQ0FBQyxNQUFNLElBQUksS0FBSyxNQUFNLENBQUMsUUFBUTtJQUNyQztFQUNGO0VBQ0EsZ0JBQWdCLFVBQWtCLEVBQUUsb0JBQTZCLEVBQVc7SUFDMUUsTUFBTSxPQUFPLElBQUksQ0FBQyxJQUFJO0lBQ3RCLE1BQU0sU0FBUyxJQUFJLENBQUMsTUFBTTtJQUMxQixJQUFJLEtBQUssSUFBSSxDQUFDLElBQUk7SUFFbEIsSUFDRSxrQkFBa0IsT0FDbEIsZ0JBQWdCLE9BQ2hCLE9BQU8sU0FDUCxPQUFPLGFBQ1AsT0FBTyxZQUNQLE9BQU8sZUFDUCxPQUFPLGlCQUNQLE9BQU8sZ0JBQ1AsT0FBTyxnQkFDUCxPQUFPLGdCQUNQLE9BQU8sV0FDUCxPQUFPLGlCQUNQLE9BQU8sY0FDUDtNQUNBLE9BQU87SUFDVDtJQUVBLElBQUk7SUFDSixJQUFJLE9BQU8sWUFBWSxPQUFPLE9BQU87TUFDbkMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDO01BRXRCLElBQ0Usa0JBQWtCLGNBQ2pCLHdCQUF3QixnQkFBZ0IsWUFDekM7UUFDQSxPQUFPO01BQ1Q7SUFDRjtJQUVBLElBQUksQ0FBQyxJQUFJLEdBQUc7SUFDWixJQUFJLENBQUMsTUFBTSxHQUFHO0lBQ2QsSUFBSSxhQUFhLElBQUksQ0FBQyxRQUFRO0lBQzlCLElBQUksZUFBZSxJQUFJLENBQUMsUUFBUTtJQUNoQyxJQUFJLG9CQUFvQjtJQUN4QixJQUFJLE9BQU87SUFDWCxNQUFPLE9BQU8sRUFBRztNQUNmLElBQUksT0FBTyxPQUFPO1FBQ2hCLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQztRQUV0QixJQUNFLGtCQUFrQixjQUNqQix3QkFBd0IsZ0JBQWdCLFlBQ3pDO1VBQ0E7UUFDRjtNQUNGLE9BQU8sSUFBSSxPQUFPLE9BQU87UUFDdkIsTUFBTSxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU3QixJQUFJLGtCQUFrQixZQUFZO1VBQ2hDO1FBQ0Y7TUFDRixPQUFPLElBQ0wsQUFBQyxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLHFCQUFxQixNQUM5RCx3QkFBd0IsZ0JBQWdCLEtBQ3pDO1FBQ0E7TUFDRixPQUFPLElBQUksTUFBTSxLQUFLO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLElBQUk7UUFDaEIsTUFBTSxZQUFZLElBQUksQ0FBQyxTQUFTO1FBQ2hDLE1BQU0sYUFBYSxJQUFJLENBQUMsVUFBVTtRQUNsQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDO1FBRWpDLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxZQUFZO1VBQ2pDLG9CQUFvQjtVQUNwQixLQUFLLElBQUksQ0FBQyxJQUFJO1VBQ2Q7UUFDRixPQUFPO1VBQ0wsSUFBSSxDQUFDLFFBQVEsR0FBRztVQUNoQixJQUFJLENBQUMsSUFBSSxHQUFHO1VBQ1osSUFBSSxDQUFDLFNBQVMsR0FBRztVQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHO1VBQ2xCO1FBQ0Y7TUFDRjtNQUVBLElBQUksbUJBQW1CO1FBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxZQUFZO1FBQzlDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHO1FBQ2xDLGVBQWUsYUFBYSxJQUFJLENBQUMsUUFBUTtRQUN6QyxvQkFBb0I7TUFDdEI7TUFFQSxJQUFJLENBQUMsYUFBYSxLQUFLO1FBQ3JCLGFBQWEsSUFBSSxDQUFDLFFBQVEsR0FBRztNQUMvQjtNQUVBLEtBQUssSUFBSSxDQUFDLElBQUk7SUFDaEI7SUFFQSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsWUFBWTtJQUU5QyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7TUFDZixPQUFPO0lBQ1Q7SUFFQSxJQUFJLENBQUMsSUFBSSxHQUFHO0lBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRztJQUNkLE9BQU87RUFDVDtFQUNBLHVCQUF1QixVQUFrQixFQUFXO0lBQ2xELElBQUksS0FBSyxJQUFJLENBQUMsSUFBSTtJQUVsQixJQUFJLE9BQU8sY0FBYztNQUN2QixPQUFPO0lBQ1Q7SUFFQSxJQUFJLENBQUMsSUFBSSxHQUFHO0lBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRztJQUNkLElBQUksQ0FBQyxRQUFRO0lBQ2IsSUFBSSxlQUFlLElBQUksQ0FBQyxRQUFRO0lBQ2hDLElBQUksYUFBYSxJQUFJLENBQUMsUUFBUTtJQUU5QixLQUFLLElBQUksQ0FBQyxJQUFJO0lBQ2QsTUFBTyxPQUFPLEVBQUc7TUFDZixJQUFJLE9BQU8sY0FBYztRQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsSUFBSSxDQUFDLFFBQVEsRUFBRTtRQUNqRCxLQUFLLElBQUksQ0FBQyxJQUFJO1FBRWQsSUFBSSxPQUFPLGNBQWM7VUFDdkIsZUFBZSxJQUFJLENBQUMsUUFBUTtVQUM1QixJQUFJLENBQUMsUUFBUTtVQUNiLGFBQWEsSUFBSSxDQUFDLFFBQVE7UUFDNUIsT0FBTztVQUNMLE9BQU87UUFDVDtNQUNGLE9BQU8sSUFBSSxNQUFNLEtBQUs7UUFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLFlBQVk7UUFDOUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPO1FBQ3RELGVBQWUsYUFBYSxJQUFJLENBQUMsUUFBUTtNQUMzQyxPQUFPLElBQ0wsSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsU0FBUyxJQUNoQyxJQUFJLENBQUMscUJBQXFCLElBQzFCO1FBQ0EsTUFBTSxJQUFJLENBQUMsQ0FBQSxXQUFZLENBQ3JCO01BRUosT0FBTztRQUNMLElBQUksQ0FBQyxRQUFRO1FBQ2IsYUFBYSxJQUFJLENBQUMsUUFBUTtNQUM1QjtNQUNBLEtBQUssSUFBSSxDQUFDLElBQUk7SUFDaEI7SUFFQSxNQUFNLElBQUksQ0FBQyxDQUFBLFdBQVksQ0FDckI7RUFFSjtFQUNBLHVCQUF1QixVQUFrQixFQUFXO0lBQ2xELElBQUksS0FBSyxJQUFJLENBQUMsSUFBSTtJQUVsQixJQUFJLE9BQU8sY0FBYztNQUN2QixPQUFPO0lBQ1Q7SUFFQSxJQUFJLENBQUMsSUFBSSxHQUFHO0lBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRztJQUNkLElBQUksQ0FBQyxRQUFRO0lBQ2IsSUFBSSxhQUFhLElBQUksQ0FBQyxRQUFRO0lBQzlCLElBQUksZUFBZSxJQUFJLENBQUMsUUFBUTtJQUNoQyxJQUFJO0lBQ0osS0FBSyxJQUFJLENBQUMsSUFBSTtJQUNkLE1BQU8sT0FBTyxFQUFHO01BQ2YsSUFBSSxPQUFPLGNBQWM7UUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDakQsSUFBSSxDQUFDLFFBQVE7UUFDYixPQUFPO01BQ1Q7TUFDQSxJQUFJLE9BQU8sV0FBVztRQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsSUFBSSxDQUFDLFFBQVEsRUFBRTtRQUNqRCxLQUFLLElBQUksQ0FBQyxJQUFJO1FBRWQsSUFBSSxNQUFNLEtBQUs7VUFDYixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTztRQUNsQyxPQUFPLElBQUksS0FBSyxPQUFPLHdCQUF3QixHQUFHLENBQUMsS0FBSztVQUN0RCxJQUFJLENBQUMsTUFBTSxJQUFJLHdCQUF3QixHQUFHLENBQUM7VUFDM0MsSUFBSSxDQUFDLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRztVQUN2RCxJQUFJLFlBQVk7VUFDaEIsSUFBSSxZQUFZO1VBRWhCLE1BQU8sWUFBWSxHQUFHLFlBQWE7WUFDakMsS0FBSyxJQUFJLENBQUMsSUFBSTtZQUVkLElBQUksQ0FBQyxNQUFNLG9CQUFvQixHQUFHLEtBQUssR0FBRztjQUN4QyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUk7WUFDakMsT0FBTztjQUNMLE1BQU0sSUFBSSxDQUFDLENBQUEsV0FBWSxDQUNyQjtZQUVKO1VBQ0Y7VUFFQSxJQUFJLENBQUMsTUFBTSxJQUFJLGdCQUFnQjtVQUUvQixJQUFJLENBQUMsUUFBUTtRQUNmLE9BQU87VUFDTCxNQUFNLElBQUksQ0FBQyxDQUFBLFdBQVksQ0FDckI7UUFFSjtRQUVBLGVBQWUsYUFBYSxJQUFJLENBQUMsUUFBUTtNQUMzQyxPQUFPLElBQUksTUFBTSxLQUFLO1FBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxZQUFZO1FBQzlDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTztRQUN0RCxlQUFlLGFBQWEsSUFBSSxDQUFDLFFBQVE7TUFDM0MsT0FBTyxJQUNMLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFNBQVMsSUFDaEMsSUFBSSxDQUFDLHFCQUFxQixJQUMxQjtRQUNBLE1BQU0sSUFBSSxDQUFDLENBQUEsV0FBWSxDQUNyQjtNQUVKLE9BQU87UUFDTCxJQUFJLENBQUMsUUFBUTtRQUNiLGFBQWEsSUFBSSxDQUFDLFFBQVE7TUFDNUI7TUFDQSxLQUFLLElBQUksQ0FBQyxJQUFJO0lBQ2hCO0lBRUEsTUFBTSxJQUFJLENBQUMsQ0FBQSxXQUFZLENBQ3JCO0VBRUo7RUFDQSxtQkFBbUIsVUFBa0IsRUFBVztJQUM5QyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUk7SUFDbEIsSUFBSTtJQUNKLElBQUksWUFBWTtJQUNoQixJQUFJLFNBQVMsQ0FBQztJQUNkLElBQUksT0FBTyxxQkFBcUI7TUFDOUIsYUFBYTtNQUNiLFlBQVk7TUFDWixTQUFTLEVBQUU7SUFDYixPQUFPLElBQUksT0FBTyxvQkFBb0I7TUFDcEMsYUFBYTtJQUNmLE9BQU87TUFDTCxPQUFPO0lBQ1Q7SUFFQSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssYUFBYTtNQUM5RCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO0lBQ2xDO0lBRUEsS0FBSyxJQUFJLENBQUMsSUFBSTtJQUVkLE1BQU0sTUFBTSxJQUFJLENBQUMsR0FBRztJQUNwQixNQUFNLFNBQVMsSUFBSSxDQUFDLE1BQU07SUFDMUIsSUFBSSxXQUFXO0lBQ2YsSUFBSSxZQUFZO0lBQ2hCLElBQUksVUFBVTtJQUNkLElBQUksU0FBd0I7SUFDNUIsSUFBSSxpQkFBaUI7SUFDckIsSUFBSSxTQUFTO0lBQ2IsSUFBSSxZQUFZO0lBQ2hCLElBQUksT0FBTztJQUNYLE1BQU0sa0JBQWtCLElBQUk7SUFDNUIsTUFBTyxPQUFPLEVBQUc7TUFDZixJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTTtNQUUvQixLQUFLLElBQUksQ0FBQyxJQUFJO01BRWQsSUFBSSxPQUFPLFlBQVk7UUFDckIsSUFBSSxDQUFDLFFBQVE7UUFDYixJQUFJLENBQUMsR0FBRyxHQUFHO1FBQ1gsSUFBSSxDQUFDLE1BQU0sR0FBRztRQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsWUFBWSxZQUFZO1FBQ3BDLElBQUksQ0FBQyxNQUFNLEdBQUc7UUFDZCxPQUFPO01BQ1Q7TUFDQSxJQUFJLENBQUMsVUFBVTtRQUNiLE1BQU0sSUFBSSxDQUFDLENBQUEsV0FBWSxDQUNyQjtNQUVKO01BRUEsU0FBUyxVQUFVLFlBQVk7TUFDL0IsU0FBUyxpQkFBaUI7TUFFMUIsSUFBSSxPQUFPLFVBQVU7UUFDbkIsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDO1FBRXRCLElBQUksa0JBQWtCLFlBQVk7VUFDaEMsU0FBUyxpQkFBaUI7VUFDMUIsSUFBSSxDQUFDLFFBQVE7VUFDYixJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTTtRQUNqQztNQUNGO01BRUEsT0FBTyxJQUFJLENBQUMsSUFBSTtNQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksaUJBQWlCLE9BQU87TUFDckQsU0FBUyxJQUFJLENBQUMsR0FBRyxJQUFJO01BQ3JCLFVBQVUsSUFBSSxDQUFDLE1BQU07TUFDckIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU07TUFFL0IsS0FBSyxJQUFJLENBQUMsSUFBSTtNQUVkLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLEtBQUssT0FBTyxPQUFPO1FBQzFELFNBQVM7UUFDVCxLQUFLLElBQUksQ0FBQyxJQUFJO1FBQ2QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU07UUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLGlCQUFpQixPQUFPO1FBQ3JELFlBQVksSUFBSSxDQUFDLE1BQU07TUFDekI7TUFFQSxJQUFJLFdBQVc7UUFDYixJQUFJLENBQUMsZ0JBQWdCLENBQ25CLFFBQ0EsaUJBQ0EsUUFDQSxTQUNBO01BRUosT0FBTyxJQUFJLFFBQVE7UUFDaEIsT0FBcUMsSUFBSSxDQUN4QyxJQUFJLENBQUMsZ0JBQWdCLENBQ25CLENBQUMsR0FDRCxpQkFDQSxRQUNBLFNBQ0E7TUFHTixPQUFPO1FBQ0osT0FBcUIsSUFBSSxDQUFDO01BQzdCO01BRUEsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU07TUFFL0IsS0FBSyxJQUFJLENBQUMsSUFBSTtNQUVkLElBQUksT0FBTyxPQUFPO1FBQ2hCLFdBQVc7UUFDWCxLQUFLLElBQUksQ0FBQyxJQUFJO01BQ2hCLE9BQU87UUFDTCxXQUFXO01BQ2I7SUFDRjtJQUVBLE1BQU0sSUFBSSxDQUFDLENBQUEsV0FBWSxDQUNyQjtFQUVKO0VBQ0EsNkRBQTZEO0VBQzdELHNEQUFzRDtFQUN0RCxnQkFBZ0IsVUFBa0IsRUFBVztJQUMzQyxJQUFJLFdBQVc7SUFDZixJQUFJLGlCQUFpQjtJQUNyQixJQUFJLGlCQUFpQjtJQUNyQixJQUFJLGFBQWE7SUFDakIsSUFBSSxhQUFhO0lBQ2pCLElBQUksaUJBQWlCO0lBRXJCLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSTtJQUVsQixJQUFJLFVBQVU7SUFDZCxJQUFJLE9BQU8sZUFBZTtNQUN4QixVQUFVO0lBQ1osT0FBTyxJQUFJLE9BQU8sY0FBYztNQUM5QixVQUFVO0lBQ1osT0FBTztNQUNMLE9BQU87SUFDVDtJQUVBLElBQUksQ0FBQyxJQUFJLEdBQUc7SUFDWixJQUFJLENBQUMsTUFBTSxHQUFHO0lBRWQsSUFBSSxNQUFNO0lBQ1YsTUFBTyxPQUFPLEVBQUc7TUFDZixLQUFLLElBQUksQ0FBQyxJQUFJO01BRWQsSUFBSSxPQUFPLFFBQVEsT0FBTyxPQUFPO1FBQy9CLElBQUksa0JBQWtCLFVBQVU7VUFDOUIsV0FBVyxPQUFPLE9BQU8sZ0JBQWdCO1FBQzNDLE9BQU87VUFDTCxNQUFNLElBQUksQ0FBQyxDQUFBLFdBQVksQ0FDckI7UUFFSjtNQUNGLE9BQU8sSUFBSSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsS0FBSyxHQUFHO1FBQ25ELElBQUksUUFBUSxHQUFHO1VBQ2IsTUFBTSxJQUFJLENBQUMsQ0FBQSxXQUFZLENBQ3JCO1FBRUosT0FBTyxJQUFJLENBQUMsZ0JBQWdCO1VBQzFCLGFBQWEsYUFBYSxNQUFNO1VBQ2hDLGlCQUFpQjtRQUNuQixPQUFPO1VBQ0wsTUFBTSxJQUFJLENBQUMsQ0FBQSxXQUFZLENBQ3JCO1FBRUo7TUFDRixPQUFPO1FBQ0w7TUFDRjtJQUNGO0lBRUEsSUFBSSxhQUFhLEtBQUs7TUFDcEIsSUFBSSxDQUFDLGVBQWU7TUFDcEIsSUFBSSxDQUFDLFdBQVc7TUFDaEIsS0FBSyxJQUFJLENBQUMsSUFBSTtJQUNoQjtJQUVBLE1BQU8sT0FBTyxFQUFHO01BQ2YsSUFBSSxDQUFDLGFBQWE7TUFDbEIsSUFBSSxDQUFDLFVBQVUsR0FBRztNQUVsQixLQUFLLElBQUksQ0FBQyxJQUFJO01BRWQsTUFDRSxDQUFDLENBQUMsa0JBQWtCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxLQUNoRCxPQUFPLE1BQ1A7UUFDQSxJQUFJLENBQUMsVUFBVTtRQUNmLEtBQUssSUFBSSxDQUFDLElBQUk7TUFDaEI7TUFFQSxJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxVQUFVLEdBQUcsWUFBWTtRQUNuRCxhQUFhLElBQUksQ0FBQyxVQUFVO01BQzlCO01BRUEsSUFBSSxNQUFNLEtBQUs7UUFDYjtRQUNBO01BQ0Y7TUFFQSxxQkFBcUI7TUFDckIsSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLFlBQVk7UUFDaEMsd0JBQXdCO1FBQ3hCLElBQUksYUFBYSxlQUFlO1VBQzlCLElBQUksQ0FBQyxNQUFNLElBQUksS0FBSyxNQUFNLENBQ3hCLGlCQUFpQixJQUFJLGFBQWE7UUFFdEMsT0FBTyxJQUFJLGFBQWEsZUFBZTtVQUNyQyxJQUFJLGdCQUFnQjtZQUNsQix3Q0FBd0M7WUFDeEMsSUFBSSxDQUFDLE1BQU0sSUFBSTtVQUNqQjtRQUNGO1FBR0E7TUFDRjtNQUVBLHVEQUF1RDtNQUN2RCxJQUFJLFNBQVM7UUFDWCxtRkFBbUY7UUFDbkYsSUFBSSxhQUFhLEtBQUs7VUFDcEIsaUJBQWlCO1VBQ2pCLHNEQUFzRDtVQUN0RCxJQUFJLENBQUMsTUFBTSxJQUFJLEtBQUssTUFBTSxDQUN4QixpQkFBaUIsSUFBSSxhQUFhO1FBR3BDLDhCQUE4QjtRQUNoQyxPQUFPLElBQUksZ0JBQWdCO1VBQ3pCLGlCQUFpQjtVQUNqQixJQUFJLENBQUMsTUFBTSxJQUFJLEtBQUssTUFBTSxDQUFDLGFBQWE7UUFFeEMsbURBQW1EO1FBQ3JELE9BQU8sSUFBSSxlQUFlLEdBQUc7VUFDM0IsSUFBSSxnQkFBZ0I7WUFDbEIseURBQXlEO1lBQ3pELElBQUksQ0FBQyxNQUFNLElBQUk7VUFDakI7UUFFQSxxREFBcUQ7UUFDdkQsT0FBTztVQUNMLElBQUksQ0FBQyxNQUFNLElBQUksS0FBSyxNQUFNLENBQUM7UUFDN0I7TUFFQSw2RUFBNkU7TUFDL0UsT0FBTztRQUNMLHFEQUFxRDtRQUNyRCxJQUFJLENBQUMsTUFBTSxJQUFJLEtBQUssTUFBTSxDQUN4QixpQkFBaUIsSUFBSSxhQUFhO01BRXRDO01BRUEsaUJBQWlCO01BQ2pCLGlCQUFpQjtNQUNqQixhQUFhO01BQ2IsTUFBTSxlQUFlLElBQUksQ0FBQyxRQUFRO01BRWxDLE1BQU8sQ0FBQyxNQUFNLE9BQU8sT0FBTyxFQUFHO1FBQzdCLEtBQUssSUFBSSxDQUFDLElBQUk7TUFDaEI7TUFFQSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsSUFBSSxDQUFDLFFBQVEsRUFBRTtJQUNuRDtJQUVBLE9BQU87RUFDVDtFQUNBLGlCQUFpQixVQUFrQixFQUFFLFVBQWtCLEVBQVc7SUFDaEUsTUFBTSxNQUFNLElBQUksQ0FBQyxHQUFHO0lBQ3BCLE1BQU0sU0FBUyxJQUFJLENBQUMsTUFBTTtJQUMxQixNQUFNLFNBQVMsQ0FBQztJQUNoQixNQUFNLGtCQUFrQixJQUFJO0lBRTVCLElBQUksZUFBZTtJQUNuQixJQUFJO0lBQ0osSUFBSTtJQUNKLElBQUksU0FBUztJQUNiLElBQUksVUFBVTtJQUNkLElBQUksWUFBWTtJQUNoQixJQUFJLGdCQUFnQjtJQUNwQixJQUFJLFdBQVc7SUFFZixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssYUFBYTtNQUM5RCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO0lBQ2xDO0lBRUEsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJO0lBRWxCLE1BQU8sT0FBTyxFQUFHO01BQ2YsTUFBTSxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUM7TUFDNUIsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLHlCQUF5QjtNQUMzQyxNQUFNLElBQUksQ0FBQyxRQUFRO01BRW5CLEVBQUU7TUFDRix5REFBeUQ7TUFDekQsK0VBQStFO01BQy9FLEVBQUU7TUFDRixJQUFJLENBQUMsT0FBTyxZQUFZLE9BQU8sS0FBSyxLQUFLLGtCQUFrQixZQUFZO1FBQ3JFLElBQUksT0FBTyxVQUFVO1VBQ25CLElBQUksZUFBZTtZQUNqQixJQUFJLENBQUMsZ0JBQWdCLENBQ25CLFFBQ0EsaUJBQ0EsUUFDQSxTQUNBO1lBRUYsU0FBUztZQUNULFVBQVU7WUFDVixZQUFZO1VBQ2Q7VUFFQSxXQUFXO1VBQ1gsZ0JBQWdCO1VBQ2hCLGVBQWU7UUFDakIsT0FBTyxJQUFJLGVBQWU7VUFDeEIseURBQXlEO1VBQ3pELGdCQUFnQjtVQUNoQixlQUFlO1FBQ2pCLE9BQU87VUFDTCxNQUFNLElBQUksQ0FBQyxDQUFBLFdBQVksQ0FDckI7UUFFSjtRQUVBLElBQUksQ0FBQyxRQUFRLElBQUk7UUFDakIsS0FBSztNQUVMLEVBQUU7TUFDRixxRkFBcUY7TUFDckYsRUFBRTtNQUNKLE9BQU8sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksa0JBQWtCLE9BQU8sT0FBTztRQUN0RSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTTtVQUN0QixLQUFLLElBQUksQ0FBQyxJQUFJO1VBRWQsSUFBSSxDQUFDLGVBQWU7VUFDcEIsS0FBSyxJQUFJLENBQUMsSUFBSTtVQUVkLElBQUksT0FBTyxPQUFPO1lBQ2hCLEtBQUssSUFBSSxDQUFDLElBQUk7WUFFZCxJQUFJLENBQUMsa0JBQWtCLEtBQUs7Y0FDMUIsTUFBTSxJQUFJLENBQUMsQ0FBQSxXQUFZLENBQ3JCO1lBRUo7WUFFQSxJQUFJLGVBQWU7Y0FDakIsSUFBSSxDQUFDLGdCQUFnQixDQUNuQixRQUNBLGlCQUNBLFFBQ0EsU0FDQTtjQUVGLFNBQVM7Y0FDVCxVQUFVO2NBQ1YsWUFBWTtZQUNkO1lBRUEsV0FBVztZQUNYLGdCQUFnQjtZQUNoQixlQUFlO1lBQ2YsU0FBUyxJQUFJLENBQUMsR0FBRztZQUNqQixVQUFVLElBQUksQ0FBQyxNQUFNO1VBQ3ZCLE9BQU8sSUFBSSxVQUFVO1lBQ25CLE1BQU0sSUFBSSxDQUFDLENBQUEsV0FBWSxDQUNyQjtVQUVKLE9BQU87WUFDTCxJQUFJLENBQUMsR0FBRyxHQUFHO1lBQ1gsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNkLE9BQU8sTUFBTSxvQ0FBb0M7VUFDbkQ7UUFDRixPQUFPLElBQUksVUFBVTtVQUNuQixNQUFNLElBQUksQ0FBQyxDQUFBLFdBQVksQ0FDckI7UUFFSixPQUFPO1VBQ0wsSUFBSSxDQUFDLEdBQUcsR0FBRztVQUNYLElBQUksQ0FBQyxNQUFNLEdBQUc7VUFDZCxPQUFPLE1BQU0sb0NBQW9DO1FBQ25EO01BQ0YsT0FBTztRQUNMLE9BQU8sdUNBQXVDO01BQ2hEO01BRUEsRUFBRTtNQUNGLGdFQUFnRTtNQUNoRSxFQUFFO01BQ0YsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLFVBQVUsR0FBRyxZQUFZO1FBQ3RELElBQ0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLG1CQUFtQixNQUFNLGVBQ3REO1VBQ0EsSUFBSSxlQUFlO1lBQ2pCLFVBQVUsSUFBSSxDQUFDLE1BQU07VUFDdkIsT0FBTztZQUNMLFlBQVksSUFBSSxDQUFDLE1BQU07VUFDekI7UUFDRjtRQUVBLElBQUksQ0FBQyxlQUFlO1VBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsQ0FDbkIsUUFDQSxpQkFDQSxRQUNBLFNBQ0EsV0FDQSxNQUNBO1VBRUYsU0FBUyxVQUFVLFlBQVk7UUFDakM7UUFFQSxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1FBQ2hDLEtBQUssSUFBSSxDQUFDLElBQUk7TUFDaEI7TUFFQSxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsY0FBYyxPQUFPLEdBQUc7UUFDNUMsTUFBTSxJQUFJLENBQUMsQ0FBQSxXQUFZLENBQ3JCO01BRUosT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsWUFBWTtRQUN2QztNQUNGO0lBQ0Y7SUFFQSxFQUFFO0lBQ0YsWUFBWTtJQUNaLEVBQUU7SUFFRixnRkFBZ0Y7SUFDaEYsSUFBSSxlQUFlO01BQ2pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FDbkIsUUFDQSxpQkFDQSxRQUNBLFNBQ0E7SUFFSjtJQUVBLGdDQUFnQztJQUNoQyxJQUFJLFVBQVU7TUFDWixJQUFJLENBQUMsR0FBRyxHQUFHO01BQ1gsSUFBSSxDQUFDLE1BQU0sR0FBRztNQUNkLElBQUksQ0FBQyxJQUFJLEdBQUc7TUFDWixJQUFJLENBQUMsTUFBTSxHQUFHO0lBQ2hCO0lBRUEsT0FBTztFQUNUO0VBQ0Esa0JBQTJCO0lBQ3pCLElBQUksYUFBYTtJQUNqQixJQUFJLFVBQVU7SUFDZCxJQUFJLFlBQVk7SUFDaEIsSUFBSTtJQUVKLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSTtJQUVsQixJQUFJLE9BQU8sYUFBYSxPQUFPO0lBRS9CLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxNQUFNO01BQ3JCLE1BQU0sSUFBSSxDQUFDLENBQUEsV0FBWSxDQUNyQjtJQUVKO0lBRUEsS0FBSyxJQUFJLENBQUMsSUFBSTtJQUVkLElBQUksT0FBTyxjQUFjO01BQ3ZCLGFBQWE7TUFDYixLQUFLLElBQUksQ0FBQyxJQUFJO0lBQ2hCLE9BQU8sSUFBSSxPQUFPLGFBQWE7TUFDN0IsVUFBVTtNQUNWLFlBQVk7TUFDWixLQUFLLElBQUksQ0FBQyxJQUFJO0lBQ2hCLE9BQU87TUFDTCxZQUFZO0lBQ2Q7SUFFQSxJQUFJLFdBQVcsSUFBSSxDQUFDLFFBQVE7SUFFNUIsSUFBSSxZQUFZO01BQ2QsR0FBRztRQUNELEtBQUssSUFBSSxDQUFDLElBQUk7TUFDaEIsUUFBUyxPQUFPLEtBQUssT0FBTyxhQUFjO01BRTFDLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQy9CLFVBQVUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLENBQUMsUUFBUTtRQUNsRCxLQUFLLElBQUksQ0FBQyxJQUFJO01BQ2hCLE9BQU87UUFDTCxNQUFNLElBQUksQ0FBQyxDQUFBLFdBQVksQ0FDckI7TUFFSjtJQUNGLE9BQU87TUFDTCxNQUFPLE9BQU8sS0FBSyxDQUFDLGtCQUFrQixJQUFLO1FBQ3pDLElBQUksT0FBTyxhQUFhO1VBQ3RCLElBQUksQ0FBQyxTQUFTO1lBQ1osWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRztZQUUzRCxJQUFJLENBQUMsbUJBQW1CLElBQUksQ0FBQyxZQUFZO2NBQ3ZDLE1BQU0sSUFBSSxDQUFDLENBQUEsV0FBWSxDQUNyQjtZQUVKO1lBRUEsVUFBVTtZQUNWLFdBQVcsSUFBSSxDQUFDLFFBQVEsR0FBRztVQUM3QixPQUFPO1lBQ0wsTUFBTSxJQUFJLENBQUMsQ0FBQSxXQUFZLENBQ3JCO1VBRUo7UUFDRjtRQUVBLEtBQUssSUFBSSxDQUFDLElBQUk7TUFDaEI7TUFFQSxVQUFVLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxDQUFDLFFBQVE7TUFFbEQsSUFBSSx3QkFBd0IsSUFBSSxDQUFDLFVBQVU7UUFDekMsTUFBTSxJQUFJLENBQUMsQ0FBQSxXQUFZLENBQ3JCO01BRUo7SUFDRjtJQUVBLElBQUksV0FBVyxDQUFDLGdCQUFnQixJQUFJLENBQUMsVUFBVTtNQUM3QyxNQUFNLElBQUksQ0FBQyxDQUFBLFdBQVksQ0FDckIsQ0FBQywwREFBMEQsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUUzRTtJQUVBLElBQUksWUFBWTtNQUNkLElBQUksQ0FBQyxHQUFHLEdBQUc7SUFDYixPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWTtNQUNyQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWE7SUFDMUMsT0FBTyxJQUFJLGNBQWMsS0FBSztNQUM1QixJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLFNBQVM7SUFDMUIsT0FBTyxJQUFJLGNBQWMsTUFBTTtNQUM3QixJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsU0FBUztJQUMzQyxPQUFPO01BQ0wsTUFBTSxJQUFJLENBQUMsQ0FBQSxXQUFZLENBQ3JCLENBQUMsaURBQWlELEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFcEU7SUFFQSxPQUFPO0VBQ1Q7RUFDQSxxQkFBOEI7SUFDNUIsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJO0lBQ2xCLElBQUksT0FBTyxXQUFXLE9BQU87SUFFN0IsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLE1BQU07TUFDeEIsTUFBTSxJQUFJLENBQUMsQ0FBQSxXQUFZLENBQ3JCO0lBRUo7SUFDQSxLQUFLLElBQUksQ0FBQyxJQUFJO0lBRWQsTUFBTSxXQUFXLElBQUksQ0FBQyxRQUFRO0lBQzlCLE1BQU8sT0FBTyxLQUFLLENBQUMsa0JBQWtCLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSztNQUNqRSxLQUFLLElBQUksQ0FBQyxJQUFJO0lBQ2hCO0lBRUEsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFVBQVU7TUFDOUIsTUFBTSxJQUFJLENBQUMsQ0FBQSxXQUFZLENBQ3JCO0lBRUo7SUFFQSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxDQUFDLFFBQVE7SUFDdEQsT0FBTztFQUNUO0VBQ0EsWUFBcUI7SUFDbkIsSUFBSSxJQUFJLENBQUMsSUFBSSxPQUFPLFVBQVUsT0FBTztJQUVyQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUk7SUFFbEIsTUFBTSxXQUFXLElBQUksQ0FBQyxRQUFRO0lBRTlCLE1BQU8sT0FBTyxLQUFLLENBQUMsa0JBQWtCLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSztNQUNqRSxLQUFLLElBQUksQ0FBQyxJQUFJO0lBQ2hCO0lBRUEsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFVBQVU7TUFDOUIsTUFBTSxJQUFJLENBQUMsQ0FBQSxXQUFZLENBQ3JCO0lBRUo7SUFFQSxNQUFNLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLENBQUMsUUFBUTtJQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUTtNQUM5QixNQUFNLElBQUksQ0FBQyxDQUFBLFdBQVksQ0FDckIsQ0FBQyx1Q0FBdUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUV0RDtJQUVBLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7SUFDakMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztJQUNoQyxPQUFPO0VBQ1Q7RUFFQSxZQUNFLFlBQW9CLEVBQ3BCLFdBQW1CLEVBQ25CLFdBQW9CLEVBQ3BCLFlBQXFCLEVBQ1o7SUFDVCxJQUFJLGVBQWUsR0FBRyxrREFBa0Q7SUFDeEUsSUFBSSxZQUFZO0lBQ2hCLElBQUksYUFBYTtJQUNqQixJQUFJO0lBRUosSUFBSSxDQUFDLEdBQUcsR0FBRztJQUNYLElBQUksQ0FBQyxNQUFNLEdBQUc7SUFDZCxJQUFJLENBQUMsSUFBSSxHQUFHO0lBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRztJQUVkLE1BQU0sb0JBQW9CLHNCQUFzQixlQUM5QyxxQkFBcUI7SUFFdkIsSUFBSSx3QkFBd0I7SUFDNUIsTUFBTSxtQkFBbUI7SUFFekIsSUFBSSxhQUFhO01BQ2YsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLElBQUk7UUFDdEMsWUFBWTtRQUVaLElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxjQUFjO1VBQ2xDLGVBQWU7UUFDakIsT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssY0FBYztVQUMzQyxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLGNBQWM7VUFDekMsZUFBZSxDQUFDO1FBQ2xCO01BQ0Y7SUFDRjtJQUVBLElBQUksaUJBQWlCLEdBQUc7TUFDdEIsTUFBTyxJQUFJLENBQUMsZUFBZSxNQUFNLElBQUksQ0FBQyxrQkFBa0IsR0FBSTtRQUMxRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsSUFBSTtVQUN0QyxZQUFZO1VBQ1osd0JBQXdCO1VBRXhCLElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxjQUFjO1lBQ2xDLGVBQWU7VUFDakIsT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssY0FBYztZQUMzQyxlQUFlO1VBQ2pCLE9BQU8sSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLGNBQWM7WUFDekMsZUFBZSxDQUFDO1VBQ2xCO1FBQ0YsT0FBTztVQUNMLHdCQUF3QjtRQUMxQjtNQUNGO0lBQ0Y7SUFFQSxJQUFJLHVCQUF1QjtNQUN6Qix3QkFBd0IsYUFBYTtJQUN2QztJQUVBLElBQUksaUJBQWlCLEtBQUssc0JBQXNCLGFBQWE7TUFDM0QsTUFBTSxPQUFPLG9CQUFvQixlQUMvQixxQkFBcUI7TUFDdkIsTUFBTSxhQUFhLE9BQU8sZUFBZSxlQUFlO01BRXhELE1BQU0sY0FBYyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTO01BRWxELElBQUksaUJBQWlCLEdBQUc7UUFDdEIsSUFDRSxBQUFDLHlCQUNDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxXQUFXLEtBQ2xELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUN4QjtVQUNBLGFBQWE7UUFDZixPQUFPO1VBQ0wsSUFDRSxBQUFDLHFCQUFxQixJQUFJLENBQUMsZUFBZSxDQUFDLGVBQzNDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUM1QixJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFDNUI7WUFDQSxhQUFhO1VBQ2YsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUk7WUFDM0IsYUFBYTtZQUViLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxRQUFRLElBQUksQ0FBQyxNQUFNLEtBQUssTUFBTTtjQUM3QyxNQUFNLElBQUksQ0FBQyxDQUFBLFdBQVksQ0FDckI7WUFFSjtVQUNGLE9BQU8sSUFDTCxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksb0JBQW9CLGNBQ3JEO1lBQ0EsYUFBYTtZQUViLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxNQUFNO2NBQ3JCLElBQUksQ0FBQyxHQUFHLEdBQUc7WUFDYjtVQUNGO1VBRUEsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLE1BQU07WUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtVQUM3QztRQUNGO01BQ0YsT0FBTyxJQUFJLGlCQUFpQixHQUFHO1FBQzdCLDBGQUEwRjtRQUMxRixtREFBbUQ7UUFDbkQsYUFBYSx5QkFDWCxJQUFJLENBQUMsaUJBQWlCLENBQUM7TUFDM0I7SUFDRjtJQUVBLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxRQUFRLElBQUksQ0FBQyxHQUFHLEtBQUssS0FBSztNQUN6QyxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssS0FBSztRQUNwQixJQUNFLElBQUksWUFBWSxHQUNoQixZQUFZLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUNyQyxZQUNBO1VBQ0EsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVU7VUFFcEMsa0VBQWtFO1VBQ2xFLG1FQUFtRTtVQUNuRSx5Q0FBeUM7VUFFekMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHO1lBQzdCLGdEQUFnRDtZQUNoRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQ3hDLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxHQUFHO1lBQ25CLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNO2NBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDN0M7WUFDQTtVQUNGO1FBQ0Y7TUFDRixPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRztRQUM5RCxNQUFNLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLFdBQVc7UUFDakQsT0FBTyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRztRQUV2QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxLQUFLLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFO1VBQ25ELE1BQU0sSUFBSSxDQUFDLENBQUEsV0FBWSxDQUNyQixDQUFDLDZCQUE2QixFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRXBHO1FBRUEsSUFBSSxDQUFDLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUc7VUFDOUIsZ0RBQWdEO1VBQ2hELE1BQU0sSUFBSSxDQUFDLENBQUEsV0FBWSxDQUNyQixDQUFDLDZCQUE2QixFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDO1FBRTVELE9BQU87VUFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNO1VBQ3hDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNO1lBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07VUFDN0M7UUFDRjtNQUNGLE9BQU87UUFDTCxNQUFNLElBQUksQ0FBQyxDQUFBLFdBQVksQ0FBQyxDQUFDLDZCQUE2QixFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO01BQ3JFO0lBQ0Y7SUFFQSxPQUFPLElBQUksQ0FBQyxHQUFHLEtBQUssUUFBUSxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVE7RUFDdEQ7RUFFQSxlQUFlO0lBQ2IsTUFBTSxnQkFBZ0IsSUFBSSxDQUFDLFFBQVE7SUFFbkMsSUFBSSxnQkFBZ0I7SUFFcEIsSUFBSSxDQUFDLE9BQU8sR0FBRztJQUNmLElBQUksQ0FBQyxlQUFlLEdBQUc7SUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJO0lBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSTtJQUVyQixJQUFJLEtBQUssSUFBSSxDQUFDLElBQUk7SUFDbEIsTUFBTyxPQUFPLEVBQUc7TUFDZixJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDO01BRWhDLEtBQUssSUFBSSxDQUFDLElBQUk7TUFFZCxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxPQUFPLFNBQVM7UUFDekM7TUFDRjtNQUVBLGdCQUFnQjtNQUNoQixLQUFLLElBQUksQ0FBQyxJQUFJO01BQ2QsSUFBSSxXQUFXLElBQUksQ0FBQyxRQUFRO01BRTVCLE1BQU8sT0FBTyxLQUFLLENBQUMsa0JBQWtCLElBQUs7UUFDekMsS0FBSyxJQUFJLENBQUMsSUFBSTtNQUNoQjtNQUVBLE1BQU0sZ0JBQWdCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxDQUFDLFFBQVE7TUFDOUQsTUFBTSxnQkFBZ0IsRUFBRTtNQUV4QixJQUFJLGNBQWMsTUFBTSxHQUFHLEdBQUc7UUFDNUIsTUFBTSxJQUFJLENBQUMsQ0FBQSxXQUFZLENBQ3JCO01BRUo7TUFFQSxNQUFPLE9BQU8sRUFBRztRQUNmLElBQUksQ0FBQyxlQUFlO1FBQ3BCLElBQUksQ0FBQyxXQUFXO1FBQ2hCLEtBQUssSUFBSSxDQUFDLElBQUk7UUFFZCxJQUFJLE1BQU0sS0FBSztRQUVmLFdBQVcsSUFBSSxDQUFDLFFBQVE7UUFFeEIsTUFBTyxPQUFPLEtBQUssQ0FBQyxrQkFBa0IsSUFBSztVQUN6QyxLQUFLLElBQUksQ0FBQyxJQUFJO1FBQ2hCO1FBRUEsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLENBQUMsUUFBUTtNQUM3RDtNQUVBLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhO01BRWhDLE9BQVE7UUFDTixLQUFLO1VBQ0gsSUFBSSxDQUFDLG9CQUFvQixJQUFJO1VBQzdCO1FBQ0YsS0FBSztVQUNILElBQUksQ0FBQyxtQkFBbUIsSUFBSTtVQUM1QjtRQUNGO1VBQ0UsSUFBSSxDQUFDLGVBQWUsQ0FDbEIsQ0FBQyw0QkFBNEIsRUFBRSxjQUFjLENBQUMsQ0FBQztVQUVqRDtNQUNKO01BRUEsS0FBSyxJQUFJLENBQUMsSUFBSTtJQUNoQjtJQUVBLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7SUFFaEMsSUFDRSxJQUFJLENBQUMsVUFBVSxLQUFLLEtBQ3BCLElBQUksQ0FBQyxJQUFJLE9BQU8sU0FDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLFNBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxPQUNqQjtNQUNBLElBQUksQ0FBQyxRQUFRLElBQUk7TUFDakIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztJQUNsQyxPQUFPLElBQUksZUFBZTtNQUN4QixNQUFNLElBQUksQ0FBQyxDQUFBLFdBQVksQ0FDckI7SUFFSjtJQUVBLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLG1CQUFtQixPQUFPO0lBQ2hFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7SUFFaEMsSUFDRSxJQUFJLENBQUMsZUFBZSxJQUNwQiw4QkFBOEIsSUFBSSxDQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxlQUFlLElBQUksQ0FBQyxRQUFRLElBRS9DO01BQ0EsSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUN2QjtJQUVBLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsSUFBSTtNQUNwRSxJQUFJLElBQUksQ0FBQyxJQUFJLE9BQU8sS0FBSztRQUN2QixJQUFJLENBQUMsUUFBUSxJQUFJO1FBQ2pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7TUFDbEM7SUFDRixPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUc7TUFDMUMsTUFBTSxJQUFJLENBQUMsQ0FBQSxXQUFZLENBQ3JCO0lBRUo7SUFFQSxPQUFPLElBQUksQ0FBQyxNQUFNO0VBQ3BCO0VBRUEsQ0FBQyxnQkFBZ0I7SUFDZixNQUFPLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFHO01BQ3RDLE1BQU0sSUFBSSxDQUFDLFlBQVk7SUFDekI7RUFDRjtBQUNGIn0= +// denoCacheMetadata=6835338976381224248,2292755626312210993
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/1c97b0b0f1c6087b0c3dfa4a2da62aaae248ad106e50a6e70f71ac038247afa6.js b/vendor/gen/https/jsr.io/1c97b0b0f1c6087b0c3dfa4a2da62aaae248ad106e50a6e70f71ac038247afa6.js new file mode 100644 index 0000000..97c8947 --- /dev/null +++ b/vendor/gen/https/jsr.io/1c97b0b0f1c6087b0c3dfa4a2da62aaae248ad106e50a6e70f71ac038247afa6.js @@ -0,0 +1,43 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { parseMediaType } from "./parse_media_type.ts"; +import { db } from "./_db.ts"; +/** + * Given a media type or header value, identify the encoding charset. If the + * charset cannot be determined, the function returns `undefined`. + * + * @param type The media type or header value to get the charset for. + * + * @returns The charset for the given media type or header value, or `undefined` + * if the charset cannot be determined. + * + * @example Usage + * ```ts + * import { getCharset } from "@std/media-types/get-charset"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(getCharset("text/plain"), "UTF-8"); + * assertEquals(getCharset("application/foo"), undefined); + * assertEquals(getCharset("application/news-checkgroups"), "US-ASCII"); + * assertEquals(getCharset("application/news-checkgroups; charset=UTF-8"), "UTF-8"); + * ``` + */ export function getCharset(type) { + try { + const [mediaType, params] = parseMediaType(type); + if (params?.charset) { + return params.charset; + } + const entry = db[mediaType]; + if (entry?.charset) { + return entry.charset; + } + if (mediaType.startsWith("text/")) { + return "UTF-8"; + } + } catch { + // just swallow errors, returning undefined + } + return undefined; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvbWVkaWEtdHlwZXMvMS4xLjAvZ2V0X2NoYXJzZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgcGFyc2VNZWRpYVR5cGUgfSBmcm9tIFwiLi9wYXJzZV9tZWRpYV90eXBlLnRzXCI7XG5pbXBvcnQgdHlwZSB7IERCRW50cnkgfSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuaW1wb3J0IHsgZGIsIHR5cGUgS2V5T2ZEYiB9IGZyb20gXCIuL19kYi50c1wiO1xuXG4vKipcbiAqIEdpdmVuIGEgbWVkaWEgdHlwZSBvciBoZWFkZXIgdmFsdWUsIGlkZW50aWZ5IHRoZSBlbmNvZGluZyBjaGFyc2V0LiBJZiB0aGVcbiAqIGNoYXJzZXQgY2Fubm90IGJlIGRldGVybWluZWQsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGB1bmRlZmluZWRgLlxuICpcbiAqIEBwYXJhbSB0eXBlIFRoZSBtZWRpYSB0eXBlIG9yIGhlYWRlciB2YWx1ZSB0byBnZXQgdGhlIGNoYXJzZXQgZm9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBjaGFyc2V0IGZvciB0aGUgZ2l2ZW4gbWVkaWEgdHlwZSBvciBoZWFkZXIgdmFsdWUsIG9yIGB1bmRlZmluZWRgXG4gKiBpZiB0aGUgY2hhcnNldCBjYW5ub3QgYmUgZGV0ZXJtaW5lZC5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGdldENoYXJzZXQgfSBmcm9tIFwiQHN0ZC9tZWRpYS10eXBlcy9nZXQtY2hhcnNldFwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogYXNzZXJ0RXF1YWxzKGdldENoYXJzZXQoXCJ0ZXh0L3BsYWluXCIpLCBcIlVURi04XCIpO1xuICogYXNzZXJ0RXF1YWxzKGdldENoYXJzZXQoXCJhcHBsaWNhdGlvbi9mb29cIiksIHVuZGVmaW5lZCk7XG4gKiBhc3NlcnRFcXVhbHMoZ2V0Q2hhcnNldChcImFwcGxpY2F0aW9uL25ld3MtY2hlY2tncm91cHNcIiksIFwiVVMtQVNDSUlcIik7XG4gKiBhc3NlcnRFcXVhbHMoZ2V0Q2hhcnNldChcImFwcGxpY2F0aW9uL25ld3MtY2hlY2tncm91cHM7IGNoYXJzZXQ9VVRGLThcIiksIFwiVVRGLThcIik7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoYXJzZXQodHlwZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBbbWVkaWFUeXBlLCBwYXJhbXNdID0gcGFyc2VNZWRpYVR5cGUodHlwZSk7XG4gICAgaWYgKHBhcmFtcz8uY2hhcnNldCkge1xuICAgICAgcmV0dXJuIHBhcmFtcy5jaGFyc2V0O1xuICAgIH1cbiAgICBjb25zdCBlbnRyeSA9IGRiW21lZGlhVHlwZSBhcyBLZXlPZkRiXSBhcyBEQkVudHJ5O1xuICAgIGlmIChlbnRyeT8uY2hhcnNldCkge1xuICAgICAgcmV0dXJuIGVudHJ5LmNoYXJzZXQ7XG4gICAgfVxuICAgIGlmIChtZWRpYVR5cGUuc3RhcnRzV2l0aChcInRleHQvXCIpKSB7XG4gICAgICByZXR1cm4gXCJVVEYtOFwiO1xuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgLy8ganVzdCBzd2FsbG93IGVycm9ycywgcmV0dXJuaW5nIHVuZGVmaW5lZFxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQyxTQUFTLGNBQWMsUUFBUSx3QkFBd0I7QUFFdkQsU0FBUyxFQUFFLFFBQXNCLFdBQVc7QUFFNUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FtQkMsR0FDRCxPQUFPLFNBQVMsV0FBVyxJQUFZO0VBQ3JDLElBQUk7SUFDRixNQUFNLENBQUMsV0FBVyxPQUFPLEdBQUcsZUFBZTtJQUMzQyxJQUFJLFFBQVEsU0FBUztNQUNuQixPQUFPLE9BQU8sT0FBTztJQUN2QjtJQUNBLE1BQU0sUUFBUSxFQUFFLENBQUMsVUFBcUI7SUFDdEMsSUFBSSxPQUFPLFNBQVM7TUFDbEIsT0FBTyxNQUFNLE9BQU87SUFDdEI7SUFDQSxJQUFJLFVBQVUsVUFBVSxDQUFDLFVBQVU7TUFDakMsT0FBTztJQUNUO0VBQ0YsRUFBRSxPQUFNO0VBQ04sMkNBQTJDO0VBQzdDO0VBQ0EsT0FBTztBQUNUIn0= +// denoCacheMetadata=8337773012180241176,16569020405931239549
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/1e9cde642783926318331c7378e3263854a5bd5f58a91b78c54b96ce2d70e0a8.js b/vendor/gen/https/jsr.io/1e9cde642783926318331c7378e3263854a5bd5f58a91b78c54b96ce2d70e0a8.js new file mode 100644 index 0000000..8905a46 --- /dev/null +++ b/vendor/gen/https/jsr.io/1e9cde642783926318331c7378e3263854a5bd5f58a91b78c54b96ce2d70e0a8.js @@ -0,0 +1,23 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * Extensions to the + * {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API | Web Crypto} + * supporting additional encryption APIs, but also delegating to the built-in + * APIs when possible. + * + * ```ts no-assert + * import { crypto } from "@std/crypto/crypto"; + * + * const message = "Hello, Deno!"; + * const encoder = new TextEncoder(); + * const data = encoder.encode(message); + * + * await crypto.subtle.digest("BLAKE3", data); + * ``` + * + * @module + */ export * from "./crypto.ts"; +export * from "./timing_safe_equal.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvY3J5cHRvLzEuMC41L21vZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vKipcbiAqIEV4dGVuc2lvbnMgdG8gdGhlXG4gKiB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1dlYl9DcnlwdG9fQVBJIHwgV2ViIENyeXB0b31cbiAqIHN1cHBvcnRpbmcgYWRkaXRpb25hbCBlbmNyeXB0aW9uIEFQSXMsIGJ1dCBhbHNvIGRlbGVnYXRpbmcgdG8gdGhlIGJ1aWx0LWluXG4gKiBBUElzIHdoZW4gcG9zc2libGUuXG4gKlxuICogYGBgdHMgbm8tYXNzZXJ0XG4gKiBpbXBvcnQgeyBjcnlwdG8gfSBmcm9tIFwiQHN0ZC9jcnlwdG8vY3J5cHRvXCI7XG4gKlxuICogY29uc3QgbWVzc2FnZSA9IFwiSGVsbG8sIERlbm8hXCI7XG4gKiBjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gKiBjb25zdCBkYXRhID0gZW5jb2Rlci5lbmNvZGUobWVzc2FnZSk7XG4gKlxuICogYXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoXCJCTEFLRTNcIiwgZGF0YSk7XG4gKiBgYGBcbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuZXhwb3J0ICogZnJvbSBcIi4vY3J5cHRvLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90aW1pbmdfc2FmZV9lcXVhbC50c1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckM7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBaUJDLEdBRUQsY0FBYyxjQUFjO0FBQzVCLGNBQWMseUJBQXlCIn0= +// denoCacheMetadata=11669562843479213733,5456726558744636823
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/20186b85c41d56e6c736e8fb833fe9d682f01b4468fc12efd39a58688418d54d.js b/vendor/gen/https/jsr.io/20186b85c41d56e6c736e8fb833fe9d682f01b4468fc12efd39a58688418d54d.js new file mode 100644 index 0000000..2eeea97 --- /dev/null +++ b/vendor/gen/https/jsr.io/20186b85c41d56e6c736e8fb833fe9d682f01b4468fc12efd39a58688418d54d.js @@ -0,0 +1,41 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { join } from "./join.ts"; +import { SEPARATOR } from "./constants.ts"; +import { normalizeGlob } from "./normalize_glob.ts"; +/** + * Like join(), but doesn't collapse "**\/.." when `globstar` is true. + * + * @example Usage + * + * ```ts + * import { joinGlobs } from "@std/path/windows/join-globs"; + * import { assertEquals } from "@std/assert"; + * + * const joined = joinGlobs(["foo", "**", "bar"], { globstar: true }); + * assertEquals(joined, "foo\\**\\bar"); + * ``` + * + * @param globs The globs to join. + * @param options The options for glob pattern. + * @returns The joined glob pattern. + */ export function joinGlobs(globs, options = {}) { + const { globstar = false } = options; + if (!globstar || globs.length === 0) { + return join(...globs); + } + let joined; + for (const glob of globs){ + const path = glob; + if (path.length > 0) { + if (!joined) joined = path; + else joined += `${SEPARATOR}${path}`; + } + } + if (!joined) return "."; + return normalizeGlob(joined, { + globstar + }); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC93aW5kb3dzL2pvaW5fZ2xvYnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHR5cGUgeyBHbG9iT3B0aW9ucyB9IGZyb20gXCIuLi9fY29tbW9uL2dsb2JfdG9fcmVnX2V4cC50c1wiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCIuL2pvaW4udHNcIjtcbmltcG9ydCB7IFNFUEFSQVRPUiB9IGZyb20gXCIuL2NvbnN0YW50cy50c1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplR2xvYiB9IGZyb20gXCIuL25vcm1hbGl6ZV9nbG9iLnRzXCI7XG5cbmV4cG9ydCB0eXBlIHsgR2xvYk9wdGlvbnMgfTtcblxuLyoqXG4gKiBMaWtlIGpvaW4oKSwgYnV0IGRvZXNuJ3QgY29sbGFwc2UgXCIqKlxcLy4uXCIgd2hlbiBgZ2xvYnN0YXJgIGlzIHRydWUuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgam9pbkdsb2JzIH0gZnJvbSBcIkBzdGQvcGF0aC93aW5kb3dzL2pvaW4tZ2xvYnNcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IGpvaW5lZCA9IGpvaW5HbG9icyhbXCJmb29cIiwgXCIqKlwiLCBcImJhclwiXSwgeyBnbG9ic3RhcjogdHJ1ZSB9KTtcbiAqIGFzc2VydEVxdWFscyhqb2luZWQsIFwiZm9vXFxcXCoqXFxcXGJhclwiKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBnbG9icyBUaGUgZ2xvYnMgdG8gam9pbi5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciBnbG9iIHBhdHRlcm4uXG4gKiBAcmV0dXJucyBUaGUgam9pbmVkIGdsb2IgcGF0dGVybi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpvaW5HbG9icyhcbiAgZ2xvYnM6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBQaWNrPEdsb2JPcHRpb25zLCBcImdsb2JzdGFyXCI+ID0ge30sXG4pOiBzdHJpbmcge1xuICBjb25zdCB7IGdsb2JzdGFyID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gIGlmICghZ2xvYnN0YXIgfHwgZ2xvYnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGpvaW4oLi4uZ2xvYnMpO1xuICB9XG4gIGxldCBqb2luZWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZm9yIChjb25zdCBnbG9iIG9mIGdsb2JzKSB7XG4gICAgY29uc3QgcGF0aCA9IGdsb2I7XG4gICAgaWYgKHBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFqb2luZWQpIGpvaW5lZCA9IHBhdGg7XG4gICAgICBlbHNlIGpvaW5lZCArPSBgJHtTRVBBUkFUT1J9JHtwYXRofWA7XG4gICAgfVxuICB9XG4gIGlmICgham9pbmVkKSByZXR1cm4gXCIuXCI7XG4gIHJldHVybiBub3JtYWxpemVHbG9iKGpvaW5lZCwgeyBnbG9ic3RhciB9KTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBR3JDLFNBQVMsSUFBSSxRQUFRLFlBQVk7QUFDakMsU0FBUyxTQUFTLFFBQVEsaUJBQWlCO0FBQzNDLFNBQVMsYUFBYSxRQUFRLHNCQUFzQjtBQUlwRDs7Ozs7Ozs7Ozs7Ozs7OztDQWdCQyxHQUNELE9BQU8sU0FBUyxVQUNkLEtBQWUsRUFDZixVQUF5QyxDQUFDLENBQUM7RUFFM0MsTUFBTSxFQUFFLFdBQVcsS0FBSyxFQUFFLEdBQUc7RUFDN0IsSUFBSSxDQUFDLFlBQVksTUFBTSxNQUFNLEtBQUssR0FBRztJQUNuQyxPQUFPLFFBQVE7RUFDakI7RUFDQSxJQUFJO0VBQ0osS0FBSyxNQUFNLFFBQVEsTUFBTztJQUN4QixNQUFNLE9BQU87SUFDYixJQUFJLEtBQUssTUFBTSxHQUFHLEdBQUc7TUFDbkIsSUFBSSxDQUFDLFFBQVEsU0FBUztXQUNqQixVQUFVLEdBQUcsWUFBWSxNQUFNO0lBQ3RDO0VBQ0Y7RUFDQSxJQUFJLENBQUMsUUFBUSxPQUFPO0VBQ3BCLE9BQU8sY0FBYyxRQUFRO0lBQUU7RUFBUztBQUMxQyJ9 +// denoCacheMetadata=1681905616350540809,7852449746386624345
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/21b6c9b75dfe4daec50585f69f1fc9bc35b33e506b82697277823eca9554919f.js b/vendor/gen/https/jsr.io/21b6c9b75dfe4daec50585f69f1fc9bc35b33e506b82697277823eca9554919f.js new file mode 100644 index 0000000..2775d98 --- /dev/null +++ b/vendor/gen/https/jsr.io/21b6c9b75dfe4daec50585f69f1fc9bc35b33e506b82697277823eca9554919f.js @@ -0,0 +1,46 @@ +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2025 the Deno authors. MIT license. +export const BOM = 0xfeff; /* BOM */ +export const TAB = 0x09; /* Tab */ +export const LINE_FEED = 0x0a; /* LF */ +export const CARRIAGE_RETURN = 0x0d; /* CR */ +export const SPACE = 0x20; /* Space */ +export const EXCLAMATION = 0x21; /* ! */ +export const DOUBLE_QUOTE = 0x22; /* " */ +export const SHARP = 0x23; /* # */ +export const PERCENT = 0x25; /* % */ +export const AMPERSAND = 0x26; /* & */ +export const SINGLE_QUOTE = 0x27; /* ' */ +export const ASTERISK = 0x2a; /* * */ +export const PLUS = 0x2b; /* + */ +export const COMMA = 0x2c; /* , */ +export const MINUS = 0x2d; /* - */ +export const DOT = 0x2e; /* . */ +export const COLON = 0x3a; /* : */ +export const SMALLER_THAN = 0x3c; /* < */ +export const GREATER_THAN = 0x3e; /* > */ +export const QUESTION = 0x3f; /* ? */ +export const COMMERCIAL_AT = 0x40; /* @ */ +export const LEFT_SQUARE_BRACKET = 0x5b; /* [ */ +export const BACKSLASH = 0x5c; /* \ */ +export const RIGHT_SQUARE_BRACKET = 0x5d; /* ] */ +export const GRAVE_ACCENT = 0x60; /* ` */ +export const LEFT_CURLY_BRACKET = 0x7b; /* { */ +export const VERTICAL_LINE = 0x7c; /* | */ +export const RIGHT_CURLY_BRACKET = 0x7d; /* } */ +export function isEOL(c) { + return c === LINE_FEED || c === CARRIAGE_RETURN; +} +export function isWhiteSpace(c) { + return c === TAB || c === SPACE; +} +export function isWhiteSpaceOrEOL(c) { + return isWhiteSpace(c) || isEOL(c); +} +export function isFlowIndicator(c) { + return c === COMMA || c === LEFT_SQUARE_BRACKET || c === RIGHT_SQUARE_BRACKET || c === LEFT_CURLY_BRACKET || c === RIGHT_CURLY_BRACKET; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQveWFtbC8xLjAuNi9fY2hhcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUG9ydGVkIGZyb20ganMteWFtbCB2My4xMy4xOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVjYS9qcy15YW1sL2NvbW1pdC82NjVhYWRkYTQyMzQ5ZGNhZTg2OWYxMjA0MGQ5YjEwZWYxOGQxMmRhXG4vLyBDb3B5cmlnaHQgMjAxMS0yMDE1IGJ5IFZpdGFseSBQdXpyaW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cblxuZXhwb3J0IGNvbnN0IEJPTSA9IDB4ZmVmZjsgLyogQk9NICovXG5leHBvcnQgY29uc3QgVEFCID0gMHgwOTsgLyogVGFiICovXG5leHBvcnQgY29uc3QgTElORV9GRUVEID0gMHgwYTsgLyogTEYgKi9cbmV4cG9ydCBjb25zdCBDQVJSSUFHRV9SRVRVUk4gPSAweDBkOyAvKiBDUiAqL1xuZXhwb3J0IGNvbnN0IFNQQUNFID0gMHgyMDsgLyogU3BhY2UgKi9cbmV4cG9ydCBjb25zdCBFWENMQU1BVElPTiA9IDB4MjE7IC8qICEgKi9cbmV4cG9ydCBjb25zdCBET1VCTEVfUVVPVEUgPSAweDIyOyAvKiBcIiAqL1xuZXhwb3J0IGNvbnN0IFNIQVJQID0gMHgyMzsgLyogIyAqL1xuZXhwb3J0IGNvbnN0IFBFUkNFTlQgPSAweDI1OyAvKiAlICovXG5leHBvcnQgY29uc3QgQU1QRVJTQU5EID0gMHgyNjsgLyogJiAqL1xuZXhwb3J0IGNvbnN0IFNJTkdMRV9RVU9URSA9IDB4Mjc7IC8qICcgKi9cbmV4cG9ydCBjb25zdCBBU1RFUklTSyA9IDB4MmE7IC8qICogKi9cbmV4cG9ydCBjb25zdCBQTFVTID0gMHgyYjsgLyogKyAqL1xuZXhwb3J0IGNvbnN0IENPTU1BID0gMHgyYzsgLyogLCAqL1xuZXhwb3J0IGNvbnN0IE1JTlVTID0gMHgyZDsgLyogLSAqL1xuZXhwb3J0IGNvbnN0IERPVCA9IDB4MmU7IC8qIC4gKi9cbmV4cG9ydCBjb25zdCBDT0xPTiA9IDB4M2E7IC8qIDogKi9cbmV4cG9ydCBjb25zdCBTTUFMTEVSX1RIQU4gPSAweDNjOyAvKiA8ICovXG5leHBvcnQgY29uc3QgR1JFQVRFUl9USEFOID0gMHgzZTsgLyogPiAqL1xuZXhwb3J0IGNvbnN0IFFVRVNUSU9OID0gMHgzZjsgLyogPyAqL1xuZXhwb3J0IGNvbnN0IENPTU1FUkNJQUxfQVQgPSAweDQwOyAvKiBAICovXG5leHBvcnQgY29uc3QgTEVGVF9TUVVBUkVfQlJBQ0tFVCA9IDB4NWI7IC8qIFsgKi9cbmV4cG9ydCBjb25zdCBCQUNLU0xBU0ggPSAweDVjOyAvKiBcXCAqL1xuZXhwb3J0IGNvbnN0IFJJR0hUX1NRVUFSRV9CUkFDS0VUID0gMHg1ZDsgLyogXSAqL1xuZXhwb3J0IGNvbnN0IEdSQVZFX0FDQ0VOVCA9IDB4NjA7IC8qIGAgKi9cbmV4cG9ydCBjb25zdCBMRUZUX0NVUkxZX0JSQUNLRVQgPSAweDdiOyAvKiB7ICovXG5leHBvcnQgY29uc3QgVkVSVElDQUxfTElORSA9IDB4N2M7IC8qIHwgKi9cbmV4cG9ydCBjb25zdCBSSUdIVF9DVVJMWV9CUkFDS0VUID0gMHg3ZDsgLyogfSAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaXNFT0woYzogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiBjID09PSBMSU5FX0ZFRUQgfHwgYyA9PT0gQ0FSUklBR0VfUkVUVVJOO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGM6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gYyA9PT0gVEFCIHx8IGMgPT09IFNQQUNFO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNXaGl0ZVNwYWNlT3JFT0woYzogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1doaXRlU3BhY2UoYykgfHwgaXNFT0woYyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Zsb3dJbmRpY2F0b3IoYzogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgYyA9PT0gQ09NTUEgfHxcbiAgICBjID09PSBMRUZUX1NRVUFSRV9CUkFDS0VUIHx8XG4gICAgYyA9PT0gUklHSFRfU1FVQVJFX0JSQUNLRVQgfHxcbiAgICBjID09PSBMRUZUX0NVUkxZX0JSQUNLRVQgfHxcbiAgICBjID09PSBSSUdIVF9DVVJMWV9CUkFDS0VUXG4gICk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLG9GQUFvRjtBQUNwRiwwRUFBMEU7QUFDMUUscURBQXFEO0FBRXJELE9BQU8sTUFBTSxNQUFNLE9BQU8sQ0FBQyxPQUFPO0FBQ2xDLE9BQU8sTUFBTSxNQUFNLEtBQUssQ0FBQyxPQUFPO0FBQ2hDLE9BQU8sTUFBTSxZQUFZLEtBQUssQ0FBQyxNQUFNO0FBQ3JDLE9BQU8sTUFBTSxrQkFBa0IsS0FBSyxDQUFDLE1BQU07QUFDM0MsT0FBTyxNQUFNLFFBQVEsS0FBSyxDQUFDLFNBQVM7QUFDcEMsT0FBTyxNQUFNLGNBQWMsS0FBSyxDQUFDLEtBQUs7QUFDdEMsT0FBTyxNQUFNLGVBQWUsS0FBSyxDQUFDLEtBQUs7QUFDdkMsT0FBTyxNQUFNLFFBQVEsS0FBSyxDQUFDLEtBQUs7QUFDaEMsT0FBTyxNQUFNLFVBQVUsS0FBSyxDQUFDLEtBQUs7QUFDbEMsT0FBTyxNQUFNLFlBQVksS0FBSyxDQUFDLEtBQUs7QUFDcEMsT0FBTyxNQUFNLGVBQWUsS0FBSyxDQUFDLEtBQUs7QUFDdkMsT0FBTyxNQUFNLFdBQVcsS0FBSyxDQUFDLEtBQUs7QUFDbkMsT0FBTyxNQUFNLE9BQU8sS0FBSyxDQUFDLEtBQUs7QUFDL0IsT0FBTyxNQUFNLFFBQVEsS0FBSyxDQUFDLEtBQUs7QUFDaEMsT0FBTyxNQUFNLFFBQVEsS0FBSyxDQUFDLEtBQUs7QUFDaEMsT0FBTyxNQUFNLE1BQU0sS0FBSyxDQUFDLEtBQUs7QUFDOUIsT0FBTyxNQUFNLFFBQVEsS0FBSyxDQUFDLEtBQUs7QUFDaEMsT0FBTyxNQUFNLGVBQWUsS0FBSyxDQUFDLEtBQUs7QUFDdkMsT0FBTyxNQUFNLGVBQWUsS0FBSyxDQUFDLEtBQUs7QUFDdkMsT0FBTyxNQUFNLFdBQVcsS0FBSyxDQUFDLEtBQUs7QUFDbkMsT0FBTyxNQUFNLGdCQUFnQixLQUFLLENBQUMsS0FBSztBQUN4QyxPQUFPLE1BQU0sc0JBQXNCLEtBQUssQ0FBQyxLQUFLO0FBQzlDLE9BQU8sTUFBTSxZQUFZLEtBQUssQ0FBQyxLQUFLO0FBQ3BDLE9BQU8sTUFBTSx1QkFBdUIsS0FBSyxDQUFDLEtBQUs7QUFDL0MsT0FBTyxNQUFNLGVBQWUsS0FBSyxDQUFDLEtBQUs7QUFDdkMsT0FBTyxNQUFNLHFCQUFxQixLQUFLLENBQUMsS0FBSztBQUM3QyxPQUFPLE1BQU0sZ0JBQWdCLEtBQUssQ0FBQyxLQUFLO0FBQ3hDLE9BQU8sTUFBTSxzQkFBc0IsS0FBSyxDQUFDLEtBQUs7QUFFOUMsT0FBTyxTQUFTLE1BQU0sQ0FBUztFQUM3QixPQUFPLE1BQU0sYUFBYSxNQUFNO0FBQ2xDO0FBRUEsT0FBTyxTQUFTLGFBQWEsQ0FBUztFQUNwQyxPQUFPLE1BQU0sT0FBTyxNQUFNO0FBQzVCO0FBRUEsT0FBTyxTQUFTLGtCQUFrQixDQUFTO0VBQ3pDLE9BQU8sYUFBYSxNQUFNLE1BQU07QUFDbEM7QUFFQSxPQUFPLFNBQVMsZ0JBQWdCLENBQVM7RUFDdkMsT0FDRSxNQUFNLFNBQ04sTUFBTSx1QkFDTixNQUFNLHdCQUNOLE1BQU0sc0JBQ04sTUFBTTtBQUVWIn0= +// denoCacheMetadata=16977672708744241181,15227247939613248239
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/22868d83da97dcd7a8b8491b9f56f3278eb38b6c47aa5068bfaba35ed4f184fe.js b/vendor/gen/https/jsr.io/22868d83da97dcd7a8b8491b9f56f3278eb38b6c47aa5068bfaba35ed4f184fe.js new file mode 100644 index 0000000..30aac78 --- /dev/null +++ b/vendor/gen/https/jsr.io/22868d83da97dcd7a8b8491b9f56f3278eb38b6c47aa5068bfaba35ed4f184fe.js @@ -0,0 +1,5 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** Return type for {@linkcode extract} function. */ +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnJvbnQtbWF0dGVyLzEuMC45L3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbi8qKiBSZXR1cm4gdHlwZSBmb3Ige0BsaW5rY29kZSBleHRyYWN0fSBmdW5jdGlvbi4gKi9cbmV4cG9ydCB0eXBlIEV4dHJhY3Q8VD4gPSB7XG4gIGZyb250TWF0dGVyOiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgYXR0cnM6IFQ7XG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckMsa0RBQWtELEdBQ2xEIn0= +// denoCacheMetadata=7380334364819250751,436006909503853351
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/23dd695362b33b015f9571c930e513361219d796e62f6994cb54ecbf1f8847bb.js b/vendor/gen/https/jsr.io/23dd695362b33b015f9571c930e513361219d796e62f6994cb54ecbf1f8847bb.js new file mode 100644 index 0000000..488b036 --- /dev/null +++ b/vendor/gen/https/jsr.io/23dd695362b33b015f9571c930e513361219d796e62f6994cb54ecbf1f8847bb.js @@ -0,0 +1,84 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { CHAR_DOT } from "../_common/constants.ts"; +import { assertPath } from "../_common/assert_path.ts"; +import { isPosixPathSeparator } from "./_util.ts"; +/** + * Return the extension of the `path` with leading period. + * + * @example Usage + * ```ts + * import { extname } from "@std/path/posix/extname"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(extname("/home/user/Documents/file.ts"), ".ts"); + * assertEquals(extname("/home/user/Documents/"), ""); + * assertEquals(extname("/home/user/Documents/image.png"), ".png"); + * ``` + * + * @example Working with URLs + * + * Note: This function doesn't automatically strip hash and query parts from + * URLs. If your URL contains a hash or query, remove them before passing the + * URL to the function. This can be done by passing the URL to `new URL(url)`, + * and setting the `hash` and `search` properties to empty strings. + * + * ```ts + * import { extname } from "@std/path/posix/extname"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(extname("https://deno.land/std/path/mod.ts"), ".ts"); + * assertEquals(extname("https://deno.land/std/path/mod.ts?a=b"), ".ts?a=b"); + * assertEquals(extname("https://deno.land/std/path/mod.ts#header"), ".ts#header"); + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `extname` from `@std/path/posix/unstable-extname`. + * + * @param path The path to get the extension from. + * @returns The extension (ex. for `file.ts` returns `.ts`). + */ export function extname(path) { + assertPath(path); + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + for(let i = path.length - 1; i >= 0; --i){ + const code = path.charCodeAt(i); + if (isPosixPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot + preDotState === 0 || // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + return ""; + } + return path.slice(startDot, end); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9wb3NpeC9leHRuYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IENIQVJfRE9UIH0gZnJvbSBcIi4uL19jb21tb24vY29uc3RhbnRzLnRzXCI7XG5pbXBvcnQgeyBhc3NlcnRQYXRoIH0gZnJvbSBcIi4uL19jb21tb24vYXNzZXJ0X3BhdGgudHNcIjtcbmltcG9ydCB7IGlzUG9zaXhQYXRoU2VwYXJhdG9yIH0gZnJvbSBcIi4vX3V0aWwudHNcIjtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIGV4dGVuc2lvbiBvZiB0aGUgYHBhdGhgIHdpdGggbGVhZGluZyBwZXJpb2QuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBleHRuYW1lIH0gZnJvbSBcIkBzdGQvcGF0aC9wb3NpeC9leHRuYW1lXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoZXh0bmFtZShcIi9ob21lL3VzZXIvRG9jdW1lbnRzL2ZpbGUudHNcIiksIFwiLnRzXCIpO1xuICogYXNzZXJ0RXF1YWxzKGV4dG5hbWUoXCIvaG9tZS91c2VyL0RvY3VtZW50cy9cIiksIFwiXCIpO1xuICogYXNzZXJ0RXF1YWxzKGV4dG5hbWUoXCIvaG9tZS91c2VyL0RvY3VtZW50cy9pbWFnZS5wbmdcIiksIFwiLnBuZ1wiKTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFdvcmtpbmcgd2l0aCBVUkxzXG4gKlxuICogTm90ZTogVGhpcyBmdW5jdGlvbiBkb2Vzbid0IGF1dG9tYXRpY2FsbHkgc3RyaXAgaGFzaCBhbmQgcXVlcnkgcGFydHMgZnJvbVxuICogVVJMcy4gSWYgeW91ciBVUkwgY29udGFpbnMgYSBoYXNoIG9yIHF1ZXJ5LCByZW1vdmUgdGhlbSBiZWZvcmUgcGFzc2luZyB0aGVcbiAqIFVSTCB0byB0aGUgZnVuY3Rpb24uIFRoaXMgY2FuIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgVVJMIHRvIGBuZXcgVVJMKHVybClgLFxuICogYW5kIHNldHRpbmcgdGhlIGBoYXNoYCBhbmQgYHNlYXJjaGAgcHJvcGVydGllcyB0byBlbXB0eSBzdHJpbmdzLlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBleHRuYW1lIH0gZnJvbSBcIkBzdGQvcGF0aC9wb3NpeC9leHRuYW1lXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoZXh0bmFtZShcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9wYXRoL21vZC50c1wiKSwgXCIudHNcIik7XG4gKiBhc3NlcnRFcXVhbHMoZXh0bmFtZShcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9wYXRoL21vZC50cz9hPWJcIiksIFwiLnRzP2E9YlwiKTtcbiAqIGFzc2VydEVxdWFscyhleHRuYW1lKFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkL3BhdGgvbW9kLnRzI2hlYWRlclwiKSwgXCIudHMjaGVhZGVyXCIpO1xuICogYGBgXG4gKlxuICogTm90ZTogSWYgeW91IGFyZSB3b3JraW5nIHdpdGggZmlsZSBVUkxzLFxuICogdXNlIHRoZSBuZXcgdmVyc2lvbiBvZiBgZXh0bmFtZWAgZnJvbSBgQHN0ZC9wYXRoL3Bvc2l4L3Vuc3RhYmxlLWV4dG5hbWVgLlxuICpcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIGdldCB0aGUgZXh0ZW5zaW9uIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgZXh0ZW5zaW9uIChleC4gZm9yIGBmaWxlLnRzYCByZXR1cm5zIGAudHNgKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dG5hbWUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICBsZXQgc3RhcnREb3QgPSAtMTtcbiAgbGV0IHN0YXJ0UGFydCA9IDA7XG4gIGxldCBlbmQgPSAtMTtcbiAgbGV0IG1hdGNoZWRTbGFzaCA9IHRydWU7XG4gIC8vIFRyYWNrIHRoZSBzdGF0ZSBvZiBjaGFyYWN0ZXJzIChpZiBhbnkpIHdlIHNlZSBiZWZvcmUgb3VyIGZpcnN0IGRvdCBhbmRcbiAgLy8gYWZ0ZXIgYW55IHBhdGggc2VwYXJhdG9yIHdlIGZpbmRcbiAgbGV0IHByZURvdFN0YXRlID0gMDtcbiAgZm9yIChsZXQgaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICBjb25zdCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChpc1Bvc2l4UGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgc3RhcnRQYXJ0ID0gaSArIDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAvLyBleHRlbnNpb25cbiAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgZW5kID0gaSArIDE7XG4gICAgfVxuICAgIGlmIChjb2RlID09PSBDSEFSX0RPVCkge1xuICAgICAgLy8gSWYgdGhpcyBpcyBvdXIgZmlyc3QgZG90LCBtYXJrIGl0IGFzIHRoZSBzdGFydCBvZiBvdXIgZXh0ZW5zaW9uXG4gICAgICBpZiAoc3RhcnREb3QgPT09IC0xKSBzdGFydERvdCA9IGk7XG4gICAgICBlbHNlIGlmIChwcmVEb3RTdGF0ZSAhPT0gMSkgcHJlRG90U3RhdGUgPSAxO1xuICAgIH0gZWxzZSBpZiAoc3RhcnREb3QgIT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgYSBub24tZG90IGFuZCBub24tcGF0aCBzZXBhcmF0b3IgYmVmb3JlIG91ciBkb3QsIHNvIHdlIHNob3VsZFxuICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb25cbiAgICAgIHByZURvdFN0YXRlID0gLTE7XG4gICAgfVxuICB9XG5cbiAgaWYgKFxuICAgIHN0YXJ0RG90ID09PSAtMSB8fFxuICAgIGVuZCA9PT0gLTEgfHxcbiAgICAvLyBXZSBzYXcgYSBub24tZG90IGNoYXJhY3RlciBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGRvdFxuICAgIHByZURvdFN0YXRlID09PSAwIHx8XG4gICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgJy4uJ1xuICAgIChwcmVEb3RTdGF0ZSA9PT0gMSAmJiBzdGFydERvdCA9PT0gZW5kIC0gMSAmJiBzdGFydERvdCA9PT0gc3RhcnRQYXJ0ICsgMSlcbiAgKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbiAgcmV0dXJuIHBhdGguc2xpY2Uoc3RhcnREb3QsIGVuZCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQyxTQUFTLFFBQVEsUUFBUSwwQkFBMEI7QUFDbkQsU0FBUyxVQUFVLFFBQVEsNEJBQTRCO0FBQ3ZELFNBQVMsb0JBQW9CLFFBQVEsYUFBYTtBQUVsRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWtDQyxHQUNELE9BQU8sU0FBUyxRQUFRLElBQVk7RUFDbEMsV0FBVztFQUVYLElBQUksV0FBVyxDQUFDO0VBQ2hCLElBQUksWUFBWTtFQUNoQixJQUFJLE1BQU0sQ0FBQztFQUNYLElBQUksZUFBZTtFQUNuQix5RUFBeUU7RUFDekUsbUNBQW1DO0VBQ25DLElBQUksY0FBYztFQUNsQixJQUFLLElBQUksSUFBSSxLQUFLLE1BQU0sR0FBRyxHQUFHLEtBQUssR0FBRyxFQUFFLEVBQUc7SUFDekMsTUFBTSxPQUFPLEtBQUssVUFBVSxDQUFDO0lBQzdCLElBQUkscUJBQXFCLE9BQU87TUFDOUIsb0VBQW9FO01BQ3BFLGdEQUFnRDtNQUNoRCxJQUFJLENBQUMsY0FBYztRQUNqQixZQUFZLElBQUk7UUFDaEI7TUFDRjtNQUNBO0lBQ0Y7SUFDQSxJQUFJLFFBQVEsQ0FBQyxHQUFHO01BQ2QsbUVBQW1FO01BQ25FLFlBQVk7TUFDWixlQUFlO01BQ2YsTUFBTSxJQUFJO0lBQ1o7SUFDQSxJQUFJLFNBQVMsVUFBVTtNQUNyQixrRUFBa0U7TUFDbEUsSUFBSSxhQUFhLENBQUMsR0FBRyxXQUFXO1dBQzNCLElBQUksZ0JBQWdCLEdBQUcsY0FBYztJQUM1QyxPQUFPLElBQUksYUFBYSxDQUFDLEdBQUc7TUFDMUIsdUVBQXVFO01BQ3ZFLHFEQUFxRDtNQUNyRCxjQUFjLENBQUM7SUFDakI7RUFDRjtFQUVBLElBQ0UsYUFBYSxDQUFDLEtBQ2QsUUFBUSxDQUFDLEtBQ1Qsd0RBQXdEO0VBQ3hELGdCQUFnQixLQUNoQiwwREFBMEQ7RUFDekQsZ0JBQWdCLEtBQUssYUFBYSxNQUFNLEtBQUssYUFBYSxZQUFZLEdBQ3ZFO0lBQ0EsT0FBTztFQUNUO0VBQ0EsT0FBTyxLQUFLLEtBQUssQ0FBQyxVQUFVO0FBQzlCIn0= +// denoCacheMetadata=441796846989631709,9912120908674676564
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/240ddf07245e78a80fd400a82f119a5d566397aec6081dec5d65e4022396199d.js b/vendor/gen/https/jsr.io/240ddf07245e78a80fd400a82f119a5d566397aec6081dec5d65e4022396199d.js new file mode 100644 index 0000000..021be07 --- /dev/null +++ b/vendor/gen/https/jsr.io/240ddf07245e78a80fd400a82f119a5d566397aec6081dec5d65e4022396199d.js @@ -0,0 +1,42 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { assertPath } from "../_common/assert_path.ts"; +import { normalize } from "./normalize.ts"; +/** + * Join all given a sequence of `paths`,then normalizes the resulting path. + * + * @example Usage + * ```ts + * import { join } from "@std/path/posix/join"; + * import { assertEquals } from "@std/assert"; + * + * const path = join("/foo", "bar", "baz/asdf", "quux", ".."); + * assertEquals(path, "/foo/bar/baz/asdf"); + * ``` + * + * @example Working with URLs + * ```ts + * import { join } from "@std/path/posix/join"; + * import { assertEquals } from "@std/assert"; + * + * const url = new URL("https://deno.land"); + * url.pathname = join("std", "path", "mod.ts"); + * assertEquals(url.href, "https://deno.land/std/path/mod.ts"); + * + * url.pathname = join("//std", "path/", "/mod.ts"); + * assertEquals(url.href, "https://deno.land/std/path/mod.ts"); + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `join` from `@std/path/posix/unstable-join`. + * + * @param paths The paths to join. + * @returns The joined path. + */ export function join(...paths) { + if (paths.length === 0) return "."; + paths.forEach((path)=>assertPath(path)); + const joined = paths.filter((path)=>path.length > 0).join("/"); + return joined === "" ? "." : normalize(joined); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9wb3NpeC9qb2luLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGFzc2VydFBhdGggfSBmcm9tIFwiLi4vX2NvbW1vbi9hc3NlcnRfcGF0aC50c1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4vbm9ybWFsaXplLnRzXCI7XG5cbi8qKlxuICogSm9pbiBhbGwgZ2l2ZW4gYSBzZXF1ZW5jZSBvZiBgcGF0aHNgLHRoZW4gbm9ybWFsaXplcyB0aGUgcmVzdWx0aW5nIHBhdGguXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBqb2luIH0gZnJvbSBcIkBzdGQvcGF0aC9wb3NpeC9qb2luXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBwYXRoID0gam9pbihcIi9mb29cIiwgXCJiYXJcIiwgXCJiYXovYXNkZlwiLCBcInF1dXhcIiwgXCIuLlwiKTtcbiAqIGFzc2VydEVxdWFscyhwYXRoLCBcIi9mb28vYmFyL2Jhei9hc2RmXCIpO1xuICogYGBgXG4gKlxuICogQGV4YW1wbGUgV29ya2luZyB3aXRoIFVSTHNcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBqb2luIH0gZnJvbSBcIkBzdGQvcGF0aC9wb3NpeC9qb2luXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCB1cmwgPSBuZXcgVVJMKFwiaHR0cHM6Ly9kZW5vLmxhbmRcIik7XG4gKiB1cmwucGF0aG5hbWUgPSBqb2luKFwic3RkXCIsIFwicGF0aFwiLCBcIm1vZC50c1wiKTtcbiAqIGFzc2VydEVxdWFscyh1cmwuaHJlZiwgXCJodHRwczovL2Rlbm8ubGFuZC9zdGQvcGF0aC9tb2QudHNcIik7XG4gKlxuICogdXJsLnBhdGhuYW1lID0gam9pbihcIi8vc3RkXCIsIFwicGF0aC9cIiwgXCIvbW9kLnRzXCIpO1xuICogYXNzZXJ0RXF1YWxzKHVybC5ocmVmLCBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9wYXRoL21vZC50c1wiKTtcbiAqIGBgYFxuICpcbiAqIE5vdGU6IElmIHlvdSBhcmUgd29ya2luZyB3aXRoIGZpbGUgVVJMcyxcbiAqIHVzZSB0aGUgbmV3IHZlcnNpb24gb2YgYGpvaW5gIGZyb20gYEBzdGQvcGF0aC9wb3NpeC91bnN0YWJsZS1qb2luYC5cbiAqXG4gKiBAcGFyYW0gcGF0aHMgVGhlIHBhdGhzIHRvIGpvaW4uXG4gKiBAcmV0dXJucyBUaGUgam9pbmVkIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBqb2luKC4uLnBhdGhzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIGlmIChwYXRocy5sZW5ndGggPT09IDApIHJldHVybiBcIi5cIjtcbiAgcGF0aHMuZm9yRWFjaCgocGF0aCkgPT4gYXNzZXJ0UGF0aChwYXRoKSk7XG4gIGNvbnN0IGpvaW5lZCA9IHBhdGhzLmZpbHRlcigocGF0aCkgPT4gcGF0aC5sZW5ndGggPiAwKS5qb2luKFwiL1wiKTtcbiAgcmV0dXJuIGpvaW5lZCA9PT0gXCJcIiA/IFwiLlwiIDogbm9ybWFsaXplKGpvaW5lZCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQyxTQUFTLFVBQVUsUUFBUSw0QkFBNEI7QUFDdkQsU0FBUyxTQUFTLFFBQVEsaUJBQWlCO0FBRTNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E4QkMsR0FDRCxPQUFPLFNBQVMsS0FBSyxHQUFHLEtBQWU7RUFDckMsSUFBSSxNQUFNLE1BQU0sS0FBSyxHQUFHLE9BQU87RUFDL0IsTUFBTSxPQUFPLENBQUMsQ0FBQyxPQUFTLFdBQVc7RUFDbkMsTUFBTSxTQUFTLE1BQU0sTUFBTSxDQUFDLENBQUMsT0FBUyxLQUFLLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQztFQUM1RCxPQUFPLFdBQVcsS0FBSyxNQUFNLFVBQVU7QUFDekMifQ== +// denoCacheMetadata=2304529185096435254,4053921657207254428
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/264b5c2fd3ca2f77b897f4ca4174959deb5b0ba0827f362927dbfc32f904859c.js b/vendor/gen/https/jsr.io/264b5c2fd3ca2f77b897f4ca4174959deb5b0ba0827f362927dbfc32f904859c.js new file mode 100644 index 0000000..39f8e25 --- /dev/null +++ b/vendor/gen/https/jsr.io/264b5c2fd3ca2f77b897f4ca4174959deb5b0ba0827f362927dbfc32f904859c.js @@ -0,0 +1,95 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { isPosixPathSeparator } from "./_util.ts"; +import { resolve } from "./resolve.ts"; +import { assertArgs } from "../_common/relative.ts"; +/** + * Return the relative path from `from` to `to` based on current working directory. + * + * If `from` and `to` are the same, return an empty string. + * + * @example Usage + * ```ts + * import { relative } from "@std/path/posix/relative"; + * import { assertEquals } from "@std/assert"; + * + * const path = relative("/data/orandea/test/aaa", "/data/orandea/impl/bbb"); + * assertEquals(path, "../../impl/bbb"); + * ``` + * + * @param from The path to start from. + * @param to The path to reach. + * @returns The relative path. + */ export function relative(from, to) { + assertArgs(from, to); + from = resolve(from); + to = resolve(to); + if (from === to) return ""; + // Trim any leading backslashes + let fromStart = 1; + const fromEnd = from.length; + for(; fromStart < fromEnd; ++fromStart){ + if (!isPosixPathSeparator(from.charCodeAt(fromStart))) break; + } + const fromLen = fromEnd - fromStart; + // Trim any leading backslashes + let toStart = 1; + const toEnd = to.length; + for(; toStart < toEnd; ++toStart){ + if (!isPosixPathSeparator(to.charCodeAt(toStart))) break; + } + const toLen = toEnd - toStart; + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for(; i <= length; ++i){ + if (i === length) { + if (toLen > length) { + if (isPosixPathSeparator(to.charCodeAt(toStart + i))) { + // We get here if `from` is the exact base path for `to`. + // For example: from='/foo/bar'; to='/foo/bar/baz' + return to.slice(toStart + i + 1); + } else if (i === 0) { + // We get here if `from` is the root + // For example: from='/'; to='/foo' + return to.slice(toStart + i); + } + } else if (fromLen > length) { + if (isPosixPathSeparator(from.charCodeAt(fromStart + i))) { + // We get here if `to` is the exact base path for `from`. + // For example: from='/foo/bar/baz'; to='/foo/bar' + lastCommonSep = i; + } else if (i === 0) { + // We get here if `to` is the root. + // For example: from='/foo'; to='/' + lastCommonSep = 0; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (isPosixPathSeparator(fromCode)) lastCommonSep = i; + } + let out = ""; + // Generate the relative path based on the path difference between `to` + // and `from` + for(i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i){ + if (i === fromEnd || isPosixPathSeparator(from.charCodeAt(i))) { + if (out.length === 0) out += ".."; + else out += "/.."; + } + } + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) return out + to.slice(toStart + lastCommonSep); + else { + toStart += lastCommonSep; + if (isPosixPathSeparator(to.charCodeAt(toStart))) ++toStart; + return to.slice(toStart); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9wb3NpeC9yZWxhdGl2ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBpc1Bvc2l4UGF0aFNlcGFyYXRvciB9IGZyb20gXCIuL191dGlsLnRzXCI7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSBcIi4vcmVzb2x2ZS50c1wiO1xuaW1wb3J0IHsgYXNzZXJ0QXJncyB9IGZyb20gXCIuLi9fY29tbW9uL3JlbGF0aXZlLnRzXCI7XG5cbi8qKlxuICogUmV0dXJuIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gYGZyb21gIHRvIGB0b2AgYmFzZWQgb24gY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS5cbiAqXG4gKiBJZiBgZnJvbWAgYW5kIGB0b2AgYXJlIHRoZSBzYW1lLCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgcmVsYXRpdmUgfSBmcm9tIFwiQHN0ZC9wYXRoL3Bvc2l4L3JlbGF0aXZlXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBwYXRoID0gcmVsYXRpdmUoXCIvZGF0YS9vcmFuZGVhL3Rlc3QvYWFhXCIsIFwiL2RhdGEvb3JhbmRlYS9pbXBsL2JiYlwiKTtcbiAqIGFzc2VydEVxdWFscyhwYXRoLCBcIi4uLy4uL2ltcGwvYmJiXCIpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIGZyb20gVGhlIHBhdGggdG8gc3RhcnQgZnJvbS5cbiAqIEBwYXJhbSB0byBUaGUgcGF0aCB0byByZWFjaC5cbiAqIEByZXR1cm5zIFRoZSByZWxhdGl2ZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVsYXRpdmUoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKTogc3RyaW5nIHtcbiAgYXNzZXJ0QXJncyhmcm9tLCB0byk7XG5cbiAgZnJvbSA9IHJlc29sdmUoZnJvbSk7XG4gIHRvID0gcmVzb2x2ZSh0byk7XG5cbiAgaWYgKGZyb20gPT09IHRvKSByZXR1cm4gXCJcIjtcblxuICAvLyBUcmltIGFueSBsZWFkaW5nIGJhY2tzbGFzaGVzXG4gIGxldCBmcm9tU3RhcnQgPSAxO1xuICBjb25zdCBmcm9tRW5kID0gZnJvbS5sZW5ndGg7XG4gIGZvciAoOyBmcm9tU3RhcnQgPCBmcm9tRW5kOyArK2Zyb21TdGFydCkge1xuICAgIGlmICghaXNQb3NpeFBhdGhTZXBhcmF0b3IoZnJvbS5jaGFyQ29kZUF0KGZyb21TdGFydCkpKSBicmVhaztcbiAgfVxuICBjb25zdCBmcm9tTGVuID0gZnJvbUVuZCAtIGZyb21TdGFydDtcblxuICAvLyBUcmltIGFueSBsZWFkaW5nIGJhY2tzbGFzaGVzXG4gIGxldCB0b1N0YXJ0ID0gMTtcbiAgY29uc3QgdG9FbmQgPSB0by5sZW5ndGg7XG4gIGZvciAoOyB0b1N0YXJ0IDwgdG9FbmQ7ICsrdG9TdGFydCkge1xuICAgIGlmICghaXNQb3NpeFBhdGhTZXBhcmF0b3IodG8uY2hhckNvZGVBdCh0b1N0YXJ0KSkpIGJyZWFrO1xuICB9XG4gIGNvbnN0IHRvTGVuID0gdG9FbmQgLSB0b1N0YXJ0O1xuXG4gIC8vIENvbXBhcmUgcGF0aHMgdG8gZmluZCB0aGUgbG9uZ2VzdCBjb21tb24gcGF0aCBmcm9tIHJvb3RcbiAgY29uc3QgbGVuZ3RoID0gZnJvbUxlbiA8IHRvTGVuID8gZnJvbUxlbiA6IHRvTGVuO1xuICBsZXQgbGFzdENvbW1vblNlcCA9IC0xO1xuICBsZXQgaSA9IDA7XG4gIGZvciAoOyBpIDw9IGxlbmd0aDsgKytpKSB7XG4gICAgaWYgKGkgPT09IGxlbmd0aCkge1xuICAgICAgaWYgKHRvTGVuID4gbGVuZ3RoKSB7XG4gICAgICAgIGlmIChpc1Bvc2l4UGF0aFNlcGFyYXRvcih0by5jaGFyQ29kZUF0KHRvU3RhcnQgKyBpKSkpIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgZnJvbWAgaXMgdGhlIGV4YWN0IGJhc2UgcGF0aCBmb3IgYHRvYC5cbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nL2Zvby9iYXInOyB0bz0nL2Zvby9iYXIvYmF6J1xuICAgICAgICAgIHJldHVybiB0by5zbGljZSh0b1N0YXJ0ICsgaSArIDEpO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgZnJvbWAgaXMgdGhlIHJvb3RcbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nLyc7IHRvPScvZm9vJ1xuICAgICAgICAgIHJldHVybiB0by5zbGljZSh0b1N0YXJ0ICsgaSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZnJvbUxlbiA+IGxlbmd0aCkge1xuICAgICAgICBpZiAoaXNQb3NpeFBhdGhTZXBhcmF0b3IoZnJvbS5jaGFyQ29kZUF0KGZyb21TdGFydCArIGkpKSkge1xuICAgICAgICAgIC8vIFdlIGdldCBoZXJlIGlmIGB0b2AgaXMgdGhlIGV4YWN0IGJhc2UgcGF0aCBmb3IgYGZyb21gLlxuICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPScvZm9vL2Jhci9iYXonOyB0bz0nL2Zvby9iYXInXG4gICAgICAgICAgbGFzdENvbW1vblNlcCA9IGk7XG4gICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgIC8vIFdlIGdldCBoZXJlIGlmIGB0b2AgaXMgdGhlIHJvb3QuXG4gICAgICAgICAgLy8gRm9yIGV4YW1wbGU6IGZyb209Jy9mb28nOyB0bz0nLydcbiAgICAgICAgICBsYXN0Q29tbW9uU2VwID0gMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNvbnN0IGZyb21Db2RlID0gZnJvbS5jaGFyQ29kZUF0KGZyb21TdGFydCArIGkpO1xuICAgIGNvbnN0IHRvQ29kZSA9IHRvLmNoYXJDb2RlQXQodG9TdGFydCArIGkpO1xuICAgIGlmIChmcm9tQ29kZSAhPT0gdG9Db2RlKSBicmVhaztcbiAgICBlbHNlIGlmIChpc1Bvc2l4UGF0aFNlcGFyYXRvcihmcm9tQ29kZSkpIGxhc3RDb21tb25TZXAgPSBpO1xuICB9XG5cbiAgbGV0IG91dCA9IFwiXCI7XG4gIC8vIEdlbmVyYXRlIHRoZSByZWxhdGl2ZSBwYXRoIGJhc2VkIG9uIHRoZSBwYXRoIGRpZmZlcmVuY2UgYmV0d2VlbiBgdG9gXG4gIC8vIGFuZCBgZnJvbWBcbiAgZm9yIChpID0gZnJvbVN0YXJ0ICsgbGFzdENvbW1vblNlcCArIDE7IGkgPD0gZnJvbUVuZDsgKytpKSB7XG4gICAgaWYgKGkgPT09IGZyb21FbmQgfHwgaXNQb3NpeFBhdGhTZXBhcmF0b3IoZnJvbS5jaGFyQ29kZUF0KGkpKSkge1xuICAgICAgaWYgKG91dC5sZW5ndGggPT09IDApIG91dCArPSBcIi4uXCI7XG4gICAgICBlbHNlIG91dCArPSBcIi8uLlwiO1xuICAgIH1cbiAgfVxuXG4gIC8vIExhc3RseSwgYXBwZW5kIHRoZSByZXN0IG9mIHRoZSBkZXN0aW5hdGlvbiAoYHRvYCkgcGF0aCB0aGF0IGNvbWVzIGFmdGVyXG4gIC8vIHRoZSBjb21tb24gcGF0aCBwYXJ0c1xuICBpZiAob3V0Lmxlbmd0aCA+IDApIHJldHVybiBvdXQgKyB0by5zbGljZSh0b1N0YXJ0ICsgbGFzdENvbW1vblNlcCk7XG4gIGVsc2Uge1xuICAgIHRvU3RhcnQgKz0gbGFzdENvbW1vblNlcDtcbiAgICBpZiAoaXNQb3NpeFBhdGhTZXBhcmF0b3IodG8uY2hhckNvZGVBdCh0b1N0YXJ0KSkpICsrdG9TdGFydDtcbiAgICByZXR1cm4gdG8uc2xpY2UodG9TdGFydCk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNB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 +// denoCacheMetadata=12271045797647757586,4042904861671241489
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/2690ba5c1d393196f984c7da831a246087c0b598c0e496771bfe1304f0d014f2.js b/vendor/gen/https/jsr.io/2690ba5c1d393196f984c7da831a246087c0b598c0e496771bfe1304f0d014f2.js new file mode 100644 index 0000000..1645dd3 --- /dev/null +++ b/vendor/gen/https/jsr.io/2690ba5c1d393196f984c7da831a246087c0b598c0e496771bfe1304f0d014f2.js @@ -0,0 +1,55 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { assertArg } from "../_common/normalize.ts"; +import { normalizeString } from "../_common/normalize_string.ts"; +import { isPosixPathSeparator } from "./_util.ts"; +/** + * Normalize the `path`, resolving `'..'` and `'.'` segments. + * Note that resolving these segments does not necessarily mean that all will be eliminated. + * A `'..'` at the top-level will be preserved, and an empty path is canonically `'.'`. + * + * @example Usage + * ```ts + * import { normalize } from "@std/path/posix/normalize"; + * import { assertEquals } from "@std/assert"; + * + * const path = normalize("/foo/bar//baz/asdf/quux/.."); + * assertEquals(path, "/foo/bar/baz/asdf"); + * ``` + * + * @example Working with URLs + * + * Note: This function will remove the double slashes from a URL's scheme. + * Hence, do not pass a full URL to this function. Instead, pass the pathname of + * the URL. + * + * ```ts + * import { normalize } from "@std/path/posix/normalize"; + * import { assertEquals } from "@std/assert"; + * + * const url = new URL("https://deno.land"); + * url.pathname = normalize("//std//assert//.//mod.ts"); + * assertEquals(url.href, "https://deno.land/std/assert/mod.ts"); + * + * url.pathname = normalize("std/assert/../async/retry.ts"); + * assertEquals(url.href, "https://deno.land/std/async/retry.ts"); + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `normalize` from `@std/path/posix/unstable-normalize`. + * + * @param path The path to normalize. + * @returns The normalized path. + */ export function normalize(path) { + assertArg(path); + const isAbsolute = isPosixPathSeparator(path.charCodeAt(0)); + const trailingSeparator = isPosixPathSeparator(path.charCodeAt(path.length - 1)); + // Normalize the path + path = normalizeString(path, !isAbsolute, "/", isPosixPathSeparator); + if (path.length === 0 && !isAbsolute) path = "."; + if (path.length > 0 && trailingSeparator) path += "/"; + if (isAbsolute) return `/${path}`; + return path; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9wb3NpeC9ub3JtYWxpemUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgYXNzZXJ0QXJnIH0gZnJvbSBcIi4uL19jb21tb24vbm9ybWFsaXplLnRzXCI7XG5pbXBvcnQgeyBub3JtYWxpemVTdHJpbmcgfSBmcm9tIFwiLi4vX2NvbW1vbi9ub3JtYWxpemVfc3RyaW5nLnRzXCI7XG5pbXBvcnQgeyBpc1Bvc2l4UGF0aFNlcGFyYXRvciB9IGZyb20gXCIuL191dGlsLnRzXCI7XG5cbi8qKlxuICogTm9ybWFsaXplIHRoZSBgcGF0aGAsIHJlc29sdmluZyBgJy4uJ2AgYW5kIGAnLidgIHNlZ21lbnRzLlxuICogTm90ZSB0aGF0IHJlc29sdmluZyB0aGVzZSBzZWdtZW50cyBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIHRoYXQgYWxsIHdpbGwgYmUgZWxpbWluYXRlZC5cbiAqIEEgYCcuLidgIGF0IHRoZSB0b3AtbGV2ZWwgd2lsbCBiZSBwcmVzZXJ2ZWQsIGFuZCBhbiBlbXB0eSBwYXRoIGlzIGNhbm9uaWNhbGx5IGAnLidgLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIkBzdGQvcGF0aC9wb3NpeC9ub3JtYWxpemVcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IHBhdGggPSBub3JtYWxpemUoXCIvZm9vL2Jhci8vYmF6L2FzZGYvcXV1eC8uLlwiKTtcbiAqIGFzc2VydEVxdWFscyhwYXRoLCBcIi9mb28vYmFyL2Jhei9hc2RmXCIpO1xuICogYGBgXG4gKlxuICogQGV4YW1wbGUgV29ya2luZyB3aXRoIFVSTHNcbiAqXG4gKiBOb3RlOiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVtb3ZlIHRoZSBkb3VibGUgc2xhc2hlcyBmcm9tIGEgVVJMJ3Mgc2NoZW1lLlxuICogSGVuY2UsIGRvIG5vdCBwYXNzIGEgZnVsbCBVUkwgdG8gdGhpcyBmdW5jdGlvbi4gSW5zdGVhZCwgcGFzcyB0aGUgcGF0aG5hbWUgb2ZcbiAqIHRoZSBVUkwuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCJAc3RkL3BhdGgvcG9zaXgvbm9ybWFsaXplXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCB1cmwgPSBuZXcgVVJMKFwiaHR0cHM6Ly9kZW5vLmxhbmRcIik7XG4gKiB1cmwucGF0aG5hbWUgPSBub3JtYWxpemUoXCIvL3N0ZC8vYXNzZXJ0Ly8uLy9tb2QudHNcIik7XG4gKiBhc3NlcnRFcXVhbHModXJsLmhyZWYsIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkL2Fzc2VydC9tb2QudHNcIik7XG4gKlxuICogdXJsLnBhdGhuYW1lID0gbm9ybWFsaXplKFwic3RkL2Fzc2VydC8uLi9hc3luYy9yZXRyeS50c1wiKTtcbiAqIGFzc2VydEVxdWFscyh1cmwuaHJlZiwgXCJodHRwczovL2Rlbm8ubGFuZC9zdGQvYXN5bmMvcmV0cnkudHNcIik7XG4gKiBgYGBcbiAqXG4gKiBOb3RlOiBJZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBmaWxlIFVSTHMsXG4gKiB1c2UgdGhlIG5ldyB2ZXJzaW9uIG9mIGBub3JtYWxpemVgIGZyb20gYEBzdGQvcGF0aC9wb3NpeC91bnN0YWJsZS1ub3JtYWxpemVgLlxuICpcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIG5vcm1hbGl6ZS5cbiAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgYXNzZXJ0QXJnKHBhdGgpO1xuXG4gIGNvbnN0IGlzQWJzb2x1dGUgPSBpc1Bvc2l4UGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMCkpO1xuICBjb25zdCB0cmFpbGluZ1NlcGFyYXRvciA9IGlzUG9zaXhQYXRoU2VwYXJhdG9yKFxuICAgIHBhdGguY2hhckNvZGVBdChwYXRoLmxlbmd0aCAtIDEpLFxuICApO1xuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgcGF0aFxuICBwYXRoID0gbm9ybWFsaXplU3RyaW5nKHBhdGgsICFpc0Fic29sdXRlLCBcIi9cIiwgaXNQb3NpeFBhdGhTZXBhcmF0b3IpO1xuXG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMCAmJiAhaXNBYnNvbHV0ZSkgcGF0aCA9IFwiLlwiO1xuICBpZiAocGF0aC5sZW5ndGggPiAwICYmIHRyYWlsaW5nU2VwYXJhdG9yKSBwYXRoICs9IFwiL1wiO1xuXG4gIGlmIChpc0Fic29sdXRlKSByZXR1cm4gYC8ke3BhdGh9YDtcbiAgcmV0dXJuIHBhdGg7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQyxTQUFTLFNBQVMsUUFBUSwwQkFBMEI7QUFDcEQsU0FBUyxlQUFlLFFBQVEsaUNBQWlDO0FBQ2pFLFNBQVMsb0JBQW9CLFFBQVEsYUFBYTtBQUVsRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXFDQyxHQUNELE9BQU8sU0FBUyxVQUFVLElBQVk7RUFDcEMsVUFBVTtFQUVWLE1BQU0sYUFBYSxxQkFBcUIsS0FBSyxVQUFVLENBQUM7RUFDeEQsTUFBTSxvQkFBb0IscUJBQ3hCLEtBQUssVUFBVSxDQUFDLEtBQUssTUFBTSxHQUFHO0VBR2hDLHFCQUFxQjtFQUNyQixPQUFPLGdCQUFnQixNQUFNLENBQUMsWUFBWSxLQUFLO0VBRS9DLElBQUksS0FBSyxNQUFNLEtBQUssS0FBSyxDQUFDLFlBQVksT0FBTztFQUM3QyxJQUFJLEtBQUssTUFBTSxHQUFHLEtBQUssbUJBQW1CLFFBQVE7RUFFbEQsSUFBSSxZQUFZLE9BQU8sQ0FBQyxDQUFDLEVBQUUsTUFBTTtFQUNqQyxPQUFPO0FBQ1QifQ== +// denoCacheMetadata=14729942179157207931,7246496928428959261
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/272b8f245218da9945acf2490e22fd5b03b0b7f84d7e9400ecf2770a34f360c7.js b/vendor/gen/https/jsr.io/272b8f245218da9945acf2490e22fd5b03b0b7f84d7e9400ecf2770a34f360c7.js new file mode 100644 index 0000000..07472c5 --- /dev/null +++ b/vendor/gen/https/jsr.io/272b8f245218da9945acf2490e22fd5b03b0b7f84d7e9400ecf2770a34f360c7.js @@ -0,0 +1,146 @@ +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { binary } from "./_type/binary.ts"; +import { bool } from "./_type/bool.ts"; +import { float } from "./_type/float.ts"; +import { int } from "./_type/int.ts"; +import { map } from "./_type/map.ts"; +import { merge } from "./_type/merge.ts"; +import { nil } from "./_type/nil.ts"; +import { omap } from "./_type/omap.ts"; +import { pairs } from "./_type/pairs.ts"; +import { regexp } from "./_type/regexp.ts"; +import { seq } from "./_type/seq.ts"; +import { set } from "./_type/set.ts"; +import { str } from "./_type/str.ts"; +import { timestamp } from "./_type/timestamp.ts"; +import { undefinedType } from "./_type/undefined.ts"; +function createTypeMap(implicitTypes, explicitTypes) { + const result = { + fallback: new Map(), + mapping: new Map(), + scalar: new Map(), + sequence: new Map() + }; + const fallbackMap = result.fallback; + for (const type of [ + ...implicitTypes, + ...explicitTypes + ]){ + const map = result[type.kind]; + map.set(type.tag, type); + fallbackMap.set(type.tag, type); + } + return result; +} +function createSchema({ explicitTypes = [], implicitTypes = [], include }) { + if (include) { + implicitTypes.push(...include.implicitTypes); + explicitTypes.push(...include.explicitTypes); + } + const typeMap = createTypeMap(implicitTypes, explicitTypes); + return { + implicitTypes, + explicitTypes, + typeMap + }; +} +/** + * Standard YAML's failsafe schema. + * + * @see {@link http://www.yaml.org/spec/1.2/spec.html#id2802346} + */ const FAILSAFE_SCHEMA = createSchema({ + explicitTypes: [ + str, + seq, + map + ] +}); +/** + * Standard YAML's JSON schema. + * + * @see {@link http://www.yaml.org/spec/1.2/spec.html#id2803231} + */ const JSON_SCHEMA = createSchema({ + implicitTypes: [ + nil, + bool, + int, + float + ], + include: FAILSAFE_SCHEMA +}); +/** + * Standard YAML's core schema. + * + * @see {@link http://www.yaml.org/spec/1.2/spec.html#id2804923} + */ const CORE_SCHEMA = createSchema({ + include: JSON_SCHEMA +}); +/** + * Default YAML schema. It is not described in the YAML specification. + */ export const DEFAULT_SCHEMA = createSchema({ + explicitTypes: [ + binary, + omap, + pairs, + set + ], + implicitTypes: [ + timestamp, + merge + ], + include: CORE_SCHEMA +}); +/*** + * Extends JS-YAML default schema with additional JavaScript types + * It is not described in the YAML specification. + * Functions are no longer supported for security reasons. + * + * @example + * ```ts + * import { parse } from "@std/yaml"; + * + * const data = parse( + * ` + * regexp: + * simple: !!js/regexp foobar + * modifiers: !!js/regexp /foobar/mi + * undefined: !!js/undefined ~ + * `, + * { schema: "extended" }, + * ); + * ``` + */ const EXTENDED_SCHEMA = createSchema({ + explicitTypes: [ + regexp, + undefinedType + ], + include: DEFAULT_SCHEMA +}); +export const SCHEMA_MAP = new Map([ + [ + "core", + CORE_SCHEMA + ], + [ + "default", + DEFAULT_SCHEMA + ], + [ + "failsafe", + FAILSAFE_SCHEMA + ], + [ + "json", + JSON_SCHEMA + ], + [ + "extended", + EXTENDED_SCHEMA + ] +]); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQveWFtbC8xLjAuNi9fc2NoZW1hLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFBvcnRlZCBmcm9tIGpzLXlhbWwgdjMuMTMuMTpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvanMteWFtbC9jb21taXQvNjY1YWFkZGE0MjM0OWRjYWU4NjlmMTIwNDBkOWIxMGVmMThkMTJkYVxuLy8gQ29weXJpZ2h0IDIwMTEtMjAxNSBieSBWaXRhbHkgUHV6cmluLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB0eXBlIHsgS2luZFR5cGUsIFR5cGUgfSBmcm9tIFwiLi9fdHlwZS50c1wiO1xuaW1wb3J0IHsgYmluYXJ5IH0gZnJvbSBcIi4vX3R5cGUvYmluYXJ5LnRzXCI7XG5pbXBvcnQgeyBib29sIH0gZnJvbSBcIi4vX3R5cGUvYm9vbC50c1wiO1xuaW1wb3J0IHsgZmxvYXQgfSBmcm9tIFwiLi9fdHlwZS9mbG9hdC50c1wiO1xuaW1wb3J0IHsgaW50IH0gZnJvbSBcIi4vX3R5cGUvaW50LnRzXCI7XG5pbXBvcnQgeyBtYXAgfSBmcm9tIFwiLi9fdHlwZS9tYXAudHNcIjtcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSBcIi4vX3R5cGUvbWVyZ2UudHNcIjtcbmltcG9ydCB7IG5pbCB9IGZyb20gXCIuL190eXBlL25pbC50c1wiO1xuaW1wb3J0IHsgb21hcCB9IGZyb20gXCIuL190eXBlL29tYXAudHNcIjtcbmltcG9ydCB7IHBhaXJzIH0gZnJvbSBcIi4vX3R5cGUvcGFpcnMudHNcIjtcbmltcG9ydCB7IHJlZ2V4cCB9IGZyb20gXCIuL190eXBlL3JlZ2V4cC50c1wiO1xuaW1wb3J0IHsgc2VxIH0gZnJvbSBcIi4vX3R5cGUvc2VxLnRzXCI7XG5pbXBvcnQgeyBzZXQgfSBmcm9tIFwiLi9fdHlwZS9zZXQudHNcIjtcbmltcG9ydCB7IHN0ciB9IGZyb20gXCIuL190eXBlL3N0ci50c1wiO1xuaW1wb3J0IHsgdGltZXN0YW1wIH0gZnJvbSBcIi4vX3R5cGUvdGltZXN0YW1wLnRzXCI7XG5pbXBvcnQgeyB1bmRlZmluZWRUeXBlIH0gZnJvbSBcIi4vX3R5cGUvdW5kZWZpbmVkLnRzXCI7XG5cbi8qKlxuICogTmFtZSBvZiB0aGUgc2NoZW1hIHRvIHVzZS5cbiAqXG4gKiA+IFshTk9URV1cbiAqID4gSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSBzY2hlbWEgdGhhdCBpcyBtb3N0IGFwcHJvcHJpYXRlIGZvciB5b3VyIHVzZVxuICogPiBjYXNlLiBEb2luZyBzbyB3aWxsIGF2b2lkIGFueSB1bm5lY2Vzc2FyeSBwcm9jZXNzaW5nIGFuZCBiZW5lZml0XG4gKiA+IHBlcmZvcm1hbmNlLlxuICpcbiAqIE9wdGlvbnMgaW5jbHVkZTpcbiAqIC0gYGZhaWxzYWZlYDogc3VwcG9ydHMgZ2VuZXJpYyBtYXBwaW5ncywgZ2VuZXJpYyBzZXF1ZW5jZXMgYW5kIGdlbmVyaWNcbiAqIHN0cmluZ3MuXG4gKiAtIGBqc29uYDogZXh0ZW5kcyBgZmFpbHNhZmVgIHNjaGVtYSBieSBhbHNvIHN1cHBvcnRpbmcgbnVsbHMsIGJvb2xlYW5zLFxuICogaW50ZWdlcnMgYW5kIGZsb2F0cy5cbiAqIC0gYGNvcmVgOiBmdW5jdGlvbmFsbHkgdGhlIHNhbWUgYXMgYGpzb25gIHNjaGVtYS5cbiAqIC0gYGRlZmF1bHRgOiBleHRlbmRzIGBjb3JlYCBzY2hlbWEgYnkgYWxzbyBzdXBwb3J0aW5nIGJpbmFyeSwgb21hcCwgcGFpcnMgYW5kXG4gKiBzZXQgdHlwZXMuXG4gKiAtIGBleHRlbmRlZGA6IGV4dGVuZHMgYGRlZmF1bHRgIHNjaGVtYSBieSBhbHNvIHN1cHBvcnRpbmcgcmVndWxhclxuICogZXhwcmVzc2lvbnMgYW5kIHVuZGVmaW5lZCB2YWx1ZXMuXG4gKlxuICogU2VlXG4gKiB7QGxpbmsgaHR0cHM6Ly95YW1sLm9yZy9zcGVjLzEuMi4yLyNjaGFwdGVyLTEwLXJlY29tbWVuZGVkLXNjaGVtYXMgfCBZQU1MIDEuMiBzcGVjfVxuICogZm9yIG1vcmUgZGV0YWlscyBvbiB0aGUgYGZhaWxzYWZlYCwgYGpzb25gIGFuZCBgY29yZWAgc2NoZW1hcy5cbiAqL1xuZXhwb3J0IHR5cGUgU2NoZW1hVHlwZSA9IFwiZmFpbHNhZmVcIiB8IFwianNvblwiIHwgXCJjb3JlXCIgfCBcImRlZmF1bHRcIiB8IFwiZXh0ZW5kZWRcIjtcblxudHlwZSBJbXBsaWNpdFR5cGUgPSBUeXBlPFwic2NhbGFyXCI+O1xudHlwZSBFeHBsaWNpdFR5cGUgPSBUeXBlPEtpbmRUeXBlPjtcblxuZXhwb3J0IHR5cGUgVHlwZU1hcCA9IFJlY29yZDxcbiAgS2luZFR5cGUgfCBcImZhbGxiYWNrXCIsXG4gIE1hcDxzdHJpbmcsIEV4cGxpY2l0VHlwZT5cbj47XG5cbmZ1bmN0aW9uIGNyZWF0ZVR5cGVNYXAoXG4gIGltcGxpY2l0VHlwZXM6IEltcGxpY2l0VHlwZVtdLFxuICBleHBsaWNpdFR5cGVzOiBFeHBsaWNpdFR5cGVbXSxcbik6IFR5cGVNYXAge1xuICBjb25zdCByZXN1bHQ6IFR5cGVNYXAgPSB7XG4gICAgZmFsbGJhY2s6IG5ldyBNYXAoKSxcbiAgICBtYXBwaW5nOiBuZXcgTWFwKCksXG4gICAgc2NhbGFyOiBuZXcgTWFwKCksXG4gICAgc2VxdWVuY2U6IG5ldyBNYXAoKSxcbiAgfTtcbiAgY29uc3QgZmFsbGJhY2tNYXAgPSByZXN1bHQuZmFsbGJhY2s7XG4gIGZvciAoY29uc3QgdHlwZSBvZiBbLi4uaW1wbGljaXRUeXBlcywgLi4uZXhwbGljaXRUeXBlc10pIHtcbiAgICBjb25zdCBtYXAgPSByZXN1bHRbdHlwZS5raW5kXTtcbiAgICBtYXAuc2V0KHR5cGUudGFnLCB0eXBlKTtcbiAgICBmYWxsYmFja01hcC5zZXQodHlwZS50YWcsIHR5cGUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NoZW1hIHtcbiAgaW1wbGljaXRUeXBlczogSW1wbGljaXRUeXBlW107XG4gIGV4cGxpY2l0VHlwZXM6IEV4cGxpY2l0VHlwZVtdO1xuICB0eXBlTWFwOiBUeXBlTWFwO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTY2hlbWEoeyBleHBsaWNpdFR5cGVzID0gW10sIGltcGxpY2l0VHlwZXMgPSBbXSwgaW5jbHVkZSB9OiB7XG4gIGltcGxpY2l0VHlwZXM/OiBJbXBsaWNpdFR5cGVbXTtcbiAgZXhwbGljaXRUeXBlcz86IEV4cGxpY2l0VHlwZVtdO1xuICBpbmNsdWRlPzogU2NoZW1hO1xufSk6IFNjaGVtYSB7XG4gIGlmIChpbmNsdWRlKSB7XG4gICAgaW1wbGljaXRUeXBlcy5wdXNoKC4uLmluY2x1ZGUuaW1wbGljaXRUeXBlcyk7XG4gICAgZXhwbGljaXRUeXBlcy5wdXNoKC4uLmluY2x1ZGUuZXhwbGljaXRUeXBlcyk7XG4gIH1cbiAgY29uc3QgdHlwZU1hcCA9IGNyZWF0ZVR5cGVNYXAoaW1wbGljaXRUeXBlcywgZXhwbGljaXRUeXBlcyk7XG4gIHJldHVybiB7IGltcGxpY2l0VHlwZXMsIGV4cGxpY2l0VHlwZXMsIHR5cGVNYXAgfTtcbn1cblxuLyoqXG4gKiBTdGFuZGFyZCBZQU1MJ3MgZmFpbHNhZmUgc2NoZW1hLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHA6Ly93d3cueWFtbC5vcmcvc3BlYy8xLjIvc3BlYy5odG1sI2lkMjgwMjM0Nn1cbiAqL1xuY29uc3QgRkFJTFNBRkVfU0NIRU1BID0gY3JlYXRlU2NoZW1hKHtcbiAgZXhwbGljaXRUeXBlczogW3N0ciwgc2VxLCBtYXBdLFxufSk7XG5cbi8qKlxuICogU3RhbmRhcmQgWUFNTCdzIEpTT04gc2NoZW1hLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHA6Ly93d3cueWFtbC5vcmcvc3BlYy8xLjIvc3BlYy5odG1sI2lkMjgwMzIzMX1cbiAqL1xuY29uc3QgSlNPTl9TQ0hFTUEgPSBjcmVhdGVTY2hlbWEoe1xuICBpbXBsaWNpdFR5cGVzOiBbbmlsLCBib29sLCBpbnQsIGZsb2F0XSxcbiAgaW5jbHVkZTogRkFJTFNBRkVfU0NIRU1BLFxufSk7XG5cbi8qKlxuICogU3RhbmRhcmQgWUFNTCdzIGNvcmUgc2NoZW1hLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHA6Ly93d3cueWFtbC5vcmcvc3BlYy8xLjIvc3BlYy5odG1sI2lkMjgwNDkyM31cbiAqL1xuY29uc3QgQ09SRV9TQ0hFTUEgPSBjcmVhdGVTY2hlbWEoe1xuICBpbmNsdWRlOiBKU09OX1NDSEVNQSxcbn0pO1xuXG4vKipcbiAqIERlZmF1bHQgWUFNTCBzY2hlbWEuIEl0IGlzIG5vdCBkZXNjcmliZWQgaW4gdGhlIFlBTUwgc3BlY2lmaWNhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfU0NIRU1BID0gY3JlYXRlU2NoZW1hKHtcbiAgZXhwbGljaXRUeXBlczogW2JpbmFyeSwgb21hcCwgcGFpcnMsIHNldF0sXG4gIGltcGxpY2l0VHlwZXM6IFt0aW1lc3RhbXAsIG1lcmdlXSxcbiAgaW5jbHVkZTogQ09SRV9TQ0hFTUEsXG59KTtcblxuLyoqKlxuICogRXh0ZW5kcyBKUy1ZQU1MIGRlZmF1bHQgc2NoZW1hIHdpdGggYWRkaXRpb25hbCBKYXZhU2NyaXB0IHR5cGVzXG4gKiBJdCBpcyBub3QgZGVzY3JpYmVkIGluIHRoZSBZQU1MIHNwZWNpZmljYXRpb24uXG4gKiBGdW5jdGlvbnMgYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQgZm9yIHNlY3VyaXR5IHJlYXNvbnMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBwYXJzZSB9IGZyb20gXCJAc3RkL3lhbWxcIjtcbiAqXG4gKiBjb25zdCBkYXRhID0gcGFyc2UoXG4gKiAgIGBcbiAqICAgcmVnZXhwOlxuICogICAgIHNpbXBsZTogISFqcy9yZWdleHAgZm9vYmFyXG4gKiAgICAgbW9kaWZpZXJzOiAhIWpzL3JlZ2V4cCAvZm9vYmFyL21pXG4gKiAgIHVuZGVmaW5lZDogISFqcy91bmRlZmluZWQgflxuICogYCxcbiAqICAgeyBzY2hlbWE6IFwiZXh0ZW5kZWRcIiB9LFxuICogKTtcbiAqIGBgYFxuICovXG5jb25zdCBFWFRFTkRFRF9TQ0hFTUEgPSBjcmVhdGVTY2hlbWEoe1xuICBleHBsaWNpdFR5cGVzOiBbcmVnZXhwLCB1bmRlZmluZWRUeXBlXSxcbiAgaW5jbHVkZTogREVGQVVMVF9TQ0hFTUEsXG59KTtcblxuZXhwb3J0IGNvbnN0IFNDSEVNQV9NQVAgPSBuZXcgTWFwPFNjaGVtYVR5cGUsIFNjaGVtYT4oW1xuICBbXCJjb3JlXCIsIENPUkVfU0NIRU1BXSxcbiAgW1wiZGVmYXVsdFwiLCBERUZBVUxUX1NDSEVNQV0sXG4gIFtcImZhaWxzYWZlXCIsIEZBSUxTQUZFX1NDSEVNQV0sXG4gIFtcImpzb25cIiwgSlNPTl9TQ0hFTUFdLFxuICBbXCJleHRlbmRlZFwiLCBFWFRFTkRFRF9TQ0hFTUFdLFxuXSk7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLG9GQUFvRjtBQUNwRiwwRUFBMEU7QUFDMUUscURBQXFEO0FBQ3JELHFDQUFxQztBQUdyQyxTQUFTLE1BQU0sUUFBUSxvQkFBb0I7QUFDM0MsU0FBUyxJQUFJLFFBQVEsa0JBQWtCO0FBQ3ZDLFNBQVMsS0FBSyxRQUFRLG1CQUFtQjtBQUN6QyxTQUFTLEdBQUcsUUFBUSxpQkFBaUI7QUFDckMsU0FBUyxHQUFHLFFBQVEsaUJBQWlCO0FBQ3JDLFNBQVMsS0FBSyxRQUFRLG1CQUFtQjtBQUN6QyxTQUFTLEdBQUcsUUFBUSxpQkFBaUI7QUFDckMsU0FBUyxJQUFJLFFBQVEsa0JBQWtCO0FBQ3ZDLFNBQVMsS0FBSyxRQUFRLG1CQUFtQjtBQUN6QyxTQUFTLE1BQU0sUUFBUSxvQkFBb0I7QUFDM0MsU0FBUyxHQUFHLFFBQVEsaUJBQWlCO0FBQ3JDLFNBQVMsR0FBRyxRQUFRLGlCQUFpQjtBQUNyQyxTQUFTLEdBQUcsUUFBUSxpQkFBaUI7QUFDckMsU0FBUyxTQUFTLFFBQVEsdUJBQXVCO0FBQ2pELFNBQVMsYUFBYSxRQUFRLHVCQUF1QjtBQW1DckQsU0FBUyxjQUNQLGFBQTZCLEVBQzdCLGFBQTZCO0VBRTdCLE1BQU0sU0FBa0I7SUFDdEIsVUFBVSxJQUFJO0lBQ2QsU0FBUyxJQUFJO0lBQ2IsUUFBUSxJQUFJO0lBQ1osVUFBVSxJQUFJO0VBQ2hCO0VBQ0EsTUFBTSxjQUFjLE9BQU8sUUFBUTtFQUNuQyxLQUFLLE1BQU0sUUFBUTtPQUFJO09BQWtCO0dBQWMsQ0FBRTtJQUN2RCxNQUFNLE1BQU0sTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDO0lBQzdCLElBQUksR0FBRyxDQUFDLEtBQUssR0FBRyxFQUFFO0lBQ2xCLFlBQVksR0FBRyxDQUFDLEtBQUssR0FBRyxFQUFFO0VBQzVCO0VBQ0EsT0FBTztBQUNUO0FBUUEsU0FBUyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLE9BQU8sRUFJdEU7RUFDQyxJQUFJLFNBQVM7SUFDWCxjQUFjLElBQUksSUFBSSxRQUFRLGFBQWE7SUFDM0MsY0FBYyxJQUFJLElBQUksUUFBUSxhQUFhO0VBQzdDO0VBQ0EsTUFBTSxVQUFVLGNBQWMsZUFBZTtFQUM3QyxPQUFPO0lBQUU7SUFBZTtJQUFlO0VBQVE7QUFDakQ7QUFFQTs7OztDQUlDLEdBQ0QsTUFBTSxrQkFBa0IsYUFBYTtFQUNuQyxlQUFlO0lBQUM7SUFBSztJQUFLO0dBQUk7QUFDaEM7QUFFQTs7OztDQUlDLEdBQ0QsTUFBTSxjQUFjLGFBQWE7RUFDL0IsZUFBZTtJQUFDO0lBQUs7SUFBTTtJQUFLO0dBQU07RUFDdEMsU0FBUztBQUNYO0FBRUE7Ozs7Q0FJQyxHQUNELE1BQU0sY0FBYyxhQUFhO0VBQy9CLFNBQVM7QUFDWDtBQUVBOztDQUVDLEdBQ0QsT0FBTyxNQUFNLGlCQUFpQixhQUFhO0VBQ3pDLGVBQWU7SUFBQztJQUFRO0lBQU07SUFBTztHQUFJO0VBQ3pDLGVBQWU7SUFBQztJQUFXO0dBQU07RUFDakMsU0FBUztBQUNYLEdBQUc7QUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW1CQyxHQUNELE1BQU0sa0JBQWtCLGFBQWE7RUFDbkMsZUFBZTtJQUFDO0lBQVE7R0FBYztFQUN0QyxTQUFTO0FBQ1g7QUFFQSxPQUFPLE1BQU0sYUFBYSxJQUFJLElBQXdCO0VBQ3BEO0lBQUM7SUFBUTtHQUFZO0VBQ3JCO0lBQUM7SUFBVztHQUFlO0VBQzNCO0lBQUM7SUFBWTtHQUFnQjtFQUM3QjtJQUFDO0lBQVE7R0FBWTtFQUNyQjtJQUFDO0lBQVk7R0FBZ0I7Q0FDOUIsRUFBRSJ9 +// denoCacheMetadata=7758984181535182222,16334489483071876995
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/27e256c652de55aa49124212e299cc074b47585ce9996f125fbb8f26a6f3d413.js b/vendor/gen/https/jsr.io/27e256c652de55aa49124212e299cc074b47585ce9996f125fbb8f26a6f3d413.js new file mode 100644 index 0000000..cd0d8de --- /dev/null +++ b/vendor/gen/https/jsr.io/27e256c652de55aa49124212e299cc074b47585ce9996f125fbb8f26a6f3d413.js @@ -0,0 +1,85 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { _globToRegExp } from "../_common/glob_to_reg_exp.ts"; +const constants = { + sep: "/+", + sepMaybe: "/*", + seps: [ + "/" + ], + globstar: "(?:[^/]*(?:/|$)+)*", + wildcard: "[^/]*", + escapePrefix: "\\" +}; +/** Convert a glob string to a regular expression. + * + * Tries to match bash glob expansion as closely as possible. + * + * Basic glob syntax: + * - `*` - Matches everything without leaving the path segment. + * - `?` - Matches any single character. + * - `{foo,bar}` - Matches `foo` or `bar`. + * - `[abcd]` - Matches `a`, `b`, `c` or `d`. + * - `[a-d]` - Matches `a`, `b`, `c` or `d`. + * - `[!abcd]` - Matches any single character besides `a`, `b`, `c` or `d`. + * - `[[:<class>:]]` - Matches any character belonging to `<class>`. + * - `[[:alnum:]]` - Matches any digit or letter. + * - `[[:digit:]abc]` - Matches any digit, `a`, `b` or `c`. + * - See https://facelessuser.github.io/wcmatch/glob/#posix-character-classes + * for a complete list of supported character classes. + * - `\` - Escapes the next character for an `os` other than `"windows"`. + * - \` - Escapes the next character for `os` set to `"windows"`. + * - `/` - Path separator. + * - `\` - Additional path separator only for `os` set to `"windows"`. + * + * Extended syntax: + * - Requires `{ extended: true }`. + * - `?(foo|bar)` - Matches 0 or 1 instance of `{foo,bar}`. + * - `@(foo|bar)` - Matches 1 instance of `{foo,bar}`. They behave the same. + * - `*(foo|bar)` - Matches _n_ instances of `{foo,bar}`. + * - `+(foo|bar)` - Matches _n > 0_ instances of `{foo,bar}`. + * - `!(foo|bar)` - Matches anything other than `{foo,bar}`. + * - See https://www.linuxjournal.com/content/bash-extended-globbing. + * + * Globstar syntax: + * - Requires `{ globstar: true }`. + * - `**` - Matches any number of any path segments. + * - Must comprise its entire path segment in the provided glob. + * - See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * + * Note the following properties: + * - The generated `RegExp` is anchored at both start and end. + * - Repeating and trailing separators are tolerated. Trailing separators in the + * provided glob have no meaning and are discarded. + * - Absolute globs will only match absolute paths, etc. + * - Empty globs will match nothing. + * - Any special glob syntax must be contained to one path segment. For example, + * `?(foo|bar/baz)` is invalid. The separator will take precedence and the + * first segment ends with an unclosed group. + * - If a path segment ends with unclosed groups or a dangling escape prefix, a + * parse error has occurred. Every character for that segment is taken + * literally in this event. + * + * Limitations: + * - A negative group like `!(foo|bar)` will wrongly be converted to a negative + * look-ahead followed by a wildcard. This means that `!(foo).js` will wrongly + * fail to match `foobar.js`, even though `foobar` is not `foo`. Effectively, + * `!(foo|bar)` is treated like `!(@(foo|bar)*)`. This will work correctly if + * the group occurs not nested at the end of the segment. + * + * @example Usage + * ```ts + * import { globToRegExp } from "@std/path/posix/glob-to-regexp"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(globToRegExp("*.js"), /^[^/]*\.js\/*$/); + * ``` + * + * @param glob Glob string to convert. + * @param options Conversion options. + * @returns The regular expression equivalent to the glob. + */ export function globToRegExp(glob, options = {}) { + return _globToRegExp(constants, glob, options); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9wb3NpeC9nbG9iX3RvX3JlZ2V4cC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQge1xuICBfZ2xvYlRvUmVnRXhwLFxuICB0eXBlIEdsb2JDb25zdGFudHMsXG4gIHR5cGUgR2xvYk9wdGlvbnMsXG59IGZyb20gXCIuLi9fY29tbW9uL2dsb2JfdG9fcmVnX2V4cC50c1wiO1xuXG5leHBvcnQgdHlwZSB7IEdsb2JPcHRpb25zIH07XG5cbmNvbnN0IGNvbnN0YW50czogR2xvYkNvbnN0YW50cyA9IHtcbiAgc2VwOiBcIi8rXCIsXG4gIHNlcE1heWJlOiBcIi8qXCIsXG4gIHNlcHM6IFtcIi9cIl0sXG4gIGdsb2JzdGFyOiBcIig/OlteL10qKD86L3wkKSspKlwiLFxuICB3aWxkY2FyZDogXCJbXi9dKlwiLFxuICBlc2NhcGVQcmVmaXg6IFwiXFxcXFwiLFxufTtcblxuLyoqIENvbnZlcnQgYSBnbG9iIHN0cmluZyB0byBhIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAqXG4gKiBUcmllcyB0byBtYXRjaCBiYXNoIGdsb2IgZXhwYW5zaW9uIGFzIGNsb3NlbHkgYXMgcG9zc2libGUuXG4gKlxuICogQmFzaWMgZ2xvYiBzeW50YXg6XG4gKiAtIGAqYCAtIE1hdGNoZXMgZXZlcnl0aGluZyB3aXRob3V0IGxlYXZpbmcgdGhlIHBhdGggc2VnbWVudC5cbiAqIC0gYD9gIC0gTWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3Rlci5cbiAqIC0gYHtmb28sYmFyfWAgLSBNYXRjaGVzIGBmb29gIG9yIGBiYXJgLlxuICogLSBgW2FiY2RdYCAtIE1hdGNoZXMgYGFgLCBgYmAsIGBjYCBvciBgZGAuXG4gKiAtIGBbYS1kXWAgLSBNYXRjaGVzIGBhYCwgYGJgLCBgY2Agb3IgYGRgLlxuICogLSBgWyFhYmNkXWAgLSBNYXRjaGVzIGFueSBzaW5nbGUgY2hhcmFjdGVyIGJlc2lkZXMgYGFgLCBgYmAsIGBjYCBvciBgZGAuXG4gKiAtIGBbWzo8Y2xhc3M+Ol1dYCAtIE1hdGNoZXMgYW55IGNoYXJhY3RlciBiZWxvbmdpbmcgdG8gYDxjbGFzcz5gLlxuICogICAgIC0gYFtbOmFsbnVtOl1dYCAtIE1hdGNoZXMgYW55IGRpZ2l0IG9yIGxldHRlci5cbiAqICAgICAtIGBbWzpkaWdpdDpdYWJjXWAgLSBNYXRjaGVzIGFueSBkaWdpdCwgYGFgLCBgYmAgb3IgYGNgLlxuICogICAgIC0gU2VlIGh0dHBzOi8vZmFjZWxlc3N1c2VyLmdpdGh1Yi5pby93Y21hdGNoL2dsb2IvI3Bvc2l4LWNoYXJhY3Rlci1jbGFzc2VzXG4gKiAgICAgICBmb3IgYSBjb21wbGV0ZSBsaXN0IG9mIHN1cHBvcnRlZCBjaGFyYWN0ZXIgY2xhc3Nlcy5cbiAqIC0gYFxcYCAtIEVzY2FwZXMgdGhlIG5leHQgY2hhcmFjdGVyIGZvciBhbiBgb3NgIG90aGVyIHRoYW4gYFwid2luZG93c1wiYC5cbiAqIC0gXFxgIC0gRXNjYXBlcyB0aGUgbmV4dCBjaGFyYWN0ZXIgZm9yIGBvc2Agc2V0IHRvIGBcIndpbmRvd3NcImAuXG4gKiAtIGAvYCAtIFBhdGggc2VwYXJhdG9yLlxuICogLSBgXFxgIC0gQWRkaXRpb25hbCBwYXRoIHNlcGFyYXRvciBvbmx5IGZvciBgb3NgIHNldCB0byBgXCJ3aW5kb3dzXCJgLlxuICpcbiAqIEV4dGVuZGVkIHN5bnRheDpcbiAqIC0gUmVxdWlyZXMgYHsgZXh0ZW5kZWQ6IHRydWUgfWAuXG4gKiAtIGA/KGZvb3xiYXIpYCAtIE1hdGNoZXMgMCBvciAxIGluc3RhbmNlIG9mIGB7Zm9vLGJhcn1gLlxuICogLSBgQChmb298YmFyKWAgLSBNYXRjaGVzIDEgaW5zdGFuY2Ugb2YgYHtmb28sYmFyfWAuIFRoZXkgYmVoYXZlIHRoZSBzYW1lLlxuICogLSBgKihmb298YmFyKWAgLSBNYXRjaGVzIF9uXyBpbnN0YW5jZXMgb2YgYHtmb28sYmFyfWAuXG4gKiAtIGArKGZvb3xiYXIpYCAtIE1hdGNoZXMgX24gPiAwXyBpbnN0YW5jZXMgb2YgYHtmb28sYmFyfWAuXG4gKiAtIGAhKGZvb3xiYXIpYCAtIE1hdGNoZXMgYW55dGhpbmcgb3RoZXIgdGhhbiBge2ZvbyxiYXJ9YC5cbiAqIC0gU2VlIGh0dHBzOi8vd3d3LmxpbnV4am91cm5hbC5jb20vY29udGVudC9iYXNoLWV4dGVuZGVkLWdsb2JiaW5nLlxuICpcbiAqIEdsb2JzdGFyIHN5bnRheDpcbiAqIC0gUmVxdWlyZXMgYHsgZ2xvYnN0YXI6IHRydWUgfWAuXG4gKiAtIGAqKmAgLSBNYXRjaGVzIGFueSBudW1iZXIgb2YgYW55IHBhdGggc2VnbWVudHMuXG4gKiAgICAgLSBNdXN0IGNvbXByaXNlIGl0cyBlbnRpcmUgcGF0aCBzZWdtZW50IGluIHRoZSBwcm92aWRlZCBnbG9iLlxuICogLSBTZWUgaHR0cHM6Ly93d3cubGludXhqb3VybmFsLmNvbS9jb250ZW50L2dsb2JzdGFyLW5ldy1iYXNoLWdsb2JiaW5nLW9wdGlvbi5cbiAqXG4gKiBOb3RlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqIC0gVGhlIGdlbmVyYXRlZCBgUmVnRXhwYCBpcyBhbmNob3JlZCBhdCBib3RoIHN0YXJ0IGFuZCBlbmQuXG4gKiAtIFJlcGVhdGluZyBhbmQgdHJhaWxpbmcgc2VwYXJhdG9ycyBhcmUgdG9sZXJhdGVkLiBUcmFpbGluZyBzZXBhcmF0b3JzIGluIHRoZVxuICogICBwcm92aWRlZCBnbG9iIGhhdmUgbm8gbWVhbmluZyBhbmQgYXJlIGRpc2NhcmRlZC5cbiAqIC0gQWJzb2x1dGUgZ2xvYnMgd2lsbCBvbmx5IG1hdGNoIGFic29sdXRlIHBhdGhzLCBldGMuXG4gKiAtIEVtcHR5IGdsb2JzIHdpbGwgbWF0Y2ggbm90aGluZy5cbiAqIC0gQW55IHNwZWNpYWwgZ2xvYiBzeW50YXggbXVzdCBiZSBjb250YWluZWQgdG8gb25lIHBhdGggc2VnbWVudC4gRm9yIGV4YW1wbGUsXG4gKiAgIGA/KGZvb3xiYXIvYmF6KWAgaXMgaW52YWxpZC4gVGhlIHNlcGFyYXRvciB3aWxsIHRha2UgcHJlY2VkZW5jZSBhbmQgdGhlXG4gKiAgIGZpcnN0IHNlZ21lbnQgZW5kcyB3aXRoIGFuIHVuY2xvc2VkIGdyb3VwLlxuICogLSBJZiBhIHBhdGggc2VnbWVudCBlbmRzIHdpdGggdW5jbG9zZWQgZ3JvdXBzIG9yIGEgZGFuZ2xpbmcgZXNjYXBlIHByZWZpeCwgYVxuICogICBwYXJzZSBlcnJvciBoYXMgb2NjdXJyZWQuIEV2ZXJ5IGNoYXJhY3RlciBmb3IgdGhhdCBzZWdtZW50IGlzIHRha2VuXG4gKiAgIGxpdGVyYWxseSBpbiB0aGlzIGV2ZW50LlxuICpcbiAqIExpbWl0YXRpb25zOlxuICogLSBBIG5lZ2F0aXZlIGdyb3VwIGxpa2UgYCEoZm9vfGJhcilgIHdpbGwgd3JvbmdseSBiZSBjb252ZXJ0ZWQgdG8gYSBuZWdhdGl2ZVxuICogICBsb29rLWFoZWFkIGZvbGxvd2VkIGJ5IGEgd2lsZGNhcmQuIFRoaXMgbWVhbnMgdGhhdCBgIShmb28pLmpzYCB3aWxsIHdyb25nbHlcbiAqICAgZmFpbCB0byBtYXRjaCBgZm9vYmFyLmpzYCwgZXZlbiB0aG91Z2ggYGZvb2JhcmAgaXMgbm90IGBmb29gLiBFZmZlY3RpdmVseSxcbiAqICAgYCEoZm9vfGJhcilgIGlzIHRyZWF0ZWQgbGlrZSBgIShAKGZvb3xiYXIpKilgLiBUaGlzIHdpbGwgd29yayBjb3JyZWN0bHkgaWZcbiAqICAgdGhlIGdyb3VwIG9jY3VycyBub3QgbmVzdGVkIGF0IHRoZSBlbmQgb2YgdGhlIHNlZ21lbnQuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBnbG9iVG9SZWdFeHAgfSBmcm9tIFwiQHN0ZC9wYXRoL3Bvc2l4L2dsb2ItdG8tcmVnZXhwXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoZ2xvYlRvUmVnRXhwKFwiKi5qc1wiKSwgL15bXi9dKlxcLmpzXFwvKiQvKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBnbG9iIEdsb2Igc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcGFyYW0gb3B0aW9ucyBDb252ZXJzaW9uIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgcmVndWxhciBleHByZXNzaW9uIGVxdWl2YWxlbnQgdG8gdGhlIGdsb2IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnbG9iVG9SZWdFeHAoXG4gIGdsb2I6IHN0cmluZyxcbiAgb3B0aW9uczogR2xvYk9wdGlvbnMgPSB7fSxcbik6IFJlZ0V4cCB7XG4gIHJldHVybiBfZ2xvYlRvUmVnRXhwKGNvbnN0YW50cywgZ2xvYiwgb3B0aW9ucyk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQyxTQUNFLGFBQWEsUUFHUixnQ0FBZ0M7QUFJdkMsTUFBTSxZQUEyQjtFQUMvQixLQUFLO0VBQ0wsVUFBVTtFQUNWLE1BQU07SUFBQztHQUFJO0VBQ1gsVUFBVTtFQUNWLFVBQVU7RUFDVixjQUFjO0FBQ2hCO0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FtRUMsR0FDRCxPQUFPLFNBQVMsYUFDZCxJQUFZLEVBQ1osVUFBdUIsQ0FBQyxDQUFDO0VBRXpCLE9BQU8sY0FBYyxXQUFXLE1BQU07QUFDeEMifQ== +// denoCacheMetadata=6571749945049970499,1093762487156461668
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/2873410a9626037eec217ec7ec81300d63a80b5770ffd091e227d12e29268b0b.js b/vendor/gen/https/jsr.io/2873410a9626037eec217ec7ec81300d63a80b5770ffd091e227d12e29268b0b.js new file mode 100644 index 0000000..1b361ac --- /dev/null +++ b/vendor/gen/https/jsr.io/2873410a9626037eec217ec7ec81300d63a80b5770ffd091e227d12e29268b0b.js @@ -0,0 +1,138 @@ +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2025 the Deno authors. MIT license. +import { isNegativeZero } from "../_utils.ts"; +function isCharCodeInRange(c, lower, upper) { + return lower <= c && c <= upper; +} +function isHexCode(c) { + return isCharCodeInRange(c, 0x30, 0x39) || // 0-9 + isCharCodeInRange(c, 0x41, 0x46) || // A-F + isCharCodeInRange(c, 0x61, 0x66) // a-f + ; +} +function isOctCode(c) { + return isCharCodeInRange(c, 0x30, 0x37); // 0-7 +} +function isDecCode(c) { + return isCharCodeInRange(c, 0x30, 0x39); // 0-9 +} +function resolveYamlInteger(data) { + const max = data.length; + let index = 0; + let hasDigits = false; + if (!max) return false; + let ch = data[index]; + // sign + if (ch === "-" || ch === "+") { + ch = data[++index]; + } + if (ch === "0") { + // 0 + if (index + 1 === max) return true; + ch = data[++index]; + // base 2, base 8, base 16 + if (ch === "b") { + // base 2 + index++; + for(; index < max; index++){ + ch = data[index]; + if (ch === "_") continue; + if (ch !== "0" && ch !== "1") return false; + hasDigits = true; + } + return hasDigits && ch !== "_"; + } + if (ch === "x") { + // base 16 + index++; + for(; index < max; index++){ + ch = data[index]; + if (ch === "_") continue; + if (!isHexCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + return hasDigits && ch !== "_"; + } + // base 8 + for(; index < max; index++){ + ch = data[index]; + if (ch === "_") continue; + if (!isOctCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + return hasDigits && ch !== "_"; + } + // base 10 (except 0) or base 60 + // value should not start with `_`; + if (ch === "_") return false; + for(; index < max; index++){ + ch = data[index]; + if (ch === "_") continue; + if (!isDecCode(data.charCodeAt(index))) { + return false; + } + hasDigits = true; + } + // Should have digits and should not end with `_` + if (!hasDigits || ch === "_") return false; + // base60 almost not used, no needs to optimize + return /^(:[0-5]?[0-9])+$/.test(data.slice(index)); +} +function constructYamlInteger(data) { + let value = data; + if (value.includes("_")) { + value = value.replace(/_/g, ""); + } + let sign = 1; + let ch = value[0]; + if (ch === "-" || ch === "+") { + if (ch === "-") sign = -1; + value = value.slice(1); + ch = value[0]; + } + if (value === "0") return 0; + if (ch === "0") { + if (value[1] === "b") return sign * parseInt(value.slice(2), 2); + if (value[1] === "x") return sign * parseInt(value, 16); + return sign * parseInt(value, 8); + } + return sign * parseInt(value, 10); +} +function isInteger(object) { + if (object instanceof Number) object = object.valueOf(); + return typeof object === "number" && object % 1 === 0 && !isNegativeZero(object); +} +export const int = { + tag: "tag:yaml.org,2002:int", + construct: constructYamlInteger, + defaultStyle: "decimal", + kind: "scalar", + predicate: isInteger, + represent: { + // deno-lint-ignore ban-types + binary (object) { + const value = object instanceof Number ? object.valueOf() : object; + return value >= 0 ? `0b${value.toString(2)}` : `-0b${value.toString(2).slice(1)}`; + }, + // deno-lint-ignore ban-types + octal (object) { + const value = object instanceof Number ? object.valueOf() : object; + return value >= 0 ? `0${value.toString(8)}` : `-0${value.toString(8).slice(1)}`; + }, + // deno-lint-ignore ban-types + decimal (object) { + const value = object instanceof Number ? object.valueOf() : object; + return value.toString(10); + }, + // deno-lint-ignore ban-types + hexadecimal (object) { + const value = object instanceof Number ? object.valueOf() : object; + return value >= 0 ? `0x${value.toString(16).toUpperCase()}` : `-0x${value.toString(16).toUpperCase().slice(1)}`; + } + }, + resolve: resolveYamlInteger +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQveWFtbC8xLjAuNi9fdHlwZS9pbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUG9ydGVkIGZyb20ganMteWFtbCB2My4xMy4xOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVjYS9qcy15YW1sL2NvbW1pdC82NjVhYWRkYTQyMzQ5ZGNhZTg2OWYxMjA0MGQ5YjEwZWYxOGQxMmRhXG4vLyBDb3B5cmlnaHQgMjAxMS0yMDE1IGJ5IFZpdGFseSBQdXpyaW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cblxuaW1wb3J0IHR5cGUgeyBUeXBlIH0gZnJvbSBcIi4uL190eXBlLnRzXCI7XG5pbXBvcnQgeyBpc05lZ2F0aXZlWmVybyB9IGZyb20gXCIuLi9fdXRpbHMudHNcIjtcblxuZnVuY3Rpb24gaXNDaGFyQ29kZUluUmFuZ2UoYzogbnVtYmVyLCBsb3dlcjogbnVtYmVyLCB1cHBlcjogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiBsb3dlciA8PSBjICYmIGMgPD0gdXBwZXI7XG59XG5cbmZ1bmN0aW9uIGlzSGV4Q29kZShjOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBpc0NoYXJDb2RlSW5SYW5nZShjLCAweDMwLCAweDM5KSB8fCAvLyAwLTlcbiAgICBpc0NoYXJDb2RlSW5SYW5nZShjLCAweDQxLCAweDQ2KSB8fCAvLyBBLUZcbiAgICBpc0NoYXJDb2RlSW5SYW5nZShjLCAweDYxLCAweDY2KSAvLyBhLWZcbiAgKTtcbn1cblxuZnVuY3Rpb24gaXNPY3RDb2RlKGM6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNDaGFyQ29kZUluUmFuZ2UoYywgMHgzMCwgMHgzNyk7IC8vIDAtN1xufVxuXG5mdW5jdGlvbiBpc0RlY0NvZGUoYzogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc0NoYXJDb2RlSW5SYW5nZShjLCAweDMwLCAweDM5KTsgLy8gMC05XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sSW50ZWdlcihkYXRhOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgbWF4ID0gZGF0YS5sZW5ndGg7XG4gIGxldCBpbmRleCA9IDA7XG4gIGxldCBoYXNEaWdpdHMgPSBmYWxzZTtcblxuICBpZiAoIW1heCkgcmV0dXJuIGZhbHNlO1xuXG4gIGxldCBjaCA9IGRhdGFbaW5kZXhdO1xuXG4gIC8vIHNpZ25cbiAgaWYgKGNoID09PSBcIi1cIiB8fCBjaCA9PT0gXCIrXCIpIHtcbiAgICBjaCA9IGRhdGFbKytpbmRleF07XG4gIH1cblxuICBpZiAoY2ggPT09IFwiMFwiKSB7XG4gICAgLy8gMFxuICAgIGlmIChpbmRleCArIDEgPT09IG1heCkgcmV0dXJuIHRydWU7XG4gICAgY2ggPSBkYXRhWysraW5kZXhdO1xuXG4gICAgLy8gYmFzZSAyLCBiYXNlIDgsIGJhc2UgMTZcblxuICAgIGlmIChjaCA9PT0gXCJiXCIpIHtcbiAgICAgIC8vIGJhc2UgMlxuICAgICAgaW5kZXgrKztcblxuICAgICAgZm9yICg7IGluZGV4IDwgbWF4OyBpbmRleCsrKSB7XG4gICAgICAgIGNoID0gZGF0YVtpbmRleF07XG4gICAgICAgIGlmIChjaCA9PT0gXCJfXCIpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoY2ggIT09IFwiMFwiICYmIGNoICE9PSBcIjFcIikgcmV0dXJuIGZhbHNlO1xuICAgICAgICBoYXNEaWdpdHMgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGhhc0RpZ2l0cyAmJiBjaCAhPT0gXCJfXCI7XG4gICAgfVxuXG4gICAgaWYgKGNoID09PSBcInhcIikge1xuICAgICAgLy8gYmFzZSAxNlxuICAgICAgaW5kZXgrKztcblxuICAgICAgZm9yICg7IGluZGV4IDwgbWF4OyBpbmRleCsrKSB7XG4gICAgICAgIGNoID0gZGF0YVtpbmRleF07XG4gICAgICAgIGlmIChjaCA9PT0gXCJfXCIpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoIWlzSGV4Q29kZShkYXRhLmNoYXJDb2RlQXQoaW5kZXgpKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBoYXNEaWdpdHMgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGhhc0RpZ2l0cyAmJiBjaCAhPT0gXCJfXCI7XG4gICAgfVxuXG4gICAgLy8gYmFzZSA4XG4gICAgZm9yICg7IGluZGV4IDwgbWF4OyBpbmRleCsrKSB7XG4gICAgICBjaCA9IGRhdGFbaW5kZXhdO1xuICAgICAgaWYgKGNoID09PSBcIl9cIikgY29udGludWU7XG4gICAgICBpZiAoIWlzT2N0Q29kZShkYXRhLmNoYXJDb2RlQXQoaW5kZXgpKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgaGFzRGlnaXRzID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc0RpZ2l0cyAmJiBjaCAhPT0gXCJfXCI7XG4gIH1cblxuICAvLyBiYXNlIDEwIChleGNlcHQgMCkgb3IgYmFzZSA2MFxuXG4gIC8vIHZhbHVlIHNob3VsZCBub3Qgc3RhcnQgd2l0aCBgX2A7XG4gIGlmIChjaCA9PT0gXCJfXCIpIHJldHVybiBmYWxzZTtcblxuICBmb3IgKDsgaW5kZXggPCBtYXg7IGluZGV4KyspIHtcbiAgICBjaCA9IGRhdGFbaW5kZXhdO1xuICAgIGlmIChjaCA9PT0gXCJfXCIpIGNvbnRpbnVlO1xuICAgIGlmICghaXNEZWNDb2RlKGRhdGEuY2hhckNvZGVBdChpbmRleCkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGhhc0RpZ2l0cyA9IHRydWU7XG4gIH1cblxuICAvLyBTaG91bGQgaGF2ZSBkaWdpdHMgYW5kIHNob3VsZCBub3QgZW5kIHdpdGggYF9gXG4gIGlmICghaGFzRGlnaXRzIHx8IGNoID09PSBcIl9cIikgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIGJhc2U2MCBhbG1vc3Qgbm90IHVzZWQsIG5vIG5lZWRzIHRvIG9wdGltaXplXG4gIHJldHVybiAvXig6WzAtNV0/WzAtOV0pKyQvLnRlc3QoZGF0YS5zbGljZShpbmRleCkpO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sSW50ZWdlcihkYXRhOiBzdHJpbmcpOiBudW1iZXIge1xuICBsZXQgdmFsdWUgPSBkYXRhO1xuXG4gIGlmICh2YWx1ZS5pbmNsdWRlcyhcIl9cIikpIHtcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL18vZywgXCJcIik7XG4gIH1cblxuICBsZXQgc2lnbiA9IDE7XG4gIGxldCBjaCA9IHZhbHVlWzBdO1xuICBpZiAoY2ggPT09IFwiLVwiIHx8IGNoID09PSBcIitcIikge1xuICAgIGlmIChjaCA9PT0gXCItXCIpIHNpZ24gPSAtMTtcbiAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDEpO1xuICAgIGNoID0gdmFsdWVbMF07XG4gIH1cblxuICBpZiAodmFsdWUgPT09IFwiMFwiKSByZXR1cm4gMDtcblxuICBpZiAoY2ggPT09IFwiMFwiKSB7XG4gICAgaWYgKHZhbHVlWzFdID09PSBcImJcIikgcmV0dXJuIHNpZ24gKiBwYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgMik7XG4gICAgaWYgKHZhbHVlWzFdID09PSBcInhcIikgcmV0dXJuIHNpZ24gKiBwYXJzZUludCh2YWx1ZSwgMTYpO1xuICAgIHJldHVybiBzaWduICogcGFyc2VJbnQodmFsdWUsIDgpO1xuICB9XG5cbiAgcmV0dXJuIHNpZ24gKiBwYXJzZUludCh2YWx1ZSwgMTApO1xufVxuXG5mdW5jdGlvbiBpc0ludGVnZXIob2JqZWN0OiB1bmtub3duKTogb2JqZWN0IGlzIG51bWJlciB7XG4gIGlmIChvYmplY3QgaW5zdGFuY2VvZiBOdW1iZXIpIG9iamVjdCA9IG9iamVjdC52YWx1ZU9mKCk7XG4gIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSBcIm51bWJlclwiICYmIG9iamVjdCAlIDEgPT09IDAgJiZcbiAgICAhaXNOZWdhdGl2ZVplcm8ob2JqZWN0KTtcbn1cblxuZXhwb3J0IGNvbnN0IGludDogVHlwZTxcInNjYWxhclwiLCBudW1iZXI+ID0ge1xuICB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6aW50XCIsXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbEludGVnZXIsXG4gIGRlZmF1bHRTdHlsZTogXCJkZWNpbWFsXCIsXG4gIGtpbmQ6IFwic2NhbGFyXCIsXG4gIHByZWRpY2F0ZTogaXNJbnRlZ2VyLFxuICByZXByZXNlbnQ6IHtcbiAgICAvLyBkZW5vLWxpbnQtaWdub3JlIGJhbi10eXBlc1xuICAgIGJpbmFyeShvYmplY3Q6IG51bWJlciB8IE51bWJlcik6IHN0cmluZyB7XG4gICAgICBjb25zdCB2YWx1ZSA9IG9iamVjdCBpbnN0YW5jZW9mIE51bWJlciA/IG9iamVjdC52YWx1ZU9mKCkgOiBvYmplY3Q7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMFxuICAgICAgICA/IGAwYiR7dmFsdWUudG9TdHJpbmcoMil9YFxuICAgICAgICA6IGAtMGIke3ZhbHVlLnRvU3RyaW5nKDIpLnNsaWNlKDEpfWA7XG4gICAgfSxcbiAgICAvLyBkZW5vLWxpbnQtaWdub3JlIGJhbi10eXBlc1xuICAgIG9jdGFsKG9iamVjdDogbnVtYmVyIHwgTnVtYmVyKTogc3RyaW5nIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gb2JqZWN0IGluc3RhbmNlb2YgTnVtYmVyID8gb2JqZWN0LnZhbHVlT2YoKSA6IG9iamVjdDtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAwXG4gICAgICAgID8gYDAke3ZhbHVlLnRvU3RyaW5nKDgpfWBcbiAgICAgICAgOiBgLTAke3ZhbHVlLnRvU3RyaW5nKDgpLnNsaWNlKDEpfWA7XG4gICAgfSxcbiAgICAvLyBkZW5vLWxpbnQtaWdub3JlIGJhbi10eXBlc1xuICAgIGRlY2ltYWwob2JqZWN0OiBudW1iZXIgfCBOdW1iZXIpOiBzdHJpbmcge1xuICAgICAgY29uc3QgdmFsdWUgPSBvYmplY3QgaW5zdGFuY2VvZiBOdW1iZXIgPyBvYmplY3QudmFsdWVPZigpIDogb2JqZWN0O1xuICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKDEwKTtcbiAgICB9LFxuICAgIC8vIGRlbm8tbGludC1pZ25vcmUgYmFuLXR5cGVzXG4gICAgaGV4YWRlY2ltYWwob2JqZWN0OiBudW1iZXIgfCBOdW1iZXIpOiBzdHJpbmcge1xuICAgICAgY29uc3QgdmFsdWUgPSBvYmplY3QgaW5zdGFuY2VvZiBOdW1iZXIgPyBvYmplY3QudmFsdWVPZigpIDogb2JqZWN0O1xuICAgICAgcmV0dXJuIHZhbHVlID49IDBcbiAgICAgICAgPyBgMHgke3ZhbHVlLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfWBcbiAgICAgICAgOiBgLTB4JHt2YWx1ZS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKS5zbGljZSgxKX1gO1xuICAgIH0sXG4gIH0sXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sSW50ZWdlcixcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLG9GQUFvRjtBQUNwRiwwRUFBMEU7QUFDMUUscURBQXFEO0FBR3JELFNBQVMsY0FBYyxRQUFRLGVBQWU7QUFFOUMsU0FBUyxrQkFBa0IsQ0FBUyxFQUFFLEtBQWEsRUFBRSxLQUFhO0VBQ2hFLE9BQU8sU0FBUyxLQUFLLEtBQUs7QUFDNUI7QUFFQSxTQUFTLFVBQVUsQ0FBUztFQUMxQixPQUNFLGtCQUFrQixHQUFHLE1BQU0sU0FBUyxNQUFNO0VBQzFDLGtCQUFrQixHQUFHLE1BQU0sU0FBUyxNQUFNO0VBQzFDLGtCQUFrQixHQUFHLE1BQU0sTUFBTSxNQUFNOztBQUUzQztBQUVBLFNBQVMsVUFBVSxDQUFTO0VBQzFCLE9BQU8sa0JBQWtCLEdBQUcsTUFBTSxPQUFPLE1BQU07QUFDakQ7QUFFQSxTQUFTLFVBQVUsQ0FBUztFQUMxQixPQUFPLGtCQUFrQixHQUFHLE1BQU0sT0FBTyxNQUFNO0FBQ2pEO0FBRUEsU0FBUyxtQkFBbUIsSUFBWTtFQUN0QyxNQUFNLE1BQU0sS0FBSyxNQUFNO0VBQ3ZCLElBQUksUUFBUTtFQUNaLElBQUksWUFBWTtFQUVo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 +// denoCacheMetadata=1904122398677164138,8813654939950411633
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/2b61d5ccebac8f353bed4197d355dea0769292a00153c97b5cac03718fdb1bb8.js b/vendor/gen/https/jsr.io/2b61d5ccebac8f353bed4197d355dea0769292a00153c97b5cac03718fdb1bb8.js new file mode 100644 index 0000000..8fba0f5 --- /dev/null +++ b/vendor/gen/https/jsr.io/2b61d5ccebac8f353bed4197d355dea0769292a00153c97b5cac03718fdb1bb8.js @@ -0,0 +1,33 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { normalize } from "./normalize.ts"; +import { SEPARATOR_PATTERN } from "./constants.ts"; +/** + * Like normalize(), but doesn't collapse "**\/.." when `globstar` is true. + * + * @example Usage + * ```ts + * import { normalizeGlob } from "@std/path/windows/normalize-glob"; + * import { assertEquals } from "@std/assert"; + * + * const normalized = normalizeGlob("**\\foo\\..\\bar", { globstar: true }); + * assertEquals(normalized, "**\\bar"); + * ``` + * + * @param glob The glob pattern to normalize. + * @param options The options for glob pattern. + * @returns The normalized glob pattern. + */ export function normalizeGlob(glob, options = {}) { + const { globstar = false } = options; + if (glob.match(/\0/g)) { + throw new Error(`Glob contains invalid characters: "${glob}"`); + } + if (!globstar) { + return normalize(glob); + } + const s = SEPARATOR_PATTERN.source; + const badParentPattern = new RegExp(`(?<=(${s}|^)\\*\\*${s})\\.\\.(?=${s}|$)`, "g"); + return normalize(glob.replace(badParentPattern, "\0")).replace(/\0/g, ".."); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC93aW5kb3dzL25vcm1hbGl6ZV9nbG9iLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB0eXBlIHsgR2xvYk9wdGlvbnMgfSBmcm9tIFwiLi4vX2NvbW1vbi9nbG9iX3RvX3JlZ19leHAudHNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuL25vcm1hbGl6ZS50c1wiO1xuaW1wb3J0IHsgU0VQQVJBVE9SX1BBVFRFUk4gfSBmcm9tIFwiLi9jb25zdGFudHMudHNcIjtcblxuZXhwb3J0IHR5cGUgeyBHbG9iT3B0aW9ucyB9O1xuXG4vKipcbiAqIExpa2Ugbm9ybWFsaXplKCksIGJ1dCBkb2Vzbid0IGNvbGxhcHNlIFwiKipcXC8uLlwiIHdoZW4gYGdsb2JzdGFyYCBpcyB0cnVlLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgbm9ybWFsaXplR2xvYiB9IGZyb20gXCJAc3RkL3BhdGgvd2luZG93cy9ub3JtYWxpemUtZ2xvYlwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZUdsb2IoXCIqKlxcXFxmb29cXFxcLi5cXFxcYmFyXCIsIHsgZ2xvYnN0YXI6IHRydWUgfSk7XG4gKiBhc3NlcnRFcXVhbHMobm9ybWFsaXplZCwgXCIqKlxcXFxiYXJcIik7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gZ2xvYiBUaGUgZ2xvYiBwYXR0ZXJuIHRvIG5vcm1hbGl6ZS5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciBnbG9iIHBhdHRlcm4uXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBnbG9iIHBhdHRlcm4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVHbG9iKFxuICBnbG9iOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFBpY2s8R2xvYk9wdGlvbnMsIFwiZ2xvYnN0YXJcIj4gPSB7fSxcbik6IHN0cmluZyB7XG4gIGNvbnN0IHsgZ2xvYnN0YXIgPSBmYWxzZSB9OiBHbG9iT3B0aW9ucyA9IG9wdGlvbnM7XG4gIGlmIChnbG9iLm1hdGNoKC9cXDAvZykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEdsb2IgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzOiBcIiR7Z2xvYn1cImApO1xuICB9XG4gIGlmICghZ2xvYnN0YXIpIHtcbiAgICByZXR1cm4gbm9ybWFsaXplKGdsb2IpO1xuICB9XG4gIGNvbnN0IHMgPSBTRVBBUkFUT1JfUEFUVEVSTi5zb3VyY2U7XG4gIGNvbnN0IGJhZFBhcmVudFBhdHRlcm4gPSBuZXcgUmVnRXhwKFxuICAgIGAoPzw9KCR7c318XilcXFxcKlxcXFwqJHtzfSlcXFxcLlxcXFwuKD89JHtzfXwkKWAsXG4gICAgXCJnXCIsXG4gICk7XG4gIHJldHVybiBub3JtYWxpemUoZ2xvYi5yZXBsYWNlKGJhZFBhcmVudFBhdHRlcm4sIFwiXFwwXCIpKS5yZXBsYWNlKC9cXDAvZywgXCIuLlwiKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBR3JDLFNBQVMsU0FBUyxRQUFRLGlCQUFpQjtBQUMzQyxTQUFTLGlCQUFpQixRQUFRLGlCQUFpQjtBQUluRDs7Ozs7Ozs7Ozs7Ozs7O0NBZUMsR0FDRCxPQUFPLFNBQVMsY0FDZCxJQUFZLEVBQ1osVUFBeUMsQ0FBQyxDQUFDO0VBRTNDLE1BQU0sRUFBRSxXQUFXLEtBQUssRUFBRSxHQUFnQjtFQUMxQyxJQUFJLEtBQUssS0FBSyxDQUFDLFFBQVE7SUFDckIsTUFBTSxJQUFJLE1BQU0sQ0FBQyxtQ0FBbUMsRUFBRSxLQUFLLENBQUMsQ0FBQztFQUMvRDtFQUNBLElBQUksQ0FBQyxVQUFVO0lBQ2IsT0FBTyxVQUFVO0VBQ25CO0VBQ0EsTUFBTSxJQUFJLGtCQUFrQixNQUFNO0VBQ2xDLE1BQU0sbUJBQW1CLElBQUksT0FDM0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFDekM7RUFFRixPQUFPLFVBQVUsS0FBSyxPQUFPLENBQUMsa0JBQWtCLE9BQU8sT0FBTyxDQUFDLE9BQU87QUFDeEUifQ== +// denoCacheMetadata=9284254943716988788,5019300883642104827
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/2b730be9f91a5d1af7cc15bf48772cac084b8338780ddb9dde2f6b7866ad74eb.js b/vendor/gen/https/jsr.io/2b730be9f91a5d1af7cc15bf48772cac084b8338780ddb9dde2f6b7866ad74eb.js new file mode 100644 index 0000000..f3a18c2 --- /dev/null +++ b/vendor/gen/https/jsr.io/2b730be9f91a5d1af7cc15bf48772cac084b8338780ddb9dde2f6b7866ad74eb.js @@ -0,0 +1,50 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { assertArgs, lastPathSegment, stripSuffix } from "../_common/basename.ts"; +import { stripTrailingSeparators } from "../_common/strip_trailing_separators.ts"; +import { isPosixPathSeparator } from "./_util.ts"; +/** + * Return the last portion of a `path`. + * Trailing directory separators are ignored, and optional suffix is removed. + * + * @example Usage + * ```ts + * import { basename } from "@std/path/posix/basename"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(basename("/home/user/Documents/"), "Documents"); + * assertEquals(basename("/home/user/Documents/image.png"), "image.png"); + * assertEquals(basename("/home/user/Documents/image.png", ".png"), "image"); + * ``` + * + * @example Working with URLs + * + * Note: This function doesn't automatically strip hash and query parts from + * URLs. If your URL contains a hash or query, remove them before passing the + * URL to the function. This can be done by passing the URL to `new URL(url)`, + * and setting the `hash` and `search` properties to empty strings. + * + * ```ts + * import { basename } from "@std/path/posix/basename"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(basename("https://deno.land/std/path/mod.ts"), "mod.ts"); + * assertEquals(basename("https://deno.land/std/path/mod.ts", ".ts"), "mod"); + * assertEquals(basename("https://deno.land/std/path/mod.ts?a=b"), "mod.ts?a=b"); + * assertEquals(basename("https://deno.land/std/path/mod.ts#header"), "mod.ts#header"); + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `basename` from `@std/path/posix/unstable-basename`. + * + * @param path The path to extract the name from. + * @param suffix The suffix to remove from extracted name. + * @returns The extracted name. + */ export function basename(path, suffix = "") { + assertArgs(path, suffix); + const lastSegment = lastPathSegment(path, isPosixPathSeparator); + const strippedSegment = stripTrailingSeparators(lastSegment, isPosixPathSeparator); + return suffix ? stripSuffix(strippedSegment, suffix) : strippedSegment; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9wb3NpeC9iYXNlbmFtZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQge1xuICBhc3NlcnRBcmdzLFxuICBsYXN0UGF0aFNlZ21lbnQsXG4gIHN0cmlwU3VmZml4LFxufSBmcm9tIFwiLi4vX2NvbW1vbi9iYXNlbmFtZS50c1wiO1xuaW1wb3J0IHsgc3RyaXBUcmFpbGluZ1NlcGFyYXRvcnMgfSBmcm9tIFwiLi4vX2NvbW1vbi9zdHJpcF90cmFpbGluZ19zZXBhcmF0b3JzLnRzXCI7XG5pbXBvcnQgeyBpc1Bvc2l4UGF0aFNlcGFyYXRvciB9IGZyb20gXCIuL191dGlsLnRzXCI7XG5cbi8qKlxuICogUmV0dXJuIHRoZSBsYXN0IHBvcnRpb24gb2YgYSBgcGF0aGAuXG4gKiBUcmFpbGluZyBkaXJlY3Rvcnkgc2VwYXJhdG9ycyBhcmUgaWdub3JlZCwgYW5kIG9wdGlvbmFsIHN1ZmZpeCBpcyByZW1vdmVkLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgYmFzZW5hbWUgfSBmcm9tIFwiQHN0ZC9wYXRoL3Bvc2l4L2Jhc2VuYW1lXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoYmFzZW5hbWUoXCIvaG9tZS91c2VyL0RvY3VtZW50cy9cIiksIFwiRG9jdW1lbnRzXCIpO1xuICogYXNzZXJ0RXF1YWxzKGJhc2VuYW1lKFwiL2hvbWUvdXNlci9Eb2N1bWVudHMvaW1hZ2UucG5nXCIpLCBcImltYWdlLnBuZ1wiKTtcbiAqIGFzc2VydEVxdWFscyhiYXNlbmFtZShcIi9ob21lL3VzZXIvRG9jdW1lbnRzL2ltYWdlLnBuZ1wiLCBcIi5wbmdcIiksIFwiaW1hZ2VcIik7XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBXb3JraW5nIHdpdGggVVJMc1xuICpcbiAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gZG9lc24ndCBhdXRvbWF0aWNhbGx5IHN0cmlwIGhhc2ggYW5kIHF1ZXJ5IHBhcnRzIGZyb21cbiAqIFVSTHMuIElmIHlvdXIgVVJMIGNvbnRhaW5zIGEgaGFzaCBvciBxdWVyeSwgcmVtb3ZlIHRoZW0gYmVmb3JlIHBhc3NpbmcgdGhlXG4gKiBVUkwgdG8gdGhlIGZ1bmN0aW9uLiBUaGlzIGNhbiBiZSBkb25lIGJ5IHBhc3NpbmcgdGhlIFVSTCB0byBgbmV3IFVSTCh1cmwpYCxcbiAqIGFuZCBzZXR0aW5nIHRoZSBgaGFzaGAgYW5kIGBzZWFyY2hgIHByb3BlcnRpZXMgdG8gZW1wdHkgc3RyaW5ncy5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgYmFzZW5hbWUgfSBmcm9tIFwiQHN0ZC9wYXRoL3Bvc2l4L2Jhc2VuYW1lXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoYmFzZW5hbWUoXCJodHRwczovL2Rlbm8ubGFuZC9zdGQvcGF0aC9tb2QudHNcIiksIFwibW9kLnRzXCIpO1xuICogYXNzZXJ0RXF1YWxzKGJhc2VuYW1lKFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkL3BhdGgvbW9kLnRzXCIsIFwiLnRzXCIpLCBcIm1vZFwiKTtcbiAqIGFzc2VydEVxdWFscyhiYXNlbmFtZShcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9wYXRoL21vZC50cz9hPWJcIiksIFwibW9kLnRzP2E9YlwiKTtcbiAqIGFzc2VydEVxdWFscyhiYXNlbmFtZShcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9wYXRoL21vZC50cyNoZWFkZXJcIiksIFwibW9kLnRzI2hlYWRlclwiKTtcbiAqIGBgYFxuICpcbiAqIE5vdGU6IElmIHlvdSBhcmUgd29ya2luZyB3aXRoIGZpbGUgVVJMcyxcbiAqIHVzZSB0aGUgbmV3IHZlcnNpb24gb2YgYGJhc2VuYW1lYCBmcm9tIGBAc3RkL3BhdGgvcG9zaXgvdW5zdGFibGUtYmFzZW5hbWVgLlxuICpcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIGV4dHJhY3QgdGhlIG5hbWUgZnJvbS5cbiAqIEBwYXJhbSBzdWZmaXggVGhlIHN1ZmZpeCB0byByZW1vdmUgZnJvbSBleHRyYWN0ZWQgbmFtZS5cbiAqIEByZXR1cm5zIFRoZSBleHRyYWN0ZWQgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJhc2VuYW1lKHBhdGg6IHN0cmluZywgc3VmZml4ID0gXCJcIik6IHN0cmluZyB7XG4gIGFzc2VydEFyZ3MocGF0aCwgc3VmZml4KTtcblxuICBjb25zdCBsYXN0U2VnbWVudCA9IGxhc3RQYXRoU2VnbWVudChwYXRoLCBpc1Bvc2l4UGF0aFNlcGFyYXRvcik7XG4gIGNvbnN0IHN0cmlwcGVkU2VnbWVudCA9IHN0cmlwVHJhaWxpbmdTZXBhcmF0b3JzKFxuICAgIGxhc3RTZWdtZW50LFxuICAgIGlzUG9zaXhQYXRoU2VwYXJhdG9yLFxuICApO1xuICByZXR1cm4gc3VmZml4ID8gc3RyaXBTdWZmaXgoc3RyaXBwZWRTZWdtZW50LCBzdWZmaXgpIDogc3RyaXBwZWRTZWdtZW50O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxxQ0FBcUM7QUFFckMsU0FDRSxVQUFVLEVBQ1YsZUFBZSxFQUNmLFdBQVcsUUFDTix5QkFBeUI7QUFDaEMsU0FBUyx1QkFBdUIsUUFBUSwwQ0FBMEM7QUFDbEYsU0FBUyxvQkFBb0IsUUFBUSxhQUFhO0FBRWxEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBcUNDLEdBQ0QsT0FBTyxTQUFTLFNBQVMsSUFBWSxFQUFFLFNBQVMsRUFBRTtFQUNoRCxXQUFXLE1BQU07RUFFakIsTUFBTSxjQUFjLGdCQUFnQixNQUFNO0VBQzFDLE1BQU0sa0JBQWtCLHdCQUN0QixhQUNBO0VBRUYsT0FBTyxTQUFTLFlBQVksaUJBQWlCLFVBQVU7QUFDekQifQ== +// denoCacheMetadata=9869583317130059077,12469544256971723182
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/2dfc5906e290c712f0c7f3ad228e202b0ff32b317cb64f487ee2810539739211.js b/vendor/gen/https/jsr.io/2dfc5906e290c712f0c7f3ad228e202b0ff32b317cb64f487ee2810539739211.js new file mode 100644 index 0000000..f03943d --- /dev/null +++ b/vendor/gen/https/jsr.io/2dfc5906e290c712f0c7f3ad228e202b0ff32b317cb64f487ee2810539739211.js @@ -0,0 +1,40 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { extractFrontMatter } from "./_shared.ts"; +import { EXTRACT_JSON_REGEXP } from "./_formats.ts"; +/** + * Extracts and parses {@link https://www.json.org/ | JSON } from the metadata + * of front matter content. + * + * @example Extract JSON front matter + * ```ts + * import { extract } from "@std/front-matter/json"; + * import { assertEquals } from "@std/assert"; + * + * const output = `---json + * { "title": "Three dashes marks the spot" } + * --- + * Hello, world!`; + * const result = extract(output); + * + * assertEquals(result, { + * frontMatter: '{ "title": "Three dashes marks the spot" }', + * body: "Hello, world!", + * attrs: { title: "Three dashes marks the spot" }, + * }); + * ``` + * + * @typeParam T The type of the parsed front matter. + * @param text The text to extract JSON front matter from. + * @returns The extracted JSON front matter and body content. + */ export function extract(text) { + const { frontMatter, body } = extractFrontMatter(text, EXTRACT_JSON_REGEXP); + const attrs = frontMatter ? JSON.parse(frontMatter) : {}; + return { + frontMatter, + body, + attrs + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnJvbnQtbWF0dGVyLzEuMC45L2pzb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgZXh0cmFjdEZyb250TWF0dGVyIH0gZnJvbSBcIi4vX3NoYXJlZC50c1wiO1xuaW1wb3J0IHsgRVhUUkFDVF9KU09OX1JFR0VYUCB9IGZyb20gXCIuL19mb3JtYXRzLnRzXCI7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3QgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuXG5leHBvcnQgdHlwZSB7IEV4dHJhY3QgfTtcblxuLyoqXG4gKiBFeHRyYWN0cyBhbmQgcGFyc2VzIHtAbGluayBodHRwczovL3d3dy5qc29uLm9yZy8gfCBKU09OIH0gZnJvbSB0aGUgbWV0YWRhdGFcbiAqIG9mIGZyb250IG1hdHRlciBjb250ZW50LlxuICpcbiAqIEBleGFtcGxlIEV4dHJhY3QgSlNPTiBmcm9udCBtYXR0ZXJcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBleHRyYWN0IH0gZnJvbSBcIkBzdGQvZnJvbnQtbWF0dGVyL2pzb25cIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IG91dHB1dCA9IGAtLS1qc29uXG4gKiB7IFwidGl0bGVcIjogXCJUaHJlZSBkYXNoZXMgbWFya3MgdGhlIHNwb3RcIiB9XG4gKiAtLS1cbiAqIEhlbGxvLCB3b3JsZCFgO1xuICogY29uc3QgcmVzdWx0ID0gZXh0cmFjdChvdXRwdXQpO1xuICpcbiAqIGFzc2VydEVxdWFscyhyZXN1bHQsIHtcbiAqICAgZnJvbnRNYXR0ZXI6ICd7IFwidGl0bGVcIjogXCJUaHJlZSBkYXNoZXMgbWFya3MgdGhlIHNwb3RcIiB9JyxcbiAqICAgYm9keTogXCJIZWxsbywgd29ybGQhXCIsXG4gKiAgIGF0dHJzOiB7IHRpdGxlOiBcIlRocmVlIGRhc2hlcyBtYXJrcyB0aGUgc3BvdFwiIH0sXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEB0eXBlUGFyYW0gVCBUaGUgdHlwZSBvZiB0aGUgcGFyc2VkIGZyb250IG1hdHRlci5cbiAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0IHRvIGV4dHJhY3QgSlNPTiBmcm9udCBtYXR0ZXIgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBleHRyYWN0ZWQgSlNPTiBmcm9udCBtYXR0ZXIgYW5kIGJvZHkgY29udGVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3Q8VD4odGV4dDogc3RyaW5nKTogRXh0cmFjdDxUPiB7XG4gIGNvbnN0IHsgZnJvbnRNYXR0ZXIsIGJvZHkgfSA9IGV4dHJhY3RGcm9udE1hdHRlcih0ZXh0LCBFWFRSQUNUX0pTT05fUkVHRVhQKTtcbiAgY29uc3QgYXR0cnMgPSAoZnJvbnRNYXR0ZXIgPyBKU09OLnBhcnNlKGZyb250TWF0dGVyKSA6IHt9KSBhcyBUO1xuICByZXR1cm4geyBmcm9udE1hdHRlciwgYm9keSwgYXR0cnMgfTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDLFNBQVMsa0JBQWtCLFFBQVEsZUFBZTtBQUNsRCxTQUFTLG1CQUFtQixRQUFRLGdCQUFnQjtBQUtwRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXlCQyxHQUNELE9BQU8sU0FBUyxRQUFXLElBQVk7RUFDckMsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsR0FBRyxtQkFBbUIsTUFBTTtFQUN2RCxNQUFNLFFBQVMsY0FBYyxLQUFLLEtBQUssQ0FBQyxlQUFlLENBQUM7RUFDeEQsT0FBTztJQUFFO0lBQWE7SUFBTTtFQUFNO0FBQ3BDIn0= +// denoCacheMetadata=8381338719138523530,13251501243935239100
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/2f22c2a213f8d0b79812fd751c5efcbdc0c8a82c7e93a0d77f66a7a095cedb02.js b/vendor/gen/https/jsr.io/2f22c2a213f8d0b79812fd751c5efcbdc0c8a82c7e93a0d77f66a7a095cedb02.js new file mode 100644 index 0000000..5e63b1a --- /dev/null +++ b/vendor/gen/https/jsr.io/2f22c2a213f8d0b79812fd751c5efcbdc0c8a82c7e93a0d77f66a7a095cedb02.js @@ -0,0 +1,58 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { parseMediaType } from "./parse_media_type.ts"; +import { getCharset } from "./get_charset.ts"; +import { formatMediaType } from "./format_media_type.ts"; +import { typeByExtension } from "./type_by_extension.ts"; +/** + * Returns the full `Content-Type` or `Content-Disposition` header value for the + * given extension or media type. + * + * The function will treat the `extensionOrType` as a media type when it + * contains a `/`, otherwise it will process it as an extension, with or without + * the leading `.`. + * + * Returns `undefined` if unable to resolve the media type. + * + * @typeParam T Type of the extension or media type to resolve. + * + * @param extensionOrType The extension or media type to resolve. + * + * @returns The full `Content-Type` or `Content-Disposition` header value, or + * `undefined` if unable to resolve the media type. + * + * @example Usage + * ```ts + * import { contentType } from "@std/media-types/content-type"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(contentType(".json"), "application/json; charset=UTF-8"); + * assertEquals(contentType("text/html"), "text/html; charset=UTF-8"); + * assertEquals(contentType("text/html; charset=UTF-8"), "text/html; charset=UTF-8"); + * assertEquals(contentType("txt"), "text/plain; charset=UTF-8"); + * assertEquals(contentType("foo"), undefined); + * assertEquals(contentType("file.json"), undefined); + * ``` + */ export function contentType(extensionOrType) { + try { + const [mediaType, params = {}] = extensionOrType.includes("/") ? parseMediaType(extensionOrType) : [ + typeByExtension(extensionOrType), + undefined + ]; + if (!mediaType) { + return undefined; + } + if (!("charset" in params)) { + const charset = getCharset(mediaType); + if (charset) { + params.charset = charset; + } + } + return formatMediaType(mediaType, params); + } catch { + // just swallow returning undefined + } + return undefined; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvbWVkaWEtdHlwZXMvMS4xLjAvY29udGVudF90eXBlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IHBhcnNlTWVkaWFUeXBlIH0gZnJvbSBcIi4vcGFyc2VfbWVkaWFfdHlwZS50c1wiO1xuaW1wb3J0IHsgZ2V0Q2hhcnNldCB9IGZyb20gXCIuL2dldF9jaGFyc2V0LnRzXCI7XG5pbXBvcnQgeyBmb3JtYXRNZWRpYVR5cGUgfSBmcm9tIFwiLi9mb3JtYXRfbWVkaWFfdHlwZS50c1wiO1xuaW1wb3J0IHR5cGUgeyBkYiB9IGZyb20gXCIuL19kYi50c1wiO1xuaW1wb3J0IHsgdHlwZUJ5RXh0ZW5zaW9uIH0gZnJvbSBcIi4vdHlwZV9ieV9leHRlbnNpb24udHNcIjtcblxuLyoqIE1JTUUtdHlwZXMgZGF0YWJhc2UuICovXG5leHBvcnQgdHlwZSBEQiA9IHR5cGVvZiBkYjtcbi8qKiBNYXBzIGNvbnRlbnQgdHlwZXMgdG8gdGhlaXIgY29ycmVzcG9uZGluZyBmaWxlIGV4dGVuc2lvbnMuICovXG5leHBvcnQgdHlwZSBDb250ZW50VHlwZVRvRXh0ZW5zaW9uID0ge1xuICAvKipcbiAgICogTWFwcyBlYWNoIGNvbnRlbnQgdHlwZSBrZXkgdG8gaXRzIGNvcnJlc3BvbmRpbmcgZmlsZSBleHRlbnNpb24uXG4gICAqL1xuICBbSyBpbiBrZXlvZiBEQl06IERCW0tdIGV4dGVuZHMgeyBcImV4dGVuc2lvbnNcIjogcmVhZG9ubHkgc3RyaW5nW10gfVxuICAgID8gREJbS11bXCJleHRlbnNpb25zXCJdW251bWJlcl1cbiAgICA6IG5ldmVyO1xufTtcblxuLyoqIEtub3duIGV4dGVuc2lvbiBvciB0eXBlLiBVc2VkIGluIHtAbGlua2NvZGUgY29udGVudFR5cGV9LiAqL1xuZXhwb3J0IHR5cGUgS25vd25FeHRlbnNpb25PclR5cGUgPVxuICB8IGtleW9mIENvbnRlbnRUeXBlVG9FeHRlbnNpb25cbiAgfCBDb250ZW50VHlwZVRvRXh0ZW5zaW9uW2tleW9mIENvbnRlbnRUeXBlVG9FeHRlbnNpb25dXG4gIHwgYC4ke0NvbnRlbnRUeXBlVG9FeHRlbnNpb25ba2V5b2YgQ29udGVudFR5cGVUb0V4dGVuc2lvbl19YDtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmdWxsIGBDb250ZW50LVR5cGVgIG9yIGBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIgdmFsdWUgZm9yIHRoZVxuICogZ2l2ZW4gZXh0ZW5zaW9uIG9yIG1lZGlhIHR5cGUuXG4gKlxuICogVGhlIGZ1bmN0aW9uIHdpbGwgdHJlYXQgdGhlIGBleHRlbnNpb25PclR5cGVgIGFzIGEgbWVkaWEgdHlwZSB3aGVuIGl0XG4gKiBjb250YWlucyBhIGAvYCwgb3RoZXJ3aXNlIGl0IHdpbGwgcHJvY2VzcyBpdCBhcyBhbiBleHRlbnNpb24sIHdpdGggb3Igd2l0aG91dFxuICogdGhlIGxlYWRpbmcgYC5gLlxuICpcbiAqIFJldHVybnMgYHVuZGVmaW5lZGAgaWYgdW5hYmxlIHRvIHJlc29sdmUgdGhlIG1lZGlhIHR5cGUuXG4gKlxuICogQHR5cGVQYXJhbSBUIFR5cGUgb2YgdGhlIGV4dGVuc2lvbiBvciBtZWRpYSB0eXBlIHRvIHJlc29sdmUuXG4gKlxuICogQHBhcmFtIGV4dGVuc2lvbk9yVHlwZSBUaGUgZXh0ZW5zaW9uIG9yIG1lZGlhIHR5cGUgdG8gcmVzb2x2ZS5cbiAqXG4gKiBAcmV0dXJucyBUaGUgZnVsbCBgQ29udGVudC1UeXBlYCBvciBgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyIHZhbHVlLCBvclxuICogYHVuZGVmaW5lZGAgaWYgdW5hYmxlIHRvIHJlc29sdmUgdGhlIG1lZGlhIHR5cGUuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBjb250ZW50VHlwZSB9IGZyb20gXCJAc3RkL21lZGlhLXR5cGVzL2NvbnRlbnQtdHlwZVwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogYXNzZXJ0RXF1YWxzKGNvbnRlbnRUeXBlKFwiLmpzb25cIiksIFwiYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD1VVEYtOFwiKTtcbiAqIGFzc2VydEVxdWFscyhjb250ZW50VHlwZShcInRleHQvaHRtbFwiKSwgXCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLThcIik7XG4gKiBhc3NlcnRFcXVhbHMoY29udGVudFR5cGUoXCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLThcIiksIFwidGV4dC9odG1sOyBjaGFyc2V0PVVURi04XCIpO1xuICogYXNzZXJ0RXF1YWxzKGNvbnRlbnRUeXBlKFwidHh0XCIpLCBcInRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLThcIik7XG4gKiBhc3NlcnRFcXVhbHMoY29udGVudFR5cGUoXCJmb29cIiksIHVuZGVmaW5lZCk7XG4gKiBhc3NlcnRFcXVhbHMoY29udGVudFR5cGUoXCJmaWxlLmpzb25cIiksIHVuZGVmaW5lZCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnRlbnRUeXBlPFxuICAvLyBXb3JrYXJvdW5kIHRvIGF1dG9jb21wbGV0ZSBmb3IgcGFyYW1ldGVyczogaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8yOTcyOSNpc3N1ZWNvbW1lbnQtNTY3ODcxOTM5XG4gIC8vIGRlbm8tbGludC1pZ25vcmUgYmFuLXR5cGVzXG4gIFQgZXh0ZW5kcyAoc3RyaW5nICYge30pIHwgS25vd25FeHRlbnNpb25PclR5cGUsXG4+KFxuICBleHRlbnNpb25PclR5cGU6IFQsXG4pOiBMb3dlcmNhc2U8VD4gZXh0ZW5kcyBLbm93bkV4dGVuc2lvbk9yVHlwZSA/IHN0cmluZyA6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgY29uc3QgW21lZGlhVHlwZSwgcGFyYW1zID0ge31dID0gZXh0ZW5zaW9uT3JUeXBlLmluY2x1ZGVzKFwiL1wiKVxuICAgICAgPyBwYXJzZU1lZGlhVHlwZShleHRlbnNpb25PclR5cGUpXG4gICAgICA6IFt0eXBlQnlFeHRlbnNpb24oZXh0ZW5zaW9uT3JUeXBlKSwgdW5kZWZpbmVkXTtcbiAgICBpZiAoIW1lZGlhVHlwZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZCBhcyBMb3dlcmNhc2U8VD4gZXh0ZW5kcyBLbm93bkV4dGVuc2lvbk9yVHlwZSA/IHN0cmluZ1xuICAgICAgICA6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKCEoXCJjaGFyc2V0XCIgaW4gcGFyYW1zKSkge1xuICAgICAgY29uc3QgY2hhcnNldCA9IGdldENoYXJzZXQobWVkaWFUeXBlKTtcbiAgICAgIGlmIChjaGFyc2V0KSB7XG4gICAgICAgIHBhcmFtcy5jaGFyc2V0ID0gY2hhcnNldDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZvcm1hdE1lZGlhVHlwZShtZWRpYVR5cGUsIHBhcmFtcyk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIGp1c3Qgc3dhbGxvdyByZXR1cm5pbmcgdW5kZWZpbmVkXG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZCBhcyBMb3dlcmNhc2U8VD4gZXh0ZW5kcyBLbm93bkV4dGVuc2lvbk9yVHlwZSA/IHN0cmluZ1xuICAgIDogc3RyaW5nIHwgdW5kZWZpbmVkO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxxQ0FBcUM7QUFFckMsU0FBUyxjQUFjLFFBQVEsd0JBQXdCO0FBQ3ZELFNBQVMsVUFBVSxRQUFRLG1CQUFtQjtBQUM5QyxTQUFTLGVBQWUsUUFBUSx5QkFBeUI7QUFFekQsU0FBUyxlQUFlLFFBQVEseUJBQXlCO0FBb0J6RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E2QkMsR0FDRCxPQUFPLFNBQVMsWUFLZCxlQUFrQjtFQUVsQixJQUFJO0lBQ0YsTUFBTSxDQUFDLFdBQVcsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLGdCQUFnQixRQUFRLENBQUMsT0FDdEQsZUFBZSxtQkFDZjtNQUFDLGdCQUFnQjtNQUFrQjtLQUFVO0lBQ2pELElBQUksQ0FBQyxXQUFXO01BQ2QsT0FBTztJQUVUO0lBQ0EsSUFBSSxDQUFDLENBQUMsYUFBYSxNQUFNLEdBQUc7TUFDMUIsTUFBTSxVQUFVLFdBQVc7TUFDM0IsSUFBSSxTQUFTO1FBQ1gsT0FBTyxPQUFPLEdBQUc7TUFDbkI7SUFDRjtJQUNBLE9BQU8sZ0JBQWdCLFdBQVc7RUFDcEMsRUFBRSxPQUFNO0VBQ04sbUNBQW1DO0VBQ3JDO0VBQ0EsT0FBTztBQUVUIn0= +// denoCacheMetadata=6155143375393141784,13490324468490832686
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/2fab163696b080858a88eec838206926fe73e0ac01075f0833f63052c8c3fc30.js b/vendor/gen/https/jsr.io/2fab163696b080858a88eec838206926fe73e0ac01075f0833f63052c8c3fc30.js new file mode 100644 index 0000000..466b152 --- /dev/null +++ b/vendor/gen/https/jsr.io/2fab163696b080858a88eec838206926fe73e0ac01075f0833f63052c8c3fc30.js @@ -0,0 +1,24 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { assertPath } from "../_common/assert_path.ts"; +import { isPosixPathSeparator } from "./_util.ts"; +/** + * Verifies whether provided path is absolute. + * + * @example Usage + * ```ts + * import { isAbsolute } from "@std/path/posix/is-absolute"; + * import { assert, assertFalse } from "@std/assert"; + * + * assert(isAbsolute("/home/user/Documents/")); + * assertFalse(isAbsolute("home/user/Documents/")); + * ``` + * + * @param path The path to verify. + * @returns Whether the path is absolute. + */ export function isAbsolute(path) { + assertPath(path); + return path.length > 0 && isPosixPathSeparator(path.charCodeAt(0)); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9wb3NpeC9pc19hYnNvbHV0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBhc3NlcnRQYXRoIH0gZnJvbSBcIi4uL19jb21tb24vYXNzZXJ0X3BhdGgudHNcIjtcbmltcG9ydCB7IGlzUG9zaXhQYXRoU2VwYXJhdG9yIH0gZnJvbSBcIi4vX3V0aWwudHNcIjtcblxuLyoqXG4gKiBWZXJpZmllcyB3aGV0aGVyIHByb3ZpZGVkIHBhdGggaXMgYWJzb2x1dGUuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBpc0Fic29sdXRlIH0gZnJvbSBcIkBzdGQvcGF0aC9wb3NpeC9pcy1hYnNvbHV0ZVwiO1xuICogaW1wb3J0IHsgYXNzZXJ0LCBhc3NlcnRGYWxzZSB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydChpc0Fic29sdXRlKFwiL2hvbWUvdXNlci9Eb2N1bWVudHMvXCIpKTtcbiAqIGFzc2VydEZhbHNlKGlzQWJzb2x1dGUoXCJob21lL3VzZXIvRG9jdW1lbnRzL1wiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byB2ZXJpZnkuXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBwYXRoIGlzIGFic29sdXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBYnNvbHV0ZShwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgYXNzZXJ0UGF0aChwYXRoKTtcbiAgcmV0dXJuIHBhdGgubGVuZ3RoID4gMCAmJiBpc1Bvc2l4UGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMCkpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxxQ0FBcUM7QUFFckMsU0FBUyxVQUFVLFFBQVEsNEJBQTRCO0FBQ3ZELFNBQVMsb0JBQW9CLFFBQVEsYUFBYTtBQUVsRDs7Ozs7Ozs7Ozs7Ozs7Q0FjQyxHQUNELE9BQU8sU0FBUyxXQUFXLElBQVk7RUFDckMsV0FBVztFQUNYLE9BQU8sS0FBSyxNQUFNLEdBQUcsS0FBSyxxQkFBcUIsS0FBSyxVQUFVLENBQUM7QUFDakUifQ== +// denoCacheMetadata=12380283740593318290,13904146203451933457
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/3028e15592e85f3abad159660201866f1bc8d92a1fac9b1cb0588af2471d9ae7.js b/vendor/gen/https/jsr.io/3028e15592e85f3abad159660201866f1bc8d92a1fac9b1cb0588af2471d9ae7.js new file mode 100644 index 0000000..9dfba73 --- /dev/null +++ b/vendor/gen/https/jsr.io/3028e15592e85f3abad159660201866f1bc8d92a1fac9b1cb0588af2471d9ae7.js @@ -0,0 +1,49 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +export const alphabet = new TextEncoder().encode("0123456789abcdef"); +export const rAlphabet = new Uint8Array(128).fill(16); // alphabet.Hex.length +alphabet.forEach((byte, i)=>rAlphabet[byte] = i); +new TextEncoder().encode("ABCDEF").forEach((byte, i)=>rAlphabet[byte] = i + 10); +/** + * Calculate the output size needed to encode a given input size for + * {@linkcode encodeIntoHex}. + * + * @param originalSize The size of the input buffer. + * @returns The size of the output buffer. + * + * @example Basic Usage + * ```ts + * import { assertEquals } from "@std/assert"; + * import { calcSizeHex } from "@std/encoding/unstable-hex"; + * + * assertEquals(calcSizeHex(1), 2); + * ``` + */ export function calcSizeHex(originalSize) { + return originalSize * 2; +} +export function encode(buffer, i, o, alphabet) { + for(; i < buffer.length; ++i){ + const x = buffer[i]; + buffer[o++] = alphabet[x >> 4]; + buffer[o++] = alphabet[x & 0xF]; + } + return o; +} +export function decode(buffer, i, o, alphabet) { + if ((buffer.length - o) % 2 === 1) { + throw new RangeError(`Cannot decode input as hex: Length (${buffer.length - o}) must be divisible by 2`); + } + i += 1; + for(; i < buffer.length; i += 2){ + buffer[o++] = getByte(buffer[i - 1], alphabet) << 4 | getByte(buffer[i], alphabet); + } + return o; +} +function getByte(char, alphabet) { + const byte = alphabet[char] ?? 16; + if (byte === 16) { + throw new TypeError(`Cannot decode input as hex: Invalid character (${String.fromCharCode(char)})`); + } + return byte; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZW5jb2RpbmcvMS4wLjEwL19jb21tb24xNi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuXG5pbXBvcnQgdHlwZSB7IFVpbnQ4QXJyYXlfIH0gZnJvbSBcIi4vX3R5cGVzLnRzXCI7XG5leHBvcnQgdHlwZSB7IFVpbnQ4QXJyYXlfIH07XG5cbmV4cG9ydCBjb25zdCBhbHBoYWJldCA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShcIjAxMjM0NTY3ODlhYmNkZWZcIik7XG5leHBvcnQgY29uc3QgckFscGhhYmV0ID0gbmV3IFVpbnQ4QXJyYXkoMTI4KS5maWxsKDE2KTsgLy8gYWxwaGFiZXQuSGV4Lmxlbmd0aFxuYWxwaGFiZXQuZm9yRWFjaCgoYnl0ZSwgaSkgPT4gckFscGhhYmV0W2J5dGVdID0gaSk7XG5uZXcgVGV4dEVuY29kZXIoKVxuICAuZW5jb2RlKFwiQUJDREVGXCIpXG4gIC5mb3JFYWNoKChieXRlLCBpKSA9PiByQWxwaGFiZXRbYnl0ZV0gPSBpICsgMTApO1xuXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgb3V0cHV0IHNpemUgbmVlZGVkIHRvIGVuY29kZSBhIGdpdmVuIGlucHV0IHNpemUgZm9yXG4gKiB7QGxpbmtjb2RlIGVuY29kZUludG9IZXh9LlxuICpcbiAqIEBwYXJhbSBvcmlnaW5hbFNpemUgVGhlIHNpemUgb2YgdGhlIGlucHV0IGJ1ZmZlci5cbiAqIEByZXR1cm5zIFRoZSBzaXplIG9mIHRoZSBvdXRwdXQgYnVmZmVyLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKiBpbXBvcnQgeyBjYWxjU2l6ZUhleCB9IGZyb20gXCJAc3RkL2VuY29kaW5nL3Vuc3RhYmxlLWhleFwiO1xuICpcbiAqIGFzc2VydEVxdWFscyhjYWxjU2l6ZUhleCgxKSwgMik7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGNTaXplSGV4KG9yaWdpbmFsU2l6ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIG9yaWdpbmFsU2l6ZSAqIDI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGUoXG4gIGJ1ZmZlcjogVWludDhBcnJheV8sXG4gIGk6IG51bWJlcixcbiAgbzogbnVtYmVyLFxuICBhbHBoYWJldDogVWludDhBcnJheSxcbik6IG51bWJlciB7XG4gIGZvciAoOyBpIDwgYnVmZmVyLmxlbmd0aDsgKytpKSB7XG4gICAgY29uc3QgeCA9IGJ1ZmZlcltpXSE7XG4gICAgYnVmZmVyW28rK10gPSBhbHBoYWJldFt4ID4+IDRdITtcbiAgICBidWZmZXJbbysrXSA9IGFscGhhYmV0W3ggJiAweEZdITtcbiAgfVxuICByZXR1cm4gbztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZShcbiAgYnVmZmVyOiBVaW50OEFycmF5XyxcbiAgaTogbnVtYmVyLFxuICBvOiBudW1iZXIsXG4gIGFscGhhYmV0OiBVaW50OEFycmF5LFxuKTogbnVtYmVyIHtcbiAgaWYgKChidWZmZXIubGVuZ3RoIC0gbykgJSAyID09PSAxKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXG4gICAgICBgQ2Fubm90IGRlY29kZSBpbnB1dCBhcyBoZXg6IExlbmd0aCAoJHtcbiAgICAgICAgYnVmZmVyLmxlbmd0aCAtIG9cbiAgICAgIH0pIG11c3QgYmUgZGl2aXNpYmxlIGJ5IDJgLFxuICAgICk7XG4gIH1cblxuICBpICs9IDE7XG4gIGZvciAoOyBpIDwgYnVmZmVyLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgYnVmZmVyW28rK10gPSAoZ2V0Qnl0ZShidWZmZXJbaSAtIDFdISwgYWxwaGFiZXQpIDw8IDQpIHxcbiAgICAgIGdldEJ5dGUoYnVmZmVyW2ldISwgYWxwaGFiZXQpO1xuICB9XG4gIHJldHVybiBvO1xufVxuXG5mdW5jdGlvbiBnZXRCeXRlKGNoYXI6IG51bWJlciwgYWxwaGFiZXQ6IFVpbnQ4QXJyYXkpOiBudW1iZXIge1xuICBjb25zdCBieXRlID0gYWxwaGFiZXRbY2hhcl0gPz8gMTY7XG4gIGlmIChieXRlID09PSAxNikgeyAvLyBhbHBoYWJldC5IZXgubGVuZ3RoXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIGBDYW5ub3QgZGVjb2RlIGlucHV0IGFzIGhleDogSW52YWxpZCBjaGFyYWN0ZXIgKCR7XG4gICAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhcilcbiAgICAgIH0pYCxcbiAgICApO1xuICB9XG4gIHJldHVybiBieXRlO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUtyRCxPQUFPLE1BQU0sV0FBVyxJQUFJLGNBQWMsTUFBTSxDQUFDLG9CQUFvQjtBQUNyRSxPQUFPLE1BQU0sWUFBWSxJQUFJLFdBQVcsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQjtBQUM3RSxTQUFTLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBTSxTQUFTLENBQUMsS0FBSyxHQUFHO0FBQ2hELElBQUksY0FDRCxNQUFNLENBQUMsVUFDUCxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQU0sU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJO0FBRTlDOzs7Ozs7Ozs7Ozs7OztDQWNDLEdBQ0QsT0FBTyxTQUFTLFlBQVksWUFBb0I7RUFDOUMsT0FBTyxlQUFlO0FBQ3hCO0FBRUEsT0FBTyxTQUFTLE9BQ2QsTUFBbUIsRUFDbkIsQ0FBUyxFQUNULENBQVMsRUFDVCxRQUFvQjtFQUVwQixNQUFPLElBQUksT0FBTyxNQUFNLEVBQUUsRUFBRSxFQUFHO0lBQzdCLE1BQU0sSUFBSSxNQUFNLENBQUMsRUFBRTtJQUNuQixNQUFNLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUU7SUFDOUIsTUFBTSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxJQUFJO0VBQ2pDO0VBQ0EsT0FBTztBQUNUO0FBRUEsT0FBTyxTQUFTLE9BQ2QsTUFBbUIsRUFDbkIsQ0FBUyxFQUNULENBQVMsRUFDVCxRQUFvQjtFQUVwQixJQUFJLENBQUMsT0FBTyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE1BQU0sR0FBRztJQUNqQyxNQUFNLElBQUksV0FDUixDQUFDLG9DQUFvQyxFQUNuQyxPQUFPLE1BQU0sR0FBRyxFQUNqQix3QkFBd0IsQ0FBQztFQUU5QjtFQUVBLEtBQUs7RUFDTCxNQUFPLElBQUksT0FBTyxNQUFNLEVBQUUsS0FBSyxFQUFHO0lBQ2hDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQUFBQyxRQUFRLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRyxhQUFhLElBQ2xELFFBQVEsTUFBTSxDQUFDLEVBQUUsRUFBRztFQUN4QjtFQUNBLE9BQU87QUFDVDtBQUVBLFNBQVMsUUFBUSxJQUFZLEVBQUUsUUFBb0I7RUFDakQsTUFBTSxPQUFPLFFBQVEsQ0FBQyxLQUFLLElBQUk7RUFDL0IsSUFBSSxTQUFTLElBQUk7SUFDZixNQUFNLElBQUksVUFDUixDQUFDLCtDQUErQyxFQUM5QyxPQUFPLFlBQVksQ0FBQyxNQUNyQixDQUFDLENBQUM7RUFFUDtFQUNBLE9BQU87QUFDVCJ9 +// denoCacheMetadata=9141643796425052155,1967313446775355262
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/3033b260d04154e6fb47d4992b9453aa2481def9df8595254c5de0a8b547c8ab.js b/vendor/gen/https/jsr.io/3033b260d04154e6fb47d4992b9453aa2481def9df8595254c5de0a8b547c8ab.js new file mode 100644 index 0000000..e50ed1b --- /dev/null +++ b/vendor/gen/https/jsr.io/3033b260d04154e6fb47d4992b9453aa2481def9df8595254c5de0a8b547c8ab.js @@ -0,0 +1,21 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * Converts a path to a namespaced path. This function returns the path as is on posix. + * + * @example Usage + * ```ts + * import { toNamespacedPath } from "@std/path/posix/to-namespaced-path"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(toNamespacedPath("/home/foo"), "/home/foo"); + * ``` + * + * @param path The path. + * @returns The namespaced path. + */ export function toNamespacedPath(path) { + // Non-op on posix systems + return path; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9wb3NpeC90b19uYW1lc3BhY2VkX3BhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHBhdGggdG8gYSBuYW1lc3BhY2VkIHBhdGguIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcGF0aCBhcyBpcyBvbiBwb3NpeC5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHRvTmFtZXNwYWNlZFBhdGggfSBmcm9tIFwiQHN0ZC9wYXRoL3Bvc2l4L3RvLW5hbWVzcGFjZWQtcGF0aFwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogYXNzZXJ0RXF1YWxzKHRvTmFtZXNwYWNlZFBhdGgoXCIvaG9tZS9mb29cIiksIFwiL2hvbWUvZm9vXCIpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHBhdGggVGhlIHBhdGguXG4gKiBAcmV0dXJucyBUaGUgbmFtZXNwYWNlZCBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9OYW1lc3BhY2VkUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBOb24tb3Agb24gcG9zaXggc3lzdGVtc1xuICByZXR1cm4gcGF0aDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDOzs7Ozs7Ozs7Ozs7O0NBYUMsR0FDRCxPQUFPLFNBQVMsaUJBQWlCLElBQVk7RUFDM0MsMEJBQTBCO0VBQzFCLE9BQU87QUFDVCJ9 +// denoCacheMetadata=489874811655483959,15815455390377772781
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/3056f7672646bc615e2d6cd1010ef69cfed329768bbdbed2094fa9e8a8dd0d49.js b/vendor/gen/https/jsr.io/3056f7672646bc615e2d6cd1010ef69cfed329768bbdbed2094fa9e8a8dd0d49.js new file mode 100644 index 0000000..3959804 --- /dev/null +++ b/vendor/gen/https/jsr.io/3056f7672646bc615e2d6cd1010ef69cfed329768bbdbed2094fa9e8a8dd0d49.js @@ -0,0 +1,71 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { assertPath } from "../_common/assert_path.ts"; +import { isPathSeparator } from "./_util.ts"; +import { normalize } from "./normalize.ts"; +/** + * Join all given a sequence of `paths`,then normalizes the resulting path. + * + * @example Usage + * ```ts + * import { join } from "@std/path/windows/join"; + * import { assertEquals } from "@std/assert"; + * + * const joined = join("C:\\foo", "bar", "baz\\.."); + * assertEquals(joined, "C:\\foo\\bar"); + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `join` from `@std/path/windows/unstable-join`. + * + * @param paths The paths to join. + * @returns The joined path. + */ export function join(...paths) { + paths.forEach((path)=>assertPath(path)); + paths = paths.filter((path)=>path.length > 0); + if (paths.length === 0) return "."; + // Make sure that the joined path doesn't start with two slashes, because + // normalize() will mistake it for an UNC path then. + // + // This step is skipped when it is very clear that the user actually + // intended to point at an UNC path. This is assumed when the first + // non-empty string arguments starts with exactly two slashes followed by + // at least one more non-slash character. + // + // Note that for normalize() to treat a path as an UNC path it needs to + // have at least 2 components, so we don't filter for that here. + // This means that the user can use join to construct UNC paths from + // a server name and a share name; for example: + // path.join('//server', 'share') -> '\\\\server\\share\\' + let needsReplace = true; + let slashCount = 0; + const firstPart = paths[0]; + if (isPathSeparator(firstPart.charCodeAt(0))) { + ++slashCount; + const firstLen = firstPart.length; + if (firstLen > 1) { + if (isPathSeparator(firstPart.charCodeAt(1))) { + ++slashCount; + if (firstLen > 2) { + if (isPathSeparator(firstPart.charCodeAt(2))) ++slashCount; + else { + // We matched a UNC path in the first part + needsReplace = false; + } + } + } + } + } + let joined = paths.join("\\"); + if (needsReplace) { + // Find any more consecutive slashes we need to replace + for(; slashCount < joined.length; ++slashCount){ + if (!isPathSeparator(joined.charCodeAt(slashCount))) break; + } + // Replace the slashes if needed + if (slashCount >= 2) joined = `\\${joined.slice(slashCount)}`; + } + return normalize(joined); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS93aW5kb3dzL2pvaW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgYXNzZXJ0UGF0aCB9IGZyb20gXCIuLi9fY29tbW9uL2Fzc2VydF9wYXRoLnRzXCI7XG5pbXBvcnQgeyBpc1BhdGhTZXBhcmF0b3IgfSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4vbm9ybWFsaXplLnRzXCI7XG5cbi8qKlxuICogSm9pbiBhbGwgZ2l2ZW4gYSBzZXF1ZW5jZSBvZiBgcGF0aHNgLHRoZW4gbm9ybWFsaXplcyB0aGUgcmVzdWx0aW5nIHBhdGguXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBqb2luIH0gZnJvbSBcIkBzdGQvcGF0aC93aW5kb3dzL2pvaW5cIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IGpvaW5lZCA9IGpvaW4oXCJDOlxcXFxmb29cIiwgXCJiYXJcIiwgXCJiYXpcXFxcLi5cIik7XG4gKiBhc3NlcnRFcXVhbHMoam9pbmVkLCBcIkM6XFxcXGZvb1xcXFxiYXJcIik7XG4gKiBgYGBcbiAqXG4gKiBOb3RlOiBJZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBmaWxlIFVSTHMsXG4gKiB1c2UgdGhlIG5ldyB2ZXJzaW9uIG9mIGBqb2luYCBmcm9tIGBAc3RkL3BhdGgvd2luZG93cy91bnN0YWJsZS1qb2luYC5cbiAqXG4gKiBAcGFyYW0gcGF0aHMgVGhlIHBhdGhzIHRvIGpvaW4uXG4gKiBAcmV0dXJucyBUaGUgam9pbmVkIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBqb2luKC4uLnBhdGhzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIHBhdGhzLmZvckVhY2goKHBhdGgpID0+IGFzc2VydFBhdGgocGF0aCkpO1xuICBwYXRocyA9IHBhdGhzLmZpbHRlcigocGF0aCkgPT4gcGF0aC5sZW5ndGggPiAwKTtcbiAgaWYgKHBhdGhzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFwiLlwiO1xuXG4gIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBqb2luZWQgcGF0aCBkb2Vzbid0IHN0YXJ0IHdpdGggdHdvIHNsYXNoZXMsIGJlY2F1c2VcbiAgLy8gbm9ybWFsaXplKCkgd2lsbCBtaXN0YWtlIGl0IGZvciBhbiBVTkMgcGF0aCB0aGVuLlxuICAvL1xuICAvLyBUaGlzIHN0ZXAgaXMgc2tpcHBlZCB3aGVuIGl0IGlzIHZlcnkgY2xlYXIgdGhhdCB0aGUgdXNlciBhY3R1YWxseVxuICAvLyBpbnRlbmRlZCB0byBwb2ludCBhdCBhbiBVTkMgcGF0aC4gVGhpcyBpcyBhc3N1bWVkIHdoZW4gdGhlIGZpcnN0XG4gIC8vIG5vbi1lbXB0eSBzdHJpbmcgYXJndW1lbnRzIHN0YXJ0cyB3aXRoIGV4YWN0bHkgdHdvIHNsYXNoZXMgZm9sbG93ZWQgYnlcbiAgLy8gYXQgbGVhc3Qgb25lIG1vcmUgbm9uLXNsYXNoIGNoYXJhY3Rlci5cbiAgLy9cbiAgLy8gTm90ZSB0aGF0IGZvciBub3JtYWxpemUoKSB0byB0cmVhdCBhIHBhdGggYXMgYW4gVU5DIHBhdGggaXQgbmVlZHMgdG9cbiAgLy8gaGF2ZSBhdCBsZWFzdCAyIGNvbXBvbmVudHMsIHNvIHdlIGRvbid0IGZpbHRlciBmb3IgdGhhdCBoZXJlLlxuICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhlIHVzZXIgY2FuIHVzZSBqb2luIHRvIGNvbnN0cnVjdCBVTkMgcGF0aHMgZnJvbVxuICAvLyBhIHNlcnZlciBuYW1lIGFuZCBhIHNoYXJlIG5hbWU7IGZvciBleGFtcGxlOlxuICAvLyAgIHBhdGguam9pbignLy9zZXJ2ZXInLCAnc2hhcmUnKSAtPiAnXFxcXFxcXFxzZXJ2ZXJcXFxcc2hhcmVcXFxcJ1xuICBsZXQgbmVlZHNSZXBsYWNlID0gdHJ1ZTtcbiAgbGV0IHNsYXNoQ291bnQgPSAwO1xuICBjb25zdCBmaXJzdFBhcnQgPSBwYXRoc1swXSE7XG4gIGlmIChpc1BhdGhTZXBhcmF0b3IoZmlyc3RQYXJ0LmNoYXJDb2RlQXQoMCkpKSB7XG4gICAgKytzbGFzaENvdW50O1xuICAgIGNvbnN0IGZpcnN0TGVuID0gZmlyc3RQYXJ0Lmxlbmd0aDtcbiAgICBpZiAoZmlyc3RMZW4gPiAxKSB7XG4gICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKGZpcnN0UGFydC5jaGFyQ29kZUF0KDEpKSkge1xuICAgICAgICArK3NsYXNoQ291bnQ7XG4gICAgICAgIGlmIChmaXJzdExlbiA+IDIpIHtcbiAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKGZpcnN0UGFydC5jaGFyQ29kZUF0KDIpKSkgKytzbGFzaENvdW50O1xuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gV2UgbWF0Y2hlZCBhIFVOQyBwYXRoIGluIHRoZSBmaXJzdCBwYXJ0XG4gICAgICAgICAgICBuZWVkc1JlcGxhY2UgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgbGV0IGpvaW5lZCA9IHBhdGhzLmpvaW4oXCJcXFxcXCIpO1xuICBpZiAobmVlZHNSZXBsYWNlKSB7XG4gICAgLy8gRmluZCBhbnkgbW9yZSBjb25zZWN1dGl2ZSBzbGFzaGVzIHdlIG5lZWQgdG8gcmVwbGFjZVxuICAgIGZvciAoOyBzbGFzaENvdW50IDwgam9pbmVkLmxlbmd0aDsgKytzbGFzaENvdW50KSB7XG4gICAgICBpZiAoIWlzUGF0aFNlcGFyYXRvcihqb2luZWQuY2hhckNvZGVBdChzbGFzaENvdW50KSkpIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFJlcGxhY2UgdGhlIHNsYXNoZXMgaWYgbmVlZGVkXG4gICAgaWYgKHNsYXNoQ291bnQgPj0gMikgam9pbmVkID0gYFxcXFwke2pvaW5lZC5zbGljZShzbGFzaENvdW50KX1gO1xuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZShqb2luZWQpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckMsU0FBUyxVQUFVLFFBQVEsNEJBQTRCO0FBQ3ZELFNBQVMsZUFBZSxRQUFRLGFBQWE7QUFDN0MsU0FBUyxTQUFTLFFBQVEsaUJBQWlCO0FBRTNDOzs7Ozs7Ozs7Ozs7Ozs7OztDQWlCQyxHQUNELE9BQU8sU0FBUyxLQUFLLEdBQUcsS0FBZTtFQUNyQyxNQUFNLE9BQU8sQ0FBQyxDQUFDLE9BQVMsV0FBVztFQUNuQyxRQUFRLE1BQU0sTUFBTSxDQUFDLENBQUMsT0FBUyxLQUFLLE1BQU0sR0FBRztFQUM3QyxJQUFJLE1BQU0sTUFBTSxLQUFLLEdBQUcsT0FBTztFQUUvQix5RUFBeUU7RUFDekUsb0RBQW9EO0VBQ3BELEVBQUU7RUFDRixvRUFBb0U7RUFDcEUsbUVBQW1FO0VBQ25FLHlFQUF5RTtFQUN6RSx5Q0FBeUM7RUFDekMsRUFBRTtFQUNGLHVFQUF1RTtFQUN2RSxnRUFBZ0U7RUFDaEUsb0VBQW9FO0VBQ3BFLCtDQUErQztFQUMvQyw0REFBNEQ7RUFDNUQsSUFBSSxlQUFlO0VBQ25CLElBQUksYUFBYTtFQUNqQixNQUFNLFlBQVksS0FBSyxDQUFDLEVBQUU7RUFDMUIsSUFBSSxnQkFBZ0IsVUFBVSxVQUFVLENBQUMsS0FBSztJQUM1QyxFQUFFO0lBQ0YsTUFBTSxXQUFXLFVBQVUsTUFBTTtJQUNqQyxJQUFJLFdBQVcsR0FBRztNQUNoQixJQUFJLGdCQUFnQixVQUFVLFVBQVUsQ0FBQyxLQUFLO1FBQzVDLEVBQUU7UUFDRixJQUFJLFdBQVcsR0FBRztVQUNoQixJQUFJLGdCQUFnQixVQUFVLFVBQVUsQ0FBQyxLQUFLLEVBQUU7ZUFDM0M7WUFDSCwwQ0FBMEM7WUFDMUMsZUFBZTtVQUNqQjtRQUNGO01BQ0Y7SUFDRjtFQUNGO0VBQ0EsSUFBSSxTQUFTLE1BQU0sSUFBSSxDQUFDO0VBQ3hCLElBQUksY0FBYztJQUNoQix1REFBdUQ7SUFDdkQsTUFBTyxhQUFhLE9BQU8sTUFBTSxFQUFFLEVBQUUsV0FBWTtNQUMvQyxJQUFJLENBQUMsZ0JBQWdCLE9BQU8sVUFBVSxDQUFDLGNBQWM7SUFDdkQ7SUFFQSxnQ0FBZ0M7SUFDaEMsSUFBSSxjQUFjLEdBQUcsU0FBUyxDQUFDLEVBQUUsRUFBRSxPQUFPLEtBQUssQ0FBQyxhQUFhO0VBQy9EO0VBRUEsT0FBTyxVQUFVO0FBQ25CIn0= +// denoCacheMetadata=1419923438344254522,7283987610311708934
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/308e8b732951c0b54bcba8346b862f82bb8c234b22cdcf5e791c54e6bee87859.js b/vendor/gen/https/jsr.io/308e8b732951c0b54bcba8346b862f82bb8c234b22cdcf5e791c54e6bee87859.js new file mode 100644 index 0000000..c4ddc1e --- /dev/null +++ b/vendor/gen/https/jsr.io/308e8b732951c0b54bcba8346b862f82bb8c234b22cdcf5e791c54e6bee87859.js @@ -0,0 +1,10 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { assertPath } from "./assert_path.ts"; +export function assertArgs(from, to) { + assertPath(from); + assertPath(to); + if (from === to) return ""; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9fY29tbW9uL3JlbGF0aXZlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGFzc2VydFBhdGggfSBmcm9tIFwiLi9hc3NlcnRfcGF0aC50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0QXJncyhmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcpIHtcbiAgYXNzZXJ0UGF0aChmcm9tKTtcbiAgYXNzZXJ0UGF0aCh0byk7XG4gIGlmIChmcm9tID09PSB0bykgcmV0dXJuIFwiXCI7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQyxTQUFTLFVBQVUsUUFBUSxtQkFBbUI7QUFFOUMsT0FBTyxTQUFTLFdBQVcsSUFBWSxFQUFFLEVBQVU7RUFDakQsV0FBVztFQUNYLFdBQVc7RUFDWCxJQUFJLFNBQVMsSUFBSSxPQUFPO0FBQzFCIn0= +// denoCacheMetadata=8247564021307104556,15914248069604603199
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/3117caa912daf7a12cb9b141ce914c3fc8d1dcd65c7de5f1fd0dc47c61358bf9.js b/vendor/gen/https/jsr.io/3117caa912daf7a12cb9b141ce914c3fc8d1dcd65c7de5f1fd0dc47c61358bf9.js new file mode 100644 index 0000000..2e17a2f --- /dev/null +++ b/vendor/gen/https/jsr.io/3117caa912daf7a12cb9b141ce914c3fc8d1dcd65c7de5f1fd0dc47c61358bf9.js @@ -0,0 +1,435 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * Command line arguments parser based on + * {@link https://github.com/minimistjs/minimist | minimist}. + * + * See {@linkcode parseArgs} for more information. + * + * @example Usage + * ```ts + * import { parseArgs } from "@std/cli/parse-args"; + * import { assertEquals } from "@std/assert/equals"; + * + * // For proper use, one should use `parseArgs(Deno.args)` + * assertEquals(parseArgs(["--foo", "--bar=baz", "./quux.txt"]), { + * foo: true, + * bar: "baz", + * _: ["./quux.txt"], + * }); + * ``` + * + * @example `string` and `boolean` options + * + * Use `string` and `boolean` options to specify the type of the argument. + * + * ```ts + * import { parseArgs } from "@std/cli/parse-args"; + * import { assertEquals } from "@std/assert/equals"; + * + * const args = parseArgs(["--foo", "--bar", "baz"], { + * boolean: ["foo"], + * string: ["bar"], + * }); + * + * assertEquals(args, { foo: true, bar: "baz", _: [] }); + * ``` + * + * @example `collect` option + * + * `collect` option tells the parser to treat the option as an array. All + * values will be collected into one array. If a non-collectable option is used + * multiple times, the last value is used. + * + * ```ts + * import { parseArgs } from "@std/cli/parse-args"; + * import { assertEquals } from "@std/assert/equals"; + * + * const args = parseArgs(["--foo", "bar", "--foo", "baz"], { + * collect: ["foo"], + * }); + * + * assertEquals(args, { foo: ["bar", "baz"], _: [] }); + * ``` + * + * @example `negatable` option + * + * `negatable` option tells the parser to treat the option can be negated by + * prefixing them with `--no-`, like `--no-config`. + * + * ```ts + * import { parseArgs } from "@std/cli/parse-args"; + * import { assertEquals } from "@std/assert/equals"; + * + * const args = parseArgs(["--no-foo"], { + * boolean: ["foo"], + * negatable: ["foo"], + * }); + * + * assertEquals(args, { foo: false, _: [] }); + * ``` + * + * @module + */ /** Combines recursively all intersection types and returns a new single type. + * @internal + */ const FLAG_REGEXP = /^(?:-(?:(?<doubleDash>-)(?<negated>no-)?)?)(?<key>.+?)(?:=(?<value>.+?))?$/s; +const LETTER_REGEXP = /[A-Za-z]/; +const NUMBER_REGEXP = /-?\d+(\.\d*)?(e-?\d+)?$/; +const HYPHEN_REGEXP = /^(-|--)[^-]/; +const VALUE_REGEXP = /=(?<value>.+)/; +const FLAG_NAME_REGEXP = /^--[^=]+$/; +const SPECIAL_CHAR_REGEXP = /\W/; +const NON_WHITESPACE_REGEXP = /\S/; +function isNumber(string) { + return NON_WHITESPACE_REGEXP.test(string) && Number.isFinite(Number(string)); +} +function setNested(object, keys, value, collect = false) { + keys = [ + ...keys + ]; + const key = keys.pop(); + keys.forEach((key)=>object = object[key] ??= {}); + if (collect) { + const v = object[key]; + if (Array.isArray(v)) { + v.push(value); + return; + } + value = v ? [ + v, + value + ] : [ + value + ]; + } + object[key] = value; +} +function hasNested(object, keys) { + for (const key of keys){ + const value = object[key]; + if (!Object.hasOwn(object, key)) return false; + object = value; + } + return true; +} +function aliasIsBoolean(aliasMap, booleanSet, key) { + const set = aliasMap.get(key); + if (set === undefined) return false; + for (const alias of set)if (booleanSet.has(alias)) return true; + return false; +} +function isBooleanString(value) { + return value === "true" || value === "false"; +} +function parseBooleanString(value) { + return value !== "false"; +} +/** + * Take a set of command line arguments, optionally with a set of options, and + * return an object representing the flags found in the passed arguments. + * + * By default, any arguments starting with `-` or `--` are considered boolean + * flags. If the argument name is followed by an equal sign (`=`) it is + * considered a key-value pair. Any arguments which could not be parsed are + * available in the `_` property of the returned object. + * + * By default, this module tries to determine the type of all arguments + * automatically and the return type of this function will have an index + * signature with `any` as value (`{ [x: string]: any }`). + * + * If the `string`, `boolean` or `collect` option is set, the return value of + * this function will be fully typed and the index signature of the return + * type will change to `{ [x: string]: unknown }`. + * + * Any arguments after `'--'` will not be parsed and will end up in `parsedArgs._`. + * + * Numeric-looking arguments will be returned as numbers unless `options.string` + * or `options.boolean` is set for that argument name. + * + * See {@linkcode ParseOptions} for more information. + * + * @param args An array of command line arguments. + * @param options Options for the parse function. + * + * @typeParam TArgs Type of result. + * @typeParam TDoubleDash Used by `TArgs` for the result. + * @typeParam TBooleans Used by `TArgs` for the result. + * @typeParam TStrings Used by `TArgs` for the result. + * @typeParam TCollectable Used by `TArgs` for the result. + * @typeParam TNegatable Used by `TArgs` for the result. + * @typeParam TDefaults Used by `TArgs` for the result. + * @typeParam TAliases Used by `TArgs` for the result. + * @typeParam TAliasArgNames Used by `TArgs` for the result. + * @typeParam TAliasNames Used by `TArgs` for the result. + * + * @return The parsed arguments. + * + * @example Usage + * ```ts + * import { parseArgs } from "@std/cli/parse-args"; + * import { assertEquals } from "@std/assert/equals"; + * + * // For proper use, one should use `parseArgs(Deno.args)` + * assertEquals(parseArgs(["--foo", "--bar=baz", "./quux.txt"]), { + * foo: true, + * bar: "baz", + * _: ["./quux.txt"], + * }); + * ``` + * + * @example `string` and `boolean` options + * + * Use `string` and `boolean` options to specify the type of the argument. + * + * ```ts + * import { parseArgs } from "@std/cli/parse-args"; + * import { assertEquals } from "@std/assert/equals"; + * + * const args = parseArgs(["--foo", "--bar", "baz"], { + * boolean: ["foo"], + * string: ["bar"], + * }); + * + * assertEquals(args, { foo: true, bar: "baz", _: [] }); + * ``` + * + * @example `collect` option + * + * `collect` option tells the parser to treat the option as an array. All + * values will be collected into one array. If a non-collectable option is used + * multiple times, the last value is used. + * + * ```ts + * import { parseArgs } from "@std/cli/parse-args"; + * import { assertEquals } from "@std/assert/equals"; + * + * const args = parseArgs(["--foo", "bar", "--foo", "baz"], { + * collect: ["foo"], + * }); + * + * assertEquals(args, { foo: ["bar", "baz"], _: [] }); + * ``` + * + * @example `negatable` option + * + * `negatable` option tells the parser to treat the option can be negated by + * prefixing them with `--no-`, like `--no-config`. + * + * ```ts + * import { parseArgs } from "@std/cli/parse-args"; + * import { assertEquals } from "@std/assert/equals"; + * + * const args = parseArgs(["--no-foo"], { + * boolean: ["foo"], + * negatable: ["foo"], + * }); + * + * assertEquals(args, { foo: false, _: [] }); + * ``` + */ export function parseArgs(args, options) { + const { "--": doubleDash = false, alias = {}, boolean = false, default: defaults = {}, stopEarly = false, string = [], collect = [], negatable = [], unknown: unknownFn = (i)=>i } = options ?? {}; + const aliasMap = new Map(); + const booleanSet = new Set(); + const stringSet = new Set(); + const collectSet = new Set(); + const negatableSet = new Set(); + let allBools = false; + if (alias) { + for (const [key, value] of Object.entries(alias)){ + if (value === undefined) { + throw new TypeError("Alias value must be defined"); + } + const aliases = Array.isArray(value) ? value : [ + value + ]; + aliasMap.set(key, new Set(aliases)); + aliases.forEach((alias)=>aliasMap.set(alias, new Set([ + key, + ...aliases.filter((it)=>it !== alias) + ]))); + } + } + if (boolean) { + if (typeof boolean === "boolean") { + allBools = boolean; + } else { + const booleanArgs = Array.isArray(boolean) ? boolean : [ + boolean + ]; + for (const key of booleanArgs.filter(Boolean)){ + booleanSet.add(key); + aliasMap.get(key)?.forEach((al)=>{ + booleanSet.add(al); + }); + } + } + } + if (string) { + const stringArgs = Array.isArray(string) ? string : [ + string + ]; + for (const key of stringArgs.filter(Boolean)){ + stringSet.add(key); + aliasMap.get(key)?.forEach((al)=>stringSet.add(al)); + } + } + if (collect) { + const collectArgs = Array.isArray(collect) ? collect : [ + collect + ]; + for (const key of collectArgs.filter(Boolean)){ + collectSet.add(key); + aliasMap.get(key)?.forEach((al)=>collectSet.add(al)); + } + } + if (negatable) { + const negatableArgs = Array.isArray(negatable) ? negatable : [ + negatable + ]; + for (const key of negatableArgs.filter(Boolean)){ + negatableSet.add(key); + aliasMap.get(key)?.forEach((alias)=>negatableSet.add(alias)); + } + } + const argv = { + _: [] + }; + function setArgument(key, value, arg, collect) { + if (!booleanSet.has(key) && !stringSet.has(key) && !aliasMap.has(key) && !(allBools && FLAG_NAME_REGEXP.test(arg)) && unknownFn?.(arg, key, value) === false) { + return; + } + if (typeof value === "string" && !stringSet.has(key)) { + value = isNumber(value) ? Number(value) : value; + } + const collectable = collect && collectSet.has(key); + setNested(argv, key.split("."), value, collectable); + aliasMap.get(key)?.forEach((key)=>{ + setNested(argv, key.split("."), value, collectable); + }); + } + let notFlags = []; + // all args after "--" are not parsed + const index = args.indexOf("--"); + if (index !== -1) { + notFlags = args.slice(index + 1); + args = args.slice(0, index); + } + argsLoop: for(let i = 0; i < args.length; i++){ + const arg = args[i]; + const groups = arg.match(FLAG_REGEXP)?.groups; + if (groups) { + const { doubleDash, negated } = groups; + let key = groups.key; + let value = groups.value; + if (doubleDash) { + if (value) { + if (booleanSet.has(key)) value = parseBooleanString(value); + setArgument(key, value, arg, true); + continue; + } + if (negated) { + if (negatableSet.has(key)) { + setArgument(key, false, arg, false); + continue; + } + key = `no-${key}`; + } + const next = args[i + 1]; + if (next) { + if (!booleanSet.has(key) && !allBools && !next.startsWith("-") && (!aliasMap.has(key) || !aliasIsBoolean(aliasMap, booleanSet, key))) { + value = next; + i++; + setArgument(key, value, arg, true); + continue; + } + if (isBooleanString(next)) { + value = parseBooleanString(next); + i++; + setArgument(key, value, arg, true); + continue; + } + } + value = stringSet.has(key) ? "" : true; + setArgument(key, value, arg, true); + continue; + } + const letters = arg.slice(1, -1).split(""); + for (const [j, letter] of letters.entries()){ + const next = arg.slice(j + 2); + if (next === "-") { + setArgument(letter, next, arg, true); + continue; + } + if (LETTER_REGEXP.test(letter)) { + const groups = VALUE_REGEXP.exec(next)?.groups; + if (groups) { + setArgument(letter, groups.value, arg, true); + continue argsLoop; + } + if (NUMBER_REGEXP.test(next)) { + setArgument(letter, next, arg, true); + continue argsLoop; + } + } + if (letters[j + 1]?.match(SPECIAL_CHAR_REGEXP)) { + setArgument(letter, arg.slice(j + 2), arg, true); + continue argsLoop; + } + setArgument(letter, stringSet.has(letter) ? "" : true, arg, true); + } + key = arg.slice(-1); + if (key === "-") continue; + const nextArg = args[i + 1]; + if (nextArg) { + if (!HYPHEN_REGEXP.test(nextArg) && !booleanSet.has(key) && (!aliasMap.has(key) || !aliasIsBoolean(aliasMap, booleanSet, key))) { + setArgument(key, nextArg, arg, true); + i++; + continue; + } + if (isBooleanString(nextArg)) { + const value = parseBooleanString(nextArg); + setArgument(key, value, arg, true); + i++; + continue; + } + } + setArgument(key, stringSet.has(key) ? "" : true, arg, true); + continue; + } + if (unknownFn?.(arg) !== false) { + argv._.push(stringSet.has("_") || !isNumber(arg) ? arg : Number(arg)); + } + if (stopEarly) { + argv._.push(...args.slice(i + 1)); + break; + } + } + for (const [key, value] of Object.entries(defaults)){ + const keys = key.split("."); + if (!hasNested(argv, keys)) { + setNested(argv, keys, value); + aliasMap.get(key)?.forEach((key)=>setNested(argv, key.split("."), value)); + } + } + for (const key of booleanSet.keys()){ + const keys = key.split("."); + if (!hasNested(argv, keys)) { + const value = collectSet.has(key) ? [] : false; + setNested(argv, keys, value); + } + } + for (const key of stringSet.keys()){ + const keys = key.split("."); + if (!hasNested(argv, keys) && collectSet.has(key)) { + setNested(argv, keys, []); + } + } + if (doubleDash) { + argv["--"] = notFlags; + } else { + argv._.push(...notFlags); + } + return argv; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvY2xpLzEuMC4xNy9wYXJzZV9hcmdzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbi8qKlxuICogQ29tbWFuZCBsaW5lIGFyZ3VtZW50cyBwYXJzZXIgYmFzZWQgb25cbiAqIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbWluaW1pc3Rqcy9taW5pbWlzdCB8IG1pbmltaXN0fS5cbiAqXG4gKiBTZWUge0BsaW5rY29kZSBwYXJzZUFyZ3N9IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgcGFyc2VBcmdzIH0gZnJvbSBcIkBzdGQvY2xpL3BhcnNlLWFyZ3NcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydC9lcXVhbHNcIjtcbiAqXG4gKiAvLyBGb3IgcHJvcGVyIHVzZSwgb25lIHNob3VsZCB1c2UgYHBhcnNlQXJncyhEZW5vLmFyZ3MpYFxuICogYXNzZXJ0RXF1YWxzKHBhcnNlQXJncyhbXCItLWZvb1wiLCBcIi0tYmFyPWJhelwiLCBcIi4vcXV1eC50eHRcIl0pLCB7XG4gKiAgIGZvbzogdHJ1ZSxcbiAqICAgYmFyOiBcImJhelwiLFxuICogICBfOiBbXCIuL3F1dXgudHh0XCJdLFxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBgc3RyaW5nYCBhbmQgYGJvb2xlYW5gIG9wdGlvbnNcbiAqXG4gKiBVc2UgYHN0cmluZ2AgYW5kIGBib29sZWFuYCBvcHRpb25zIHRvIHNwZWNpZnkgdGhlIHR5cGUgb2YgdGhlIGFyZ3VtZW50LlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBwYXJzZUFyZ3MgfSBmcm9tIFwiQHN0ZC9jbGkvcGFyc2UtYXJnc1wiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0L2VxdWFsc1wiO1xuICpcbiAqIGNvbnN0IGFyZ3MgPSBwYXJzZUFyZ3MoW1wiLS1mb29cIiwgXCItLWJhclwiLCBcImJhelwiXSwge1xuICogICBib29sZWFuOiBbXCJmb29cIl0sXG4gKiAgIHN0cmluZzogW1wiYmFyXCJdLFxuICogfSk7XG4gKlxuICogYXNzZXJ0RXF1YWxzKGFyZ3MsIHsgZm9vOiB0cnVlLCBiYXI6IFwiYmF6XCIsIF86IFtdIH0pO1xuICogYGBgXG4gKlxuICogQGV4YW1wbGUgYGNvbGxlY3RgIG9wdGlvblxuICpcbiAqIGBjb2xsZWN0YCBvcHRpb24gdGVsbHMgdGhlIHBhcnNlciB0byB0cmVhdCB0aGUgb3B0aW9uIGFzIGFuIGFycmF5LiBBbGxcbiAqIHZhbHVlcyB3aWxsIGJlIGNvbGxlY3RlZCBpbnRvIG9uZSBhcnJheS4gSWYgYSBub24tY29sbGVjdGFibGUgb3B0aW9uIGlzIHVzZWRcbiAqIG11bHRpcGxlIHRpbWVzLCB0aGUgbGFzdCB2YWx1ZSBpcyB1c2VkLlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBwYXJzZUFyZ3MgfSBmcm9tIFwiQHN0ZC9jbGkvcGFyc2UtYXJnc1wiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0L2VxdWFsc1wiO1xuICpcbiAqIGNvbnN0IGFyZ3MgPSBwYXJzZUFyZ3MoW1wiLS1mb29cIiwgXCJiYXJcIiwgXCItLWZvb1wiLCBcImJhelwiXSwge1xuICogIGNvbGxlY3Q6IFtcImZvb1wiXSxcbiAqIH0pO1xuICpcbiAqIGFzc2VydEVxdWFscyhhcmdzLCB7IGZvbzogW1wiYmFyXCIsIFwiYmF6XCJdLCBfOiBbXSB9KTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIGBuZWdhdGFibGVgIG9wdGlvblxuICpcbiAqIGBuZWdhdGFibGVgIG9wdGlvbiB0ZWxscyB0aGUgcGFyc2VyIHRvIHRyZWF0IHRoZSBvcHRpb24gY2FuIGJlIG5lZ2F0ZWQgYnlcbiAqIHByZWZpeGluZyB0aGVtIHdpdGggYC0tbm8tYCwgbGlrZSBgLS1uby1jb25maWdgLlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBwYXJzZUFyZ3MgfSBmcm9tIFwiQHN0ZC9jbGkvcGFyc2UtYXJnc1wiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0L2VxdWFsc1wiO1xuICpcbiAqIGNvbnN0IGFyZ3MgPSBwYXJzZUFyZ3MoW1wiLS1uby1mb29cIl0sIHtcbiAqICAgYm9vbGVhbjogW1wiZm9vXCJdLFxuICogICBuZWdhdGFibGU6IFtcImZvb1wiXSxcbiAqIH0pO1xuICpcbiAqIGFzc2VydEVxdWFscyhhcmdzLCB7IGZvbzogZmFsc2UsIF86IFtdIH0pO1xuICogYGBgXG4gKlxuICogQG1vZHVsZVxuICovXG5cbi8qKiBDb21iaW5lcyByZWN1cnNpdmVseSBhbGwgaW50ZXJzZWN0aW9uIHR5cGVzIGFuZCByZXR1cm5zIGEgbmV3IHNpbmdsZSB0eXBlLlxuICogQGludGVybmFsXG4gKi9cbnR5cGUgSWQ8VFJlY29yZD4gPSBUUmVjb3JkIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgPyBUUmVjb3JkIGV4dGVuZHMgaW5mZXIgSW5mZXJyZWRSZWNvcmRcbiAgICA/IHsgW0tleSBpbiBrZXlvZiBJbmZlcnJlZFJlY29yZF06IElkPEluZmVycmVkUmVjb3JkW0tleV0+IH1cbiAgOiBuZXZlclxuICA6IFRSZWNvcmQ7XG5cbi8qKiBDb252ZXJ0cyBhIHVuaW9uIHR5cGUgYEEgfCBCIHwgQ2AgaW50byBhbiBpbnRlcnNlY3Rpb24gdHlwZSBgQSAmIEIgJiBDYC5cbiAqIEBpbnRlcm5hbFxuICovXG50eXBlIFVuaW9uVG9JbnRlcnNlY3Rpb248VFZhbHVlPiA9XG4gIChUVmFsdWUgZXh0ZW5kcyB1bmtub3duID8gKGFyZ3M6IFRWYWx1ZSkgPT4gdW5rbm93biA6IG5ldmVyKSBleHRlbmRzXG4gICAgKGFyZ3M6IGluZmVyIFIpID0+IHVua25vd24gPyBSIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPyBSIDogbmV2ZXJcbiAgICA6IG5ldmVyO1xuXG4vKiogQGludGVybmFsICovXG50eXBlIEJvb2xlYW5UeXBlID0gYm9vbGVhbiB8IHN0cmluZyB8IHVuZGVmaW5lZDtcbi8qKiBAaW50ZXJuYWwgKi9cbnR5cGUgU3RyaW5nVHlwZSA9IHN0cmluZyB8IHVuZGVmaW5lZDtcbi8qKiBAaW50ZXJuYWwgKi9cbnR5cGUgQXJnVHlwZSA9IFN0cmluZ1R5cGUgfCBCb29sZWFuVHlwZTtcblxuLyoqIEBpbnRlcm5hbCAqL1xudHlwZSBDb2xsZWN0YWJsZSA9IHN0cmluZyB8IHVuZGVmaW5lZDtcbi8qKiBAaW50ZXJuYWwgKi9cbnR5cGUgTmVnYXRhYmxlID0gc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG50eXBlIFVzZVR5cGVzPFxuICBUQm9vbGVhbnMgZXh0ZW5kcyBCb29sZWFuVHlwZSxcbiAgVFN0cmluZ3MgZXh0ZW5kcyBTdHJpbmdUeXBlLFxuICBUQ29sbGVjdGFibGUgZXh0ZW5kcyBDb2xsZWN0YWJsZSxcbj4gPSB1bmRlZmluZWQgZXh0ZW5kcyAoXG4gICYgKGZhbHNlIGV4dGVuZHMgVEJvb2xlYW5zID8gdW5kZWZpbmVkIDogVEJvb2xlYW5zKVxuICAmIFRDb2xsZWN0YWJsZVxuICAmIFRTdHJpbmdzXG4pID8gZmFsc2VcbiAgOiB0cnVlO1xuXG4vKipcbiAqIENyZWF0ZXMgYSByZWNvcmQgd2l0aCBhbGwgYXZhaWxhYmxlIGZsYWdzIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgdHlwZSBhbmRcbiAqIGRlZmF1bHQgdHlwZS5cbiAqIEBpbnRlcm5hbFxuICovXG50eXBlIFZhbHVlczxcbiAgVEJvb2xlYW5zIGV4dGVuZHMgQm9vbGVhblR5cGUsXG4gIFRTdHJpbmdzIGV4dGVuZHMgU3RyaW5nVHlwZSxcbiAgVENvbGxlY3RhYmxlIGV4dGVuZHMgQ29sbGVjdGFibGUsXG4gIFROZWdhdGFibGUgZXh0ZW5kcyBOZWdhdGFibGUsXG4gIFREZWZhdWx0IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQsXG4gIFRBbGlhc2VzIGV4dGVuZHMgQWxpYXNlcyB8IHVuZGVmaW5lZCxcbj4gPSBVc2VUeXBlczxUQm9vbGVhbnMsIFRTdHJpbmdzLCBUQ29sbGVjdGFibGU+IGV4dGVuZHMgdHJ1ZSA/XG4gICAgJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICYgQWRkQWxpYXNlczxcbiAgICAgIFNwcmVhZERlZmF1bHRzPFxuICAgICAgICAmIENvbGxlY3RWYWx1ZXM8VFN0cmluZ3MsIHN0cmluZywgVENvbGxlY3RhYmxlLCBUTmVnYXRhYmxlPlxuICAgICAgICAmIFJlY3Vyc2l2ZVJlcXVpcmVkPENvbGxlY3RWYWx1ZXM8VEJvb2xlYW5zLCBib29sZWFuLCBUQ29sbGVjdGFibGU+PlxuICAgICAgICAmIENvbGxlY3RVbmtub3duVmFsdWVzPFxuICAgICAgICAgIFRCb29sZWFucyxcbiAgICAgICAgICBUU3RyaW5ncyxcbiAgICAgICAgICBUQ29sbGVjdGFibGUsXG4gICAgICAgICAgVE5lZ2F0YWJsZVxuICAgICAgICA+LFxuICAgICAgICBEZWRvdFJlY29yZDxURGVmYXVsdD5cbiAgICAgID4sXG4gICAgICBUQWxpYXNlc1xuICAgID5cbiAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4vKiogQGludGVybmFsICovXG50eXBlIEFsaWFzZXM8VEFyZ05hbWVzID0gc3RyaW5nLCBUQWxpYXNOYW1lcyBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4gPSBQYXJ0aWFsPFxuICBSZWNvcmQ8RXh0cmFjdDxUQXJnTmFtZXMsIHN0cmluZz4sIFRBbGlhc05hbWVzIHwgUmVhZG9ubHlBcnJheTxUQWxpYXNOYW1lcz4+XG4+O1xuXG50eXBlIEFkZEFsaWFzZXM8XG4gIFRBcmdzLFxuICBUQWxpYXNlcyBleHRlbmRzIEFsaWFzZXMgfCB1bmRlZmluZWQsXG4+ID0ge1xuICBbVEFyZ05hbWUgaW4ga2V5b2YgVEFyZ3MgYXMgQWxpYXNOYW1lczxUQXJnTmFtZSwgVEFsaWFzZXM+XTogVEFyZ3NbVEFyZ05hbWVdO1xufTtcblxudHlwZSBBbGlhc05hbWVzPFxuICBUQXJnTmFtZSxcbiAgVEFsaWFzZXMgZXh0ZW5kcyBBbGlhc2VzIHwgdW5kZWZpbmVkLFxuPiA9IFRBcmdOYW1lIGV4dGVuZHMga2V5b2YgVEFsaWFzZXNcbiAgPyBzdHJpbmcgZXh0ZW5kcyBUQWxpYXNlc1tUQXJnTmFtZV0gPyBUQXJnTmFtZVxuICA6IFRBbGlhc2VzW1RBcmdOYW1lXSBleHRlbmRzIHN0cmluZyA/IFRBcmdOYW1lIHwgVEFsaWFzZXNbVEFyZ05hbWVdXG4gIDogVEFsaWFzZXNbVEFyZ05hbWVdIGV4dGVuZHMgQXJyYXk8c3RyaW5nPlxuICAgID8gVEFyZ05hbWUgfCBUQWxpYXNlc1tUQXJnTmFtZV1bbnVtYmVyXVxuICA6IFRBcmdOYW1lXG4gIDogVEFyZ05hbWU7XG5cbi8qKlxuICogU3ByZWFkcyBhbGwgZGVmYXVsdCB2YWx1ZXMgb2YgUmVjb3JkIGBURGVmYXVsdHNgIGludG8gUmVjb3JkIGBUQXJnc2BcbiAqIGFuZCBtYWtlcyBkZWZhdWx0IHZhbHVlcyByZXF1aXJlZC5cbiAqXG4gKiAqKkV4YW1wbGU6KipcbiAqIGBTcHJlYWRWYWx1ZXM8eyBmb28/OiBib29sZWFuLCBiYXI/OiBudW1iZXIgfSwgeyBmb286IG51bWJlciB9PmBcbiAqXG4gKiAqKlJlc3VsdDoqKiBgeyBmb286IGJvb2xlYW4gfCBudW1iZXIsIGJhcj86IG51bWJlciB9YFxuICovXG50eXBlIFNwcmVhZERlZmF1bHRzPFRBcmdzLCBURGVmYXVsdHM+ID0gVERlZmF1bHRzIGV4dGVuZHMgdW5kZWZpbmVkID8gVEFyZ3NcbiAgOiBUQXJncyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID9cbiAgICAgICYgT21pdDxUQXJncywga2V5b2YgVERlZmF1bHRzPlxuICAgICAgJiB7XG4gICAgICAgIFtEZWZhdWx0IGluIGtleW9mIFREZWZhdWx0c106IERlZmF1bHQgZXh0ZW5kcyBrZXlvZiBUQXJnc1xuICAgICAgICAgID8gKFRBcmdzW0RlZmF1bHRdICYgVERlZmF1bHRzW0RlZmF1bHRdIHwgVERlZmF1bHRzW0RlZmF1bHRdKSBleHRlbmRzXG4gICAgICAgICAgICBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgICAgICAgPyBOb25OdWxsYWJsZTxTcHJlYWREZWZhdWx0czxUQXJnc1tEZWZhdWx0XSwgVERlZmF1bHRzW0RlZmF1bHRdPj5cbiAgICAgICAgICA6IFREZWZhdWx0c1tEZWZhdWx0XSB8IE5vbk51bGxhYmxlPFRBcmdzW0RlZmF1bHRdPlxuICAgICAgICAgIDogdW5rbm93bjtcbiAgICAgIH1cbiAgOiBuZXZlcjtcblxuLyoqXG4gKiBEZWZpbmVzIHRoZSBSZWNvcmQgZm9yIHRoZSBgZGVmYXVsdGAgb3B0aW9uIHRvIGFkZFxuICogYXV0by1zdWdnZXN0aW9uIHN1cHBvcnQgZm9yIElERSdzLlxuICogQGludGVybmFsXG4gKi9cbnR5cGUgRGVmYXVsdHM8VEJvb2xlYW5zIGV4dGVuZHMgQm9vbGVhblR5cGUsIFRTdHJpbmdzIGV4dGVuZHMgU3RyaW5nVHlwZT4gPSBJZDxcbiAgVW5pb25Ub0ludGVyc2VjdGlvbjxcbiAgICAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgLy8gRGVkb3R0ZWQgYXV0byBzdWdnZXN0aW9uczogeyBmb286IHsgYmFyOiB1bmtub3duIH0gfVxuICAgICYgTWFwVHlwZXM8VFN0cmluZ3MsIHVua25vd24+XG4gICAgJiBNYXBUeXBlczxUQm9vbGVhbnMsIHVua25vd24+XG4gICAgLy8gRmxhdCBhdXRvIHN1Z2dlc3Rpb25zOiB7IFwiZm9vLmJhclwiOiB1bmtub3duIH1cbiAgICAmIE1hcERlZmF1bHRzPFRCb29sZWFucz5cbiAgICAmIE1hcERlZmF1bHRzPFRTdHJpbmdzPlxuICA+XG4+O1xuXG50eXBlIE1hcERlZmF1bHRzPFRBcmdOYW1lcyBleHRlbmRzIEFyZ1R5cGU+ID0gUGFydGlhbDxcbiAgUmVjb3JkPFRBcmdOYW1lcyBleHRlbmRzIHN0cmluZyA/IFRBcmdOYW1lcyA6IHN0cmluZywgdW5rbm93bj5cbj47XG5cbnR5cGUgUmVjdXJzaXZlUmVxdWlyZWQ8VFJlY29yZD4gPSBUUmVjb3JkIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPyB7XG4gICAgW0tleSBpbiBrZXlvZiBUUmVjb3JkXS0/OiBSZWN1cnNpdmVSZXF1aXJlZDxUUmVjb3JkW0tleV0+O1xuICB9XG4gIDogVFJlY29yZDtcblxuLyoqIFNhbWUgYXMgYE1hcFR5cGVzYCBidXQgYWxzbyBzdXBwb3J0cyBjb2xsZWN0YWJsZSBvcHRpb25zLiAqL1xudHlwZSBDb2xsZWN0VmFsdWVzPFxuICBUQXJnTmFtZXMgZXh0ZW5kcyBBcmdUeXBlLFxuICBUVHlwZSxcbiAgVENvbGxlY3RhYmxlIGV4dGVuZHMgQ29sbGVjdGFibGUsXG4gIFROZWdhdGFibGUgZXh0ZW5kcyBOZWdhdGFibGUgPSB1bmRlZmluZWQsXG4+ID0gVW5pb25Ub0ludGVyc2VjdGlvbjxcbiAgRXh0cmFjdDxUQXJnTmFtZXMsIFRDb2xsZWN0YWJsZT4gZXh0ZW5kcyBzdHJpbmcgP1xuICAgICAgJiAoRXhjbHVkZTxUQXJnTmFtZXMsIFRDb2xsZWN0YWJsZT4gZXh0ZW5kcyBuZXZlciA/IFJlY29yZDxuZXZlciwgbmV2ZXI+XG4gICAgICAgIDogTWFwVHlwZXM8RXhjbHVkZTxUQXJnTmFtZXMsIFRDb2xsZWN0YWJsZT4sIFRUeXBlLCBUTmVnYXRhYmxlPilcbiAgICAgICYgKEV4dHJhY3Q8VEFyZ05hbWVzLCBUQ29sbGVjdGFibGU+IGV4dGVuZHMgbmV2ZXIgPyBSZWNvcmQ8bmV2ZXIsIG5ldmVyPlxuICAgICAgICA6IFJlY3Vyc2l2ZVJlcXVpcmVkPFxuICAgICAgICAgIE1hcFR5cGVzPEV4dHJhY3Q8VEFyZ05hbWVzLCBUQ29sbGVjdGFibGU+LCBBcnJheTxUVHlwZT4sIFROZWdhdGFibGU+XG4gICAgICAgID4pXG4gICAgOiBNYXBUeXBlczxUQXJnTmFtZXMsIFRUeXBlLCBUTmVnYXRhYmxlPlxuPjtcblxuLyoqIFNhbWUgYXMgYFJlY29yZGAgYnV0IGFsc28gc3VwcG9ydHMgZG90dGVkIGFuZCBuZWdhdGFibGUgb3B0aW9ucy4gKi9cbnR5cGUgTWFwVHlwZXM8XG4gIFRBcmdOYW1lcyBleHRlbmRzIEFyZ1R5cGUsXG4gIFRUeXBlLFxuICBUTmVnYXRhYmxlIGV4dGVuZHMgTmVnYXRhYmxlID0gdW5kZWZpbmVkLFxuPiA9IHVuZGVmaW5lZCBleHRlbmRzIFRBcmdOYW1lcyA/IFJlY29yZDxuZXZlciwgbmV2ZXI+XG4gIDogVEFyZ05hbWVzIGV4dGVuZHMgYCR7aW5mZXIgTmFtZX0uJHtpbmZlciBSZXN0fWAgPyB7XG4gICAgICBbS2V5IGluIE5hbWVdPzogTWFwVHlwZXM8XG4gICAgICAgIFJlc3QsXG4gICAgICAgIFRUeXBlLFxuICAgICAgICBUTmVnYXRhYmxlIGV4dGVuZHMgYCR7TmFtZX0uJHtpbmZlciBOZWdhdGV9YCA/IE5lZ2F0ZSA6IHVuZGVmaW5lZFxuICAgICAgPjtcbiAgICB9XG4gIDogVEFyZ05hbWVzIGV4dGVuZHMgc3RyaW5nID8gUGFydGlhbDxcbiAgICAgIFJlY29yZDxUQXJnTmFtZXMsIFROZWdhdGFibGUgZXh0ZW5kcyBUQXJnTmFtZXMgPyBUVHlwZSB8IGZhbHNlIDogVFR5cGU+XG4gICAgPlxuICA6IFJlY29yZDxuZXZlciwgbmV2ZXI+O1xuXG50eXBlIENvbGxlY3RVbmtub3duVmFsdWVzPFxuICBUQm9vbGVhbnMgZXh0ZW5kcyBCb29sZWFuVHlwZSxcbiAgVFN0cmluZ3MgZXh0ZW5kcyBTdHJpbmdUeXBlLFxuICBUQ29sbGVjdGFibGUgZXh0ZW5kcyBDb2xsZWN0YWJsZSxcbiAgVE5lZ2F0YWJsZSBleHRlbmRzIE5lZ2F0YWJsZSxcbj4gPSBVbmlvblRvSW50ZXJzZWN0aW9uPFxuICBUQ29sbGVjdGFibGUgZXh0ZW5kcyBUQm9vbGVhbnMgJiBUU3RyaW5ncyA/IFJlY29yZDxuZXZlciwgbmV2ZXI+XG4gICAgOiBEZWRvdFJlY29yZDxcbiAgICAgIC8vIFVua25vd24gY29sbGVjdGFibGUgJiBub24tbmVnYXRhYmxlIGFyZ3MuXG4gICAgICAmIFJlY29yZDxcbiAgICAgICAgRXhjbHVkZTxcbiAgICAgICAgICBFeHRyYWN0PEV4Y2x1ZGU8VENvbGxlY3RhYmxlLCBUTmVnYXRhYmxlPiwgc3RyaW5nPixcbiAgICAgICAgICBFeHRyYWN0PFRTdHJpbmdzIHwgVEJvb2xlYW5zLCBzdHJpbmc+XG4gICAgICAgID4sXG4gICAgICAgIEFycmF5PHVua25vd24+XG4gICAgICA+XG4gICAgICAvLyBVbmtub3duIGNvbGxlY3RhYmxlICYgbmVnYXRhYmxlIGFyZ3MuXG4gICAgICAmIFJlY29yZDxcbiAgICAgICAgRXhjbHVkZTxcbiAgICAgICAgICBFeHRyYWN0PEV4dHJhY3Q8VENvbGxlY3RhYmxlLCBUTmVnYXRhYmxlPiwgc3RyaW5nPixcbiAgICAgICAgICBFeHRyYWN0PFRTdHJpbmdzIHwgVEJvb2xlYW5zLCBzdHJpbmc+XG4gICAgICAgID4sXG4gICAgICAgIEFycmF5PHVua25vd24+IHwgZmFsc2VcbiAgICAgID5cbiAgICA+XG4+O1xuXG4vKiogQ29udmVydHMgYHsgXCJmb28uYmFyLmJhelwiOiB1bmtub3duIH1gIGludG8gYHsgZm9vOiB7IGJhcjogeyBiYXo6IHVua25vd24gfSB9IH1gLiAqL1xudHlwZSBEZWRvdFJlY29yZDxUUmVjb3JkPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+IGV4dGVuZHMgVFJlY29yZCA/IFRSZWNvcmRcbiAgOiBUUmVjb3JkIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPyBVbmlvblRvSW50ZXJzZWN0aW9uPFxuICAgICAgVmFsdWVPZjxcbiAgICAgICAge1xuICAgICAgICAgIFtLZXkgaW4ga2V5b2YgVFJlY29yZF06IEtleSBleHRlbmRzIHN0cmluZyA/IERlZG90PEtleSwgVFJlY29yZFtLZXldPlxuICAgICAgICAgICAgOiBuZXZlcjtcbiAgICAgICAgfVxuICAgICAgPlxuICAgID5cbiAgOiBUUmVjb3JkO1xuXG50eXBlIERlZG90PFRLZXkgZXh0ZW5kcyBzdHJpbmcsIFRWYWx1ZT4gPSBUS2V5IGV4dGVuZHNcbiAgYCR7aW5mZXIgTmFtZX0uJHtpbmZlciBSZXN0fWAgPyB7IFtLZXkgaW4gTmFtZV06IERlZG90PFJlc3QsIFRWYWx1ZT4gfVxuICA6IHsgW0tleSBpbiBUS2V5XTogVFZhbHVlIH07XG5cbnR5cGUgVmFsdWVPZjxUVmFsdWU+ID0gVFZhbHVlW2tleW9mIFRWYWx1ZV07XG5cbi8qKiBUaGUgdmFsdWUgcmV0dXJuZWQgZnJvbSB7QGxpbmtjb2RlIHBhcnNlQXJnc30uICovXG5leHBvcnQgdHlwZSBBcmdzPFxuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuICBUQXJncyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgYW55PixcbiAgVERvdWJsZURhc2ggZXh0ZW5kcyBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuPiA9IElkPFxuICAmIFRBcmdzXG4gICYge1xuICAgIC8qKiBDb250YWlucyBhbGwgdGhlIGFyZ3VtZW50cyB0aGF0IGRpZG4ndCBoYXZlIGFuIG9wdGlvbiBhc3NvY2lhdGVkIHdpdGhcbiAgICAgKiB0aGVtLiAqL1xuICAgIF86IEFycmF5PHN0cmluZyB8IG51bWJlcj47XG4gIH1cbiAgJiAoYm9vbGVhbiBleHRlbmRzIFREb3VibGVEYXNoID8gRG91YmxlRGFzaFxuICAgIDogdHJ1ZSBleHRlbmRzIFREb3VibGVEYXNoID8gUmVxdWlyZWQ8RG91YmxlRGFzaD5cbiAgICA6IFJlY29yZDxuZXZlciwgbmV2ZXI+KVxuPjtcblxuLyoqIEBpbnRlcm5hbCAqL1xudHlwZSBEb3VibGVEYXNoID0ge1xuICAvKiogQ29udGFpbnMgYWxsIHRoZSBhcmd1bWVudHMgdGhhdCBhcHBlYXIgYWZ0ZXIgdGhlIGRvdWJsZSBkYXNoOiBcIi0tXCIuICovXG4gIFwiLS1cIj86IEFycmF5PHN0cmluZz47XG59O1xuXG4vKiogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBwYXJzZUFyZ3N9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJzZU9wdGlvbnM8XG4gIFRCb29sZWFucyBleHRlbmRzIEJvb2xlYW5UeXBlID0gQm9vbGVhblR5cGUsXG4gIFRTdHJpbmdzIGV4dGVuZHMgU3RyaW5nVHlwZSA9IFN0cmluZ1R5cGUsXG4gIFRDb2xsZWN0YWJsZSBleHRlbmRzIENvbGxlY3RhYmxlID0gQ29sbGVjdGFibGUsXG4gIFROZWdhdGFibGUgZXh0ZW5kcyBOZWdhdGFibGUgPSBOZWdhdGFibGUsXG4gIFREZWZhdWx0IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQgPVxuICAgIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICB8IHVuZGVmaW5lZCxcbiAgVEFsaWFzZXMgZXh0ZW5kcyBBbGlhc2VzIHwgdW5kZWZpbmVkID0gQWxpYXNlcyB8IHVuZGVmaW5lZCxcbiAgVERvdWJsZURhc2ggZXh0ZW5kcyBib29sZWFuIHwgdW5kZWZpbmVkID0gYm9vbGVhbiB8IHVuZGVmaW5lZCxcbj4ge1xuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAsIHBvcHVsYXRlIHRoZSByZXN1bHQgYF9gIHdpdGggZXZlcnl0aGluZyBiZWZvcmUgdGhlIGAtLWAgYW5kXG4gICAqIHRoZSByZXN1bHQgYFsnLS0nXWAgd2l0aCBldmVyeXRoaW5nIGFmdGVyIHRoZSBgLS1gLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7ZmFsc2V9XG4gICAqXG4gICAqIEBleGFtcGxlIERvdWJsZSBkYXNoIG9wdGlvbiBpcyBmYWxzZVxuICAgKiBgYGB0c1xuICAgKiAvLyAkIGRlbm8gcnVuIGV4YW1wbGUudHMgLS0gYSBhcmcxXG4gICAqIGltcG9ydCB7IHBhcnNlQXJncyB9IGZyb20gXCJAc3RkL2NsaS9wYXJzZS1hcmdzXCI7XG4gICAqIGNvbnN0IGFyZ3MgPSBwYXJzZUFyZ3MoRGVuby5hcmdzLCB7IFwiLS1cIjogZmFsc2UgfSk7IC8vIGFyZ3MgZXF1YWxzIHsgXzogWyBcImFcIiwgXCJhcmcxXCIgXSB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBAZXhhbXBsZSBEb3VibGUgZGFzaCBvcHRpb24gaXMgdHJ1ZVxuICAgKiBgYGB0c1xuICAgKiAvLyAkIGRlbm8gcnVuIGV4YW1wbGUudHMgLS0gYSBhcmcxXG4gICAqIGltcG9ydCB7IHBhcnNlQXJncyB9IGZyb20gXCJAc3RkL2NsaS9wYXJzZS1hcmdzXCI7XG4gICAqIGNvbnN0IGFyZ3MgPSBwYXJzZUFyZ3MoRGVuby5hcmdzLCB7IFwiLS1cIjogdHJ1ZSB9KTsgLy8gYXJncyBlcXVhbHMgeyBfOiBbXSwgLS06IFsgXCJhXCIsIFwiYXJnMVwiIF0gfVxuICAgKiBgYGBcbiAgICovXG4gIFwiLS1cIj86IFREb3VibGVEYXNoO1xuXG4gIC8qKlxuICAgKiBBbiBvYmplY3QgbWFwcGluZyBzdHJpbmcgbmFtZXMgdG8gc3RyaW5ncyBvciBhcnJheXMgb2Ygc3RyaW5nIGFyZ3VtZW50XG4gICAqIG5hbWVzIHRvIHVzZSBhcyBhbGlhc2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7e319XG4gICAqL1xuICBhbGlhcz86IFRBbGlhc2VzO1xuXG4gIC8qKlxuICAgKiBBIGJvb2xlYW4sIHN0cmluZyBvciBhcnJheSBvZiBzdHJpbmdzIHRvIGFsd2F5cyB0cmVhdCBhcyBib29sZWFucy4gSWZcbiAgICogYHRydWVgIHdpbGwgdHJlYXQgYWxsIGRvdWJsZSBoeXBoZW5hdGVkIGFyZ3VtZW50cyB3aXRob3V0IGVxdWFsIHNpZ25zIGFzXG4gICAqIGBib29sZWFuYCAoZS5nLiBhZmZlY3RzIGAtLWZvb2AsIG5vdCBgLWZgIG9yIGAtLWZvbz1iYXJgKS5cbiAgICogIEFsbCBgYm9vbGVhbmAgYXJndW1lbnRzIHdpbGwgYmUgc2V0IHRvIGBmYWxzZWAgYnkgZGVmYXVsdC5cbiAgICpcbiAgICogQGRlZmF1bHQge2ZhbHNlfVxuICAgKi9cbiAgYm9vbGVhbj86IFRCb29sZWFucyB8IFJlYWRvbmx5QXJyYXk8RXh0cmFjdDxUQm9vbGVhbnMsIHN0cmluZz4+O1xuXG4gIC8qKlxuICAgKiBBbiBvYmplY3QgbWFwcGluZyBzdHJpbmcgYXJndW1lbnQgbmFtZXMgdG8gZGVmYXVsdCB2YWx1ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHt7fX1cbiAgICovXG4gIGRlZmF1bHQ/OiBURGVmYXVsdCAmIERlZmF1bHRzPFRCb29sZWFucywgVFN0cmluZ3M+O1xuXG4gIC8qKlxuICAgKiBXaGVuIGB0cnVlYCwgcG9wdWxhdGUgdGhlIHJlc3VsdCBgX2Agd2l0aCBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaXJzdFxuICAgKiBub24tb3B0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7ZmFsc2V9XG4gICAqL1xuICBzdG9wRWFybHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyBvciBhcnJheSBvZiBzdHJpbmdzIGFyZ3VtZW50IG5hbWVzIHRvIGFsd2F5cyB0cmVhdCBhcyBzdHJpbmdzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7W119XG4gICAqL1xuICBzdHJpbmc/OiBUU3RyaW5ncyB8IFJlYWRvbmx5QXJyYXk8RXh0cmFjdDxUU3RyaW5ncywgc3RyaW5nPj47XG5cbiAgLyoqXG4gICAqIEEgc3RyaW5nIG9yIGFycmF5IG9mIHN0cmluZ3MgYXJndW1lbnQgbmFtZXMgdG8gYWx3YXlzIHRyZWF0IGFzIGFycmF5cy5cbiAgICogQ29sbGVjdGFibGUgb3B0aW9ucyBjYW4gYmUgdXNlZCBtdWx0aXBsZSB0aW1lcy4gQWxsIHZhbHVlcyB3aWxsIGJlXG4gICAqIGNvbGxlY3RlZCBpbnRvIG9uZSBhcnJheS4gSWYgYSBub24tY29sbGVjdGFibGUgb3B0aW9uIGlzIHVzZWQgbXVsdGlwbGVcbiAgICogdGltZXMsIHRoZSBsYXN0IHZhbHVlIGlzIHVzZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtbXX1cbiAgICovXG4gIGNvbGxlY3Q/OiBUQ29sbGVjdGFibGUgfCBSZWFkb25seUFycmF5PEV4dHJhY3Q8VENvbGxlY3RhYmxlLCBzdHJpbmc+PjtcblxuICAvKipcbiAgICogQSBzdHJpbmcgb3IgYXJyYXkgb2Ygc3RyaW5ncyBhcmd1bWVudCBuYW1lcyB3aGljaCBjYW4gYmUgbmVnYXRlZFxuICAgKiBieSBwcmVmaXhpbmcgdGhlbSB3aXRoIGAtLW5vLWAsIGxpa2UgYC0tbm8tY29uZmlnYC5cbiAgICpcbiAgICogQGRlZmF1bHQge1tdfVxuICAgKi9cbiAgbmVnYXRhYmxlPzogVE5lZ2F0YWJsZSB8IFJlYWRvbmx5QXJyYXk8RXh0cmFjdDxUTmVnYXRhYmxlLCBzdHJpbmc+PjtcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB3aGljaCBpcyBpbnZva2VkIHdpdGggYSBjb21tYW5kIGxpbmUgcGFyYW1ldGVyIG5vdCBkZWZpbmVkIGluXG4gICAqIHRoZSBgb3B0aW9uc2AgY29uZmlndXJhdGlvbiBvYmplY3QuIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGBmYWxzZWAsIHRoZVxuICAgKiB1bmtub3duIG9wdGlvbiBpcyBub3QgYWRkZWQgdG8gYHBhcnNlZEFyZ3NgLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7dW5rbm93bn1cbiAgICovXG4gIHVua25vd24/OiAoYXJnOiBzdHJpbmcsIGtleT86IHN0cmluZywgdmFsdWU/OiB1bmtub3duKSA9PiB1bmtub3duO1xufVxuXG5pbnRlcmZhY2UgTmVzdGVkTWFwcGluZyB7XG4gIFtrZXk6IHN0cmluZ106IE5lc3RlZE1hcHBpbmcgfCB1bmtub3duO1xufVxuXG5jb25zdCBGTEFHX1JFR0VYUCA9XG4gIC9eKD86LSg/Oig/PGRvdWJsZURhc2g+LSkoPzxuZWdhdGVkPm5vLSk/KT8pKD88a2V5Pi4rPykoPzo9KD88dmFsdWU+Lis/KSk/JC9zO1xuY29uc3QgTEVUVEVSX1JFR0VYUCA9IC9bQS1aYS16XS87XG5jb25zdCBOVU1CRVJfUkVHRVhQID0gLy0/XFxkKyhcXC5cXGQqKT8oZS0/XFxkKyk/JC87XG5jb25zdCBIWVBIRU5fUkVHRVhQID0gL14oLXwtLSlbXi1dLztcbmNvbnN0IFZBTFVFX1JFR0VYUCA9IC89KD88dmFsdWU+LispLztcbmNvbnN0IEZMQUdfTkFNRV9SRUdFWFAgPSAvXi0tW149XSskLztcbmNvbnN0IFNQRUNJQUxfQ0hBUl9SRUdFWFAgPSAvXFxXLztcblxuY29uc3QgTk9OX1dISVRFU1BBQ0VfUkVHRVhQID0gL1xcUy87XG5cbmZ1bmN0aW9uIGlzTnVtYmVyKHN0cmluZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBOT05fV0hJVEVTUEFDRV9SRUdFWFAudGVzdChzdHJpbmcpICYmIE51bWJlci5pc0Zpbml0ZShOdW1iZXIoc3RyaW5nKSk7XG59XG5cbmZ1bmN0aW9uIHNldE5lc3RlZChcbiAgb2JqZWN0OiBOZXN0ZWRNYXBwaW5nLFxuICBrZXlzOiBzdHJpbmdbXSxcbiAgdmFsdWU6IHVua25vd24sXG4gIGNvbGxlY3QgPSBmYWxzZSxcbikge1xuICBrZXlzID0gWy4uLmtleXNdO1xuICBjb25zdCBrZXkgPSBrZXlzLnBvcCgpITtcblxuICBrZXlzLmZvckVhY2goKGtleSkgPT4gb2JqZWN0ID0gKG9iamVjdFtrZXldID8/PSB7fSkgYXMgTmVzdGVkTWFwcGluZyk7XG5cbiAgaWYgKGNvbGxlY3QpIHtcbiAgICBjb25zdCB2ID0gb2JqZWN0W2tleV07XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICAgIHYucHVzaCh2YWx1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFsdWUgPSB2ID8gW3YsIHZhbHVlXSA6IFt2YWx1ZV07XG4gIH1cblxuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBoYXNOZXN0ZWQob2JqZWN0OiBOZXN0ZWRNYXBwaW5nLCBrZXlzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgY29uc3QgdmFsdWUgPSBvYmplY3Rba2V5XTtcbiAgICBpZiAoIU9iamVjdC5oYXNPd24ob2JqZWN0LCBrZXkpKSByZXR1cm4gZmFsc2U7XG4gICAgb2JqZWN0ID0gdmFsdWUgYXMgTmVzdGVkTWFwcGluZztcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gYWxpYXNJc0Jvb2xlYW4oXG4gIGFsaWFzTWFwOiBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4sXG4gIGJvb2xlYW5TZXQ6IFNldDxzdHJpbmc+LFxuICBrZXk6IHN0cmluZyxcbik6IGJvb2xlYW4ge1xuICBjb25zdCBzZXQgPSBhbGlhc01hcC5nZXQoa2V5KTtcbiAgaWYgKHNldCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XG4gIGZvciAoY29uc3QgYWxpYXMgb2Ygc2V0KSBpZiAoYm9vbGVhblNldC5oYXMoYWxpYXMpKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpc0Jvb2xlYW5TdHJpbmcodmFsdWU6IHN0cmluZykge1xuICByZXR1cm4gdmFsdWUgPT09IFwidHJ1ZVwiIHx8IHZhbHVlID09PSBcImZhbHNlXCI7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQm9vbGVhblN0cmluZyh2YWx1ZTogdW5rbm93bikge1xuICByZXR1cm4gdmFsdWUgIT09IFwiZmFsc2VcIjtcbn1cblxuLyoqXG4gKiBUYWtlIGEgc2V0IG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHMsIG9wdGlvbmFsbHkgd2l0aCBhIHNldCBvZiBvcHRpb25zLCBhbmRcbiAqIHJldHVybiBhbiBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBmbGFncyBmb3VuZCBpbiB0aGUgcGFzc2VkIGFyZ3VtZW50cy5cbiAqXG4gKiBCeSBkZWZhdWx0LCBhbnkgYXJndW1lbnRzIHN0YXJ0aW5nIHdpdGggYC1gIG9yIGAtLWAgYXJlIGNvbnNpZGVyZWQgYm9vbGVhblxuICogZmxhZ3MuIElmIHRoZSBhcmd1bWVudCBuYW1lIGlzIGZvbGxvd2VkIGJ5IGFuIGVxdWFsIHNpZ24gKGA9YCkgaXQgaXNcbiAqIGNvbnNpZGVyZWQgYSBrZXktdmFsdWUgcGFpci4gQW55IGFyZ3VtZW50cyB3aGljaCBjb3VsZCBub3QgYmUgcGFyc2VkIGFyZVxuICogYXZhaWxhYmxlIGluIHRoZSBgX2AgcHJvcGVydHkgb2YgdGhlIHJldHVybmVkIG9iamVjdC5cbiAqXG4gKiBCeSBkZWZhdWx0LCB0aGlzIG1vZHVsZSB0cmllcyB0byBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgYWxsIGFyZ3VtZW50c1xuICogYXV0b21hdGljYWxseSBhbmQgdGhlIHJldHVybiB0eXBlIG9mIHRoaXMgZnVuY3Rpb24gd2lsbCBoYXZlIGFuIGluZGV4XG4gKiBzaWduYXR1cmUgd2l0aCBgYW55YCBhcyB2YWx1ZSAoYHsgW3g6IHN0cmluZ106IGFueSB9YCkuXG4gKlxuICogSWYgdGhlIGBzdHJpbmdgLCBgYm9vbGVhbmAgb3IgYGNvbGxlY3RgIG9wdGlvbiBpcyBzZXQsIHRoZSByZXR1cm4gdmFsdWUgb2ZcbiAqIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBmdWxseSB0eXBlZCBhbmQgdGhlIGluZGV4IHNpZ25hdHVyZSBvZiB0aGUgcmV0dXJuXG4gKiB0eXBlIHdpbGwgY2hhbmdlIHRvIGB7IFt4OiBzdHJpbmddOiB1bmtub3duIH1gLlxuICpcbiAqIEFueSBhcmd1bWVudHMgYWZ0ZXIgYCctLSdgIHdpbGwgbm90IGJlIHBhcnNlZCBhbmQgd2lsbCBlbmQgdXAgaW4gYHBhcnNlZEFyZ3MuX2AuXG4gKlxuICogTnVtZXJpYy1sb29raW5nIGFyZ3VtZW50cyB3aWxsIGJlIHJldHVybmVkIGFzIG51bWJlcnMgdW5sZXNzIGBvcHRpb25zLnN0cmluZ2BcbiAqIG9yIGBvcHRpb25zLmJvb2xlYW5gIGlzIHNldCBmb3IgdGhhdCBhcmd1bWVudCBuYW1lLlxuICpcbiAqIFNlZSB7QGxpbmtjb2RlIFBhcnNlT3B0aW9uc30gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQHBhcmFtIGFyZ3MgQW4gYXJyYXkgb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy5cbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIHRoZSBwYXJzZSBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFRBcmdzIFR5cGUgb2YgcmVzdWx0LlxuICogQHR5cGVQYXJhbSBURG91YmxlRGFzaCBVc2VkIGJ5IGBUQXJnc2AgZm9yIHRoZSByZXN1bHQuXG4gKiBAdHlwZVBhcmFtIFRCb29sZWFucyBVc2VkIGJ5IGBUQXJnc2AgZm9yIHRoZSByZXN1bHQuXG4gKiBAdHlwZVBhcmFtIFRTdHJpbmdzIFVzZWQgYnkgYFRBcmdzYCBmb3IgdGhlIHJlc3VsdC5cbiAqIEB0eXBlUGFyYW0gVENvbGxlY3RhYmxlIFVzZWQgYnkgYFRBcmdzYCBmb3IgdGhlIHJlc3VsdC5cbiAqIEB0eXBlUGFyYW0gVE5lZ2F0YWJsZSBVc2VkIGJ5IGBUQXJnc2AgZm9yIHRoZSByZXN1bHQuXG4gKiBAdHlwZVBhcmFtIFREZWZhdWx0cyBVc2VkIGJ5IGBUQXJnc2AgZm9yIHRoZSByZXN1bHQuXG4gKiBAdHlwZVBhcmFtIFRBbGlhc2VzIFVzZWQgYnkgYFRBcmdzYCBmb3IgdGhlIHJlc3VsdC5cbiAqIEB0eXBlUGFyYW0gVEFsaWFzQXJnTmFtZXMgVXNlZCBieSBgVEFyZ3NgIGZvciB0aGUgcmVzdWx0LlxuICogQHR5cGVQYXJhbSBUQWxpYXNOYW1lcyBVc2VkIGJ5IGBUQXJnc2AgZm9yIHRoZSByZXN1bHQuXG4gKlxuICogQHJldHVybiBUaGUgcGFyc2VkIGFyZ3VtZW50cy5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHBhcnNlQXJncyB9IGZyb20gXCJAc3RkL2NsaS9wYXJzZS1hcmdzXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnQvZXF1YWxzXCI7XG4gKlxuICogLy8gRm9yIHByb3BlciB1c2UsIG9uZSBzaG91bGQgdXNlIGBwYXJzZUFyZ3MoRGVuby5hcmdzKWBcbiAqIGFzc2VydEVxdWFscyhwYXJzZUFyZ3MoW1wiLS1mb29cIiwgXCItLWJhcj1iYXpcIiwgXCIuL3F1dXgudHh0XCJdKSwge1xuICogICBmb286IHRydWUsXG4gKiAgIGJhcjogXCJiYXpcIixcbiAqICAgXzogW1wiLi9xdXV4LnR4dFwiXSxcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQGV4YW1wbGUgYHN0cmluZ2AgYW5kIGBib29sZWFuYCBvcHRpb25zXG4gKlxuICogVXNlIGBzdHJpbmdgIGFuZCBgYm9vbGVhbmAgb3B0aW9ucyB0byBzcGVjaWZ5IHRoZSB0eXBlIG9mIHRoZSBhcmd1bWVudC5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgcGFyc2VBcmdzIH0gZnJvbSBcIkBzdGQvY2xpL3BhcnNlLWFyZ3NcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydC9lcXVhbHNcIjtcbiAqXG4gKiBjb25zdCBhcmdzID0gcGFyc2VBcmdzKFtcIi0tZm9vXCIsIFwiLS1iYXJcIiwgXCJiYXpcIl0sIHtcbiAqICAgYm9vbGVhbjogW1wiZm9vXCJdLFxuICogICBzdHJpbmc6IFtcImJhclwiXSxcbiAqIH0pO1xuICpcbiAqIGFzc2VydEVxdWFscyhhcmdzLCB7IGZvbzogdHJ1ZSwgYmFyOiBcImJhelwiLCBfOiBbXSB9KTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIGBjb2xsZWN0YCBvcHRpb25cbiAqXG4gKiBgY29sbGVjdGAgb3B0aW9uIHRlbGxzIHRoZSBwYXJzZXIgdG8gdHJlYXQgdGhlIG9wdGlvbiBhcyBhbiBhcnJheS4gQWxsXG4gKiB2YWx1ZXMgd2lsbCBiZSBjb2xsZWN0ZWQgaW50byBvbmUgYXJyYXkuIElmIGEgbm9uLWNvbGxlY3RhYmxlIG9wdGlvbiBpcyB1c2VkXG4gKiBtdWx0aXBsZSB0aW1lcywgdGhlIGxhc3QgdmFsdWUgaXMgdXNlZC5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgcGFyc2VBcmdzIH0gZnJvbSBcIkBzdGQvY2xpL3BhcnNlLWFyZ3NcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydC9lcXVhbHNcIjtcbiAqXG4gKiBjb25zdCBhcmdzID0gcGFyc2VBcmdzKFtcIi0tZm9vXCIsIFwiYmFyXCIsIFwiLS1mb29cIiwgXCJiYXpcIl0sIHtcbiAqICBjb2xsZWN0OiBbXCJmb29cIl0sXG4gKiB9KTtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoYXJncywgeyBmb286IFtcImJhclwiLCBcImJhelwiXSwgXzogW10gfSk7XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBgbmVnYXRhYmxlYCBvcHRpb25cbiAqXG4gKiBgbmVnYXRhYmxlYCBvcHRpb24gdGVsbHMgdGhlIHBhcnNlciB0byB0cmVhdCB0aGUgb3B0aW9uIGNhbiBiZSBuZWdhdGVkIGJ5XG4gKiBwcmVmaXhpbmcgdGhlbSB3aXRoIGAtLW5vLWAsIGxpa2UgYC0tbm8tY29uZmlnYC5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgcGFyc2VBcmdzIH0gZnJvbSBcIkBzdGQvY2xpL3BhcnNlLWFyZ3NcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydC9lcXVhbHNcIjtcbiAqXG4gKiBjb25zdCBhcmdzID0gcGFyc2VBcmdzKFtcIi0tbm8tZm9vXCJdLCB7XG4gKiAgIGJvb2xlYW46IFtcImZvb1wiXSxcbiAqICAgbmVnYXRhYmxlOiBbXCJmb29cIl0sXG4gKiB9KTtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoYXJncywgeyBmb286IGZhbHNlLCBfOiBbXSB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VBcmdzPFxuICBUQXJncyBleHRlbmRzIFZhbHVlczxcbiAgICBUQm9vbGVhbnMsXG4gICAgVFN0cmluZ3MsXG4gICAgVENvbGxlY3RhYmxlLFxuICAgIFROZWdhdGFibGUsXG4gICAgVERlZmF1bHRzLFxuICAgIFRBbGlhc2VzXG4gID4sXG4gIFREb3VibGVEYXNoIGV4dGVuZHMgYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgVEJvb2xlYW5zIGV4dGVuZHMgQm9vbGVhblR5cGUgPSB1bmRlZmluZWQsXG4gIFRTdHJpbmdzIGV4dGVuZHMgU3RyaW5nVHlwZSA9IHVuZGVmaW5lZCxcbiAgVENvbGxlY3RhYmxlIGV4dGVuZHMgQ29sbGVjdGFibGUgPSB1bmRlZmluZWQsXG4gIFROZWdhdGFibGUgZXh0ZW5kcyBOZWdhdGFibGUgPSB1bmRlZmluZWQsXG4gIFREZWZhdWx0cyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICBUQWxpYXNlcyBleHRlbmRzIEFsaWFzZXM8VEFsaWFzQXJnTmFtZXMsIFRBbGlhc05hbWVzPiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgVEFsaWFzQXJnTmFtZXMgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXG4gIFRBbGlhc05hbWVzIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLFxuPihcbiAgYXJnczogc3RyaW5nW10sXG4gIG9wdGlvbnM/OiBQYXJzZU9wdGlvbnM8XG4gICAgVEJvb2xlYW5zLFxuICAgIFRTdHJpbmdzLFxuICAgIFRDb2xsZWN0YWJsZSxcbiAgICBUTmVnYXRhYmxlLFxuICAgIFREZWZhdWx0cyxcbiAgICBUQWxpYXNlcyxcbiAgICBURG91YmxlRGFzaFxuICA+LFxuKTogQXJnczxUQXJncywgVERvdWJsZURhc2g+IHtcbiAgY29uc3Qge1xuICAgIFwiLS1cIjogZG91YmxlRGFzaCA9IGZhbHNlLFxuICAgIGFsaWFzID0ge30gYXMgTm9uTnVsbGFibGU8VEFsaWFzZXM+LFxuICAgIGJvb2xlYW4gPSBmYWxzZSxcbiAgICBkZWZhdWx0OiBkZWZhdWx0cyA9IHt9IGFzIFREZWZhdWx0cyAmIERlZmF1bHRzPFRCb29sZWFucywgVFN0cmluZ3M+LFxuICAgIHN0b3BFYXJseSA9IGZhbHNlLFxuICAgIHN0cmluZyA9IFtdLFxuICAgIGNvbGxlY3QgPSBbXSxcbiAgICBuZWdhdGFibGUgPSBbXSxcbiAgICB1bmtub3duOiB1bmtub3duRm4gPSAoaTogc3RyaW5nKTogdW5rbm93biA9PiBpLFxuICB9ID0gb3B0aW9ucyA/PyB7fTtcbiAgY29uc3QgYWxpYXNNYXA6IE1hcDxzdHJpbmcsIFNldDxzdHJpbmc+PiA9IG5ldyBNYXAoKTtcbiAgY29uc3QgYm9vbGVhblNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBzdHJpbmdTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3QgY29sbGVjdFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBuZWdhdGFibGVTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICBsZXQgYWxsQm9vbHMgPSBmYWxzZTtcblxuICBpZiAoYWxpYXMpIHtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhhbGlhcykpIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJBbGlhcyB2YWx1ZSBtdXN0IGJlIGRlZmluZWRcIik7XG4gICAgICB9XG4gICAgICBjb25zdCBhbGlhc2VzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgICBhbGlhc01hcC5zZXQoa2V5LCBuZXcgU2V0KGFsaWFzZXMpKTtcbiAgICAgIGFsaWFzZXMuZm9yRWFjaCgoYWxpYXMpID0+XG4gICAgICAgIGFsaWFzTWFwLnNldChcbiAgICAgICAgICBhbGlhcyxcbiAgICAgICAgICBuZXcgU2V0KFtrZXksIC4uLmFsaWFzZXMuZmlsdGVyKChpdCkgPT4gaXQgIT09IGFsaWFzKV0pLFxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChib29sZWFuKSB7XG4gICAgaWYgKHR5cGVvZiBib29sZWFuID09PSBcImJvb2xlYW5cIikge1xuICAgICAgYWxsQm9vbHMgPSBib29sZWFuO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBib29sZWFuQXJncyA9IEFycmF5LmlzQXJyYXkoYm9vbGVhbikgPyBib29sZWFuIDogW2Jvb2xlYW5dO1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgYm9vbGVhbkFyZ3MuZmlsdGVyKEJvb2xlYW4pKSB7XG4gICAgICAgIGJvb2xlYW5TZXQuYWRkKGtleSk7XG4gICAgICAgIGFsaWFzTWFwLmdldChrZXkpPy5mb3JFYWNoKChhbCkgPT4ge1xuICAgICAgICAgIGJvb2xlYW5TZXQuYWRkKGFsKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0cmluZykge1xuICAgIGNvbnN0IHN0cmluZ0FyZ3MgPSBBcnJheS5pc0FycmF5KHN0cmluZykgPyBzdHJpbmcgOiBbc3RyaW5nXTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBzdHJpbmdBcmdzLmZpbHRlcihCb29sZWFuKSkge1xuICAgICAgc3RyaW5nU2V0LmFkZChrZXkpO1xuICAgICAgYWxpYXNNYXAuZ2V0KGtleSk/LmZvckVhY2goKGFsKSA9PiBzdHJpbmdTZXQuYWRkKGFsKSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGNvbGxlY3QpIHtcbiAgICBjb25zdCBjb2xsZWN0QXJncyA9IEFycmF5LmlzQXJyYXkoY29sbGVjdCkgPyBjb2xsZWN0IDogW2NvbGxlY3RdO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGNvbGxlY3RBcmdzLmZpbHRlcihCb29sZWFuKSkge1xuICAgICAgY29sbGVjdFNldC5hZGQoa2V5KTtcbiAgICAgIGFsaWFzTWFwLmdldChrZXkpPy5mb3JFYWNoKChhbCkgPT4gY29sbGVjdFNldC5hZGQoYWwpKTtcbiAgICB9XG4gIH1cblxuICBpZiAobmVnYXRhYmxlKSB7XG4gICAgY29uc3QgbmVnYXRhYmxlQXJncyA9IEFycmF5LmlzQXJyYXkobmVnYXRhYmxlKSA/IG5lZ2F0YWJsZSA6IFtuZWdhdGFibGVdO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIG5lZ2F0YWJsZUFyZ3MuZmlsdGVyKEJvb2xlYW4pKSB7XG4gICAgICBuZWdhdGFibGVTZXQuYWRkKGtleSk7XG4gICAgICBhbGlhc01hcC5nZXQoa2V5KT8uZm9yRWFjaCgoYWxpYXMpID0+IG5lZ2F0YWJsZVNldC5hZGQoYWxpYXMpKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBhcmd2OiBBcmdzID0geyBfOiBbXSB9O1xuXG4gIGZ1bmN0aW9uIHNldEFyZ3VtZW50KFxuICAgIGtleTogc3RyaW5nLFxuICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuLFxuICAgIGFyZzogc3RyaW5nLFxuICAgIGNvbGxlY3Q6IGJvb2xlYW4sXG4gICkge1xuICAgIGlmIChcbiAgICAgICFib29sZWFuU2V0LmhhcyhrZXkpICYmXG4gICAgICAhc3RyaW5nU2V0LmhhcyhrZXkpICYmXG4gICAgICAhYWxpYXNNYXAuaGFzKGtleSkgJiZcbiAgICAgICEoYWxsQm9vbHMgJiYgRkxBR19OQU1FX1JFR0VYUC50ZXN0KGFyZykpICYmXG4gICAgICB1bmtub3duRm4/LihhcmcsIGtleSwgdmFsdWUpID09PSBmYWxzZVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgIXN0cmluZ1NldC5oYXMoa2V5KSkge1xuICAgICAgdmFsdWUgPSBpc051bWJlcih2YWx1ZSkgPyBOdW1iZXIodmFsdWUpIDogdmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3QgY29sbGVjdGFibGUgPSBjb2xsZWN0ICYmIGNvbGxlY3RTZXQuaGFzKGtleSk7XG4gICAgc2V0TmVzdGVkKGFyZ3YsIGtleS5zcGxpdChcIi5cIiksIHZhbHVlLCBjb2xsZWN0YWJsZSk7XG4gICAgYWxpYXNNYXAuZ2V0KGtleSk/LmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgc2V0TmVzdGVkKGFyZ3YsIGtleS5zcGxpdChcIi5cIiksIHZhbHVlLCBjb2xsZWN0YWJsZSk7XG4gICAgfSk7XG4gIH1cblxuICBsZXQgbm90RmxhZ3M6IHN0cmluZ1tdID0gW107XG5cbiAgLy8gYWxsIGFyZ3MgYWZ0ZXIgXCItLVwiIGFyZSBub3QgcGFyc2VkXG4gIGNvbnN0IGluZGV4ID0gYXJncy5pbmRleE9mKFwiLS1cIik7XG4gIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICBub3RGbGFncyA9IGFyZ3Muc2xpY2UoaW5kZXggKyAxKTtcbiAgICBhcmdzID0gYXJncy5zbGljZSgwLCBpbmRleCk7XG4gIH1cblxuICBhcmdzTG9vcDpcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgYXJnID0gYXJnc1tpXSE7XG5cbiAgICBjb25zdCBncm91cHMgPSBhcmcubWF0Y2goRkxBR19SRUdFWFApPy5ncm91cHM7XG5cbiAgICBpZiAoZ3JvdXBzKSB7XG4gICAgICBjb25zdCB7IGRvdWJsZURhc2gsIG5lZ2F0ZWQgfSA9IGdyb3VwcztcbiAgICAgIGxldCBrZXkgPSBncm91cHMua2V5ITtcbiAgICAgIGxldCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGdyb3Vwcy52YWx1ZTtcblxuICAgICAgaWYgKGRvdWJsZURhc2gpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKGJvb2xlYW5TZXQuaGFzKGtleSkpIHZhbHVlID0gcGFyc2VCb29sZWFuU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICBzZXRBcmd1bWVudChrZXksIHZhbHVlLCBhcmcsIHRydWUpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5lZ2F0ZWQpIHtcbiAgICAgICAgICBpZiAobmVnYXRhYmxlU2V0LmhhcyhrZXkpKSB7XG4gICAgICAgICAgICBzZXRBcmd1bWVudChrZXksIGZhbHNlLCBhcmcsIGZhbHNlKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBrZXkgPSBgbm8tJHtrZXl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5leHQgPSBhcmdzW2kgKyAxXTtcblxuICAgICAgICBpZiAobmV4dCkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICFib29sZWFuU2V0LmhhcyhrZXkpICYmXG4gICAgICAgICAgICAhYWxsQm9vbHMgJiZcbiAgICAgICAgICAgICFuZXh0LnN0YXJ0c1dpdGgoXCItXCIpICYmXG4gICAgICAgICAgICAoIWFsaWFzTWFwLmhhcyhrZXkpIHx8ICFhbGlhc0lzQm9vbGVhbihhbGlhc01hcCwgYm9vbGVhblNldCwga2V5KSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHZhbHVlID0gbmV4dDtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIHNldEFyZ3VtZW50KGtleSwgdmFsdWUsIGFyZywgdHJ1ZSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaXNCb29sZWFuU3RyaW5nKG5leHQpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHBhcnNlQm9vbGVhblN0cmluZyhuZXh0KTtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIHNldEFyZ3VtZW50KGtleSwgdmFsdWUsIGFyZywgdHJ1ZSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YWx1ZSA9IHN0cmluZ1NldC5oYXMoa2V5KSA/IFwiXCIgOiB0cnVlO1xuICAgICAgICBzZXRBcmd1bWVudChrZXksIHZhbHVlLCBhcmcsIHRydWUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxldHRlcnMgPSBhcmcuc2xpY2UoMSwgLTEpLnNwbGl0KFwiXCIpO1xuXG4gICAgICBmb3IgKGNvbnN0IFtqLCBsZXR0ZXJdIG9mIGxldHRlcnMuZW50cmllcygpKSB7XG4gICAgICAgIGNvbnN0IG5leHQgPSBhcmcuc2xpY2UoaiArIDIpO1xuXG4gICAgICAgIGlmIChuZXh0ID09PSBcIi1cIikge1xuICAgICAgICAgIHNldEFyZ3VtZW50KGxldHRlciwgbmV4dCwgYXJnLCB0cnVlKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChMRVRURVJfUkVHRVhQLnRlc3QobGV0dGVyKSkge1xuICAgICAgICAgIGNvbnN0IGdyb3VwcyA9IFZBTFVFX1JFR0VYUC5leGVjKG5leHQpPy5ncm91cHM7XG4gICAgICAgICAgaWYgKGdyb3Vwcykge1xuICAgICAgICAgICAgc2V0QXJndW1lbnQobGV0dGVyLCBncm91cHMudmFsdWUhLCBhcmcsIHRydWUpO1xuICAgICAgICAgICAgY29udGludWUgYXJnc0xvb3A7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChOVU1CRVJfUkVHRVhQLnRlc3QobmV4dCkpIHtcbiAgICAgICAgICAgIHNldEFyZ3VtZW50KGxldHRlciwgbmV4dCwgYXJnLCB0cnVlKTtcbiAgICAgICAgICAgIGNvbnRpbnVlIGFyZ3NMb29wO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsZXR0ZXJzW2ogKyAxXT8ubWF0Y2goU1BFQ0lBTF9DSEFSX1JFR0VYUCkpIHtcbiAgICAgICAgICBzZXRBcmd1bWVudChsZXR0ZXIsIGFyZy5zbGljZShqICsgMiksIGFyZywgdHJ1ZSk7XG4gICAgICAgICAgY29udGludWUgYXJnc0xvb3A7XG4gICAgICAgIH1cbiAgICAgICAgc2V0QXJndW1lbnQobGV0dGVyLCBzdHJpbmdTZXQuaGFzKGxldHRlcikgPyBcIlwiIDogdHJ1ZSwgYXJnLCB0cnVlKTtcbiAgICAgIH1cblxuICAgICAga2V5ID0gYXJnLnNsaWNlKC0xKTtcbiAgICAgIGlmIChrZXkgPT09IFwiLVwiKSBjb250aW51ZTtcblxuICAgICAgY29uc3QgbmV4dEFyZyA9IGFyZ3NbaSArIDFdO1xuXG4gICAgICBpZiAobmV4dEFyZykge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIUhZUEhFTl9SRUdFWFAudGVzdChuZXh0QXJnKSAmJlxuICAgICAgICAgICFib29sZWFuU2V0LmhhcyhrZXkpICYmXG4gICAgICAgICAgKCFhbGlhc01hcC5oYXMoa2V5KSB8fCAhYWxpYXNJc0Jvb2xlYW4oYWxpYXNNYXAsIGJvb2xlYW5TZXQsIGtleSkpXG4gICAgICAgICkge1xuICAgICAgICAgIHNldEFyZ3VtZW50KGtleSwgbmV4dEFyZywgYXJnLCB0cnVlKTtcbiAgICAgICAgICBpKys7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQm9vbGVhblN0cmluZyhuZXh0QXJnKSkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFyc2VCb29sZWFuU3RyaW5nKG5leHRBcmcpO1xuICAgICAgICAgIHNldEFyZ3VtZW50KGtleSwgdmFsdWUsIGFyZywgdHJ1ZSk7XG4gICAgICAgICAgaSsrO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzZXRBcmd1bWVudChrZXksIHN0cmluZ1NldC5oYXMoa2V5KSA/IFwiXCIgOiB0cnVlLCBhcmcsIHRydWUpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHVua25vd25Gbj8uKGFyZykgIT09IGZhbHNlKSB7XG4gICAgICBhcmd2Ll8ucHVzaChcbiAgICAgICAgc3RyaW5nU2V0LmhhcyhcIl9cIikgfHwgIWlzTnVtYmVyKGFyZykgPyBhcmcgOiBOdW1iZXIoYXJnKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHN0b3BFYXJseSkge1xuICAgICAgYXJndi5fLnB1c2goLi4uYXJncy5zbGljZShpICsgMSkpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZGVmYXVsdHMpKSB7XG4gICAgY29uc3Qga2V5cyA9IGtleS5zcGxpdChcIi5cIik7XG4gICAgaWYgKCFoYXNOZXN0ZWQoYXJndiwga2V5cykpIHtcbiAgICAgIHNldE5lc3RlZChhcmd2LCBrZXlzLCB2YWx1ZSk7XG4gICAgICBhbGlhc01hcC5nZXQoa2V5KT8uZm9yRWFjaCgoa2V5KSA9PlxuICAgICAgICBzZXROZXN0ZWQoYXJndiwga2V5LnNwbGl0KFwiLlwiKSwgdmFsdWUpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3Qga2V5IG9mIGJvb2xlYW5TZXQua2V5cygpKSB7XG4gICAgY29uc3Qga2V5cyA9IGtleS5zcGxpdChcIi5cIik7XG4gICAgaWYgKCFoYXNOZXN0ZWQoYXJndiwga2V5cykpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gY29sbGVjdFNldC5oYXMoa2V5KSA/IFtdIDogZmFsc2U7XG4gICAgICBzZXROZXN0ZWQoYXJndiwga2V5cywgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3Qga2V5IG9mIHN0cmluZ1NldC5rZXlzKCkpIHtcbiAgICBjb25zdCBrZXlzID0ga2V5LnNwbGl0KFwiLlwiKTtcbiAgICBpZiAoIWhhc05lc3RlZChhcmd2LCBrZXlzKSAmJiBjb2xsZWN0U2V0LmhhcyhrZXkpKSB7XG4gICAgICBzZXROZXN0ZWQoYXJndiwga2V5cywgW10pO1xuICAgIH1cbiAgfVxuXG4gIGlmIChkb3VibGVEYXNoKSB7XG4gICAgYXJndltcIi0tXCJdID0gbm90RmxhZ3M7XG4gIH0gZWxzZSB7XG4gICAgYXJndi5fLnB1c2goLi4ubm90RmxhZ3MpO1xuICB9XG5cbiAgcmV0dXJuIGFyZ3YgYXMgQXJnczxUQXJncywgVERvdWJsZURhc2g+O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FzRUMsR0FFRDs7Q0FFQyxHQTZWRCxNQUFNLGNBQ0o7QUFDRixNQUFNLGdCQUFnQjtBQUN0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 +// denoCacheMetadata=1538534168740573838,12750787570628016402
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/31939e2cd228e73559ef4bbb0326c7947aed6a713c2912b95ef2a0f25458dffd.js b/vendor/gen/https/jsr.io/31939e2cd228e73559ef4bbb0326c7947aed6a713c2912b95ef2a0f25458dffd.js new file mode 100644 index 0000000..342ea10 --- /dev/null +++ b/vendor/gen/https/jsr.io/31939e2cd228e73559ef4bbb0326c7947aed6a713c2912b95ef2a0f25458dffd.js @@ -0,0 +1,116 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { consumeMediaParam, decode2331Encoding } from "./_util.ts"; +const SEMICOLON_REGEXP = /^\s*;\s*$/; +/** + * Parses the media type and any optional parameters, per + * {@link https://www.rfc-editor.org/rfc/rfc1521.html | RFC 1521}. + * + * Media types are the values in `Content-Type` and `Content-Disposition` + * headers. On success the function returns a tuple where the first element is + * the media type and the second element is the optional parameters or + * `undefined` if there are none. + * + * The function will throw if the parsed value is invalid. + * + * The returned media type will be normalized to be lower case, and returned + * params keys will be normalized to lower case, but preserves the casing of + * the value. + * + * @param type The media type to parse. + * + * @returns A tuple where the first element is the media type and the second + * element is the optional parameters or `undefined` if there are none. + * + * @example Usage + * ```ts + * import { parseMediaType } from "@std/media-types/parse-media-type"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(parseMediaType("application/JSON"), ["application/json", undefined]); + * assertEquals(parseMediaType("text/html; charset=UTF-8"), ["text/html", { charset: "UTF-8" }]); + * ``` + */ export function parseMediaType(type) { + const [base] = type.split(";"); + const mediaType = base.toLowerCase().trim(); + const params = {}; + // Map of base parameter name -> parameter name -> value + // for parameters containing a '*' character. + const continuation = new Map(); + type = type.slice(base.length); + while(type.length){ + type = type.trimStart(); + if (type.length === 0) { + break; + } + const [key, value, rest] = consumeMediaParam(type); + if (!key) { + if (SEMICOLON_REGEXP.test(rest)) { + break; + } + throw new TypeError(`Cannot parse media type: invalid parameter "${type}"`); + } + let pmap = params; + const [baseName, rest2] = key.split("*"); + if (baseName && rest2 !== undefined) { + if (!continuation.has(baseName)) { + continuation.set(baseName, {}); + } + pmap = continuation.get(baseName); + } + if (key in pmap) { + throw new TypeError("Cannot parse media type: duplicate key"); + } + pmap[key] = value; + type = rest; + } + // Stitch together any continuations or things with stars + // (i.e. RFC 2231 things with stars: "foo*0" or "foo*") + let str = ""; + for (const [key, pieceMap] of continuation){ + const singlePartKey = `${key}*`; + const type = pieceMap[singlePartKey]; + if (type) { + const decv = decode2331Encoding(type); + if (decv) { + params[key] = decv; + } + continue; + } + str = ""; + let valid = false; + for(let n = 0;; n++){ + const simplePart = `${key}*${n}`; + let type = pieceMap[simplePart]; + if (type) { + valid = true; + str += type; + continue; + } + const encodedPart = `${simplePart}*`; + type = pieceMap[encodedPart]; + if (!type) { + break; + } + valid = true; + if (n === 0) { + const decv = decode2331Encoding(type); + if (decv) { + str += decv; + } + } else { + const decv = decodeURI(type); + str += decv; + } + } + if (valid) { + params[key] = str; + } + } + return [ + mediaType, + Object.keys(params).length ? params : undefined + ]; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvbWVkaWEtdHlwZXMvMS4xLjAvcGFyc2VfbWVkaWFfdHlwZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBjb25zdW1lTWVkaWFQYXJhbSwgZGVjb2RlMjMzMUVuY29kaW5nIH0gZnJvbSBcIi4vX3V0aWwudHNcIjtcblxuY29uc3QgU0VNSUNPTE9OX1JFR0VYUCA9IC9eXFxzKjtcXHMqJC87XG4vKipcbiAqIFBhcnNlcyB0aGUgbWVkaWEgdHlwZSBhbmQgYW55IG9wdGlvbmFsIHBhcmFtZXRlcnMsIHBlclxuICoge0BsaW5rIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmMxNTIxLmh0bWwgfCBSRkMgMTUyMX0uXG4gKlxuICogTWVkaWEgdHlwZXMgYXJlIHRoZSB2YWx1ZXMgaW4gYENvbnRlbnQtVHlwZWAgYW5kIGBDb250ZW50LURpc3Bvc2l0aW9uYFxuICogaGVhZGVycy4gT24gc3VjY2VzcyB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIHR1cGxlIHdoZXJlIHRoZSBmaXJzdCBlbGVtZW50IGlzXG4gKiB0aGUgbWVkaWEgdHlwZSBhbmQgdGhlIHNlY29uZCBlbGVtZW50IGlzIHRoZSBvcHRpb25hbCBwYXJhbWV0ZXJzIG9yXG4gKiBgdW5kZWZpbmVkYCBpZiB0aGVyZSBhcmUgbm9uZS5cbiAqXG4gKiBUaGUgZnVuY3Rpb24gd2lsbCB0aHJvdyBpZiB0aGUgcGFyc2VkIHZhbHVlIGlzIGludmFsaWQuXG4gKlxuICogVGhlIHJldHVybmVkIG1lZGlhIHR5cGUgd2lsbCBiZSBub3JtYWxpemVkIHRvIGJlIGxvd2VyIGNhc2UsIGFuZCByZXR1cm5lZFxuICogcGFyYW1zIGtleXMgd2lsbCBiZSBub3JtYWxpemVkIHRvIGxvd2VyIGNhc2UsIGJ1dCBwcmVzZXJ2ZXMgdGhlIGNhc2luZyBvZlxuICogdGhlIHZhbHVlLlxuICpcbiAqIEBwYXJhbSB0eXBlIFRoZSBtZWRpYSB0eXBlIHRvIHBhcnNlLlxuICpcbiAqIEByZXR1cm5zIEEgdHVwbGUgd2hlcmUgdGhlIGZpcnN0IGVsZW1lbnQgaXMgdGhlIG1lZGlhIHR5cGUgYW5kIHRoZSBzZWNvbmRcbiAqIGVsZW1lbnQgaXMgdGhlIG9wdGlvbmFsIHBhcmFtZXRlcnMgb3IgYHVuZGVmaW5lZGAgaWYgdGhlcmUgYXJlIG5vbmUuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBwYXJzZU1lZGlhVHlwZSB9IGZyb20gXCJAc3RkL21lZGlhLXR5cGVzL3BhcnNlLW1lZGlhLXR5cGVcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydEVxdWFscyhwYXJzZU1lZGlhVHlwZShcImFwcGxpY2F0aW9uL0pTT05cIiksIFtcImFwcGxpY2F0aW9uL2pzb25cIiwgdW5kZWZpbmVkXSk7XG4gKiBhc3NlcnRFcXVhbHMocGFyc2VNZWRpYVR5cGUoXCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLThcIiksIFtcInRleHQvaHRtbFwiLCB7IGNoYXJzZXQ6IFwiVVRGLThcIiB9XSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTWVkaWFUeXBlKFxuICB0eXBlOiBzdHJpbmcsXG4pOiBbbWVkaWFUeXBlOiBzdHJpbmcsIHBhcmFtczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZF0ge1xuICBjb25zdCBbYmFzZV0gPSB0eXBlLnNwbGl0KFwiO1wiKSBhcyBbc3RyaW5nXTtcbiAgY29uc3QgbWVkaWFUeXBlID0gYmFzZS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcblxuICBjb25zdCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgLy8gTWFwIG9mIGJhc2UgcGFyYW1ldGVyIG5hbWUgLT4gcGFyYW1ldGVyIG5hbWUgLT4gdmFsdWVcbiAgLy8gZm9yIHBhcmFtZXRlcnMgY29udGFpbmluZyBhICcqJyBjaGFyYWN0ZXIuXG4gIGNvbnN0IGNvbnRpbnVhdGlvbiA9IG5ldyBNYXA8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PigpO1xuXG4gIHR5cGUgPSB0eXBlLnNsaWNlKGJhc2UubGVuZ3RoKTtcbiAgd2hpbGUgKHR5cGUubGVuZ3RoKSB7XG4gICAgdHlwZSA9IHR5cGUudHJpbVN0YXJ0KCk7XG4gICAgaWYgKHR5cGUubGVuZ3RoID09PSAwKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY29uc3QgW2tleSwgdmFsdWUsIHJlc3RdID0gY29uc3VtZU1lZGlhUGFyYW0odHlwZSk7XG4gICAgaWYgKCFrZXkpIHtcbiAgICAgIGlmIChTRU1JQ09MT05fUkVHRVhQLnRlc3QocmVzdCkpIHtcbiAgICAgICAgLy8gaWdub3JlIHRyYWlsaW5nIHNlbWljb2xvbnNcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICBgQ2Fubm90IHBhcnNlIG1lZGlhIHR5cGU6IGludmFsaWQgcGFyYW1ldGVyIFwiJHt0eXBlfVwiYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IHBtYXAgPSBwYXJhbXM7XG4gICAgY29uc3QgW2Jhc2VOYW1lLCByZXN0Ml0gPSBrZXkuc3BsaXQoXCIqXCIpO1xuICAgIGlmIChiYXNlTmFtZSAmJiByZXN0MiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoIWNvbnRpbnVhdGlvbi5oYXMoYmFzZU5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVhdGlvbi5zZXQoYmFzZU5hbWUsIHt9KTtcbiAgICAgIH1cbiAgICAgIHBtYXAgPSBjb250aW51YXRpb24uZ2V0KGJhc2VOYW1lKSE7XG4gICAgfVxuICAgIGlmIChrZXkgaW4gcG1hcCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBwYXJzZSBtZWRpYSB0eXBlOiBkdXBsaWNhdGUga2V5XCIpO1xuICAgIH1cbiAgICBwbWFwW2tleV0gPSB2YWx1ZTtcbiAgICB0eXBlID0gcmVzdDtcbiAgfVxuXG4gIC8vIFN0aXRjaCB0b2dldGhlciBhbnkgY29udGludWF0aW9ucyBvciB0aGluZ3Mgd2l0aCBzdGFyc1xuICAvLyAoaS5lLiBSRkMgMjIzMSB0aGluZ3Mgd2l0aCBzdGFyczogXCJmb28qMFwiIG9yIFwiZm9vKlwiKVxuICBsZXQgc3RyID0gXCJcIjtcbiAgZm9yIChjb25zdCBba2V5LCBwaWVjZU1hcF0gb2YgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgc2luZ2xlUGFydEtleSA9IGAke2tleX0qYDtcbiAgICBjb25zdCB0eXBlID0gcGllY2VNYXBbc2luZ2xlUGFydEtleV07XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgIGNvbnN0IGRlY3YgPSBkZWNvZGUyMzMxRW5jb2RpbmcodHlwZSk7XG4gICAgICBpZiAoZGVjdikge1xuICAgICAgICBwYXJhbXNba2V5XSA9IGRlY3Y7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBzdHIgPSBcIlwiO1xuICAgIGxldCB2YWxpZCA9IGZhbHNlO1xuICAgIGZvciAobGV0IG4gPSAwOzsgbisrKSB7XG4gICAgICBjb25zdCBzaW1wbGVQYXJ0ID0gYCR7a2V5fSoke259YDtcbiAgICAgIGxldCB0eXBlID0gcGllY2VNYXBbc2ltcGxlUGFydF07XG4gICAgICBpZiAodHlwZSkge1xuICAgICAgICB2YWxpZCA9IHRydWU7XG4gICAgICAgIHN0ciArPSB0eXBlO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVuY29kZWRQYXJ0ID0gYCR7c2ltcGxlUGFydH0qYDtcbiAgICAgIHR5cGUgPSBwaWVjZU1hcFtlbmNvZGVkUGFydF07XG4gICAgICBpZiAoIXR5cGUpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB2YWxpZCA9IHRydWU7XG4gICAgICBpZiAobiA9PT0gMCkge1xuICAgICAgICBjb25zdCBkZWN2ID0gZGVjb2RlMjMzMUVuY29kaW5nKHR5cGUpO1xuICAgICAgICBpZiAoZGVjdikge1xuICAgICAgICAgIHN0ciArPSBkZWN2O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBkZWN2ID0gZGVjb2RlVVJJKHR5cGUpO1xuICAgICAgICBzdHIgKz0gZGVjdjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHZhbGlkKSB7XG4gICAgICBwYXJhbXNba2V5XSA9IHN0cjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gW21lZGlhVHlwZSwgT2JqZWN0LmtleXMocGFyYW1zKS5sZW5ndGggPyBwYXJhbXMgOiB1bmRlZmluZWRdO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxxQ0FBcUM7QUFFckMsU0FBUyxpQkFBaUIsRUFBRSxrQkFBa0IsUUFBUSxhQUFhO0FBRW5FLE1BQU0sbUJBQW1CO0FBQ3pCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBNEJDLEdBQ0QsT0FBTyxTQUFTLGVBQ2QsSUFBWTtFQUVaLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxLQUFLLENBQUM7RUFDMUIsTUFBTSxZQUFZLEtBQUssV0FBVyxHQUFHLElBQUk7RUFFekMsTUFBTSxTQUFpQyxDQUFDO0VBQ3hDLHdEQUF3RDtFQUN4RCw2Q0FBNkM7RUFDN0MsTUFBTSxlQUFlLElBQUk7RUFFekIsT0FBTyxLQUFLLEtBQUssQ0FBQyxLQUFLLE1BQU07RUFDN0IsTUFBTyxLQUFLLE1BQU0sQ0FBRTtJQUNsQixPQUFPLEtBQUssU0FBUztJQUNyQixJQUFJLEtBQUssTUFBTSxLQUFLLEdBQUc7TUFDckI7SUFDRjtJQUNBLE1BQU0sQ0FBQyxLQUFLLE9BQU8sS0FBSyxHQUFHLGtCQUFrQjtJQUM3QyxJQUFJLENBQUMsS0FBSztNQUNSLElBQUksaUJBQWlCLElBQUksQ0FBQyxPQUFPO1FBRS9CO01BQ0Y7TUFDQSxNQUFNLElBQUksVUFDUixDQUFDLDRDQUE0QyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRTFEO0lBRUEsSUFBSSxPQUFPO0lBQ1gsTUFBTSxDQUFDLFVBQVUsTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDO0lBQ3BDLElBQUksWUFBWSxVQUFVLFdBQVc7TUFDbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLFdBQVc7UUFDL0IsYUFBYSxHQUFHLENBQUMsVUFBVSxDQUFDO01BQzlCO01BQ0EsT0FBTyxhQUFhLEdBQUcsQ0FBQztJQUMxQjtJQUNBLElBQUksT0FBTyxNQUFNO01BQ2YsTUFBTSxJQUFJLFVBQVU7SUFDdEI7SUFDQSxJQUFJLENBQUMsSUFBSSxHQUFHO0lBQ1osT0FBTztFQUNUO0VBRUEseURBQXlEO0VBQ3pELHVEQUF1RDtFQUN2RCxJQUFJLE1BQU07RUFDVixLQUFLLE1BQU0sQ0FBQyxLQUFLLFNBQVMsSUFBSSxhQUFjO0lBQzFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDL0IsTUFBTSxPQUFPLFFBQVEsQ0FBQyxjQUFjO0lBQ3BDLElBQUksTUFBTTtNQUNSLE1BQU0sT0FBTyxtQkFBbUI7TUFDaEMsSUFBSSxNQUFNO1FBQ1IsTUFBTSxDQUFDLElBQUksR0FBRztNQUNoQjtNQUNBO0lBQ0Y7SUFFQSxNQUFNO0lBQ04sSUFBSSxRQUFRO0lBQ1osSUFBSyxJQUFJLElBQUksSUFBSSxJQUFLO01BQ3BCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUc7TUFDaEMsSUFBSSxPQUFPLFFBQVEsQ0FBQyxXQUFXO01BQy9CLElBQUksTUFBTTtRQUNSLFFBQVE7UUFDUixPQUFPO1FBQ1A7TUFDRjtNQUNBLE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxDQUFDO01BQ3BDLE9BQU8sUUFBUSxDQUFDLFlBQVk7TUFDNUIsSUFBSSxDQUFDLE1BQU07UUFDVDtNQUNGO01BQ0EsUUFBUTtNQUNSLElBQUksTUFBTSxHQUFHO1FBQ1gsTUFBTSxPQUFPLG1CQUFtQjtRQUNoQyxJQUFJLE1BQU07VUFDUixPQUFPO1FBQ1Q7TUFDRixPQUFPO1FBQ0wsTUFBTSxPQUFPLFVBQVU7UUFDdkIsT0FBTztNQUNUO0lBQ0Y7SUFDQSxJQUFJLE9BQU87TUFDVCxNQUFNLENBQUMsSUFBSSxHQUFHO0lBQ2hCO0VBQ0Y7RUFFQSxPQUFPO0lBQUM7SUFBVyxPQUFPLElBQUksQ0FBQyxRQUFRLE1BQU0sR0FBRyxTQUFTO0dBQVU7QUFDckUifQ== +// denoCacheMetadata=14583914334536755551,10270602117427477876
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/324c04d0a020b457392045ccecba780e08b6ce8431d068879ec2f485ca92d07a.js b/vendor/gen/https/jsr.io/324c04d0a020b457392045ccecba780e08b6ce8431d068879ec2f485ca92d07a.js new file mode 100644 index 0000000..38f9f2a --- /dev/null +++ b/vendor/gen/https/jsr.io/324c04d0a020b457392045ccecba780e08b6ce8431d068879ec2f485ca92d07a.js @@ -0,0 +1,87 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +import { dirname } from "jsr:@std/path@^1.0.9/dirname"; +import { ensureDir, ensureDirSync } from "./ensure_dir.ts"; +import { getFileInfoType } from "./_get_file_info_type.ts"; +import { toPathString } from "./_to_path_string.ts"; +/** + * Asynchronously ensures that the file exists. + * + * If the file already exists, this function does nothing. If the parent + * directories for the file do not exist, they are created. + * + * Requires `--allow-read` and `--allow-write` permissions. + * + * @see {@link https://docs.deno.com/runtime/manual/basics/permissions#file-system-access} + * for more information on Deno's permissions system. + * + * @param filePath The path of the file to ensure, as a string or URL. + * + * @returns A void promise that resolves once the file exists. + * + * @example Usage + * ```ts ignore + * import { ensureFile } from "@std/fs/ensure-file"; + * + * await ensureFile("./folder/targetFile.dat"); + * ``` + */ export async function ensureFile(filePath) { + try { + // if file exists + const stat = await Deno.lstat(filePath); + if (!stat.isFile) { + throw new Error(`Failed to ensure file exists: expected 'file', got '${getFileInfoType(stat)}'`); + } + } catch (err) { + // if file not exists + if (err instanceof Deno.errors.NotFound) { + // ensure dir exists + await ensureDir(dirname(toPathString(filePath))); + // create file + await Deno.writeFile(filePath, new Uint8Array()); + return; + } + throw err; + } +} +/** + * Synchronously ensures that the file exists. + * + * If the file already exists, this function does nothing. If the parent + * directories for the file do not exist, they are created. + * + * Requires `--allow-read` and `--allow-write` permissions. + * + * @see {@link https://docs.deno.com/runtime/manual/basics/permissions#file-system-access} + * for more information on Deno's permissions system. + * + * @param filePath The path of the file to ensure, as a string or URL. + * + * @returns A void value that returns once the file exists. + * + * @example Usage + * ```ts ignore + * import { ensureFileSync } from "@std/fs/ensure-file"; + * + * ensureFileSync("./folder/targetFile.dat"); + * ``` + */ export function ensureFileSync(filePath) { + try { + // if file exists + const stat = Deno.lstatSync(filePath); + if (!stat.isFile) { + throw new Error(`Failed to ensure file exists: expected 'file', got '${getFileInfoType(stat)}'`); + } + } catch (err) { + // if file not exists + if (err instanceof Deno.errors.NotFound) { + // ensure dir exists + ensureDirSync(dirname(toPathString(filePath))); + // create file + Deno.writeFileSync(filePath, new Uint8Array()); + return; + } + throw err; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnMvMS4wLjE3L2Vuc3VyZV9maWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG5pbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSBcImpzcjpAc3RkL3BhdGhAXjEuMC45L2Rpcm5hbWVcIjtcbmltcG9ydCB7IGVuc3VyZURpciwgZW5zdXJlRGlyU3luYyB9IGZyb20gXCIuL2Vuc3VyZV9kaXIudHNcIjtcbmltcG9ydCB7IGdldEZpbGVJbmZvVHlwZSB9IGZyb20gXCIuL19nZXRfZmlsZV9pbmZvX3R5cGUudHNcIjtcbmltcG9ydCB7IHRvUGF0aFN0cmluZyB9IGZyb20gXCIuL190b19wYXRoX3N0cmluZy50c1wiO1xuXG4vKipcbiAqIEFzeW5jaHJvbm91c2x5IGVuc3VyZXMgdGhhdCB0aGUgZmlsZSBleGlzdHMuXG4gKlxuICogSWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiBJZiB0aGUgcGFyZW50XG4gKiBkaXJlY3RvcmllcyBmb3IgdGhlIGZpbGUgZG8gbm90IGV4aXN0LCB0aGV5IGFyZSBjcmVhdGVkLlxuICpcbiAqIFJlcXVpcmVzIGAtLWFsbG93LXJlYWRgIGFuZCBgLS1hbGxvdy13cml0ZWAgcGVybWlzc2lvbnMuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmRlbm8uY29tL3J1bnRpbWUvbWFudWFsL2Jhc2ljcy9wZXJtaXNzaW9ucyNmaWxlLXN5c3RlbS1hY2Nlc3N9XG4gKiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBEZW5vJ3MgcGVybWlzc2lvbnMgc3lzdGVtLlxuICpcbiAqIEBwYXJhbSBmaWxlUGF0aCBUaGUgcGF0aCBvZiB0aGUgZmlsZSB0byBlbnN1cmUsIGFzIGEgc3RyaW5nIG9yIFVSTC5cbiAqXG4gKiBAcmV0dXJucyBBIHZvaWQgcHJvbWlzZSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIGZpbGUgZXhpc3RzLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBpZ25vcmVcbiAqIGltcG9ydCB7IGVuc3VyZUZpbGUgfSBmcm9tIFwiQHN0ZC9mcy9lbnN1cmUtZmlsZVwiO1xuICpcbiAqIGF3YWl0IGVuc3VyZUZpbGUoXCIuL2ZvbGRlci90YXJnZXRGaWxlLmRhdFwiKTtcbiAqIGBgYFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlRmlsZShmaWxlUGF0aDogc3RyaW5nIHwgVVJMKTogUHJvbWlzZTx2b2lkPiB7XG4gIHRyeSB7XG4gICAgLy8gaWYgZmlsZSBleGlzdHNcbiAgICBjb25zdCBzdGF0ID0gYXdhaXQgRGVuby5sc3RhdChmaWxlUGF0aCk7XG4gICAgaWYgKCFzdGF0LmlzRmlsZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRmFpbGVkIHRvIGVuc3VyZSBmaWxlIGV4aXN0czogZXhwZWN0ZWQgJ2ZpbGUnLCBnb3QgJyR7XG4gICAgICAgICAgZ2V0RmlsZUluZm9UeXBlKHN0YXQpXG4gICAgICAgIH0nYCxcbiAgICAgICk7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBpZiBmaWxlIG5vdCBleGlzdHNcbiAgICBpZiAoZXJyIGluc3RhbmNlb2YgRGVuby5lcnJvcnMuTm90Rm91bmQpIHtcbiAgICAgIC8vIGVuc3VyZSBkaXIgZXhpc3RzXG4gICAgICBhd2FpdCBlbnN1cmVEaXIoZGlybmFtZSh0b1BhdGhTdHJpbmcoZmlsZVBhdGgpKSk7XG4gICAgICAvLyBjcmVhdGUgZmlsZVxuICAgICAgYXdhaXQgRGVuby53cml0ZUZpbGUoZmlsZVBhdGgsIG5ldyBVaW50OEFycmF5KCkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRocm93IGVycjtcbiAgfVxufVxuXG4vKipcbiAqIFN5bmNocm9ub3VzbHkgZW5zdXJlcyB0aGF0IHRoZSBmaWxlIGV4aXN0cy5cbiAqXG4gKiBJZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIElmIHRoZSBwYXJlbnRcbiAqIGRpcmVjdG9yaWVzIGZvciB0aGUgZmlsZSBkbyBub3QgZXhpc3QsIHRoZXkgYXJlIGNyZWF0ZWQuXG4gKlxuICogUmVxdWlyZXMgYC0tYWxsb3ctcmVhZGAgYW5kIGAtLWFsbG93LXdyaXRlYCBwZXJtaXNzaW9ucy5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2RvY3MuZGVuby5jb20vcnVudGltZS9tYW51YWwvYmFzaWNzL3Blcm1pc3Npb25zI2ZpbGUtc3lzdGVtLWFjY2Vzc31cbiAqIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIERlbm8ncyBwZXJtaXNzaW9ucyBzeXN0ZW0uXG4gKlxuICogQHBhcmFtIGZpbGVQYXRoIFRoZSBwYXRoIG9mIHRoZSBmaWxlIHRvIGVuc3VyZSwgYXMgYSBzdHJpbmcgb3IgVVJMLlxuICpcbiAqIEByZXR1cm5zIEEgdm9pZCB2YWx1ZSB0aGF0IHJldHVybnMgb25jZSB0aGUgZmlsZSBleGlzdHMuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgZW5zdXJlRmlsZVN5bmMgfSBmcm9tIFwiQHN0ZC9mcy9lbnN1cmUtZmlsZVwiO1xuICpcbiAqIGVuc3VyZUZpbGVTeW5jKFwiLi9mb2xkZXIvdGFyZ2V0RmlsZS5kYXRcIik7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUZpbGVTeW5jKGZpbGVQYXRoOiBzdHJpbmcgfCBVUkwpOiB2b2lkIHtcbiAgdHJ5IHtcbiAgICAvLyBpZiBmaWxlIGV4aXN0c1xuICAgIGNvbnN0IHN0YXQgPSBEZW5vLmxzdGF0U3luYyhmaWxlUGF0aCk7XG4gICAgaWYgKCFzdGF0LmlzRmlsZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRmFpbGVkIHRvIGVuc3VyZSBmaWxlIGV4aXN0czogZXhwZWN0ZWQgJ2ZpbGUnLCBnb3QgJyR7XG4gICAgICAgICAgZ2V0RmlsZUluZm9UeXBlKHN0YXQpXG4gICAgICAgIH0nYCxcbiAgICAgICk7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBpZiBmaWxlIG5vdCBleGlzdHNcbiAgICBpZiAoZXJyIGluc3RhbmNlb2YgRGVuby5lcnJvcnMuTm90Rm91bmQpIHtcbiAgICAgIC8vIGVuc3VyZSBkaXIgZXhpc3RzXG4gICAgICBlbnN1cmVEaXJTeW5jKGRpcm5hbWUodG9QYXRoU3RyaW5nKGZpbGVQYXRoKSkpO1xuICAgICAgLy8gY3JlYXRlIGZpbGVcbiAgICAgIERlbm8ud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgbmV3IFVpbnQ4QXJyYXkoKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRocm93IGVycjtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxTQUFTLE9BQU8sUUFBUSwrQkFBK0I7QUFDdkQsU0FBUyxTQUFTLEVBQUUsYUFBYSxRQUFRLGtCQUFrQjtBQUMzRCxTQUFTLGVBQWUsUUFBUSwyQkFBMkI7QUFDM0QsU0FBUyxZQUFZLFFBQVEsdUJBQXVCO0FBRXBEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FxQkMsR0FDRCxPQUFPLGVBQWUsV0FBVyxRQUFzQjtFQUNyRCxJQUFJO0lBQ0YsaUJBQWlCO0lBQ2pCLE1BQU0sT0FBTyxNQUFNLEtBQUssS0FBSyxDQUFDO0lBQzlCLElBQUksQ0FBQyxLQUFLLE1BQU0sRUFBRTtNQUNoQixNQUFNLElBQUksTUFDUixDQUFDLG9EQUFvRCxFQUNuRCxnQkFBZ0IsTUFDakIsQ0FBQyxDQUFDO0lBRVA7RUFDRixFQUFFLE9BQU8sS0FBSztJQUNaLHFCQUFxQjtJQUNyQixJQUFJLGVBQWUsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFO01BQ3ZDLG9CQUFvQjtNQUNwQixNQUFNLFVBQVUsUUFBUSxhQUFhO01BQ3JDLGNBQWM7TUFDZCxNQUFNLEtBQUssU0FBUyxDQUFDLFVBQVUsSUFBSTtNQUNuQztJQUNGO0lBRUEsTUFBTTtFQUNSO0FBQ0Y7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBcUJDLEdBQ0QsT0FBTyxTQUFTLGVBQWUsUUFBc0I7RUFDbkQsSUFBSTtJQUNGLGlCQUFpQjtJQUNqQixNQUFNLE9BQU8sS0FBSyxTQUFTLENBQUM7SUFDNUIsSUFBSSxDQUFDLEtBQUssTUFBTSxFQUFFO01BQ2hCLE1BQU0sSUFBSSxNQUNSLENBQUMsb0RBQW9ELEVBQ25ELGdCQUFnQixNQUNqQixDQUFDLENBQUM7SUFFUDtFQUNGLEVBQUUsT0FBTyxLQUFLO0lBQ1oscUJBQXFCO0lBQ3JCLElBQUksZUFBZSxLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUU7TUFDdkMsb0JBQW9CO01BQ3BCLGNBQWMsUUFBUSxhQUFhO01BQ25DLGNBQWM7TUFDZCxLQUFLLGFBQWEsQ0FBQyxVQUFVLElBQUk7TUFDakM7SUFDRjtJQUNBLE1BQU07RUFDUjtBQUNGIn0= +// denoCacheMetadata=520030122213968241,18162067301607644311
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/34b12cbddc84ee767c60b6bf1bae25087bac28cf398f1b58fac7da0d61d62c65.js b/vendor/gen/https/jsr.io/34b12cbddc84ee767c60b6bf1bae25087bac28cf398f1b58fac7da0d61d62c65.js new file mode 100644 index 0000000..5641fb0 --- /dev/null +++ b/vendor/gen/https/jsr.io/34b12cbddc84ee767c60b6bf1bae25087bac28cf398f1b58fac7da0d61d62c65.js @@ -0,0 +1,16 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +/** + * The character used to separate entries in the PATH environment variable. + * On Windows, this is `;`. On all other platforms, this is `:`. + */ export const DELIMITER = isWindows ? ";" : ":"; +/** + * The character used to separate components of a file path. + * On Windows, this is `\`. On all other platforms, this is `/`. + */ export const SEPARATOR = isWindows ? "\\" : "/"; +/** + * A regular expression that matches one or more path separators. + */ export const SEPARATOR_PATTERN = isWindows ? /[\\/]+/ : /\/+/; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9jb25zdGFudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cbmltcG9ydCB7IGlzV2luZG93cyB9IGZyb20gXCIuL19vcy50c1wiO1xuXG4vKipcbiAqIFRoZSBjaGFyYWN0ZXIgdXNlZCB0byBzZXBhcmF0ZSBlbnRyaWVzIGluIHRoZSBQQVRIIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICogT24gV2luZG93cywgdGhpcyBpcyBgO2AuIE9uIGFsbCBvdGhlciBwbGF0Zm9ybXMsIHRoaXMgaXMgYDpgLlxuICovXG5leHBvcnQgY29uc3QgREVMSU1JVEVSID0gaXNXaW5kb3dzID8gXCI7XCIgYXMgY29uc3QgOiBcIjpcIiBhcyBjb25zdDtcbi8qKlxuICogVGhlIGNoYXJhY3RlciB1c2VkIHRvIHNlcGFyYXRlIGNvbXBvbmVudHMgb2YgYSBmaWxlIHBhdGguXG4gKiBPbiBXaW5kb3dzLCB0aGlzIGlzIGBcXGAuIE9uIGFsbCBvdGhlciBwbGF0Zm9ybXMsIHRoaXMgaXMgYC9gLlxuICovXG5leHBvcnQgY29uc3QgU0VQQVJBVE9SID0gaXNXaW5kb3dzID8gXCJcXFxcXCIgYXMgY29uc3QgOiBcIi9cIiBhcyBjb25zdDtcbi8qKlxuICogQSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBtYXRjaGVzIG9uZSBvciBtb3JlIHBhdGggc2VwYXJhdG9ycy5cbiAqL1xuZXhwb3J0IGNvbnN0IFNFUEFSQVRPUl9QQVRURVJOID0gaXNXaW5kb3dzID8gL1tcXFxcL10rLyA6IC9cXC8rLztcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBQ3JDLFNBQVMsU0FBUyxRQUFRLFdBQVc7QUFFckM7OztDQUdDLEdBQ0QsT0FBTyxNQUFNLFlBQVksWUFBWSxNQUFlLElBQWE7QUFDakU7OztDQUdDLEdBQ0QsT0FBTyxNQUFNLFlBQVksWUFBWSxPQUFnQixJQUFhO0FBQ2xFOztDQUVDLEdBQ0QsT0FBTyxNQUFNLG9CQUFvQixZQUFZLFdBQVcsTUFBTSJ9 +// denoCacheMetadata=9336896581296612895,10686512189542040983
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/357a9ee9f8c9fb9c039a1be3630b0ebb48453dd6301220ff065cfb62b941b431.js b/vendor/gen/https/jsr.io/357a9ee9f8c9fb9c039a1be3630b0ebb48453dd6301220ff065cfb62b941b431.js new file mode 100644 index 0000000..61c9022 --- /dev/null +++ b/vendor/gen/https/jsr.io/357a9ee9f8c9fb9c039a1be3630b0ebb48453dd6301220ff065cfb62b941b431.js @@ -0,0 +1,76 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * Utilities for + * {@link https://www.rfc-editor.org/rfc/rfc4648.html#section-4 | base64} + * encoding and decoding. + * + * ```ts + * import { + * encodeBase64, + * decodeBase64, + * } from "@std/encoding/base64"; + * import { assertEquals } from "@std/assert"; + * + * const foobar = new TextEncoder().encode("foobar"); + * + * assertEquals(encodeBase64(foobar), "Zm9vYmFy"); + * assertEquals(decodeBase64("Zm9vYmFy"), foobar); + * ``` + * + * @module + */ import { calcSizeBase64, decode, encode } from "./_common64.ts"; +import { detach } from "./_common_detach.ts"; +const padding = "=".charCodeAt(0); +const alphabet = new TextEncoder().encode("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"); +const rAlphabet = new Uint8Array(128).fill(64); // alphabet.length +alphabet.forEach((byte, i)=>rAlphabet[byte] = i); +/** + * Converts data into a base64-encoded string. + * + * @see {@link https://www.rfc-editor.org/rfc/rfc4648.html#section-4} + * + * @param data The data to encode. + * @returns The base64-encoded string. + * + * @example Usage + * ```ts + * import { encodeBase64 } from "@std/encoding/base64"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(encodeBase64("foobar"), "Zm9vYmFy"); + * ``` + */ export function encodeBase64(data) { + if (typeof data === "string") { + data = new TextEncoder().encode(data); + } else if (data instanceof ArrayBuffer) data = new Uint8Array(data).slice(); + else data = data.slice(); + const [output, i] = detach(data, calcSizeBase64(data.length)); + encode(output, i, 0, alphabet, padding); + return new TextDecoder().decode(output); +} +/** + * Decodes a base64-encoded string. + * + * @see {@link https://www.rfc-editor.org/rfc/rfc4648.html#section-4} + * + * @param b64 The base64-encoded string to decode. + * @returns The decoded data. + * + * @example Usage + * ```ts + * import { decodeBase64 } from "@std/encoding/base64"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals( + * decodeBase64("Zm9vYmFy"), + * new TextEncoder().encode("foobar") + * ); + * ``` + */ export function decodeBase64(b64) { + const output = new TextEncoder().encode(b64); + // deno-lint-ignore no-explicit-any + return new Uint8Array(output.buffer.transfer(decode(output, 0, 0, rAlphabet, padding))); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZW5jb2RpbmcvMS4wLjEwL2Jhc2U2NC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vKipcbiAqIFV0aWxpdGllcyBmb3JcbiAqIHtAbGluayBodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjNDY0OC5odG1sI3NlY3Rpb24tNCB8IGJhc2U2NH1cbiAqIGVuY29kaW5nIGFuZCBkZWNvZGluZy5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHtcbiAqICAgZW5jb2RlQmFzZTY0LFxuICogICBkZWNvZGVCYXNlNjQsXG4gKiB9IGZyb20gXCJAc3RkL2VuY29kaW5nL2Jhc2U2NFwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3QgZm9vYmFyID0gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKFwiZm9vYmFyXCIpO1xuICpcbiAqIGFzc2VydEVxdWFscyhlbmNvZGVCYXNlNjQoZm9vYmFyKSwgXCJabTl2WW1GeVwiKTtcbiAqIGFzc2VydEVxdWFscyhkZWNvZGVCYXNlNjQoXCJabTl2WW1GeVwiKSwgZm9vYmFyKTtcbiAqIGBgYFxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBjYWxjU2l6ZUJhc2U2NCwgZGVjb2RlLCBlbmNvZGUgfSBmcm9tIFwiLi9fY29tbW9uNjQudHNcIjtcbmltcG9ydCB7IGRldGFjaCB9IGZyb20gXCIuL19jb21tb25fZGV0YWNoLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFVpbnQ4QXJyYXlfIH0gZnJvbSBcIi4vX3R5cGVzLnRzXCI7XG5leHBvcnQgdHlwZSB7IFVpbnQ4QXJyYXlfIH07XG5cbmNvbnN0IHBhZGRpbmcgPSBcIj1cIi5jaGFyQ29kZUF0KDApO1xuY29uc3QgYWxwaGFiZXQgPSBuZXcgVGV4dEVuY29kZXIoKVxuICAuZW5jb2RlKFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrL1wiKTtcbmNvbnN0IHJBbHBoYWJldCA9IG5ldyBVaW50OEFycmF5KDEyOCkuZmlsbCg2NCk7IC8vIGFscGhhYmV0Lmxlbmd0aFxuYWxwaGFiZXQuZm9yRWFjaCgoYnl0ZSwgaSkgPT4gckFscGhhYmV0W2J5dGVdID0gaSk7XG5cbi8qKlxuICogQ29udmVydHMgZGF0YSBpbnRvIGEgYmFzZTY0LWVuY29kZWQgc3RyaW5nLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM0NjQ4Lmh0bWwjc2VjdGlvbi00fVxuICpcbiAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIHRvIGVuY29kZS5cbiAqIEByZXR1cm5zIFRoZSBiYXNlNjQtZW5jb2RlZCBzdHJpbmcuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBlbmNvZGVCYXNlNjQgfSBmcm9tIFwiQHN0ZC9lbmNvZGluZy9iYXNlNjRcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydEVxdWFscyhlbmNvZGVCYXNlNjQoXCJmb29iYXJcIiksIFwiWm05dlltRnlcIik7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZUJhc2U2NChkYXRhOiBBcnJheUJ1ZmZlciB8IFVpbnQ4QXJyYXkgfCBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIpIHtcbiAgICBkYXRhID0gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKGRhdGEpIGFzIFVpbnQ4QXJyYXlfO1xuICB9IGVsc2UgaWYgKGRhdGEgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikgZGF0YSA9IG5ldyBVaW50OEFycmF5KGRhdGEpLnNsaWNlKCk7XG4gIGVsc2UgZGF0YSA9IGRhdGEuc2xpY2UoKTtcbiAgY29uc3QgW291dHB1dCwgaV0gPSBkZXRhY2goXG4gICAgZGF0YSBhcyBVaW50OEFycmF5XyxcbiAgICBjYWxjU2l6ZUJhc2U2NCgoZGF0YSBhcyBVaW50OEFycmF5XykubGVuZ3RoKSxcbiAgKTtcbiAgZW5jb2RlKG91dHB1dCwgaSwgMCwgYWxwaGFiZXQsIHBhZGRpbmcpO1xuICByZXR1cm4gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKG91dHB1dCk7XG59XG5cbi8qKlxuICogRGVjb2RlcyBhIGJhc2U2NC1lbmNvZGVkIHN0cmluZy5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjNDY0OC5odG1sI3NlY3Rpb24tNH1cbiAqXG4gKiBAcGFyYW0gYjY0IFRoZSBiYXNlNjQtZW5jb2RlZCBzdHJpbmcgdG8gZGVjb2RlLlxuICogQHJldHVybnMgVGhlIGRlY29kZWQgZGF0YS5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGRlY29kZUJhc2U2NCB9IGZyb20gXCJAc3RkL2VuY29kaW5nL2Jhc2U2NFwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogYXNzZXJ0RXF1YWxzKFxuICogICBkZWNvZGVCYXNlNjQoXCJabTl2WW1GeVwiKSxcbiAqICAgbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKFwiZm9vYmFyXCIpXG4gKiApO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVCYXNlNjQoYjY0OiBzdHJpbmcpOiBVaW50OEFycmF5XyB7XG4gIGNvbnN0IG91dHB1dCA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShiNjQpIGFzIFVpbnQ4QXJyYXlfO1xuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoKG91dHB1dC5idWZmZXIgYXMgYW55KVxuICAgIC50cmFuc2ZlcihkZWNvZGUob3V0cHV0LCAwLCAwLCByQWxwaGFiZXQsIHBhZGRpbmcpKSk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW1CQyxHQUVELFNBQVMsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsaUJBQWlCO0FBQ2hFLFNBQVMsTUFBTSxRQUFRLHNCQUFzQjtBQUk3QyxNQUFNLFVBQVUsSUFBSSxVQUFVLENBQUM7QUFDL0IsTUFBTSxXQUFXLElBQUksY0FDbEIsTUFBTSxDQUFDO0FBQ1YsTUFBTSxZQUFZLElBQUksV0FBVyxLQUFLLElBQUksQ0FBQyxLQUFLLGtCQUFrQjtBQUNsRSxTQUFTLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBTSxTQUFTLENBQUMsS0FBSyxHQUFHO0FBRWhEOzs7Ozs7Ozs7Ozs7Ozs7Q0FlQyxHQUNELE9BQU8sU0FBUyxhQUFhLElBQXVDO0VBQ2xFLElBQUksT0FBTyxTQUFTLFVBQVU7SUFDNUIsT0FBTyxJQUFJLGNBQWMsTUFBTSxDQUFDO0VBQ2xDLE9BQU8sSUFBSSxnQkFBZ0IsYUFBYSxPQUFPLElBQUksV0FBVyxNQUFNLEtBQUs7T0FDcEUsT0FBTyxLQUFLLEtBQUs7RUFDdEIsTUFBTSxDQUFDLFFBQVEsRUFBRSxHQUFHLE9BQ2xCLE1BQ0EsZUFBZSxBQUFDLEtBQXFCLE1BQU07RUFFN0MsT0FBTyxRQUFRLEdBQUcsR0FBRyxVQUFVO0VBQy9CLE9BQU8sSUFBSSxjQUFjLE1BQU0sQ0FBQztBQUNsQztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FrQkMsR0FDRCxPQUFPLFNBQVMsYUFBYSxHQUFXO0VBQ3RDLE1BQU0sU0FBUyxJQUFJLGNBQWMsTUFBTSxDQUFDO0VBQ3hDLG1DQUFtQztFQUNuQyxPQUFPLElBQUksV0FBVyxBQUFDLE9BQU8sTUFBTSxDQUNqQyxRQUFRLENBQUMsT0FBTyxRQUFRLEdBQUcsR0FBRyxXQUFXO0FBQzlDIn0= +// denoCacheMetadata=11557729381285517451,13395693684056489160
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/35a962b444037158086a1f9ae4ad7f22a48ee64c967938bcd0f03d85fd2c4d43.js b/vendor/gen/https/jsr.io/35a962b444037158086a1f9ae4ad7f22a48ee64c967938bcd0f03d85fd2c4d43.js new file mode 100644 index 0000000..932f170 --- /dev/null +++ b/vendor/gen/https/jsr.io/35a962b444037158086a1f9ae4ad7f22a48ee64c967938bcd0f03d85fd2c4d43.js @@ -0,0 +1,26 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// Copyright the Browserify authors. MIT License. +import { resolve } from "jsr:@std/path@^1.0.9/resolve"; +import { SEPARATOR } from "jsr:@std/path@^1.0.9/constants"; +import { toPathString } from "./_to_path_string.ts"; +/** + * Checks whether `src` is a sub-directory of `dest`. + * + * @param src Source file path as a string or URL. + * @param dest Destination file path as a string or URL. + * @param sep Path separator. Defaults to `\\` for Windows and `/` for other + * platforms. + * + * @returns `true` if `src` is a sub-directory of `dest`, `false` otherwise. + */ export function isSubdir(src, dest, sep = SEPARATOR) { + src = toPathString(src); + dest = toPathString(dest); + if (resolve(src) === resolve(dest)) { + return false; + } + const srcArray = src.split(sep); + const destArray = dest.split(sep); + return srcArray.every((current, i)=>destArray[i] === current); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnMvMS4wLjE3L19pc19zdWJkaXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cblxuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gXCJqc3I6QHN0ZC9wYXRoQF4xLjAuOS9yZXNvbHZlXCI7XG5pbXBvcnQgeyBTRVBBUkFUT1IgfSBmcm9tIFwianNyOkBzdGQvcGF0aEBeMS4wLjkvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyB0b1BhdGhTdHJpbmcgfSBmcm9tIFwiLi9fdG9fcGF0aF9zdHJpbmcudHNcIjtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBgc3JjYCBpcyBhIHN1Yi1kaXJlY3Rvcnkgb2YgYGRlc3RgLlxuICpcbiAqIEBwYXJhbSBzcmMgU291cmNlIGZpbGUgcGF0aCBhcyBhIHN0cmluZyBvciBVUkwuXG4gKiBAcGFyYW0gZGVzdCBEZXN0aW5hdGlvbiBmaWxlIHBhdGggYXMgYSBzdHJpbmcgb3IgVVJMLlxuICogQHBhcmFtIHNlcCBQYXRoIHNlcGFyYXRvci4gRGVmYXVsdHMgdG8gYFxcXFxgIGZvciBXaW5kb3dzIGFuZCBgL2AgZm9yIG90aGVyXG4gKiBwbGF0Zm9ybXMuXG4gKlxuICogQHJldHVybnMgYHRydWVgIGlmIGBzcmNgIGlzIGEgc3ViLWRpcmVjdG9yeSBvZiBgZGVzdGAsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTdWJkaXIoXG4gIHNyYzogc3RyaW5nIHwgVVJMLFxuICBkZXN0OiBzdHJpbmcgfCBVUkwsXG4gIHNlcCA9IFNFUEFSQVRPUixcbik6IGJvb2xlYW4ge1xuICBzcmMgPSB0b1BhdGhTdHJpbmcoc3JjKTtcbiAgZGVzdCA9IHRvUGF0aFN0cmluZyhkZXN0KTtcblxuICBpZiAocmVzb2x2ZShzcmMpID09PSByZXNvbHZlKGRlc3QpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qgc3JjQXJyYXkgPSBzcmMuc3BsaXQoc2VwKTtcbiAgY29uc3QgZGVzdEFycmF5ID0gZGVzdC5zcGxpdChzZXApO1xuXG4gIHJldHVybiBzcmNBcnJheS5ldmVyeSgoY3VycmVudCwgaSkgPT4gZGVzdEFycmF5W2ldID09PSBjdXJyZW50KTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQsaURBQWlEO0FBRWpELFNBQVMsT0FBTyxRQUFRLCtCQUErQjtBQUN2RCxTQUFTLFNBQVMsUUFBUSxpQ0FBaUM7QUFDM0QsU0FBUyxZQUFZLFFBQVEsdUJBQXVCO0FBRXBEOzs7Ozs7Ozs7Q0FTQyxHQUNELE9BQU8sU0FBUyxTQUNkLEdBQWlCLEVBQ2pCLElBQWtCLEVBQ2xCLE1BQU0sU0FBUztFQUVmLE1BQU0sYUFBYTtFQUNuQixPQUFPLGFBQWE7RUFFcEIsSUFBSSxRQUFRLFNBQVMsUUFBUSxPQUFPO0lBQ2xDLE9BQU87RUFDVDtFQUVBLE1BQU0sV0FBVyxJQUFJLEtBQUssQ0FBQztFQUMzQixNQUFNLFlBQVksS0FBSyxLQUFLLENBQUM7RUFFN0IsT0FBTyxTQUFTLEtBQUssQ0FBQyxDQUFDLFNBQVMsSUFBTSxTQUFTLENBQUMsRUFBRSxLQUFLO0FBQ3pEIn0= +// denoCacheMetadata=12869624350505637731,3403334576822797538
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/3606c59f3e92316faeb20c991c858e0e1fb18771bb9d01d7a3ed8514b85b4bdb.js b/vendor/gen/https/jsr.io/3606c59f3e92316faeb20c991c858e0e1fb18771bb9d01d7a3ed8514b85b4bdb.js new file mode 100644 index 0000000..e13419d --- /dev/null +++ b/vendor/gen/https/jsr.io/3606c59f3e92316faeb20c991c858e0e1fb18771bb9d01d7a3ed8514b85b4bdb.js @@ -0,0 +1,9 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { assertPath } from "./assert_path.ts"; +export function assertArg(path) { + assertPath(path); + if (path.length === 0) return "."; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9fY29tbW9uL25vcm1hbGl6ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBhc3NlcnRQYXRoIH0gZnJvbSBcIi4vYXNzZXJ0X3BhdGgudHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEFyZyhwYXRoOiBzdHJpbmcpIHtcbiAgYXNzZXJ0UGF0aChwYXRoKTtcbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSByZXR1cm4gXCIuXCI7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQyxTQUFTLFVBQVUsUUFBUSxtQkFBbUI7QUFFOUMsT0FBTyxTQUFTLFVBQVUsSUFBWTtFQUNwQyxXQUFXO0VBQ1gsSUFBSSxLQUFLLE1BQU0sS0FBSyxHQUFHLE9BQU87QUFDaEMifQ== +// denoCacheMetadata=17712730746436136858,6715716185216313122
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/36c1e87dab15e3bd201553b517dec4b821e3a0045fc94d176dfc131a19d049d6.js b/vendor/gen/https/jsr.io/36c1e87dab15e3bd201553b517dec4b821e3a0045fc94d176dfc131a19d049d6.js new file mode 100644 index 0000000..f5aea1b --- /dev/null +++ b/vendor/gen/https/jsr.io/36c1e87dab15e3bd201553b517dec4b821e3a0045fc94d176dfc131a19d049d6.js @@ -0,0 +1,295 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +import { basename } from "jsr:@std/path@^1.0.9/basename"; +import { join } from "jsr:@std/path@^1.0.9/join"; +import { resolve } from "jsr:@std/path@^1.0.9/resolve"; +import { ensureDir, ensureDirSync } from "./ensure_dir.ts"; +import { getFileInfoType } from "./_get_file_info_type.ts"; +import { toPathString } from "./_to_path_string.ts"; +import { isSubdir } from "./_is_subdir.ts"; +// deno-lint-ignore no-explicit-any +const isWindows = globalThis.Deno?.build.os === "windows"; +function assertIsDate(date, name) { + if (date === null) { + throw new Error(`${name} is unavailable`); + } +} +async function ensureValidCopy(src, dest, options) { + let destStat; + try { + destStat = await Deno.lstat(dest); + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + return; + } + throw err; + } + if (options.isFolder && !destStat.isDirectory) { + throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'`); + } + if (!options.overwrite) { + throw new Deno.errors.AlreadyExists(`'${dest}' already exists.`); + } + return destStat; +} +function ensureValidCopySync(src, dest, options) { + let destStat; + try { + destStat = Deno.lstatSync(dest); + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + return; + } + throw err; + } + if (options.isFolder && !destStat.isDirectory) { + throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'`); + } + if (!options.overwrite) { + throw new Deno.errors.AlreadyExists(`'${dest}' already exists`); + } + return destStat; +} +/* copy file to dest */ async function copyFile(src, dest, options) { + await ensureValidCopy(src, dest, options); + await Deno.copyFile(src, dest); + if (options.preserveTimestamps) { + const statInfo = await Deno.stat(src); + assertIsDate(statInfo.atime, "statInfo.atime"); + assertIsDate(statInfo.mtime, "statInfo.mtime"); + await Deno.utime(dest, statInfo.atime, statInfo.mtime); + } +} +/* copy file to dest synchronously */ function copyFileSync(src, dest, options) { + ensureValidCopySync(src, dest, options); + Deno.copyFileSync(src, dest); + if (options.preserveTimestamps) { + const statInfo = Deno.statSync(src); + assertIsDate(statInfo.atime, "statInfo.atime"); + assertIsDate(statInfo.mtime, "statInfo.mtime"); + Deno.utimeSync(dest, statInfo.atime, statInfo.mtime); + } +} +/* copy symlink to dest */ async function copySymLink(src, dest, options) { + await ensureValidCopy(src, dest, options); + const originSrcFilePath = await Deno.readLink(src); + const type = getFileInfoType(await Deno.lstat(src)); + if (isWindows) { + await Deno.symlink(originSrcFilePath, dest, { + type: type === "dir" ? "dir" : "file" + }); + } else { + await Deno.symlink(originSrcFilePath, dest); + } + if (options.preserveTimestamps) { + const statInfo = await Deno.lstat(src); + assertIsDate(statInfo.atime, "statInfo.atime"); + assertIsDate(statInfo.mtime, "statInfo.mtime"); + await Deno.utime(dest, statInfo.atime, statInfo.mtime); + } +} +/* copy symlink to dest synchronously */ function copySymlinkSync(src, dest, options) { + ensureValidCopySync(src, dest, options); + const originSrcFilePath = Deno.readLinkSync(src); + const type = getFileInfoType(Deno.lstatSync(src)); + if (isWindows) { + Deno.symlinkSync(originSrcFilePath, dest, { + type: type === "dir" ? "dir" : "file" + }); + } else { + Deno.symlinkSync(originSrcFilePath, dest); + } + if (options.preserveTimestamps) { + const statInfo = Deno.lstatSync(src); + assertIsDate(statInfo.atime, "statInfo.atime"); + assertIsDate(statInfo.mtime, "statInfo.mtime"); + Deno.utimeSync(dest, statInfo.atime, statInfo.mtime); + } +} +/* copy folder from src to dest. */ async function copyDir(src, dest, options) { + const destStat = await ensureValidCopy(src, dest, { + ...options, + isFolder: true + }); + if (!destStat) { + await ensureDir(dest); + } + if (options.preserveTimestamps) { + const srcStatInfo = await Deno.stat(src); + assertIsDate(srcStatInfo.atime, "statInfo.atime"); + assertIsDate(srcStatInfo.mtime, "statInfo.mtime"); + await Deno.utime(dest, srcStatInfo.atime, srcStatInfo.mtime); + } + src = toPathString(src); + dest = toPathString(dest); + const promises = []; + for await (const entry of Deno.readDir(src)){ + const srcPath = join(src, entry.name); + const destPath = join(dest, basename(srcPath)); + if (entry.isSymlink) { + promises.push(copySymLink(srcPath, destPath, options)); + } else if (entry.isDirectory) { + promises.push(copyDir(srcPath, destPath, options)); + } else if (entry.isFile) { + promises.push(copyFile(srcPath, destPath, options)); + } + } + await Promise.all(promises); +} +/* copy folder from src to dest synchronously */ function copyDirSync(src, dest, options) { + const destStat = ensureValidCopySync(src, dest, { + ...options, + isFolder: true + }); + if (!destStat) { + ensureDirSync(dest); + } + if (options.preserveTimestamps) { + const srcStatInfo = Deno.statSync(src); + assertIsDate(srcStatInfo.atime, "statInfo.atime"); + assertIsDate(srcStatInfo.mtime, "statInfo.mtime"); + Deno.utimeSync(dest, srcStatInfo.atime, srcStatInfo.mtime); + } + src = toPathString(src); + dest = toPathString(dest); + for (const entry of Deno.readDirSync(src)){ + const srcPath = join(src, entry.name); + const destPath = join(dest, basename(srcPath)); + if (entry.isSymlink) { + copySymlinkSync(srcPath, destPath, options); + } else if (entry.isDirectory) { + copyDirSync(srcPath, destPath, options); + } else if (entry.isFile) { + copyFileSync(srcPath, destPath, options); + } + } +} +/** + * Asynchronously copy a file or directory (along with its contents), like + * {@linkcode https://www.ibm.com/docs/en/aix/7.3?topic=c-cp-command#cp__cp_flagr | cp -r}. + * + * Both `src` and `dest` must both be a file or directory. + * + * Requires `--allow-read` and `--allow-write` permissions. + * + * @see {@link https://docs.deno.com/runtime/manual/basics/permissions#file-system-access} + * for more information on Deno's permissions system. + * + * @param src The source file/directory path as a string or URL. + * @param dest The destination file/directory path as a string or URL. + * @param options Options for copying. + * + * @returns A promise that resolves once the copy operation completes. + * + * @example Basic usage + * ```ts ignore + * import { copy } from "@std/fs/copy"; + * + * await copy("./foo", "./bar"); + * ``` + * + * This will copy the file or directory at `./foo` to `./bar` without + * overwriting. + * + * @example Overwriting files/directories + * ```ts ignore + * import { copy } from "@std/fs/copy"; + * + * await copy("./foo", "./bar", { overwrite: true }); + * ``` + * + * This will copy the file or directory at `./foo` to `./bar` and overwrite + * any existing files or directories. + * + * @example Preserving timestamps + * ```ts ignore + * import { copy } from "@std/fs/copy"; + * + * await copy("./foo", "./bar", { preserveTimestamps: true }); + * ``` + * + * This will copy the file or directory at `./foo` to `./bar` and set the + * last modification and access times to the ones of the original source files. + */ export async function copy(src, dest, options = {}) { + src = resolve(toPathString(src)); + dest = resolve(toPathString(dest)); + if (src === dest) { + throw new Error("Source and destination cannot be the same"); + } + const srcStat = await Deno.lstat(src); + if (srcStat.isDirectory && isSubdir(src, dest)) { + throw new Error(`Cannot copy '${src}' to a subdirectory of itself: '${dest}'`); + } + if (srcStat.isSymlink) { + await copySymLink(src, dest, options); + } else if (srcStat.isDirectory) { + await copyDir(src, dest, options); + } else if (srcStat.isFile) { + await copyFile(src, dest, options); + } +} +/** + * Synchronously copy a file or directory (along with its contents), like + * {@linkcode https://www.ibm.com/docs/en/aix/7.3?topic=c-cp-command#cp__cp_flagr | cp -r}. + * + * Both `src` and `dest` must both be a file or directory. + * + * Requires `--allow-read` and `--allow-write` permissions. + * + * @see {@link https://docs.deno.com/runtime/manual/basics/permissions#file-system-access} + * for more information on Deno's permissions system. + * + * @param src The source file/directory path as a string or URL. + * @param dest The destination file/directory path as a string or URL. + * @param options Options for copying. + * + * @returns A void value that returns once the copy operation completes. + * + * @example Basic usage + * ```ts ignore + * import { copySync } from "@std/fs/copy"; + * + * copySync("./foo", "./bar"); + * ``` + * + * This will copy the file or directory at `./foo` to `./bar` without + * overwriting. + * + * @example Overwriting files/directories + * ```ts ignore + * import { copySync } from "@std/fs/copy"; + * + * copySync("./foo", "./bar", { overwrite: true }); + * ``` + * + * This will copy the file or directory at `./foo` to `./bar` and overwrite + * any existing files or directories. + * + * @example Preserving timestamps + * ```ts ignore + * import { copySync } from "@std/fs/copy"; + * + * copySync("./foo", "./bar", { preserveTimestamps: true }); + * ``` + * + * This will copy the file or directory at `./foo` to `./bar` and set the + * last modification and access times to the ones of the original source files. + */ export function copySync(src, dest, options = {}) { + src = resolve(toPathString(src)); + dest = resolve(toPathString(dest)); + if (src === dest) { + throw new Error("Source and destination cannot be the same"); + } + const srcStat = Deno.lstatSync(src); + if (srcStat.isDirectory && isSubdir(src, dest)) { + throw new Error(`Cannot copy '${src}' to a subdirectory of itself: '${dest}'`); + } + if (srcStat.isSymlink) { + copySymlinkSync(src, dest, options); + } else if (srcStat.isDirectory) { + copyDirSync(src, dest, options); + } else if (srcStat.isFile) { + copyFileSync(src, dest, options); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnMvMS4wLjE3L2NvcHkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cblxuaW1wb3J0IHsgYmFzZW5hbWUgfSBmcm9tIFwianNyOkBzdGQvcGF0aEBeMS4wLjkvYmFzZW5hbWVcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwianNyOkBzdGQvcGF0aEBeMS4wLjkvam9pblwiO1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gXCJqc3I6QHN0ZC9wYXRoQF4xLjAuOS9yZXNvbHZlXCI7XG5pbXBvcnQgeyBlbnN1cmVEaXIsIGVuc3VyZURpclN5bmMgfSBmcm9tIFwiLi9lbnN1cmVfZGlyLnRzXCI7XG5pbXBvcnQgeyBnZXRGaWxlSW5mb1R5cGUgfSBmcm9tIFwiLi9fZ2V0X2ZpbGVfaW5mb190eXBlLnRzXCI7XG5pbXBvcnQgeyB0b1BhdGhTdHJpbmcgfSBmcm9tIFwiLi9fdG9fcGF0aF9zdHJpbmcudHNcIjtcbmltcG9ydCB7IGlzU3ViZGlyIH0gZnJvbSBcIi4vX2lzX3N1YmRpci50c1wiO1xuXG4vLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuY29uc3QgaXNXaW5kb3dzID0gKGdsb2JhbFRoaXMgYXMgYW55KS5EZW5vPy5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCI7XG5cbi8qKiBPcHRpb25zIGZvciB7QGxpbmtjb2RlIGNvcHl9IGFuZCB7QGxpbmtjb2RlIGNvcHlTeW5jfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29weU9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0byBvdmVyd3JpdGUgZXhpc3RpbmcgZmlsZSBvciBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtmYWxzZX1cbiAgICovXG4gIG92ZXJ3cml0ZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGVuIGB0cnVlYCwgd2lsbCBzZXQgbGFzdCBtb2RpZmljYXRpb24gYW5kIGFjY2VzcyB0aW1lcyB0byB0aGUgb25lcyBvZlxuICAgKiB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGVzLiBXaGVuIGBmYWxzZWAsIHRpbWVzdGFtcCBiZWhhdmlvciBpc1xuICAgKiBPUy1kZXBlbmRlbnQuXG4gICAqXG4gICAqID4gWyFOT1RFXVxuICAgKiA+IFRoaXMgb3B0aW9uIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZCBmb3Igc3ltYm9saWMgbGlua3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtmYWxzZX1cbiAgICovXG4gIHByZXNlcnZlVGltZXN0YW1wcz86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBJbnRlcm5hbENvcHlPcHRpb25zIGV4dGVuZHMgQ29weU9wdGlvbnMge1xuICAvKiogQGRlZmF1bHQge2ZhbHNlfSAqL1xuICBpc0ZvbGRlcj86IGJvb2xlYW47XG59XG5cbmZ1bmN0aW9uIGFzc2VydElzRGF0ZShkYXRlOiBEYXRlIHwgbnVsbCwgbmFtZTogc3RyaW5nKTogYXNzZXJ0cyBkYXRlIGlzIERhdGUge1xuICBpZiAoZGF0ZSA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHtuYW1lfSBpcyB1bmF2YWlsYWJsZWApO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGVuc3VyZVZhbGlkQ29weShcbiAgc3JjOiBzdHJpbmcgfCBVUkwsXG4gIGRlc3Q6IHN0cmluZyB8IFVSTCxcbiAgb3B0aW9uczogSW50ZXJuYWxDb3B5T3B0aW9ucyxcbik6IFByb21pc2U8RGVuby5GaWxlSW5mbyB8IHVuZGVmaW5lZD4ge1xuICBsZXQgZGVzdFN0YXQ6IERlbm8uRmlsZUluZm87XG5cbiAgdHJ5IHtcbiAgICBkZXN0U3RhdCA9IGF3YWl0IERlbm8ubHN0YXQoZGVzdCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBEZW5vLmVycm9ycy5Ob3RGb3VuZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aHJvdyBlcnI7XG4gIH1cblxuICBpZiAob3B0aW9ucy5pc0ZvbGRlciAmJiAhZGVzdFN0YXQuaXNEaXJlY3RvcnkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQ2Fubm90IG92ZXJ3cml0ZSBub24tZGlyZWN0b3J5ICcke2Rlc3R9JyB3aXRoIGRpcmVjdG9yeSAnJHtzcmN9J2AsXG4gICAgKTtcbiAgfVxuICBpZiAoIW9wdGlvbnMub3ZlcndyaXRlKSB7XG4gICAgdGhyb3cgbmV3IERlbm8uZXJyb3JzLkFscmVhZHlFeGlzdHMoYCcke2Rlc3R9JyBhbHJlYWR5IGV4aXN0cy5gKTtcbiAgfVxuXG4gIHJldHVybiBkZXN0U3RhdDtcbn1cblxuZnVuY3Rpb24gZW5zdXJlVmFsaWRDb3B5U3luYyhcbiAgc3JjOiBzdHJpbmcgfCBVUkwsXG4gIGRlc3Q6IHN0cmluZyB8IFVSTCxcbiAgb3B0aW9uczogSW50ZXJuYWxDb3B5T3B0aW9ucyxcbik6IERlbm8uRmlsZUluZm8gfCB1bmRlZmluZWQge1xuICBsZXQgZGVzdFN0YXQ6IERlbm8uRmlsZUluZm87XG4gIHRyeSB7XG4gICAgZGVzdFN0YXQgPSBEZW5vLmxzdGF0U3luYyhkZXN0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIERlbm8uZXJyb3JzLk5vdEZvdW5kKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRocm93IGVycjtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmlzRm9sZGVyICYmICFkZXN0U3RhdC5pc0RpcmVjdG9yeSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBDYW5ub3Qgb3ZlcndyaXRlIG5vbi1kaXJlY3RvcnkgJyR7ZGVzdH0nIHdpdGggZGlyZWN0b3J5ICcke3NyY30nYCxcbiAgICApO1xuICB9XG4gIGlmICghb3B0aW9ucy5vdmVyd3JpdGUpIHtcbiAgICB0aHJvdyBuZXcgRGVuby5lcnJvcnMuQWxyZWFkeUV4aXN0cyhgJyR7ZGVzdH0nIGFscmVhZHkgZXhpc3RzYCk7XG4gIH1cblxuICByZXR1cm4gZGVzdFN0YXQ7XG59XG5cbi8qIGNvcHkgZmlsZSB0byBkZXN0ICovXG5hc3luYyBmdW5jdGlvbiBjb3B5RmlsZShcbiAgc3JjOiBzdHJpbmcgfCBVUkwsXG4gIGRlc3Q6IHN0cmluZyB8IFVSTCxcbiAgb3B0aW9uczogSW50ZXJuYWxDb3B5T3B0aW9ucyxcbikge1xuICBhd2FpdCBlbnN1cmVWYWxpZENvcHkoc3JjLCBkZXN0LCBvcHRpb25zKTtcbiAgYXdhaXQgRGVuby5jb3B5RmlsZShzcmMsIGRlc3QpO1xuICBpZiAob3B0aW9ucy5wcmVzZXJ2ZVRpbWVzdGFtcHMpIHtcbiAgICBjb25zdCBzdGF0SW5mbyA9IGF3YWl0IERlbm8uc3RhdChzcmMpO1xuICAgIGFzc2VydElzRGF0ZShzdGF0SW5mby5hdGltZSwgXCJzdGF0SW5mby5hdGltZVwiKTtcbiAgICBhc3NlcnRJc0RhdGUoc3RhdEluZm8ubXRpbWUsIFwic3RhdEluZm8ubXRpbWVcIik7XG4gICAgYXdhaXQgRGVuby51dGltZShkZXN0LCBzdGF0SW5mby5hdGltZSwgc3RhdEluZm8ubXRpbWUpO1xuICB9XG59XG4vKiBjb3B5IGZpbGUgdG8gZGVzdCBzeW5jaHJvbm91c2x5ICovXG5mdW5jdGlvbiBjb3B5RmlsZVN5bmMoXG4gIHNyYzogc3RyaW5nIHwgVVJMLFxuICBkZXN0OiBzdHJpbmcgfCBVUkwsXG4gIG9wdGlvbnM6IEludGVybmFsQ29weU9wdGlvbnMsXG4pIHtcbiAgZW5zdXJlVmFsaWRDb3B5U3luYyhzcmMsIGRlc3QsIG9wdGlvbnMpO1xuICBEZW5vLmNvcHlGaWxlU3luYyhzcmMsIGRlc3QpO1xuICBpZiAob3B0aW9ucy5wcmVzZXJ2ZVRpbWVzdGFtcHMpIHtcbiAgICBjb25zdCBzdGF0SW5mbyA9IERlbm8uc3RhdFN5bmMoc3JjKTtcbiAgICBhc3NlcnRJc0RhdGUoc3RhdEluZm8uYXRpbWUsIFwic3RhdEluZm8uYXRpbWVcIik7XG4gICAgYXNzZXJ0SXNEYXRlKHN0YXRJbmZvLm10aW1lLCBcInN0YXRJbmZvLm10aW1lXCIpO1xuICAgIERlbm8udXRpbWVTeW5jKGRlc3QsIHN0YXRJbmZvLmF0aW1lLCBzdGF0SW5mby5tdGltZSk7XG4gIH1cbn1cblxuLyogY29weSBzeW1saW5rIHRvIGRlc3QgKi9cbmFzeW5jIGZ1bmN0aW9uIGNvcHlTeW1MaW5rKFxuICBzcmM6IHN0cmluZyB8IFVSTCxcbiAgZGVzdDogc3RyaW5nIHwgVVJMLFxuICBvcHRpb25zOiBJbnRlcm5hbENvcHlPcHRpb25zLFxuKSB7XG4gIGF3YWl0IGVuc3VyZVZhbGlkQ29weShzcmMsIGRlc3QsIG9wdGlvbnMpO1xuICBjb25zdCBvcmlnaW5TcmNGaWxlUGF0aCA9IGF3YWl0IERlbm8ucmVhZExpbmsoc3JjKTtcbiAgY29uc3QgdHlwZSA9IGdldEZpbGVJbmZvVHlwZShhd2FpdCBEZW5vLmxzdGF0KHNyYykpO1xuICBpZiAoaXNXaW5kb3dzKSB7XG4gICAgYXdhaXQgRGVuby5zeW1saW5rKG9yaWdpblNyY0ZpbGVQYXRoLCBkZXN0LCB7XG4gICAgICB0eXBlOiB0eXBlID09PSBcImRpclwiID8gXCJkaXJcIiA6IFwiZmlsZVwiLFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGF3YWl0IERlbm8uc3ltbGluayhvcmlnaW5TcmNGaWxlUGF0aCwgZGVzdCk7XG4gIH1cbiAgaWYgKG9wdGlvbnMucHJlc2VydmVUaW1lc3RhbXBzKSB7XG4gICAgY29uc3Qgc3RhdEluZm8gPSBhd2FpdCBEZW5vLmxzdGF0KHNyYyk7XG4gICAgYXNzZXJ0SXNEYXRlKHN0YXRJbmZvLmF0aW1lLCBcInN0YXRJbmZvLmF0aW1lXCIpO1xuICAgIGFzc2VydElzRGF0ZShzdGF0SW5mby5tdGltZSwgXCJzdGF0SW5mby5tdGltZVwiKTtcbiAgICBhd2FpdCBEZW5vLnV0aW1lKGRlc3QsIHN0YXRJbmZvLmF0aW1lLCBzdGF0SW5mby5tdGltZSk7XG4gIH1cbn1cblxuLyogY29weSBzeW1saW5rIHRvIGRlc3Qgc3luY2hyb25vdXNseSAqL1xuZnVuY3Rpb24gY29weVN5bWxpbmtTeW5jKFxuICBzcmM6IHN0cmluZyB8IFVSTCxcbiAgZGVzdDogc3RyaW5nIHwgVVJMLFxuICBvcHRpb25zOiBJbnRlcm5hbENvcHlPcHRpb25zLFxuKSB7XG4gIGVuc3VyZVZhbGlkQ29weVN5bmMoc3JjLCBkZXN0LCBvcHRpb25zKTtcbiAgY29uc3Qgb3JpZ2luU3JjRmlsZVBhdGggPSBEZW5vLnJlYWRMaW5rU3luYyhzcmMpO1xuICBjb25zdCB0eXBlID0gZ2V0RmlsZUluZm9UeXBlKERlbm8ubHN0YXRTeW5jKHNyYykpO1xuICBpZiAoaXNXaW5kb3dzKSB7XG4gICAgRGVuby5zeW1saW5rU3luYyhvcmlnaW5TcmNGaWxlUGF0aCwgZGVzdCwge1xuICAgICAgdHlwZTogdHlwZSA9PT0gXCJkaXJcIiA/IFwiZGlyXCIgOiBcImZpbGVcIixcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBEZW5vLnN5bWxpbmtTeW5jKG9yaWdpblNyY0ZpbGVQYXRoLCBkZXN0KTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLnByZXNlcnZlVGltZXN0YW1wcykge1xuICAgIGNvbnN0IHN0YXRJbmZvID0gRGVuby5sc3RhdFN5bmMoc3JjKTtcbiAgICBhc3NlcnRJc0RhdGUoc3RhdEluZm8uYXRpbWUsIFwic3RhdEluZm8uYXRpbWVcIik7XG4gICAgYXNzZXJ0SXNEYXRlKHN0YXRJbmZvLm10aW1lLCBcInN0YXRJbmZvLm10aW1lXCIpO1xuICAgIERlbm8udXRpbWVTeW5jKGRlc3QsIHN0YXRJbmZvLmF0aW1lLCBzdGF0SW5mby5tdGltZSk7XG4gIH1cbn1cblxuLyogY29weSBmb2xkZXIgZnJvbSBzcmMgdG8gZGVzdC4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNvcHlEaXIoXG4gIHNyYzogc3RyaW5nIHwgVVJMLFxuICBkZXN0OiBzdHJpbmcgfCBVUkwsXG4gIG9wdGlvbnM6IENvcHlPcHRpb25zLFxuKSB7XG4gIGNvbnN0IGRlc3RTdGF0ID0gYXdhaXQgZW5zdXJlVmFsaWRDb3B5KHNyYywgZGVzdCwge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgaXNGb2xkZXI6IHRydWUsXG4gIH0pO1xuXG4gIGlmICghZGVzdFN0YXQpIHtcbiAgICBhd2FpdCBlbnN1cmVEaXIoZGVzdCk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5wcmVzZXJ2ZVRpbWVzdGFtcHMpIHtcbiAgICBjb25zdCBzcmNTdGF0SW5mbyA9IGF3YWl0IERlbm8uc3RhdChzcmMpO1xuICAgIGFzc2VydElzRGF0ZShzcmNTdGF0SW5mby5hdGltZSwgXCJzdGF0SW5mby5hdGltZVwiKTtcbiAgICBhc3NlcnRJc0RhdGUoc3JjU3RhdEluZm8ubXRpbWUsIFwic3RhdEluZm8ubXRpbWVcIik7XG4gICAgYXdhaXQgRGVuby51dGltZShkZXN0LCBzcmNTdGF0SW5mby5hdGltZSwgc3JjU3RhdEluZm8ubXRpbWUpO1xuICB9XG5cbiAgc3JjID0gdG9QYXRoU3RyaW5nKHNyYyk7XG4gIGRlc3QgPSB0b1BhdGhTdHJpbmcoZGVzdCk7XG5cbiAgY29uc3QgcHJvbWlzZXMgPSBbXTtcblxuICBmb3IgYXdhaXQgKGNvbnN0IGVudHJ5IG9mIERlbm8ucmVhZERpcihzcmMpKSB7XG4gICAgY29uc3Qgc3JjUGF0aCA9IGpvaW4oc3JjLCBlbnRyeS5uYW1lKTtcbiAgICBjb25zdCBkZXN0UGF0aCA9IGpvaW4oZGVzdCwgYmFzZW5hbWUoc3JjUGF0aCBhcyBzdHJpbmcpKTtcbiAgICBpZiAoZW50cnkuaXNTeW1saW5rKSB7XG4gICAgICBwcm9taXNlcy5wdXNoKGNvcHlTeW1MaW5rKHNyY1BhdGgsIGRlc3RQYXRoLCBvcHRpb25zKSk7XG4gICAgfSBlbHNlIGlmIChlbnRyeS5pc0RpcmVjdG9yeSkge1xuICAgICAgcHJvbWlzZXMucHVzaChjb3B5RGlyKHNyY1BhdGgsIGRlc3RQYXRoLCBvcHRpb25zKSk7XG4gICAgfSBlbHNlIGlmIChlbnRyeS5pc0ZpbGUpIHtcbiAgICAgIHByb21pc2VzLnB1c2goY29weUZpbGUoc3JjUGF0aCwgZGVzdFBhdGgsIG9wdGlvbnMpKTtcbiAgICB9XG4gIH1cblxuICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG59XG5cbi8qIGNvcHkgZm9sZGVyIGZyb20gc3JjIHRvIGRlc3Qgc3luY2hyb25vdXNseSAqL1xuZnVuY3Rpb24gY29weURpclN5bmMoXG4gIHNyYzogc3RyaW5nIHwgVVJMLFxuICBkZXN0OiBzdHJpbmcgfCBVUkwsXG4gIG9wdGlvbnM6IENvcHlPcHRpb25zLFxuKSB7XG4gIGNvbnN0IGRlc3RTdGF0ID0gZW5zdXJlVmFsaWRDb3B5U3luYyhzcmMsIGRlc3QsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGlzRm9sZGVyOiB0cnVlLFxuICB9KTtcblxuICBpZiAoIWRlc3RTdGF0KSB7XG4gICAgZW5zdXJlRGlyU3luYyhkZXN0KTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLnByZXNlcnZlVGltZXN0YW1wcykge1xuICAgIGNvbnN0IHNyY1N0YXRJbmZvID0gRGVuby5zdGF0U3luYyhzcmMpO1xuICAgIGFzc2VydElzRGF0ZShzcmNTdGF0SW5mby5hdGltZSwgXCJzdGF0SW5mby5hdGltZVwiKTtcbiAgICBhc3NlcnRJc0RhdGUoc3JjU3RhdEluZm8ubXRpbWUsIFwic3RhdEluZm8ubXRpbWVcIik7XG4gICAgRGVuby51dGltZVN5bmMoZGVzdCwgc3JjU3RhdEluZm8uYXRpbWUsIHNyY1N0YXRJbmZvLm10aW1lKTtcbiAgfVxuXG4gIHNyYyA9IHRvUGF0aFN0cmluZyhzcmMpO1xuICBkZXN0ID0gdG9QYXRoU3RyaW5nKGRlc3QpO1xuXG4gIGZvciAoY29uc3QgZW50cnkgb2YgRGVuby5yZWFkRGlyU3luYyhzcmMpKSB7XG4gICAgY29uc3Qgc3JjUGF0aCA9IGpvaW4oc3JjLCBlbnRyeS5uYW1lKTtcbiAgICBjb25zdCBkZXN0UGF0aCA9IGpvaW4oZGVzdCwgYmFzZW5hbWUoc3JjUGF0aCBhcyBzdHJpbmcpKTtcbiAgICBpZiAoZW50cnkuaXNTeW1saW5rKSB7XG4gICAgICBjb3B5U3ltbGlua1N5bmMoc3JjUGF0aCwgZGVzdFBhdGgsIG9wdGlvbnMpO1xuICAgIH0gZWxzZSBpZiAoZW50cnkuaXNEaXJlY3RvcnkpIHtcbiAgICAgIGNvcHlEaXJTeW5jKHNyY1BhdGgsIGRlc3RQYXRoLCBvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKGVudHJ5LmlzRmlsZSkge1xuICAgICAgY29weUZpbGVTeW5jKHNyY1BhdGgsIGRlc3RQYXRoLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBc3luY2hyb25vdXNseSBjb3B5IGEgZmlsZSBvciBkaXJlY3RvcnkgKGFsb25nIHdpdGggaXRzIGNvbnRlbnRzKSwgbGlrZVxuICoge0BsaW5rY29kZSBodHRwczovL3d3dy5pYm0uY29tL2RvY3MvZW4vYWl4LzcuMz90b3BpYz1jLWNwLWNvbW1hbmQjY3BfX2NwX2ZsYWdyIHwgY3AgLXJ9LlxuICpcbiAqIEJvdGggYHNyY2AgYW5kIGBkZXN0YCBtdXN0IGJvdGggYmUgYSBmaWxlIG9yIGRpcmVjdG9yeS5cbiAqXG4gKiBSZXF1aXJlcyBgLS1hbGxvdy1yZWFkYCBhbmQgYC0tYWxsb3ctd3JpdGVgIHBlcm1pc3Npb25zLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZG9jcy5kZW5vLmNvbS9ydW50aW1lL21hbnVhbC9iYXNpY3MvcGVybWlzc2lvbnMjZmlsZS1zeXN0ZW0tYWNjZXNzfVxuICogZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gRGVubydzIHBlcm1pc3Npb25zIHN5c3RlbS5cbiAqXG4gKiBAcGFyYW0gc3JjIFRoZSBzb3VyY2UgZmlsZS9kaXJlY3RvcnkgcGF0aCBhcyBhIHN0cmluZyBvciBVUkwuXG4gKiBAcGFyYW0gZGVzdCBUaGUgZGVzdGluYXRpb24gZmlsZS9kaXJlY3RvcnkgcGF0aCBhcyBhIHN0cmluZyBvciBVUkwuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBjb3B5aW5nLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIGNvcHkgb3BlcmF0aW9uIGNvbXBsZXRlcy5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgdHMgaWdub3JlXG4gKiBpbXBvcnQgeyBjb3B5IH0gZnJvbSBcIkBzdGQvZnMvY29weVwiO1xuICpcbiAqIGF3YWl0IGNvcHkoXCIuL2Zvb1wiLCBcIi4vYmFyXCIpO1xuICogYGBgXG4gKlxuICogVGhpcyB3aWxsIGNvcHkgdGhlIGZpbGUgb3IgZGlyZWN0b3J5IGF0IGAuL2Zvb2AgdG8gYC4vYmFyYCB3aXRob3V0XG4gKiBvdmVyd3JpdGluZy5cbiAqXG4gKiBAZXhhbXBsZSBPdmVyd3JpdGluZyBmaWxlcy9kaXJlY3Rvcmllc1xuICogYGBgdHMgaWdub3JlXG4gKiBpbXBvcnQgeyBjb3B5IH0gZnJvbSBcIkBzdGQvZnMvY29weVwiO1xuICpcbiAqIGF3YWl0IGNvcHkoXCIuL2Zvb1wiLCBcIi4vYmFyXCIsIHsgb3ZlcndyaXRlOiB0cnVlIH0pO1xuICogYGBgXG4gKlxuICogVGhpcyB3aWxsIGNvcHkgdGhlIGZpbGUgb3IgZGlyZWN0b3J5IGF0IGAuL2Zvb2AgdG8gYC4vYmFyYCBhbmQgb3ZlcndyaXRlXG4gKiBhbnkgZXhpc3RpbmcgZmlsZXMgb3IgZGlyZWN0b3JpZXMuXG4gKlxuICogQGV4YW1wbGUgUHJlc2VydmluZyB0aW1lc3RhbXBzXG4gKiBgYGB0cyBpZ25vcmVcbiAqIGltcG9ydCB7IGNvcHkgfSBmcm9tIFwiQHN0ZC9mcy9jb3B5XCI7XG4gKlxuICogYXdhaXQgY29weShcIi4vZm9vXCIsIFwiLi9iYXJcIiwgeyBwcmVzZXJ2ZVRpbWVzdGFtcHM6IHRydWUgfSk7XG4gKiBgYGBcbiAqXG4gKiBUaGlzIHdpbGwgY29weSB0aGUgZmlsZSBvciBkaXJlY3RvcnkgYXQgYC4vZm9vYCB0byBgLi9iYXJgIGFuZCBzZXQgdGhlXG4gKiBsYXN0IG1vZGlmaWNhdGlvbiBhbmQgYWNjZXNzIHRpbWVzIHRvIHRoZSBvbmVzIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb3B5KFxuICBzcmM6IHN0cmluZyB8IFVSTCxcbiAgZGVzdDogc3RyaW5nIHwgVVJMLFxuICBvcHRpb25zOiBDb3B5T3B0aW9ucyA9IHt9LFxuKSB7XG4gIHNyYyA9IHJlc29sdmUodG9QYXRoU3RyaW5nKHNyYykpO1xuICBkZXN0ID0gcmVzb2x2ZSh0b1BhdGhTdHJpbmcoZGVzdCkpO1xuXG4gIGlmIChzcmMgPT09IGRlc3QpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJTb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGNhbm5vdCBiZSB0aGUgc2FtZVwiKTtcbiAgfVxuXG4gIGNvbnN0IHNyY1N0YXQgPSBhd2FpdCBEZW5vLmxzdGF0KHNyYyk7XG5cbiAgaWYgKHNyY1N0YXQuaXNEaXJlY3RvcnkgJiYgaXNTdWJkaXIoc3JjLCBkZXN0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBDYW5ub3QgY29weSAnJHtzcmN9JyB0byBhIHN1YmRpcmVjdG9yeSBvZiBpdHNlbGY6ICcke2Rlc3R9J2AsXG4gICAgKTtcbiAgfVxuXG4gIGlmIChzcmNTdGF0LmlzU3ltbGluaykge1xuICAgIGF3YWl0IGNvcHlTeW1MaW5rKHNyYywgZGVzdCwgb3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoc3JjU3RhdC5pc0RpcmVjdG9yeSkge1xuICAgIGF3YWl0IGNvcHlEaXIoc3JjLCBkZXN0LCBvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChzcmNTdGF0LmlzRmlsZSkge1xuICAgIGF3YWl0IGNvcHlGaWxlKHNyYywgZGVzdCwgb3B0aW9ucyk7XG4gIH1cbn1cblxuLyoqXG4gKiBTeW5jaHJvbm91c2x5IGNvcHkgYSBmaWxlIG9yIGRpcmVjdG9yeSAoYWxvbmcgd2l0aCBpdHMgY29udGVudHMpLCBsaWtlXG4gKiB7QGxpbmtjb2RlIGh0dHBzOi8vd3d3LmlibS5jb20vZG9jcy9lbi9haXgvNy4zP3RvcGljPWMtY3AtY29tbWFuZCNjcF9fY3BfZmxhZ3IgfCBjcCAtcn0uXG4gKlxuICogQm90aCBgc3JjYCBhbmQgYGRlc3RgIG11c3QgYm90aCBiZSBhIGZpbGUgb3IgZGlyZWN0b3J5LlxuICpcbiAqIFJlcXVpcmVzIGAtLWFsbG93LXJlYWRgIGFuZCBgLS1hbGxvdy13cml0ZWAgcGVybWlzc2lvbnMuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmRlbm8uY29tL3J1bnRpbWUvbWFudWFsL2Jhc2ljcy9wZXJtaXNzaW9ucyNmaWxlLXN5c3RlbS1hY2Nlc3N9XG4gKiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBEZW5vJ3MgcGVybWlzc2lvbnMgc3lzdGVtLlxuICpcbiAqIEBwYXJhbSBzcmMgVGhlIHNvdXJjZSBmaWxlL2RpcmVjdG9yeSBwYXRoIGFzIGEgc3RyaW5nIG9yIFVSTC5cbiAqIEBwYXJhbSBkZXN0IFRoZSBkZXN0aW5hdGlvbiBmaWxlL2RpcmVjdG9yeSBwYXRoIGFzIGEgc3RyaW5nIG9yIFVSTC5cbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIGNvcHlpbmcuXG4gKlxuICogQHJldHVybnMgQSB2b2lkIHZhbHVlIHRoYXQgcmV0dXJucyBvbmNlIHRoZSBjb3B5IG9wZXJhdGlvbiBjb21wbGV0ZXMuXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgY29weVN5bmMgfSBmcm9tIFwiQHN0ZC9mcy9jb3B5XCI7XG4gKlxuICogY29weVN5bmMoXCIuL2Zvb1wiLCBcIi4vYmFyXCIpO1xuICogYGBgXG4gKlxuICogVGhpcyB3aWxsIGNvcHkgdGhlIGZpbGUgb3IgZGlyZWN0b3J5IGF0IGAuL2Zvb2AgdG8gYC4vYmFyYCB3aXRob3V0XG4gKiBvdmVyd3JpdGluZy5cbiAqXG4gKiBAZXhhbXBsZSBPdmVyd3JpdGluZyBmaWxlcy9kaXJlY3Rvcmllc1xuICogYGBgdHMgaWdub3JlXG4gKiBpbXBvcnQgeyBjb3B5U3luYyB9IGZyb20gXCJAc3RkL2ZzL2NvcHlcIjtcbiAqXG4gKiBjb3B5U3luYyhcIi4vZm9vXCIsIFwiLi9iYXJcIiwgeyBvdmVyd3JpdGU6IHRydWUgfSk7XG4gKiBgYGBcbiAqXG4gKiBUaGlzIHdpbGwgY29weSB0aGUgZmlsZSBvciBkaXJlY3RvcnkgYXQgYC4vZm9vYCB0byBgLi9iYXJgIGFuZCBvdmVyd3JpdGVcbiAqIGFueSBleGlzdGluZyBmaWxlcyBvciBkaXJlY3Rvcmllcy5cbiAqXG4gKiBAZXhhbXBsZSBQcmVzZXJ2aW5nIHRpbWVzdGFtcHNcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgY29weVN5bmMgfSBmcm9tIFwiQHN0ZC9mcy9jb3B5XCI7XG4gKlxuICogY29weVN5bmMoXCIuL2Zvb1wiLCBcIi4vYmFyXCIsIHsgcHJlc2VydmVUaW1lc3RhbXBzOiB0cnVlIH0pO1xuICogYGBgXG4gKlxuICogVGhpcyB3aWxsIGNvcHkgdGhlIGZpbGUgb3IgZGlyZWN0b3J5IGF0IGAuL2Zvb2AgdG8gYC4vYmFyYCBhbmQgc2V0IHRoZVxuICogbGFzdCBtb2RpZmljYXRpb24gYW5kIGFjY2VzcyB0aW1lcyB0byB0aGUgb25lcyBvZiB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29weVN5bmMoXG4gIHNyYzogc3RyaW5nIHwgVVJMLFxuICBkZXN0OiBzdHJpbmcgfCBVUkwsXG4gIG9wdGlvbnM6IENvcHlPcHRpb25zID0ge30sXG4pIHtcbiAgc3JjID0gcmVzb2x2ZSh0b1BhdGhTdHJpbmcoc3JjKSk7XG4gIGRlc3QgPSByZXNvbHZlKHRvUGF0aFN0cmluZyhkZXN0KSk7XG5cbiAgaWYgKHNyYyA9PT0gZGVzdCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlNvdXJjZSBhbmQgZGVzdGluYXRpb24gY2Fubm90IGJlIHRoZSBzYW1lXCIpO1xuICB9XG5cbiAgY29uc3Qgc3JjU3RhdCA9IERlbm8ubHN0YXRTeW5jKHNyYyk7XG5cbiAgaWYgKHNyY1N0YXQuaXNEaXJlY3RvcnkgJiYgaXNTdWJkaXIoc3JjLCBkZXN0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBDYW5ub3QgY29weSAnJHtzcmN9JyB0byBhIHN1YmRpcmVjdG9yeSBvZiBpdHNlbGY6ICcke2Rlc3R9J2AsXG4gICAgKTtcbiAgfVxuXG4gIGlmIChzcmNTdGF0LmlzU3ltbGluaykge1xuICAgIGNvcHlTeW1saW5rU3luYyhzcmMsIGRlc3QsIG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKHNyY1N0YXQuaXNEaXJlY3RvcnkpIHtcbiAgICBjb3B5RGlyU3luYyhzcmMsIGRlc3QsIG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKHNyY1N0YXQuaXNGaWxlKSB7XG4gICAgY29weUZpbGVTeW5jKHNyYywgZGVzdCwgb3B0aW9ucyk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFFckQsU0FBUyxRQUFRLFFBQVEsZ0NBQWdDO0FBQ3pELFNBQVMsSUFBSSxRQUFRLDRCQUE0QjtBQUNqRCxTQUFTLE9BQU8sUUFBUSwrQkFBK0I7QUFDdkQsU0FBUyxTQUFTLEVBQUUsYUFBYSxRQUFRLGtCQUFrQjtBQUMzRCxTQUFTLGVBQWUsUUFBUSwyQkFBMkI7QUFDM0QsU0FBUyxZQUFZLFFBQVEsdUJBQXVCO0FBQ3BELFNBQVMsUUFBUSxRQUFRLGtCQUFrQjtBQUUzQyxtQ0FBbUM7QUFDbkMsTUFBTSxZQUFZLEFBQUMsV0FBbUIsSUFBSSxFQUFFLE1BQU0sT0FBTztBQTRCekQsU0FBUyxhQUFhLElBQWlCLEVBQUUsSUFBWTtFQUNuRCxJQUFJLFNBQVMsTUFBTTtJQUNqQixNQUFNLElBQUksTUFBTSxHQUFHLEtBQUssZUFBZSxDQUFDO0VBQzFDO0FBQ0Y7QUFFQSxlQUFlLGdCQUNiLEdBQWlCLEVBQ2pCLElBQWtCLEVBQ2xCLE9BQTRCO0VBRTVCLElBQUk7RUFFSixJQUFJO0lBQ0YsV0FBVyxNQUFNLEtBQUssS0FBSyxDQUFDO0VBQzlCLEVBQUUsT0FBTyxLQUFLO0lBQ1osSUFBSSxlQUFlLEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRTtNQUN2QztJQUNGO0lBQ0Es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 +// denoCacheMetadata=940947074505686398,1924711350815213423
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/385bb16ccbe5833897df28ba737d9f998e1c7bbed9de7a151df15888630ac12a.js b/vendor/gen/https/jsr.io/385bb16ccbe5833897df28ba737d9f998e1c7bbed9de7a151df15888630ac12a.js new file mode 100644 index 0000000..5a76233 --- /dev/null +++ b/vendor/gen/https/jsr.io/385bb16ccbe5833897df28ba737d9f998e1c7bbed9de7a151df15888630ac12a.js @@ -0,0 +1,294 @@ +import { dirname, extname, fromFileUrl, SEPARATOR, toFileUrl } from "jsr:@std/path@^1.0.6"; +import { instantiate, WasmWorkspace } from "./wasm/loader.generated.js"; +export function findWorkspace(cwd, entryPoints, configPath) { + const cwdFileUrl = toFileUrl(cwd); + if (!cwdFileUrl.pathname.endsWith("/")) { + cwdFileUrl.pathname += "/"; + } + let entrypoints; + let isConfigFile = false; + if (configPath !== undefined) { + entrypoints = [ + configPath + ]; + isConfigFile = true; + } else if (Array.isArray(entryPoints)) { + entrypoints = entryPoints.flatMap((entrypoint)=>{ + let specifier; + if (typeof entrypoint === "string") { + specifier = entrypoint; + } else { + specifier = entrypoint.in; + } + const url = new URL(specifier, cwdFileUrl.href); + if (url.protocol === "file:") { + return [ + dirname(fromFileUrl(url.href)) + ]; + } else { + return []; + } + }); + } else if (typeof entryPoints === "object") { + entrypoints = Object.values(entryPoints).flatMap((entrypoint)=>{ + const url = new URL(entrypoint, cwdFileUrl.href); + if (url.protocol === "file:") { + return [ + dirname(fromFileUrl(url.href)) + ]; + } else { + return []; + } + }); + } else { + entrypoints = []; + } + if (entrypoints.length === 0) { + entrypoints = [ + cwd + ]; + } + instantiate(); + return WasmWorkspace.discover(entrypoints, isConfigFile); +} +export function mediaTypeToLoader(mediaType) { + switch(mediaType){ + case "JavaScript": + case "Mjs": + return "js"; + case "JSX": + return "jsx"; + case "TypeScript": + case "Mts": + return "ts"; + case "TSX": + return "tsx"; + case "Json": + return "json"; + default: + return null; + } +} +/** + * Turn a URL into an {@link EsbuildResolution} by splitting the URL into a + * namespace and path. + * + * For file URLs, the path returned is a file path not a URL path representing a + * file. + */ export function urlToEsbuildResolution(url) { + if (url.protocol === "file:") { + return { + path: fromFileUrl(url), + namespace: "file" + }; + } + const namespace = url.protocol.slice(0, -1); + const path = url.href.slice(namespace.length + 1); + return { + path, + namespace + }; +} +/** + * Turn an {@link EsbuildResolution} into a URL by joining the namespace and + * path into a URL string. + * + * For file URLs, the path is interpreted as a file path not as a URL path + * representing a file. + */ export function esbuildResolutionToURL(specifier) { + if (specifier.namespace === "file") { + return toFileUrl(specifier.path); + } + return new URL(`${specifier.namespace}:${specifier.path}`); +} +export function mapContentType(specifier, contentType) { + if (contentType !== null) { + const contentTypes = contentType.split(";"); + const mediaType = contentTypes[0].toLowerCase(); + switch(mediaType){ + case "application/typescript": + case "text/typescript": + case "video/vnd.dlna.mpeg-tts": + case "video/mp2t": + case "application/x-typescript": + return mapJsLikeExtension(specifier, "TypeScript"); + case "application/javascript": + case "text/javascript": + case "application/ecmascript": + case "text/ecmascript": + case "application/x-javascript": + case "application/node": + return mapJsLikeExtension(specifier, "JavaScript"); + case "text/jsx": + return "JSX"; + case "text/tsx": + return "TSX"; + case "application/json": + case "text/json": + return "Json"; + case "application/wasm": + return "Wasm"; + case "text/plain": + case "application/octet-stream": + return mediaTypeFromSpecifier(specifier); + default: + return "Unknown"; + } + } else { + return mediaTypeFromSpecifier(specifier); + } +} +function mapJsLikeExtension(specifier, defaultType) { + const path = specifier.pathname; + switch(extname(path)){ + case ".jsx": + return "JSX"; + case ".mjs": + return "Mjs"; + case ".cjs": + return "Cjs"; + case ".tsx": + return "TSX"; + case ".ts": + if (path.endsWith(".d.ts")) { + return "Dts"; + } else { + return defaultType; + } + case ".mts": + { + if (path.endsWith(".d.mts")) { + return "Dmts"; + } else { + return defaultType == "JavaScript" ? "Mjs" : "Mts"; + } + } + case ".cts": + { + if (path.endsWith(".d.cts")) { + return "Dcts"; + } else { + return defaultType == "JavaScript" ? "Cjs" : "Cts"; + } + } + default: + return defaultType; + } +} +export function mediaTypeFromSpecifier(specifier) { + const path = specifier.pathname; + switch(extname(path)){ + case "": + if (path.endsWith("/.tsbuildinfo")) { + return "TsBuildInfo"; + } else { + return "Unknown"; + } + case ".ts": + if (path.endsWith(".d.ts")) { + return "Dts"; + } else { + return "TypeScript"; + } + case ".mts": + if (path.endsWith(".d.mts")) { + return "Dmts"; + } else { + return "Mts"; + } + case ".cts": + if (path.endsWith(".d.cts")) { + return "Dcts"; + } else { + return "Cts"; + } + case ".tsx": + return "TSX"; + case ".js": + return "JavaScript"; + case ".jsx": + return "JSX"; + case ".mjs": + return "Mjs"; + case ".cjs": + return "Cjs"; + case ".json": + return "Json"; + case ".wasm": + return "Wasm"; + case ".tsbuildinfo": + return "TsBuildInfo"; + case ".map": + return "SourceMap"; + default: + return "Unknown"; + } +} +export function parseNpmSpecifier(specifier) { + if (specifier.protocol !== "npm:") throw new Error("Invalid npm specifier"); + const path = specifier.pathname; + const startIndex = path[0] === "/" ? 1 : 0; + let pathStartIndex; + let versionStartIndex; + if (path[startIndex] === "@") { + const firstSlash = path.indexOf("/", startIndex); + if (firstSlash === -1) { + throw new Error(`Invalid npm specifier: ${specifier}`); + } + pathStartIndex = path.indexOf("/", firstSlash + 1); + versionStartIndex = path.indexOf("@", firstSlash + 1); + } else { + pathStartIndex = path.indexOf("/", startIndex); + versionStartIndex = path.indexOf("@", startIndex); + } + if (pathStartIndex === -1) pathStartIndex = path.length; + if (versionStartIndex === -1) versionStartIndex = path.length; + if (versionStartIndex > pathStartIndex) { + versionStartIndex = pathStartIndex; + } + if (startIndex === versionStartIndex) { + throw new Error(`Invalid npm specifier: ${specifier}`); + } + return { + name: path.slice(startIndex, versionStartIndex), + version: versionStartIndex === pathStartIndex ? null : path.slice(versionStartIndex + 1, pathStartIndex), + path: pathStartIndex === path.length ? null : path.slice(pathStartIndex) + }; +} +export function parseJsrSpecifier(specifier) { + if (specifier.protocol !== "jsr:") throw new Error("Invalid jsr specifier"); + const path = specifier.pathname; + const startIndex = path[0] === "/" ? 1 : 0; + if (path[startIndex] !== "@") { + throw new Error(`Invalid jsr specifier: ${specifier}`); + } + const firstSlash = path.indexOf("/", startIndex); + if (firstSlash === -1) { + throw new Error(`Invalid jsr specifier: ${specifier}`); + } + let pathStartIndex = path.indexOf("/", firstSlash + 1); + let versionStartIndex = path.indexOf("@", firstSlash + 1); + if (pathStartIndex === -1) pathStartIndex = path.length; + if (versionStartIndex === -1) versionStartIndex = path.length; + if (versionStartIndex > pathStartIndex) { + versionStartIndex = pathStartIndex; + } + if (startIndex === versionStartIndex) { + throw new Error(`Invalid jsr specifier: ${specifier}`); + } + return { + name: path.slice(startIndex, versionStartIndex), + version: versionStartIndex === pathStartIndex ? null : path.slice(versionStartIndex + 1, pathStartIndex), + path: pathStartIndex === path.length ? null : path.slice(pathStartIndex) + }; +} +const SLASH_NODE_MODULES_SLASH = `${SEPARATOR}node_modules${SEPARATOR}`; +const SLASH_NODE_MODULES = `${SEPARATOR}node_modules`; +export function isInNodeModules(path) { + return path.includes(SLASH_NODE_MODULES_SLASH) || path.endsWith(SLASH_NODE_MODULES); +} +export function isNodeModulesResolution(args) { + return (args.namespace === "" || args.namespace === "file") && (isInNodeModules(args.resolveDir) || isInNodeModules(args.path) || isInNodeModules(args.importer)); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BsdWNhL2VzYnVpbGQtZGVuby1sb2FkZXIvMC4xMS4xL3NyYy9zaGFyZWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlybmFtZSwgZXh0bmFtZSwgZnJvbUZpbGVVcmwsIFNFUEFSQVRPUiwgdG9GaWxlVXJsIH0gZnJvbSBcImpzcjpAc3RkL3BhdGhAXjEuMC42XCI7XG5pbXBvcnQgdHlwZSB7IE1lZGlhVHlwZSB9IGZyb20gXCIuL2Rlbm8udHNcIjtcbmltcG9ydCB0eXBlICogYXMgZXNidWlsZCBmcm9tIFwiLi9lc2J1aWxkX3R5cGVzLnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZSwgV2FzbVdvcmtzcGFjZSB9IGZyb20gXCIuL3dhc20vbG9hZGVyLmdlbmVyYXRlZC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBCdWlsZE9wdGlvbnMgfSBmcm9tIFwiLi9lc2J1aWxkX3R5cGVzLnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGVyIHtcbiAgcmVzb2x2ZShzcGVjaWZpZXI6IFVSTCk6IFByb21pc2U8TG9hZGVyUmVzb2x1dGlvbj47XG4gIGxvYWRFc20oc3BlY2lmaWVyOiBVUkwpOiBQcm9taXNlPGVzYnVpbGQuT25Mb2FkUmVzdWx0IHwgdW5kZWZpbmVkPjtcblxuICBwYWNrYWdlSWRGcm9tTmFtZUluUGFja2FnZT8oXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHBhcmVudFBhY2thZ2VJZDogc3RyaW5nLFxuICApOiBzdHJpbmcgfCBudWxsO1xuICBub2RlTW9kdWxlc0RpckZvclBhY2thZ2U/KG5wbVBhY2thZ2VJZD86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPjtcblxuICBbU3ltYm9sLmRpc3Bvc2VdPygpOiB2b2lkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZFdvcmtzcGFjZShcbiAgY3dkOiBzdHJpbmcsXG4gIGVudHJ5UG9pbnRzOiBCdWlsZE9wdGlvbnNbXCJlbnRyeVBvaW50c1wiXSxcbiAgY29uZmlnUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuKTogV2FzbVdvcmtzcGFjZSB7XG4gIGNvbnN0IGN3ZEZpbGVVcmwgPSB0b0ZpbGVVcmwoY3dkKTtcbiAgaWYgKCFjd2RGaWxlVXJsLnBhdGhuYW1lLmVuZHNXaXRoKFwiL1wiKSkge1xuICAgIGN3ZEZpbGVVcmwucGF0aG5hbWUgKz0gXCIvXCI7XG4gIH1cblxuICBsZXQgZW50cnlwb2ludHM6IEFycmF5PHN0cmluZz47XG4gIGxldCBpc0NvbmZpZ0ZpbGUgPSBmYWxzZTtcbiAgaWYgKGNvbmZpZ1BhdGggIT09IHVuZGVmaW5lZCkge1xuICAgIGVudHJ5cG9pbnRzID0gW2NvbmZpZ1BhdGhdO1xuICAgIGlzQ29uZmlnRmlsZSA9IHRydWU7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShlbnRyeVBvaW50cykpIHtcbiAgICBlbnRyeXBvaW50cyA9IGVudHJ5UG9pbnRzLmZsYXRNYXAoXG4gICAgICAoZW50cnlwb2ludCkgPT4ge1xuICAgICAgICBsZXQgc3BlY2lmaWVyOiBzdHJpbmc7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBlbnRyeXBvaW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgc3BlY2lmaWVyID0gZW50cnlwb2ludDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzcGVjaWZpZXIgPSBlbnRyeXBvaW50LmluO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXJsID0gbmV3IFVSTChzcGVjaWZpZXIsIGN3ZEZpbGVVcmwuaHJlZik7XG4gICAgICAgIGlmICh1cmwucHJvdG9jb2wgPT09IFwiZmlsZTpcIikge1xuICAgICAgICAgIHJldHVybiBbZGlybmFtZShmcm9tRmlsZVVybCh1cmwuaHJlZikpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZW50cnlQb2ludHMgPT09IFwib2JqZWN0XCIpIHtcbiAgICBlbnRyeXBvaW50cyA9IE9iamVjdC52YWx1ZXMoZW50cnlQb2ludHMpLmZsYXRNYXAoXG4gICAgICAoZW50cnlwb2ludCkgPT4ge1xuICAgICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKGVudHJ5cG9pbnQsIGN3ZEZpbGVVcmwuaHJlZik7XG4gICAgICAgIGlmICh1cmwucHJvdG9jb2wgPT09IFwiZmlsZTpcIikge1xuICAgICAgICAgIHJldHVybiBbZGlybmFtZShmcm9tRmlsZVVybCh1cmwuaHJlZikpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBlbnRyeXBvaW50cyA9IFtdO1xuICB9XG4gIGlmIChlbnRyeXBvaW50cy5sZW5ndGggPT09IDApIHtcbiAgICBlbnRyeXBvaW50cyA9IFtjd2RdO1xuICB9XG5cbiAgaW5zdGFudGlhdGUoKTtcbiAgcmV0dXJuIFdhc21Xb3Jrc3BhY2UuZGlzY292ZXIoZW50cnlwb2ludHMsIGlzQ29uZmlnRmlsZSk7XG59XG5cbmV4cG9ydCB0eXBlIExvYWRlclJlc29sdXRpb24gPVxuICB8IExvYWRlclJlc29sdXRpb25Fc21cbiAgfCBMb2FkZXJSZXNvbHV0aW9uTnBtXG4gIHwgTG9hZGVyUmVzb2x1dGlvbk5vZGU7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGVyUmVzb2x1dGlvbkVzbSB7XG4gIGtpbmQ6IFwiZXNtXCI7XG4gIHNwZWNpZmllcjogVVJMO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvYWRlclJlc29sdXRpb25OcG0ge1xuICBraW5kOiBcIm5wbVwiO1xuICBwYWNrYWdlSWQ6IHN0cmluZztcbiAgcGFja2FnZU5hbWU6IHN0cmluZztcbiAgcGF0aDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvYWRlclJlc29sdXRpb25Ob2RlIHtcbiAga2luZDogXCJub2RlXCI7XG4gIHBhdGg6IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lZGlhVHlwZVRvTG9hZGVyKG1lZGlhVHlwZTogTWVkaWFUeXBlKTogZXNidWlsZC5Mb2FkZXIgfCBudWxsIHtcbiAgc3dpdGNoIChtZWRpYVR5cGUpIHtcbiAgICBjYXNlIFwiSmF2YVNjcmlwdFwiOlxuICAgIGNhc2UgXCJNanNcIjpcbiAgICAgIHJldHVybiBcImpzXCI7XG4gICAgY2FzZSBcIkpTWFwiOlxuICAgICAgcmV0dXJuIFwianN4XCI7XG4gICAgY2FzZSBcIlR5cGVTY3JpcHRcIjpcbiAgICBjYXNlIFwiTXRzXCI6XG4gICAgICByZXR1cm4gXCJ0c1wiO1xuICAgIGNhc2UgXCJUU1hcIjpcbiAgICAgIHJldHVybiBcInRzeFwiO1xuICAgIGNhc2UgXCJKc29uXCI6XG4gICAgICByZXR1cm4gXCJqc29uXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKiBFc2J1aWxkJ3MgcmVwcmVzZW50YXRpb24gb2YgYSBtb2R1bGUgc3BlY2lmaWVyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBFc2J1aWxkUmVzb2x1dGlvbiB7XG4gIC8qKiBUaGUgbmFtZXNwYWNlLCBsaWtlIGBmaWxlYCwgYGh0dHBzYCwgb3IgYG5wbWAuICovXG4gIG5hbWVzcGFjZTogc3RyaW5nO1xuICAvKiogVGhlIHBhdGguIFdoZW4gdGhlIG5hbWVzcGFjZSBpcyBgZmlsZWAsIHRoaXMgaXMgYSBmaWxlIHBhdGguIE90aGVyd2lzZVxuICAgKiB0aGlzIGlzIGV2ZXJ5dGhpbmcgaW4gYSBVUkwgd2l0aCB0aGUgbmFtZXNwYWNlIGFzIHRoZSBzY2hlbWUsIGFmdGVyIHRoZVxuICAgKiBgOmAgb2YgdGhlIHNjaGVtZS4gKi9cbiAgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFR1cm4gYSBVUkwgaW50byBhbiB7QGxpbmsgRXNidWlsZFJlc29sdXRpb259IGJ5IHNwbGl0dGluZyB0aGUgVVJMIGludG8gYVxuICogbmFtZXNwYWNlIGFuZCBwYXRoLlxuICpcbiAqIEZvciBmaWxlIFVSTHMsIHRoZSBwYXRoIHJldHVybmVkIGlzIGEgZmlsZSBwYXRoIG5vdCBhIFVSTCBwYXRoIHJlcHJlc2VudGluZyBhXG4gKiBmaWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXJsVG9Fc2J1aWxkUmVzb2x1dGlvbih1cmw6IFVSTCk6IEVzYnVpbGRSZXNvbHV0aW9uIHtcbiAgaWYgKHVybC5wcm90b2NvbCA9PT0gXCJmaWxlOlwiKSB7XG4gICAgcmV0dXJuIHsgcGF0aDogZnJvbUZpbGVVcmwodXJsKSwgbmFtZXNwYWNlOiBcImZpbGVcIiB9O1xuICB9XG5cbiAgY29uc3QgbmFtZXNwYWNlID0gdXJsLnByb3RvY29sLnNsaWNlKDAsIC0xKTtcbiAgY29uc3QgcGF0aCA9IHVybC5ocmVmLnNsaWNlKG5hbWVzcGFjZS5sZW5ndGggKyAxKTtcbiAgcmV0dXJuIHsgcGF0aCwgbmFtZXNwYWNlIH07XG59XG5cbi8qKlxuICogVHVybiBhbiB7QGxpbmsgRXNidWlsZFJlc29sdXRpb259IGludG8gYSBVUkwgYnkgam9pbmluZyB0aGUgbmFtZXNwYWNlIGFuZFxuICogcGF0aCBpbnRvIGEgVVJMIHN0cmluZy5cbiAqXG4gKiBGb3IgZmlsZSBVUkxzLCB0aGUgcGF0aCBpcyBpbnRlcnByZXRlZCBhcyBhIGZpbGUgcGF0aCBub3QgYXMgYSBVUkwgcGF0aFxuICogcmVwcmVzZW50aW5nIGEgZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVzYnVpbGRSZXNvbHV0aW9uVG9VUkwoc3BlY2lmaWVyOiBFc2J1aWxkUmVzb2x1dGlvbik6IFVSTCB7XG4gIGlmIChzcGVjaWZpZXIubmFtZXNwYWNlID09PSBcImZpbGVcIikge1xuICAgIHJldHVybiB0b0ZpbGVVcmwoc3BlY2lmaWVyLnBhdGgpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBVUkwoYCR7c3BlY2lmaWVyLm5hbWVzcGFjZX06JHtzcGVjaWZpZXIucGF0aH1gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcENvbnRlbnRUeXBlKFxuICBzcGVjaWZpZXI6IFVSTCxcbiAgY29udGVudFR5cGU6IHN0cmluZyB8IG51bGwsXG4pOiBNZWRpYVR5cGUge1xuICBpZiAoY29udGVudFR5cGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBjb250ZW50VHlwZXMgPSBjb250ZW50VHlwZS5zcGxpdChcIjtcIik7XG4gICAgY29uc3QgbWVkaWFUeXBlID0gY29udGVudFR5cGVzWzBdLnRvTG93ZXJDYXNlKCk7XG4gICAgc3dpdGNoIChtZWRpYVR5cGUpIHtcbiAgICAgIGNhc2UgXCJhcHBsaWNhdGlvbi90eXBlc2NyaXB0XCI6XG4gICAgICBjYXNlIFwidGV4dC90eXBlc2NyaXB0XCI6XG4gICAgICBjYXNlIFwidmlkZW8vdm5kLmRsbmEubXBlZy10dHNcIjpcbiAgICAgIGNhc2UgXCJ2aWRlby9tcDJ0XCI6XG4gICAgICBjYXNlIFwiYXBwbGljYXRpb24veC10eXBlc2NyaXB0XCI6XG4gICAgICAgIHJldHVybiBtYXBKc0xpa2VFeHRlbnNpb24oc3BlY2lmaWVyLCBcIlR5cGVTY3JpcHRcIik7XG4gICAgICBjYXNlIFwiYXBwbGljYXRpb24vamF2YXNjcmlwdFwiOlxuICAgICAgY2FzZSBcInRleHQvamF2YXNjcmlwdFwiOlxuICAgICAgY2FzZSBcImFwcGxpY2F0aW9uL2VjbWFzY3JpcHRcIjpcbiAgICAgIGNhc2UgXCJ0ZXh0L2VjbWFzY3JpcHRcIjpcbiAgICAgIGNhc2UgXCJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHRcIjpcbiAgICAgIGNhc2UgXCJhcHBsaWNhdGlvbi9ub2RlXCI6XG4gICAgICAgIHJldHVybiBtYXBKc0xpa2VFeHRlbnNpb24oc3BlY2lmaWVyLCBcIkphdmFTY3JpcHRcIik7XG4gICAgICBjYXNlIFwidGV4dC9qc3hcIjpcbiAgICAgICAgcmV0dXJuIFwiSlNYXCI7XG4gICAgICBjYXNlIFwidGV4dC90c3hcIjpcbiAgICAgICAgcmV0dXJuIFwiVFNYXCI7XG4gICAgICBjYXNlIFwiYXBwbGljYXRpb24vanNvblwiOlxuICAgICAgY2FzZSBcInRleHQvanNvblwiOlxuICAgICAgICByZXR1cm4gXCJKc29uXCI7XG4gICAgICBjYXNlIFwiYXBwbGljYXRpb24vd2FzbVwiOlxuICAgICAgICByZXR1cm4gXCJXYXNtXCI7XG4gICAgICBjYXNlIFwidGV4dC9wbGFpblwiOlxuICAgICAgY2FzZSBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiOlxuICAgICAgICByZXR1cm4gbWVkaWFUeXBlRnJvbVNwZWNpZmllcihzcGVjaWZpZXIpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFwiVW5rbm93blwiO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbWVkaWFUeXBlRnJvbVNwZWNpZmllcihzcGVjaWZpZXIpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1hcEpzTGlrZUV4dGVuc2lvbihcbiAgc3BlY2lmaWVyOiBVUkwsXG4gIGRlZmF1bHRUeXBlOiBNZWRpYVR5cGUsXG4pOiBNZWRpYVR5cGUge1xuICBjb25zdCBwYXRoID0gc3BlY2lmaWVyLnBhdGhuYW1lO1xuICBzd2l0Y2ggKGV4dG5hbWUocGF0aCkpIHtcbiAgICBjYXNlIFwiLmpzeFwiOlxuICAgICAgcmV0dXJuIFwiSlNYXCI7XG4gICAgY2FzZSBcIi5tanNcIjpcbiAgICAgIHJldHVybiBcIk1qc1wiO1xuICAgIGNhc2UgXCIuY2pzXCI6XG4gICAgICByZXR1cm4gXCJDanNcIjtcbiAgICBjYXNlIFwiLnRzeFwiOlxuICAgICAgcmV0dXJuIFwiVFNYXCI7XG4gICAgY2FzZSBcIi50c1wiOlxuICAgICAgaWYgKHBhdGguZW5kc1dpdGgoXCIuZC50c1wiKSkge1xuICAgICAgICByZXR1cm4gXCJEdHNcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0VHlwZTtcbiAgICAgIH1cbiAgICBjYXNlIFwiLm10c1wiOiB7XG4gICAgICBpZiAocGF0aC5lbmRzV2l0aChcIi5kLm10c1wiKSkge1xuICAgICAgICByZXR1cm4gXCJEbXRzXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFR5cGUgPT0gXCJKYXZhU2NyaXB0XCIgPyBcIk1qc1wiIDogXCJNdHNcIjtcbiAgICAgIH1cbiAgICB9XG4gICAgY2FzZSBcIi5jdHNcIjoge1xuICAgICAgaWYgKHBhdGguZW5kc1dpdGgoXCIuZC5jdHNcIikpIHtcbiAgICAgICAgcmV0dXJuIFwiRGN0c1wiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRUeXBlID09IFwiSmF2YVNjcmlwdFwiID8gXCJDanNcIiA6IFwiQ3RzXCI7XG4gICAgICB9XG4gICAgfVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZGVmYXVsdFR5cGU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lZGlhVHlwZUZyb21TcGVjaWZpZXIoc3BlY2lmaWVyOiBVUkwpOiBNZWRpYVR5cGUge1xuICBjb25zdCBwYXRoID0gc3BlY2lmaWVyLnBhdGhuYW1lO1xuICBzd2l0Y2ggKGV4dG5hbWUocGF0aCkpIHtcbiAgICBjYXNlIFwiXCI6XG4gICAgICBpZiAocGF0aC5lbmRzV2l0aChcIi8udHNidWlsZGluZm9cIikpIHtcbiAgICAgICAgcmV0dXJuIFwiVHNCdWlsZEluZm9cIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBcIlVua25vd25cIjtcbiAgICAgIH1cbiAgICBjYXNlIFwiLnRzXCI6XG4gICAgICBpZiAocGF0aC5lbmRzV2l0aChcIi5kLnRzXCIpKSB7XG4gICAgICAgIHJldHVybiBcIkR0c1wiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFwiVHlwZVNjcmlwdFwiO1xuICAgICAgfVxuICAgIGNhc2UgXCIubXRzXCI6XG4gICAgICBpZiAocGF0aC5lbmRzV2l0aChcIi5kLm10c1wiKSkge1xuICAgICAgICByZXR1cm4gXCJEbXRzXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gXCJNdHNcIjtcbiAgICAgIH1cbiAgICBjYXNlIFwiLmN0c1wiOlxuICAgICAgaWYgKHBhdGguZW5kc1dpdGgoXCIuZC5jdHNcIikpIHtcbiAgICAgICAgcmV0dXJuIFwiRGN0c1wiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFwiQ3RzXCI7XG4gICAgICB9XG4gICAgY2FzZSBcIi50c3hcIjpcbiAgICAgIHJldHVybiBcIlRTWFwiO1xuICAgIGNhc2UgXCIuanNcIjpcbiAgICAgIHJldHVybiBcIkphdmFTY3JpcHRcIjtcbiAgICBjYXNlIFwiLmpzeFwiOlxuICAgICAgcmV0dXJuIFwiSlNYXCI7XG4gICAgY2FzZSBcIi5tanNcIjpcbiAgICAgIHJldHVybiBcIk1qc1wiO1xuICAgIGNhc2UgXCIuY2pzXCI6XG4gICAgICByZXR1cm4gXCJDanNcIjtcbiAgICBjYXNlIFwiLmpzb25cIjpcbiAgICAgIHJldHVybiBcIkpzb25cIjtcbiAgICBjYXNlIFwiLndhc21cIjpcbiAgICAgIHJldHVybiBcIldhc21cIjtcbiAgICBjYXNlIFwiLnRzYnVpbGRpbmZvXCI6XG4gICAgICByZXR1cm4gXCJUc0J1aWxkSW5mb1wiO1xuICAgIGNhc2UgXCIubWFwXCI6XG4gICAgICByZXR1cm4gXCJTb3VyY2VNYXBcIjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFwiVW5rbm93blwiO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnBtU3BlY2lmaWVyIHtcbiAgbmFtZTogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICBwYXRoOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VOcG1TcGVjaWZpZXIoc3BlY2lmaWVyOiBVUkwpOiBOcG1TcGVjaWZpZXIge1xuICBpZiAoc3BlY2lmaWVyLnByb3RvY29sICE9PSBcIm5wbTpcIikgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBucG0gc3BlY2lmaWVyXCIpO1xuICBjb25zdCBwYXRoID0gc3BlY2lmaWVyLnBhdGhuYW1lO1xuICBjb25zdCBzdGFydEluZGV4ID0gcGF0aFswXSA9PT0gXCIvXCIgPyAxIDogMDtcbiAgbGV0IHBhdGhTdGFydEluZGV4O1xuICBsZXQgdmVyc2lvblN0YXJ0SW5kZXg7XG4gIGlmIChwYXRoW3N0YXJ0SW5kZXhdID09PSBcIkBcIikge1xuICAgIGNvbnN0IGZpcnN0U2xhc2ggPSBwYXRoLmluZGV4T2YoXCIvXCIsIHN0YXJ0SW5kZXgpO1xuICAgIGlmIChmaXJzdFNsYXNoID09PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG5wbSBzcGVjaWZpZXI6ICR7c3BlY2lmaWVyfWApO1xuICAgIH1cbiAgICBwYXRoU3RhcnRJbmRleCA9IHBhdGguaW5kZXhPZihcIi9cIiwgZmlyc3RTbGFzaCArIDEpO1xuICAgIHZlcnNpb25TdGFydEluZGV4ID0gcGF0aC5pbmRleE9mKFwiQFwiLCBmaXJzdFNsYXNoICsgMSk7XG4gIH0gZWxzZSB7XG4gICAgcGF0aFN0YXJ0SW5kZXggPSBwYXRoLmluZGV4T2YoXCIvXCIsIHN0YXJ0SW5kZXgpO1xuICAgIHZlcnNpb25TdGFydEluZGV4ID0gcGF0aC5pbmRleE9mKFwiQFwiLCBzdGFydEluZGV4KTtcbiAgfVxuXG4gIGlmIChwYXRoU3RhcnRJbmRleCA9PT0gLTEpIHBhdGhTdGFydEluZGV4ID0gcGF0aC5sZW5ndGg7XG4gIGlmICh2ZXJzaW9uU3RhcnRJbmRleCA9PT0gLTEpIHZlcnNpb25TdGFydEluZGV4ID0gcGF0aC5sZW5ndGg7XG5cbiAgaWYgKHZlcnNpb25TdGFydEluZGV4ID4gcGF0aFN0YXJ0SW5kZXgpIHtcbiAgICB2ZXJzaW9uU3RhcnRJbmRleCA9IHBhdGhTdGFydEluZGV4O1xuICB9XG5cbiAgaWYgKHN0YXJ0SW5kZXggPT09IHZlcnNpb25TdGFydEluZGV4KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG5wbSBzcGVjaWZpZXI6ICR7c3BlY2lmaWVyfWApO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBwYXRoLnNsaWNlKHN0YXJ0SW5kZXgsIHZlcnNpb25TdGFydEluZGV4KSxcbiAgICB2ZXJzaW9uOiB2ZXJzaW9uU3RhcnRJbmRleCA9PT0gcGF0aFN0YXJ0SW5kZXhcbiAgICAgID8gbnVsbFxuICAgICAgOiBwYXRoLnNsaWNlKHZlcnNpb25TdGFydEluZGV4ICsgMSwgcGF0aFN0YXJ0SW5kZXgpLFxuICAgIHBhdGg6IHBhdGhTdGFydEluZGV4ID09PSBwYXRoLmxlbmd0aCA/IG51bGwgOiBwYXRoLnNsaWNlKHBhdGhTdGFydEluZGV4KSxcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKc3JTcGVjaWZpZXIge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZyB8IG51bGw7XG4gIHBhdGg6IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUpzclNwZWNpZmllcihzcGVjaWZpZXI6IFVSTCk6IEpzclNwZWNpZmllciB7XG4gIGlmIChzcGVjaWZpZXIucHJvdG9jb2wgIT09IFwianNyOlwiKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGpzciBzcGVjaWZpZXJcIik7XG4gIGNvbnN0IHBhdGggPSBzcGVjaWZpZXIucGF0aG5hbWU7XG4gIGNvbnN0IHN0YXJ0SW5kZXggPSBwYXRoWzBdID09PSBcIi9cIiA/IDEgOiAwO1xuICBpZiAocGF0aFtzdGFydEluZGV4XSAhPT0gXCJAXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQganNyIHNwZWNpZmllcjogJHtzcGVjaWZpZXJ9YCk7XG4gIH1cbiAgY29uc3QgZmlyc3RTbGFzaCA9IHBhdGguaW5kZXhPZihcIi9cIiwgc3RhcnRJbmRleCk7XG4gIGlmIChmaXJzdFNsYXNoID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBqc3Igc3BlY2lmaWVyOiAke3NwZWNpZmllcn1gKTtcbiAgfVxuICBsZXQgcGF0aFN0YXJ0SW5kZXggPSBwYXRoLmluZGV4T2YoXCIvXCIsIGZpcnN0U2xhc2ggKyAxKTtcbiAgbGV0IHZlcnNpb25TdGFydEluZGV4ID0gcGF0aC5pbmRleE9mKFwiQFwiLCBmaXJzdFNsYXNoICsgMSk7XG5cbiAgaWYgKHBhdGhTdGFydEluZGV4ID09PSAtMSkgcGF0aFN0YXJ0SW5kZXggPSBwYXRoLmxlbmd0aDtcbiAgaWYgKHZlcnNpb25TdGFydEluZGV4ID09PSAtMSkgdmVyc2lvblN0YXJ0SW5kZXggPSBwYXRoLmxlbmd0aDtcblxuICBpZiAodmVyc2lvblN0YXJ0SW5kZXggPiBwYXRoU3RhcnRJbmRleCkge1xuICAgIHZlcnNpb25TdGFydEluZGV4ID0gcGF0aFN0YXJ0SW5kZXg7XG4gIH1cblxuICBpZiAoc3RhcnRJbmRleCA9PT0gdmVyc2lvblN0YXJ0SW5kZXgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQganNyIHNwZWNpZmllcjogJHtzcGVjaWZpZXJ9YCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHBhdGguc2xpY2Uoc3RhcnRJbmRleCwgdmVyc2lvblN0YXJ0SW5kZXgpLFxuICAgIHZlcnNpb246IHZlcnNpb25TdGFydEluZGV4ID09PSBwYXRoU3RhcnRJbmRleFxuICAgICAgPyBudWxsXG4gICAgICA6IHBhdGguc2xpY2UodmVyc2lvblN0YXJ0SW5kZXggKyAxLCBwYXRoU3RhcnRJbmRleCksXG4gICAgcGF0aDogcGF0aFN0YXJ0SW5kZXggPT09IHBhdGgubGVuZ3RoID8gbnVsbCA6IHBhdGguc2xpY2UocGF0aFN0YXJ0SW5kZXgpLFxuICB9O1xufVxuXG5jb25zdCBTTEFTSF9OT0RFX01PRFVMRVNfU0xBU0ggPSBgJHtTRVBBUkFUT1J9bm9kZV9tb2R1bGVzJHtTRVBBUkFUT1J9YDtcbmNvbnN0IFNMQVNIX05PREVfTU9EVUxFUyA9IGAke1NFUEFSQVRPUn1ub2RlX21vZHVsZXNgO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNJbk5vZGVNb2R1bGVzKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gcGF0aC5pbmNsdWRlcyhTTEFTSF9OT0RFX01PRFVMRVNfU0xBU0gpIHx8XG4gICAgcGF0aC5lbmRzV2l0aChTTEFTSF9OT0RFX01PRFVMRVMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlTW9kdWxlc1Jlc29sdXRpb24oYXJnczogZXNidWlsZC5PblJlc29sdmVBcmdzKSB7XG4gIHJldHVybiAoXG4gICAgKGFyZ3MubmFtZXNwYWNlID09PSBcIlwiIHx8IGFyZ3MubmFtZXNwYWNlID09PSBcImZpbGVcIikgJiZcbiAgICAoaXNJbk5vZGVNb2R1bGVzKGFyZ3MucmVzb2x2ZURpcikgfHwgaXNJbk5vZGVNb2R1bGVzKGFyZ3MucGF0aCkgfHxcbiAgICAgIGlzSW5Ob2RlTW9kdWxlcyhhcmdzLmltcG9ydGVyKSlcbiAgKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLFFBQVEsdUJBQXVCO0FBRzNGLFNBQVMsV0FBVyxFQUFFLGFBQWEsUUFBUSw2QkFBNkI7QUFnQnhFLE9BQU8sU0FBUyxjQUNkLEdBQVcsRUFDWCxXQUF3QyxFQUN4QyxVQUE4QjtFQUU5QixNQUFNLGFBQWEsVUFBVTtFQUM3QixJQUFJLENBQUMsV0FBVyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU07SUFDdEMsV0FBVyxRQUFRLElBQUk7RUFDekI7RUFFQSxJQUFJO0VBQ0osSUFBSSxlQUFlO0VBQ25CLElBQUksZUFBZSxXQUFXO0lBQzVCLGNBQWM7TUFBQztLQUFXO0lBQzFCLGVBQWU7RUFDakIsT0FBTyxJQUFJLE1BQU0sT0FBTyxDQUFDLGNBQWM7SUFDckMsY0FBYyxZQUFZLE9BQU8sQ0FDL0IsQ0FBQztNQUNDLElBQUk7TUFFSixJQUFJLE9BQU8sZUFBZSxVQUFVO1FBQ2xDLFlBQVk7TUFDZCxPQUFPO1FBQ0wsWUFBWSxXQUFXLEVBQUU7TUFDM0I7TUFFQSxNQUFNLE1BQU0sSUFBSSxJQUFJLFdBQVcsV0FBVyxJQUFJO01B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 +// denoCacheMetadata=17538940659706774254,15655509625788679305
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/38aa7b6afdc64af601c4eab0a42f4f139c1497a1452d607daaa6823c21f533be.js b/vendor/gen/https/jsr.io/38aa7b6afdc64af601c4eab0a42f4f139c1497a1452d607daaa6823c21f533be.js new file mode 100644 index 0000000..a888356 --- /dev/null +++ b/vendor/gen/https/jsr.io/38aa7b6afdc64af601c4eab0a42f4f139c1497a1452d607daaa6823c21f533be.js @@ -0,0 +1,35 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { basename as posixBasename } from "./posix/basename.ts"; +import { basename as windowsBasename } from "./windows/basename.ts"; +/** + * Return the last portion of a path. + * + * The trailing directory separators are ignored, and optional suffix is + * removed. + * + * @example Usage + * ```ts + * import { basename } from "@std/path/basename"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(basename("C:\\user\\Documents\\image.png"), "image.png"); + * } else { + * assertEquals(basename("/home/user/Documents/image.png"), "image.png"); + * } + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `basename` from `@std/path/unstable-basename`. + * + * @param path Path to extract the name from. + * @param suffix Suffix to remove from extracted name. + * + * @returns The basename of the path. + */ export function basename(path, suffix = "") { + return isWindows ? windowsBasename(path, suffix) : posixBasename(path, suffix); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9iYXNlbmFtZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBpc1dpbmRvd3MgfSBmcm9tIFwiLi9fb3MudHNcIjtcbmltcG9ydCB7IGJhc2VuYW1lIGFzIHBvc2l4QmFzZW5hbWUgfSBmcm9tIFwiLi9wb3NpeC9iYXNlbmFtZS50c1wiO1xuaW1wb3J0IHsgYmFzZW5hbWUgYXMgd2luZG93c0Jhc2VuYW1lIH0gZnJvbSBcIi4vd2luZG93cy9iYXNlbmFtZS50c1wiO1xuXG4vKipcbiAqIFJldHVybiB0aGUgbGFzdCBwb3J0aW9uIG9mIGEgcGF0aC5cbiAqXG4gKiBUaGUgdHJhaWxpbmcgZGlyZWN0b3J5IHNlcGFyYXRvcnMgYXJlIGlnbm9yZWQsIGFuZCBvcHRpb25hbCBzdWZmaXggaXNcbiAqIHJlbW92ZWQuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBiYXNlbmFtZSB9IGZyb20gXCJAc3RkL3BhdGgvYmFzZW5hbWVcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGlmIChEZW5vLmJ1aWxkLm9zID09PSBcIndpbmRvd3NcIikge1xuICogICBhc3NlcnRFcXVhbHMoYmFzZW5hbWUoXCJDOlxcXFx1c2VyXFxcXERvY3VtZW50c1xcXFxpbWFnZS5wbmdcIiksIFwiaW1hZ2UucG5nXCIpO1xuICogfSBlbHNlIHtcbiAqICAgYXNzZXJ0RXF1YWxzKGJhc2VuYW1lKFwiL2hvbWUvdXNlci9Eb2N1bWVudHMvaW1hZ2UucG5nXCIpLCBcImltYWdlLnBuZ1wiKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIE5vdGU6IElmIHlvdSBhcmUgd29ya2luZyB3aXRoIGZpbGUgVVJMcyxcbiAqIHVzZSB0aGUgbmV3IHZlcnNpb24gb2YgYGJhc2VuYW1lYCBmcm9tIGBAc3RkL3BhdGgvdW5zdGFibGUtYmFzZW5hbWVgLlxuICpcbiAqIEBwYXJhbSBwYXRoIFBhdGggdG8gZXh0cmFjdCB0aGUgbmFtZSBmcm9tLlxuICogQHBhcmFtIHN1ZmZpeCBTdWZmaXggdG8gcmVtb3ZlIGZyb20gZXh0cmFjdGVkIG5hbWUuXG4gKlxuICogQHJldHVybnMgVGhlIGJhc2VuYW1lIG9mIHRoZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYmFzZW5hbWUocGF0aDogc3RyaW5nLCBzdWZmaXggPSBcIlwiKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlzV2luZG93c1xuICAgID8gd2luZG93c0Jhc2VuYW1lKHBhdGgsIHN1ZmZpeClcbiAgICA6IHBvc2l4QmFzZW5hbWUocGF0aCwgc3VmZml4KTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBRXJDLFNBQVMsU0FBUyxRQUFRLFdBQVc7QUFDckMsU0FBUyxZQUFZLGFBQWEsUUFBUSxzQkFBc0I7QUFDaEUsU0FBUyxZQUFZLGVBQWUsUUFBUSx3QkFBd0I7QUFFcEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0F5QkMsR0FDRCxPQUFPLFNBQVMsU0FBUyxJQUFZLEVBQUUsU0FBUyxFQUFFO0VBQ2hELE9BQU8sWUFDSCxnQkFBZ0IsTUFBTSxVQUN0QixjQUFjLE1BQU07QUFDMUIifQ== +// denoCacheMetadata=8543452360371999416,1861422178206828717
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/3a61a512dbdae4e3b6f7e30b820e02c70fe4972d886f28435219ed65178c2b83.js b/vendor/gen/https/jsr.io/3a61a512dbdae4e3b6f7e30b820e02c70fe4972d886f28435219ed65178c2b83.js new file mode 100644 index 0000000..f5a6912 --- /dev/null +++ b/vendor/gen/https/jsr.io/3a61a512dbdae4e3b6f7e30b820e02c70fe4972d886f28435219ed65178c2b83.js @@ -0,0 +1,7 @@ +// deno-lint-ignore-file no-explicit-any +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +// Check Deno, then the remaining runtimes (e.g. Node, Bun and the browser) +export const isWindows = globalThis.Deno?.build.os === "windows" || globalThis.navigator?.platform?.startsWith("Win") || globalThis.process?.platform?.startsWith("win") || false; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9fb3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZGVuby1saW50LWlnbm9yZS1maWxlIG5vLWV4cGxpY2l0LWFueVxuLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuLy8gQ2hlY2sgRGVubywgdGhlbiB0aGUgcmVtYWluaW5nIHJ1bnRpbWVzIChlLmcuIE5vZGUsIEJ1biBhbmQgdGhlIGJyb3dzZXIpXG5leHBvcnQgY29uc3QgaXNXaW5kb3dzOiBib29sZWFuID1cbiAgKGdsb2JhbFRoaXMgYXMgYW55KS5EZW5vPy5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCIgfHxcbiAgKGdsb2JhbFRoaXMgYXMgYW55KS5uYXZpZ2F0b3I/LnBsYXRmb3JtPy5zdGFydHNXaXRoKFwiV2luXCIpIHx8XG4gIChnbG9iYWxUaGlzIGFzIGFueSkucHJvY2Vzcz8ucGxhdGZvcm0/LnN0YXJ0c1dpdGgoXCJ3aW5cIikgfHxcbiAgZmFsc2U7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0NBQXdDO0FBQ3hDLDBFQUEwRTtBQUMxRSxxQ0FBcUM7QUFFckMsMkVBQTJFO0FBQzNFLE9BQU8sTUFBTSxZQUNYLEFBQUMsV0FBbUIsSUFBSSxFQUFFLE1BQU0sT0FBTyxhQUN2QyxBQUFDLFdBQW1CLFNBQVMsRUFBRSxVQUFVLFdBQVcsVUFDcEQsQUFBQyxXQUFtQixPQUFPLEVBQUUsVUFBVSxXQUFXLFVBQ2xELE1BQU0ifQ== +// denoCacheMetadata=2713007950931200486,4805621716592831700
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/3b7cb2596c03a339e2fc597548be8d6fe74112b478dd5206fe023f7a51cf2e7e.js b/vendor/gen/https/jsr.io/3b7cb2596c03a339e2fc597548be8d6fe74112b478dd5206fe023f7a51cf2e7e.js new file mode 100644 index 0000000..3119ded --- /dev/null +++ b/vendor/gen/https/jsr.io/3b7cb2596c03a339e2fc597548be8d6fe74112b478dd5206fe023f7a51cf2e7e.js @@ -0,0 +1,25 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +export function common(paths, sep) { + const [first = "", ...remaining] = paths; + const parts = first.split(sep); + let endOfPrefix = parts.length; + let append = ""; + for (const path of remaining){ + const compare = path.split(sep); + if (compare.length <= endOfPrefix) { + endOfPrefix = compare.length; + append = ""; + } + for(let i = 0; i < endOfPrefix; i++){ + if (compare[i] !== parts[i]) { + endOfPrefix = i; + append = i === 0 ? "" : sep; + break; + } + } + } + return parts.slice(0, endOfPrefix).join(sep) + append; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9fY29tbW9uL2NvbW1vbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5leHBvcnQgZnVuY3Rpb24gY29tbW9uKHBhdGhzOiBzdHJpbmdbXSwgc2VwOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBbZmlyc3QgPSBcIlwiLCAuLi5yZW1haW5pbmddID0gcGF0aHM7XG4gIGNvbnN0IHBhcnRzID0gZmlyc3Quc3BsaXQoc2VwKTtcblxuICBsZXQgZW5kT2ZQcmVmaXggPSBwYXJ0cy5sZW5ndGg7XG4gIGxldCBhcHBlbmQgPSBcIlwiO1xuICBmb3IgKGNvbnN0IHBhdGggb2YgcmVtYWluaW5nKSB7XG4gICAgY29uc3QgY29tcGFyZSA9IHBhdGguc3BsaXQoc2VwKTtcbiAgICBpZiAoY29tcGFyZS5sZW5ndGggPD0gZW5kT2ZQcmVmaXgpIHtcbiAgICAgIGVuZE9mUHJlZml4ID0gY29tcGFyZS5sZW5ndGg7XG4gICAgICBhcHBlbmQgPSBcIlwiO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZW5kT2ZQcmVmaXg7IGkrKykge1xuICAgICAgaWYgKGNvbXBhcmVbaV0gIT09IHBhcnRzW2ldKSB7XG4gICAgICAgIGVuZE9mUHJlZml4ID0gaTtcbiAgICAgICAgYXBwZW5kID0gaSA9PT0gMCA/IFwiXCIgOiBzZXA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcGFydHMuc2xpY2UoMCwgZW5kT2ZQcmVmaXgpLmpvaW4oc2VwKSArIGFwcGVuZDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBRXJDLE9BQU8sU0FBUyxPQUFPLEtBQWUsRUFBRSxHQUFXO0VBQ2pELE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLFVBQVUsR0FBRztFQUNuQyxNQUFNLFFBQVEsTUFBTSxLQUFLLENBQUM7RUFFMUIsSUFBSSxjQUFjLE1BQU0sTUFBTTtFQUM5QixJQUFJLFNBQVM7RUFDYixLQUFLLE1BQU0sUUFBUSxVQUFXO0lBQzVCLE1BQU0sVUFBVSxLQUFLLEtBQUssQ0FBQztJQUMzQixJQUFJLFFBQVEsTUFBTSxJQUFJLGFBQWE7TUFDakMsY0FBYyxRQUFRLE1BQU07TUFDNUIsU0FBUztJQUNYO0lBRUEsSUFBSyxJQUFJLElBQUksR0FBRyxJQUFJLGFBQWEsSUFBSztNQUNwQyxJQUFJLE9BQU8sQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRTtRQUMzQixjQUFjO1FBQ2QsU0FBUyxNQUFNLElBQUksS0FBSztRQUN4QjtNQUNGO0lBQ0Y7RUFDRjtFQUNBLE9BQU8sTUFBTSxLQUFLLENBQUMsR0FBRyxhQUFhLElBQUksQ0FBQyxPQUFPO0FBQ2pEIn0= +// denoCacheMetadata=4684215224034715481,8557795148467439246
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/3b96c708fd94345746410a9d43a001a79afb48c21b1ce15bdff8f066d84d2de5.js b/vendor/gen/https/jsr.io/3b96c708fd94345746410a9d43a001a79afb48c21b1ce15bdff8f066d84d2de5.js new file mode 100644 index 0000000..555f067 --- /dev/null +++ b/vendor/gen/https/jsr.io/3b96c708fd94345746410a9d43a001a79afb48c21b1ce15bdff8f066d84d2de5.js @@ -0,0 +1,266 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +/** Options for {@linkcode exists} and {@linkcode existsSync.} */ /** + * Asynchronously test whether or not the given path exists by checking with + * the file system. + * + * Note: Do not use this function if performing a check before another operation + * on that file. Doing so creates a race condition. Instead, perform the actual + * file operation directly. This function is not recommended for this use case. + * See the recommended method below. + * + * @see {@link https://en.wikipedia.org/wiki/Time-of-check_to_time-of-use} for + * more information on the time-of-check to time-of-use bug. + * + * Requires `--allow-read` permissions, and in some cases, `--allow-sys` + * permissions if `options.isReadable` is `true`. + * + * @see {@link https://docs.deno.com/runtime/manual/basics/permissions#file-system-access} + * for more information on Deno's permissions system. + * + * @param path The path to the file or directory, as a string or URL. + * @param options Additional options for the check. + * + * @returns A promise that resolves with `true` if the path exists, `false` + * otherwise. + * + * @example Recommended method + * ```ts ignore + * // Notice no use of exists + * try { + * await Deno.remove("./foo", { recursive: true }); + * } catch (error) { + * if (!(error instanceof Deno.errors.NotFound)) { + * throw error; + * } + * // Do nothing... + * } + * ``` + * + * Notice that `exists()` is not used in the above example. Doing so avoids a + * possible race condition. See the above note for details. + * + * @example Basic usage + * ```ts ignore + * import { exists } from "@std/fs/exists"; + * + * await exists("./exists"); // true + * await exists("./does_not_exist"); // false + * ``` + * + * @example Check if a path is readable + * + * Requires `--allow-sys` permissions in some cases. + * + * ```ts ignore + * import { exists } from "@std/fs/exists"; + * + * await exists("./readable", { isReadable: true }); // true + * await exists("./not_readable", { isReadable: true }); // false + * ``` + * + * @example Check if a path is a directory + * ```ts ignore + * import { exists } from "@std/fs/exists"; + * + * await exists("./directory", { isDirectory: true }); // true + * await exists("./file", { isDirectory: true }); // false + * ``` + * + * @example Check if a path is a file + * ```ts ignore + * import { exists } from "@std/fs/exists"; + * + * await exists("./file", { isFile: true }); // true + * await exists("./directory", { isFile: true }); // false + * ``` + * + * @example Check if a path is a readable directory + * + * Requires `--allow-sys` permissions in some cases. + * + * ```ts ignore + * import { exists } from "@std/fs/exists"; + * + * await exists("./readable_directory", { isReadable: true, isDirectory: true }); // true + * await exists("./not_readable_directory", { isReadable: true, isDirectory: true }); // false + * ``` + * + * @example Check if a path is a readable file + * + * Requires `--allow-sys` permissions in some cases. + * + * ```ts ignore + * import { exists } from "@std/fs/exists"; + * + * await exists("./readable_file", { isReadable: true, isFile: true }); // true + * await exists("./not_readable_file", { isReadable: true, isFile: true }); // false + * ``` + */ export async function exists(path, options) { + try { + const stat = await Deno.stat(path); + if (options && (options.isReadable || options.isDirectory || options.isFile)) { + if (options.isDirectory && options.isFile) { + throw new TypeError("ExistsOptions.options.isDirectory and ExistsOptions.options.isFile must not be true together"); + } + if (options.isDirectory && !stat.isDirectory || options.isFile && !stat.isFile) { + return false; + } + if (options.isReadable) { + return fileIsReadable(stat); + } + } + return true; + } catch (error) { + if (error instanceof Deno.errors.NotFound) { + return false; + } + if (error instanceof Deno.errors.PermissionDenied) { + if ((await Deno.permissions.query({ + name: "read", + path + })).state === "granted") { + // --allow-read not missing + return !options?.isReadable; // PermissionDenied was raised by file system, so the item exists, but can't be read + } + } + throw error; + } +} +/** + * Synchronously test whether or not the given path exists by checking with + * the file system. + * + * Note: Do not use this function if performing a check before another operation + * on that file. Doing so creates a race condition. Instead, perform the actual + * file operation directly. This function is not recommended for this use case. + * See the recommended method below. + * + * @see {@link https://en.wikipedia.org/wiki/Time-of-check_to_time-of-use} for + * more information on the time-of-check to time-of-use bug. + * + * Requires `--allow-read` permissions, and in some cases, `--allow-sys` + * permissions if `options.isReadable` is `true`. + * + * @see {@link https://docs.deno.com/runtime/manual/basics/permissions#file-system-access} + * for more information on Deno's permissions system. + * + * @param path The path to the file or directory, as a string or URL. + * @param options Additional options for the check. + * + * @returns `true` if the path exists, `false` otherwise. + * + * @example Recommended method + * ```ts ignore + * // Notice no use of exists + * try { + * Deno.removeSync("./foo", { recursive: true }); + * } catch (error) { + * if (!(error instanceof Deno.errors.NotFound)) { + * throw error; + * } + * // Do nothing... + * } + * ``` + * + * Notice that `existsSync()` is not used in the above example. Doing so avoids + * a possible race condition. See the above note for details. + * + * @example Basic usage + * ```ts ignore + * import { existsSync } from "@std/fs/exists"; + * + * existsSync("./exists"); // true + * existsSync("./does_not_exist"); // false + * ``` + * + * @example Check if a path is readable + * + * Requires `--allow-sys` permissions in some cases. + * + * ```ts ignore + * import { existsSync } from "@std/fs/exists"; + * + * existsSync("./readable", { isReadable: true }); // true + * existsSync("./not_readable", { isReadable: true }); // false + * ``` + * + * @example Check if a path is a directory + * ```ts ignore + * import { existsSync } from "@std/fs/exists"; + * + * existsSync("./directory", { isDirectory: true }); // true + * existsSync("./file", { isDirectory: true }); // false + * ``` + * + * @example Check if a path is a file + * ```ts ignore + * import { existsSync } from "@std/fs/exists"; + * + * existsSync("./file", { isFile: true }); // true + * existsSync("./directory", { isFile: true }); // false + * ``` + * + * @example Check if a path is a readable directory + * + * Requires `--allow-sys` permissions in some cases. + * + * ```ts ignore + * import { existsSync } from "@std/fs/exists"; + * + * existsSync("./readable_directory", { isReadable: true, isDirectory: true }); // true + * existsSync("./not_readable_directory", { isReadable: true, isDirectory: true }); // false + * ``` + * + * @example Check if a path is a readable file + * + * Requires `--allow-sys` permissions in some cases. + * + * ```ts ignore + * import { existsSync } from "@std/fs/exists"; + * + * existsSync("./readable_file", { isReadable: true, isFile: true }); // true + * existsSync("./not_readable_file", { isReadable: true, isFile: true }); // false + * ``` + */ export function existsSync(path, options) { + try { + const stat = Deno.statSync(path); + if (options && (options.isReadable || options.isDirectory || options.isFile)) { + if (options.isDirectory && options.isFile) { + throw new TypeError("ExistsOptions.options.isDirectory and ExistsOptions.options.isFile must not be true together"); + } + if (options.isDirectory && !stat.isDirectory || options.isFile && !stat.isFile) { + return false; + } + if (options.isReadable) { + return fileIsReadable(stat); + } + } + return true; + } catch (error) { + if (error instanceof Deno.errors.NotFound) { + return false; + } + if (error instanceof Deno.errors.PermissionDenied) { + if (Deno.permissions.querySync({ + name: "read", + path + }).state === "granted") { + // --allow-read not missing + return !options?.isReadable; // PermissionDenied was raised by file system, so the item exists, but can't be read + } + } + throw error; + } +} +function fileIsReadable(stat) { + if (stat.mode === null) { + return true; // Exclusive on Non-POSIX systems + } else if (Deno.uid() === stat.uid) { + return (stat.mode & 0o400) === 0o400; // User is owner and can read? + } else if (Deno.gid() === stat.gid) { + return (stat.mode & 0o040) === 0o040; // User group is owner and can read? + } + return (stat.mode & 0o004) === 0o004; // Others can read? +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnMvMS4wLjE3L2V4aXN0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuXG4vKiogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBleGlzdHN9IGFuZCB7QGxpbmtjb2RlIGV4aXN0c1N5bmMufSAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGlzdHNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZW4gYHRydWVgLCB3aWxsIGNoZWNrIGlmIHRoZSBwYXRoIGlzIHJlYWRhYmxlIGJ5IHRoZSB1c2VyIGFzIHdlbGwuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtmYWxzZX1cbiAgICovXG4gIGlzUmVhZGFibGU/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAsIHdpbGwgY2hlY2sgaWYgdGhlIHBhdGggaXMgYSBkaXJlY3RvcnkgYXMgd2VsbC4gRGlyZWN0b3J5XG4gICAqIHN5bWxpbmtzIGFyZSBpbmNsdWRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQge2ZhbHNlfVxuICAgKi9cbiAgaXNEaXJlY3Rvcnk/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAsIHdpbGwgY2hlY2sgaWYgdGhlIHBhdGggaXMgYSBmaWxlIGFzIHdlbGwuIEZpbGUgc3ltbGlua3MgYXJlXG4gICAqIGluY2x1ZGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7ZmFsc2V9XG4gICAqL1xuICBpc0ZpbGU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEFzeW5jaHJvbm91c2x5IHRlc3Qgd2hldGhlciBvciBub3QgdGhlIGdpdmVuIHBhdGggZXhpc3RzIGJ5IGNoZWNraW5nIHdpdGhcbiAqIHRoZSBmaWxlIHN5c3RlbS5cbiAqXG4gKiBOb3RlOiBEbyBub3QgdXNlIHRoaXMgZnVuY3Rpb24gaWYgcGVyZm9ybWluZyBhIGNoZWNrIGJlZm9yZSBhbm90aGVyIG9wZXJhdGlvblxuICogb24gdGhhdCBmaWxlLiBEb2luZyBzbyBjcmVhdGVzIGEgcmFjZSBjb25kaXRpb24uIEluc3RlYWQsIHBlcmZvcm0gdGhlIGFjdHVhbFxuICogZmlsZSBvcGVyYXRpb24gZGlyZWN0bHkuIFRoaXMgZnVuY3Rpb24gaXMgbm90IHJlY29tbWVuZGVkIGZvciB0aGlzIHVzZSBjYXNlLlxuICogU2VlIHRoZSByZWNvbW1lbmRlZCBtZXRob2QgYmVsb3cuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGltZS1vZi1jaGVja190b190aW1lLW9mLXVzZX0gZm9yXG4gKiBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSB0aW1lLW9mLWNoZWNrIHRvIHRpbWUtb2YtdXNlIGJ1Zy5cbiAqXG4gKiBSZXF1aXJlcyBgLS1hbGxvdy1yZWFkYCBwZXJtaXNzaW9ucywgYW5kIGluIHNvbWUgY2FzZXMsIGAtLWFsbG93LXN5c2BcbiAqIHBlcm1pc3Npb25zIGlmIGBvcHRpb25zLmlzUmVhZGFibGVgIGlzIGB0cnVlYC5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2RvY3MuZGVuby5jb20vcnVudGltZS9tYW51YWwvYmFzaWNzL3Blcm1pc3Npb25zI2ZpbGUtc3lzdGVtLWFjY2Vzc31cbiAqIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIERlbm8ncyBwZXJtaXNzaW9ucyBzeXN0ZW0uXG4gKlxuICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gdGhlIGZpbGUgb3IgZGlyZWN0b3J5LCBhcyBhIHN0cmluZyBvciBVUkwuXG4gKiBAcGFyYW0gb3B0aW9ucyBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSBjaGVjay5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGB0cnVlYCBpZiB0aGUgcGF0aCBleGlzdHMsIGBmYWxzZWBcbiAqIG90aGVyd2lzZS5cbiAqXG4gKiBAZXhhbXBsZSBSZWNvbW1lbmRlZCBtZXRob2RcbiAqIGBgYHRzIGlnbm9yZVxuICogLy8gTm90aWNlIG5vIHVzZSBvZiBleGlzdHNcbiAqIHRyeSB7XG4gKiAgIGF3YWl0IERlbm8ucmVtb3ZlKFwiLi9mb29cIiwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gKiB9IGNhdGNoIChlcnJvcikge1xuICogICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIERlbm8uZXJyb3JzLk5vdEZvdW5kKSkge1xuICogICAgIHRocm93IGVycm9yO1xuICogICB9XG4gKiAgIC8vIERvIG5vdGhpbmcuLi5cbiAqIH1cbiAqIGBgYFxuICpcbiAqIE5vdGljZSB0aGF0IGBleGlzdHMoKWAgaXMgbm90IHVzZWQgaW4gdGhlIGFib3ZlIGV4YW1wbGUuIERvaW5nIHNvIGF2b2lkcyBhXG4gKiBwb3NzaWJsZSByYWNlIGNvbmRpdGlvbi4gU2VlIHRoZSBhYm92ZSBub3RlIGZvciBkZXRhaWxzLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiBgYGB0cyBpZ25vcmVcbiAqIGltcG9ydCB7IGV4aXN0cyB9IGZyb20gXCJAc3RkL2ZzL2V4aXN0c1wiO1xuICpcbiAqIGF3YWl0IGV4aXN0cyhcIi4vZXhpc3RzXCIpOyAvLyB0cnVlXG4gKiBhd2FpdCBleGlzdHMoXCIuL2RvZXNfbm90X2V4aXN0XCIpOyAvLyBmYWxzZVxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQ2hlY2sgaWYgYSBwYXRoIGlzIHJlYWRhYmxlXG4gKlxuICogUmVxdWlyZXMgYC0tYWxsb3ctc3lzYCBwZXJtaXNzaW9ucyBpbiBzb21lIGNhc2VzLlxuICpcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgZXhpc3RzIH0gZnJvbSBcIkBzdGQvZnMvZXhpc3RzXCI7XG4gKlxuICogYXdhaXQgZXhpc3RzKFwiLi9yZWFkYWJsZVwiLCB7IGlzUmVhZGFibGU6IHRydWUgfSk7IC8vIHRydWVcbiAqIGF3YWl0IGV4aXN0cyhcIi4vbm90X3JlYWRhYmxlXCIsIHsgaXNSZWFkYWJsZTogdHJ1ZSB9KTsgLy8gZmFsc2VcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIENoZWNrIGlmIGEgcGF0aCBpcyBhIGRpcmVjdG9yeVxuICogYGBgdHMgaWdub3JlXG4gKiBpbXBvcnQgeyBleGlzdHMgfSBmcm9tIFwiQHN0ZC9mcy9leGlzdHNcIjtcbiAqXG4gKiBhd2FpdCBleGlzdHMoXCIuL2RpcmVjdG9yeVwiLCB7IGlzRGlyZWN0b3J5OiB0cnVlIH0pOyAvLyB0cnVlXG4gKiBhd2FpdCBleGlzdHMoXCIuL2ZpbGVcIiwgeyBpc0RpcmVjdG9yeTogdHJ1ZSB9KTsgLy8gZmFsc2VcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIENoZWNrIGlmIGEgcGF0aCBpcyBhIGZpbGVcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgZXhpc3RzIH0gZnJvbSBcIkBzdGQvZnMvZXhpc3RzXCI7XG4gKlxuICogYXdhaXQgZXhpc3RzKFwiLi9maWxlXCIsIHsgaXNGaWxlOiB0cnVlIH0pOyAvLyB0cnVlXG4gKiBhd2FpdCBleGlzdHMoXCIuL2RpcmVjdG9yeVwiLCB7IGlzRmlsZTogdHJ1ZSB9KTsgLy8gZmFsc2VcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIENoZWNrIGlmIGEgcGF0aCBpcyBhIHJlYWRhYmxlIGRpcmVjdG9yeVxuICpcbiAqIFJlcXVpcmVzIGAtLWFsbG93LXN5c2AgcGVybWlzc2lvbnMgaW4gc29tZSBjYXNlcy5cbiAqXG4gKiBgYGB0cyBpZ25vcmVcbiAqIGltcG9ydCB7IGV4aXN0cyB9IGZyb20gXCJAc3RkL2ZzL2V4aXN0c1wiO1xuICpcbiAqIGF3YWl0IGV4aXN0cyhcIi4vcmVhZGFibGVfZGlyZWN0b3J5XCIsIHsgaXNSZWFkYWJsZTogdHJ1ZSwgaXNEaXJlY3Rvcnk6IHRydWUgfSk7IC8vIHRydWVcbiAqIGF3YWl0IGV4aXN0cyhcIi4vbm90X3JlYWRhYmxlX2RpcmVjdG9yeVwiLCB7IGlzUmVhZGFibGU6IHRydWUsIGlzRGlyZWN0b3J5OiB0cnVlIH0pOyAvLyBmYWxzZVxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQ2hlY2sgaWYgYSBwYXRoIGlzIGEgcmVhZGFibGUgZmlsZVxuICpcbiAqIFJlcXVpcmVzIGAtLWFsbG93LXN5c2AgcGVybWlzc2lvbnMgaW4gc29tZSBjYXNlcy5cbiAqXG4gKiBgYGB0cyBpZ25vcmVcbiAqIGltcG9ydCB7IGV4aXN0cyB9IGZyb20gXCJAc3RkL2ZzL2V4aXN0c1wiO1xuICpcbiAqIGF3YWl0IGV4aXN0cyhcIi4vcmVhZGFibGVfZmlsZVwiLCB7IGlzUmVhZGFibGU6IHRydWUsIGlzRmlsZTogdHJ1ZSB9KTsgLy8gdHJ1ZVxuICogYXdhaXQgZXhpc3RzKFwiLi9ub3RfcmVhZGFibGVfZmlsZVwiLCB7IGlzUmVhZGFibGU6IHRydWUsIGlzRmlsZTogdHJ1ZSB9KTsgLy8gZmFsc2VcbiAqIGBgYFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhpc3RzKFxuICBwYXRoOiBzdHJpbmcgfCBVUkwsXG4gIG9wdGlvbnM/OiBFeGlzdHNPcHRpb25zLFxuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc3RhdCA9IGF3YWl0IERlbm8uc3RhdChwYXRoKTtcbiAgICBpZiAoXG4gICAgICBvcHRpb25zICYmXG4gICAgICAob3B0aW9ucy5pc1JlYWRhYmxlIHx8IG9wdGlvbnMuaXNEaXJlY3RvcnkgfHwgb3B0aW9ucy5pc0ZpbGUpXG4gICAgKSB7XG4gICAgICBpZiAob3B0aW9ucy5pc0RpcmVjdG9yeSAmJiBvcHRpb25zLmlzRmlsZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgIFwiRXhpc3RzT3B0aW9ucy5vcHRpb25zLmlzRGlyZWN0b3J5IGFuZCBFeGlzdHNPcHRpb25zLm9wdGlvbnMuaXNGaWxlIG11c3Qgbm90IGJlIHRydWUgdG9nZXRoZXJcIixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgKG9wdGlvbnMuaXNEaXJlY3RvcnkgJiYgIXN0YXQuaXNEaXJlY3RvcnkpIHx8XG4gICAgICAgIChvcHRpb25zLmlzRmlsZSAmJiAhc3RhdC5pc0ZpbGUpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMuaXNSZWFkYWJsZSkge1xuICAgICAgICByZXR1cm4gZmlsZUlzUmVhZGFibGUoc3RhdCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIERlbm8uZXJyb3JzLk5vdEZvdW5kKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIERlbm8uZXJyb3JzLlBlcm1pc3Npb25EZW5pZWQpIHtcbiAgICAgIGlmIChcbiAgICAgICAgKGF3YWl0IERlbm8ucGVybWlzc2lvbnMucXVlcnkoeyBuYW1lOiBcInJlYWRcIiwgcGF0aCB9KSkuc3RhdGUgPT09XG4gICAgICAgICAgXCJncmFudGVkXCJcbiAgICAgICkge1xuICAgICAgICAvLyAtLWFsbG93LXJlYWQgbm90IG1pc3NpbmdcbiAgICAgICAgcmV0dXJuICFvcHRpb25zPy5pc1JlYWRhYmxlOyAvLyBQZXJtaXNzaW9uRGVuaWVkIHdhcyByYWlzZWQgYnkgZmlsZSBzeXN0ZW0sIHNvIHRoZSBpdGVtIGV4aXN0cywgYnV0IGNhbid0IGJlIHJlYWRcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuLyoqXG4gKiBTeW5jaHJvbm91c2x5IHRlc3Qgd2hldGhlciBvciBub3QgdGhlIGdpdmVuIHBhdGggZXhpc3RzIGJ5IGNoZWNraW5nIHdpdGhcbiAqIHRoZSBmaWxlIHN5c3RlbS5cbiAqXG4gKiBOb3RlOiBEbyBub3QgdXNlIHRoaXMgZnVuY3Rpb24gaWYgcGVyZm9ybWluZyBhIGNoZWNrIGJlZm9yZSBhbm90aGVyIG9wZXJhdGlvblxuICogb24gdGhhdCBmaWxlLiBEb2luZyBzbyBjcmVhdGVzIGEgcmFjZSBjb25kaXRpb24uIEluc3RlYWQsIHBlcmZvcm0gdGhlIGFjdHVhbFxuICogZmlsZSBvcGVyYXRpb24gZGlyZWN0bHkuIFRoaXMgZnVuY3Rpb24gaXMgbm90IHJlY29tbWVuZGVkIGZvciB0aGlzIHVzZSBjYXNlLlxuICogU2VlIHRoZSByZWNvbW1lbmRlZCBtZXRob2QgYmVsb3cuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGltZS1vZi1jaGVja190b190aW1lLW9mLXVzZX0gZm9yXG4gKiBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSB0aW1lLW9mLWNoZWNrIHRvIHRpbWUtb2YtdXNlIGJ1Zy5cbiAqXG4gKiBSZXF1aXJlcyBgLS1hbGxvdy1yZWFkYCBwZXJtaXNzaW9ucywgYW5kIGluIHNvbWUgY2FzZXMsIGAtLWFsbG93LXN5c2BcbiAqIHBlcm1pc3Npb25zIGlmIGBvcHRpb25zLmlzUmVhZGFibGVgIGlzIGB0cnVlYC5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2RvY3MuZGVuby5jb20vcnVudGltZS9tYW51YWwvYmFzaWNzL3Blcm1pc3Npb25zI2ZpbGUtc3lzdGVtLWFjY2Vzc31cbiAqIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIERlbm8ncyBwZXJtaXNzaW9ucyBzeXN0ZW0uXG4gKlxuICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gdGhlIGZpbGUgb3IgZGlyZWN0b3J5LCBhcyBhIHN0cmluZyBvciBVUkwuXG4gKiBAcGFyYW0gb3B0aW9ucyBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSBjaGVjay5cbiAqXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHBhdGggZXhpc3RzLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqXG4gKiBAZXhhbXBsZSBSZWNvbW1lbmRlZCBtZXRob2RcbiAqIGBgYHRzIGlnbm9yZVxuICogLy8gTm90aWNlIG5vIHVzZSBvZiBleGlzdHNcbiAqIHRyeSB7XG4gKiAgIERlbm8ucmVtb3ZlU3luYyhcIi4vZm9vXCIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICogfSBjYXRjaCAoZXJyb3IpIHtcbiAqICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBEZW5vLmVycm9ycy5Ob3RGb3VuZCkpIHtcbiAqICAgICB0aHJvdyBlcnJvcjtcbiAqICAgfVxuICogICAvLyBEbyBub3RoaW5nLi4uXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBOb3RpY2UgdGhhdCBgZXhpc3RzU3luYygpYCBpcyBub3QgdXNlZCBpbiB0aGUgYWJvdmUgZXhhbXBsZS4gRG9pbmcgc28gYXZvaWRzXG4gKiBhIHBvc3NpYmxlIHJhY2UgY29uZGl0aW9uLiBTZWUgdGhlIGFib3ZlIG5vdGUgZm9yIGRldGFpbHMuXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gXCJAc3RkL2ZzL2V4aXN0c1wiO1xuICpcbiAqIGV4aXN0c1N5bmMoXCIuL2V4aXN0c1wiKTsgLy8gdHJ1ZVxuICogZXhpc3RzU3luYyhcIi4vZG9lc19ub3RfZXhpc3RcIik7IC8vIGZhbHNlXG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBDaGVjayBpZiBhIHBhdGggaXMgcmVhZGFibGVcbiAqXG4gKiBSZXF1aXJlcyBgLS1hbGxvdy1zeXNgIHBlcm1pc3Npb25zIGluIHNvbWUgY2FzZXMuXG4gKlxuICogYGBgdHMgaWdub3JlXG4gKiBpbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSBcIkBzdGQvZnMvZXhpc3RzXCI7XG4gKlxuICogZXhpc3RzU3luYyhcIi4vcmVhZGFibGVcIiwgeyBpc1JlYWRhYmxlOiB0cnVlIH0pOyAvLyB0cnVlXG4gKiBleGlzdHNTeW5jKFwiLi9ub3RfcmVhZGFibGVcIiwgeyBpc1JlYWRhYmxlOiB0cnVlIH0pOyAvLyBmYWxzZVxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQ2hlY2sgaWYgYSBwYXRoIGlzIGEgZGlyZWN0b3J5XG4gKiBgYGB0cyBpZ25vcmVcbiAqIGltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tIFwiQHN0ZC9mcy9leGlzdHNcIjtcbiAqXG4gKiBleGlzdHNTeW5jKFwiLi9kaXJlY3RvcnlcIiwgeyBpc0RpcmVjdG9yeTogdHJ1ZSB9KTsgLy8gdHJ1ZVxuICogZXhpc3RzU3luYyhcIi4vZmlsZVwiLCB7IGlzRGlyZWN0b3J5OiB0cnVlIH0pOyAvLyBmYWxzZVxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQ2hlY2sgaWYgYSBwYXRoIGlzIGEgZmlsZVxuICogYGBgdHMgaWdub3JlXG4gKiBpbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSBcIkBzdGQvZnMvZXhpc3RzXCI7XG4gKlxuICogZXhpc3RzU3luYyhcIi4vZmlsZVwiLCB7IGlzRmlsZTogdHJ1ZSB9KTsgLy8gdHJ1ZVxuICogZXhpc3RzU3luYyhcIi4vZGlyZWN0b3J5XCIsIHsgaXNGaWxlOiB0cnVlIH0pOyAvLyBmYWxzZVxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQ2hlY2sgaWYgYSBwYXRoIGlzIGEgcmVhZGFibGUgZGlyZWN0b3J5XG4gKlxuICogUmVxdWlyZXMgYC0tYWxsb3ctc3lzYCBwZXJtaXNzaW9ucyBpbiBzb21lIGNhc2VzLlxuICpcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gXCJAc3RkL2ZzL2V4aXN0c1wiO1xuICpcbiAqIGV4aXN0c1N5bmMoXCIuL3JlYWRhYmxlX2RpcmVjdG9yeVwiLCB7IGlzUmVhZGFibGU6IHRydWUsIGlzRGlyZWN0b3J5OiB0cnVlIH0pOyAvLyB0cnVlXG4gKiBleGlzdHNTeW5jKFwiLi9ub3RfcmVhZGFibGVfZGlyZWN0b3J5XCIsIHsgaXNSZWFkYWJsZTogdHJ1ZSwgaXNEaXJlY3Rvcnk6IHRydWUgfSk7IC8vIGZhbHNlXG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBDaGVjayBpZiBhIHBhdGggaXMgYSByZWFkYWJsZSBmaWxlXG4gKlxuICogUmVxdWlyZXMgYC0tYWxsb3ctc3lzYCBwZXJtaXNzaW9ucyBpbiBzb21lIGNhc2VzLlxuICpcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gXCJAc3RkL2ZzL2V4aXN0c1wiO1xuICpcbiAqIGV4aXN0c1N5bmMoXCIuL3JlYWRhYmxlX2ZpbGVcIiwgeyBpc1JlYWRhYmxlOiB0cnVlLCBpc0ZpbGU6IHRydWUgfSk7IC8vIHRydWVcbiAqIGV4aXN0c1N5bmMoXCIuL25vdF9yZWFkYWJsZV9maWxlXCIsIHsgaXNSZWFkYWJsZTogdHJ1ZSwgaXNGaWxlOiB0cnVlIH0pOyAvLyBmYWxzZVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGlzdHNTeW5jKFxuICBwYXRoOiBzdHJpbmcgfCBVUkwsXG4gIG9wdGlvbnM/OiBFeGlzdHNPcHRpb25zLFxuKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc3RhdCA9IERlbm8uc3RhdFN5bmMocGF0aCk7XG4gICAgaWYgKFxuICAgICAgb3B0aW9ucyAmJlxuICAgICAgKG9wdGlvbnMuaXNSZWFkYWJsZSB8fCBvcHRpb25zLmlzRGlyZWN0b3J5IHx8IG9wdGlvbnMuaXNGaWxlKVxuICAgICkge1xuICAgICAgaWYgKG9wdGlvbnMuaXNEaXJlY3RvcnkgJiYgb3B0aW9ucy5pc0ZpbGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICBcIkV4aXN0c09wdGlvbnMub3B0aW9ucy5pc0RpcmVjdG9yeSBhbmQgRXhpc3RzT3B0aW9ucy5vcHRpb25zLmlzRmlsZSBtdXN0IG5vdCBiZSB0cnVlIHRvZ2V0aGVyXCIsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIChvcHRpb25zLmlzRGlyZWN0b3J5ICYmICFzdGF0LmlzRGlyZWN0b3J5KSB8fFxuICAgICAgICAob3B0aW9ucy5pc0ZpbGUgJiYgIXN0YXQuaXNGaWxlKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLmlzUmVhZGFibGUpIHtcbiAgICAgICAgcmV0dXJuIGZpbGVJc1JlYWRhYmxlKHN0YXQpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBEZW5vLmVycm9ycy5Ob3RGb3VuZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBEZW5vLmVycm9ycy5QZXJtaXNzaW9uRGVuaWVkKSB7XG4gICAgICBpZiAoXG4gICAgICAgIERlbm8ucGVybWlzc2lvbnMucXVlcnlTeW5jKHsgbmFtZTogXCJyZWFkXCIsIHBhdGggfSkuc3RhdGUgPT09IFwiZ3JhbnRlZFwiXG4gICAgICApIHtcbiAgICAgICAgLy8gLS1hbGxvdy1yZWFkIG5vdCBtaXNzaW5nXG4gICAgICAgIHJldHVybiAhb3B0aW9ucz8uaXNSZWFkYWJsZTsgLy8gUGVybWlzc2lvbkRlbmllZCB3YXMgcmFpc2VkIGJ5IGZpbGUgc3lzdGVtLCBzbyB0aGUgaXRlbSBleGlzdHMsIGJ1dCBjYW4ndCBiZSByZWFkXG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZpbGVJc1JlYWRhYmxlKHN0YXQ6IERlbm8uRmlsZUluZm8pIHtcbiAgaWYgKHN0YXQubW9kZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlOyAvLyBFeGNsdXNpdmUgb24gTm9uLVBPU0lYIHN5c3RlbXNcbiAgfSBlbHNlIGlmIChEZW5vLnVpZCgpID09PSBzdGF0LnVpZCkge1xuICAgIHJldHVybiAoc3RhdC5tb2RlICYgMG80MDApID09PSAwbzQwMDsgLy8gVXNlciBpcyBvd25lciBhbmQgY2FuIHJlYWQ/XG4gIH0gZWxzZSBpZiAoRGVuby5naWQoKSA9PT0gc3RhdC5naWQpIHtcbiAgICByZXR1cm4gKHN0YXQubW9kZSAmIDBvMDQwKSA9PT0gMG8wNDA7IC8vIFVzZXIgZ3JvdXAgaXMgb3duZXIgYW5kIGNhbiByZWFkP1xuICB9XG4gIHJldHVybiAoc3RhdC5tb2RlICYgMG8wMDQpID09PSAwbzAwNDsgLy8gT3RoZXJzIGNhbiByZWFkP1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUVyRCwrREFBK0QsR0F3Qi9EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FnR0MsR0FDRCxPQUFPLGVBQWUsT0FDcEIsSUFBa0IsRUFDbEIsT0FBdUI7RUFFdkIsSUFBSTtJQUNGLE1BQU0sT0FBTyxNQUFNLEtBQUssSUFBSSxDQUFDO0lBQzdCLElBQ0UsV0FDQSxDQUFDLFFBQVEsVUFBVSxJQUFJLFFBQVEsV0FBVyxJQUFJLFFBQVEsTUFBTSxHQUM1RDtNQUNBLElBQUksUUFBUSxXQUFXLElBQUksUUFBUSxNQUFNLEVBQUU7UUFDekMsTUFBTSxJQUFJLFVBQ1I7TUFFSjtNQUNBLElBQ0UsQUFBQyxRQUFRLFdBQVcsSUFBSSxDQUFDLEtBQUssV0FBVyxJQUN4QyxRQUFRLE1BQU0sSUFBSSxDQUFDLEtBQUssTUFBTSxFQUMvQjtRQUNBLE9BQU87TUFDVDtNQUNBLElBQUksUUFBUSxVQUFVLEVBQUU7UUFDdEIsT0FBTyxlQUFlO01BQ3hCO0lBQ0Y7SUFDQSxPQUFPO0VBQ1QsRUFBRSxPQUFPLE9BQU87SUFDZCxJQUFJLGlCQUFpQixLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUU7TUFDekMsT0FBTztJQUNUO0lBQ0EsSUFBSSxpQkFBaUIsS0FBSyxNQUFNLENBQUMsZ0JBQWdCLEVBQUU7TUFDakQsSUFDRSxDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQUUsTUFBTTtRQUFRO01BQUssRUFBRSxFQUFFLEtBQUssS0FDMUQsV0FDRjtRQUNBLDJCQUEyQjtRQUMzQixPQUFPLENBQUMsU0FBUyxZQUFZLG9GQUFvRjtNQUNuSDtJQUNGO0lBQ0EsTUFBTTtFQUNSO0FBQ0Y7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0ErRkMsR0FDRCxPQUFPLFNBQVMsV0FDZCxJQUFrQixFQUNsQixPQUF1QjtFQUV2QixJQUFJO0lBQ0YsTUFBTSxPQUFPLEtBQUssUUFBUSxDQUFDO0lBQzNCLElBQ0UsV0FDQSxDQUFDLFFBQVEsVUFBVSxJQUFJLFFBQVEsV0FBVyxJQUFJLFFBQVEsTUFBTSxHQUM1RDtNQUNBLElBQUksUUFBUSxXQUFXLElBQUksUUFBUSxNQUFNLEVBQUU7UUFDekMsTUFBTSxJQUFJLFVBQ1I7TUFFSjtNQUNBLElBQ0UsQUFBQyxRQUFRLFdBQVcsSUFBSSxDQUFDLEtBQUssV0FBVyxJQUN4QyxRQUFRLE1BQU0sSUFBSSxDQUFDLEtBQUssTUFBTSxFQUMvQjtRQUNBLE9BQU87TUFDVDtNQUNBLElBQUksUUFBUSxVQUFVLEVBQUU7UUFDdEIsT0FBTyxlQUFlO01BQ3hCO0lBQ0Y7SUFDQSxPQUFPO0VBQ1QsRUFBRSxPQUFPLE9BQU87SUFDZCxJQUFJLGlCQUFpQixLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUU7TUFDekMsT0FBTztJQUNUO0lBQ0EsSUFBSSxpQkFBaUIsS0FBSyxNQUFNLENBQUMsZ0JBQWdCLEVBQUU7TUFDakQsSUFDRSxLQUFLLFdBQVcsQ0FBQyxTQUFTLENBQUM7UUFBRSxNQUFNO1FBQVE7TUFBSyxHQUFHLEtBQUssS0FBSyxXQUM3RDtRQUNBLDJCQUEyQjtRQUMzQixPQUFPLENBQUMsU0FBUyxZQUFZLG9GQUFvRjtNQUNuSDtJQUNGO0lBQ0EsTUFBTTtFQUNSO0FBQ0Y7QUFFQSxTQUFTLGVBQWUsSUFBbUI7RUFDekMsSUFBSSxLQUFLLElBQUksS0FBSyxNQUFNO0lBQ3RCLE9BQU8sTUFBTSxpQ0FBaUM7RUFDaEQsT0FBTyxJQUFJLEtBQUssR0FBRyxPQUFPLEtBQUssR0FBRyxFQUFFO0lBQ2xDLE9BQU8sQ0FBQyxLQUFLLElBQUksR0FBRyxLQUFLLE1BQU0sT0FBTyw4QkFBOEI7RUFDdEUsT0FBTyxJQUFJLEtBQUssR0FBRyxPQUFPLEtBQUssR0FBRyxFQUFFO0lBQ2xDLE9BQU8sQ0FBQyxLQUFLLElBQUksR0FBRyxLQUFLLE1BQU0sT0FBTyxvQ0FBb0M7RUFDNUU7RUFDQSxPQUFPLENBQUMsS0FBSyxJQUFJLEdBQUcsS0FBSyxNQUFNLE9BQU8sbUJBQW1CO0FBQzNEIn0= +// denoCacheMetadata=12635690072377498865,1331538058171491709
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/3b9c564787e5f2f66afd4abe8ff7b405532c182d381eddeab28466173172c34d.js b/vendor/gen/https/jsr.io/3b9c564787e5f2f66afd4abe8ff7b405532c182d381eddeab28466173172c34d.js new file mode 100644 index 0000000..65bfde0 --- /dev/null +++ b/vendor/gen/https/jsr.io/3b9c564787e5f2f66afd4abe8ff7b405532c182d381eddeab28466173172c34d.js @@ -0,0 +1,627 @@ +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2025 the Deno authors. MIT license. +import { AMPERSAND, ASTERISK, BOM, COLON, COMMA, COMMERCIAL_AT, DOUBLE_QUOTE, EXCLAMATION, GRAVE_ACCENT, GREATER_THAN, isWhiteSpace, LEFT_CURLY_BRACKET, LEFT_SQUARE_BRACKET, LINE_FEED, MINUS, PERCENT, QUESTION, RIGHT_CURLY_BRACKET, RIGHT_SQUARE_BRACKET, SHARP, SINGLE_QUOTE, VERTICAL_LINE } from "./_chars.ts"; +import { DEFAULT_SCHEMA } from "./_schema.ts"; +import { isObject } from "./_utils.ts"; +const STYLE_PLAIN = 1; +const STYLE_SINGLE = 2; +const STYLE_LITERAL = 3; +const STYLE_FOLDED = 4; +const STYLE_DOUBLE = 5; +const LEADING_SPACE_REGEXP = /^\n* /; +const ESCAPE_SEQUENCES = new Map([ + [ + 0x00, + "\\0" + ], + [ + 0x07, + "\\a" + ], + [ + 0x08, + "\\b" + ], + [ + 0x09, + "\\t" + ], + [ + 0x0a, + "\\n" + ], + [ + 0x0b, + "\\v" + ], + [ + 0x0c, + "\\f" + ], + [ + 0x0d, + "\\r" + ], + [ + 0x1b, + "\\e" + ], + [ + 0x22, + '\\"' + ], + [ + 0x5c, + "\\\\" + ], + [ + 0x85, + "\\N" + ], + [ + 0xa0, + "\\_" + ], + [ + 0x2028, + "\\L" + ], + [ + 0x2029, + "\\P" + ] +]); +const DEPRECATED_BOOLEANS_SYNTAX = [ + "y", + "Y", + "yes", + "Yes", + "YES", + "on", + "On", + "ON", + "n", + "N", + "no", + "No", + "NO", + "off", + "Off", + "OFF" +]; +/** + * Encodes a Unicode character code point as a hexadecimal escape sequence. + */ function charCodeToHexString(charCode) { + const hexString = charCode.toString(16).toUpperCase(); + if (charCode <= 0xff) return `\\x${hexString.padStart(2, "0")}`; + if (charCode <= 0xffff) return `\\u${hexString.padStart(4, "0")}`; + if (charCode <= 0xffffffff) return `\\U${hexString.padStart(8, "0")}`; + throw new Error("Code point within a string may not be greater than 0xFFFFFFFF"); +} +function createStyleMap(map) { + const result = new Map(); + for (let tag of Object.keys(map)){ + const style = String(map[tag]); + if (tag.slice(0, 2) === "!!") { + tag = `tag:yaml.org,2002:${tag.slice(2)}`; + } + result.set(tag, style); + } + return result; +} +// Indents every line in a string. Empty lines (\n only) are not indented. +function indentString(string, spaces) { + const indent = " ".repeat(spaces); + return string.split("\n").map((line)=>line.length ? indent + line : line).join("\n"); +} +function generateNextLine(indent, level) { + return `\n${" ".repeat(indent * level)}`; +} +/** + * @link https://yaml.org/spec/1.2.2/ 5.1. Character Set + * @return `true` if the character is printable without escaping, `false` otherwise. + */ function isPrintable(c) { + return 0x00020 <= c && c <= 0x00007e || 0x000a1 <= c && c <= 0x00d7ff && c !== 0x2028 && c !== 0x2029 || 0x0e000 <= c && c <= 0x00fffd && c !== BOM || 0x10000 <= c && c <= 0x10ffff; +} +/** + * @return `true` if value is allowed after the first character in plain style, `false` otherwise. + */ function isPlainSafe(c) { + return isPrintable(c) && c !== BOM && c !== COMMA && c !== LEFT_SQUARE_BRACKET && c !== RIGHT_SQUARE_BRACKET && c !== LEFT_CURLY_BRACKET && c !== RIGHT_CURLY_BRACKET && c !== COLON && c !== SHARP; +} +/** + * @return `true` if value is allowed as the first character in plain style, `false` otherwise. + */ function isPlainSafeFirst(c) { + return isPlainSafe(c) && !isWhiteSpace(c) && c !== MINUS && c !== QUESTION && c !== AMPERSAND && c !== ASTERISK && c !== EXCLAMATION && c !== VERTICAL_LINE && c !== GREATER_THAN && c !== SINGLE_QUOTE && c !== DOUBLE_QUOTE && c !== PERCENT && c !== COMMERCIAL_AT && c !== GRAVE_ACCENT; +} +// Determines whether block indentation indicator is required. +function needIndentIndicator(string) { + return LEADING_SPACE_REGEXP.test(string); +} +// Determines which scalar styles are possible and returns the preferred style. +// lineWidth = -1 => no limit. +// Pre-conditions: str.length > 0. +// Post-conditions: +// STYLE_PLAIN or STYLE_SINGLE => no \n are in the string. +// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1). +// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth !== -1). +function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, implicitTypes) { + const shouldTrackWidth = lineWidth !== -1; + let hasLineBreak = false; + let hasFoldableLine = false; // only checked if shouldTrackWidth + let previousLineBreak = -1; // count the first line correctly + let plain = isPlainSafeFirst(string.charCodeAt(0)) && !isWhiteSpace(string.charCodeAt(string.length - 1)); + let char; + let i; + if (singleLineOnly) { + // Case: no block styles. + // Check for disallowed characters to rule out plain and single. + for(i = 0; i < string.length; i++){ + char = string.charCodeAt(i); + if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + plain = plain && isPlainSafe(char); + } + } else { + // Case: block styles permitted. + for(i = 0; i < string.length; i++){ + char = string.charCodeAt(i); + if (char === LINE_FEED) { + hasLineBreak = true; + // Check if any line can be folded. + if (shouldTrackWidth) { + hasFoldableLine = hasFoldableLine || // Foldable line = too long, and not more-indented. + i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== " "; + previousLineBreak = i; + } + } else if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + plain = plain && isPlainSafe(char); + } + // in case the end is missing a \n + hasFoldableLine = hasFoldableLine || shouldTrackWidth && i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== " "; + } + // Although every style can represent \n without escaping, prefer block styles + // for multiline, since they're more readable and they don't add empty lines. + // Also prefer folding a super-long line. + if (!hasLineBreak && !hasFoldableLine) { + // Strings interpretable as another type have to be quoted; + // e.g. the string 'true' vs. the boolean true. + return plain && !implicitTypes.some((type)=>type.resolve(string)) ? STYLE_PLAIN : STYLE_SINGLE; + } + // Edge case: block indentation indicator can only have one digit. + if (indentPerLevel > 9 && needIndentIndicator(string)) { + return STYLE_DOUBLE; + } + // At this point we know block styles are valid. + // Prefer literal style unless we want to fold. + return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; +} +// Greedy line breaking. +// Picks the longest line under the limit each time, +// otherwise settles for the shortest line over the limit. +// NB. More-indented lines *cannot* be folded, as that would add an extra \n. +function foldLine(line, width) { + if (line === "" || line[0] === " ") return line; + // Since a more-indented line adds a \n, breaks can't be followed by a space. + const breakRegExp = / [^ ]/g; // note: the match index will always be <= length-2. + // start is an inclusive index. end, curr, and next are exclusive. + let start = 0; + let end; + let curr = 0; + let next = 0; + const lines = []; + // Invariants: 0 <= start <= length-1. + // 0 <= curr <= next <= max(0, length-2). curr - start <= width. + // Inside the loop: + // A match implies length >= 2, so curr and next are <= length-2. + for (const match of line.matchAll(breakRegExp)){ + next = match.index; + // maintain invariant: curr - start <= width + if (next - start > width) { + end = curr > start ? curr : next; // derive end <= length-2 + lines.push(line.slice(start, end)); + // skip the space that was output as \n + start = end + 1; // derive start <= length-1 + } + curr = next; + } + // By the invariants, start <= length-1, so there is something left over. + // It is either the whole string or a part starting from non-whitespace. + // Insert a break if the remainder is too long and there is a break available. + if (line.length - start > width && curr > start) { + lines.push(line.slice(start, curr)); + lines.push(line.slice(curr + 1)); + } else { + lines.push(line.slice(start)); + } + return lines.join("\n"); +} +function trimTrailingNewline(string) { + return string.at(-1) === "\n" ? string.slice(0, -1) : string; +} +// Note: a long line without a suitable break point will exceed the width limit. +// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0. +function foldString(string, width) { + // In folded style, $k$ consecutive newlines output as $k+1$ newlines— + // unless they're before or after a more-indented line, or at the very + // beginning or end, in which case $k$ maps to $k$. + // Therefore, parse each chunk as newline(s) followed by a content line. + const lineRe = /(\n+)([^\n]*)/g; + // first line (possibly an empty line) + let result = (()=>{ + let nextLF = string.indexOf("\n"); + nextLF = nextLF !== -1 ? nextLF : string.length; + lineRe.lastIndex = nextLF; + return foldLine(string.slice(0, nextLF), width); + })(); + // If we haven't reached the first content line yet, don't add an extra \n. + let prevMoreIndented = string[0] === "\n" || string[0] === " "; + let moreIndented; + // rest of the lines + let match; + // tslint:disable-next-line:no-conditional-assignment + while(match = lineRe.exec(string)){ + const prefix = match[1]; + const line = match[2] || ""; + moreIndented = line[0] === " "; + result += prefix + (!prevMoreIndented && !moreIndented && line !== "" ? "\n" : "") + foldLine(line, width); + prevMoreIndented = moreIndented; + } + return result; +} +// Escapes a double-quoted string. +function escapeString(string) { + let result = ""; + let char; + let nextChar; + let escapeSeq; + for(let i = 0; i < string.length; i++){ + char = string.charCodeAt(i); + // Check for surrogate pairs (reference Unicode 3.0 section "3.7 Surrogates"). + if (char >= 0xd800 && char <= 0xdbff /* high surrogate */ ) { + nextChar = string.charCodeAt(i + 1); + if (nextChar >= 0xdc00 && nextChar <= 0xdfff /* low surrogate */ ) { + // Combine the surrogate pair and store it escaped. + result += charCodeToHexString((char - 0xd800) * 0x400 + nextChar - 0xdc00 + 0x10000); + // Advance index one extra since we already used that char here. + i++; + continue; + } + } + escapeSeq = ESCAPE_SEQUENCES.get(char); + result += !escapeSeq && isPrintable(char) ? string[i] : escapeSeq || charCodeToHexString(char); + } + return result; +} +// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9. +function blockHeader(string, indentPerLevel) { + const indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ""; + // note the special case: the string '\n' counts as a "trailing" empty line. + const clip = string[string.length - 1] === "\n"; + const keep = clip && (string[string.length - 2] === "\n" || string === "\n"); + const chomp = keep ? "+" : clip ? "" : "-"; + return `${indentIndicator}${chomp}\n`; +} +function inspectNode(object, objects, duplicateObjects) { + if (!isObject(object)) return; + if (objects.has(object)) { + duplicateObjects.add(object); + return; + } + objects.add(object); + const entries = Array.isArray(object) ? object : Object.values(object); + for (const value of entries){ + inspectNode(value, objects, duplicateObjects); + } +} +export class DumperState { + indent; + arrayIndent; + skipInvalid; + flowLevel; + sortKeys; + lineWidth; + useAnchors; + compatMode; + condenseFlow; + implicitTypes; + explicitTypes; + duplicates = []; + usedDuplicates = new Set(); + styleMap = new Map(); + constructor({ schema = DEFAULT_SCHEMA, indent = 2, arrayIndent = true, skipInvalid = false, flowLevel = -1, styles = undefined, sortKeys = false, lineWidth = 80, useAnchors = true, compatMode = true, condenseFlow = false }){ + this.indent = Math.max(1, indent); + this.arrayIndent = arrayIndent; + this.skipInvalid = skipInvalid; + this.flowLevel = flowLevel; + if (styles) this.styleMap = createStyleMap(styles); + this.sortKeys = sortKeys; + this.lineWidth = lineWidth; + this.useAnchors = useAnchors; + this.compatMode = compatMode; + this.condenseFlow = condenseFlow; + this.implicitTypes = schema.implicitTypes; + this.explicitTypes = schema.explicitTypes; + } + // Note: line breaking/folding is implemented for only the folded style. + // NB. We drop the last trailing newline (if any) of a returned block scalar + // since the dumper adds its own newline. This always works: + // • No ending newline => unaffected; already using strip "-" chomping. + // • Ending newline => removed then restored. + // Importantly, this keeps the "+" chomp indicator from gaining an extra line. + stringifyScalar(string, { level, isKey }) { + if (string.length === 0) { + return "''"; + } + if (this.compatMode && DEPRECATED_BOOLEANS_SYNTAX.includes(string)) { + return `'${string}'`; + } + const indent = this.indent * Math.max(1, level); // no 0-indent scalars + // As indentation gets deeper, let the width decrease monotonically + // to the lower bound min(this.lineWidth, 40). + // Note that this implies + // this.lineWidth ≤ 40 + this.indent: width is fixed at the lower bound. + // this.lineWidth > 40 + this.indent: width decreases until the lower + // bound. + // This behaves better than a constant minimum width which disallows + // narrower options, or an indent threshold which causes the width + // to suddenly increase. + const lineWidth = this.lineWidth === -1 ? -1 : Math.max(Math.min(this.lineWidth, 40), this.lineWidth - indent); + // Without knowing if keys are implicit/explicit, + // assume implicit for safety. + const singleLineOnly = isKey || // No block styles in flow mode. + this.flowLevel > -1 && level >= this.flowLevel; + const scalarStyle = chooseScalarStyle(string, singleLineOnly, this.indent, lineWidth, this.implicitTypes); + switch(scalarStyle){ + case STYLE_PLAIN: + return string; + case STYLE_SINGLE: + return `'${string.replace(/'/g, "''")}'`; + case STYLE_LITERAL: + return `|${blockHeader(string, this.indent)}${trimTrailingNewline(indentString(string, indent))}`; + case STYLE_FOLDED: + return `>${blockHeader(string, this.indent)}${trimTrailingNewline(indentString(foldString(string, lineWidth), indent))}`; + case STYLE_DOUBLE: + return `"${escapeString(string)}"`; + default: + throw new TypeError("Invalid scalar style should be unreachable: please file a bug report against Deno at https://github.com/denoland/std/issues"); + } + } + stringifyFlowSequence(array, { level }) { + const results = []; + for (const value of array){ + const string = this.stringifyNode(value, { + level, + block: false, + compact: false, + isKey: false + }); + if (string === null) continue; + results.push(string); + } + const separator = this.condenseFlow ? "," : ", "; + return `[${results.join(separator)}]`; + } + stringifyBlockSequence(array, { level, compact }) { + const whitespace = generateNextLine(this.indent, level); + const prefix = compact ? "" : whitespace; + const results = []; + for (const value of array){ + const string = this.stringifyNode(value, { + level: level + 1, + block: true, + compact: true, + isKey: false + }); + if (string === null) continue; + const linePrefix = LINE_FEED === string.charCodeAt(0) ? "-" : "- "; + results.push(`${linePrefix}${string}`); + } + return results.length ? prefix + results.join(whitespace) : "[]"; + } + stringifyFlowMapping(object, { level }) { + const quote = this.condenseFlow ? '"' : ""; + const separator = this.condenseFlow ? ":" : ": "; + const results = []; + for (const [key, value] of Object.entries(object)){ + const keyString = this.stringifyNode(key, { + level, + block: false, + compact: false, + isKey: false + }); + if (keyString === null) continue; // Skip this pair because of invalid key; + const valueString = this.stringifyNode(value, { + level, + block: false, + compact: false, + isKey: false + }); + if (valueString === null) continue; // Skip this pair because of invalid value. + const keyPrefix = keyString.length > 1024 ? "? " : ""; + results.push(quote + keyPrefix + keyString + quote + separator + valueString); + } + return `{${results.join(", ")}}`; + } + stringifyBlockMapping(object, { tag, level, compact }) { + const keys = Object.keys(object); + // Allow sorting keys so that the output file is deterministic + if (this.sortKeys === true) { + // Default sorting + keys.sort(); + } else if (typeof this.sortKeys === "function") { + // Custom sort function + keys.sort(this.sortKeys); + } else if (this.sortKeys) { + // Something is wrong + throw new TypeError(`"sortKeys" must be a boolean or a function: received ${typeof this.sortKeys}`); + } + const separator = generateNextLine(this.indent, level); + const results = []; + for (const key of keys){ + const value = object[key]; + const keyString = this.stringifyNode(key, { + level: level + 1, + block: true, + compact: true, + isKey: true + }); + if (keyString === null) continue; // Skip this pair because of invalid key. + const explicitPair = tag !== null && tag !== "?" || keyString.length > 1024; + const valueString = this.stringifyNode(value, { + level: level + 1, + block: true, + compact: explicitPair, + isKey: false + }); + if (valueString === null) continue; // Skip this pair because of invalid value. + let pairBuffer = ""; + if (explicitPair) { + pairBuffer += keyString.charCodeAt(0) === LINE_FEED ? "?" : "? "; + } + pairBuffer += keyString; + if (explicitPair) pairBuffer += separator; + pairBuffer += valueString.charCodeAt(0) === LINE_FEED ? ":" : ": "; + pairBuffer += valueString; + results.push(pairBuffer); + } + const prefix = compact ? "" : separator; + return results.length ? prefix + results.join(separator) : "{}"; // Empty mapping if no valid pairs. + } + getTypeRepresentation(type, value) { + if (!type.represent) return value; + const style = this.styleMap.get(type.tag) ?? type.defaultStyle; + if (typeof type.represent === "function") { + return type.represent(value, style); + } + const represent = type.represent[style]; + if (!represent) { + throw new TypeError(`!<${type.tag}> tag resolver accepts not "${style}" style`); + } + return represent(value, style); + } + detectType(value) { + for (const type of this.implicitTypes){ + if (type.predicate?.(value)) { + value = this.getTypeRepresentation(type, value); + return { + tag: "?", + value + }; + } + } + for (const type of this.explicitTypes){ + if (type.predicate?.(value)) { + value = this.getTypeRepresentation(type, value); + return { + tag: type.tag, + value + }; + } + } + return { + tag: null, + value + }; + } + // Serializes `object` and writes it to global `result`. + // Returns true on success, or false on invalid object. + stringifyNode(value, { level, block, compact, isKey }) { + const result = this.detectType(value); + const tag = result.tag; + value = result.value; + if (block) { + block = this.flowLevel < 0 || this.flowLevel > level; + } + if (typeof value === "string" || value instanceof String) { + value = value instanceof String ? value.valueOf() : value; + if (tag !== "?") { + value = this.stringifyScalar(value, { + level, + isKey + }); + } + } else if (isObject(value)) { + const duplicateIndex = this.duplicates.indexOf(value); + const duplicate = duplicateIndex !== -1; + if (duplicate) { + if (this.usedDuplicates.has(value)) return `*ref_${duplicateIndex}`; + this.usedDuplicates.add(value); + } + if (tag !== null && tag !== "?" || duplicate || this.indent !== 2 && level > 0) { + compact = false; + } + if (Array.isArray(value)) { + const arrayLevel = !this.arrayIndent && level > 0 ? level - 1 : level; + if (block && value.length !== 0) { + value = this.stringifyBlockSequence(value, { + level: arrayLevel, + compact + }); + if (duplicate) { + value = `&ref_${duplicateIndex}${value}`; + } + } else { + value = this.stringifyFlowSequence(value, { + level: arrayLevel + }); + if (duplicate) { + value = `&ref_${duplicateIndex} ${value}`; + } + } + } else { + if (block && Object.keys(value).length !== 0) { + value = this.stringifyBlockMapping(value, { + tag, + level, + compact + }); + if (duplicate) { + value = `&ref_${duplicateIndex}${value}`; + } + } else { + value = this.stringifyFlowMapping(value, { + level + }); + if (duplicate) { + value = `&ref_${duplicateIndex} ${value}`; + } + } + } + } else { + if (this.skipInvalid) return null; + throw new TypeError(`Cannot stringify ${typeof value}`); + } + if (tag !== null && tag !== "?") { + value = `!<${tag}> ${value}`; + } + return value; + } + stringify(value) { + if (this.useAnchors) { + const values = new Set(); + const duplicateObjects = new Set(); + inspectNode(value, values, duplicateObjects); + this.duplicates = [ + ...duplicateObjects + ]; + this.usedDuplicates = new Set(); + } + const string = this.stringifyNode(value, { + level: 0, + block: true, + compact: true, + isKey: false + }); + if (string !== null) { + return `${string}\n`; + } + return ""; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQveWFtbC8xLjAuNi9fZHVtcGVyX3N0YXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFBvcnRlZCBmcm9tIGpzLXlhbWwgdjMuMTMuMTpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvanMteWFtbC9jb21taXQvNjY1YWFkZGE0MjM0OWRjYWU4NjlmMTIwNDBkOWIxMGVmMThkMTJkYVxuLy8gQ29weXJpZ2h0IDIwMTEtMjAxNSBieSBWaXRhbHkgUHV6cmluLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG5cbmltcG9ydCB7XG4gIEFNUEVSU0FORCxcbiAgQVNURVJJU0ssXG4gIEJPTSxcbiAgQ09MT04sXG4gIENPTU1BLFxuICBDT01NRVJDSUFMX0FULFxuICBET1VCTEVfUVVPVEUsXG4gIEVYQ0xBTUFUSU9OLFxuICBHUkFWRV9BQ0NFTlQsXG4gIEdSRUFURVJfVEhBTixcbiAgaXNXaGl0ZVNwYWNlLFxuICBMRUZUX0NVUkxZX0JSQUNLRVQsXG4gIExFRlRfU1FVQVJFX0JSQUNLRVQsXG4gIExJTkVfRkVFRCxcbiAgTUlOVVMsXG4gIFBFUkNFTlQsXG4gIFFVRVNUSU9OLFxuICBSSUdIVF9DVVJMWV9CUkFDS0VULFxuICBSSUdIVF9TUVVBUkVfQlJBQ0tFVCxcbiAgU0hBUlAsXG4gIFNJTkdMRV9RVU9URSxcbiAgVkVSVElDQUxfTElORSxcbn0gZnJvbSBcIi4vX2NoYXJzLnRzXCI7XG5pbXBvcnQgeyBERUZBVUxUX1NDSEVNQSwgdHlwZSBTY2hlbWEgfSBmcm9tIFwiLi9fc2NoZW1hLnRzXCI7XG5pbXBvcnQgdHlwZSB7IEtpbmRUeXBlLCBTdHlsZVZhcmlhbnQsIFR5cGUgfSBmcm9tIFwiLi9fdHlwZS50c1wiO1xuaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tIFwiLi9fdXRpbHMudHNcIjtcblxuY29uc3QgU1RZTEVfUExBSU4gPSAxO1xuY29uc3QgU1RZTEVfU0lOR0xFID0gMjtcbmNvbnN0IFNUWUxFX0xJVEVSQUwgPSAzO1xuY29uc3QgU1RZTEVfRk9MREVEID0gNDtcbmNvbnN0IFNUWUxFX0RPVUJMRSA9IDU7XG5cbmNvbnN0IExFQURJTkdfU1BBQ0VfUkVHRVhQID0gL15cXG4qIC87XG5cbmNvbnN0IEVTQ0FQRV9TRVFVRU5DRVMgPSBuZXcgTWFwPG51bWJlciwgc3RyaW5nPihbXG4gIFsweDAwLCBcIlxcXFwwXCJdLFxuICBbMHgwNywgXCJcXFxcYVwiXSxcbiAgWzB4MDgsIFwiXFxcXGJcIl0sXG4gIFsweDA5LCBcIlxcXFx0XCJdLFxuICBbMHgwYSwgXCJcXFxcblwiXSxcbiAgWzB4MGIsIFwiXFxcXHZcIl0sXG4gIFsweDBjLCBcIlxcXFxmXCJdLFxuICBbMHgwZCwgXCJcXFxcclwiXSxcbiAgWzB4MWIsIFwiXFxcXGVcIl0sXG4gIFsweDIyLCAnXFxcXFwiJ10sXG4gIFsweDVjLCBcIlxcXFxcXFxcXCJdLFxuICBbMHg4NSwgXCJcXFxcTlwiXSxcbiAgWzB4YTAsIFwiXFxcXF9cIl0sXG4gIFsweDIwMjgsIFwiXFxcXExcIl0sXG4gIFsweDIwMjksIFwiXFxcXFBcIl0sXG5dKTtcblxuY29uc3QgREVQUkVDQVRFRF9CT09MRUFOU19TWU5UQVggPSBbXG4gIFwieVwiLFxuICBcIllcIixcbiAgXCJ5ZXNcIixcbiAgXCJZZXNcIixcbiAgXCJZRVNcIixcbiAgXCJvblwiLFxuICBcIk9uXCIsXG4gIFwiT05cIixcbiAgXCJuXCIsXG4gIFwiTlwiLFxuICBcIm5vXCIsXG4gIFwiTm9cIixcbiAgXCJOT1wiLFxuICBcIm9mZlwiLFxuICBcIk9mZlwiLFxuICBcIk9GRlwiLFxuXTtcblxuLyoqXG4gKiBFbmNvZGVzIGEgVW5pY29kZSBjaGFyYWN0ZXIgY29kZSBwb2ludCBhcyBhIGhleGFkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZS5cbiAqL1xuZnVuY3Rpb24gY2hhckNvZGVUb0hleFN0cmluZyhjaGFyQ29kZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3QgaGV4U3RyaW5nID0gY2hhckNvZGUudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG4gIGlmIChjaGFyQ29kZSA8PSAweGZmKSByZXR1cm4gYFxcXFx4JHtoZXhTdHJpbmcucGFkU3RhcnQoMiwgXCIwXCIpfWA7XG4gIGlmIChjaGFyQ29kZSA8PSAweGZmZmYpIHJldHVybiBgXFxcXHUke2hleFN0cmluZy5wYWRTdGFydCg0LCBcIjBcIil9YDtcbiAgaWYgKGNoYXJDb2RlIDw9IDB4ZmZmZmZmZmYpIHJldHVybiBgXFxcXFUke2hleFN0cmluZy5wYWRTdGFydCg4LCBcIjBcIil9YDtcbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIFwiQ29kZSBwb2ludCB3aXRoaW4gYSBzdHJpbmcgbWF5IG5vdCBiZSBncmVhdGVyIHRoYW4gMHhGRkZGRkZGRlwiLFxuICApO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTdHlsZU1hcChcbiAgbWFwOiBSZWNvcmQ8c3RyaW5nLCBTdHlsZVZhcmlhbnQ+LFxuKTogTWFwPHN0cmluZywgU3R5bGVWYXJpYW50PiB7XG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXAoKTtcbiAgZm9yIChsZXQgdGFnIG9mIE9iamVjdC5rZXlzKG1hcCkpIHtcbiAgICBjb25zdCBzdHlsZSA9IFN0cmluZyhtYXBbdGFnXSkgYXMgU3R5bGVWYXJpYW50O1xuICAgIGlmICh0YWcuc2xpY2UoMCwgMikgPT09IFwiISFcIikge1xuICAgICAgdGFnID0gYHRhZzp5YW1sLm9yZywyMDAyOiR7dGFnLnNsaWNlKDIpfWA7XG4gICAgfVxuICAgIHJlc3VsdC5zZXQodGFnLCBzdHlsZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gSW5kZW50cyBldmVyeSBsaW5lIGluIGEgc3RyaW5nLiBFbXB0eSBsaW5lcyAoXFxuIG9ubHkpIGFyZSBub3QgaW5kZW50ZWQuXG5mdW5jdGlvbiBpbmRlbnRTdHJpbmcoc3RyaW5nOiBzdHJpbmcsIHNwYWNlczogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3QgaW5kZW50ID0gXCIgXCIucmVwZWF0KHNwYWNlcyk7XG4gIHJldHVybiBzdHJpbmdcbiAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAubWFwKChsaW5lKSA9PiBsaW5lLmxlbmd0aCA/IGluZGVudCArIGxpbmUgOiBsaW5lKVxuICAgIC5qb2luKFwiXFxuXCIpO1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZU5leHRMaW5lKGluZGVudDogbnVtYmVyLCBsZXZlbDogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBcXG4ke1wiIFwiLnJlcGVhdChpbmRlbnQgKiBsZXZlbCl9YDtcbn1cblxuLyoqXG4gKiBAbGluayBodHRwczovL3lhbWwub3JnL3NwZWMvMS4yLjIvIDUuMS4gQ2hhcmFjdGVyIFNldFxuICogQHJldHVybiBgdHJ1ZWAgaWYgdGhlIGNoYXJhY3RlciBpcyBwcmludGFibGUgd2l0aG91dCBlc2NhcGluZywgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmZ1bmN0aW9uIGlzUHJpbnRhYmxlKGM6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgICgweDAwMDIwIDw9IGMgJiYgYyA8PSAweDAwMDA3ZSkgfHxcbiAgICAoMHgwMDBhMSA8PSBjICYmIGMgPD0gMHgwMGQ3ZmYgJiYgYyAhPT0gMHgyMDI4ICYmIGMgIT09IDB4MjAyOSkgfHxcbiAgICAoMHgwZTAwMCA8PSBjICYmIGMgPD0gMHgwMGZmZmQgJiYgYyAhPT0gQk9NKSB8fFxuICAgICgweDEwMDAwIDw9IGMgJiYgYyA8PSAweDEwZmZmZilcbiAgKTtcbn1cblxuLyoqXG4gKiBAcmV0dXJuIGB0cnVlYCBpZiB2YWx1ZSBpcyBhbGxvd2VkIGFmdGVyIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gcGxhaW4gc3R5bGUsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBpc1BsYWluU2FmZShjOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBpc1ByaW50YWJsZShjKSAmJlxuICAgIGMgIT09IEJPTSAmJlxuICAgIGMgIT09IENPTU1BICYmXG4gICAgYyAhPT0gTEVGVF9TUVVBUkVfQlJBQ0tFVCAmJlxuICAgIGMgIT09IFJJR0hUX1NRVUFSRV9CUkFDS0VUICYmXG4gICAgYyAhPT0gTEVGVF9DVVJMWV9CUkFDS0VUICYmXG4gICAgYyAhPT0gUklHSFRfQ1VSTFlfQlJBQ0tFVCAmJlxuICAgIGMgIT09IENPTE9OICYmXG4gICAgYyAhPT0gU0hBUlBcbiAgKTtcbn1cblxuLyoqXG4gKiBAcmV0dXJuIGB0cnVlYCBpZiB2YWx1ZSBpcyBhbGxvd2VkIGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gcGxhaW4gc3R5bGUsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBpc1BsYWluU2FmZUZpcnN0KGM6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIGlzUGxhaW5TYWZlKGMpICYmXG4gICAgIWlzV2hpdGVTcGFjZShjKSAmJlxuICAgIGMgIT09IE1JTlVTICYmXG4gICAgYyAhPT0gUVVFU1RJT04gJiZcbiAgICBjICE9PSBBTVBFUlNBTkQgJiZcbiAgICBjICE9PSBBU1RFUklTSyAmJlxuICAgIGMgIT09IEVYQ0xBTUFUSU9OICYmXG4gICAgYyAhPT0gVkVSVElDQUxfTElORSAmJlxuICAgIGMgIT09IEdSRUFURVJfVEhBTiAmJlxuICAgIGMgIT09IFNJTkdMRV9RVU9URSAmJlxuICAgIGMgIT09IERPVUJMRV9RVU9URSAmJlxuICAgIGMgIT09IFBFUkNFTlQgJiZcbiAgICBjICE9PSBDT01NRVJDSUFMX0FUICYmXG4gICAgYyAhPT0gR1JBVkVfQUNDRU5UXG4gICk7XG59XG5cbi8vIERldGVybWluZXMgd2hldGhlciBibG9jayBpbmRlbnRhdGlvbiBpbmRpY2F0b3IgaXMgcmVxdWlyZWQuXG5mdW5jdGlvbiBuZWVkSW5kZW50SW5kaWNhdG9yKHN0cmluZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBMRUFESU5HX1NQQUNFX1JFR0VYUC50ZXN0KHN0cmluZyk7XG59XG5cbi8vIERldGVybWluZXMgd2hpY2ggc2NhbGFyIHN0eWxlcyBhcmUgcG9zc2libGUgYW5kIHJldHVybnMgdGhlIHByZWZlcnJlZCBzdHlsZS5cbi8vIGxpbmVXaWR0aCA9IC0xID0+IG5vIGxpbWl0LlxuLy8gUHJlLWNvbmRpdGlvbnM6IHN0ci5sZW5ndGggPiAwLlxuLy8gUG9zdC1jb25kaXRpb25zOlxuLy8gIFNUWUxFX1BMQUlOIG9yIFNUWUxFX1NJTkdMRSA9PiBubyBcXG4gYXJlIGluIHRoZSBzdHJpbmcuXG4vLyAgU1RZTEVfTElURVJBTCA9PiBubyBsaW5lcyBhcmUgc3VpdGFibGUgZm9yIGZvbGRpbmcgKG9yIGxpbmVXaWR0aCBpcyAtMSkuXG4vLyAgU1RZTEVfRk9MREVEID0+IGEgbGluZSA+IGxpbmVXaWR0aCBhbmQgY2FuIGJlIGZvbGRlZCAoYW5kIGxpbmVXaWR0aCAhPT0gLTEpLlxuZnVuY3Rpb24gY2hvb3NlU2NhbGFyU3R5bGUoXG4gIHN0cmluZzogc3RyaW5nLFxuICBzaW5nbGVMaW5lT25seTogYm9vbGVhbixcbiAgaW5kZW50UGVyTGV2ZWw6IG51bWJlcixcbiAgbGluZVdpZHRoOiBudW1iZXIsXG4gIGltcGxpY2l0VHlwZXM6IFR5cGU8XCJzY2FsYXJcIiwgdW5rbm93bj5bXSxcbik6IG51bWJlciB7XG4gIGNvbnN0IHNob3VsZFRyYWNrV2lkdGggPSBsaW5lV2lkdGggIT09IC0xO1xuICBsZXQgaGFzTGluZUJyZWFrID0gZmFsc2U7XG4gIGxldCBoYXNGb2xkYWJsZUxpbmUgPSBmYWxzZTsgLy8gb25seSBjaGVja2VkIGlmIHNob3VsZFRyYWNrV2lkdGhcbiAgbGV0IHByZXZpb3VzTGluZUJyZWFrID0gLTE7IC8vIGNvdW50IHRoZSBmaXJzdCBsaW5lIGNvcnJlY3RseVxuICBsZXQgcGxhaW4gPSBpc1BsYWluU2FmZUZpcnN0KHN0cmluZy5jaGFyQ29kZUF0KDApKSAmJlxuICAgICFpc1doaXRlU3BhY2Uoc3RyaW5nLmNoYXJDb2RlQXQoc3RyaW5nLmxlbmd0aCAtIDEpKTtcblxuICBsZXQgY2hhcjogbnVtYmVyO1xuICBsZXQgaTogbnVtYmVyO1xuICBpZiAoc2luZ2xlTGluZU9ubHkpIHtcbiAgICAvLyBDYXNlOiBubyBibG9jayBzdHlsZXMuXG4gICAgLy8gQ2hlY2sgZm9yIGRpc2FsbG93ZWQgY2hhcmFjdGVycyB0byBydWxlIG91dCBwbGFpbiBhbmQgc2luZ2xlLlxuICAgIGZvciAoaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoYXIgPSBzdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgICAgIGlmICghaXNQcmludGFibGUoY2hhcikpIHtcbiAgICAgICAgcmV0dXJuIFNUWUxFX0RPVUJMRTtcbiAgICAgIH1cbiAgICAgIHBsYWluID0gcGxhaW4gJiYgaXNQbGFpblNhZmUoY2hhcik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIENhc2U6IGJsb2NrIHN0eWxlcyBwZXJtaXR0ZWQuXG4gICAgZm9yIChpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgICAgY2hhciA9IHN0cmluZy5jaGFyQ29kZUF0KGkpO1xuICAgICAgaWYgKGNoYXIgPT09IExJTkVfRkVFRCkge1xuICAgICAgICBoYXNMaW5lQnJlYWsgPSB0cnVlO1xuICAgICAgICAvLyBDaGVjayBpZiBhbnkgbGluZSBjYW4gYmUgZm9sZGVkLlxuICAgICAgICBpZiAoc2hvdWxkVHJhY2tXaWR0aCkge1xuICAgICAgICAgIGhhc0ZvbGRhYmxlTGluZSA9IGhhc0ZvbGRhYmxlTGluZSB8fFxuICAgICAgICAgICAgLy8gRm9sZGFibGUgbGluZSA9IHRvbyBsb25nLCBhbmQgbm90IG1vcmUtaW5kZW50ZWQuXG4gICAgICAgICAgICAoaSAtIHByZXZpb3VzTGluZUJyZWFrIC0gMSA+IGxpbmVXaWR0aCAmJlxuICAgICAgICAgICAgICBzdHJpbmdbcHJldmlvdXNMaW5lQnJlYWsgKyAxXSAhPT0gXCIgXCIpO1xuICAgICAgICAgIHByZXZpb3VzTGluZUJyZWFrID0gaTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghaXNQcmludGFibGUoY2hhcikpIHtcbiAgICAgICAgcmV0dXJuIFNUWUxFX0RPVUJMRTtcbiAgICAgIH1cbiAgICAgIHBsYWluID0gcGxhaW4gJiYgaXNQbGFpblNhZmUoY2hhcik7XG4gICAgfVxuICAgIC8vIGluIGNhc2UgdGhlIGVuZCBpcyBtaXNzaW5nIGEgXFxuXG4gICAgaGFzRm9sZGFibGVMaW5lID0gaGFzRm9sZGFibGVMaW5lIHx8XG4gICAgICAoc2hvdWxkVHJhY2tXaWR0aCAmJlxuICAgICAgICBpIC0gcHJldmlvdXNMaW5lQnJlYWsgLSAxID4gbGluZVdpZHRoICYmXG4gICAgICAgIHN0cmluZ1twcmV2aW91c0xpbmVCcmVhayArIDFdICE9PSBcIiBcIik7XG4gIH1cbiAgLy8gQWx0aG91Z2ggZXZlcnkgc3R5bGUgY2FuIHJlcHJlc2VudCBcXG4gd2l0aG91dCBlc2NhcGluZywgcHJlZmVyIGJsb2NrIHN0eWxlc1xuICAvLyBmb3IgbXVsdGlsaW5lLCBzaW5jZSB0aGV5J3JlIG1vcmUgcmVhZGFibGUgYW5kIHRoZXkgZG9uJ3QgYWRkIGVtcHR5IGxpbmVzLlxuICAvLyBBbHNvIHByZWZlciBmb2xkaW5nIGEgc3VwZXItbG9uZyBsaW5lLlxuICBpZiAoIWhhc0xpbmVCcmVhayAmJiAhaGFzRm9sZGFibGVMaW5lKSB7XG4gICAgLy8gU3RyaW5ncyBpbnRlcnByZXRhYmxlIGFzIGFub3RoZXIgdHlwZSBoYXZlIHRvIGJlIHF1b3RlZDtcbiAgICAvLyBlLmcuIHRoZSBzdHJpbmcgJ3RydWUnIHZzLiB0aGUgYm9vbGVhbiB0cnVlLlxuICAgIHJldHVybiBwbGFpbiAmJiAhaW1wbGljaXRUeXBlcy5zb21lKCh0eXBlKSA9PiB0eXBlLnJlc29sdmUoc3RyaW5nKSlcbiAgICAgID8gU1RZTEVfUExBSU5cbiAgICAgIDogU1RZTEVfU0lOR0xFO1xuICB9XG4gIC8vIEVkZ2UgY2FzZTogYmxvY2sgaW5kZW50YXRpb24gaW5kaWNhdG9yIGNhbiBvbmx5IGhhdmUgb25lIGRpZ2l0LlxuICBpZiAoaW5kZW50UGVyTGV2ZWwgPiA5ICYmIG5lZWRJbmRlbnRJbmRpY2F0b3Ioc3RyaW5nKSkge1xuICAgIHJldHVybiBTVFlMRV9ET1VCTEU7XG4gIH1cbiAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IGJsb2NrIHN0eWxlcyBhcmUgdmFsaWQuXG4gIC8vIFByZWZlciBsaXRlcmFsIHN0eWxlIHVubGVzcyB3ZSB3YW50IHRvIGZvbGQuXG4gIHJldHVybiBoYXNGb2xkYWJsZUxpbmUgPyBTVFlMRV9GT0xERUQgOiBTVFlMRV9MSVRFUkFMO1xufVxuXG4vLyBHcmVlZHkgbGluZSBicmVha2luZy5cbi8vIFBpY2tzIHRoZSBsb25nZXN0IGxpbmUgdW5kZXIgdGhlIGxpbWl0IGVhY2ggdGltZSxcbi8vIG90aGVyd2lzZSBzZXR0bGVzIGZvciB0aGUgc2hvcnRlc3QgbGluZSBvdmVyIHRoZSBsaW1pdC5cbi8vIE5CLiBNb3JlLWluZGVudGVkIGxpbmVzICpjYW5ub3QqIGJlIGZvbGRlZCwgYXMgdGhhdCB3b3VsZCBhZGQgYW4gZXh0cmEgXFxuLlxuZnVuY3Rpb24gZm9sZExpbmUobGluZTogc3RyaW5nLCB3aWR0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgaWYgKGxpbmUgPT09IFwiXCIgfHwgbGluZVswXSA9PT0gXCIgXCIpIHJldHVybiBsaW5lO1xuXG4gIC8vIFNpbmNlIGEgbW9yZS1pbmRlbnRlZCBsaW5lIGFkZHMgYSBcXG4sIGJyZWFrcyBjYW4ndCBiZSBmb2xsb3dlZCBieSBhIHNwYWNlLlxuICBjb25zdCBicmVha1JlZ0V4cCA9IC8gW14gXS9nOyAvLyBub3RlOiB0aGUgbWF0Y2ggaW5kZXggd2lsbCBhbHdheXMgYmUgPD0gbGVuZ3RoLTIuXG4gIC8vIHN0YXJ0IGlzIGFuIGluY2x1c2l2ZSBpbmRleC4gZW5kLCBjdXJyLCBhbmQgbmV4dCBhcmUgZXhjbHVzaXZlLlxuICBsZXQgc3RhcnQgPSAwO1xuICBsZXQgZW5kO1xuICBsZXQgY3VyciA9IDA7XG4gIGxldCBuZXh0ID0gMDtcbiAgY29uc3QgbGluZXMgPSBbXTtcblxuICAvLyBJbnZhcmlhbnRzOiAwIDw9IHN0YXJ0IDw9IGxlbmd0aC0xLlxuICAvLyAgIDAgPD0gY3VyciA8PSBuZXh0IDw9IG1heCgwLCBsZW5ndGgtMikuIGN1cnIgLSBzdGFydCA8PSB3aWR0aC5cbiAgLy8gSW5zaWRlIHRoZSBsb29wOlxuICAvLyAgIEEgbWF0Y2ggaW1wbGllcyBsZW5ndGggPj0gMiwgc28gY3VyciBhbmQgbmV4dCBhcmUgPD0gbGVuZ3RoLTIuXG4gIGZvciAoY29uc3QgbWF0Y2ggb2YgbGluZS5tYXRjaEFsbChicmVha1JlZ0V4cCkpIHtcbiAgICBuZXh0ID0gbWF0Y2guaW5kZXg7XG4gICAgLy8gbWFpbnRhaW4gaW52YXJpYW50OiBjdXJyIC0gc3RhcnQgPD0gd2lkdGhcbiAgICBpZiAobmV4dCAtIHN0YXJ0ID4gd2lkdGgpIHtcbiAgICAgIGVuZCA9IGN1cnIgPiBzdGFydCA/IGN1cnIgOiBuZXh0OyAvLyBkZXJpdmUgZW5kIDw9IGxlbmd0aC0yXG4gICAgICBsaW5lcy5wdXNoKGxpbmUuc2xpY2Uoc3RhcnQsIGVuZCkpO1xuICAgICAgLy8gc2tpcCB0aGUgc3BhY2UgdGhhdCB3YXMgb3V0cHV0IGFzIFxcblxuICAgICAgc3RhcnQgPSBlbmQgKyAxOyAvLyBkZXJpdmUgc3RhcnQgPD0gbGVuZ3RoLTFcbiAgICB9XG4gICAgY3VyciA9IG5leHQ7XG4gIH1cblxuICAvLyBCeSB0aGUgaW52YXJpYW50cywgc3RhcnQgPD0gbGVuZ3RoLTEsIHNvIHRoZXJlIGlzIHNvbWV0aGluZyBsZWZ0IG92ZXIuXG4gIC8vIEl0IGlzIGVpdGhlciB0aGUgd2hvbGUgc3RyaW5nIG9yIGEgcGFydCBzdGFydGluZyBmcm9tIG5vbi13aGl0ZXNwYWNlLlxuICAvLyBJbnNlcnQgYSBicmVhayBpZiB0aGUgcmVtYWluZGVyIGlzIHRvbyBsb25nIGFuZCB0aGVyZSBpcyBhIGJyZWFrIGF2YWlsYWJsZS5cbiAgaWYgKGxpbmUubGVuZ3RoIC0gc3RhcnQgPiB3aWR0aCAmJiBjdXJyID4gc3RhcnQpIHtcbiAgICBsaW5lcy5wdXNoKGxpbmUuc2xpY2Uoc3RhcnQsIGN1cnIpKTtcbiAgICBsaW5lcy5wdXNoKGxpbmUuc2xpY2UoY3VyciArIDEpKTtcbiAgfSBlbHNlIHtcbiAgICBsaW5lcy5wdXNoKGxpbmUuc2xpY2Uoc3RhcnQpKTtcbiAgfVxuXG4gIHJldHVybiBsaW5lcy5qb2luKFwiXFxuXCIpO1xufVxuXG5mdW5jdGlvbiB0cmltVHJhaWxpbmdOZXdsaW5lKHN0cmluZzogc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcuYXQoLTEpID09PSBcIlxcblwiID8gc3RyaW5nLnNsaWNlKDAsIC0xKSA6IHN0cmluZztcbn1cblxuLy8gTm90ZTogYSBsb25nIGxpbmUgd2l0aG91dCBhIHN1aXRhYmxlIGJyZWFrIHBvaW50IHdpbGwgZXhjZWVkIHRoZSB3aWR0aCBsaW1pdC5cbi8vIFByZS1jb25kaXRpb25zOiBldmVyeSBjaGFyIGluIHN0ciBpc1ByaW50YWJsZSwgc3RyLmxlbmd0aCA+IDAsIHdpZHRoID4gMC5cbmZ1bmN0aW9uIGZvbGRTdHJpbmcoc3RyaW5nOiBzdHJpbmcsIHdpZHRoOiBudW1iZXIpOiBzdHJpbmcge1xuICAvLyBJbiBmb2xkZWQgc3R5bGUsICRrJCBjb25zZWN1dGl2ZSBuZXdsaW5lcyBvdXRwdXQgYXMgJGsrMSQgbmV3bGluZXPigJRcbiAgLy8gdW5sZXNzIHRoZXkncmUgYmVmb3JlIG9yIGFmdGVyIGEgbW9yZS1pbmRlbnRlZCBsaW5lLCBvciBhdCB0aGUgdmVyeVxuICAvLyBiZWdpbm5pbmcgb3IgZW5kLCBpbiB3aGljaCBjYXNlICRrJCBtYXBzIHRvICRrJC5cbiAgLy8gVGhlcmVmb3JlLCBwYXJzZSBlYWNoIGNodW5rIGFzIG5ld2xpbmUocykgZm9sbG93ZWQgYnkgYSBjb250ZW50IGxpbmUuXG4gIGNvbnN0IGxpbmVSZSA9IC8oXFxuKykoW15cXG5dKikvZztcblxuICAvLyBmaXJzdCBsaW5lIChwb3NzaWJseSBhbiBlbXB0eSBsaW5lKVxuICBsZXQgcmVzdWx0ID0gKCgpOiBzdHJpbmcgPT4ge1xuICAgIGxldCBuZXh0TEYgPSBzdHJpbmcuaW5kZXhPZihcIlxcblwiKTtcbiAgICBuZXh0TEYgPSBuZXh0TEYgIT09IC0xID8gbmV4dExGIDogc3RyaW5nLmxlbmd0aDtcbiAgICBsaW5lUmUubGFzdEluZGV4ID0gbmV4dExGO1xuICAgIHJldHVybiBmb2xkTGluZShzdHJpbmcuc2xpY2UoMCwgbmV4dExGKSwgd2lkdGgpO1xuICB9KSgpO1xuICAvLyBJZiB3ZSBoYXZlbid0IHJlYWNoZWQgdGhlIGZpcnN0IGNvbnRlbnQgbGluZSB5ZXQsIGRvbid0IGFkZCBhbiBleHRyYSBcXG4uXG4gIGxldCBwcmV2TW9yZUluZGVudGVkID0gc3RyaW5nWzBdID09PSBcIlxcblwiIHx8IHN0cmluZ1swXSA9PT0gXCIgXCI7XG4gIGxldCBtb3JlSW5kZW50ZWQ7XG5cbiAgLy8gcmVzdCBvZiB0aGUgbGluZXNcbiAgbGV0IG1hdGNoO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tY29uZGl0aW9uYWwtYXNzaWdubWVudFxuICB3aGlsZSAoKG1hdGNoID0gbGluZVJlLmV4ZWMoc3RyaW5nKSkpIHtcbiAgICBjb25zdCBwcmVmaXggPSBtYXRjaFsxXTtcbiAgICBjb25zdCBsaW5lID0gbWF0Y2hbMl0gfHwgXCJcIjtcbiAgICBtb3JlSW5kZW50ZWQgPSBsaW5lWzBdID09PSBcIiBcIjtcbiAgICByZXN1bHQgKz0gcHJlZml4ICtcbiAgICAgICghcHJldk1vcmVJbmRlbnRlZCAmJiAhbW9yZUluZGVudGVkICYmIGxpbmUgIT09IFwiXCIgPyBcIlxcblwiIDogXCJcIikgK1xuICAgICAgZm9sZExpbmUobGluZSwgd2lkdGgpO1xuICAgIHByZXZNb3JlSW5kZW50ZWQgPSBtb3JlSW5kZW50ZWQ7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBFc2NhcGVzIGEgZG91YmxlLXF1b3RlZCBzdHJpbmcuXG5mdW5jdGlvbiBlc2NhcGVTdHJpbmcoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgbGV0IGNoYXI7XG4gIGxldCBuZXh0Q2hhcjtcbiAgbGV0IGVzY2FwZVNlcTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgIGNoYXIgPSBzdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgICAvLyBDaGVjayBmb3Igc3Vycm9nYXRlIHBhaXJzIChyZWZlcmVuY2UgVW5pY29kZSAzLjAgc2VjdGlvbiBcIjMuNyBTdXJyb2dhdGVzXCIpLlxuICAgIGlmIChjaGFyID49IDB4ZDgwMCAmJiBjaGFyIDw9IDB4ZGJmZiAvKiBoaWdoIHN1cnJvZ2F0ZSAqLykge1xuICAgICAgbmV4dENoYXIgPSBzdHJpbmcuY2hhckNvZGVBdChpICsgMSk7XG4gICAgICBpZiAobmV4dENoYXIgPj0gMHhkYzAwICYmIG5leHRDaGFyIDw9IDB4ZGZmZiAvKiBsb3cgc3Vycm9nYXRlICovKSB7XG4gICAgICAgIC8vIENvbWJpbmUgdGhlIHN1cnJvZ2F0ZSBwYWlyIGFuZCBzdG9yZSBpdCBlc2NhcGVkLlxuICAgICAgICByZXN1bHQgKz0gY2hhckNvZGVUb0hleFN0cmluZyhcbiAgICAgICAgICAoY2hhciAtIDB4ZDgwMCkgKiAweDQwMCArIG5leHRDaGFyIC0gMHhkYzAwICsgMHgxMDAwMCxcbiAgICAgICAgKTtcbiAgICAgICAgLy8gQWR2YW5jZSBpbmRleCBvbmUgZXh0cmEgc2luY2Ugd2UgYWxyZWFkeSB1c2VkIHRoYXQgY2hhciBoZXJlLlxuICAgICAgICBpKys7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBlc2NhcGVTZXEgPSBFU0NBUEVfU0VRVUVOQ0VTLmdldChjaGFyKTtcbiAgICByZXN1bHQgKz0gIWVzY2FwZVNlcSAmJiBpc1ByaW50YWJsZShjaGFyKVxuICAgICAgPyBzdHJpbmdbaV1cbiAgICAgIDogZXNjYXBlU2VxIHx8IGNoYXJDb2RlVG9IZXhTdHJpbmcoY2hhcik7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBQcmUtY29uZGl0aW9uczogc3RyaW5nIGlzIHZhbGlkIGZvciBhIGJsb2NrIHNjYWxhciwgMSA8PSBpbmRlbnRQZXJMZXZlbCA8PSA5LlxuZnVuY3Rpb24gYmxvY2tIZWFkZXIoc3RyaW5nOiBzdHJpbmcsIGluZGVudFBlckxldmVsOiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCBpbmRlbnRJbmRpY2F0b3IgPSBuZWVkSW5kZW50SW5kaWNhdG9yKHN0cmluZylcbiAgICA/IFN0cmluZyhpbmRlbnRQZXJMZXZlbClcbiAgICA6IFwiXCI7XG5cbiAgLy8gbm90ZSB0aGUgc3BlY2lhbCBjYXNlOiB0aGUgc3RyaW5nICdcXG4nIGNvdW50cyBhcyBhIFwidHJhaWxpbmdcIiBlbXB0eSBsaW5lLlxuICBjb25zdCBjbGlwID0gc3RyaW5nW3N0cmluZy5sZW5ndGggLSAxXSA9PT0gXCJcXG5cIjtcbiAgY29uc3Qga2VlcCA9IGNsaXAgJiYgKHN0cmluZ1tzdHJpbmcubGVuZ3RoIC0gMl0gPT09IFwiXFxuXCIgfHwgc3RyaW5nID09PSBcIlxcblwiKTtcbiAgY29uc3QgY2hvbXAgPSBrZWVwID8gXCIrXCIgOiBjbGlwID8gXCJcIiA6IFwiLVwiO1xuXG4gIHJldHVybiBgJHtpbmRlbnRJbmRpY2F0b3J9JHtjaG9tcH1cXG5gO1xufVxuXG5mdW5jdGlvbiBpbnNwZWN0Tm9kZShcbiAgb2JqZWN0OiB1bmtub3duLFxuICBvYmplY3RzOiBTZXQ8dW5rbm93bj4sXG4gIGR1cGxpY2F0ZU9iamVjdHM6IFNldDx1bmtub3duPixcbikge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHJldHVybjtcbiAgaWYgKG9iamVjdHMuaGFzKG9iamVjdCkpIHtcbiAgICBkdXBsaWNhdGVPYmplY3RzLmFkZChvYmplY3QpO1xuICAgIHJldHVybjtcbiAgfVxuICBvYmplY3RzLmFkZChvYmplY3QpO1xuICBjb25zdCBlbnRyaWVzID0gQXJyYXkuaXNBcnJheShvYmplY3QpID8gb2JqZWN0IDogT2JqZWN0LnZhbHVlcyhvYmplY3QpO1xuICBmb3IgKGNvbnN0IHZhbHVlIG9mIGVudHJpZXMpIHtcbiAgICBpbnNwZWN0Tm9kZSh2YWx1ZSwgb2JqZWN0cywgZHVwbGljYXRlT2JqZWN0cyk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEdW1wZXJTdGF0ZU9wdGlvbnMge1xuICAvKiogaW5kZW50YXRpb24gd2lkdGggdG8gdXNlIChpbiBzcGFjZXMpLiAqL1xuICBpbmRlbnQ/OiBudW1iZXI7XG4gIC8qKiB3aGVuIHRydWUsIGFkZHMgYW4gaW5kZW50YXRpb24gbGV2ZWwgdG8gYXJyYXkgZWxlbWVudHMgKi9cbiAgYXJyYXlJbmRlbnQ/OiBib29sZWFuO1xuICAvKipcbiAgICogZG8gbm90IHRocm93IG9uIGludmFsaWQgdHlwZXMgKGxpa2UgZnVuY3Rpb24gaW4gdGhlIHNhZmUgc2NoZW1hKVxuICAgKiBhbmQgc2tpcCBwYWlycyBhbmQgc2luZ2xlIHZhbHVlcyB3aXRoIHN1Y2ggdHlwZXMuXG4gICAqL1xuICBza2lwSW52YWxpZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBzcGVjaWZpZXMgbGV2ZWwgb2YgbmVzdGluZywgd2hlbiB0byBzd2l0Y2ggZnJvbVxuICAgKiBibG9jayB0byBmbG93IHN0eWxlIGZvciBjb2xsZWN0aW9ucy4gLTEgbWVhbnMgYmxvY2sgc3R5bGUgZXZlcnl3aGVyZVxuICAgKi9cbiAgZmxvd0xldmVsPzogbnVtYmVyO1xuICAvKiogRWFjaCB0YWcgbWF5IGhhdmUgb3duIHNldCBvZiBzdHlsZXMuXHQtIFwidGFnXCIgPT4gXCJzdHlsZVwiIG1hcC4gKi9cbiAgc3R5bGVzPzogUmVjb3JkPHN0cmluZywgU3R5bGVWYXJpYW50PjtcbiAgLyoqIHNwZWNpZmllcyBhIHNjaGVtYSB0byB1c2UuICovXG4gIHNjaGVtYT86IFNjaGVtYTtcbiAgLyoqXG4gICAqIElmIHRydWUsIHNvcnQga2V5cyB3aGVuIGR1bXBpbmcgWUFNTCBpbiBhc2NlbmRpbmcsIEFTQ0lJIGNoYXJhY3RlciBvcmRlci5cbiAgICogSWYgYSBmdW5jdGlvbiwgdXNlIHRoZSBmdW5jdGlvbiB0byBzb3J0IHRoZSBrZXlzLiAoZGVmYXVsdDogZmFsc2UpXG4gICAqIElmIGEgZnVuY3Rpb24gaXMgc3BlY2lmaWVkLCB0aGUgZnVuY3Rpb24gbXVzdCByZXR1cm4gYSBuZWdhdGl2ZSB2YWx1ZVxuICAgKiBpZiBmaXJzdCBhcmd1bWVudCBpcyBsZXNzIHRoYW4gc2Vjb25kIGFyZ3VtZW50LCB6ZXJvIGlmIHRoZXkncmUgZXF1YWxcbiAgICogYW5kIGEgcG9zaXRpdmUgdmFsdWUgb3RoZXJ3aXNlLlxuICAgKi9cbiAgc29ydEtleXM/OiBib29sZWFuIHwgKChhOiBzdHJpbmcsIGI6IHN0cmluZykgPT4gbnVtYmVyKTtcbiAgLyoqIHNldCBtYXggbGluZSB3aWR0aC4gKGRlZmF1bHQ6IDgwKSAqL1xuICBsaW5lV2lkdGg/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBpZiBmYWxzZSwgZG9uJ3QgY29udmVydCBkdXBsaWNhdGUgb2JqZWN0c1xuICAgKiBpbnRvIHJlZmVyZW5jZXMgKGRlZmF1bHQ6IHRydWUpXG4gICAqL1xuICB1c2VBbmNob3JzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIGlmIGZhbHNlIGRvbid0IHRyeSB0byBiZSBjb21wYXRpYmxlIHdpdGggb2xkZXIgeWFtbCB2ZXJzaW9ucy5cbiAgICogQ3VycmVudGx5OiBkb24ndCBxdW90ZSBcInllc1wiLCBcIm5vXCIgYW5kIHNvIG9uLFxuICAgKiBhcyByZXF1aXJlZCBmb3IgWUFNTCAxLjEgKGRlZmF1bHQ6IHRydWUpXG4gICAqL1xuICBjb21wYXRNb2RlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIGlmIHRydWUgZmxvdyBzZXF1ZW5jZXMgd2lsbCBiZSBjb25kZW5zZWQsIG9taXR0aW5nIHRoZVxuICAgKiBzcGFjZSBiZXR3ZWVuIGBrZXk6IHZhbHVlYCBvciBgYSwgYmAuIEVnLiBgJ1thLGJdJ2Agb3IgYHthOntiOmN9fWAuXG4gICAqIENhbiBiZSB1c2VmdWwgd2hlbiB1c2luZyB5YW1sIGZvciBwcmV0dHkgVVJMIHF1ZXJ5IHBhcmFtc1xuICAgKiBhcyBzcGFjZXMgYXJlICUtZW5jb2RlZC4gKGRlZmF1bHQ6IGZhbHNlKS5cbiAgICovXG4gIGNvbmRlbnNlRmxvdz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBEdW1wZXJTdGF0ZSB7XG4gIGluZGVudDogbnVtYmVyO1xuICBhcnJheUluZGVudDogYm9vbGVhbjtcbiAgc2tpcEludmFsaWQ6IGJvb2xlYW47XG4gIGZsb3dMZXZlbDogbnVtYmVyO1xuICBzb3J0S2V5czogYm9vbGVhbiB8ICgoYTogc3RyaW5nLCBiOiBzdHJpbmcpID0+IG51bWJlcik7XG4gIGxpbmVXaWR0aDogbnVtYmVyO1xuICB1c2VBbmNob3JzOiBib29sZWFuO1xuICBjb21wYXRNb2RlOiBib29sZWFuO1xuICBjb25kZW5zZUZsb3c6IGJvb2xlYW47XG4gIGltcGxpY2l0VHlwZXM6IFR5cGU8XCJzY2FsYXJcIj5bXTtcbiAgZXhwbGljaXRUeXBlczogVHlwZTxLaW5kVHlwZT5bXTtcbiAgZHVwbGljYXRlczogdW5rbm93bltdID0gW107XG4gIHVzZWREdXBsaWNhdGVzOiBTZXQ8dW5rbm93bj4gPSBuZXcgU2V0KCk7XG4gIHN0eWxlTWFwOiBNYXA8c3RyaW5nLCBTdHlsZVZhcmlhbnQ+ID0gbmV3IE1hcCgpO1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBzY2hlbWEgPSBERUZBVUxUX1NDSEVNQSxcbiAgICBpbmRlbnQgPSAyLFxuICAgIGFycmF5SW5kZW50ID0gdHJ1ZSxcbiAgICBza2lwSW52YWxpZCA9IGZhbHNlLFxuICAgIGZsb3dMZXZlbCA9IC0xLFxuICAgIHN0eWxlcyA9IHVuZGVmaW5lZCxcbiAgICBzb3J0S2V5cyA9IGZhbHNlLFxuICAgIGxpbmVXaWR0aCA9IDgwLFxuICAgIHVzZUFuY2hvcnMgPSB0cnVlLFxuICAgIGNvbXBhdE1vZGUgPSB0cnVlLFxuICAgIGNvbmRlbnNlRmxvdyA9IGZhbHNlLFxuICB9OiBEdW1wZXJTdGF0ZU9wdGlvbnMpIHtcbiAgICB0aGlzLmluZGVudCA9IE1hdGgubWF4KDEsIGluZGVudCk7XG4gICAgdGhpcy5hcnJheUluZGVudCA9IGFycmF5SW5kZW50O1xuICAgIHRoaXMuc2tpcEludmFsaWQgPSBza2lwSW52YWxpZDtcbiAgICB0aGlzLmZsb3dMZXZlbCA9IGZsb3dMZXZlbDtcbiAgICBpZiAoc3R5bGVzKSB0aGlzLnN0eWxlTWFwID0gY3JlYXRlU3R5bGVNYXAoc3R5bGVzKTtcbiAgICB0aGlzLnNvcnRLZXlzID0gc29ydEtleXM7XG4gICAgdGhpcy5saW5lV2lkdGggPSBsaW5lV2lkdGg7XG4gICAgdGhpcy51c2VBbmNob3JzID0gdXNlQW5jaG9ycztcbiAgICB0aGlzLmNvbXBhdE1vZGUgPSBjb21wYXRNb2RlO1xuICAgIHRoaXMuY29uZGVuc2VGbG93ID0gY29uZGVuc2VGbG93O1xuICAgIHRoaXMuaW1wbGljaXRUeXBlcyA9IHNjaGVtYS5pbXBsaWNpdFR5cGVzO1xuICAgIHRoaXMuZXhwbGljaXRUeXBlcyA9IHNjaGVtYS5leHBsaWNpdFR5cGVzO1xuICB9XG5cbiAgLy8gTm90ZTogbGluZSBicmVha2luZy9mb2xkaW5nIGlzIGltcGxlbWVudGVkIGZvciBvbmx5IHRoZSBmb2xkZWQgc3R5bGUuXG4gIC8vIE5CLiBXZSBkcm9wIHRoZSBsYXN0IHRyYWlsaW5nIG5ld2xpbmUgKGlmIGFueSkgb2YgYSByZXR1cm5lZCBibG9jayBzY2FsYXJcbiAgLy8gIHNpbmNlIHRoZSBkdW1wZXIgYWRkcyBpdHMgb3duIG5ld2xpbmUuIFRoaXMgYWx3YXlzIHdvcmtzOlxuICAvLyAgICDigKIgTm8gZW5kaW5nIG5ld2xpbmUgPT4gdW5hZmZlY3RlZDsgYWxyZWFkeSB1c2luZyBzdHJpcCBcIi1cIiBjaG9tcGluZy5cbiAgLy8gICAg4oCiIEVuZGluZyBuZXdsaW5lICAgID0+IHJlbW92ZWQgdGhlbiByZXN0b3JlZC5cbiAgLy8gIEltcG9ydGFudGx5LCB0aGlzIGtlZXBzIHRoZSBcIitcIiBjaG9tcCBpbmRpY2F0b3IgZnJvbSBnYWluaW5nIGFuIGV4dHJhIGxpbmUuXG4gIHN0cmluZ2lmeVNjYWxhcihcbiAgICBzdHJpbmc6IHN0cmluZyxcbiAgICB7IGxldmVsLCBpc0tleSB9OiB7IGxldmVsOiBudW1iZXI7IGlzS2V5OiBib29sZWFuIH0sXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKHN0cmluZy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBcIicnXCI7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbXBhdE1vZGUgJiYgREVQUkVDQVRFRF9CT09MRUFOU19TWU5UQVguaW5jbHVkZXMoc3RyaW5nKSkge1xuICAgICAgcmV0dXJuIGAnJHtzdHJpbmd9J2A7XG4gICAgfVxuXG4gICAgY29uc3QgaW5kZW50ID0gdGhpcy5pbmRlbnQgKiBNYXRoLm1heCgxLCBsZXZlbCk7IC8vIG5vIDAtaW5kZW50IHNjYWxhcnNcbiAgICAvLyBBcyBpbmRlbnRhdGlvbiBnZXRzIGRlZXBlciwgbGV0IHRoZSB3aWR0aCBkZWNyZWFzZSBtb25vdG9uaWNhbGx5XG4gICAgLy8gdG8gdGhlIGxvd2VyIGJvdW5kIG1pbih0aGlzLmxpbmVXaWR0aCwgNDApLlxuICAgIC8vIE5vdGUgdGhhdCB0aGlzIGltcGxpZXNcbiAgICAvLyAgdGhpcy5saW5lV2lkdGgg4omkIDQwICsgdGhpcy5pbmRlbnQ6IHdpZHRoIGlzIGZpeGVkIGF0IHRoZSBsb3dlciBib3VuZC5cbiAgICAvLyAgdGhpcy5saW5lV2lkdGggPiA0MCArIHRoaXMuaW5kZW50OiB3aWR0aCBkZWNyZWFzZXMgdW50aWwgdGhlIGxvd2VyXG4gICAgLy8gIGJvdW5kLlxuICAgIC8vIFRoaXMgYmVoYXZlcyBiZXR0ZXIgdGhhbiBhIGNvbnN0YW50IG1pbmltdW0gd2lkdGggd2hpY2ggZGlzYWxsb3dzXG4gICAgLy8gbmFycm93ZXIgb3B0aW9ucywgb3IgYW4gaW5kZW50IHRocmVzaG9sZCB3aGljaCBjYXVzZXMgdGhlIHdpZHRoXG4gICAgLy8gdG8gc3VkZGVubHkgaW5jcmVhc2UuXG4gICAgY29uc3QgbGluZVdpZHRoID0gdGhpcy5saW5lV2lkdGggPT09IC0xXG4gICAgICA/IC0xXG4gICAgICA6IE1hdGgubWF4KE1hdGgubWluKHRoaXMubGluZVdpZHRoLCA0MCksIHRoaXMubGluZVdpZHRoIC0gaW5kZW50KTtcblxuICAgIC8vIFdpdGhvdXQga25vd2luZyBpZiBrZXlzIGFyZSBpbXBsaWNpdC9leHBsaWNpdCxcbiAgICAvLyBhc3N1bWUgaW1wbGljaXQgZm9yIHNhZmV0eS5cbiAgICBjb25zdCBzaW5nbGVMaW5lT25seSA9IGlzS2V5IHx8XG4gICAgICAvLyBObyBibG9jayBzdHlsZXMgaW4gZmxvdyBtb2RlLlxuICAgICAgKHRoaXMuZmxvd0xldmVsID4gLTEgJiYgbGV2ZWwgPj0gdGhpcy5mbG93TGV2ZWwpO1xuXG4gICAgY29uc3Qgc2NhbGFyU3R5bGUgPSBjaG9vc2VTY2FsYXJTdHlsZShcbiAgICAgIHN0cmluZyxcbiAgICAgIHNpbmdsZUxpbmVPbmx5LFxuICAgICAgdGhpcy5pbmRlbnQsXG4gICAgICBsaW5lV2lkdGgsXG4gICAgICB0aGlzLmltcGxpY2l0VHlwZXMsXG4gICAgKTtcbiAgICBzd2l0Y2ggKHNjYWxhclN0eWxlKSB7XG4gICAgICBjYXNlIFNUWUxFX1BMQUlOOlxuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgY2FzZSBTVFlMRV9TSU5HTEU6XG4gICAgICAgIHJldHVybiBgJyR7c3RyaW5nLnJlcGxhY2UoLycvZywgXCInJ1wiKX0nYDtcbiAgICAgIGNhc2UgU1RZTEVfTElURVJBTDpcbiAgICAgICAgcmV0dXJuIGB8JHtibG9ja0hlYWRlcihzdHJpbmcsIHRoaXMuaW5kZW50KX0ke1xuICAgICAgICAgIHRyaW1UcmFpbGluZ05ld2xpbmUoaW5kZW50U3RyaW5nKHN0cmluZywgaW5kZW50KSlcbiAgICAgICAgfWA7XG4gICAgICBjYXNlIFNUWUxFX0ZPTERFRDpcbiAgICAgICAgcmV0dXJuIGA+JHtibG9ja0hlYWRlcihzdHJpbmcsIHRoaXMuaW5kZW50KX0ke1xuICAgICAgICAgIHRyaW1UcmFpbGluZ05ld2xpbmUoXG4gICAgICAgICAgICBpbmRlbnRTdHJpbmcoZm9sZFN0cmluZyhzdHJpbmcsIGxpbmVXaWR0aCksIGluZGVudCksXG4gICAgICAgICAgKVxuICAgICAgICB9YDtcbiAgICAgIGNhc2UgU1RZTEVfRE9VQkxFOlxuICAgICAgICByZXR1cm4gYFwiJHtlc2NhcGVTdHJpbmcoc3RyaW5nKX1cImA7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgIFwiSW52YWxpZCBzY2FsYXIgc3R5bGUgc2hvdWxkIGJlIHVucmVhY2hhYmxlOiBwbGVhc2UgZmlsZSBhIGJ1ZyByZXBvcnQgYWdhaW5zdCBEZW5vIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kZW5vbGFuZC9zdGQvaXNzdWVzXCIsXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgc3RyaW5naWZ5Rmxvd1NlcXVlbmNlKFxuICAgIGFycmF5OiB1bmtub3duW10sXG4gICAgeyBsZXZlbCB9OiB7IGxldmVsOiBudW1iZXIgfSxcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgZm9yIChjb25zdCB2YWx1ZSBvZiBhcnJheSkge1xuICAgICAgY29uc3Qgc3RyaW5nID0gdGhpcy5zdHJpbmdpZnlOb2RlKHZhbHVlLCB7XG4gICAgICAgIGxldmVsLFxuICAgICAgICBibG9jazogZmFsc2UsXG4gICAgICAgIGNvbXBhY3Q6IGZhbHNlLFxuICAgICAgICBpc0tleTogZmFsc2UsXG4gICAgICB9KTtcbiAgICAgIGlmIChzdHJpbmcgPT09IG51bGwpIGNvbnRpbnVlO1xuICAgICAgcmVzdWx0cy5wdXNoKHN0cmluZyk7XG4gICAgfVxuICAgIGNvbnN0IHNlcGFyYXRvciA9IHRoaXMuY29uZGVuc2VGbG93ID8gXCIsXCIgOiBcIiwgXCI7XG4gICAgcmV0dXJuIGBbJHtyZXN1bHRzLmpvaW4oc2VwYXJhdG9yKX1dYDtcbiAgfVxuXG4gIHN0cmluZ2lmeUJsb2NrU2VxdWVuY2UoXG4gICAgYXJyYXk6IHVua25vd25bXSxcbiAgICB7IGxldmVsLCBjb21wYWN0IH06IHsgbGV2ZWw6IG51bWJlcjsgY29tcGFjdDogYm9vbGVhbiB9LFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IHdoaXRlc3BhY2UgPSBnZW5lcmF0ZU5leHRMaW5lKHRoaXMuaW5kZW50LCBsZXZlbCk7XG4gICAgY29uc3QgcHJlZml4ID0gY29tcGFjdCA/IFwiXCIgOiB3aGl0ZXNwYWNlO1xuICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIGFycmF5KSB7XG4gICAgICBjb25zdCBzdHJpbmcgPSB0aGlzLnN0cmluZ2lmeU5vZGUodmFsdWUsIHtcbiAgICAgICAgbGV2ZWw6IGxldmVsICsgMSxcbiAgICAgICAgYmxvY2s6IHRydWUsXG4gICAgICAgIGNvbXBhY3Q6IHRydWUsXG4gICAgICAgIGlzS2V5OiBmYWxzZSxcbiAgICAgIH0pO1xuICAgICAgaWYgKHN0cmluZyA9PT0gbnVsbCkgY29udGludWU7XG4gICAgICBjb25zdCBsaW5lUHJlZml4ID0gTElORV9GRUVEID09PSBzdHJpbmcuY2hhckNvZGVBdCgwKSA/IFwiLVwiIDogXCItIFwiO1xuICAgICAgcmVzdWx0cy5wdXNoKGAke2xpbmVQcmVmaXh9JHtzdHJpbmd9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzLmxlbmd0aCA/IHByZWZpeCArIHJlc3VsdHMuam9pbih3aGl0ZXNwYWNlKSA6IFwiW11cIjtcbiAgfVxuXG4gIHN0cmluZ2lmeUZsb3dNYXBwaW5nKFxuICAgIG9iamVjdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgeyBsZXZlbCB9OiB7IGxldmVsOiBudW1iZXIgfSxcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBxdW90ZSA9IHRoaXMuY29uZGVuc2VGbG93ID8gJ1wiJyA6IFwiXCI7XG4gICAgY29uc3Qgc2VwYXJhdG9yID0gdGhpcy5jb25kZW5zZUZsb3cgPyBcIjpcIiA6IFwiOiBcIjtcblxuICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvYmplY3QpKSB7XG4gICAgICBjb25zdCBrZXlTdHJpbmcgPSB0aGlzLnN0cmluZ2lmeU5vZGUoa2V5LCB7XG4gICAgICAgIGxldmVsLFxuICAgICAgICBibG9jazogZmFsc2UsXG4gICAgICAgIGNvbXBhY3Q6IGZhbHNlLFxuICAgICAgICBpc0tleTogZmFsc2UsXG4gICAgICB9KTtcbiAgICAgIGlmIChrZXlTdHJpbmcgPT09IG51bGwpIGNvbnRpbnVlOyAvLyBTa2lwIHRoaXMgcGFpciBiZWNhdXNlIG9mIGludmFsaWQga2V5O1xuXG4gICAgICBjb25zdCB2YWx1ZVN0cmluZyA9IHRoaXMuc3RyaW5naWZ5Tm9kZSh2YWx1ZSwge1xuICAgICAgICBsZXZlbCxcbiAgICAgICAgYmxvY2s6IGZhbHNlLFxuICAgICAgICBjb21wYWN0OiBmYWxzZSxcbiAgICAgICAgaXNLZXk6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgICBpZiAodmFsdWVTdHJpbmcgPT09IG51bGwpIGNvbnRpbnVlOyAvLyBTa2lwIHRoaXMgcGFpciBiZWNhdXNlIG9mIGludmFsaWQgdmFsdWUuXG5cbiAgICAgIGNvbnN0IGtleVByZWZpeCA9IGtleVN0cmluZy5sZW5ndGggPiAxMDI0ID8gXCI/IFwiIDogXCJcIjtcbiAgICAgIHJlc3VsdHMucHVzaChcbiAgICAgICAgcXVvdGUgKyBrZXlQcmVmaXggKyBrZXlTdHJpbmcgKyBxdW90ZSArIHNlcGFyYXRvciArIHZhbHVlU3RyaW5nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYHske3Jlc3VsdHMuam9pbihcIiwgXCIpfX1gO1xuICB9XG5cbiAgc3RyaW5naWZ5QmxvY2tNYXBwaW5nKFxuICAgIG9iamVjdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgeyB0YWcsIGxldmVsLCBjb21wYWN0IH06IHtcbiAgICAgIHRhZzogc3RyaW5nIHwgbnVsbDtcbiAgICAgIGxldmVsOiBudW1iZXI7XG4gICAgICBjb21wYWN0OiBib29sZWFuO1xuICAgIH0sXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7XG5cbiAgICAvLyBBbGxvdyBzb3J0aW5nIGtleXMgc28gdGhhdCB0aGUgb3V0cHV0IGZpbGUgaXMgZGV0ZXJtaW5pc3RpY1xuICAgIGlmICh0aGlzLnNvcnRLZXlzID09PSB0cnVlKSB7XG4gICAgICAvLyBEZWZhdWx0IHNvcnRpbmdcbiAgICAgIGtleXMuc29ydCgpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuc29ydEtleXMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgLy8gQ3VzdG9tIHNvcnQgZnVuY3Rpb25cbiAgICAgIGtleXMuc29ydCh0aGlzLnNvcnRLZXlzKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc29ydEtleXMpIHtcbiAgICAgIC8vIFNvbWV0aGluZyBpcyB3cm9uZ1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgYFwic29ydEtleXNcIiBtdXN0IGJlIGEgYm9vbGVhbiBvciBhIGZ1bmN0aW9uOiByZWNlaXZlZCAke3R5cGVvZiB0aGlzXG4gICAgICAgICAgLnNvcnRLZXlzfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHNlcGFyYXRvciA9IGdlbmVyYXRlTmV4dExpbmUodGhpcy5pbmRlbnQsIGxldmVsKTtcblxuICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gb2JqZWN0W2tleV07XG5cbiAgICAgIGNvbnN0IGtleVN0cmluZyA9IHRoaXMuc3RyaW5naWZ5Tm9kZShrZXksIHtcbiAgICAgICAgbGV2ZWw6IGxldmVsICsgMSxcbiAgICAgICAgYmxvY2s6IHRydWUsXG4gICAgICAgIGNvbXBhY3Q6IHRydWUsXG4gICAgICAgIGlzS2V5OiB0cnVlLFxuICAgICAgfSk7XG4gICAgICBpZiAoa2V5U3RyaW5nID09PSBudWxsKSBjb250aW51ZTsgLy8gU2tpcCB0aGlzIHBhaXIgYmVjYXVzZSBvZiBpbnZhbGlkIGtleS5cblxuICAgICAgY29uc3QgZXhwbGljaXRQYWlyID0gKHRhZyAhPT0gbnVsbCAmJiB0YWcgIT09IFwiP1wiKSB8fFxuICAgICAgICAoa2V5U3RyaW5nLmxlbmd0aCA+IDEwMjQpO1xuXG4gICAgICBjb25zdCB2YWx1ZVN0cmluZyA9IHRoaXMuc3RyaW5naWZ5Tm9kZSh2YWx1ZSwge1xuICAgICAgICBsZXZlbDogbGV2ZWwgKyAxLFxuICAgICAgICBibG9jazogdHJ1ZSxcbiAgICAgICAgY29tcGFjdDogZXhwbGljaXRQYWlyLFxuICAgICAgICBpc0tleTogZmFsc2UsXG4gICAgICB9KTtcbiAgICAgIGlmICh2YWx1ZVN0cmluZyA9PT0gbnVsbCkgY29udGludWU7IC8vIFNraXAgdGhpcyBwYWlyIGJlY2F1c2Ugb2YgaW52YWxpZCB2YWx1ZS5cblxuICAgICAgbGV0IHBhaXJCdWZmZXIgPSBcIlwiO1xuICAgICAgaWYgKGV4cGxpY2l0UGFpcikge1xuICAgICAgICBwYWlyQnVmZmVyICs9IGtleVN0cmluZy5jaGFyQ29kZUF0KDApID09PSBMSU5FX0ZFRUQgPyBcIj9cIiA6IFwiPyBcIjtcbiAgICAgIH1cbiAgICAgIHBhaXJCdWZmZXIgKz0ga2V5U3RyaW5nO1xuICAgICAgaWYgKGV4cGxpY2l0UGFpcikgcGFpckJ1ZmZlciArPSBzZXBhcmF0b3I7XG4gICAgICBwYWlyQnVmZmVyICs9IHZhbHVlU3RyaW5nLmNoYXJDb2RlQXQoMCkgPT09IExJTkVfRkVFRCA/IFwiOlwiIDogXCI6IFwiO1xuICAgICAgcGFpckJ1ZmZlciArPSB2YWx1ZVN0cmluZztcbiAgICAgIHJlc3VsdHMucHVzaChwYWlyQnVmZmVyKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmVmaXggPSBjb21wYWN0ID8gXCJcIiA6IHNlcGFyYXRvcjtcbiAgICByZXR1cm4gcmVzdWx0cy5sZW5ndGggPyBwcmVmaXggKyByZXN1bHRzLmpvaW4oc2VwYXJhdG9yKSA6IFwie31cIjsgLy8gRW1wdHkgbWFwcGluZyBpZiBubyB2YWxpZCBwYWlycy5cbiAgfVxuXG4gIGdldFR5cGVSZXByZXNlbnRhdGlvbih0eXBlOiBUeXBlPEtpbmRUeXBlLCB1bmtub3duPiwgdmFsdWU6IHVua25vd24pIHtcbiAgICBpZiAoIXR5cGUucmVwcmVzZW50KSByZXR1cm4gdmFsdWU7XG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLnN0eWxlTWFwLmdldCh0eXBlLnRhZykgPz9cbiAgICAgIHR5cGUuZGVmYXVsdFN0eWxlIGFzIFN0eWxlVmFyaWFudDtcbiAgICBpZiAodHlwZW9mIHR5cGUucmVwcmVzZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiB0eXBlLnJlcHJlc2VudCh2YWx1ZSwgc3R5bGUpO1xuICAgIH1cbiAgICBjb25zdCByZXByZXNlbnQgPSB0eXBlLnJlcHJlc2VudFtzdHlsZV07XG4gICAgaWYgKCFyZXByZXNlbnQpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgIGAhPCR7dHlwZS50YWd9PiB0YWcgcmVzb2x2ZXIgYWNjZXB0cyBub3QgXCIke3N0eWxlfVwiIHN0eWxlYCxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiByZXByZXNlbnQodmFsdWUsIHN0eWxlKTtcbiAgfVxuXG4gIGRldGVjdFR5cGUodmFsdWU6IHVua25vd24pOiB7IHRhZzogc3RyaW5nIHwgbnVsbDsgdmFsdWU6IHVua25vd24gfSB7XG4gICAgZm9yIChjb25zdCB0eXBlIG9mIHRoaXMuaW1wbGljaXRUeXBlcykge1xuICAgICAgaWYgKHR5cGUucHJlZGljYXRlPy4odmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gdGhpcy5nZXRUeXBlUmVwcmVzZW50YXRpb24odHlwZSwgdmFsdWUpO1xuICAgICAgICByZXR1cm4geyB0YWc6IFwiP1wiLCB2YWx1ZSB9O1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IHR5cGUgb2YgdGhpcy5leHBsaWNpdFR5cGVzKSB7XG4gICAgICBpZiAodHlwZS5wcmVkaWNhdGU/Lih2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUgPSB0aGlzLmdldFR5cGVSZXByZXNlbnRhdGlvbih0eXBlLCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiB7IHRhZzogdHlwZS50YWcsIHZhbHVlIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IHRhZzogbnVsbCwgdmFsdWUgfTtcbiAgfVxuXG4gIC8vIFNlcmlhbGl6ZXMgYG9iamVjdGAgYW5kIHdyaXRlcyBpdCB0byBnbG9iYWwgYHJlc3VsdGAuXG4gIC8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBvciBmYWxzZSBvbiBpbnZhbGlkIG9iamVjdC5cbiAgc3RyaW5naWZ5Tm9kZSh2YWx1ZTogdW5rbm93biwgeyBsZXZlbCwgYmxvY2ssIGNvbXBhY3QsIGlzS2V5IH06IHtcbiAgICBsZXZlbDogbnVtYmVyO1xuICAgIGJsb2NrOiBib29sZWFuO1xuICAgIGNvbXBhY3Q6IGJvb2xlYW47XG4gICAgaXNLZXk6IGJvb2xlYW47XG4gIH0pOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmRldGVjdFR5cGUodmFsdWUpO1xuICAgIGNvbnN0IHRhZyA9IHJlc3VsdC50YWc7XG4gICAgdmFsdWUgPSByZXN1bHQudmFsdWU7XG5cbiAgICBpZiAoYmxvY2spIHtcbiAgICAgIGJsb2NrID0gdGhpcy5mbG93TGV2ZWwgPCAwIHx8IHRoaXMuZmxvd0xldmVsID4gbGV2ZWw7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgdmFsdWUgaW5zdGFuY2VvZiBTdHJpbmcpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUgaW5zdGFuY2VvZiBTdHJpbmcgPyB2YWx1ZS52YWx1ZU9mKCkgOiB2YWx1ZTtcbiAgICAgIGlmICh0YWcgIT09IFwiP1wiKSB7XG4gICAgICAgIHZhbHVlID0gdGhpcy5zdHJpbmdpZnlTY2FsYXIodmFsdWUgYXMgc3RyaW5nLCB7IGxldmVsLCBpc0tleSB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgY29uc3QgZHVwbGljYXRlSW5kZXggPSB0aGlzLmR1cGxpY2F0ZXMuaW5kZXhPZih2YWx1ZSk7XG4gICAgICBjb25zdCBkdXBsaWNhdGUgPSBkdXBsaWNhdGVJbmRleCAhPT0gLTE7XG5cbiAgICAgIGlmIChkdXBsaWNhdGUpIHtcbiAgICAgICAgaWYgKHRoaXMudXNlZER1cGxpY2F0ZXMuaGFzKHZhbHVlKSkgcmV0dXJuIGAqcmVmXyR7ZHVwbGljYXRlSW5kZXh9YDtcbiAgICAgICAgdGhpcy51c2VkRHVwbGljYXRlcy5hZGQodmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICAodGFnICE9PSBudWxsICYmIHRhZyAhPT0gXCI/XCIpIHx8XG4gICAgICAgIGR1cGxpY2F0ZSB8fFxuICAgICAgICAodGhpcy5pbmRlbnQgIT09IDIgJiYgbGV2ZWwgPiAwKVxuICAgICAgKSB7XG4gICAgICAgIGNvbXBhY3QgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBjb25zdCBhcnJheUxldmVsID0gIXRoaXMuYXJyYXlJbmRlbnQgJiYgbGV2ZWwgPiAwID8gbGV2ZWwgLSAxIDogbGV2ZWw7XG4gICAgICAgIGlmIChibG9jayAmJiB2YWx1ZS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICB2YWx1ZSA9IHRoaXMuc3RyaW5naWZ5QmxvY2tTZXF1ZW5jZSh2YWx1ZSwge1xuICAgICAgICAgICAgbGV2ZWw6IGFycmF5TGV2ZWwsXG4gICAgICAgICAgICBjb21wYWN0LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChkdXBsaWNhdGUpIHtcbiAgICAgICAgICAgIHZhbHVlID0gYCZyZWZfJHtkdXBsaWNhdGVJbmRleH0ke3ZhbHVlfWA7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbHVlID0gdGhpcy5zdHJpbmdpZnlGbG93U2VxdWVuY2UodmFsdWUsIHsgbGV2ZWw6IGFycmF5TGV2ZWwgfSk7XG4gICAgICAgICAgaWYgKGR1cGxpY2F0ZSkge1xuICAgICAgICAgICAgdmFsdWUgPSBgJnJlZl8ke2R1cGxpY2F0ZUluZGV4fSAke3ZhbHVlfWA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYmxvY2sgJiYgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgIHZhbHVlID0gdGhpcy5zdHJpbmdpZnlCbG9ja01hcHBpbmcodmFsdWUsIHsgdGFnLCBsZXZlbCwgY29tcGFjdCB9KTtcbiAgICAgICAgICBpZiAoZHVwbGljYXRlKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGAmcmVmXyR7ZHVwbGljYXRlSW5kZXh9JHt2YWx1ZX1gO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWx1ZSA9IHRoaXMuc3RyaW5naWZ5Rmxvd01hcHBpbmcodmFsdWUsIHsgbGV2ZWwgfSk7XG4gICAgICAgICAgaWYgKGR1cGxpY2F0ZSkge1xuICAgICAgICAgICAgdmFsdWUgPSBgJnJlZl8ke2R1cGxpY2F0ZUluZGV4fSAke3ZhbHVlfWA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnNraXBJbnZhbGlkKSByZXR1cm4gbnVsbDtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCBzdHJpbmdpZnkgJHt0eXBlb2YgdmFsdWV9YCk7XG4gICAgfVxuXG4gICAgaWYgKHRhZyAhPT0gbnVsbCAmJiB0YWcgIT09IFwiP1wiKSB7XG4gICAgICB2YWx1ZSA9IGAhPCR7dGFnfT4gJHt2YWx1ZX1gO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZSBhcyBzdHJpbmc7XG4gIH1cblxuICBzdHJpbmdpZnkodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnVzZUFuY2hvcnMpIHtcbiAgICAgIGNvbnN0IHZhbHVlczogU2V0PHVua25vd24+ID0gbmV3IFNldCgpO1xuICAgICAgY29uc3QgZHVwbGljYXRlT2JqZWN0czogU2V0PHVua25vd24+ID0gbmV3IFNldCgpO1xuICAgICAgaW5zcGVjdE5vZGUodmFsdWUsIHZhbHVlcywgZHVwbGljYXRlT2JqZWN0cyk7XG4gICAgICB0aGlzLmR1cGxpY2F0ZXMgPSBbLi4uZHVwbGljYXRlT2JqZWN0c107XG4gICAgICB0aGlzLnVzZWREdXBsaWNhdGVzID0gbmV3IFNldCgpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuc3RyaW5naWZ5Tm9kZSh2YWx1ZSwge1xuICAgICAgbGV2ZWw6IDAsXG4gICAgICBibG9jazogdHJ1ZSxcbiAgICAgIGNvbXBhY3Q6IHRydWUsXG4gICAgICBpc0tleTogZmFsc2UsXG4gICAgfSk7XG4gICAgaWYgKHN0cmluZyAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGAke3N0cmluZ31cXG5gO1xuICAgIH1cbiAgICByZXR1cm4gXCJcIjtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixvRkFBb0Y7QUFDcEYsMEVBQTBFO0FBQzFFLHFEQUFxRDtBQUVyRCxTQUNFLFNBQVMsRUFDVCxRQUFRLEVBQ1IsR0FBRyxFQUNILEtBQUssRUFDTCxLQUFLLEVBQ0wsYUFBYSxFQUNiLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLFlB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 +// denoCacheMetadata=4775469113387118519,14733151582528599098
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/3c78879b3e16ca06e56737c27c7272499f5c768d3b4080c728b63c4f98f8299d.js b/vendor/gen/https/jsr.io/3c78879b3e16ca06e56737c27c7272499f5c768d3b4080c728b63c4f98f8299d.js new file mode 100644 index 0000000..820b607 --- /dev/null +++ b/vendor/gen/https/jsr.io/3c78879b3e16ca06e56737c27c7272499f5c768d3b4080c728b63c4f98f8299d.js @@ -0,0 +1,16 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +/** + * The character used to separate entries in the PATH environment variable. + * On Windows, this is `;`. On all other platforms, this is `:`. + */ export const DELIMITER = isWindows ? ";" : ":"; +/** + * The character used to separate components of a file path. + * On Windows, this is `\`. On all other platforms, this is `/`. + */ export const SEPARATOR = isWindows ? "\\" : "/"; +/** + * A regular expression that matches one or more path separators. + */ export const SEPARATOR_PATTERN = isWindows ? /[\\/]+/ : /\/+/; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9jb25zdGFudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cbmltcG9ydCB7IGlzV2luZG93cyB9IGZyb20gXCIuL19vcy50c1wiO1xuXG4vKipcbiAqIFRoZSBjaGFyYWN0ZXIgdXNlZCB0byBzZXBhcmF0ZSBlbnRyaWVzIGluIHRoZSBQQVRIIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICogT24gV2luZG93cywgdGhpcyBpcyBgO2AuIE9uIGFsbCBvdGhlciBwbGF0Zm9ybXMsIHRoaXMgaXMgYDpgLlxuICovXG5leHBvcnQgY29uc3QgREVMSU1JVEVSID0gaXNXaW5kb3dzID8gXCI7XCIgYXMgY29uc3QgOiBcIjpcIiBhcyBjb25zdDtcbi8qKlxuICogVGhlIGNoYXJhY3RlciB1c2VkIHRvIHNlcGFyYXRlIGNvbXBvbmVudHMgb2YgYSBmaWxlIHBhdGguXG4gKiBPbiBXaW5kb3dzLCB0aGlzIGlzIGBcXGAuIE9uIGFsbCBvdGhlciBwbGF0Zm9ybXMsIHRoaXMgaXMgYC9gLlxuICovXG5leHBvcnQgY29uc3QgU0VQQVJBVE9SID0gaXNXaW5kb3dzID8gXCJcXFxcXCIgYXMgY29uc3QgOiBcIi9cIiBhcyBjb25zdDtcbi8qKlxuICogQSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBtYXRjaGVzIG9uZSBvciBtb3JlIHBhdGggc2VwYXJhdG9ycy5cbiAqL1xuZXhwb3J0IGNvbnN0IFNFUEFSQVRPUl9QQVRURVJOID0gaXNXaW5kb3dzID8gL1tcXFxcL10rLyA6IC9cXC8rLztcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBQ3JDLFNBQVMsU0FBUyxRQUFRLFdBQVc7QUFFckM7OztDQUdDLEdBQ0QsT0FBTyxNQUFNLFlBQVksWUFBWSxNQUFlLElBQWE7QUFDakU7OztDQUdDLEdBQ0QsT0FBTyxNQUFNLFlBQVksWUFBWSxPQUFnQixJQUFhO0FBQ2xFOztDQUVDLEdBQ0QsT0FBTyxNQUFNLG9CQUFvQixZQUFZLFdBQVcsTUFBTSJ9 +// denoCacheMetadata=8121436083885179975,1642814832531091071
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/3cba2e78a97f1de50755b20ffa539bd0bde61f127769015037fc617d6d071635.js b/vendor/gen/https/jsr.io/3cba2e78a97f1de50755b20ffa539bd0bde61f127769015037fc617d6d071635.js new file mode 100644 index 0000000..6e1473f --- /dev/null +++ b/vendor/gen/https/jsr.io/3cba2e78a97f1de50755b20ffa539bd0bde61f127769015037fc617d6d071635.js @@ -0,0 +1,29 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { toFileUrl as posixToFileUrl } from "./posix/to_file_url.ts"; +import { toFileUrl as windowsToFileUrl } from "./windows/to_file_url.ts"; +/** + * Converts a path string to a file URL. + * + * @example Usage + * ```ts + * import { toFileUrl } from "@std/path/to-file-url"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(toFileUrl("\\home\\foo"), new URL("file:///home/foo")); + * assertEquals(toFileUrl("C:\\Users\\foo"), new URL("file:///C:/Users/foo")); + * assertEquals(toFileUrl("\\\\127.0.0.1\\home\\foo"), new URL("file://127.0.0.1/home/foo")); + * } else { + * assertEquals(toFileUrl("/home/foo"), new URL("file:///home/foo")); + * } + * ``` + * + * @param path Path to convert to file URL. + * @returns The file URL equivalent to the path. + */ export function toFileUrl(path) { + return isWindows ? windowsToFileUrl(path) : posixToFileUrl(path); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC90b19maWxlX3VybC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBpc1dpbmRvd3MgfSBmcm9tIFwiLi9fb3MudHNcIjtcbmltcG9ydCB7IHRvRmlsZVVybCBhcyBwb3NpeFRvRmlsZVVybCB9IGZyb20gXCIuL3Bvc2l4L3RvX2ZpbGVfdXJsLnRzXCI7XG5pbXBvcnQgeyB0b0ZpbGVVcmwgYXMgd2luZG93c1RvRmlsZVVybCB9IGZyb20gXCIuL3dpbmRvd3MvdG9fZmlsZV91cmwudHNcIjtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIHBhdGggc3RyaW5nIHRvIGEgZmlsZSBVUkwuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyB0b0ZpbGVVcmwgfSBmcm9tIFwiQHN0ZC9wYXRoL3RvLWZpbGUtdXJsXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBpZiAoRGVuby5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCIpIHtcbiAqICAgYXNzZXJ0RXF1YWxzKHRvRmlsZVVybChcIlxcXFxob21lXFxcXGZvb1wiKSwgbmV3IFVSTChcImZpbGU6Ly8vaG9tZS9mb29cIikpO1xuICogICBhc3NlcnRFcXVhbHModG9GaWxlVXJsKFwiQzpcXFxcVXNlcnNcXFxcZm9vXCIpLCBuZXcgVVJMKFwiZmlsZTovLy9DOi9Vc2Vycy9mb29cIikpO1xuICogICBhc3NlcnRFcXVhbHModG9GaWxlVXJsKFwiXFxcXFxcXFwxMjcuMC4wLjFcXFxcaG9tZVxcXFxmb29cIiksIG5ldyBVUkwoXCJmaWxlOi8vMTI3LjAuMC4xL2hvbWUvZm9vXCIpKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGFzc2VydEVxdWFscyh0b0ZpbGVVcmwoXCIvaG9tZS9mb29cIiksIG5ldyBVUkwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBwYXRoIFBhdGggdG8gY29udmVydCB0byBmaWxlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBmaWxlIFVSTCBlcXVpdmFsZW50IHRvIHRoZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9GaWxlVXJsKHBhdGg6IHN0cmluZyk6IFVSTCB7XG4gIHJldHVybiBpc1dpbmRvd3MgPyB3aW5kb3dzVG9GaWxlVXJsKHBhdGgpIDogcG9zaXhUb0ZpbGVVcmwocGF0aCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQyxTQUFTLFNBQVMsUUFBUSxXQUFXO0FBQ3JDLFNBQVMsYUFBYSxjQUFjLFFBQVEseUJBQXlCO0FBQ3JFLFNBQVMsYUFBYSxnQkFBZ0IsUUFBUSwyQkFBMkI7QUFFekU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FtQkMsR0FDRCxPQUFPLFNBQVMsVUFBVSxJQUFZO0VBQ3BDLE9BQU8sWUFBWSxpQkFBaUIsUUFBUSxlQUFlO0FBQzdEIn0= +// denoCacheMetadata=3272691341595157225,14545617026695716204
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/3d9ec5951e86ecfa4573d5391ec7021ff3a65ee612fff17e71112d0af364fe81.js b/vendor/gen/https/jsr.io/3d9ec5951e86ecfa4573d5391ec7021ff3a65ee612fff17e71112d0af364fe81.js new file mode 100644 index 0000000..373e458 --- /dev/null +++ b/vendor/gen/https/jsr.io/3d9ec5951e86ecfa4573d5391ec7021ff3a65ee612fff17e71112d0af364fe81.js @@ -0,0 +1,11 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +export function assertArg(url) { + url = url instanceof URL ? url : new URL(url); + if (url.protocol !== "file:") { + throw new TypeError(`URL must be a file URL: received "${url.protocol}"`); + } + return url; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9fY29tbW9uL2Zyb21fZmlsZV91cmwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEFyZyh1cmw6IFVSTCB8IHN0cmluZykge1xuICB1cmwgPSB1cmwgaW5zdGFuY2VvZiBVUkwgPyB1cmwgOiBuZXcgVVJMKHVybCk7XG4gIGlmICh1cmwucHJvdG9jb2wgIT09IFwiZmlsZTpcIikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBgVVJMIG11c3QgYmUgYSBmaWxlIFVSTDogcmVjZWl2ZWQgXCIke3VybC5wcm90b2NvbH1cImAsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gdXJsO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxxQ0FBcUM7QUFFckMsT0FBTyxTQUFTLFVBQVUsR0FBaUI7RUFDekMsTUFBTSxlQUFlLE1BQU0sTUFBTSxJQUFJLElBQUk7RUFDekMsSUFBSSxJQUFJLFFBQVEsS0FBSyxTQUFTO0lBQzVCLE1BQU0sSUFBSSxVQUNSLENBQUMsa0NBQWtDLEVBQUUsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDO0VBRXhEO0VBQ0EsT0FBTztBQUNUIn0= +// denoCacheMetadata=5971913132499612643,10698618876760532972
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/3f59705da94195438968647319ea2cac89b81d4e967347f0fcc8998c7a615a50.js b/vendor/gen/https/jsr.io/3f59705da94195438968647319ea2cac89b81d4e967347f0fcc8998c7a615a50.js new file mode 100644 index 0000000..5edec6f --- /dev/null +++ b/vendor/gen/https/jsr.io/3f59705da94195438968647319ea2cac89b81d4e967347f0fcc8998c7a615a50.js @@ -0,0 +1,182 @@ +import { dirname, fromFileUrl, join } from "jsr:@std/path@^1.0.6"; +import { encodeBase32 } from "jsr:/@std/encoding@^1.0.5/base32"; +import { lastIndexOfNeedle } from "jsr:@std/bytes@^1.0.2"; +import * as deno from "./deno.ts"; +import { rootInfo } from "./deno.ts"; +import { mapContentType, mediaTypeFromSpecifier, mediaTypeToLoader, parseNpmSpecifier } from "./shared.ts"; +let ROOT_INFO_OUTPUT; +export const DENO_CACHE_METADATA = new TextEncoder().encode("\n// denoCacheMetadata="); +export class NativeLoader { + #nodeModulesDirManual; + #infoCache; + #linkDirCache = new Map(); + constructor(options){ + this.#nodeModulesDirManual = options.infoOptions?.nodeModulesDir === "manual"; + this.#infoCache = new deno.InfoCache(options.infoOptions); + } + async resolve(specifier) { + // Workaround for https://github.com/denoland/deno/issues/25903 + if (this.#nodeModulesDirManual && specifier.protocol === "npm:") { + const npmSpecifier = parseNpmSpecifier(specifier); + return { + kind: "npm", + packageId: "", + packageName: npmSpecifier.name, + path: npmSpecifier.path ?? "" + }; + } + const entry = await this.#infoCache.get(specifier.href); + if ("error" in entry) { + if (specifier.protocol === "file:" && mediaTypeFromSpecifier(specifier) === "Unknown") { + return { + kind: "esm", + specifier: new URL(entry.specifier) + }; + } + throw new Error(entry.error); + } + if (entry.kind === "npm") { + // TODO(lucacasonato): remove parsing once https://github.com/denoland/deno/issues/18043 is resolved + const parsed = parseNpmSpecifier(new URL(entry.specifier)); + return { + kind: "npm", + packageId: entry.npmPackage, + packageName: parsed.name, + path: parsed.path ?? "" + }; + } else if (entry.kind === "node") { + return { + kind: "node", + path: entry.specifier + }; + } + return { + kind: "esm", + specifier: new URL(entry.specifier) + }; + } + async loadEsm(specifier) { + if (specifier.protocol === "data:") { + const resp = await fetch(specifier); + const contents = new Uint8Array(await resp.arrayBuffer()); + const contentType = resp.headers.get("content-type"); + const mediaType = mapContentType(specifier, contentType); + const loader = mediaTypeToLoader(mediaType); + if (loader === null) return undefined; + return { + contents, + loader + }; + } + const entry = await this.#infoCache.get(specifier.href); + if ("error" in entry && specifier.protocol !== "file:" && mediaTypeFromSpecifier(specifier) !== "Unknown") throw new Error(entry.error); + if (!("local" in entry)) { + throw new Error("[unreachable] Not an ESM module."); + } + if (!entry.local) throw new Error("Module not downloaded yet."); + const loader = mediaTypeToLoader(entry.mediaType); + if (loader === null) return undefined; + let contents = await Deno.readFile(entry.local); + const denoCacheMetadata = lastIndexOfNeedle(contents, DENO_CACHE_METADATA); + if (denoCacheMetadata !== -1) { + contents = contents.subarray(0, denoCacheMetadata); + } + const res = { + contents, + loader + }; + if (specifier.protocol === "file:") { + res.watchFiles = [ + fromFileUrl(specifier) + ]; + } + return res; + } + async nodeModulesDirForPackage(npmPackageId) { + const npmPackage = this.#infoCache.getNpmPackage(npmPackageId); + if (!npmPackage) throw new Error("NPM package not found."); + let linkDir = this.#linkDirCache.get(npmPackageId); + if (!linkDir) { + linkDir = await this.#nodeModulesDirForPackageInner(npmPackageId, npmPackage); + this.#linkDirCache.set(npmPackageId, linkDir); + } + return linkDir; + } + async #nodeModulesDirForPackageInner(npmPackageId, npmPackage) { + let name = npmPackage.name; + if (name.toLowerCase() !== name) { + name = `_${encodeBase32(new TextEncoder().encode(name))}`; + } + if (ROOT_INFO_OUTPUT === undefined) { + ROOT_INFO_OUTPUT = rootInfo(); + } + if (ROOT_INFO_OUTPUT instanceof Promise) { + ROOT_INFO_OUTPUT = await ROOT_INFO_OUTPUT; + } + const { denoDir, npmCache } = ROOT_INFO_OUTPUT; + const registryUrl = npmPackage.registryUrl ?? "https://registry.npmjs.org"; + const registry = new URL(registryUrl); + const packageDir = join(npmCache, registry.hostname, name, npmPackage.version); + const linkDir = join(denoDir, "deno_esbuild", registry.hostname, npmPackageId, "node_modules", name); + const linkDirParent = dirname(linkDir); + const tmpDirParent = join(denoDir, "deno_esbuild_tmp"); + // check if the package is already linked, if so, return the link and skip + // a bunch of work + try { + await Deno.stat(linkDir); + this.#linkDirCache.set(npmPackageId, linkDir); + return linkDir; + } catch { + // directory does not yet exist + } + // create a temporary directory, recursively hardlink the package contents + // into it, and then rename it to the final location + await Deno.mkdir(tmpDirParent, { + recursive: true + }); + const tmpDir = await Deno.makeTempDir({ + dir: tmpDirParent + }); + await linkRecursive(packageDir, tmpDir); + try { + await Deno.mkdir(linkDirParent, { + recursive: true + }); + await Deno.rename(tmpDir, linkDir); + } catch (err) { + // the directory may already have been created by someone else - check if so + try { + await Deno.stat(linkDir); + } catch { + throw err; + } + } + return linkDir; + } + packageIdFromNameInPackage(name, parentPackageId) { + const parentPackage = this.#infoCache.getNpmPackage(parentPackageId); + if (!parentPackage) throw new Error("NPM package not found."); + if (parentPackage.name === name) return parentPackageId; + for (const dep of parentPackage.dependencies){ + const depPackage = this.#infoCache.getNpmPackage(dep); + if (!depPackage) throw new Error("NPM package not found."); + if (depPackage.name === name) return dep; + } + return null; + } +} +async function linkRecursive(from, to) { + const fromStat = await Deno.stat(from); + if (fromStat.isDirectory) { + await Deno.mkdir(to, { + recursive: true + }); + for await (const entry of Deno.readDir(from)){ + await linkRecursive(join(from, entry.name), join(to, entry.name)); + } + } else { + await Deno.link(from, to); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BsdWNhL2VzYnVpbGQtZGVuby1sb2FkZXIvMC4xMS4xL3NyYy9sb2FkZXJfbmF0aXZlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgZXNidWlsZCBmcm9tIFwiLi9lc2J1aWxkX3R5cGVzLnRzXCI7XG5pbXBvcnQgeyBkaXJuYW1lLCBmcm9tRmlsZVVybCwgam9pbiB9IGZyb20gXCJqc3I6QHN0ZC9wYXRoQF4xLjAuNlwiO1xuaW1wb3J0IHsgZW5jb2RlQmFzZTMyIH0gZnJvbSBcImpzcjovQHN0ZC9lbmNvZGluZ0BeMS4wLjUvYmFzZTMyXCI7XG5pbXBvcnQgeyBsYXN0SW5kZXhPZk5lZWRsZSB9IGZyb20gXCJqc3I6QHN0ZC9ieXRlc0BeMS4wLjJcIjtcbmltcG9ydCAqIGFzIGRlbm8gZnJvbSBcIi4vZGVuby50c1wiO1xuaW1wb3J0IHsgcm9vdEluZm8sIHR5cGUgUm9vdEluZm9PdXRwdXQgfSBmcm9tIFwiLi9kZW5vLnRzXCI7XG5pbXBvcnQge1xuICB0eXBlIExvYWRlcixcbiAgdHlwZSBMb2FkZXJSZXNvbHV0aW9uLFxuICBtYXBDb250ZW50VHlwZSxcbiAgbWVkaWFUeXBlRnJvbVNwZWNpZmllcixcbiAgbWVkaWFUeXBlVG9Mb2FkZXIsXG4gIHBhcnNlTnBtU3BlY2lmaWVyLFxufSBmcm9tIFwiLi9zaGFyZWQudHNcIjtcblxubGV0IFJPT1RfSU5GT19PVVRQVVQ6IFByb21pc2U8Um9vdEluZm9PdXRwdXQ+IHwgUm9vdEluZm9PdXRwdXQgfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCBjb25zdCBERU5PX0NBQ0hFX01FVEFEQVRBID0gbmV3IFRleHRFbmNvZGVyKClcbiAgLmVuY29kZShcIlxcbi8vIGRlbm9DYWNoZU1ldGFkYXRhPVwiKTtcblxuZXhwb3J0IGludGVyZmFjZSBOYXRpdmVMb2FkZXJPcHRpb25zIHtcbiAgaW5mb09wdGlvbnM/OiBkZW5vLkluZm9PcHRpb25zO1xufVxuXG5leHBvcnQgY2xhc3MgTmF0aXZlTG9hZGVyIGltcGxlbWVudHMgTG9hZGVyIHtcbiAgI25vZGVNb2R1bGVzRGlyTWFudWFsOiBib29sZWFuO1xuICAjaW5mb0NhY2hlOiBkZW5vLkluZm9DYWNoZTtcbiAgI2xpbmtEaXJDYWNoZTogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTsgLy8gbWFwcGluZyBmcm9tIHBhY2thZ2UgaWQgLT4gbGluayBkaXJcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBOYXRpdmVMb2FkZXJPcHRpb25zKSB7XG4gICAgdGhpcy4jbm9kZU1vZHVsZXNEaXJNYW51YWwgPVxuICAgICAgb3B0aW9ucy5pbmZvT3B0aW9ucz8ubm9kZU1vZHVsZXNEaXIgPT09IFwibWFudWFsXCI7XG4gICAgdGhpcy4jaW5mb0NhY2hlID0gbmV3IGRlbm8uSW5mb0NhY2hlKG9wdGlvbnMuaW5mb09wdGlvbnMpO1xuICB9XG5cbiAgYXN5bmMgcmVzb2x2ZShzcGVjaWZpZXI6IFVSTCk6IFByb21pc2U8TG9hZGVyUmVzb2x1dGlvbj4ge1xuICAgIC8vIFdvcmthcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9kZW5vbGFuZC9kZW5vL2lzc3Vlcy8yNTkwM1xuICAgIGlmICh0aGlzLiNub2RlTW9kdWxlc0Rpck1hbnVhbCAmJiBzcGVjaWZpZXIucHJvdG9jb2wgPT09IFwibnBtOlwiKSB7XG4gICAgICBjb25zdCBucG1TcGVjaWZpZXIgPSBwYXJzZU5wbVNwZWNpZmllcihzcGVjaWZpZXIpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2luZDogXCJucG1cIixcbiAgICAgICAgcGFja2FnZUlkOiBcIlwiLFxuICAgICAgICBwYWNrYWdlTmFtZTogbnBtU3BlY2lmaWVyLm5hbWUsXG4gICAgICAgIHBhdGg6IG5wbVNwZWNpZmllci5wYXRoID8/IFwiXCIsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGVudHJ5ID0gYXdhaXQgdGhpcy4jaW5mb0NhY2hlLmdldChzcGVjaWZpZXIuaHJlZik7XG4gICAgaWYgKFwiZXJyb3JcIiBpbiBlbnRyeSkge1xuICAgICAgaWYgKFxuICAgICAgICBzcGVjaWZpZXIucHJvdG9jb2wgPT09IFwiZmlsZTpcIiAmJlxuICAgICAgICBtZWRpYVR5cGVGcm9tU3BlY2lmaWVyKHNwZWNpZmllcikgPT09IFwiVW5rbm93blwiXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHsga2luZDogXCJlc21cIiwgc3BlY2lmaWVyOiBuZXcgVVJMKGVudHJ5LnNwZWNpZmllcikgfTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihlbnRyeS5lcnJvcik7XG4gICAgfVxuXG4gICAgaWYgKGVudHJ5LmtpbmQgPT09IFwibnBtXCIpIHtcbiAgICAgIC8vIFRPRE8obHVjYWNhc29uYXRvKTogcmVtb3ZlIHBhcnNpbmcgb25jZSBodHRwczovL2dpdGh1Yi5jb20vZGVub2xhbmQvZGVuby9pc3N1ZXMvMTgwNDMgaXMgcmVzb2x2ZWRcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlTnBtU3BlY2lmaWVyKG5ldyBVUkwoZW50cnkuc3BlY2lmaWVyKSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBraW5kOiBcIm5wbVwiLFxuICAgICAgICBwYWNrYWdlSWQ6IGVudHJ5Lm5wbVBhY2thZ2UsXG4gICAgICAgIHBhY2thZ2VOYW1lOiBwYXJzZWQubmFtZSxcbiAgICAgICAgcGF0aDogcGFyc2VkLnBhdGggPz8gXCJcIixcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChlbnRyeS5raW5kID09PSBcIm5vZGVcIikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2luZDogXCJub2RlXCIsXG4gICAgICAgIHBhdGg6IGVudHJ5LnNwZWNpZmllcixcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsga2luZDogXCJlc21cIiwgc3BlY2lmaWVyOiBuZXcgVVJMKGVudHJ5LnNwZWNpZmllcikgfTtcbiAgfVxuXG4gIGFzeW5jIGxvYWRFc20oc3BlY2lmaWVyOiBVUkwpOiBQcm9taXNlPGVzYnVpbGQuT25Mb2FkUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKHNwZWNpZmllci5wcm90b2NvbCA9PT0gXCJkYXRhOlwiKSB7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgZmV0Y2goc3BlY2lmaWVyKTtcbiAgICAgIGNvbnN0IGNvbnRlbnRzID0gbmV3IFVpbnQ4QXJyYXkoYXdhaXQgcmVzcC5hcnJheUJ1ZmZlcigpKTtcbiAgICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gcmVzcC5oZWFkZXJzLmdldChcImNvbnRlbnQtdHlwZVwiKTtcbiAgICAgIGNvbnN0IG1lZGlhVHlwZSA9IG1hcENvbnRlbnRUeXBlKHNwZWNpZmllciwgY29udGVudFR5cGUpO1xuICAgICAgY29uc3QgbG9hZGVyID0gbWVkaWFUeXBlVG9Mb2FkZXIobWVkaWFUeXBlKTtcbiAgICAgIGlmIChsb2FkZXIgPT09IG51bGwpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4geyBjb250ZW50cywgbG9hZGVyIH07XG4gICAgfVxuICAgIGNvbnN0IGVudHJ5ID0gYXdhaXQgdGhpcy4jaW5mb0NhY2hlLmdldChzcGVjaWZpZXIuaHJlZik7XG4gICAgaWYgKFxuICAgICAgXCJlcnJvclwiIGluIGVudHJ5ICYmIHNwZWNpZmllci5wcm90b2NvbCAhPT0gXCJmaWxlOlwiICYmXG4gICAgICBtZWRpYVR5cGVGcm9tU3BlY2lmaWVyKHNwZWNpZmllcikgIT09IFwiVW5rbm93blwiXG4gICAgKSB0aHJvdyBuZXcgRXJyb3IoZW50cnkuZXJyb3IpO1xuXG4gICAgaWYgKCEoXCJsb2NhbFwiIGluIGVudHJ5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiW3VucmVhY2hhYmxlXSBOb3QgYW4gRVNNIG1vZHVsZS5cIik7XG4gICAgfVxuICAgIGlmICghZW50cnkubG9jYWwpIHRocm93IG5ldyBFcnJvcihcIk1vZHVsZSBub3QgZG93bmxvYWRlZCB5ZXQuXCIpO1xuICAgIGNvbnN0IGxvYWRlciA9IG1lZGlhVHlwZVRvTG9hZGVyKGVudHJ5Lm1lZGlhVHlwZSk7XG4gICAgaWYgKGxvYWRlciA9PT0gbnVsbCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGxldCBjb250ZW50cyA9IGF3YWl0IERlbm8ucmVhZEZpbGUoZW50cnkubG9jYWwpO1xuICAgIGNvbnN0IGRlbm9DYWNoZU1ldGFkYXRhID0gbGFzdEluZGV4T2ZOZWVkbGUoY29udGVudHMsIERFTk9fQ0FDSEVfTUVUQURBVEEpO1xuICAgIGlmIChkZW5vQ2FjaGVNZXRhZGF0YSAhPT0gLTEpIHtcbiAgICAgIGNvbnRlbnRzID0gY29udGVudHMuc3ViYXJyYXkoMCwgZGVub0NhY2hlTWV0YWRhdGEpO1xuICAgIH1cbiAgICBjb25zdCByZXM6IGVzYnVpbGQuT25Mb2FkUmVzdWx0ID0geyBjb250ZW50cywgbG9hZGVyIH07XG4gICAgaWYgKHNwZWNpZmllci5wcm90b2NvbCA9PT0gXCJmaWxlOlwiKSB7XG4gICAgICByZXMud2F0Y2hGaWxlcyA9IFtmcm9tRmlsZVVybChzcGVjaWZpZXIpXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIGFzeW5jIG5vZGVNb2R1bGVzRGlyRm9yUGFja2FnZShucG1QYWNrYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgbnBtUGFja2FnZSA9IHRoaXMuI2luZm9DYWNoZS5nZXROcG1QYWNrYWdlKG5wbVBhY2thZ2VJZCk7XG4gICAgaWYgKCFucG1QYWNrYWdlKSB0aHJvdyBuZXcgRXJyb3IoXCJOUE0gcGFja2FnZSBub3QgZm91bmQuXCIpO1xuXG4gICAgbGV0IGxpbmtEaXIgPSB0aGlzLiNsaW5rRGlyQ2FjaGUuZ2V0KG5wbVBhY2thZ2VJZCk7XG4gICAgaWYgKCFsaW5rRGlyKSB7XG4gICAgICBsaW5rRGlyID0gYXdhaXQgdGhpcy4jbm9kZU1vZHVsZXNEaXJGb3JQYWNrYWdlSW5uZXIoXG4gICAgICAgIG5wbVBhY2thZ2VJZCxcbiAgICAgICAgbnBtUGFja2FnZSxcbiAgICAgICk7XG4gICAgICB0aGlzLiNsaW5rRGlyQ2FjaGUuc2V0KG5wbVBhY2thZ2VJZCwgbGlua0Rpcik7XG4gICAgfVxuICAgIHJldHVybiBsaW5rRGlyO1xuICB9XG5cbiAgYXN5bmMgI25vZGVNb2R1bGVzRGlyRm9yUGFja2FnZUlubmVyKFxuICAgIG5wbVBhY2thZ2VJZDogc3RyaW5nLFxuICAgIG5wbVBhY2thZ2U6IGRlbm8uTnBtUGFja2FnZSxcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBsZXQgbmFtZSA9IG5wbVBhY2thZ2UubmFtZTtcbiAgICBpZiAobmFtZS50b0xvd2VyQ2FzZSgpICE9PSBuYW1lKSB7XG4gICAgICBuYW1lID0gYF8ke2VuY29kZUJhc2UzMihuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUobmFtZSkpfWA7XG4gICAgfVxuICAgIGlmIChST09UX0lORk9fT1VUUFVUID09PSB1bmRlZmluZWQpIHtcbiAgICAgIFJPT1RfSU5GT19PVVRQVVQgPSByb290SW5mbygpO1xuICAgIH1cbiAgICBpZiAoUk9PVF9JTkZPX09VVFBVVCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgIFJPT1RfSU5GT19PVVRQVVQgPSBhd2FpdCBST09UX0lORk9fT1VUUFVUO1xuICAgIH1cbiAgICBjb25zdCB7IGRlbm9EaXIsIG5wbUNhY2hlIH0gPSBST09UX0lORk9fT1VUUFVUO1xuICAgIGNvbnN0IHJlZ2lzdHJ5VXJsID0gbnBtUGFja2FnZS5yZWdpc3RyeVVybCA/PyBcImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnXCI7XG4gICAgY29uc3QgcmVnaXN0cnkgPSBuZXcgVVJMKHJlZ2lzdHJ5VXJsKTtcblxuICAgIGNvbnN0IHBhY2thZ2VEaXIgPSBqb2luKFxuICAgICAgbnBtQ2FjaGUsXG4gICAgICByZWdpc3RyeS5ob3N0bmFtZSxcbiAgICAgIG5hbWUsXG4gICAgICBucG1QYWNrYWdlLnZlcnNpb24sXG4gICAgKTtcbiAgICBjb25zdCBsaW5rRGlyID0gam9pbihcbiAgICAgIGRlbm9EaXIsXG4gICAgICBcImRlbm9fZXNidWlsZFwiLFxuICAgICAgcmVnaXN0cnkuaG9zdG5hbWUsXG4gICAgICBucG1QYWNrYWdlSWQsXG4gICAgICBcIm5vZGVfbW9kdWxlc1wiLFxuICAgICAgbmFtZSxcbiAgICApO1xuICAgIGNvbnN0IGxpbmtEaXJQYXJlbnQgPSBkaXJuYW1lKGxpbmtEaXIpO1xuICAgIGNvbnN0IHRtcERpclBhcmVudCA9IGpvaW4oZGVub0RpciwgXCJkZW5vX2VzYnVpbGRfdG1wXCIpO1xuXG4gICAgLy8gY2hlY2sgaWYgdGhlIHBhY2thZ2UgaXMgYWxyZWFkeSBsaW5rZWQsIGlmIHNvLCByZXR1cm4gdGhlIGxpbmsgYW5kIHNraXBcbiAgICAvLyBhIGJ1bmNoIG9mIHdvcmtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgRGVuby5zdGF0KGxpbmtEaXIpO1xuICAgICAgdGhpcy4jbGlua0RpckNhY2hlLnNldChucG1QYWNrYWdlSWQsIGxpbmtEaXIpO1xuICAgICAgcmV0dXJuIGxpbmtEaXI7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBkaXJlY3RvcnkgZG9lcyBub3QgeWV0IGV4aXN0XG4gICAgfVxuXG4gICAgLy8gY3JlYXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSwgcmVjdXJzaXZlbHkgaGFyZGxpbmsgdGhlIHBhY2thZ2UgY29udGVudHNcbiAgICAvLyBpbnRvIGl0LCBhbmQgdGhlbiByZW5hbWUgaXQgdG8gdGhlIGZpbmFsIGxvY2F0aW9uXG4gICAgYXdhaXQgRGVuby5ta2Rpcih0bXBEaXJQYXJlbnQsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIGNvbnN0IHRtcERpciA9IGF3YWl0IERlbm8ubWFrZVRlbXBEaXIoeyBkaXI6IHRtcERpclBhcmVudCB9KTtcbiAgICBhd2FpdCBsaW5rUmVjdXJzaXZlKHBhY2thZ2VEaXIsIHRtcERpcik7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IERlbm8ubWtkaXIobGlua0RpclBhcmVudCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICBhd2FpdCBEZW5vLnJlbmFtZSh0bXBEaXIsIGxpbmtEaXIpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gdGhlIGRpcmVjdG9yeSBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gY3JlYXRlZCBieSBzb21lb25lIGVsc2UgLSBjaGVjayBpZiBzb1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgRGVuby5zdGF0KGxpbmtEaXIpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGlua0RpcjtcbiAgfVxuXG4gIHBhY2thZ2VJZEZyb21OYW1lSW5QYWNrYWdlKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBwYXJlbnRQYWNrYWdlSWQ6IHN0cmluZyxcbiAgKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3QgcGFyZW50UGFja2FnZSA9IHRoaXMuI2luZm9DYWNoZS5nZXROcG1QYWNrYWdlKHBhcmVudFBhY2thZ2VJZCk7XG4gICAgaWYgKCFwYXJlbnRQYWNrYWdlKSB0aHJvdyBuZXcgRXJyb3IoXCJOUE0gcGFja2FnZSBub3QgZm91bmQuXCIpO1xuICAgIGlmIChwYXJlbnRQYWNrYWdlLm5hbWUgPT09IG5hbWUpIHJldHVybiBwYXJlbnRQYWNrYWdlSWQ7XG4gICAgZm9yIChjb25zdCBkZXAgb2YgcGFyZW50UGFja2FnZS5kZXBlbmRlbmNpZXMpIHtcbiAgICAgIGNvbnN0IGRlcFBhY2thZ2UgPSB0aGlzLiNpbmZvQ2FjaGUuZ2V0TnBtUGFja2FnZShkZXApO1xuICAgICAgaWYgKCFkZXBQYWNrYWdlKSB0aHJvdyBuZXcgRXJyb3IoXCJOUE0gcGFja2FnZSBub3QgZm91bmQuXCIpO1xuICAgICAgaWYgKGRlcFBhY2thZ2UubmFtZSA9PT0gbmFtZSkgcmV0dXJuIGRlcDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gbGlua1JlY3Vyc2l2ZShmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcpIHtcbiAgY29uc3QgZnJvbVN0YXQgPSBhd2FpdCBEZW5vLnN0YXQoZnJvbSk7XG4gIGlmIChmcm9tU3RhdC5pc0RpcmVjdG9yeSkge1xuICAgIGF3YWl0IERlbm8ubWtkaXIodG8sIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIGZvciBhd2FpdCAoY29uc3QgZW50cnkgb2YgRGVuby5yZWFkRGlyKGZyb20pKSB7XG4gICAgICBhd2FpdCBsaW5rUmVjdXJzaXZlKGpvaW4oZnJvbSwgZW50cnkubmFtZSksIGpvaW4odG8sIGVudHJ5Lm5hbWUpKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgRGVuby5saW5rKGZyb20sIHRvKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLFNBQVMsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLFFBQVEsdUJBQXVCO0FBQ2xFLFNBQVMsWUFBWSxRQUFRLG1DQUFtQztBQUNoRSxTQUFTLGlCQUFpQixRQUFRLHdCQUF3QjtBQUMxRCxZQUFZLFVBQVUsWUFBWTtBQUNsQyxTQUFTLFFBQVEsUUFBNkIsWUFBWTtBQUMxRCxTQUdFLGNBQWMsRUFDZCxzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLGlCQUFpQixRQUNaLGNBQWM7QUFFckIsSUFBSTtBQUVKLE9BQU8sTUFBTSxzQkFBc0IsSUFBSSxjQUNwQyxNQUFNLENBQUMsMkJBQTJCO0FBTXJDLE9BQU8sTUFBTTtFQUNYLENBQUEsb0JBQXFCLENBQVU7RUFDL0IsQ0FBQSxTQUFVLENBQWlCO0VBQzNCLENBQUEsWUFBYSxHQUF3QixJQUFJLE1BQU07RUFFL0MsWUFBWSxPQUE0QixDQUFFO0lBQ3hDLElBQUksQ0FBQyxDQUFBLG9CQUFxQixHQUN4QixRQUFRLFdBQVcsRUFBRSxtQkFBbUI7SUFDMUMsSUFBSSxDQUFDLENBQUEsU0FBVSxHQUFHLElBQUksS0FBSyxTQUFTLENBQUMsUUFBUSxXQUFXO0VBQzFEO0VBRUEsTUFBTSxRQUFRLFNBQWMsRUFBNkI7SUFD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 +// denoCacheMetadata=15689869681735189896,9549277198012329747
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/3fd7f5223bf8f7e17fa4352df42656f2cb2af8814dc41c8b3fe39fb7840a8449.js b/vendor/gen/https/jsr.io/3fd7f5223bf8f7e17fa4352df42656f2cb2af8814dc41c8b3fe39fb7840a8449.js new file mode 100644 index 0000000..e30515d --- /dev/null +++ b/vendor/gen/https/jsr.io/3fd7f5223bf8f7e17fa4352df42656f2cb2af8814dc41c8b3fe39fb7840a8449.js @@ -0,0 +1,207 @@ +var _computedKey; +import { fromFileUrl } from "jsr:@std/path@^1.0.6"; +import { mapContentType, mediaTypeToLoader, parseJsrSpecifier, parseNpmSpecifier } from "./shared.ts"; +import { instantiate } from "./wasm/loader.generated.js"; +const JSR_URL = Deno.env.get("JSR_URL") ?? "https://jsr.io"; +async function readLockfile(path) { + try { + const data = await Deno.readTextFile(path); + const instance = instantiate(); + return new instance.WasmLockfile(path, data); + } catch (err) { + if (err instanceof Deno.errors.NotFound) { + return null; + } + throw err; + } +} +_computedKey = Symbol.dispose; +export class PortableLoader { + #options; + #fetchOngoing = new Map(); + #lockfile; + #fetchModules = new Map(); + #fetchRedirects = new Map(); + constructor(options){ + this.#options = options; + } + [_computedKey]() { + if (this.#lockfile != null && "free" in this.#lockfile) { + this.#lockfile.free(); + } + } + async resolve(specifier) { + switch(specifier.protocol){ + case "file:": + { + return { + kind: "esm", + specifier + }; + } + case "http:": + case "https:": + case "data:": + { + const module = await this.#loadRemote(specifier.href); + return { + kind: "esm", + specifier: new URL(module.specifier) + }; + } + case "npm:": + { + const npmSpecifier = parseNpmSpecifier(specifier); + return { + kind: "npm", + packageId: "", + packageName: npmSpecifier.name, + path: npmSpecifier.path ?? "" + }; + } + case "node:": + { + return { + kind: "node", + path: specifier.pathname + }; + } + case "jsr:": + { + const resolvedSpecifier = await this.#resolveJsrSpecifier(specifier); + return { + kind: "esm", + specifier: resolvedSpecifier + }; + } + default: + throw new Error(`Unsupported scheme: '${specifier.protocol}'`); + } + } + async #resolveJsrSpecifier(specifier) { + // parse the JSR specifier. + const jsrSpecifier = parseJsrSpecifier(specifier); + // Attempt to load the lockfile. + if (this.#lockfile === undefined) { + this.#lockfile = typeof this.#options.lock === "string" ? readLockfile(this.#options.lock) : null; + } + if (this.#lockfile instanceof Promise) { + this.#lockfile = await this.#lockfile; + } + if (this.#lockfile === null) { + throw new Error("jsr: specifiers are not supported in the portable loader without a lockfile"); + } + const lockfile = this.#lockfile; + // Look up the package + constraint in the lockfile. + const id = `jsr:${jsrSpecifier.name}${jsrSpecifier.version ? `@${jsrSpecifier.version}` : ""}`; + const resolvedVersion = lockfile.package_version(id); + if (!resolvedVersion) { + throw new Error(`Specifier not found in lockfile: ${id}`); + } + // Load the JSR manifest to find the export path. + const manifestUrl = new URL(`./${jsrSpecifier.name}/${resolvedVersion}_meta.json`, JSR_URL); + const manifest = await this.#loadRemote(manifestUrl.href); + if (manifest.mediaType !== "Json") { + throw new Error(`Expected JSON media type for JSR manifest, got: ${manifest.mediaType}`); + } + const manifestData = new TextDecoder().decode(manifest.data); + const manifestJson = JSON.parse(manifestData); + // Look up the export path in the manifest. + const exportEntry = `.${jsrSpecifier.path ?? ""}`; + const exportPath = manifestJson.exports[exportEntry]; + if (!exportPath) { + throw new Error(`Package 'jsr:${jsrSpecifier.name}@${resolvedVersion}' has no export named '${exportEntry}'`); + } + // Return the resolved URL. + return new URL(`./${jsrSpecifier.name}/${resolvedVersion}/${exportPath}`, JSR_URL); + } + async loadEsm(url) { + let module; + switch(url.protocol){ + case "file:": + { + module = await this.#loadLocal(url); + break; + } + case "http:": + case "https:": + case "data:": + { + module = await this.#loadRemote(url.href); + break; + } + default: + throw new Error("[unreachable] unsupported esm scheme " + url.protocol); + } + const loader = mediaTypeToLoader(module.mediaType); + if (loader === null) return undefined; + const res = { + contents: module.data, + loader + }; + if (url.protocol === "file:") { + res.watchFiles = [ + fromFileUrl(module.specifier) + ]; + } + return res; + } + #resolveRemote(specifier) { + return this.#fetchRedirects.get(specifier) ?? specifier; + } + async #loadRemote(specifier) { + for(let i = 0; i < 10; i++){ + specifier = this.#resolveRemote(specifier); + const module = this.#fetchModules.get(specifier); + if (module) return module; + let promise = this.#fetchOngoing.get(specifier); + if (!promise) { + promise = this.#fetch(specifier); + this.#fetchOngoing.set(specifier, promise); + } + await promise; + } + throw new Error("Too many redirects. Last one: " + specifier); + } + async #fetch(specifier) { + const resp = await fetch(specifier, { + redirect: "manual" + }); + if (resp.status < 200 && resp.status >= 400) { + throw new Error(`Encountered status code ${resp.status} while fetching ${specifier}.`); + } + if (resp.status >= 300 && resp.status < 400) { + await resp.body?.cancel(); + const location = resp.headers.get("location"); + if (!location) { + throw new Error(`Redirected without location header while fetching ${specifier}.`); + } + const url = new URL(location, specifier); + if (url.protocol !== "https:" && url.protocol !== "http:") { + throw new Error(`Redirected to unsupported protocol '${url.protocol}' while fetching ${specifier}.`); + } + this.#fetchRedirects.set(specifier, url.href); + return; + } + const contentType = resp.headers.get("content-type"); + const mediaType = mapContentType(new URL(specifier), contentType); + const data = new Uint8Array(await resp.arrayBuffer()); + this.#fetchModules.set(specifier, { + specifier, + mediaType, + data + }); + } + async #loadLocal(specifier) { + const path = fromFileUrl(specifier); + const mediaType = mapContentType(specifier, null); + const data = await Deno.readFile(path); + return { + specifier: specifier.href, + mediaType, + data + }; + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BsdWNhL2VzYnVpbGQtZGVuby1sb2FkZXIvMC4xMS4xL3NyYy9sb2FkZXJfcG9ydGFibGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBlc2J1aWxkIGZyb20gXCIuL2VzYnVpbGRfdHlwZXMudHNcIjtcbmltcG9ydCB7IGZyb21GaWxlVXJsIH0gZnJvbSBcImpzcjpAc3RkL3BhdGhAXjEuMC42XCI7XG5pbXBvcnQgdHlwZSAqIGFzIGRlbm8gZnJvbSBcIi4vZGVuby50c1wiO1xuaW1wb3J0IHtcbiAgdHlwZSBMb2FkZXIsXG4gIHR5cGUgTG9hZGVyUmVzb2x1dGlvbixcbiAgbWFwQ29udGVudFR5cGUsXG4gIG1lZGlhVHlwZVRvTG9hZGVyLFxuICBwYXJzZUpzclNwZWNpZmllcixcbiAgcGFyc2VOcG1TcGVjaWZpZXIsXG59IGZyb20gXCIuL3NoYXJlZC50c1wiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGUsIHR5cGUgV2FzbUxvY2tmaWxlIH0gZnJvbSBcIi4vd2FzbS9sb2FkZXIuZ2VuZXJhdGVkLmpzXCI7XG5cbmludGVyZmFjZSBNb2R1bGUge1xuICBzcGVjaWZpZXI6IHN0cmluZztcbiAgbWVkaWFUeXBlOiBkZW5vLk1lZGlhVHlwZTtcbiAgZGF0YTogVWludDhBcnJheTtcbn1cblxuY29uc3QgSlNSX1VSTCA9IERlbm8uZW52LmdldChcIkpTUl9VUkxcIikgPz8gXCJodHRwczovL2pzci5pb1wiO1xuXG5hc3luYyBmdW5jdGlvbiByZWFkTG9ja2ZpbGUocGF0aDogc3RyaW5nKTogUHJvbWlzZTxXYXNtTG9ja2ZpbGUgfCBudWxsPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IERlbm8ucmVhZFRleHRGaWxlKHBhdGgpO1xuICAgIGNvbnN0IGluc3RhbmNlID0gaW5zdGFudGlhdGUoKTtcbiAgICByZXR1cm4gbmV3IGluc3RhbmNlLldhc21Mb2NrZmlsZShwYXRoLCBkYXRhKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIERlbm8uZXJyb3JzLk5vdEZvdW5kKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbmludGVyZmFjZSBQb3J0YWJsZUxvYWRlck9wdGlvbnMge1xuICBsb2NrPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgUG9ydGFibGVMb2FkZXIgaW1wbGVtZW50cyBMb2FkZXIsIERpc3Bvc2FibGUge1xuICAjb3B0aW9uczogUG9ydGFibGVMb2FkZXJPcHRpb25zO1xuICAjZmV0Y2hPbmdvaW5nID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8dm9pZD4+KCk7XG4gICNsb2NrZmlsZTogUHJvbWlzZTxXYXNtTG9ja2ZpbGUgfCBudWxsPiB8IFdhc21Mb2NrZmlsZSB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgI2ZldGNoTW9kdWxlcyA9IG5ldyBNYXA8c3RyaW5nLCBNb2R1bGU+KCk7XG4gICNmZXRjaFJlZGlyZWN0cyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogUG9ydGFibGVMb2FkZXJPcHRpb25zKSB7XG4gICAgdGhpcy4jb3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICBbU3ltYm9sLmRpc3Bvc2VdKCkge1xuICAgIGlmICh0aGlzLiNsb2NrZmlsZSAhPSBudWxsICYmIFwiZnJlZVwiIGluIHRoaXMuI2xvY2tmaWxlKSB7XG4gICAgICB0aGlzLiNsb2NrZmlsZS5mcmVlKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVzb2x2ZShzcGVjaWZpZXI6IFVSTCk6IFByb21pc2U8TG9hZGVyUmVzb2x1dGlvbj4ge1xuICAgIHN3aXRjaCAoc3BlY2lmaWVyLnByb3RvY29sKSB7XG4gICAgICBjYXNlIFwiZmlsZTpcIjoge1xuICAgICAgICByZXR1cm4geyBraW5kOiBcImVzbVwiLCBzcGVjaWZpZXIgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJodHRwOlwiOlxuICAgICAgY2FzZSBcImh0dHBzOlwiOlxuICAgICAgY2FzZSBcImRhdGE6XCI6IHtcbiAgICAgICAgY29uc3QgbW9kdWxlID0gYXdhaXQgdGhpcy4jbG9hZFJlbW90ZShzcGVjaWZpZXIuaHJlZik7XG4gICAgICAgIHJldHVybiB7IGtpbmQ6IFwiZXNtXCIsIHNwZWNpZmllcjogbmV3IFVSTChtb2R1bGUuc3BlY2lmaWVyKSB9O1xuICAgICAgfVxuICAgICAgY2FzZSBcIm5wbTpcIjoge1xuICAgICAgICBjb25zdCBucG1TcGVjaWZpZXIgPSBwYXJzZU5wbVNwZWNpZmllcihzcGVjaWZpZXIpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGtpbmQ6IFwibnBtXCIsXG4gICAgICAgICAgcGFja2FnZUlkOiBcIlwiLFxuICAgICAgICAgIHBhY2thZ2VOYW1lOiBucG1TcGVjaWZpZXIubmFtZSxcbiAgICAgICAgICBwYXRoOiBucG1TcGVjaWZpZXIucGF0aCA/PyBcIlwiLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY2FzZSBcIm5vZGU6XCI6IHtcbiAgICAgICAgcmV0dXJuIHsga2luZDogXCJub2RlXCIsIHBhdGg6IHNwZWNpZmllci5wYXRobmFtZSB9O1xuICAgICAgfVxuICAgICAgY2FzZSBcImpzcjpcIjoge1xuICAgICAgICBjb25zdCByZXNvbHZlZFNwZWNpZmllciA9IGF3YWl0IHRoaXMuI3Jlc29sdmVKc3JTcGVjaWZpZXIoc3BlY2lmaWVyKTtcbiAgICAgICAgcmV0dXJuIHsga2luZDogXCJlc21cIiwgc3BlY2lmaWVyOiByZXNvbHZlZFNwZWNpZmllciB9O1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBzY2hlbWU6ICcke3NwZWNpZmllci5wcm90b2NvbH0nYCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgI3Jlc29sdmVKc3JTcGVjaWZpZXIoc3BlY2lmaWVyOiBVUkwpOiBQcm9taXNlPFVSTD4ge1xuICAgIC8vIHBhcnNlIHRoZSBKU1Igc3BlY2lmaWVyLlxuICAgIGNvbnN0IGpzclNwZWNpZmllciA9IHBhcnNlSnNyU3BlY2lmaWVyKHNwZWNpZmllcik7XG5cbiAgICAvLyBBdHRlbXB0IHRvIGxvYWQgdGhlIGxvY2tmaWxlLlxuICAgIGlmICh0aGlzLiNsb2NrZmlsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLiNsb2NrZmlsZSA9IHR5cGVvZiB0aGlzLiNvcHRpb25zLmxvY2sgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyByZWFkTG9ja2ZpbGUodGhpcy4jb3B0aW9ucy5sb2NrKVxuICAgICAgICA6IG51bGw7XG4gICAgfVxuICAgIGlmICh0aGlzLiNsb2NrZmlsZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgIHRoaXMuI2xvY2tmaWxlID0gYXdhaXQgdGhpcy4jbG9ja2ZpbGU7XG4gICAgfVxuICAgIGlmICh0aGlzLiNsb2NrZmlsZSA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcImpzcjogc3BlY2lmaWVycyBhcmUgbm90IHN1cHBvcnRlZCBpbiB0aGUgcG9ydGFibGUgbG9hZGVyIHdpdGhvdXQgYSBsb2NrZmlsZVwiLFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgbG9ja2ZpbGUgPSB0aGlzLiNsb2NrZmlsZTtcbiAgICAvLyBMb29rIHVwIHRoZSBwYWNrYWdlICsgY29uc3RyYWludCBpbiB0aGUgbG9ja2ZpbGUuXG4gICAgY29uc3QgaWQgPSBganNyOiR7anNyU3BlY2lmaWVyLm5hbWV9JHtcbiAgICAgIGpzclNwZWNpZmllci52ZXJzaW9uID8gYEAke2pzclNwZWNpZmllci52ZXJzaW9ufWAgOiBcIlwiXG4gICAgfWA7XG4gICAgY29uc3QgcmVzb2x2ZWRWZXJzaW9uID0gbG9ja2ZpbGUucGFja2FnZV92ZXJzaW9uKGlkKTtcbiAgICBpZiAoIXJlc29sdmVkVmVyc2lvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTcGVjaWZpZXIgbm90IGZvdW5kIGluIGxvY2tmaWxlOiAke2lkfWApO1xuICAgIH1cblxuICAgIC8vIExvYWQgdGhlIEpTUiBtYW5pZmVzdCB0byBmaW5kIHRoZSBleHBvcnQgcGF0aC5cbiAgICBjb25zdCBtYW5pZmVzdFVybCA9IG5ldyBVUkwoXG4gICAgICBgLi8ke2pzclNwZWNpZmllci5uYW1lfS8ke3Jlc29sdmVkVmVyc2lvbn1fbWV0YS5qc29uYCxcbiAgICAgIEpTUl9VUkwsXG4gICAgKTtcbiAgICBjb25zdCBtYW5pZmVzdCA9IGF3YWl0IHRoaXMuI2xvYWRSZW1vdGUobWFuaWZlc3RVcmwuaHJlZik7XG4gICAgaWYgKG1hbmlmZXN0Lm1lZGlhVHlwZSAhPT0gXCJKc29uXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEV4cGVjdGVkIEpTT04gbWVkaWEgdHlwZSBmb3IgSlNSIG1hbmlmZXN0LCBnb3Q6ICR7bWFuaWZlc3QubWVkaWFUeXBlfWAsXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBtYW5pZmVzdERhdGEgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUobWFuaWZlc3QuZGF0YSk7XG4gICAgY29uc3QgbWFuaWZlc3RKc29uID0gSlNPTi5wYXJzZShtYW5pZmVzdERhdGEpO1xuXG4gICAgLy8gTG9vayB1cCB0aGUgZXhwb3J0IHBhdGggaW4gdGhlIG1hbmlmZXN0LlxuICAgIGNvbnN0IGV4cG9ydEVudHJ5ID0gYC4ke2pzclNwZWNpZmllci5wYXRoID8/IFwiXCJ9YDtcbiAgICBjb25zdCBleHBvcnRQYXRoID0gbWFuaWZlc3RKc29uLmV4cG9ydHNbZXhwb3J0RW50cnldO1xuICAgIGlmICghZXhwb3J0UGF0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgUGFja2FnZSAnanNyOiR7anNyU3BlY2lmaWVyLm5hbWV9QCR7cmVzb2x2ZWRWZXJzaW9ufScgaGFzIG5vIGV4cG9ydCBuYW1lZCAnJHtleHBvcnRFbnRyeX0nYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHRoZSByZXNvbHZlZCBVUkwuXG4gICAgcmV0dXJuIG5ldyBVUkwoXG4gICAgICBgLi8ke2pzclNwZWNpZmllci5uYW1lfS8ke3Jlc29sdmVkVmVyc2lvbn0vJHtleHBvcnRQYXRofWAsXG4gICAgICBKU1JfVVJMLFxuICAgICk7XG4gIH1cblxuICBhc3luYyBsb2FkRXNtKHVybDogVVJMKTogUHJvbWlzZTxlc2J1aWxkLk9uTG9hZFJlc3VsdCB8IHVuZGVmaW5lZD4ge1xuICAgIGxldCBtb2R1bGU6IE1vZHVsZTtcbiAgICBzd2l0Y2ggKHVybC5wcm90b2NvbCkge1xuICAgICAgY2FzZSBcImZpbGU6XCI6IHtcbiAgICAgICAgbW9kdWxlID0gYXdhaXQgdGhpcy4jbG9hZExvY2FsKHVybCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBcImh0dHA6XCI6XG4gICAgICBjYXNlIFwiaHR0cHM6XCI6XG4gICAgICBjYXNlIFwiZGF0YTpcIjoge1xuICAgICAgICBtb2R1bGUgPSBhd2FpdCB0aGlzLiNsb2FkUmVtb3RlKHVybC5ocmVmKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJbdW5yZWFjaGFibGVdIHVuc3VwcG9ydGVkIGVzbSBzY2hlbWUgXCIgKyB1cmwucHJvdG9jb2wpO1xuICAgIH1cblxuICAgIGNvbnN0IGxvYWRlciA9IG1lZGlhVHlwZVRvTG9hZGVyKG1vZHVsZS5tZWRpYVR5cGUpO1xuICAgIGlmIChsb2FkZXIgPT09IG51bGwpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCByZXM6IGVzYnVpbGQuT25Mb2FkUmVzdWx0ID0geyBjb250ZW50czogbW9kdWxlLmRhdGEsIGxvYWRlciB9O1xuICAgIGlmICh1cmwucHJvdG9jb2wgPT09IFwiZmlsZTpcIikge1xuICAgICAgcmVzLndhdGNoRmlsZXMgPSBbZnJvbUZpbGVVcmwobW9kdWxlLnNwZWNpZmllcildO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgI3Jlc29sdmVSZW1vdGUoc3BlY2lmaWVyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNmZXRjaFJlZGlyZWN0cy5nZXQoc3BlY2lmaWVyKSA/PyBzcGVjaWZpZXI7XG4gIH1cblxuICBhc3luYyAjbG9hZFJlbW90ZShzcGVjaWZpZXI6IHN0cmluZyk6IFByb21pc2U8TW9kdWxlPiB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG4gICAgICBzcGVjaWZpZXIgPSB0aGlzLiNyZXNvbHZlUmVtb3RlKHNwZWNpZmllcik7XG4gICAgICBjb25zdCBtb2R1bGUgPSB0aGlzLiNmZXRjaE1vZHVsZXMuZ2V0KHNwZWNpZmllcik7XG4gICAgICBpZiAobW9kdWxlKSByZXR1cm4gbW9kdWxlO1xuXG4gICAgICBsZXQgcHJvbWlzZSA9IHRoaXMuI2ZldGNoT25nb2luZy5nZXQoc3BlY2lmaWVyKTtcbiAgICAgIGlmICghcHJvbWlzZSkge1xuICAgICAgICBwcm9taXNlID0gdGhpcy4jZmV0Y2goc3BlY2lmaWVyKTtcbiAgICAgICAgdGhpcy4jZmV0Y2hPbmdvaW5nLnNldChzcGVjaWZpZXIsIHByb21pc2UpO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBwcm9taXNlO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihcIlRvbyBtYW55IHJlZGlyZWN0cy4gTGFzdCBvbmU6IFwiICsgc3BlY2lmaWVyKTtcbiAgfVxuXG4gIGFzeW5jICNmZXRjaChzcGVjaWZpZXI6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBmZXRjaChzcGVjaWZpZXIsIHtcbiAgICAgIHJlZGlyZWN0OiBcIm1hbnVhbFwiLFxuICAgIH0pO1xuICAgIGlmIChyZXNwLnN0YXR1cyA8IDIwMCAmJiByZXNwLnN0YXR1cyA+PSA0MDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEVuY291bnRlcmVkIHN0YXR1cyBjb2RlICR7cmVzcC5zdGF0dXN9IHdoaWxlIGZldGNoaW5nICR7c3BlY2lmaWVyfS5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocmVzcC5zdGF0dXMgPj0gMzAwICYmIHJlc3Auc3RhdHVzIDwgNDAwKSB7XG4gICAgICBhd2FpdCByZXNwLmJvZHk/LmNhbmNlbCgpO1xuICAgICAgY29uc3QgbG9jYXRpb24gPSByZXNwLmhlYWRlcnMuZ2V0KFwibG9jYXRpb25cIik7XG4gICAgICBpZiAoIWxvY2F0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgUmVkaXJlY3RlZCB3aXRob3V0IGxvY2F0aW9uIGhlYWRlciB3aGlsZSBmZXRjaGluZyAke3NwZWNpZmllcn0uYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdXJsID0gbmV3IFVSTChsb2NhdGlvbiwgc3BlY2lmaWVyKTtcbiAgICAgIGlmICh1cmwucHJvdG9jb2wgIT09IFwiaHR0cHM6XCIgJiYgdXJsLnByb3RvY29sICE9PSBcImh0dHA6XCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBSZWRpcmVjdGVkIHRvIHVuc3VwcG9ydGVkIHByb3RvY29sICcke3VybC5wcm90b2NvbH0nIHdoaWxlIGZldGNoaW5nICR7c3BlY2lmaWVyfS5gLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiNmZXRjaFJlZGlyZWN0cy5zZXQoc3BlY2lmaWVyLCB1cmwuaHJlZik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29udGVudFR5cGUgPSByZXNwLmhlYWRlcnMuZ2V0KFwiY29udGVudC10eXBlXCIpO1xuICAgIGNvbnN0IG1lZGlhVHlwZSA9IG1hcENvbnRlbnRUeXBlKG5ldyBVUkwoc3BlY2lmaWVyKSwgY29udGVudFR5cGUpO1xuXG4gICAgY29uc3QgZGF0YSA9IG5ldyBVaW50OEFycmF5KGF3YWl0IHJlc3AuYXJyYXlCdWZmZXIoKSk7XG4gICAgdGhpcy4jZmV0Y2hNb2R1bGVzLnNldChzcGVjaWZpZXIsIHtcbiAgICAgIHNwZWNpZmllcixcbiAgICAgIG1lZGlhVHlwZSxcbiAgICAgIGRhdGEsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyAjbG9hZExvY2FsKHNwZWNpZmllcjogVVJMKTogUHJvbWlzZTxNb2R1bGU+IHtcbiAgICBjb25zdCBwYXRoID0gZnJvbUZpbGVVcmwoc3BlY2lmaWVyKTtcblxuICAgIGNvbnN0IG1lZGlhVHlwZSA9IG1hcENvbnRlbnRUeXBlKHNwZWNpZmllciwgbnVsbCk7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IERlbm8ucmVhZEZpbGUocGF0aCk7XG5cbiAgICByZXR1cm4geyBzcGVjaWZpZXI6IHNwZWNpZmllci5ocmVmLCBtZWRpYVR5cGUsIGRhdGEgfTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxTQUFTLFdBQVcsUUFBUSx1QkFBdUI7QUFFbkQsU0FHRSxjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixpQkFBaUIsUUFDWixjQUFjO0FBQ3JCLFNBQVMsV0FBVyxRQUEyQiw2QkFBNkI7QUFRNUUsTUFBTSxVQUFVLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxjQUFjO0FBRTNDLGVBQWUsYUFBYSxJQUFZO0VBQ3RDLElBQUk7SUFDRixNQUFNLE9BQU8sTUFBTSxLQUFLLFlBQVksQ0FBQztJQUNyQyxNQUFNLFdBQVc7SUFDakIsT0FBTyxJQUFJLFNBQVMsWUFBWSxDQUFDLE1BQU07RUFDekMsRUFBRSxPQUFPLEtBQUs7SUFDWixJQUFJLGVBQWUsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFO01BQ3ZDLE9BQU87SUFDVDtJQUNBLE1BQU07RUFDUjtBQUNGO2VBa0JHLE9BQU8sT0FBTztBQVpqQixPQUFPLE1BQU07RUFDWCxDQUFBLE9BQVEsQ0FBd0I7RUFDaEMsQ0FB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 +// denoCacheMetadata=10249730758844449979,1595942036382499316
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/3ffe5517419da88b6c9199c98b1503003f5949fdc374e53d8e49fab827d55edf.js b/vendor/gen/https/jsr.io/3ffe5517419da88b6c9199c98b1503003f5949fdc374e53d8e49fab827d55edf.js new file mode 100644 index 0000000..ce8edc7 --- /dev/null +++ b/vendor/gen/https/jsr.io/3ffe5517419da88b6c9199c98b1503003f5949fdc374e53d8e49fab827d55edf.js @@ -0,0 +1,36 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { CHAR_COLON } from "../_common/constants.ts"; +import { assertPath } from "../_common/assert_path.ts"; +import { isPathSeparator, isWindowsDeviceRoot } from "./_util.ts"; +/** + * Verifies whether provided path is absolute. + * + * @example Usage + * ```ts + * import { isAbsolute } from "@std/path/windows/is-absolute"; + * import { assert, assertFalse } from "@std/assert"; + * + * assert(isAbsolute("C:\\foo\\bar")); + * assertFalse(isAbsolute("..\\baz")); + * ``` + * + * @param path The path to verify. + * @returns `true` if the path is absolute, `false` otherwise. + */ export function isAbsolute(path) { + assertPath(path); + const len = path.length; + if (len === 0) return false; + const code = path.charCodeAt(0); + if (isPathSeparator(code)) { + return true; + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + if (len > 2 && path.charCodeAt(1) === CHAR_COLON) { + if (isPathSeparator(path.charCodeAt(2))) return true; + } + } + return false; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS93aW5kb3dzL2lzX2Fic29sdXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IENIQVJfQ09MT04gfSBmcm9tIFwiLi4vX2NvbW1vbi9jb25zdGFudHMudHNcIjtcbmltcG9ydCB7IGFzc2VydFBhdGggfSBmcm9tIFwiLi4vX2NvbW1vbi9hc3NlcnRfcGF0aC50c1wiO1xuaW1wb3J0IHsgaXNQYXRoU2VwYXJhdG9yLCBpc1dpbmRvd3NEZXZpY2VSb290IH0gZnJvbSBcIi4vX3V0aWwudHNcIjtcblxuLyoqXG4gKiBWZXJpZmllcyB3aGV0aGVyIHByb3ZpZGVkIHBhdGggaXMgYWJzb2x1dGUuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBpc0Fic29sdXRlIH0gZnJvbSBcIkBzdGQvcGF0aC93aW5kb3dzL2lzLWFic29sdXRlXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnQsIGFzc2VydEZhbHNlIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogYXNzZXJ0KGlzQWJzb2x1dGUoXCJDOlxcXFxmb29cXFxcYmFyXCIpKTtcbiAqIGFzc2VydEZhbHNlKGlzQWJzb2x1dGUoXCIuLlxcXFxiYXpcIikpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gdmVyaWZ5LlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBwYXRoIGlzIGFic29sdXRlLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQWJzb2x1dGUocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgY29uc3QgbGVuID0gcGF0aC5sZW5ndGg7XG4gIGlmIChsZW4gPT09IDApIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KDApO1xuICBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoaXNXaW5kb3dzRGV2aWNlUm9vdChjb2RlKSkge1xuICAgIC8vIFBvc3NpYmxlIGRldmljZSByb290XG5cbiAgICBpZiAobGVuID4gMiAmJiBwYXRoLmNoYXJDb2RlQXQoMSkgPT09IENIQVJfQ09MT04pIHtcbiAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDIpKSkgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDLFNBQVMsVUFBVSxRQUFRLDBCQUEwQjtBQUNyRCxTQUFTLFVBQVUsUUFBUSw0QkFBNEI7QUFDdkQsU0FBUyxlQUFlLEVBQUUsbUJBQW1CLFFBQVEsYUFBYTtBQUVsRTs7Ozs7Ozs7Ozs7Ozs7Q0FjQyxHQUNELE9BQU8sU0FBUyxXQUFXLElBQVk7RUFDckMsV0FBVztFQUVYLE1BQU0sTUFBTSxLQUFLLE1BQU07RUFDdkIsSUFBSSxRQUFRLEdBQUcsT0FBTztFQUV0QixNQUFNLE9BQU8sS0FBSyxVQUFVLENBQUM7RUFDN0IsSUFBSSxnQkFBZ0IsT0FBTztJQUN6QixPQUFPO0VBQ1QsT0FBTyxJQUFJLG9CQUFvQixPQUFPO0lBQ3BDLHVCQUF1QjtJQUV2QixJQUFJLE1BQU0sS0FBSyxLQUFLLFVBQVUsQ0FBQyxPQUFPLFlBQVk7TUFDaEQsSUFBSSxnQkFBZ0IsS0FBSyxVQUFVLENBQUMsS0FBSyxPQUFPO0lBQ2xEO0VBQ0Y7RUFDQSxPQUFPO0FBQ1QifQ== +// denoCacheMetadata=14927809252854127484,7814470929840190456
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/41634e30ec873a003c71f1c2c33ec4d9f83a9e44a01d6ca60d3ef06b4db00bbe.js b/vendor/gen/https/jsr.io/41634e30ec873a003c71f1c2c33ec4d9f83a9e44a01d6ca60d3ef06b4db00bbe.js new file mode 100644 index 0000000..8b2dda0 --- /dev/null +++ b/vendor/gen/https/jsr.io/41634e30ec873a003c71f1c2c33ec4d9f83a9e44a01d6ca60d3ef06b4db00bbe.js @@ -0,0 +1,29 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { _format, assertArg } from "../_common/format.ts"; +/** + * Generate a path from `ParsedPath` object. + * + * @example Usage + * ```ts + * import { format } from "@std/path/posix/format"; + * import { assertEquals } from "@std/assert"; + * + * const path = format({ + * root: "/", + * dir: "/path/dir", + * base: "file.txt", + * ext: ".txt", + * name: "file" + * }); + * assertEquals(path, "/path/dir/file.txt"); + * ``` + * + * @param pathObject The path object to format. + * @returns The formatted path. + */ export function format(pathObject) { + assertArg(pathObject); + return _format("/", pathObject); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9wb3NpeC9mb3JtYXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgX2Zvcm1hdCwgYXNzZXJ0QXJnIH0gZnJvbSBcIi4uL19jb21tb24vZm9ybWF0LnRzXCI7XG5pbXBvcnQgdHlwZSB7IFBhcnNlZFBhdGggfSBmcm9tIFwiLi4vdHlwZXMudHNcIjtcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHBhdGggZnJvbSBgUGFyc2VkUGF0aGAgb2JqZWN0LlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSBcIkBzdGQvcGF0aC9wb3NpeC9mb3JtYXRcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IHBhdGggPSBmb3JtYXQoe1xuICogICByb290OiBcIi9cIixcbiAqICAgZGlyOiBcIi9wYXRoL2RpclwiLFxuICogICBiYXNlOiBcImZpbGUudHh0XCIsXG4gKiAgIGV4dDogXCIudHh0XCIsXG4gKiAgIG5hbWU6IFwiZmlsZVwiXG4gKiB9KTtcbiAqIGFzc2VydEVxdWFscyhwYXRoLCBcIi9wYXRoL2Rpci9maWxlLnR4dFwiKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBwYXRoT2JqZWN0IFRoZSBwYXRoIG9iamVjdCB0byBmb3JtYXQuXG4gKiBAcmV0dXJucyBUaGUgZm9ybWF0dGVkIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXQocGF0aE9iamVjdDogUGFydGlhbDxQYXJzZWRQYXRoPik6IHN0cmluZyB7XG4gIGFzc2VydEFyZyhwYXRoT2JqZWN0KTtcbiAgcmV0dXJuIF9mb3JtYXQoXCIvXCIsIHBhdGhPYmplY3QpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckMsU0FBUyxPQUFPLEVBQUUsU0FBUyxRQUFRLHVCQUF1QjtBQUcxRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FvQkMsR0FDRCxPQUFPLFNBQVMsT0FBTyxVQUErQjtFQUNwRCxVQUFVO0VBQ1YsT0FBTyxRQUFRLEtBQUs7QUFDdEIifQ== +// denoCacheMetadata=7276974405939404592,809671434988164050
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/420abd08837ee239adf5e93b512dc8b414bd03aaa189f0eb845fbd299b8b6a78.js b/vendor/gen/https/jsr.io/420abd08837ee239adf5e93b512dc8b414bd03aaa189f0eb845fbd299b8b6a78.js new file mode 100644 index 0000000..f20e02b --- /dev/null +++ b/vendor/gen/https/jsr.io/420abd08837ee239adf5e93b512dc8b414bd03aaa189f0eb845fbd299b8b6a78.js @@ -0,0 +1,95 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { isPosixPathSeparator } from "./_util.ts"; +import { resolve } from "./resolve.ts"; +import { assertArgs } from "../_common/relative.ts"; +/** + * Return the relative path from `from` to `to` based on current working directory. + * + * If `from` and `to` are the same, return an empty string. + * + * @example Usage + * ```ts + * import { relative } from "@std/path/posix/relative"; + * import { assertEquals } from "@std/assert"; + * + * const path = relative("/data/orandea/test/aaa", "/data/orandea/impl/bbb"); + * assertEquals(path, "../../impl/bbb"); + * ``` + * + * @param from The path to start from. + * @param to The path to reach. + * @returns The relative path. + */ export function relative(from, to) { + assertArgs(from, to); + from = resolve(from); + to = resolve(to); + if (from === to) return ""; + // Trim any leading backslashes + let fromStart = 1; + const fromEnd = from.length; + for(; fromStart < fromEnd; ++fromStart){ + if (!isPosixPathSeparator(from.charCodeAt(fromStart))) break; + } + const fromLen = fromEnd - fromStart; + // Trim any leading backslashes + let toStart = 1; + const toEnd = to.length; + for(; toStart < toEnd; ++toStart){ + if (!isPosixPathSeparator(to.charCodeAt(toStart))) break; + } + const toLen = toEnd - toStart; + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for(; i <= length; ++i){ + if (i === length) { + if (toLen > length) { + if (isPosixPathSeparator(to.charCodeAt(toStart + i))) { + // We get here if `from` is the exact base path for `to`. + // For example: from='/foo/bar'; to='/foo/bar/baz' + return to.slice(toStart + i + 1); + } else if (i === 0) { + // We get here if `from` is the root + // For example: from='/'; to='/foo' + return to.slice(toStart + i); + } + } else if (fromLen > length) { + if (isPosixPathSeparator(from.charCodeAt(fromStart + i))) { + // We get here if `to` is the exact base path for `from`. + // For example: from='/foo/bar/baz'; to='/foo/bar' + lastCommonSep = i; + } else if (i === 0) { + // We get here if `to` is the root. + // For example: from='/foo'; to='/' + lastCommonSep = 0; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (isPosixPathSeparator(fromCode)) lastCommonSep = i; + } + let out = ""; + // Generate the relative path based on the path difference between `to` + // and `from` + for(i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i){ + if (i === fromEnd || isPosixPathSeparator(from.charCodeAt(i))) { + if (out.length === 0) out += ".."; + else out += "/.."; + } + } + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) return out + to.slice(toStart + lastCommonSep); + else { + toStart += lastCommonSep; + if (isPosixPathSeparator(to.charCodeAt(toStart))) ++toStart; + return to.slice(toStart); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9wb3NpeC9yZWxhdGl2ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBpc1Bvc2l4UGF0aFNlcGFyYXRvciB9IGZyb20gXCIuL191dGlsLnRzXCI7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSBcIi4vcmVzb2x2ZS50c1wiO1xuaW1wb3J0IHsgYXNzZXJ0QXJncyB9IGZyb20gXCIuLi9fY29tbW9uL3JlbGF0aXZlLnRzXCI7XG5cbi8qKlxuICogUmV0dXJuIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gYGZyb21gIHRvIGB0b2AgYmFzZWQgb24gY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS5cbiAqXG4gKiBJZiBgZnJvbWAgYW5kIGB0b2AgYXJlIHRoZSBzYW1lLCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgcmVsYXRpdmUgfSBmcm9tIFwiQHN0ZC9wYXRoL3Bvc2l4L3JlbGF0aXZlXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBwYXRoID0gcmVsYXRpdmUoXCIvZGF0YS9vcmFuZGVhL3Rlc3QvYWFhXCIsIFwiL2RhdGEvb3JhbmRlYS9pbXBsL2JiYlwiKTtcbiAqIGFzc2VydEVxdWFscyhwYXRoLCBcIi4uLy4uL2ltcGwvYmJiXCIpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIGZyb20gVGhlIHBhdGggdG8gc3RhcnQgZnJvbS5cbiAqIEBwYXJhbSB0byBUaGUgcGF0aCB0byByZWFjaC5cbiAqIEByZXR1cm5zIFRoZSByZWxhdGl2ZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVsYXRpdmUoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKTogc3RyaW5nIHtcbiAgYXNzZXJ0QXJncyhmcm9tLCB0byk7XG5cbiAgZnJvbSA9IHJlc29sdmUoZnJvbSk7XG4gIHRvID0gcmVzb2x2ZSh0byk7XG5cbiAgaWYgKGZyb20gPT09IHRvKSByZXR1cm4gXCJcIjtcblxuICAvLyBUcmltIGFueSBsZWFkaW5nIGJhY2tzbGFzaGVzXG4gIGxldCBmcm9tU3RhcnQgPSAxO1xuICBjb25zdCBmcm9tRW5kID0gZnJvbS5sZW5ndGg7XG4gIGZvciAoOyBmcm9tU3RhcnQgPCBmcm9tRW5kOyArK2Zyb21TdGFydCkge1xuICAgIGlmICghaXNQb3NpeFBhdGhTZXBhcmF0b3IoZnJvbS5jaGFyQ29kZUF0KGZyb21TdGFydCkpKSBicmVhaztcbiAgfVxuICBjb25zdCBmcm9tTGVuID0gZnJvbUVuZCAtIGZyb21TdGFydDtcblxuICAvLyBUcmltIGFueSBsZWFkaW5nIGJhY2tzbGFzaGVzXG4gIGxldCB0b1N0YXJ0ID0gMTtcbiAgY29uc3QgdG9FbmQgPSB0by5sZW5ndGg7XG4gIGZvciAoOyB0b1N0YXJ0IDwgdG9FbmQ7ICsrdG9TdGFydCkge1xuICAgIGlmICghaXNQb3NpeFBhdGhTZXBhcmF0b3IodG8uY2hhckNvZGVBdCh0b1N0YXJ0KSkpIGJyZWFrO1xuICB9XG4gIGNvbnN0IHRvTGVuID0gdG9FbmQgLSB0b1N0YXJ0O1xuXG4gIC8vIENvbXBhcmUgcGF0aHMgdG8gZmluZCB0aGUgbG9uZ2VzdCBjb21tb24gcGF0aCBmcm9tIHJvb3RcbiAgY29uc3QgbGVuZ3RoID0gZnJvbUxlbiA8IHRvTGVuID8gZnJvbUxlbiA6IHRvTGVuO1xuICBsZXQgbGFzdENvbW1vblNlcCA9IC0xO1xuICBsZXQgaSA9IDA7XG4gIGZvciAoOyBpIDw9IGxlbmd0aDsgKytpKSB7XG4gICAgaWYgKGkgPT09IGxlbmd0aCkge1xuICAgICAgaWYgKHRvTGVuID4gbGVuZ3RoKSB7XG4gICAgICAgIGlmIChpc1Bvc2l4UGF0aFNlcGFyYXRvcih0by5jaGFyQ29kZUF0KHRvU3RhcnQgKyBpKSkpIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgZnJvbWAgaXMgdGhlIGV4YWN0IGJhc2UgcGF0aCBmb3IgYHRvYC5cbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nL2Zvby9iYXInOyB0bz0nL2Zvby9iYXIvYmF6J1xuICAgICAgICAgIHJldHVybiB0by5zbGljZSh0b1N0YXJ0ICsgaSArIDEpO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgZnJvbWAgaXMgdGhlIHJvb3RcbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nLyc7IHRvPScvZm9vJ1xuICAgICAgICAgIHJldHVybiB0by5zbGljZSh0b1N0YXJ0ICsgaSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZnJvbUxlbiA+IGxlbmd0aCkge1xuICAgICAgICBpZiAoaXNQb3NpeFBhdGhTZXBhcmF0b3IoZnJvbS5jaGFyQ29kZUF0KGZyb21TdGFydCArIGkpKSkge1xuICAgICAgICAgIC8vIFdlIGdldCBoZXJlIGlmIGB0b2AgaXMgdGhlIGV4YWN0IGJhc2UgcGF0aCBmb3IgYGZyb21gLlxuICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPScvZm9vL2Jhci9iYXonOyB0bz0nL2Zvby9iYXInXG4gICAgICAgICAgbGFzdENvbW1vblNlcCA9IGk7XG4gICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgIC8vIFdlIGdldCBoZXJlIGlmIGB0b2AgaXMgdGhlIHJvb3QuXG4gICAgICAgICAgLy8gRm9yIGV4YW1wbGU6IGZyb209Jy9mb28nOyB0bz0nLydcbiAgICAgICAgICBsYXN0Q29tbW9uU2VwID0gMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNvbnN0IGZyb21Db2RlID0gZnJvbS5jaGFyQ29kZUF0KGZyb21TdGFydCArIGkpO1xuICAgIGNvbnN0IHRvQ29kZSA9IHRvLmNoYXJDb2RlQXQodG9TdGFydCArIGkpO1xuICAgIGlmIChmcm9tQ29kZSAhPT0gdG9Db2RlKSBicmVhaztcbiAgICBlbHNlIGlmIChpc1Bvc2l4UGF0aFNlcGFyYXRvcihmcm9tQ29kZSkpIGxhc3RDb21tb25TZXAgPSBpO1xuICB9XG5cbiAgbGV0IG91dCA9IFwiXCI7XG4gIC8vIEdlbmVyYXRlIHRoZSByZWxhdGl2ZSBwYXRoIGJhc2VkIG9uIHRoZSBwYXRoIGRpZmZlcmVuY2UgYmV0d2VlbiBgdG9gXG4gIC8vIGFuZCBgZnJvbWBcbiAgZm9yIChpID0gZnJvbVN0YXJ0ICsgbGFzdENvbW1vblNlcCArIDE7IGkgPD0gZnJvbUVuZDsgKytpKSB7XG4gICAgaWYgKGkgPT09IGZyb21FbmQgfHwgaXNQb3NpeFBhdGhTZXBhcmF0b3IoZnJvbS5jaGFyQ29kZUF0KGkpKSkge1xuICAgICAgaWYgKG91dC5sZW5ndGggPT09IDApIG91dCArPSBcIi4uXCI7XG4gICAgICBlbHNlIG91dCArPSBcIi8uLlwiO1xuICAgIH1cbiAgfVxuXG4gIC8vIExhc3RseSwgYXBwZW5kIHRoZSByZXN0IG9mIHRoZSBkZXN0aW5hdGlvbiAoYHRvYCkgcGF0aCB0aGF0IGNvbWVzIGFmdGVyXG4gIC8vIHRoZSBjb21tb24gcGF0aCBwYXJ0c1xuICBpZiAob3V0Lmxlbmd0aCA+IDApIHJldHVybiBvdXQgKyB0by5zbGljZSh0b1N0YXJ0ICsgbGFzdENvbW1vblNlcCk7XG4gIGVsc2Uge1xuICAgIHRvU3RhcnQgKz0gbGFzdENvbW1vblNlcDtcbiAgICBpZiAoaXNQb3NpeFBhdGhTZXBhcmF0b3IodG8uY2hhckNvZGVBdCh0b1N0YXJ0KSkpICsrdG9TdGFydDtcbiAgICByZXR1cm4gdG8uc2xpY2UodG9TdGFydCk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDLFNBQVMsb0JBQW9CLFFBQVEsYUFBYTtBQUNsRCxTQUFTLE9BQU8sUUFBUSxlQUFlO0FBQ3ZDLFNBQVMsVUFBVSxRQUFRLHlCQUF5QjtBQUVwRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FpQkMsR0FDRCxPQUFPLFNBQVMsU0FBUyxJQUFZLEVBQUUsRUFBVTtFQUMvQyxXQUFXLE1BQU07RUFFakIsT0FBTyxRQUFRO0VBQ2YsS0FBSyxRQUFRO0VBRWIsSUFBSSxTQUFTLElBQUksT0FBTztFQUV4QiwrQkFBK0I7RUFDL0IsSUFBSSxZQUFZO0VBQ2hCLE1BQU0sVUFBVSxLQUFLLE1BQU07RUFDM0IsTUFBTyxZQUFZLFNBQVMsRUFBRSxVQUFXO0lBQ3ZDLElBQUksQ0FBQyxxQkFBcUIsS0FBSyxVQUFVLENBQUMsYUFBYTtFQUN6RDtFQUNBLE1BQU0sVUFBVSxVQUFVO0VBRTFCLCtCQUErQjtFQUMvQixJQUFJLFVBQVU7RUFDZCxNQUFNLFFBQVEsR0FBRyxNQUFNO0VBQ3ZCLE1BQU8sVUFBVSxPQUFPLEVBQUUsUUFBUztJQUNqQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsVUFBVSxDQUFDLFdBQVc7RUFDckQ7RUFDQSxNQUFNLFFBQVEsUUFBUTtFQUV0QiwwREFBMEQ7RUFDMUQsTUFBTSxTQUFTLFVBQVUsUUFBUSxVQUFVO0VBQzNDLElBQUksZ0JBQWdCLENBQUM7RUFDckIsSUFBSSxJQUFJO0VBQ1IsTUFBTyxLQUFLLFFBQVEsRUFBRSxFQUFHO0lBQ3ZCLElBQUksTUFBTSxRQUFRO01BQ2hCLElBQUksUUFBUSxRQUFRO1FBQ2xCLElBQUkscUJBQXFCLEdBQUcsVUFBVSxDQUFDLFVBQVUsS0FBSztVQUNwRCx5REFBeUQ7VUFDekQsa0RBQWtEO1VBQ2xELE9BQU8sR0FBRyxLQUFLLENBQUMsVUFBVSxJQUFJO1FBQ2hDLE9BQU8sSUFBSSxNQUFNLEdBQUc7VUFDbEIsb0NBQW9DO1VBQ3BDLG1DQUFtQztVQUNuQyxPQUFPLEdBQUcsS0FBSyxDQUFDLFVBQVU7UUFDNUI7TUFDRixPQUFPLElBQUksVUFBVSxRQUFRO1FBQzNCLElBQUkscUJBQXFCLEtBQUssVUFBVSxDQUFDLFlBQVksS0FBSztVQUN4RCx5REFBeUQ7VUFDekQsa0RBQWtEO1VBQ2xELGdCQUFnQjtRQUNsQixPQUFPLElBQUksTUFBTSxHQUFHO1VBQ2xCLG1DQUFtQztVQUNuQyxtQ0FBbUM7VUFDbkMsZ0JBQWdCO1FBQ2xCO01BQ0Y7TUFDQTtJQUNGO0lBQ0EsTUFBTSxXQUFXLEtBQUssVUFBVSxDQUFDLFlBQVk7SUFDN0MsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFVBQVU7SUFDdkMsSUFBSSxhQUFhLFFBQVE7U0FDcEIsSUFBSSxxQkFBcUIsV0FBVyxnQkFBZ0I7RUFDM0Q7RUFFQSxJQUFJLE1BQU07RUFDVix1RUFBdUU7RUFDdkUsYUFBYTtFQUNiLElBQUssSUFBSSxZQUFZLGdCQUFnQixHQUFHLEtBQUssU0FBUyxFQUFFLEVBQUc7SUFDekQsSUFBSSxNQUFNLFdBQVcscUJBQXFCLEtBQUssVUFBVSxDQUFDLEtBQUs7TUFDN0QsSUFBSSxJQUFJLE1BQU0sS0FBSyxHQUFHLE9BQU87V0FDeEIsT0FBTztJQUNkO0VBQ0Y7RUFFQSwwRUFBMEU7RUFDMUUsd0JBQXdCO0VBQ3hCLElBQUksSUFBSSxNQUFNLEdBQUcsR0FBRyxPQUFPLE1BQU0sR0FBRyxLQUFLLENBQUMsVUFBVTtPQUMvQztJQUNILFdBQVc7SUFDWCxJQUFJLHFCQUFxQixHQUFHLFVBQVUsQ0FBQyxXQUFXLEVBQUU7SUFDcEQsT0FBTyxHQUFHLEtBQUssQ0FBQztFQUNsQjtBQUNGIn0= +// denoCacheMetadata=47264394419456140,17124182613948114227
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/47d73fd65d0272244d9a0bc6f8b8a6fd770a2850f159a336ab2448bdd3a4fd86.js b/vendor/gen/https/jsr.io/47d73fd65d0272244d9a0bc6f8b8a6fd770a2850f159a336ab2448bdd3a4fd86.js new file mode 100644 index 0000000..0377ecb --- /dev/null +++ b/vendor/gen/https/jsr.io/47d73fd65d0272244d9a0bc6f8b8a6fd770a2850f159a336ab2448bdd3a4fd86.js @@ -0,0 +1,177 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +export const padding = "=".charCodeAt(0); +export const alphabet = { + base32: new TextEncoder().encode("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"), + base32hex: new TextEncoder().encode("0123456789ABCDEFGHIJKLMNOPQRSTUV"), + base32crockford: new TextEncoder().encode("0123456789ABCDEFGHJKMNPQRSTVWXYZ") +}; +export const rAlphabet = { + base32: new Uint8Array(128).fill(32), + base32hex: new Uint8Array(128).fill(32), + base32crockford: new Uint8Array(128).fill(32) +}; +alphabet.base32.forEach((byte, i)=>rAlphabet.base32[byte] = i); +alphabet.base32hex.forEach((byte, i)=>rAlphabet.base32hex[byte] = i); +alphabet.base32crockford.forEach((byte, i)=>rAlphabet.base32crockford[byte] = i); +/** + * Calculate the output size needed to encode a given input size for + * {@linkcode encodeIntoBase32}. + * + * @param rawSize The size of the input buffer. + * @returns The size of the output buffer. + * + * @example Basic Usage + * ```ts + * import { assertEquals } from "@std/assert"; + * import { calcSizeBase32 } from "@std/encoding/unstable-base32"; + * + * assertEquals(calcSizeBase32(1), 8); + * ``` + */ export function calcSizeBase32(rawSize) { + return ((rawSize + 4) / 5 | 0) * 8; +} +export function encode(buffer, i, o, alphabet, padding) { + i += 4; + for(; i < buffer.length; i += 5){ + let x = buffer[i - 4] << 16 | buffer[i - 3] << 8 | buffer[i - 2]; + buffer[o++] = alphabet[x >> 19]; + buffer[o++] = alphabet[x >> 14 & 0x1F]; + buffer[o++] = alphabet[x >> 9 & 0x1F]; + buffer[o++] = alphabet[x >> 4 & 0x1F]; + x = x << 16 | buffer[i - 1] << 8 | buffer[i]; + buffer[o++] = alphabet[x >> 15 & 0x1F]; + buffer[o++] = alphabet[x >> 10 & 0x1F]; + buffer[o++] = alphabet[x >> 5 & 0x1F]; + buffer[o++] = alphabet[x & 0x1F]; + } + switch(i){ + case buffer.length + 3: + { + const x = buffer[i - 4] << 16; + buffer[o++] = alphabet[x >> 19]; + buffer[o++] = alphabet[x >> 14 & 0x1F]; + buffer[o++] = padding; + buffer[o++] = padding; + buffer[o++] = padding; + buffer[o++] = padding; + buffer[o++] = padding; + buffer[o++] = padding; + break; + } + case buffer.length + 2: + { + const x = buffer[i - 4] << 16 | buffer[i - 3] << 8; + buffer[o++] = alphabet[x >> 19]; + buffer[o++] = alphabet[x >> 14 & 0x1F]; + buffer[o++] = alphabet[x >> 9 & 0x1F]; + buffer[o++] = alphabet[x >> 4 & 0x1F]; + buffer[o++] = padding; + buffer[o++] = padding; + buffer[o++] = padding; + buffer[o++] = padding; + break; + } + case buffer.length + 1: + { + let x = buffer[i - 4] << 16 | buffer[i - 3] << 8 | buffer[i - 2]; + buffer[o++] = alphabet[x >> 19]; + buffer[o++] = alphabet[x >> 14 & 0x1F]; + buffer[o++] = alphabet[x >> 9 & 0x1F]; + buffer[o++] = alphabet[x >> 4 & 0x1F]; + x <<= 16; + buffer[o++] = alphabet[x >> 15 & 0x1F]; + buffer[o++] = padding; + buffer[o++] = padding; + buffer[o++] = padding; + break; + } + case buffer.length: + { + let x = buffer[i - 4] << 16 | buffer[i - 3] << 8 | buffer[i - 2]; + buffer[o++] = alphabet[x >> 19]; + buffer[o++] = alphabet[x >> 14 & 0x1F]; + buffer[o++] = alphabet[x >> 9 & 0x1F]; + buffer[o++] = alphabet[x >> 4 & 0x1F]; + x = x << 16 | buffer[i - 1] << 8; + buffer[o++] = alphabet[x >> 15 & 0x1F]; + buffer[o++] = alphabet[x >> 10 & 0x1F]; + buffer[o++] = alphabet[x >> 5 & 0x1F]; + buffer[o++] = padding; + break; + } + } + return o; +} +export function decode(buffer, i, o, alphabet, padding) { + for(let x = buffer.length - 6; x < buffer.length; ++x){ + if (buffer[x] === padding) { + for(let y = x + 1; y < buffer.length; ++y){ + if (buffer[y] !== padding) { + throw new TypeError(`Cannot decode input as base32: Invalid character (${String.fromCharCode(buffer[y])})`); + } + } + buffer = buffer.subarray(0, x); + break; + } + } + switch((buffer.length - o) % 8){ + case 6: + case 3: + case 1: + throw new RangeError(`Cannot decode input as base32: Length (${buffer.length - o}), excluding padding, must not have a remainder of 1, 3, or 6 when divided by 8`); + } + i += 7; + for(; i < buffer.length; i += 8){ + let x = getByte(buffer[i - 7], alphabet) << 19 | getByte(buffer[i - 6], alphabet) << 14 | getByte(buffer[i - 5], alphabet) << 9 | getByte(buffer[i - 4], alphabet) << 4; + buffer[o++] = x >> 16; + buffer[o++] = x >> 8 & 0xFF; + x = x << 16 | getByte(buffer[i - 3], alphabet) << 15 | getByte(buffer[i - 2], alphabet) << 10 | getByte(buffer[i - 1], alphabet) << 5 | getByte(buffer[i], alphabet); + buffer[o++] = x >> 16 & 0xFF; + buffer[o++] = x >> 8 & 0xFF; + buffer[o++] = x & 0xFF; + } + switch(i){ + case buffer.length + 5: + { + const x = getByte(buffer[i - 7], alphabet) << 19 | getByte(buffer[i - 6], alphabet) << 14; + buffer[o++] = x >> 16; + break; + } + case buffer.length + 3: + { + const x = getByte(buffer[i - 7], alphabet) << 19 | getByte(buffer[i - 6], alphabet) << 14 | getByte(buffer[i - 5], alphabet) << 9 | getByte(buffer[i - 4], alphabet) << 4; + buffer[o++] = x >> 16; + buffer[o++] = x >> 8 & 0xFF; + break; + } + case buffer.length + 2: + { + let x = getByte(buffer[i - 7], alphabet) << 19 | getByte(buffer[i - 6], alphabet) << 14 | getByte(buffer[i - 5], alphabet) << 9 | getByte(buffer[i - 4], alphabet) << 4; + buffer[o++] = x >> 16; + buffer[o++] = x >> 8 & 0xFF; + x = x << 16 | getByte(buffer[i - 3], alphabet) << 15; + buffer[o++] = x >> 16 & 0xFF; + break; + } + case buffer.length: + { + let x = getByte(buffer[i - 7], alphabet) << 19 | getByte(buffer[i - 6], alphabet) << 14 | getByte(buffer[i - 5], alphabet) << 9 | getByte(buffer[i - 4], alphabet) << 4; + buffer[o++] = x >> 16; + buffer[o++] = x >> 8 & 0xFF; + x = x << 16 | getByte(buffer[i - 3], alphabet) << 15 | getByte(buffer[i - 2], alphabet) << 10 | getByte(buffer[i - 1], alphabet) << 5; + buffer[o++] = x >> 16 & 0xFF; + buffer[o++] = x >> 8 & 0xFF; + break; + } + } + return o; +} +function getByte(char, alphabet) { + const byte = alphabet[char] ?? 32; + if (byte === 32) { + throw new TypeError(`Cannot decode input as base32: Invalid character (${String.fromCharCode(char)})`); + } + return byte; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZW5jb2RpbmcvMS4wLjEwL19jb21tb24zMi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuXG5pbXBvcnQgdHlwZSB7IFVpbnQ4QXJyYXlfIH0gZnJvbSBcIi4vX3R5cGVzLnRzXCI7XG5leHBvcnQgdHlwZSB7IFVpbnQ4QXJyYXlfIH07XG5cbmV4cG9ydCBjb25zdCBwYWRkaW5nID0gXCI9XCIuY2hhckNvZGVBdCgwKTtcbmV4cG9ydCBjb25zdCBhbHBoYWJldDogUmVjb3JkPEJhc2UzMkFscGhhYmV0LCBVaW50OEFycmF5PiA9IHtcbiAgYmFzZTMyOiBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjIzNDU2N1wiKSxcbiAgYmFzZTMyaGV4OiBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoXCIwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVlwiKSxcbiAgYmFzZTMyY3JvY2tmb3JkOiBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoXCIwMTIzNDU2Nzg5QUJDREVGR0hKS01OUFFSU1RWV1hZWlwiKSxcbn07XG5leHBvcnQgY29uc3QgckFscGhhYmV0OiBSZWNvcmQ8QmFzZTMyQWxwaGFiZXQsIFVpbnQ4QXJyYXk+ID0ge1xuICBiYXNlMzI6IG5ldyBVaW50OEFycmF5KDEyOCkuZmlsbCgzMiksIC8vIGFscGhhYmV0LmJhc2UzMi5sZW5ndGhcbiAgYmFzZTMyaGV4OiBuZXcgVWludDhBcnJheSgxMjgpLmZpbGwoMzIpLFxuICBiYXNlMzJjcm9ja2ZvcmQ6IG5ldyBVaW50OEFycmF5KDEyOCkuZmlsbCgzMiksXG59O1xuYWxwaGFiZXQuYmFzZTMyXG4gIC5mb3JFYWNoKChieXRlLCBpKSA9PiByQWxwaGFiZXQuYmFzZTMyW2J5dGVdID0gaSk7XG5hbHBoYWJldC5iYXNlMzJoZXhcbiAgLmZvckVhY2goKGJ5dGUsIGkpID0+IHJBbHBoYWJldC5iYXNlMzJoZXhbYnl0ZV0gPSBpKTtcbmFscGhhYmV0LmJhc2UzMmNyb2NrZm9yZFxuICAuZm9yRWFjaCgoYnl0ZSwgaSkgPT4gckFscGhhYmV0LmJhc2UzMmNyb2NrZm9yZFtieXRlXSA9IGkpO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGVuY29kaW5nIGFuZCBkZWNvZGluZyBiYXNlMzIgc3RyaW5ncy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlMzJPcHRpb25zIHtcbiAgLyoqIFRoZSBiYXNlMzIgYWxwaGFiZXQuIERlZmF1bHRzIHRvIFwiYmFzZTMyXCIgKi9cbiAgYWxwaGFiZXQ/OiBCYXNlMzJBbHBoYWJldDtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZTMyIGFscGhhYmV0cy5cbiAqL1xuZXhwb3J0IHR5cGUgQmFzZTMyQWxwaGFiZXQgPSBcImJhc2UzMlwiIHwgXCJiYXNlMzJoZXhcIiB8IFwiYmFzZTMyY3JvY2tmb3JkXCI7XG5cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSBvdXRwdXQgc2l6ZSBuZWVkZWQgdG8gZW5jb2RlIGEgZ2l2ZW4gaW5wdXQgc2l6ZSBmb3JcbiAqIHtAbGlua2NvZGUgZW5jb2RlSW50b0Jhc2UzMn0uXG4gKlxuICogQHBhcmFtIHJhd1NpemUgVGhlIHNpemUgb2YgdGhlIGlucHV0IGJ1ZmZlci5cbiAqIEByZXR1cm5zIFRoZSBzaXplIG9mIHRoZSBvdXRwdXQgYnVmZmVyLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKiBpbXBvcnQgeyBjYWxjU2l6ZUJhc2UzMiB9IGZyb20gXCJAc3RkL2VuY29kaW5nL3Vuc3RhYmxlLWJhc2UzMlwiO1xuICpcbiAqIGFzc2VydEVxdWFscyhjYWxjU2l6ZUJhc2UzMigxKSwgOCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGNTaXplQmFzZTMyKHJhd1NpemU6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiAoKHJhd1NpemUgKyA0KSAvIDUgfCAwKSAqIDg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGUoXG4gIGJ1ZmZlcjogVWludDhBcnJheV8sXG4gIGk6IG51bWJlcixcbiAgbzogbnVtYmVyLFxuICBhbHBoYWJldDogVWludDhBcnJheSxcbiAgcGFkZGluZzogbnVtYmVyLFxuKTogbnVtYmVyIHtcbiAgaSArPSA0O1xuICBmb3IgKDsgaSA8IGJ1ZmZlci5sZW5ndGg7IGkgKz0gNSkge1xuICAgIGxldCB4ID0gKGJ1ZmZlcltpIC0gNF0hIDw8IDE2KSB8IChidWZmZXJbaSAtIDNdISA8PCA4KSB8IGJ1ZmZlcltpIC0gMl0hO1xuICAgIGJ1ZmZlcltvKytdID0gYWxwaGFiZXRbeCA+PiAxOV0hO1xuICAgIGJ1ZmZlcltvKytdID0gYWxwaGFiZXRbeCA+PiAxNCAmIDB4MUZdITtcbiAgICBidWZmZXJbbysrXSA9IGFscGhhYmV0W3ggPj4gOSAmIDB4MUZdITtcbiAgICBidWZmZXJbbysrXSA9IGFscGhhYmV0W3ggPj4gNCAmIDB4MUZdITtcbiAgICB4ID0gKHggPDwgMTYpIHwgKGJ1ZmZlcltpIC0gMV0hIDw8IDgpIHwgYnVmZmVyW2ldITtcbiAgICBidWZmZXJbbysrXSA9IGFscGhhYmV0W3ggPj4gMTUgJiAweDFGXSE7XG4gICAgYnVmZmVyW28rK10gPSBhbHBoYWJldFt4ID4+IDEwICYgMHgxRl0hO1xuICAgIGJ1ZmZlcltvKytdID0gYWxwaGFiZXRbeCA+PiA1ICYgMHgxRl0hO1xuICAgIGJ1ZmZlcltvKytdID0gYWxwaGFiZXRbeCAmIDB4MUZdITtcbiAgfVxuICBzd2l0Y2ggKGkpIHtcbiAgICBjYXNlIGJ1ZmZlci5sZW5ndGggKyAzOiB7XG4gICAgICBjb25zdCB4ID0gYnVmZmVyW2kgLSA0XSEgPDwgMTY7XG4gICAgICBidWZmZXJbbysrXSA9IGFscGhhYmV0W3ggPj4gMTldITtcbiAgICAgIGJ1ZmZlcltvKytdID0gYWxwaGFiZXRbeCA+PiAxNCAmIDB4MUZdITtcbiAgICAgIGJ1ZmZlcltvKytdID0gcGFkZGluZztcbiAgICAgIGJ1ZmZlcltvKytdID0gcGFkZGluZztcbiAgICAgIGJ1ZmZlcltvKytdID0gcGFkZGluZztcbiAgICAgIGJ1ZmZlcltvKytdID0gcGFkZGluZztcbiAgICAgIGJ1ZmZlcltvKytdID0gcGFkZGluZztcbiAgICAgIGJ1ZmZlcltvKytdID0gcGFkZGluZztcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIGJ1ZmZlci5sZW5ndGggKyAyOiB7XG4gICAgICBjb25zdCB4ID0gKGJ1ZmZlcltpIC0gNF0hIDw8IDE2KSB8IChidWZmZXJbaSAtIDNdISA8PCA4KTtcbiAgICAgIGJ1ZmZlcltvKytdID0gYWxwaGFiZXRbeCA+PiAxOV0hO1xuICAgICAgYnVmZmVyW28rK10gPSBhbHBoYWJldFt4ID4+IDE0ICYgMHgxRl0hO1xuICAgICAgYnVmZmVyW28rK10gPSBhbHBoYWJldFt4ID4+IDkgJiAweDFGXSE7XG4gICAgICBidWZmZXJbbysrXSA9IGFscGhhYmV0W3ggPj4gNCAmIDB4MUZdITtcbiAgICAgIGJ1ZmZlcltvKytdID0gcGFkZGluZztcbiAgICAgIGJ1ZmZlcltvKytdID0gcGFkZGluZztcbiAgICAgIGJ1ZmZlcltvKytdID0gcGFkZGluZztcbiAgICAgIGJ1ZmZlcltvKytdID0gcGFkZGluZztcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIGJ1ZmZlci5sZW5ndGggKyAxOiB7XG4gICAgICBsZXQgeCA9IChidWZmZXJbaSAtIDRdISA8PCAxNikgfCAoYnVmZmVyW2kgLSAzXSEgPDwgOCkgfCBidWZmZXJbaSAtIDJdITtcbiAgICAgIGJ1ZmZlcltvKytdID0gYWxwaGFiZXRbeCA+PiAxOV0hO1xuICAgICAgYnVmZmVyW28rK10gPSBhbHBoYWJldFt4ID4+IDE0ICYgMHgxRl0hO1xuICAgICAgYnVmZmVyW28rK10gPSBhbHBoYWJldFt4ID4+IDkgJiAweDFGXSE7XG4gICAgICBidWZmZXJbbysrXSA9IGFscGhhYmV0W3ggPj4gNCAmIDB4MUZdITtcbiAgICAgIHggPDw9IDE2O1xuICAgICAgYnVmZmVyW28rK10gPSBhbHBoYWJldFt4ID4+IDE1ICYgMHgxRl0hO1xuICAgICAgYnVmZmVyW28rK10gPSBwYWRkaW5nO1xuICAgICAgYnVmZmVyW28rK10gPSBwYWRkaW5nO1xuICAgICAgYnVmZmVyW28rK10gPSBwYWRkaW5nO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgYnVmZmVyLmxlbmd0aDoge1xuICAgICAgbGV0IHggPSAoYnVmZmVyW2kgLSA0XSEgPDwgMTYpIHwgKGJ1ZmZlcltpIC0gM10hIDw8IDgpIHwgYnVmZmVyW2kgLSAyXSE7XG4gICAgICBidWZmZXJbbysrXSA9IGFscGhhYmV0W3ggPj4gMTldITtcbiAgICAgIGJ1ZmZlcltvKytdID0gYWxwaGFiZXRbeCA+PiAxNCAmIDB4MUZdITtcbiAgICAgIGJ1ZmZlcltvKytdID0gYWxwaGFiZXRbeCA+PiA5ICYgMHgxRl0hO1xuICAgICAgYnVmZmVyW28rK10gPSBhbHBoYWJldFt4ID4+IDQgJiAweDFGXSE7XG4gICAgICB4ID0gKHggPDwgMTYpIHwgKGJ1ZmZlcltpIC0gMV0hIDw8IDgpO1xuICAgICAgYnVmZmVyW28rK10gPSBhbHBoYWJldFt4ID4+IDE1ICYgMHgxRl0hO1xuICAgICAgYnVmZmVyW28rK10gPSBhbHBoYWJldFt4ID4+IDEwICYgMHgxRl0hO1xuICAgICAgYnVmZmVyW28rK10gPSBhbHBoYWJldFt4ID4+IDUgJiAweDFGXSE7XG4gICAgICBidWZmZXJbbysrXSA9IHBhZGRpbmc7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG87XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGUoXG4gIGJ1ZmZlcjogVWludDhBcnJheV8sXG4gIGk6IG51bWJlcixcbiAgbzogbnVtYmVyLFxuICBhbHBoYWJldDogVWludDhBcnJheSxcbiAgcGFkZGluZzogbnVtYmVyLFxuKTogbnVtYmVyIHtcbiAgZm9yIChsZXQgeCA9IGJ1ZmZlci5sZW5ndGggLSA2OyB4IDwgYnVmZmVyLmxlbmd0aDsgKyt4KSB7XG4gICAgaWYgKGJ1ZmZlclt4XSA9PT0gcGFkZGluZykge1xuICAgICAgZm9yIChsZXQgeSA9IHggKyAxOyB5IDwgYnVmZmVyLmxlbmd0aDsgKyt5KSB7XG4gICAgICAgIGlmIChidWZmZXJbeV0gIT09IHBhZGRpbmcpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgICAgYENhbm5vdCBkZWNvZGUgaW5wdXQgYXMgYmFzZTMyOiBJbnZhbGlkIGNoYXJhY3RlciAoJHtcbiAgICAgICAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZShidWZmZXJbeV0hKVxuICAgICAgICAgICAgfSlgLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJ1ZmZlciA9IGJ1ZmZlci5zdWJhcnJheSgwLCB4KTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBzd2l0Y2ggKChidWZmZXIubGVuZ3RoIC0gbykgJSA4KSB7XG4gICAgY2FzZSA2OlxuICAgIGNhc2UgMzpcbiAgICBjYXNlIDE6XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcbiAgICAgICAgYENhbm5vdCBkZWNvZGUgaW5wdXQgYXMgYmFzZTMyOiBMZW5ndGggKCR7XG4gICAgICAgICAgYnVmZmVyLmxlbmd0aCAtIG9cbiAgICAgICAgfSksIGV4Y2x1ZGluZyBwYWRkaW5nLCBtdXN0IG5vdCBoYXZlIGEgcmVtYWluZGVyIG9mIDEsIDMsIG9yIDYgd2hlbiBkaXZpZGVkIGJ5IDhgLFxuICAgICAgKTtcbiAgfVxuXG4gIGkgKz0gNztcbiAgZm9yICg7IGkgPCBidWZmZXIubGVuZ3RoOyBpICs9IDgpIHtcbiAgICBsZXQgeCA9IChnZXRCeXRlKGJ1ZmZlcltpIC0gN10hLCBhbHBoYWJldCkgPDwgMTkpIHxcbiAgICAgIChnZXRCeXRlKGJ1ZmZlcltpIC0gNl0hLCBhbHBoYWJldCkgPDwgMTQpIHxcbiAgICAgIChnZXRCeXRlKGJ1ZmZlcltpIC0gNV0hLCBhbHBoYWJldCkgPDwgOSkgfFxuICAgICAgKGdldEJ5dGUoYnVmZmVyW2kgLSA0XSEsIGFscGhhYmV0KSA8PCA0KTtcbiAgICBidWZmZXJbbysrXSA9IHggPj4gMTY7XG4gICAgYnVmZmVyW28rK10gPSB4ID4+IDggJiAweEZGO1xuICAgIHggPSAoeCA8PCAxNikgfFxuICAgICAgKGdldEJ5dGUoYnVmZmVyW2kgLSAzXSEsIGFscGhhYmV0KSA8PCAxNSkgfFxuICAgICAgKGdldEJ5dGUoYnVmZmVyW2kgLSAyXSEsIGFscGhhYmV0KSA8PCAxMCkgfFxuICAgICAgKGdldEJ5dGUoYnVmZmVyW2kgLSAxXSEsIGFscGhhYmV0KSA8PCA1KSB8XG4gICAgICBnZXRCeXRlKGJ1ZmZlcltpXSEsIGFscGhhYmV0KTtcbiAgICBidWZmZXJbbysrXSA9IHggPj4gMTYgJiAweEZGO1xuICAgIGJ1ZmZlcltvKytdID0geCA+PiA4ICYgMHhGRjtcbiAgICBidWZmZXJbbysrXSA9IHggJiAweEZGO1xuICB9XG4gIHN3aXRjaCAoaSkge1xuICAgIGNhc2UgYnVmZmVyLmxlbmd0aCArIDU6IHtcbiAgICAgIGNvbnN0IHggPSAoZ2V0Qnl0ZShidWZmZXJbaSAtIDddISwgYWxwaGFiZXQpIDw8IDE5KSB8XG4gICAgICAgIChnZXRCeXRlKGJ1ZmZlcltpIC0gNl0hLCBhbHBoYWJldCkgPDwgMTQpO1xuICAgICAgYnVmZmVyW28rK10gPSB4ID4+IDE2O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgYnVmZmVyLmxlbmd0aCArIDM6IHtcbiAgICAgIGNvbnN0IHggPSAoZ2V0Qnl0ZShidWZmZXJbaSAtIDddISwgYWxwaGFiZXQpIDw8IDE5KSB8XG4gICAgICAgIChnZXRCeXRlKGJ1ZmZlcltpIC0gNl0hLCBhbHBoYWJldCkgPDwgMTQpIHxcbiAgICAgICAgKGdldEJ5dGUoYnVmZmVyW2kgLSA1XSEsIGFscGhhYmV0KSA8PCA5KSB8XG4gICAgICAgIChnZXRCeXRlKGJ1ZmZlcltpIC0gNF0hLCBhbHBoYWJldCkgPDwgNCk7XG4gICAgICBidWZmZXJbbysrXSA9IHggPj4gMTY7XG4gICAgICBidWZmZXJbbysrXSA9IHggPj4gOCAmIDB4RkY7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBidWZmZXIubGVuZ3RoICsgMjoge1xuICAgICAgbGV0IHggPSAoZ2V0Qnl0ZShidWZmZXJbaSAtIDddISwgYWxwaGFiZXQpIDw8IDE5KSB8XG4gICAgICAgIChnZXRCeXRlKGJ1ZmZlcltpIC0gNl0hLCBhbHBoYWJldCkgPDwgMTQpIHxcbiAgICAgICAgKGdldEJ5dGUoYnVmZmVyW2kgLSA1XSEsIGFscGhhYmV0KSA8PCA5KSB8XG4gICAgICAgIChnZXRCeXRlKGJ1ZmZlcltpIC0gNF0hLCBhbHBoYWJldCkgPDwgNCk7XG4gICAgICBidWZmZXJbbysrXSA9IHggPj4gMTY7XG4gICAgICBidWZmZXJbbysrXSA9IHggPj4gOCAmIDB4RkY7XG4gICAgICB4ID0gKHggPDwgMTYpIHxcbiAgICAgICAgKGdldEJ5dGUoYnVmZmVyW2kgLSAzXSEsIGFscGhhYmV0KSA8PCAxNSk7XG4gICAgICBidWZmZXJbbysrXSA9IHggPj4gMTYgJiAweEZGO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgYnVmZmVyLmxlbmd0aDoge1xuICAgICAgbGV0IHggPSAoZ2V0Qnl0ZShidWZmZXJbaSAtIDddISwgYWxwaGFiZXQpIDw8IDE5KSB8XG4gICAgICAgIChnZXRCeXRlKGJ1ZmZlcltpIC0gNl0hLCBhbHBoYWJldCkgPDwgMTQpIHxcbiAgICAgICAgKGdldEJ5dGUoYnVmZmVyW2kgLSA1XSEsIGFscGhhYmV0KSA8PCA5KSB8XG4gICAgICAgIChnZXRCeXRlKGJ1ZmZlcltpIC0gNF0hLCBhbHBoYWJldCkgPDwgNCk7XG4gICAgICBidWZmZXJbbysrXSA9IHggPj4gMTY7XG4gICAgICBidWZmZXJbbysrXSA9IHggPj4gOCAmIDB4RkY7XG4gICAgICB4ID0gKHggPDwgMTYpIHxcbiAgICAgICAgKGdldEJ5dGUoYnVmZmVyW2kgLSAzXSEsIGFscGhhYmV0KSA8PCAxNSkgfFxuICAgICAgICAoZ2V0Qnl0ZShidWZmZXJbaSAtIDJdISwgYWxwaGFiZXQpIDw8IDEwKSB8XG4gICAgICAgIChnZXRCeXRlKGJ1ZmZlcltpIC0gMV0hLCBhbHBoYWJldCkgPDwgNSk7XG4gICAgICBidWZmZXJbbysrXSA9IHggPj4gMTYgJiAweEZGO1xuICAgICAgYnVmZmVyW28rK10gPSB4ID4+IDggJiAweEZGO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBvO1xufVxuXG5mdW5jdGlvbiBnZXRCeXRlKGNoYXI6IG51bWJlciwgYWxwaGFiZXQ6IFVpbnQ4QXJyYXkpOiBudW1iZXIge1xuICBjb25zdCBieXRlID0gYWxwaGFiZXRbY2hhcl0gPz8gMzI7XG4gIGlmIChieXRlID09PSAzMikgeyAvLyBhbHBoYWJldC5CYXNlMzIubGVuZ3RoXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIGBDYW5ub3QgZGVjb2RlIGlucHV0IGFzIGJhc2UzMjogSW52YWxpZCBjaGFyYWN0ZXIgKCR7XG4gICAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhcilcbiAgICAgIH0pYCxcbiAgICApO1xuICB9XG4gIHJldHVybiBieXRlO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUtyRCxPQUFPLE1BQU0sVUFBVSxJQUFJLFVBQVUsQ0FBQyxHQUFHO0FBQ3pDLE9BQU8sTUFBTSxXQUErQztFQUMxRCxRQUFRLElBQUksY0FBYyxNQUFNLENBQUM7RUFDakMsV0FBVyxJQUFJLGNBQWMsTUFBTSxDQUFDO0VBQ3BDLGlCQUFpQixJQUFJLGNBQWMsTUFBTSxDQUFDO0FBQzVDLEVBQUU7QUFDRixPQUFPLE1BQU0sWUFBZ0Q7RUFDM0QsUUFBUSxJQUFJLFdBQVcsS0FBSyxJQUFJLENBQUM7RUFDakMsV0FBVyxJQUFJLFdBQVcsS0FBSyxJQUFJLENBQUM7RUFDcEMsaUJBQWlCLElBQUksV0FBVyxLQUFLLElBQUksQ0FBQztBQUM1QyxFQUFFO0FBQ0YsU0FBUyxNQUFNLENBQ1osT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFNLFVBQVUsTUFBTSxDQUFDLEtBQUssR0FBRztBQUNqRCxTQUFTLFNBQVMsQ0FDZixPQUFPLENBQUMsQ0FBQyxNQUFNLElBQU0sVUFBVSxTQUFTLENBQUMsS0FBSyxHQUFHO0FBQ3BELFNBQVMsZUFBZSxDQUNyQixPQUFPLENBQUMsQ0FBQyxNQUFNLElBQU0sVUFBVSxlQUFlLENBQUMsS0FBSyxHQUFHO0FBZTFEOzs7Ozs7Ozs7Ozs7OztDQWNDLEdBQ0QsT0FBTyxTQUFTLGVBQWUsT0FBZTtFQUM1QyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSTtBQUNuQztBQUVBLE9BQU8sU0FBUyxPQUNkLE1BQW1CLEVBQ25CLENBQVMsRUFDVCxDQUFTLEVBQ1QsUUFBb0IsRUFDcEIsT0FBZTtFQUVmLEtBQUs7RUFDTCxNQUFPLElBQUksT0FBTyxNQUFNLEVBQUUsS0FBSyxFQUFHO0lBQ2hDLElBQUksSUFBSSxBQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSyxLQUFPLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSyxJQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUU7SUFDdEUsTUFBTSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxHQUFHO0lBQy9CLE1BQU0sQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssS0FBSyxLQUFLO0lBQ3RDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssSUFBSSxLQUFLO0lBQ3JDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssSUFBSSxLQUFLO0lBQ3JDLElBQUksQUFBQyxLQUFLLEtBQU8sTUFBTSxDQUFDLElBQUksRUFBRSxJQUFLLElBQUssTUFBTSxDQUFDLEVBQUU7SUFDakQsTUFBTSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxLQUFLLEtBQUs7SUFDdEMsTUFBTSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxLQUFLLEtBQUs7SUFDdEMsTUFBTSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxJQUFJLEtBQUs7SUFDckMsTUFBTSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxLQUFLO0VBQ2xDO0VBQ0EsT0FBUTtJQUNOLEtBQUssT0FBTyxNQUFNLEdBQUc7TUFBRztRQUN0QixNQUFNLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxJQUFLO1FBQzVCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssR0FBRztRQUMvQixNQUFNLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEtBQUssS0FBSztRQUN0QyxNQUFNLENBQUMsSUFBSSxHQUFHO1FBQ2QsTUFBTSxDQUFDLElBQUksR0FBRztRQUNkLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDZCxNQUFNLENBQUMsSUFBSSxHQUFHO1FBQ2QsTUFBTSxDQUFDLElBQUksR0FBRztRQUNkLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDZDtNQUNGO0lBQ0EsS0FBSyxPQUFPLE1BQU0sR0FBRztNQUFHO1FBQ3RCLE1BQU0sSUFBSSxBQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSyxLQUFPLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSztRQUN0RCxNQUFNLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEdBQUc7UUFDL0IsTUFBTSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxLQUFLLEtBQUs7UUFDdEMsTUFBTSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxJQUFJLEtBQUs7UUFDckMsTUFBTSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxJQUFJLEtBQUs7UUFDckMsTUFBTSxDQUFDLElBQUksR0FBRztRQUNkLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDZCxNQUFNLENBQUMsSUFBSSxHQUFHO1FBQ2QsTUFBTSxDQUFDLElBQUksR0FBRztRQUNkO01BQ0Y7SUFDQSxLQUFLLE9BQU8sTUFBTSxHQUFHO01BQUc7UUFDdEIsSUFBSSxJQUFJLEFBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFLLEtBQU8sTUFBTSxDQUFDLElBQUksRUFBRSxJQUFLLElBQUssTUFBTSxDQUFDLElBQUksRUFBRTtRQUN0RSxNQUFNLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEdBQUc7UUFDL0IsTUFBTSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxLQUFLLEtBQUs7UUFDdEMsTUFBTSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxJQUFJLEtBQUs7UUFDckMsTUFBTSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxJQUFJLEtBQUs7UUFDckMsTUFBTTtRQUNOLE1BQU0sQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssS0FBSyxLQUFLO1FBQ3RDLE1BQU0sQ0FBQyxJQUFJLEdBQUc7UUFDZCxNQUFNLENBQUMsSUFBSSxHQUFHO1FBQ2QsTUFBTSxDQUFDLElBQUksR0FBRztRQUNkO01BQ0Y7SUFDQSxLQUFLLE9BQU8sTUFBTTtNQUFFO1FBQ2xCLElBQUksSUFBSSxBQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSyxLQUFPLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSyxJQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUU7UUFDdEUsTUFBTSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxHQUFHO1FBQy9CLE1BQU0sQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssS0FBSyxLQUFLO1FBQ3RDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssSUFBSSxLQUFLO1FBQ3JDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssSUFBSSxLQUFLO1FBQ3JDLElBQUksQUFBQyxLQUFLLEtBQU8sTUFBTSxDQUFDLElBQUksRUFBRSxJQUFLO1FBQ25DLE1BQU0sQ0FBQyxJQUFJLEdBQUcs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 +// denoCacheMetadata=9193889414007083690,17210230952693029698
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/49f6f053887d48ae744d6d0724488bdab682f647ddadaf5fecd0940c9be000d3.js b/vendor/gen/https/jsr.io/49f6f053887d48ae744d6d0724488bdab682f647ddadaf5fecd0940c9be000d3.js new file mode 100644 index 0000000..d1f09ac --- /dev/null +++ b/vendor/gen/https/jsr.io/49f6f053887d48ae744d6d0724488bdab682f647ddadaf5fecd0940c9be000d3.js @@ -0,0 +1,11 @@ +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2018-2025 the Deno authors. MIT license. +export const str = { + tag: "tag:yaml.org,2002:str", + kind: "scalar", + resolve: ()=>true, + construct: (data)=>data !== null ? data : "" +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQveWFtbC8xLjAuNi9fdHlwZS9zdHIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUG9ydGVkIGZyb20ganMteWFtbCB2My4xMy4xOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVjYS9qcy15YW1sL2NvbW1pdC82NjVhYWRkYTQyMzQ5ZGNhZTg2OWYxMjA0MGQ5YjEwZWYxOGQxMmRhXG4vLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuXG5pbXBvcnQgdHlwZSB7IFR5cGUgfSBmcm9tIFwiLi4vX3R5cGUudHNcIjtcblxuZXhwb3J0IGNvbnN0IHN0cjogVHlwZTxcInNjYWxhclwiLCBzdHJpbmc+ID0ge1xuICB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6c3RyXCIsXG4gIGtpbmQ6IFwic2NhbGFyXCIsXG4gIHJlc29sdmU6ICgpOiBib29sZWFuID0+IHRydWUsXG4gIGNvbnN0cnVjdDogKGRhdGE6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcgPT4gZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiBcIlwiLFxufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0Isb0ZBQW9GO0FBQ3BGLHFEQUFxRDtBQUlyRCxPQUFPLE1BQU0sTUFBOEI7RUFDekMsS0FBSztFQUNMLE1BQU07RUFDTixTQUFTLElBQWU7RUFDeEIsV0FBVyxDQUFDLE9BQWdDLFNBQVMsT0FBTyxPQUFPO0FBQ3JFLEVBQUUifQ== +// denoCacheMetadata=12443849193812171320,14762642957944446638
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/4a62cc9e15d67262b11752c2aa575b5bc71b9b3e832d30b8312e211c71d82358.js b/vendor/gen/https/jsr.io/4a62cc9e15d67262b11752c2aa575b5bc71b9b3e832d30b8312e211c71d82358.js new file mode 100644 index 0000000..156e628 --- /dev/null +++ b/vendor/gen/https/jsr.io/4a62cc9e15d67262b11752c2aa575b5bc71b9b3e832d30b8312e211c71d82358.js @@ -0,0 +1,25 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { common as _common } from "../_common/common.ts"; +import { SEPARATOR } from "./constants.ts"; +/** Determines the common path from a set of paths for POSIX systems. + * + * @example Usage + * ```ts + * import { common } from "@std/path/posix/common"; + * import { assertEquals } from "@std/assert"; + * + * const path = common([ + * "./deno/std/path/mod.ts", + * "./deno/std/fs/mod.ts", + * ]); + * assertEquals(path, "./deno/std/"); + * ``` + * + * @param paths The paths to compare. + * @returns The common path. + */ export function common(paths) { + return _common(paths, SEPARATOR); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9wb3NpeC9jb21tb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgY29tbW9uIGFzIF9jb21tb24gfSBmcm9tIFwiLi4vX2NvbW1vbi9jb21tb24udHNcIjtcbmltcG9ydCB7IFNFUEFSQVRPUiB9IGZyb20gXCIuL2NvbnN0YW50cy50c1wiO1xuXG4vKiogRGV0ZXJtaW5lcyB0aGUgY29tbW9uIHBhdGggZnJvbSBhIHNldCBvZiBwYXRocyBmb3IgUE9TSVggc3lzdGVtcy5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGNvbW1vbiB9IGZyb20gXCJAc3RkL3BhdGgvcG9zaXgvY29tbW9uXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBwYXRoID0gY29tbW9uKFtcbiAqICAgXCIuL2Rlbm8vc3RkL3BhdGgvbW9kLnRzXCIsXG4gKiAgIFwiLi9kZW5vL3N0ZC9mcy9tb2QudHNcIixcbiAqIF0pO1xuICogYXNzZXJ0RXF1YWxzKHBhdGgsIFwiLi9kZW5vL3N0ZC9cIik7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gcGF0aHMgVGhlIHBhdGhzIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyBUaGUgY29tbW9uIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21tb24ocGF0aHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgcmV0dXJuIF9jb21tb24ocGF0aHMsIFNFUEFSQVRPUik7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQyxTQUFTLFVBQVUsT0FBTyxRQUFRLHVCQUF1QjtBQUN6RCxTQUFTLFNBQVMsUUFBUSxpQkFBaUI7QUFFM0M7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FnQkMsR0FDRCxPQUFPLFNBQVMsT0FBTyxLQUFlO0VBQ3BDLE9BQU8sUUFBUSxPQUFPO0FBQ3hCIn0= +// denoCacheMetadata=5019980140798978530,16060386034926337416
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/4c8dda6c45b02ddbb9144d5293e9340bc17c145bacb4db4172d5d5fc5677d385.js b/vendor/gen/https/jsr.io/4c8dda6c45b02ddbb9144d5293e9340bc17c145bacb4db4172d5d5fc5677d385.js new file mode 100644 index 0000000..034e8d8 --- /dev/null +++ b/vendor/gen/https/jsr.io/4c8dda6c45b02ddbb9144d5293e9340bc17c145bacb4db4172d5d5fc5677d385.js @@ -0,0 +1,855 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// Documentation and interface for walk were adapted from Go +// https://golang.org/pkg/path/filepath/#Walk +// Copyright 2009 The Go Authors. All rights reserved. BSD license. +import { join } from "jsr:@std/path@^1.0.9/join"; +import { toPathString } from "./_to_path_string.ts"; +import { createWalkEntry, createWalkEntrySync } from "./_create_walk_entry.ts"; +function include(path, exts, match, skip) { + if (exts && !exts.some((ext)=>path.endsWith(ext))) { + return false; + } + if (match && !match.some((pattern)=>!!path.match(pattern))) { + return false; + } + if (skip && skip.some((pattern)=>!!path.match(pattern))) { + return false; + } + return true; +} +/** + * Recursively walks through a directory and yields information about each file + * and directory encountered. + * + * The root path determines whether the file paths are relative or absolute. + * The root directory is included in the yielded entries. + * + * Requires `--allow-read` permission. + * + * @see {@link https://docs.deno.com/runtime/manual/basics/permissions#file-system-access} + * for more information on Deno's permissions system. + * + * @param root The root directory to start the walk from, as a string or URL. + * @param options The options for the walk. + * @throws {Deno.errors.NotFound} If the root directory does not exist. + * + * @returns An async iterable iterator that yields the walk entry objects. + * + * @example Basic usage + * + * File structure: + * ``` + * folder + * ├── script.ts + * └── foo.ts + * ``` + * + * ```ts ignore + * import { walk } from "@std/fs/walk"; + * + * await Array.fromAsync(walk(".")); + * // [ + * // { + * // path: ".", + * // name: ".", + * // isFile: false, + * // isDirectory: true, + * // isSymlink: false + * // }, + * // { + * // path: "script.ts", + * // name: "script.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false + * // }, + * // { + * // path: "foo.ts", + * // name: "foo.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false + * // }, + * // ] + * ``` + * + * @example Maximum file depth + * + * Setting the `maxDepth` option to `1` will only include the root directory and + * its immediate children. + * + * File structure: + * ``` + * folder + * ├── script.ts + * └── foo + * └── bar.ts + * ``` + * + * ```ts ignore + * import { walk } from "@std/fs/walk"; + * + * await Array.fromAsync(walk(".", { maxDepth: 1 })); + * // [ + * // { + * // path: ".", + * // name: ".", + * // isFile: false, + * // isDirectory: true, + * // isSymlink: false + * // }, + * // { + * // path: "script.ts", + * // name: "script.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false + * // }, + * // { + * // path: "foo", + * // name: "foo", + * // isFile: false, + * // isDirectory: true, + * // isSymlink: false + * // }, + * // ] + * ``` + * + * @example Exclude files + * + * Setting the `includeFiles` option to `false` will exclude files. + * + * File structure: + * ``` + * folder + * ├── script.ts + * └── foo + * ``` + * + * ```ts ignore + * import { walk } from "@std/fs/walk"; + * + * await Array.fromAsync(walk(".", { includeFiles: false })); + * // [ + * // { + * // path: ".", + * // name: ".", + * // isFile: false, + * // isDirectory: true, + * // isSymlink: false + * // }, + * // { + * // path: "foo", + * // name: "foo", + * // isFile: false, + * // isDirectory: true, + * // isSymlink: false, + * // }, + * // ] + * ``` + * + * @example Exclude directories + * + * Setting the `includeDirs` option to `false` will exclude directories. + * + * File structure: + * ``` + * folder + * ├── script.ts + * └── foo + * ``` + * + * ```ts ignore + * import { walk } from "@std/fs/walk"; + * + * await Array.fromAsync(walk(".", { includeDirs: false })); + * // [ + * // { + * // path: "script.ts", + * // name: "script.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false + * // }, + * // ] + * ``` + * + * @example Exclude symbolic links + * + * Setting the `includeSymlinks` option to `false` will exclude symbolic links. + * + * File structure: + * ``` + * folder + * ├── script.ts + * ├── foo + * └── link -> script.ts (symbolic link) + * ``` + * + * ```ts ignore + * import { walk } from "@std/fs/walk"; + * + * await Array.fromAsync(walk(".", { includeSymlinks: false })); + * // [ + * // { + * // path: ".", + * // name: ".", + * // isFile: false, + * // isDirectory: true, + * // isSymlink: false + * // }, + * // { + * // path: "script.ts", + * // name: "script.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false + * // }, + * // ] + * ``` + * + * @example Follow symbolic links + * + * Setting the `followSymlinks` option to `true` will follow symbolic links, + * affecting the `path` property of the walk entry. + * + * File structure: + * ``` + * folder + * ├── script.ts + * └── link -> script.ts (symbolic link) + * ``` + * + * ```ts ignore + * import { walk } from "@std/fs/walk"; + * + * await Array.fromAsync(walk(".", { followSymlinks: true })); + * // [ + * // { + * // path: ".", + * // name: ".", + * // isFile: false, + * // isDirectory: true, + * // isSymlink: false + * // }, + * // { + * // path: "script.ts", + * // name: "script.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false + * // }, + * // { + * // path: "script.ts", + * // name: "link", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: true + * // }, + * // ] + * ``` + * + * @example Canonicalize symbolic links + * + * Setting the `canonicalize` option to `false` will canonicalize the path of + * the followed symbolic link. Meaning, the `path` property of the walk entry + * will be the path of the symbolic link itself. + * + * File structure: + * ``` + * folder + * ├── script.ts + * └── link -> script.ts (symbolic link) + * ``` + * + * ```ts ignore + * import { walk } from "@std/fs/walk"; + * + * await Array.fromAsync(walk(".", { followSymlinks: true, canonicalize: true })); + * // [ + * // { + * // path: ".", + * // name: ".", + * // isFile: false, + * // isDirectory: true, + * // isSymlink: false + * // }, + * // { + * // path: "script.ts", + * // name: "script.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false + * // }, + * // { + * // path: "link", + * // name: "link", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: true + * // }, + * // ] + * ``` + * + * @example Filter by file extensions + * + * Setting the `exts` option to `[".ts"]` or `["ts"]` will only include entries + * with the `.ts` file extension. + * + * File structure: + * ``` + * folder + * ├── script.ts + * └── foo.js + * ``` + * + * ```ts ignore + * import { walk } from "@std/fs/walk"; + * + * await Array.fromAsync(walk(".", { exts: [".ts"] })); + * // [ + * // { + * // path: "script.ts", + * // name: "script.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false + * // }, + * // ] + * ``` + * + * @example Filter by regular expressions + * + * Setting the `match` option to `[/.s/]` will only include entries with the + * letter `s` in their name. + * + * File structure: + * ``` + * folder + * ├── script.ts + * └── README.md + * ``` + * + * ```ts ignore + * import { walk } from "@std/fs/walk"; + * + * await Array.fromAsync(walk(".", { match: [/s/] })); + * // [ + * // { + * // path: "script.ts", + * // name: "script.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false + * // }, + * // ] + * ``` + * + * @example Exclude by regular expressions + * + * Setting the `skip` option to `[/.s/]` will exclude entries with the letter + * `s` in their name. + * + * File structure: + * ``` + * folder + * ├── script.ts + * └── README.md + * ``` + * + * ```ts ignore + * import { walk } from "@std/fs/walk"; + * + * await Array.fromAsync(walk(".", { skip: [/s/] })); + * // [ + * // { + * // path: "README.md", + * // name: "README.md", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false + * // }, + * // ] + * ``` + */ export async function* walk(root, options) { + let { maxDepth = Infinity, includeFiles = true, includeDirs = true, includeSymlinks = true, followSymlinks = false, canonicalize = true, exts = undefined, match = undefined, skip = undefined } = options ?? {}; + if (maxDepth < 0) { + return; + } + root = toPathString(root); + if (exts) { + exts = exts.map((ext)=>ext.startsWith(".") ? ext : `.${ext}`); + } + if (includeDirs && include(root, exts, match, skip)) { + yield await createWalkEntry(root); + } + if (maxDepth < 1 || !include(root, undefined, undefined, skip)) { + return; + } + for await (const entry of Deno.readDir(root)){ + let path = join(root, entry.name); + let { isSymlink, isDirectory } = entry; + if (isSymlink) { + if (!followSymlinks) { + if (includeSymlinks && include(path, exts, match, skip)) { + yield { + path, + ...entry + }; + } + continue; + } + const realPath = await Deno.realPath(path); + if (canonicalize) { + path = realPath; + } + // Caveat emptor: don't assume |path| is not a symlink. realpath() + // resolves symlinks but another process can replace the file system + // entity with a different type of entity before we call lstat(). + ({ isSymlink, isDirectory } = await Deno.lstat(realPath)); + } + if (isSymlink || isDirectory) { + const opts = { + maxDepth: maxDepth - 1, + includeFiles, + includeDirs, + includeSymlinks, + followSymlinks + }; + if (exts !== undefined) { + opts.exts = exts; + } + if (match !== undefined) { + opts.match = match; + } + if (skip !== undefined) { + opts.skip = skip; + } + yield* walk(path, opts); + } else if (includeFiles && include(path, exts, match, skip)) { + yield { + path, + ...entry + }; + } + } +} +/** + * Recursively walks through a directory and yields information about each file + * and directory encountered. + * + * The root path determines whether the file paths is relative or absolute. + * The root directory is included in the yielded entries. + * + * Requires `--allow-read` permission. + * + * @see {@link https://docs.deno.com/runtime/manual/basics/permissions#file-system-access} + * for more information on Deno's permissions system. + * + * @param root The root directory to start the walk from, as a string or URL. + * @param options The options for the walk. + * + * @returns A synchronous iterable iterator that yields the walk entry objects. + * + * @example Basic usage + * + * File structure: + * ``` + * folder + * ├── script.ts + * └── foo.ts + * ``` + * + * ```ts ignore + * import { walkSync } from "@std/fs/walk"; + * + * Array.from(walkSync(".")); + * // [ + * // { + * // path: ".", + * // name: ".", + * // isFile: false, + * // isDirectory: true, + * // isSymlink: false + * // }, + * // { + * // path: "script.ts", + * // name: "script.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false + * // }, + * // { + * // path: "foo.ts", + * // name: "foo.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false + * // }, + * // ] + * ``` + * + * @example Maximum file depth + * + * Setting the `maxDepth` option to `1` will only include the root directory and + * its immediate children. + * + * File structure: + * ``` + * folder + * ├── script.ts + * └── foo + * └── bar.ts + * ``` + * + * ```ts ignore + * import { walkSync } from "@std/fs/walk"; + * + * Array.from(walkSync(".", { maxDepth: 1 })); + * // [ + * // { + * // path: ".", + * // name: ".", + * // isFile: false, + * // isDirectory: true, + * // isSymlink: false + * // }, + * // { + * // path: "script.ts", + * // name: "script.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false + * // }, + * // { + * // path: "foo", + * // name: "foo", + * // isFile: false, + * // isDirectory: true, + * // isSymlink: false + * // }, + * // ] + * ``` + * + * @example Exclude files + * + * Setting the `includeFiles` option to `false` will exclude files. + * + * File structure: + * ``` + * folder + * ├── script.ts + * └── foo + * ``` + * + * ```ts ignore + * import { walkSync } from "@std/fs/walk"; + * + * Array.from(walkSync(".", { includeFiles: false })); + * // [ + * // { + * // path: ".", + * // name: ".", + * // isFile: false, + * // isDirectory: true, + * // isSymlink: false + * // }, + * // { + * // path: "foo", + * // name: "foo", + * // isFile: false, + * // isDirectory: true, + * // isSymlink: false, + * // }, + * // ] + * ``` + * + * @example Exclude directories + * + * Setting the `includeDirs` option to `false` will exclude directories. + * + * File structure: + * ``` + * folder + * ├── script.ts + * └── foo + * ``` + * + * ```ts ignore + * import { walkSync } from "@std/fs/walk"; + * + * Array.from(walkSync(".", { includeDirs: false })); + * // [ + * // { + * // path: "script.ts", + * // name: "script.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false + * // }, + * // ] + * ``` + * + * @example Exclude symbolic links + * + * Setting the `includeSymlinks` option to `false` will exclude symbolic links. + * + * File structure: + * ``` + * folder + * ├── script.ts + * ├── foo + * └── link -> script.ts (symbolic link) + * ``` + * + * ```ts ignore + * import { walkSync } from "@std/fs/walk"; + * + * Array.from(walkSync(".", { includeSymlinks: false })); + * // [ + * // { + * // path: ".", + * // name: ".", + * // isFile: false, + * // isDirectory: true, + * // isSymlink: false + * // }, + * // { + * // path: "script.ts", + * // name: "script.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false + * // }, + * // ] + * ``` + * + * @example Follow symbolic links + * + * Setting the `followSymlinks` option to `true` will follow symbolic links, + * affecting the `path` property of the walk entry. + * + * File structure: + * ``` + * folder + * ├── script.ts + * └── link -> script.ts (symbolic link) + * ``` + * + * ```ts ignore + * import { walkSync } from "@std/fs/walk"; + * + * Array.from(walkSync(".", { followSymlinks: true })); + * // [ + * // { + * // path: ".", + * // name: ".", + * // isFile: false, + * // isDirectory: true, + * // isSymlink: false + * // }, + * // { + * // path: "script.ts", + * // name: "script.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false + * // }, + * // { + * // path: "script.ts", + * // name: "link", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: true + * // }, + * // ] + * ``` + * + * @example Canonicalize symbolic links + * + * Setting the `canonicalize` option to `false` will canonicalize the path of + * the followed symbolic link. Meaning, the `path` property of the walk entry + * will be the path of the symbolic link itself. + * + * File structure: + * ``` + * folder + * ├── script.ts + * └── link -> script.ts (symbolic link) + * ``` + * + * ```ts ignore + * import { walkSync } from "@std/fs/walk"; + * + * Array.from(walkSync(".", { followSymlinks: true, canonicalize: true })); + * // [ + * // { + * // path: ".", + * // name: ".", + * // isFile: false, + * // isDirectory: true, + * // isSymlink: false + * // }, + * // { + * // path: "script.ts", + * // name: "script.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false + * // }, + * // { + * // path: "link", + * // name: "link", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: true + * // }, + * // ] + * ``` + * + * @example Filter by file extensions + * + * Setting the `exts` option to `[".ts"]` or `["ts"]` will only include entries + * with the `.ts` file extension. + * + * File structure: + * ``` + * folder + * ├── script.ts + * └── foo.js + * ``` + * + * ```ts ignore + * import { walkSync } from "@std/fs/walk"; + * + * Array.from(walkSync(".", { exts: [".ts"] })); + * // [ + * // { + * // path: "script.ts", + * // name: "script.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false + * // }, + * // ] + * ``` + * + * @example Filter by regular expressions + * + * Setting the `match` option to `[/.s/]` will only include entries with the + * letter `s` in their name. + * + * File structure: + * ``` + * folder + * ├── script.ts + * └── README.md + * ``` + * + * ```ts ignore + * import { walkSync } from "@std/fs/walk"; + * + * Array.from(walkSync(".", { match: [/s/] })); + * // [ + * // { + * // path: "script.ts", + * // name: "script.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false + * // }, + * // ] + * ``` + * + * @example Exclude by regular expressions + * + * Setting the `skip` option to `[/.s/]` will exclude entries with the letter + * `s` in their name. + * + * File structure: + * ``` + * folder + * ├── script.ts + * └── README.md + * ``` + * + * ```ts ignore + * import { walkSync } from "@std/fs/walk"; + * + * Array.from(walkSync(".", { skip: [/s/] })); + * // [ + * // { + * // path: "README.md", + * // name: "README.md", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false + * // }, + * // ] + * ``` + */ export function* walkSync(root, options) { + let { maxDepth = Infinity, includeFiles = true, includeDirs = true, includeSymlinks = true, followSymlinks = false, canonicalize = true, exts = undefined, match = undefined, skip = undefined } = options ?? {}; + root = toPathString(root); + if (exts) { + exts = exts.map((ext)=>ext.startsWith(".") ? ext : `.${ext}`); + } + if (maxDepth < 0) { + return; + } + if (includeDirs && include(root, exts, match, skip)) { + yield createWalkEntrySync(root); + } + if (maxDepth < 1 || !include(root, undefined, undefined, skip)) { + return; + } + const entries = Deno.readDirSync(root); + for (const entry of entries){ + let path = join(root, entry.name); + let { isSymlink, isDirectory } = entry; + if (isSymlink) { + if (!followSymlinks) { + if (includeSymlinks && include(path, exts, match, skip)) { + yield { + path, + ...entry + }; + } + continue; + } + const realPath = Deno.realPathSync(path); + if (canonicalize) { + path = realPath; + } + // Caveat emptor: don't assume |path| is not a symlink. realpath() + // resolves symlinks but another process can replace the file system + // entity with a different type of entity before we call lstat(). + ({ isSymlink, isDirectory } = Deno.lstatSync(realPath)); + } + if (isSymlink || isDirectory) { + const opts = { + maxDepth: maxDepth - 1, + includeFiles, + includeDirs, + includeSymlinks, + followSymlinks + }; + if (exts !== undefined) { + opts.exts = exts; + } + if (match !== undefined) { + opts.match = match; + } + if (skip !== undefined) { + opts.skip = skip; + } + yield* walkSync(path, opts); + } else if (includeFiles && include(path, exts, match, skip)) { + yield { + path, + ...entry + }; + } + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnMvMS4wLjE3L3dhbGsudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIERvY3VtZW50YXRpb24gYW5kIGludGVyZmFjZSBmb3Igd2FsayB3ZXJlIGFkYXB0ZWQgZnJvbSBHb1xuLy8gaHR0cHM6Ly9nb2xhbmcub3JnL3BrZy9wYXRoL2ZpbGVwYXRoLyNXYWxrXG4vLyBDb3B5cmlnaHQgMjAwOSBUaGUgR28gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gQlNEIGxpY2Vuc2UuXG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcImpzcjpAc3RkL3BhdGhAXjEuMC45L2pvaW5cIjtcbmltcG9ydCB7IHRvUGF0aFN0cmluZyB9IGZyb20gXCIuL190b19wYXRoX3N0cmluZy50c1wiO1xuaW1wb3J0IHtcbiAgY3JlYXRlV2Fsa0VudHJ5LFxuICBjcmVhdGVXYWxrRW50cnlTeW5jLFxuICB0eXBlIFdhbGtFbnRyeSxcbn0gZnJvbSBcIi4vX2NyZWF0ZV93YWxrX2VudHJ5LnRzXCI7XG5cbmZ1bmN0aW9uIGluY2x1ZGUoXG4gIHBhdGg6IHN0cmluZyxcbiAgZXh0cz86IHN0cmluZ1tdLFxuICBtYXRjaD86IFJlZ0V4cFtdLFxuICBza2lwPzogUmVnRXhwW10sXG4pOiBib29sZWFuIHtcbiAgaWYgKGV4dHMgJiYgIWV4dHMuc29tZSgoZXh0KTogYm9vbGVhbiA9PiBwYXRoLmVuZHNXaXRoKGV4dCkpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChtYXRjaCAmJiAhbWF0Y2guc29tZSgocGF0dGVybik6IGJvb2xlYW4gPT4gISFwYXRoLm1hdGNoKHBhdHRlcm4pKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoc2tpcCAmJiBza2lwLnNvbWUoKHBhdHRlcm4pOiBib29sZWFuID0+ICEhcGF0aC5tYXRjaChwYXR0ZXJuKSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKiBPcHRpb25zIGZvciB7QGxpbmtjb2RlIHdhbGt9IGFuZCB7QGxpbmtjb2RlIHdhbGtTeW5jfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2Fsa09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG1heGltdW0gZGVwdGggb2YgdGhlIGZpbGUgdHJlZSB0byBiZSB3YWxrZWQgcmVjdXJzaXZlbHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtJbmZpbml0eX1cbiAgICovXG4gIG1heERlcHRoPzogbnVtYmVyO1xuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgZmlsZSBlbnRyaWVzIHNob3VsZCBiZSBpbmNsdWRlZCBvciBub3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IHt0cnVlfVxuICAgKi9cbiAgaW5jbHVkZUZpbGVzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIGRpcmVjdG9yeSBlbnRyaWVzIHNob3VsZCBiZSBpbmNsdWRlZCBvciBub3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IHt0cnVlfVxuICAgKi9cbiAgaW5jbHVkZURpcnM/OiBib29sZWFuO1xuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgc3ltbGluayBlbnRyaWVzIHNob3VsZCBiZSBpbmNsdWRlZCBvciBub3QuXG4gICAqIFRoaXMgb3B0aW9uIGlzIG1lYW5pbmdmdWwgb25seSBpZiBgZm9sbG93U3ltbGlua3NgIGlzIHNldCB0byBgZmFsc2VgLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7dHJ1ZX1cbiAgICovXG4gIGluY2x1ZGVTeW1saW5rcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBzeW1saW5rcyBzaG91bGQgYmUgcmVzb2x2ZWQgb3Igbm90LlxuICAgKlxuICAgKiBAZGVmYXVsdCB7ZmFsc2V9XG4gICAqL1xuICBmb2xsb3dTeW1saW5rcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZm9sbG93ZWQgc3ltbGluaydzIHBhdGggc2hvdWxkIGJlIGNhbm9uaWNhbGl6ZWQuXG4gICAqIFRoaXMgb3B0aW9uIHdvcmtzIG9ubHkgaWYgYGZvbGxvd1N5bWxpbmtzYCBpcyBub3QgYGZhbHNlYC5cbiAgICpcbiAgICogQGRlZmF1bHQge3RydWV9XG4gICAqL1xuICBjYW5vbmljYWxpemU/OiBib29sZWFuO1xuICAvKipcbiAgICogTGlzdCBvZiBmaWxlIGV4dGVuc2lvbnMgdXNlZCB0byBmaWx0ZXIgZW50cmllcy5cbiAgICogSWYgc3BlY2lmaWVkLCBlbnRyaWVzIHdpdGhvdXQgdGhlIGZpbGUgZXh0ZW5zaW9uIHNwZWNpZmllZCBieSB0aGlzIG9wdGlvblxuICAgKiBhcmUgZXhjbHVkZWQuXG4gICAqXG4gICAqIEZpbGUgZXh0ZW5zaW9ucyB3aXRoIG9yIHdpdGhvdXQgYSBsZWFkaW5nIHBlcmlvZCBhcmUgYWNjZXB0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtbXX1cbiAgICovXG4gIGV4dHM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIExpc3Qgb2YgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm5zIHVzZWQgdG8gZmlsdGVyIGVudHJpZXMuXG4gICAqIElmIHNwZWNpZmllZCwgZW50cmllcyB0aGF0IGRvIG5vdCBtYXRjaCB0aGUgcGF0dGVybnMgc3BlY2lmaWVkIGJ5IHRoaXNcbiAgICogb3B0aW9uIGFyZSBleGNsdWRlZC5cbiAgICovXG4gIG1hdGNoPzogUmVnRXhwW107XG4gIC8qKlxuICAgKiBMaXN0IG9mIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJucyB1c2VkIHRvIGZpbHRlciBlbnRyaWVzLlxuICAgKiBJZiBzcGVjaWZpZWQsIGVudHJpZXMgbWF0Y2hpbmcgdGhlIHBhdHRlcm5zIHNwZWNpZmllZCBieSB0aGlzIG9wdGlvbiBhcmVcbiAgICogZXhjbHVkZWQuXG4gICAqL1xuICBza2lwPzogUmVnRXhwW107XG59XG5leHBvcnQgdHlwZSB7IFdhbGtFbnRyeSB9O1xuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IHdhbGtzIHRocm91Z2ggYSBkaXJlY3RvcnkgYW5kIHlpZWxkcyBpbmZvcm1hdGlvbiBhYm91dCBlYWNoIGZpbGVcbiAqIGFuZCBkaXJlY3RvcnkgZW5jb3VudGVyZWQuXG4gKlxuICogVGhlIHJvb3QgcGF0aCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGZpbGUgcGF0aHMgYXJlIHJlbGF0aXZlIG9yIGFic29sdXRlLlxuICogVGhlIHJvb3QgZGlyZWN0b3J5IGlzIGluY2x1ZGVkIGluIHRoZSB5aWVsZGVkIGVudHJpZXMuXG4gKlxuICogUmVxdWlyZXMgYC0tYWxsb3ctcmVhZGAgcGVybWlzc2lvbi5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2RvY3MuZGVuby5jb20vcnVudGltZS9tYW51YWwvYmFzaWNzL3Blcm1pc3Npb25zI2ZpbGUtc3lzdGVtLWFjY2Vzc31cbiAqIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIERlbm8ncyBwZXJtaXNzaW9ucyBzeXN0ZW0uXG4gKlxuICogQHBhcmFtIHJvb3QgVGhlIHJvb3QgZGlyZWN0b3J5IHRvIHN0YXJ0IHRoZSB3YWxrIGZyb20sIGFzIGEgc3RyaW5nIG9yIFVSTC5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgd2Fsay5cbiAqIEB0aHJvd3Mge0Rlbm8uZXJyb3JzLk5vdEZvdW5kfSBJZiB0aGUgcm9vdCBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QuXG4gKlxuICogQHJldHVybnMgQW4gYXN5bmMgaXRlcmFibGUgaXRlcmF0b3IgdGhhdCB5aWVsZHMgdGhlIHdhbGsgZW50cnkgb2JqZWN0cy5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICpcbiAqIEZpbGUgc3RydWN0dXJlOlxuICogYGBgXG4gKiBmb2xkZXJcbiAqIOKUnOKUgOKUgCBzY3JpcHQudHNcbiAqIOKUlOKUgOKUgCBmb28udHNcbiAqIGBgYFxuICpcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgd2FsayB9IGZyb20gXCJAc3RkL2ZzL3dhbGtcIjtcbiAqXG4gKiBhd2FpdCBBcnJheS5mcm9tQXN5bmMod2FsayhcIi5cIikpO1xuICogLy8gW1xuICogLy8gICB7XG4gKiAvLyAgICAgcGF0aDogXCIuXCIsXG4gKiAvLyAgICAgbmFtZTogXCIuXCIsXG4gKiAvLyAgICAgaXNGaWxlOiBmYWxzZSxcbiAqIC8vICAgICBpc0RpcmVjdG9yeTogdHJ1ZSxcbiAqIC8vICAgICBpc1N5bWxpbms6IGZhbHNlXG4gKiAvLyAgIH0sXG4gKiAvLyAgIHtcbiAqIC8vICAgICBwYXRoOiBcInNjcmlwdC50c1wiLFxuICogLy8gICAgIG5hbWU6IFwic2NyaXB0LnRzXCIsXG4gKiAvLyAgICAgaXNGaWxlOiB0cnVlLFxuICogLy8gICAgIGlzRGlyZWN0b3J5OiBmYWxzZSxcbiAqIC8vICAgICBpc1N5bWxpbms6IGZhbHNlXG4gKiAvLyAgIH0sXG4gKiAvLyAgIHtcbiAqIC8vICAgICBwYXRoOiBcImZvby50c1wiLFxuICogLy8gICAgIG5hbWU6IFwiZm9vLnRzXCIsXG4gKiAvLyAgICAgaXNGaWxlOiB0cnVlLFxuICogLy8gICAgIGlzRGlyZWN0b3J5OiBmYWxzZSxcbiAqIC8vICAgICBpc1N5bWxpbms6IGZhbHNlXG4gKiAvLyAgIH0sXG4gKiAvLyBdXG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBNYXhpbXVtIGZpbGUgZGVwdGhcbiAqXG4gKiBTZXR0aW5nIHRoZSBgbWF4RGVwdGhgIG9wdGlvbiB0byBgMWAgd2lsbCBvbmx5IGluY2x1ZGUgdGhlIHJvb3QgZGlyZWN0b3J5IGFuZFxuICogaXRzIGltbWVkaWF0ZSBjaGlsZHJlbi5cbiAqXG4gKiBGaWxlIHN0cnVjdHVyZTpcbiAqIGBgYFxuICogZm9sZGVyXG4gKiDilJzilIDilIAgc2NyaXB0LnRzXG4gKiDilJTilIDilIAgZm9vXG4gKiAgICAg4pSU4pSA4pSAIGJhci50c1xuICogYGBgXG4gKlxuICogYGBgdHMgaWdub3JlXG4gKiBpbXBvcnQgeyB3YWxrIH0gZnJvbSBcIkBzdGQvZnMvd2Fsa1wiO1xuICpcbiAqIGF3YWl0IEFycmF5LmZyb21Bc3luYyh3YWxrKFwiLlwiLCB7IG1heERlcHRoOiAxIH0pKTtcbiAqIC8vIFtcbiAqIC8vICAge1xuICogLy8gICAgIHBhdGg6IFwiLlwiLFxuICogLy8gICAgIG5hbWU6IFwiLlwiLFxuICogLy8gICAgIGlzRmlsZTogZmFsc2UsXG4gKiAvLyAgICAgaXNEaXJlY3Rvcnk6IHRydWUsXG4gKiAvLyAgICAgaXNTeW1saW5rOiBmYWxzZVxuICogLy8gICB9LFxuICogLy8gICB7XG4gKiAvLyAgICAgcGF0aDogXCJzY3JpcHQudHNcIixcbiAqIC8vICAgICBuYW1lOiBcInNjcmlwdC50c1wiLFxuICogLy8gICAgIGlzRmlsZTogdHJ1ZSxcbiAqIC8vICAgICBpc0RpcmVjdG9yeTogZmFsc2UsXG4gKiAvLyAgICAgaXNTeW1saW5rOiBmYWxzZVxuICogLy8gICB9LFxuICogLy8gICB7XG4gKiAvLyAgICAgcGF0aDogXCJmb29cIixcbiAqIC8vICAgICBuYW1lOiBcImZvb1wiLFxuICogLy8gICAgIGlzRmlsZTogZmFsc2UsXG4gKiAvLyAgICAgaXNEaXJlY3Rvcnk6IHRydWUsXG4gKiAvLyAgICAgaXNTeW1saW5rOiBmYWxzZVxuICogLy8gICB9LFxuICogLy8gXVxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgRXhjbHVkZSBmaWxlc1xuICpcbiAqIFNldHRpbmcgdGhlIGBpbmNsdWRlRmlsZXNgIG9wdGlvbiB0byBgZmFsc2VgIHdpbGwgZXhjbHVkZSBmaWxlcy5cbiAqXG4gKiBGaWxlIHN0cnVjdHVyZTpcbiAqIGBgYFxuICogZm9sZGVyXG4gKiDilJzilIDilIAgc2NyaXB0LnRzXG4gKiDilJTilIDilIAgZm9vXG4gKiBgYGBcbiAqXG4gKiBgYGB0cyBpZ25vcmVcbiAqIGltcG9ydCB7IHdhbGsgfSBmcm9tIFwiQHN0ZC9mcy93YWxrXCI7XG4gKlxuICogYXdhaXQgQXJyYXkuZnJvbUFzeW5jKHdhbGsoXCIuXCIsIHsgaW5jbHVkZUZpbGVzOiBmYWxzZSB9KSk7XG4gKiAvLyBbXG4gKiAvLyAgIHtcbiAqIC8vICAgICBwYXRoOiBcIi5cIixcbiAqIC8vICAgICBuYW1lOiBcIi5cIixcbiAqIC8vICAgICBpc0ZpbGU6IGZhbHNlLFxuICogLy8gICAgIGlzRGlyZWN0b3J5OiB0cnVlLFxuICogLy8gICAgIGlzU3ltbGluazogZmFsc2VcbiAqIC8vICAgfSxcbiAqIC8vICAge1xuICogLy8gICAgIHBhdGg6IFwiZm9vXCIsXG4gKiAvLyAgICAgbmFtZTogXCJmb29cIixcbiAqIC8vICAgICBpc0ZpbGU6IGZhbHNlLFxuICogLy8gICAgIGlzRGlyZWN0b3J5OiB0cnVlLFxuICogLy8gICAgIGlzU3ltbGluazogZmFsc2UsXG4gKiAvLyAgIH0sXG4gKiAvLyBdXG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBFeGNsdWRlIGRpcmVjdG9yaWVzXG4gKlxuICogU2V0dGluZyB0aGUgYGluY2x1ZGVEaXJzYCBvcHRpb24gdG8gYGZhbHNlYCB3aWxsIGV4Y2x1ZGUgZGlyZWN0b3JpZXMuXG4gKlxuICogRmlsZSBzdHJ1Y3R1cmU6XG4gKiBgYGBcbiAqIGZvbGRlclxuICog4pSc4pSA4pSAIHNjcmlwdC50c1xuICog4pSU4pSA4pSAIGZvb1xuICogYGBgXG4gKlxuICogYGBgdHMgaWdub3JlXG4gKiBpbXBvcnQgeyB3YWxrIH0gZnJvbSBcIkBzdGQvZnMvd2Fsa1wiO1xuICpcbiAqIGF3YWl0IEFycmF5LmZyb21Bc3luYyh3YWxrKFwiLlwiLCB7IGluY2x1ZGVEaXJzOiBmYWxzZSB9KSk7XG4gKiAvLyBbXG4gKiAvLyAgIHtcbiAqIC8vICAgICBwYXRoOiBcInNjcmlwdC50c1wiLFxuICogLy8gICAgIG5hbWU6IFwic2NyaXB0LnRzXCIsXG4gKiAvLyAgICAgaXNGaWxlOiB0cnVlLFxuICogLy8gICAgIGlzRGlyZWN0b3J5OiBmYWxzZSxcbiAqIC8vICAgICBpc1N5bWxpbms6IGZhbHNlXG4gKiAvLyAgIH0sXG4gKiAvLyBdXG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBFeGNsdWRlIHN5bWJvbGljIGxpbmtzXG4gKlxuICogU2V0dGluZyB0aGUgYGluY2x1ZGVTeW1saW5rc2Agb3B0aW9uIHRvIGBmYWxzZWAgd2lsbCBleGNsdWRlIHN5bWJvbGljIGxpbmtzLlxuICpcbiAqIEZpbGUgc3RydWN0dXJlOlxuICogYGBgXG4gKiBmb2xkZXJcbiAqIOKUnOKUgOKUgCBzY3JpcHQudHNcbiAqIOKUnOKUgOKUgCBmb29cbiAqIOKUlOKUgOKUgCBsaW5rIC0+IHNjcmlwdC50cyAoc3ltYm9saWMgbGluaylcbiAqIGBgYFxuICpcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgd2FsayB9IGZyb20gXCJAc3RkL2ZzL3dhbGtcIjtcbiAqXG4gKiBhd2FpdCBBcnJheS5mcm9tQXN5bmMod2FsayhcIi5cIiwgeyBpbmNsdWRlU3ltbGlua3M6IGZhbHNlIH0pKTtcbiAqIC8vIFtcbiAqIC8vICAge1xuICogLy8gICAgIHBhdGg6IFwiLlwiLFxuICogLy8gICAgIG5hbWU6IFwiLlwiLFxuICogLy8gICAgIGlzRmlsZTogZmFsc2UsXG4gKiAvLyAgICAgaXNEaXJlY3Rvcnk6IHRydWUsXG4gKiAvLyAgICAgaXNTeW1saW5rOiBmYWxzZVxuICogLy8gICB9LFxuICogLy8gICB7XG4gKiAvLyAgICAgcGF0aDogXCJzY3JpcHQudHNcIixcbiAqIC8vICAgICBuYW1lOiBcInNjcmlwdC50c1wiLFxuICogLy8gICAgIGlzRmlsZTogdHJ1ZSxcbiAqIC8vICAgICBpc0RpcmVjdG9yeTogZmFsc2UsXG4gKiAvLyAgICAgaXNTeW1saW5rOiBmYWxzZVxuICogLy8gICB9LFxuICogLy8gXVxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgRm9sbG93IHN5bWJvbGljIGxpbmtzXG4gKlxuICogU2V0dGluZyB0aGUgYGZvbGxvd1N5bWxpbmtzYCBvcHRpb24gdG8gYHRydWVgIHdpbGwgZm9sbG93IHN5bWJvbGljIGxpbmtzLFxuICogYWZmZWN0aW5nIHRoZSBgcGF0aGAgcHJvcGVydHkgb2YgdGhlIHdhbGsgZW50cnkuXG4gKlxuICogRmlsZSBzdHJ1Y3R1cmU6XG4gKiBgYGBcbiAqIGZvbGRlclxuICog4pSc4pSA4pSAIHNjcmlwdC50c1xuICog4pSU4pSA4pSAIGxpbmsgLT4gc2NyaXB0LnRzIChzeW1ib2xpYyBsaW5rKVxuICogYGBgXG4gKlxuICogYGBgdHMgaWdub3JlXG4gKiBpbXBvcnQgeyB3YWxrIH0gZnJvbSBcIkBzdGQvZnMvd2Fsa1wiO1xuICpcbiAqIGF3YWl0IEFycmF5LmZyb21Bc3luYyh3YWxrKFwiLlwiLCB7IGZvbGxvd1N5bWxpbmtzOiB0cnVlIH0pKTtcbiAqIC8vIFtcbiAqIC8vICAge1xuICogLy8gICAgIHBhdGg6IFwiLlwiLFxuICogLy8gICAgIG5hbWU6IFwiLlwiLFxuICogLy8gICAgIGlzRmlsZTogZmFsc2UsXG4gKiAvLyAgICAgaXNEaXJlY3Rvcnk6IHRydWUsXG4gKiAvLyAgICAgaXNTeW1saW5rOiBmYWxzZVxuICogLy8gICB9LFxuICogLy8gICB7XG4gKiAvLyAgICAgcGF0aDogXCJzY3JpcHQudHNcIixcbiAqIC8vICAgICBuYW1lOiBcInNjcmlwdC50c1wiLFxuICogLy8gICAgIGlzRmlsZTogdHJ1ZSxcbiAqIC8vICAgICBpc0RpcmVjdG9yeTogZmFsc2UsXG4gKiAvLyAgICAgaXNTeW1saW5rOiBmYWxzZVxuICogLy8gICB9LFxuICogLy8gICB7XG4gKiAvLyAgICAgcGF0aDogXCJzY3JpcHQudHNcIixcbiAqIC8vICAgICBuYW1lOiBcImxpbmtcIixcbiAqIC8vICAgICBpc0ZpbGU6IHRydWUsXG4gKiAvLyAgICAgaXNEaXJlY3Rvcnk6IGZhbHNlLFxuICogLy8gICAgIGlzU3ltbGluazogdHJ1ZVxuICogLy8gICB9LFxuICogLy8gXVxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQ2Fub25pY2FsaXplIHN5bWJvbGljIGxpbmtzXG4gKlxuICogU2V0dGluZyB0aGUgYGNhbm9uaWNhbGl6ZWAgb3B0aW9uIHRvIGBmYWxzZWAgd2lsbCBjYW5vbmljYWxpemUgdGhlIHBhdGggb2ZcbiAqIHRoZSBmb2xsb3dlZCBzeW1ib2xpYyBsaW5rLiBNZWFuaW5nLCB0aGUgYHBhdGhgIHByb3BlcnR5IG9mIHRoZSB3YWxrIGVudHJ5XG4gKiB3aWxsIGJlIHRoZSBwYXRoIG9mIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZi5cbiAqXG4gKiBGaWxlIHN0cnVjdHVyZTpcbiAqIGBgYFxuICogZm9sZGVyXG4gKiDilJzilIDilIAgc2NyaXB0LnRzXG4gKiDilJTilIDilIAgbGluayAtPiBzY3JpcHQudHMgKHN5bWJvbGljIGxpbmspXG4gKiBgYGBcbiAqXG4gKiBgYGB0cyBpZ25vcmVcbiAqIGltcG9ydCB7IHdhbGsgfSBmcm9tIFwiQHN0ZC9mcy93YWxrXCI7XG4gKlxuICogYXdhaXQgQXJyYXkuZnJvbUFzeW5jKHdhbGsoXCIuXCIsIHsgZm9sbG93U3ltbGlua3M6IHRydWUsIGNhbm9uaWNhbGl6ZTogdHJ1ZSB9KSk7XG4gKiAvLyBbXG4gKiAvLyAgIHtcbiAqIC8vICAgICBwYXRoOiBcIi5cIixcbiAqIC8vICAgICBuYW1lOiBcIi5cIixcbiAqIC8vICAgICBpc0ZpbGU6IGZhbHNlLFxuICogLy8gICAgIGlzRGlyZWN0b3J5OiB0cnVlLFxuICogLy8gICAgIGlzU3ltbGluazogZmFsc2VcbiAqIC8vICAgfSxcbiAqIC8vICAge1xuICogLy8gICAgIHBhdGg6IFwic2NyaXB0LnRzXCIsXG4gKiAvLyAgICAgbmFtZTogXCJzY3JpcHQudHNcIixcbiAqIC8vICAgICBpc0ZpbGU6IHRydWUsXG4gKiAvLyAgICAgaXNEaXJlY3Rvcnk6IGZhbHNlLFxuICogLy8gICAgIGlzU3ltbGluazogZmFsc2VcbiAqIC8vICAgfSxcbiAqIC8vICAge1xuICogLy8gICAgIHBhdGg6IFwibGlua1wiLFxuICogLy8gICAgIG5hbWU6IFwibGlua1wiLFxuICogLy8gICAgIGlzRmlsZTogdHJ1ZSxcbiAqIC8vICAgICBpc0RpcmVjdG9yeTogZmFsc2UsXG4gKiAvLyAgICAgaXNTeW1saW5rOiB0cnVlXG4gKiAvLyAgIH0sXG4gKiAvLyBdXG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBGaWx0ZXIgYnkgZmlsZSBleHRlbnNpb25zXG4gKlxuICogU2V0dGluZyB0aGUgYGV4dHNgIG9wdGlvbiB0byBgW1wiLnRzXCJdYCBvciBgW1widHNcIl1gIHdpbGwgb25seSBpbmNsdWRlIGVudHJpZXNcbiAqIHdpdGggdGhlIGAudHNgIGZpbGUgZXh0ZW5zaW9uLlxuICpcbiAqIEZpbGUgc3RydWN0dXJlOlxuICogYGBgXG4gKiBmb2xkZXJcbiAqIOKUnOKUgOKUgCBzY3JpcHQudHNcbiAqIOKUlOKUgOKUgCBmb28uanNcbiAqIGBgYFxuICpcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgd2FsayB9IGZyb20gXCJAc3RkL2ZzL3dhbGtcIjtcbiAqXG4gKiBhd2FpdCBBcnJheS5mcm9tQXN5bmMod2FsayhcIi5cIiwgeyBleHRzOiBbXCIudHNcIl0gfSkpO1xuICogLy8gW1xuICogLy8gICB7XG4gKiAvLyAgICAgcGF0aDogXCJzY3JpcHQudHNcIixcbiAqIC8vICAgICBuYW1lOiBcInNjcmlwdC50c1wiLFxuICogLy8gICAgIGlzRmlsZTogdHJ1ZSxcbiAqIC8vICAgICBpc0RpcmVjdG9yeTogZmFsc2UsXG4gKiAvLyAgICAgaXNTeW1saW5rOiBmYWxzZVxuICogLy8gICB9LFxuICogLy8gXVxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgRmlsdGVyIGJ5IHJlZ3VsYXIgZXhwcmVzc2lvbnNcbiAqXG4gKiBTZXR0aW5nIHRoZSBgbWF0Y2hgIG9wdGlvbiB0byBgWy8ucy9dYCB3aWxsIG9ubHkgaW5jbHVkZSBlbnRyaWVzIHdpdGggdGhlXG4gKiBsZXR0ZXIgYHNgIGluIHRoZWlyIG5hbWUuXG4gKlxuICogRmlsZSBzdHJ1Y3R1cmU6XG4gKiBgYGBcbiAqIGZvbGRlclxuICog4pSc4pSA4pSAIHNjcmlwdC50c1xuICog4pSU4pSA4pSAIFJFQURNRS5tZFxuICogYGBgXG4gKlxuICogYGBgdHMgaWdub3JlXG4gKiBpbXBvcnQgeyB3YWxrIH0gZnJvbSBcIkBzdGQvZnMvd2Fsa1wiO1xuICpcbiAqIGF3YWl0IEFycmF5LmZyb21Bc3luYyh3YWxrKFwiLlwiLCB7IG1hdGNoOiBbL3MvXSB9KSk7XG4gKiAvLyBbXG4gKiAvLyAgIHtcbiAqIC8vICAgICBwYXRoOiBcInNjcmlwdC50c1wiLFxuICogLy8gICAgIG5hbWU6IFwic2NyaXB0LnRzXCIsXG4gKiAvLyAgICAgaXNGaWxlOiB0cnVlLFxuICogLy8gICAgIGlzRGlyZWN0b3J5OiBmYWxzZSxcbiAqIC8vICAgICBpc1N5bWxpbms6IGZhbHNlXG4gKiAvLyAgIH0sXG4gKiAvLyBdXG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBFeGNsdWRlIGJ5IHJlZ3VsYXIgZXhwcmVzc2lvbnNcbiAqXG4gKiBTZXR0aW5nIHRoZSBgc2tpcGAgb3B0aW9uIHRvIGBbLy5zL11gIHdpbGwgZXhjbHVkZSBlbnRyaWVzIHdpdGggdGhlIGxldHRlclxuICogYHNgIGluIHRoZWlyIG5hbWUuXG4gKlxuICogRmlsZSBzdHJ1Y3R1cmU6XG4gKiBgYGBcbiAqIGZvbGRlclxuICog4pSc4pSA4pSAIHNjcmlwdC50c1xuICog4pSU4pSA4pSAIFJFQURNRS5tZFxuICogYGBgXG4gKlxuICogYGBgdHMgaWdub3JlXG4gKiBpbXBvcnQgeyB3YWxrIH0gZnJvbSBcIkBzdGQvZnMvd2Fsa1wiO1xuICpcbiAqIGF3YWl0IEFycmF5LmZyb21Bc3luYyh3YWxrKFwiLlwiLCB7IHNraXA6IFsvcy9dIH0pKTtcbiAqIC8vIFtcbiAqIC8vICAge1xuICogLy8gICAgIHBhdGg6IFwiUkVBRE1FLm1kXCIsXG4gKiAvLyAgICAgbmFtZTogXCJSRUFETUUubWRcIixcbiAqIC8vICAgICBpc0ZpbGU6IHRydWUsXG4gKiAvLyAgICAgaXNEaXJlY3Rvcnk6IGZhbHNlLFxuICogLy8gICAgIGlzU3ltbGluazogZmFsc2VcbiAqIC8vICAgfSxcbiAqIC8vIF1cbiAqIGBgYFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24qIHdhbGsoXG4gIHJvb3Q6IHN0cmluZyB8IFVSTCxcbiAgb3B0aW9ucz86IFdhbGtPcHRpb25zLFxuKTogQXN5bmNJdGVyYWJsZUl0ZXJhdG9yPFdhbGtFbnRyeT4ge1xuICBsZXQge1xuICAgIG1heERlcHRoID0gSW5maW5pdHksXG4gICAgaW5jbHVkZUZpbGVzID0gdHJ1ZSxcbiAgICBpbmNsdWRlRGlycyA9IHRydWUsXG4gICAgaW5jbHVkZVN5bWxpbmtzID0gdHJ1ZSxcbiAgICBmb2xsb3dTeW1saW5rcyA9IGZhbHNlLFxuICAgIGNhbm9uaWNhbGl6ZSA9IHRydWUsXG4gICAgZXh0cyA9IHVuZGVmaW5lZCxcbiAgICBtYXRjaCA9IHVuZGVmaW5lZCxcbiAgICBza2lwID0gdW5kZWZpbmVkLFxuICB9ID0gb3B0aW9ucyA/PyB7fTtcblxuICBpZiAobWF4RGVwdGggPCAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHJvb3QgPSB0b1BhdGhTdHJpbmcocm9vdCk7XG4gIGlmIChleHRzKSB7XG4gICAgZXh0cyA9IGV4dHMubWFwKChleHQpID0+IGV4dC5zdGFydHNXaXRoKFwiLlwiKSA/IGV4dCA6IGAuJHtleHR9YCk7XG4gIH1cbiAgaWYgKGluY2x1ZGVEaXJzICYmIGluY2x1ZGUocm9vdCwgZXh0cywgbWF0Y2gsIHNraXApKSB7XG4gICAgeWllbGQgYXdhaXQgY3JlYXRlV2Fsa0VudHJ5KHJvb3QpO1xuICB9XG4gIGlmIChtYXhEZXB0aCA8IDEgfHwgIWluY2x1ZGUocm9vdCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHNraXApKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGZvciBhd2FpdCAoY29uc3QgZW50cnkgb2YgRGVuby5yZWFkRGlyKHJvb3QpKSB7XG4gICAgbGV0IHBhdGggPSBqb2luKHJvb3QsIGVudHJ5Lm5hbWUpO1xuXG4gICAgbGV0IHsgaXNTeW1saW5rLCBpc0RpcmVjdG9yeSB9ID0gZW50cnk7XG5cbiAgICBpZiAoaXNTeW1saW5rKSB7XG4gICAgICBpZiAoIWZvbGxvd1N5bWxpbmtzKSB7XG4gICAgICAgIGlmIChpbmNsdWRlU3ltbGlua3MgJiYgaW5jbHVkZShwYXRoLCBleHRzLCBtYXRjaCwgc2tpcCkpIHtcbiAgICAgICAgICB5aWVsZCB7IHBhdGgsIC4uLmVudHJ5IH07XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCByZWFsUGF0aCA9IGF3YWl0IERlbm8ucmVhbFBhdGgocGF0aCk7XG4gICAgICBpZiAoY2Fub25pY2FsaXplKSB7XG4gICAgICAgIHBhdGggPSByZWFsUGF0aDtcbiAgICAgIH1cbiAgICAgIC8vIENhdmVhdCBlbXB0b3I6IGRvbid0IGFzc3VtZSB8cGF0aHwgaXMgbm90IGEgc3ltbGluay4gcmVhbHBhdGgoKVxuICAgICAgLy8gcmVzb2x2ZXMgc3ltbGlua3MgYnV0IGFub3RoZXIgcHJvY2VzcyBjYW4gcmVwbGFjZSB0aGUgZmlsZSBzeXN0ZW1cbiAgICAgIC8vIGVudGl0eSB3aXRoIGEgZGlmZmVyZW50IHR5cGUgb2YgZW50aXR5IGJlZm9yZSB3ZSBjYWxsIGxzdGF0KCkuXG4gICAgICAoeyBpc1N5bWxpbmssIGlzRGlyZWN0b3J5IH0gPSBhd2FpdCBEZW5vLmxzdGF0KHJlYWxQYXRoKSk7XG4gICAgfVxuXG4gICAgaWYgKGlzU3ltbGluayB8fCBpc0RpcmVjdG9yeSkge1xuICAgICAgY29uc3Qgb3B0czogV2Fsa09wdGlvbnMgPSB7XG4gICAgICAgIG1heERlcHRoOiBtYXhEZXB0aCAtIDEsXG4gICAgICAgIGluY2x1ZGVGaWxlcyxcbiAgICAgICAgaW5jbHVkZURpcnMsXG4gICAgICAgIGluY2x1ZGVTeW1saW5rcyxcbiAgICAgICAgZm9sbG93U3ltbGlua3MsXG4gICAgICB9O1xuICAgICAgaWYgKGV4dHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBvcHRzLmV4dHMgPSBleHRzO1xuICAgICAgfVxuICAgICAgaWYgKG1hdGNoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgb3B0cy5tYXRjaCA9IG1hdGNoO1xuICAgICAgfVxuICAgICAgaWYgKHNraXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBvcHRzLnNraXAgPSBza2lwO1xuICAgICAgfVxuICAgICAgeWllbGQqIHdhbGsocGF0aCwgb3B0cyk7XG4gICAgfSBlbHNlIGlmIChpbmNsdWRlRmlsZXMgJiYgaW5jbHVkZShwYXRoLCBleHRzLCBtYXRjaCwgc2tpcCkpIHtcbiAgICAgIHlpZWxkIHsgcGF0aCwgLi4uZW50cnkgfTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZWN1cnNpdmVseSB3YWxrcyB0aHJvdWdoIGEgZGlyZWN0b3J5IGFuZCB5aWVsZHMgaW5mb3JtYXRpb24gYWJvdXQgZWFjaCBmaWxlXG4gKiBhbmQgZGlyZWN0b3J5IGVuY291bnRlcmVkLlxuICpcbiAqIFRoZSByb290IHBhdGggZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBmaWxlIHBhdGhzIGlzIHJlbGF0aXZlIG9yIGFic29sdXRlLlxuICogVGhlIHJvb3QgZGlyZWN0b3J5IGlzIGluY2x1ZGVkIGluIHRoZSB5aWVsZGVkIGVudHJpZXMuXG4gKlxuICogUmVxdWlyZXMgYC0tYWxsb3ctcmVhZGAgcGVybWlzc2lvbi5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2RvY3MuZGVuby5jb20vcnVudGltZS9tYW51YWwvYmFzaWNzL3Blcm1pc3Npb25zI2ZpbGUtc3lzdGVtLWFjY2Vzc31cbiAqIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIERlbm8ncyBwZXJtaXNzaW9ucyBzeXN0ZW0uXG4gKlxuICogQHBhcmFtIHJvb3QgVGhlIHJvb3QgZGlyZWN0b3J5IHRvIHN0YXJ0IHRoZSB3YWxrIGZyb20sIGFzIGEgc3RyaW5nIG9yIFVSTC5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgd2Fsay5cbiAqXG4gKiBAcmV0dXJucyBBIHN5bmNocm9ub3VzIGl0ZXJhYmxlIGl0ZXJhdG9yIHRoYXQgeWllbGRzIHRoZSB3YWxrIGVudHJ5IG9iamVjdHMuXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqXG4gKiBGaWxlIHN0cnVjdHVyZTpcbiAqIGBgYFxuICogZm9sZGVyXG4gKiDilJzilIDilIAgc2NyaXB0LnRzXG4gKiDilJTilIDilIAgZm9vLnRzXG4gKiBgYGBcbiAqXG4gKiBgYGB0cyBpZ25vcmVcbiAqIGltcG9ydCB7IHdhbGtTeW5jIH0gZnJvbSBcIkBzdGQvZnMvd2Fsa1wiO1xuICpcbiAqIEFycmF5LmZyb20od2Fsa1N5bmMoXCIuXCIpKTtcbiAqIC8vIFtcbiAqIC8vICAge1xuICogLy8gICAgIHBhdGg6IFwiLlwiLFxuICogLy8gICAgIG5hbWU6IFwiLlwiLFxuICogLy8gICAgIGlzRmlsZTogZmFsc2UsXG4gKiAvLyAgICAgaXNEaXJlY3Rvcnk6IHRydWUsXG4gKiAvLyAgICAgaXNTeW1saW5rOiBmYWxzZVxuICogLy8gICB9LFxuICogLy8gICB7XG4gKiAvLyAgICAgcGF0aDogXCJzY3JpcHQudHNcIixcbiAqIC8vICAgICBuYW1lOiBcInNjcmlwdC50c1wiLFxuICogLy8gICAgIGlzRmlsZTogdHJ1ZSxcbiAqIC8vICAgICBpc0RpcmVjdG9yeTogZmFsc2UsXG4gKiAvLyAgICAgaXNTeW1saW5rOiBmYWxzZVxuICogLy8gICB9LFxuICogLy8gICB7XG4gKiAvLyAgICAgcGF0aDogXCJmb28udHNcIixcbiAqIC8vICAgICBuYW1lOiBcImZvby50c1wiLFxuICogLy8gICAgIGlzRmlsZTogdHJ1ZSxcbiAqIC8vICAgICBpc0RpcmVjdG9yeTogZmFsc2UsXG4gKiAvLyAgICAgaXNTeW1saW5rOiBmYWxzZVxuICogLy8gICB9LFxuICogLy8gXVxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgTWF4aW11bSBmaWxlIGRlcHRoXG4gKlxuICogU2V0dGluZyB0aGUgYG1heERlcHRoYCBvcHRpb24gdG8gYDFgIHdpbGwgb25seSBpbmNsdWRlIHRoZSByb290IGRpcmVjdG9yeSBhbmRcbiAqIGl0cyBpbW1lZGlhdGUgY2hpbGRyZW4uXG4gKlxuICogRmlsZSBzdHJ1Y3R1cmU6XG4gKiBgYGBcbiAqIGZvbGRlclxuICog4pSc4pSA4pSAIHNjcmlwdC50c1xuICog4pSU4pSA4pSAIGZvb1xuICogICAgIOKUlOKUgOKUgCBiYXIudHNcbiAqIGBgYFxuICpcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgd2Fsa1N5bmMgfSBmcm9tIFwiQHN0ZC9mcy93YWxrXCI7XG4gKlxuICogQXJyYXkuZnJvbSh3YWxrU3luYyhcIi5cIiwgeyBtYXhEZXB0aDogMSB9KSk7XG4gKiAvLyBbXG4gKiAvLyAgIHtcbiAqIC8vICAgICBwYXRoOiBcIi5cIixcbiAqIC8vICAgICBuYW1lOiBcIi5cIixcbiAqIC8vICAgICBpc0ZpbGU6IGZhbHNlLFxuICogLy8gICAgIGlzRGlyZWN0b3J5OiB0cnVlLFxuICogLy8gICAgIGlzU3ltbGluazogZmFsc2VcbiAqIC8vICAgfSxcbiAqIC8vICAge1xuICogLy8gICAgIHBhdGg6IFwic2NyaXB0LnRzXCIsXG4gKiAvLyAgICAgbmFtZTogXCJzY3JpcHQudHNcIixcbiAqIC8vICAgICBpc0ZpbGU6IHRydWUsXG4gKiAvLyAgICAgaXNEaXJlY3Rvcnk6IGZhbHNlLFxuICogLy8gICAgIGlzU3ltbGluazogZmFsc2VcbiAqIC8vICAgfSxcbiAqIC8vICAge1xuICogLy8gICAgIHBhdGg6IFwiZm9vXCIsXG4gKiAvLyAgICAgbmFtZTogXCJmb29cIixcbiAqIC8vICAgICBpc0ZpbGU6IGZhbHNlLFxuICogLy8gICAgIGlzRGlyZWN0b3J5OiB0cnVlLFxuICogLy8gICAgIGlzU3ltbGluazogZmFsc2VcbiAqIC8vICAgfSxcbiAqIC8vIF1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIEV4Y2x1ZGUgZmlsZXNcbiAqXG4gKiBTZXR0aW5nIHRoZSBgaW5jbHVkZUZpbGVzYCBvcHRpb24gdG8gYGZhbHNlYCB3aWxsIGV4Y2x1ZGUgZmlsZXMuXG4gKlxuICogRmlsZSBzdHJ1Y3R1cmU6XG4gKiBgYGBcbiAqIGZvbGRlclxuICog4pSc4pSA4pSAIHNjcmlwdC50c1xuICog4pSU4pSA4pSAIGZvb1xuICogYGBgXG4gKlxuICogYGBgdHMgaWdub3JlXG4gKiBpbXBvcnQgeyB3YWxrU3luYyB9IGZyb20gXCJAc3RkL2ZzL3dhbGtcIjtcbiAqXG4gKiBBcnJheS5mcm9tKHdhbGtTeW5jKFwiLlwiLCB7IGluY2x1ZGVGaWxlczogZmFsc2UgfSkpO1xuICogLy8gW1xuICogLy8gICB7XG4gKiAvLyAgICAgcGF0aDogXCIuXCIsXG4gKiAvLyAgICAgbmFtZTogXCIuXCIsXG4gKiAvLyAgICAgaXNGaWxlOiBmYWxzZSxcbiAqIC8vICAgICBpc0RpcmVjdG9yeTogdHJ1ZSxcbiAqIC8vICAgICBpc1N5bWxpbms6IGZhbHNlXG4gKiAvLyAgIH0sXG4gKiAvLyAgIHtcbiAqIC8vICAgICBwYXRoOiBcImZvb1wiLFxuICogLy8gICAgIG5hbWU6IFwiZm9vXCIsXG4gKiAvLyAgICAgaXNGaWxlOiBmYWxzZSxcbiAqIC8vICAgICBpc0RpcmVjdG9yeTogdHJ1ZSxcbiAqIC8vICAgICBpc1N5bWxpbms6IGZhbHNlLFxuICogLy8gICB9LFxuICogLy8gXVxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgRXhjbHVkZSBkaXJlY3Rvcmllc1xuICpcbiAqIFNldHRpbmcgdGhlIGBpbmNsdWRlRGlyc2Agb3B0aW9uIHRvIGBmYWxzZWAgd2lsbCBleGNsdWRlIGRpcmVjdG9yaWVzLlxuICpcbiAqIEZpbGUgc3RydWN0dXJlOlxuICogYGBgXG4gKiBmb2xkZXJcbiAqIOKUnOKUgOKUgCBzY3JpcHQudHNcbiAqIOKUlOKUgOKUgCBmb29cbiAqIGBgYFxuICpcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgd2Fsa1N5bmMgfSBmcm9tIFwiQHN0ZC9mcy93YWxrXCI7XG4gKlxuICogQXJyYXkuZnJvbSh3YWxrU3luYyhcIi5cIiwgeyBpbmNsdWRlRGlyczogZmFsc2UgfSkpO1xuICogLy8gW1xuICogLy8gICB7XG4gKiAvLyAgICAgcGF0aDogXCJzY3JpcHQudHNcIixcbiAqIC8vICAgICBuYW1lOiBcInNjcmlwdC50c1wiLFxuICogLy8gICAgIGlzRmlsZTogdHJ1ZSxcbiAqIC8vICAgICBpc0RpcmVjdG9yeTogZmFsc2UsXG4gKiAvLyAgICAgaXNTeW1saW5rOiBmYWxzZVxuICogLy8gICB9LFxuICogLy8gXVxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgRXhjbHVkZSBzeW1ib2xpYyBsaW5rc1xuICpcbiAqIFNldHRpbmcgdGhlIGBpbmNsdWRlU3ltbGlua3NgIG9wdGlvbiB0byBgZmFsc2VgIHdpbGwgZXhjbHVkZSBzeW1ib2xpYyBsaW5rcy5cbiAqXG4gKiBGaWxlIHN0cnVjdHVyZTpcbiAqIGBgYFxuICogZm9sZGVyXG4gKiDilJzilIDilIAgc2NyaXB0LnRzXG4gKiDilJzilIDilIAgZm9vXG4gKiDilJTilIDilIAgbGluayAtPiBzY3JpcHQudHMgKHN5bWJvbGljIGxpbmspXG4gKiBgYGBcbiAqXG4gKiBgYGB0cyBpZ25vcmVcbiAqIGltcG9ydCB7IHdhbGtTeW5jIH0gZnJvbSBcIkBzdGQvZnMvd2Fsa1wiO1xuICpcbiAqIEFycmF5LmZyb20od2Fsa1N5bmMoXCIuXCIsIHsgaW5jbHVkZVN5bWxpbmtzOiBmYWxzZSB9KSk7XG4gKiAvLyBbXG4gKiAvLyAgIHtcbiAqIC8vICAgICBwYXRoOiBcIi5cIixcbiAqIC8vICAgICBuYW1lOiBcIi5cIixcbiAqIC8vICAgICBpc0ZpbGU6IGZhbHNlLFxuICogLy8gICAgIGlzRGlyZWN0b3J5OiB0cnVlLFxuICogLy8gICAgIGlzU3ltbGluazogZmFsc2VcbiAqIC8vICAgfSxcbiAqIC8vICAge1xuICogLy8gICAgIHBhdGg6IFwic2NyaXB0LnRzXCIsXG4gKiAvLyAgICAgbmFtZTogXCJzY3JpcHQudHNcIixcbiAqIC8vICAgICBpc0ZpbGU6IHRydWUsXG4gKiAvLyAgICAgaXNEaXJlY3Rvcnk6IGZhbHNlLFxuICogLy8gICAgIGlzU3ltbGluazogZmFsc2VcbiAqIC8vICAgfSxcbiAqIC8vIF1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIEZvbGxvdyBzeW1ib2xpYyBsaW5rc1xuICpcbiAqIFNldHRpbmcgdGhlIGBmb2xsb3dTeW1saW5rc2Agb3B0aW9uIHRvIGB0cnVlYCB3aWxsIGZvbGxvdyBzeW1ib2xpYyBsaW5rcyxcbiAqIGFmZmVjdGluZyB0aGUgYHBhdGhgIHByb3BlcnR5IG9mIHRoZSB3YWxrIGVudHJ5LlxuICpcbiAqIEZpbGUgc3RydWN0dXJlOlxuICogYGBgXG4gKiBmb2xkZXJcbiAqIOKUnOKUgOKUgCBzY3JpcHQudHNcbiAqIOKUlOKUgOKUgCBsaW5rIC0+IHNjcmlwdC50cyAoc3ltYm9saWMgbGluaylcbiAqIGBgYFxuICpcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgd2Fsa1N5bmMgfSBmcm9tIFwiQHN0ZC9mcy93YWxrXCI7XG4gKlxuICogQXJyYXkuZnJvbSh3YWxrU3luYyhcIi5cIiwgeyBmb2xsb3dTeW1saW5rczogdHJ1ZSB9KSk7XG4gKiAvLyBbXG4gKiAvLyAgIHtcbiAqIC8vICAgICBwYXRoOiBcIi5cIixcbiAqIC8vICAgICBuYW1lOiBcIi5cIixcbiAqIC8vICAgICBpc0ZpbGU6IGZhbHNlLFxuICogLy8gICAgIGlzRGlyZWN0b3J5OiB0cnVlLFxuICogLy8gICAgIGlzU3ltbGluazogZmFsc2VcbiAqIC8vICAgfSxcbiAqIC8vICAge1xuICogLy8gICAgIHBhdGg6IFwic2NyaXB0LnRzXCIsXG4gKiAvLyAgICAgbmFtZTogXCJzY3JpcHQudHNcIixcbiAqIC8vICAgICBpc0ZpbGU6IHRydWUsXG4gKiAvLyAgICAgaXNEaXJlY3Rvcnk6IGZhbHNlLFxuICogLy8gICAgIGlzU3ltbGluazogZmFsc2VcbiAqIC8vICAgfSxcbiAqIC8vICAge1xuICogLy8gICAgIHBhdGg6IFwic2NyaXB0LnRzXCIsXG4gKiAvLyAgICAgbmFtZTogXCJsaW5rXCIsXG4gKiAvLyAgICAgaXNGaWxlOiB0cnVlLFxuICogLy8gICAgIGlzRGlyZWN0b3J5OiBmYWxzZSxcbiAqIC8vICAgICBpc1N5bWxpbms6IHRydWVcbiAqIC8vICAgfSxcbiAqIC8vIF1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIENhbm9uaWNhbGl6ZSBzeW1ib2xpYyBsaW5rc1xuICpcbiAqIFNldHRpbmcgdGhlIGBjYW5vbmljYWxpemVgIG9wdGlvbiB0byBgZmFsc2VgIHdpbGwgY2Fub25pY2FsaXplIHRoZSBwYXRoIG9mXG4gKiB0aGUgZm9sbG93ZWQgc3ltYm9saWMgbGluay4gTWVhbmluZywgdGhlIGBwYXRoYCBwcm9wZXJ0eSBvZiB0aGUgd2FsayBlbnRyeVxuICogd2lsbCBiZSB0aGUgcGF0aCBvZiB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYuXG4gKlxuICogRmlsZSBzdHJ1Y3R1cmU6XG4gKiBgYGBcbiAqIGZvbGRlclxuICog4pSc4pSA4pSAIHNjcmlwdC50c1xuICog4pSU4pSA4pSAIGxpbmsgLT4gc2NyaXB0LnRzIChzeW1ib2xpYyBsaW5rKVxuICogYGBgXG4gKlxuICogYGBgdHMgaWdub3JlXG4gKiBpbXBvcnQgeyB3YWxrU3luYyB9IGZyb20gXCJAc3RkL2ZzL3dhbGtcIjtcbiAqXG4gKiBBcnJheS5mcm9tKHdhbGtTeW5jKFwiLlwiLCB7IGZvbGxvd1N5bWxpbmtzOiB0cnVlLCBjYW5vbmljYWxpemU6IHRydWUgfSkpO1xuICogLy8gW1xuICogLy8gICB7XG4gKiAvLyAgICAgcGF0aDogXCIuXCIsXG4gKiAvLyAgICAgbmFtZTogXCIuXCIsXG4gKiAvLyAgICAgaXNGaWxlOiBmYWxzZSxcbiAqIC8vICAgICBpc0RpcmVjdG9yeTogdHJ1ZSxcbiAqIC8vICAgICBpc1N5bWxpbms6IGZhbHNlXG4gKiAvLyAgIH0sXG4gKiAvLyAgIHtcbiAqIC8vICAgICBwYXRoOiBcInNjcmlwdC50c1wiLFxuICogLy8gICAgIG5hbWU6IFwic2NyaXB0LnRzXCIsXG4gKiAvLyAgICAgaXNGaWxlOiB0cnVlLFxuICogLy8gICAgIGlzRGlyZWN0b3J5OiBmYWxzZSxcbiAqIC8vICAgICBpc1N5bWxpbms6IGZhbHNlXG4gKiAvLyAgIH0sXG4gKiAvLyAgIHtcbiAqIC8vICAgICBwYXRoOiBcImxpbmtcIixcbiAqIC8vICAgICBuYW1lOiBcImxpbmtcIixcbiAqIC8vICAgICBpc0ZpbGU6IHRydWUsXG4gKiAvLyAgICAgaXNEaXJlY3Rvcnk6IGZhbHNlLFxuICogLy8gICAgIGlzU3ltbGluazogdHJ1ZVxuICogLy8gICB9LFxuICogLy8gXVxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgRmlsdGVyIGJ5IGZpbGUgZXh0ZW5zaW9uc1xuICpcbiAqIFNldHRpbmcgdGhlIGBleHRzYCBvcHRpb24gdG8gYFtcIi50c1wiXWAgb3IgYFtcInRzXCJdYCB3aWxsIG9ubHkgaW5jbHVkZSBlbnRyaWVzXG4gKiB3aXRoIHRoZSBgLnRzYCBmaWxlIGV4dGVuc2lvbi5cbiAqXG4gKiBGaWxlIHN0cnVjdHVyZTpcbiAqIGBgYFxuICogZm9sZGVyXG4gKiDilJzilIDilIAgc2NyaXB0LnRzXG4gKiDilJTilIDilIAgZm9vLmpzXG4gKiBgYGBcbiAqXG4gKiBgYGB0cyBpZ25vcmVcbiAqIGltcG9ydCB7IHdhbGtTeW5jIH0gZnJvbSBcIkBzdGQvZnMvd2Fsa1wiO1xuICpcbiAqIEFycmF5LmZyb20od2Fsa1N5bmMoXCIuXCIsIHsgZXh0czogW1wiLnRzXCJdIH0pKTtcbiAqIC8vIFtcbiAqIC8vICAge1xuICogLy8gICAgIHBhdGg6IFwic2NyaXB0LnRzXCIsXG4gKiAvLyAgICAgbmFtZTogXCJzY3JpcHQudHNcIixcbiAqIC8vICAgICBpc0ZpbGU6IHRydWUsXG4gKiAvLyAgICAgaXNEaXJlY3Rvcnk6IGZhbHNlLFxuICogLy8gICAgIGlzU3ltbGluazogZmFsc2VcbiAqIC8vICAgfSxcbiAqIC8vIF1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIEZpbHRlciBieSByZWd1bGFyIGV4cHJlc3Npb25zXG4gKlxuICogU2V0dGluZyB0aGUgYG1hdGNoYCBvcHRpb24gdG8gYFsvLnMvXWAgd2lsbCBvbmx5IGluY2x1ZGUgZW50cmllcyB3aXRoIHRoZVxuICogbGV0dGVyIGBzYCBpbiB0aGVpciBuYW1lLlxuICpcbiAqIEZpbGUgc3RydWN0dXJlOlxuICogYGBgXG4gKiBmb2xkZXJcbiAqIOKUnOKUgOKUgCBzY3JpcHQudHNcbiAqIOKUlOKUgOKUgCBSRUFETUUubWRcbiAqIGBgYFxuICpcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgd2Fsa1N5bmMgfSBmcm9tIFwiQHN0ZC9mcy93YWxrXCI7XG4gKlxuICogQXJyYXkuZnJvbSh3YWxrU3luYyhcIi5cIiwgeyBtYXRjaDogWy9zL10gfSkpO1xuICogLy8gW1xuICogLy8gICB7XG4gKiAvLyAgICAgcGF0aDogXCJzY3JpcHQudHNcIixcbiAqIC8vICAgICBuYW1lOiBcInNjcmlwdC50c1wiLFxuICogLy8gICAgIGlzRmlsZTogdHJ1ZSxcbiAqIC8vICAgICBpc0RpcmVjdG9yeTogZmFsc2UsXG4gKiAvLyAgICAgaXNTeW1saW5rOiBmYWxzZVxuICogLy8gICB9LFxuICogLy8gXVxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgRXhjbHVkZSBieSByZWd1bGFyIGV4cHJlc3Npb25zXG4gKlxuICogU2V0dGluZyB0aGUgYHNraXBgIG9wdGlvbiB0byBgWy8ucy9dYCB3aWxsIGV4Y2x1ZGUgZW50cmllcyB3aXRoIHRoZSBsZXR0ZXJcbiAqIGBzYCBpbiB0aGVpciBuYW1lLlxuICpcbiAqIEZpbGUgc3RydWN0dXJlOlxuICogYGBgXG4gKiBmb2xkZXJcbiAqIOKUnOKUgOKUgCBzY3JpcHQudHNcbiAqIOKUlOKUgOKUgCBSRUFETUUubWRcbiAqIGBgYFxuICpcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgd2Fsa1N5bmMgfSBmcm9tIFwiQHN0ZC9mcy93YWxrXCI7XG4gKlxuICogQXJyYXkuZnJvbSh3YWxrU3luYyhcIi5cIiwgeyBza2lwOiBbL3MvXSB9KSk7XG4gKiAvLyBbXG4gKiAvLyAgIHtcbiAqIC8vICAgICBwYXRoOiBcIlJFQURNRS5tZFwiLFxuICogLy8gICAgIG5hbWU6IFwiUkVBRE1FLm1kXCIsXG4gKiAvLyAgICAgaXNGaWxlOiB0cnVlLFxuICogLy8gICAgIGlzRGlyZWN0b3J5OiBmYWxzZSxcbiAqIC8vICAgICBpc1N5bWxpbms6IGZhbHNlXG4gKiAvLyAgIH0sXG4gKiAvLyBdXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uKiB3YWxrU3luYyhcbiAgcm9vdDogc3RyaW5nIHwgVVJMLFxuICBvcHRpb25zPzogV2Fsa09wdGlvbnMsXG4pOiBJdGVyYWJsZUl0ZXJhdG9yPFdhbGtFbnRyeT4ge1xuICBsZXQge1xuICAgIG1heERlcHRoID0gSW5maW5pdHksXG4gICAgaW5jbHVkZUZpbGVzID0gdHJ1ZSxcbiAgICBpbmNsdWRlRGlycyA9IHRydWUsXG4gICAgaW5jbHVkZVN5bWxpbmtzID0gdHJ1ZSxcbiAgICBmb2xsb3dTeW1saW5rcyA9IGZhbHNlLFxuICAgIGNhbm9uaWNhbGl6ZSA9IHRydWUsXG4gICAgZXh0cyA9IHVuZGVmaW5lZCxcbiAgICBtYXRjaCA9IHVuZGVmaW5lZCxcbiAgICBza2lwID0gdW5kZWZpbmVkLFxuICB9ID0gb3B0aW9ucyA/PyB7fTtcblxuICByb290ID0gdG9QYXRoU3RyaW5nKHJvb3QpO1xuICBpZiAoZXh0cykge1xuICAgIGV4dHMgPSBleHRzLm1hcCgoZXh0KSA9PiBleHQuc3RhcnRzV2l0aChcIi5cIikgPyBleHQgOiBgLiR7ZXh0fWApO1xuICB9XG4gIGlmIChtYXhEZXB0aCA8IDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGluY2x1ZGVEaXJzICYmIGluY2x1ZGUocm9vdCwgZXh0cywgbWF0Y2gsIHNraXApKSB7XG4gICAgeWllbGQgY3JlYXRlV2Fsa0VudHJ5U3luYyhyb290KTtcbiAgfVxuICBpZiAobWF4RGVwdGggPCAxIHx8ICFpbmNsdWRlKHJvb3QsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBza2lwKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBlbnRyaWVzID0gRGVuby5yZWFkRGlyU3luYyhyb290KTtcbiAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgbGV0IHBhdGggPSBqb2luKHJvb3QsIGVudHJ5Lm5hbWUpO1xuXG4gICAgbGV0IHsgaXNTeW1saW5rLCBpc0RpcmVjdG9yeSB9ID0gZW50cnk7XG5cbiAgICBpZiAoaXNTeW1saW5rKSB7XG4gICAgICBpZiAoIWZvbGxvd1N5bWxpbmtzKSB7XG4gICAgICAgIGlmIChpbmNsdWRlU3ltbGlua3MgJiYgaW5jbHVkZShwYXRoLCBleHRzLCBtYXRjaCwgc2tpcCkpIHtcbiAgICAgICAgICB5aWVsZCB7IHBhdGgsIC4uLmVudHJ5IH07XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCByZWFsUGF0aCA9IERlbm8ucmVhbFBhdGhTeW5jKHBhdGgpO1xuICAgICAgaWYgKGNhbm9uaWNhbGl6ZSkge1xuICAgICAgICBwYXRoID0gcmVhbFBhdGg7XG4gICAgICB9XG4gICAgICAvLyBDYXZlYXQgZW1wdG9yOiBkb24ndCBhc3N1bWUgfHBhdGh8IGlzIG5vdCBhIHN5bWxpbmsuIHJlYWxwYXRoKClcbiAgICAgIC8vIHJlc29sdmVzIHN5bWxpbmtzIGJ1dCBhbm90aGVyIHByb2Nlc3MgY2FuIHJlcGxhY2UgdGhlIGZpbGUgc3lzdGVtXG4gICAgICAvLyBlbnRpdHkgd2l0aCBhIGRpZmZlcmVudCB0eXBlIG9mIGVudGl0eSBiZWZvcmUgd2UgY2FsbCBsc3RhdCgpLlxuICAgICAgKHsgaXNTeW1saW5rLCBpc0RpcmVjdG9yeSB9ID0gRGVuby5sc3RhdFN5bmMocmVhbFBhdGgpKTtcbiAgICB9XG5cbiAgICBpZiAoaXNTeW1saW5rIHx8IGlzRGlyZWN0b3J5KSB7XG4gICAgICBjb25zdCBvcHRzOiBXYWxrT3B0aW9ucyA9IHtcbiAgICAgICAgbWF4RGVwdGg6IG1heERlcHRoIC0gMSxcbiAgICAgICAgaW5jbHVkZUZpbGVzLFxuICAgICAgICBpbmNsdWRlRGlycyxcbiAgICAgICAgaW5jbHVkZVN5bWxpbmtzLFxuICAgICAgICBmb2xsb3dTeW1saW5rcyxcbiAgICAgIH07XG4gICAgICBpZiAoZXh0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9wdHMuZXh0cyA9IGV4dHM7XG4gICAgICB9XG4gICAgICBpZiAobWF0Y2ggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBvcHRzLm1hdGNoID0gbWF0Y2g7XG4gICAgICB9XG4gICAgICBpZiAoc2tpcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9wdHMuc2tpcCA9IHNraXA7XG4gICAgICB9XG4gICAgICB5aWVsZCogd2Fsa1N5bmMocGF0aCwgb3B0cyk7XG4gICAgfSBlbHNlIGlmIChpbmNsdWRlRmlsZXMgJiYgaW5jbHVkZShwYXRoLCBleHRzLCBtYXRjaCwgc2tpcCkpIHtcbiAgICAgIHlpZWxkIHsgcGF0aCwgLi4uZW50cnkgfTtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQsNERBQTREO0FBQzVELDZDQUE2QztBQUM3QyxtRUFBbUU7QUFDbkUsU0FBUyxJQUFJLFFBQVEsNEJBQTRCO0FBQ2pELFNBQVMsWUFBWSxRQUFRLHVCQUF1QjtBQUNwRCxTQUNFLGVBQWUsRUFDZixtQkFBbUIsUUFFZCwwQkFBMEI7QUFFakMsU0FBUyxRQUNQLElBQVksRUFDWixJQUFlLEVBQ2YsS0FBZ0IsRUFDaEIsSUFBZTtFQUVmLElBQUksUUFBUSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsTUFBaUIsS0FBSyxRQUFRLENBQUMsT0FBTztJQUM1RCxPQUFPO0VBQ1Q7RUFDQSxJQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLFVBQXFCLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxXQUFXO0lBQ3JFLE9BQU87RUFDVDtFQUNBLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLFVBQXFCLENBQUMsQ0FBQyxL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 +// denoCacheMetadata=15164055145066163966,15540414624218936283
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/4cd07ccdab851a623a4ab1ee79152bc24bbc59b2664a3e4db97b6c8b1934b39e.js b/vendor/gen/https/jsr.io/4cd07ccdab851a623a4ab1ee79152bc24bbc59b2664a3e4db97b6c8b1934b39e.js new file mode 100644 index 0000000..87e804b --- /dev/null +++ b/vendor/gen/https/jsr.io/4cd07ccdab851a623a4ab1ee79152bc24bbc59b2664a3e4db97b6c8b1934b39e.js @@ -0,0 +1,9 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// Copyright the Browserify authors. MIT License. +export function assertPath(path) { + if (typeof path !== "string") { + throw new TypeError(`Path must be a string, received "${JSON.stringify(path)}"`); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9fY29tbW9uL2Fzc2VydF9wYXRoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgdGhlIEJyb3dzZXJpZnkgYXV0aG9ycy4gTUlUIExpY2Vuc2UuXG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRQYXRoKHBhdGg/OiBzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBwYXRoICE9PSBcInN0cmluZ1wiKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIGBQYXRoIG11c3QgYmUgYSBzdHJpbmcsIHJlY2VpdmVkIFwiJHtKU09OLnN0cmluZ2lmeShwYXRoKX1cImAsXG4gICAgKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxpREFBaUQ7QUFFakQsT0FBTyxTQUFTLFdBQVcsSUFBYTtFQUN0QyxJQUFJLE9BQU8sU0FBUyxVQUFVO0lBQzVCLE1BQU0sSUFBSSxVQUNSLENBQUMsaUNBQWlDLEVBQUUsS0FBSyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7RUFFL0Q7QUFDRiJ9 +// denoCacheMetadata=1158748568181035107,9650486414307479560
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/4d6cee0ff1bf9cfe8022c9c6649944bee022bdb32336cc243bce667a69bb3798.js b/vendor/gen/https/jsr.io/4d6cee0ff1bf9cfe8022c9c6649944bee022bdb32336cc243bce667a69bb3798.js new file mode 100644 index 0000000..8a7bde2 --- /dev/null +++ b/vendor/gen/https/jsr.io/4d6cee0ff1bf9cfe8022c9c6649944bee022bdb32336cc243bce667a69bb3798.js @@ -0,0 +1,15 @@ +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2025 the Deno authors. MIT license. +export function isObject(value) { + return value !== null && typeof value === "object"; +} +export function isNegativeZero(i) { + return i === 0 && Number.NEGATIVE_INFINITY === 1 / i; +} +export function isPlainObject(object) { + return Object.prototype.toString.call(object) === "[object Object]"; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQveWFtbC8xLjAuNi9fdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUG9ydGVkIGZyb20ganMteWFtbCB2My4xMy4xOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVjYS9qcy15YW1sL2NvbW1pdC82NjVhYWRkYTQyMzQ5ZGNhZTg2OWYxMjA0MGQ5YjEwZWYxOGQxMmRhXG4vLyBDb3B5cmlnaHQgMjAxMS0yMDE1IGJ5IFZpdGFseSBQdXpyaW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cblxuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOZWdhdGl2ZVplcm8oaTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiBpID09PSAwICYmIE51bWJlci5ORUdBVElWRV9JTkZJTklUWSA9PT0gMSAvIGk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1BsYWluT2JqZWN0KG9iamVjdDogdW5rbm93bik6IG9iamVjdCBpcyBvYmplY3Qge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkgPT09IFwiW29iamVjdCBPYmplY3RdXCI7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLG9GQUFvRjtBQUNwRiwwRUFBMEU7QUFDMUUscURBQXFEO0FBRXJELE9BQU8sU0FBUyxTQUFTLEtBQWM7RUFDckMsT0FBTyxVQUFVLFFBQVEsT0FBTyxVQUFVO0FBQzVDO0FBRUEsT0FBTyxTQUFTLGVBQWUsQ0FBUztFQUN0QyxPQUFPLE1BQU0sS0FBSyxPQUFPLGlCQUFpQixLQUFLLElBQUk7QUFDckQ7QUFFQSxPQUFPLFNBQVMsY0FBYyxNQUFlO0VBQzNDLE9BQU8sT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZO0FBQ3BEIn0= +// denoCacheMetadata=5493907850923699108,8207816919595676271
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/50436fdcbcd0f6c11763b46aaa357399c4dcfc34a2c081d55f05ff6117764ce7.js b/vendor/gen/https/jsr.io/50436fdcbcd0f6c11763b46aaa357399c4dcfc34a2c081d55f05ff6117764ce7.js new file mode 100644 index 0000000..3e9a836 --- /dev/null +++ b/vendor/gen/https/jsr.io/50436fdcbcd0f6c11763b46aaa357399c4dcfc34a2c081d55f05ff6117764ce7.js @@ -0,0 +1,53 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +function toDataView(value) { + if (value instanceof DataView) { + return value; + } + return ArrayBuffer.isView(value) ? new DataView(value.buffer, value.byteOffset, value.byteLength) : new DataView(value); +} +/** + * When checking the values of cryptographic hashes are equal, default + * comparisons can be susceptible to timing based attacks, where attacker is + * able to find out information about the host system by repeatedly checking + * response times to equality comparisons of values. + * + * It is likely some form of timing safe equality will make its way to the + * WebCrypto standard (see: + * {@link https://github.com/w3c/webcrypto/issues/270 | w3c/webcrypto#270}), but until + * that time, `timingSafeEqual()` is provided: + * + * @example Usage + * ```ts + * import { timingSafeEqual } from "@std/crypto/timing-safe-equal"; + * import { assert } from "@std/assert"; + * + * const a = await crypto.subtle.digest( + * "SHA-384", + * new TextEncoder().encode("hello world"), + * ); + * const b = await crypto.subtle.digest( + * "SHA-384", + * new TextEncoder().encode("hello world"), + * ); + * + * assert(timingSafeEqual(a, b)); + * ``` + * + * @param a The first value to compare. + * @param b The second value to compare. + * @returns `true` if the values are equal, otherwise `false`. + */ export function timingSafeEqual(a, b) { + if (a.byteLength !== b.byteLength) return false; + const dataViewA = toDataView(a); + const dataViewB = toDataView(b); + const length = a.byteLength; + let out = 0; + let i = -1; + while(++i < length){ + out |= dataViewA.getUint8(i) ^ dataViewB.getUint8(i); + } + return out === 0; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvY3J5cHRvLzEuMC41L3RpbWluZ19zYWZlX2VxdWFsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmZ1bmN0aW9uIHRvRGF0YVZpZXcoXG4gIHZhbHVlOiBBcnJheUJ1ZmZlclZpZXcgfCBBcnJheUJ1ZmZlckxpa2UgfCBEYXRhVmlldyxcbik6IERhdGFWaWV3IHtcbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0YVZpZXcpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSlcbiAgICA/IG5ldyBEYXRhVmlldyh2YWx1ZS5idWZmZXIsIHZhbHVlLmJ5dGVPZmZzZXQsIHZhbHVlLmJ5dGVMZW5ndGgpXG4gICAgOiBuZXcgRGF0YVZpZXcodmFsdWUpO1xufVxuXG4vKipcbiAqIFdoZW4gY2hlY2tpbmcgdGhlIHZhbHVlcyBvZiBjcnlwdG9ncmFwaGljIGhhc2hlcyBhcmUgZXF1YWwsIGRlZmF1bHRcbiAqIGNvbXBhcmlzb25zIGNhbiBiZSBzdXNjZXB0aWJsZSB0byB0aW1pbmcgYmFzZWQgYXR0YWNrcywgd2hlcmUgYXR0YWNrZXIgaXNcbiAqIGFibGUgdG8gZmluZCBvdXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGhvc3Qgc3lzdGVtIGJ5IHJlcGVhdGVkbHkgY2hlY2tpbmdcbiAqIHJlc3BvbnNlIHRpbWVzIHRvIGVxdWFsaXR5IGNvbXBhcmlzb25zIG9mIHZhbHVlcy5cbiAqXG4gKiBJdCBpcyBsaWtlbHkgc29tZSBmb3JtIG9mIHRpbWluZyBzYWZlIGVxdWFsaXR5IHdpbGwgbWFrZSBpdHMgd2F5IHRvIHRoZVxuICogV2ViQ3J5cHRvIHN0YW5kYXJkIChzZWU6XG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWJjcnlwdG8vaXNzdWVzLzI3MCB8IHczYy93ZWJjcnlwdG8jMjcwfSksIGJ1dCB1bnRpbFxuICogdGhhdCB0aW1lLCBgdGltaW5nU2FmZUVxdWFsKClgIGlzIHByb3ZpZGVkOlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgdGltaW5nU2FmZUVxdWFsIH0gZnJvbSBcIkBzdGQvY3J5cHRvL3RpbWluZy1zYWZlLWVxdWFsXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBhID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoXG4gKiAgIFwiU0hBLTM4NFwiLFxuICogICBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoXCJoZWxsbyB3b3JsZFwiKSxcbiAqICk7XG4gKiBjb25zdCBiID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoXG4gKiAgIFwiU0hBLTM4NFwiLFxuICogICBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoXCJoZWxsbyB3b3JsZFwiKSxcbiAqICk7XG4gKlxuICogYXNzZXJ0KHRpbWluZ1NhZmVFcXVhbChhLCBiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gYSBUaGUgZmlyc3QgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSBiIFRoZSBzZWNvbmQgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVhbCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aW1pbmdTYWZlRXF1YWwoXG4gIGE6IEFycmF5QnVmZmVyVmlldyB8IEFycmF5QnVmZmVyTGlrZSB8IERhdGFWaWV3LFxuICBiOiBBcnJheUJ1ZmZlclZpZXcgfCBBcnJheUJ1ZmZlckxpa2UgfCBEYXRhVmlldyxcbik6IGJvb2xlYW4ge1xuICBpZiAoYS5ieXRlTGVuZ3RoICE9PSBiLmJ5dGVMZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgZGF0YVZpZXdBID0gdG9EYXRhVmlldyhhKTtcbiAgY29uc3QgZGF0YVZpZXdCID0gdG9EYXRhVmlldyhiKTtcbiAgY29uc3QgbGVuZ3RoID0gYS5ieXRlTGVuZ3RoO1xuICBsZXQgb3V0ID0gMDtcbiAgbGV0IGkgPSAtMTtcbiAgd2hpbGUgKCsraSA8IGxlbmd0aCkge1xuICAgIG91dCB8PSBkYXRhVmlld0EuZ2V0VWludDgoaSkgXiBkYXRhVmlld0IuZ2V0VWludDgoaSk7XG4gIH1cbiAgcmV0dXJuIG91dCA9PT0gMDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDLFNBQVMsV0FDUCxLQUFtRDtFQUVuRCxJQUFJLGlCQUFpQixVQUFVO0lBQzdCLE9BQU87RUFDVDtFQUNBLE9BQU8sWUFBWSxNQUFNLENBQUMsU0FDdEIsSUFBSSxTQUFTLE1BQU0sTUFBTSxFQUFFLE1BQU0sVUFBVSxFQUFFLE1BQU0sVUFBVSxJQUM3RCxJQUFJLFNBQVM7QUFDbkI7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQStCQyxHQUNELE9BQU8sU0FBUyxnQkFDZCxDQUErQyxFQUMvQyxDQUErQztFQUUvQyxJQUFJLEVBQUUsVUFBVSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU87RUFDMUMsTUFBTSxZQUFZLFdBQVc7RUFDN0IsTUFBTSxZQUFZLFdBQVc7RUFDN0IsTUFBTSxTQUFTLEVBQUUsVUFBVTtFQUMzQixJQUFJLE1BQU07RUFDVixJQUFJLElBQUksQ0FBQztFQUNULE1BQU8sRUFBRSxJQUFJLE9BQVE7SUFDbkIsT0FBTyxVQUFVLFFBQVEsQ0FBQyxLQUFLLFVBQVUsUUFBUSxDQUFDO0VBQ3BEO0VBQ0EsT0FBTyxRQUFRO0FBQ2pCIn0= +// denoCacheMetadata=10016019964972805109,10825589616045233547
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/50c2c141172a883abf52dfcc12154f246025a3ff081b6707c82d69b2bfa533ca.js b/vendor/gen/https/jsr.io/50c2c141172a883abf52dfcc12154f246025a3ff081b6707c82d69b2bfa533ca.js new file mode 100644 index 0000000..59ead7b --- /dev/null +++ b/vendor/gen/https/jsr.io/50c2c141172a883abf52dfcc12154f246025a3ff081b6707c82d69b2bfa533ca.js @@ -0,0 +1,71 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { assertPath } from "../_common/assert_path.ts"; +import { isPathSeparator } from "./_util.ts"; +import { normalize } from "./normalize.ts"; +/** + * Join all given a sequence of `paths`,then normalizes the resulting path. + * + * @example Usage + * ```ts + * import { join } from "@std/path/windows/join"; + * import { assertEquals } from "@std/assert"; + * + * const joined = join("C:\\foo", "bar", "baz\\.."); + * assertEquals(joined, "C:\\foo\\bar"); + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `join` from `@std/path/windows/unstable-join`. + * + * @param paths The paths to join. + * @returns The joined path. + */ export function join(...paths) { + paths.forEach((path)=>assertPath(path)); + paths = paths.filter((path)=>path.length > 0); + if (paths.length === 0) return "."; + // Make sure that the joined path doesn't start with two slashes, because + // normalize() will mistake it for an UNC path then. + // + // This step is skipped when it is very clear that the user actually + // intended to point at an UNC path. This is assumed when the first + // non-empty string arguments starts with exactly two slashes followed by + // at least one more non-slash character. + // + // Note that for normalize() to treat a path as an UNC path it needs to + // have at least 2 components, so we don't filter for that here. + // This means that the user can use join to construct UNC paths from + // a server name and a share name; for example: + // path.join('//server', 'share') -> '\\\\server\\share\\' + let needsReplace = true; + let slashCount = 0; + const firstPart = paths[0]; + if (isPathSeparator(firstPart.charCodeAt(0))) { + ++slashCount; + const firstLen = firstPart.length; + if (firstLen > 1) { + if (isPathSeparator(firstPart.charCodeAt(1))) { + ++slashCount; + if (firstLen > 2) { + if (isPathSeparator(firstPart.charCodeAt(2))) ++slashCount; + else { + // We matched a UNC path in the first part + needsReplace = false; + } + } + } + } + } + let joined = paths.join("\\"); + if (needsReplace) { + // Find any more consecutive slashes we need to replace + for(; slashCount < joined.length; ++slashCount){ + if (!isPathSeparator(joined.charCodeAt(slashCount))) break; + } + // Replace the slashes if needed + if (slashCount >= 2) joined = `\\${joined.slice(slashCount)}`; + } + return normalize(joined); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC93aW5kb3dzL2pvaW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgYXNzZXJ0UGF0aCB9IGZyb20gXCIuLi9fY29tbW9uL2Fzc2VydF9wYXRoLnRzXCI7XG5pbXBvcnQgeyBpc1BhdGhTZXBhcmF0b3IgfSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4vbm9ybWFsaXplLnRzXCI7XG5cbi8qKlxuICogSm9pbiBhbGwgZ2l2ZW4gYSBzZXF1ZW5jZSBvZiBgcGF0aHNgLHRoZW4gbm9ybWFsaXplcyB0aGUgcmVzdWx0aW5nIHBhdGguXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBqb2luIH0gZnJvbSBcIkBzdGQvcGF0aC93aW5kb3dzL2pvaW5cIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IGpvaW5lZCA9IGpvaW4oXCJDOlxcXFxmb29cIiwgXCJiYXJcIiwgXCJiYXpcXFxcLi5cIik7XG4gKiBhc3NlcnRFcXVhbHMoam9pbmVkLCBcIkM6XFxcXGZvb1xcXFxiYXJcIik7XG4gKiBgYGBcbiAqXG4gKiBOb3RlOiBJZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBmaWxlIFVSTHMsXG4gKiB1c2UgdGhlIG5ldyB2ZXJzaW9uIG9mIGBqb2luYCBmcm9tIGBAc3RkL3BhdGgvd2luZG93cy91bnN0YWJsZS1qb2luYC5cbiAqXG4gKiBAcGFyYW0gcGF0aHMgVGhlIHBhdGhzIHRvIGpvaW4uXG4gKiBAcmV0dXJucyBUaGUgam9pbmVkIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBqb2luKC4uLnBhdGhzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIHBhdGhzLmZvckVhY2goKHBhdGgpID0+IGFzc2VydFBhdGgocGF0aCkpO1xuICBwYXRocyA9IHBhdGhzLmZpbHRlcigocGF0aCkgPT4gcGF0aC5sZW5ndGggPiAwKTtcbiAgaWYgKHBhdGhzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFwiLlwiO1xuXG4gIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBqb2luZWQgcGF0aCBkb2Vzbid0IHN0YXJ0IHdpdGggdHdvIHNsYXNoZXMsIGJlY2F1c2VcbiAgLy8gbm9ybWFsaXplKCkgd2lsbCBtaXN0YWtlIGl0IGZvciBhbiBVTkMgcGF0aCB0aGVuLlxuICAvL1xuICAvLyBUaGlzIHN0ZXAgaXMgc2tpcHBlZCB3aGVuIGl0IGlzIHZlcnkgY2xlYXIgdGhhdCB0aGUgdXNlciBhY3R1YWxseVxuICAvLyBpbnRlbmRlZCB0byBwb2ludCBhdCBhbiBVTkMgcGF0aC4gVGhpcyBpcyBhc3N1bWVkIHdoZW4gdGhlIGZpcnN0XG4gIC8vIG5vbi1lbXB0eSBzdHJpbmcgYXJndW1lbnRzIHN0YXJ0cyB3aXRoIGV4YWN0bHkgdHdvIHNsYXNoZXMgZm9sbG93ZWQgYnlcbiAgLy8gYXQgbGVhc3Qgb25lIG1vcmUgbm9uLXNsYXNoIGNoYXJhY3Rlci5cbiAgLy9cbiAgLy8gTm90ZSB0aGF0IGZvciBub3JtYWxpemUoKSB0byB0cmVhdCBhIHBhdGggYXMgYW4gVU5DIHBhdGggaXQgbmVlZHMgdG9cbiAgLy8gaGF2ZSBhdCBsZWFzdCAyIGNvbXBvbmVudHMsIHNvIHdlIGRvbid0IGZpbHRlciBmb3IgdGhhdCBoZXJlLlxuICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhlIHVzZXIgY2FuIHVzZSBqb2luIHRvIGNvbnN0cnVjdCBVTkMgcGF0aHMgZnJvbVxuICAvLyBhIHNlcnZlciBuYW1lIGFuZCBhIHNoYXJlIG5hbWU7IGZvciBleGFtcGxlOlxuICAvLyAgIHBhdGguam9pbignLy9zZXJ2ZXInLCAnc2hhcmUnKSAtPiAnXFxcXFxcXFxzZXJ2ZXJcXFxcc2hhcmVcXFxcJ1xuICBsZXQgbmVlZHNSZXBsYWNlID0gdHJ1ZTtcbiAgbGV0IHNsYXNoQ291bnQgPSAwO1xuICBjb25zdCBmaXJzdFBhcnQgPSBwYXRoc1swXSE7XG4gIGlmIChpc1BhdGhTZXBhcmF0b3IoZmlyc3RQYXJ0LmNoYXJDb2RlQXQoMCkpKSB7XG4gICAgKytzbGFzaENvdW50O1xuICAgIGNvbnN0IGZpcnN0TGVuID0gZmlyc3RQYXJ0Lmxlbmd0aDtcbiAgICBpZiAoZmlyc3RMZW4gPiAxKSB7XG4gICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKGZpcnN0UGFydC5jaGFyQ29kZUF0KDEpKSkge1xuICAgICAgICArK3NsYXNoQ291bnQ7XG4gICAgICAgIGlmIChmaXJzdExlbiA+IDIpIHtcbiAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKGZpcnN0UGFydC5jaGFyQ29kZUF0KDIpKSkgKytzbGFzaENvdW50O1xuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gV2UgbWF0Y2hlZCBhIFVOQyBwYXRoIGluIHRoZSBmaXJzdCBwYXJ0XG4gICAgICAgICAgICBuZWVkc1JlcGxhY2UgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgbGV0IGpvaW5lZCA9IHBhdGhzLmpvaW4oXCJcXFxcXCIpO1xuICBpZiAobmVlZHNSZXBsYWNlKSB7XG4gICAgLy8gRmluZCBhbnkgbW9yZSBjb25zZWN1dGl2ZSBzbGFzaGVzIHdlIG5lZWQgdG8gcmVwbGFjZVxuICAgIGZvciAoOyBzbGFzaENvdW50IDwgam9pbmVkLmxlbmd0aDsgKytzbGFzaENvdW50KSB7XG4gICAgICBpZiAoIWlzUGF0aFNlcGFyYXRvcihqb2luZWQuY2hhckNvZGVBdChzbGFzaENvdW50KSkpIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFJlcGxhY2UgdGhlIHNsYXNoZXMgaWYgbmVlZGVkXG4gICAgaWYgKHNsYXNoQ291bnQgPj0gMikgam9pbmVkID0gYFxcXFwke2pvaW5lZC5zbGljZShzbGFzaENvdW50KX1gO1xuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZShqb2luZWQpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxxQ0FBcUM7QUFFckMsU0FBUyxVQUFVLFFBQVEsNEJBQTRCO0FBQ3ZELFNBQVMsZUFBZSxRQUFRLGFBQWE7QUFDN0MsU0FBUyxTQUFTLFFBQVEsaUJBQWlCO0FBRTNDOzs7Ozs7Ozs7Ozs7Ozs7OztDQWlCQyxHQUNELE9BQU8sU0FBUyxLQUFLLEdBQUcsS0FBZTtFQUNyQyxNQUFNLE9BQU8sQ0FBQyxDQUFDLE9BQVMsV0FBVztFQUNuQyxRQUFRLE1BQU0sTUFBTSxDQUFDLENBQUMsT0FBUyxLQUFLLE1BQU0sR0FBRztFQUM3QyxJQUFJLE1BQU0sTUFBTSxLQUFLLEdBQUcsT0FBTztFQUUvQix5RUFBeUU7RUFDekUsb0RBQW9EO0VBQ3BELEVBQUU7RUFDRixvRUFBb0U7RUFDcEUsbUVBQW1FO0VBQ25FLHlFQUF5RTtFQUN6RSx5Q0FBeUM7RUFDekMsRUFBRTtFQUNGLHVFQUF1RTtFQUN2RSxnRUFBZ0U7RUFDaEUsb0VBQW9FO0VBQ3BFLCtDQUErQztFQUMvQyw0REFBNEQ7RUFDNUQsSUFBSSxlQUFlO0VBQ25CLElBQUksYUFBYTtFQUNqQixNQUFNLFlBQVksS0FBSyxDQUFDLEVBQUU7RUFDMUIsSUFBSSxnQkFBZ0IsVUFBVSxVQUFVLENBQUMsS0FBSztJQUM1QyxFQUFFO0lBQ0YsTUFBTSxXQUFXLFVBQVUsTUFBTTtJQUNqQyxJQUFJLFdBQVcsR0FBRztNQUNoQixJQUFJLGdCQUFnQixVQUFVLFVBQVUsQ0FBQyxLQUFLO1FBQzVDLEVBQUU7UUFDRixJQUFJLFdBQVcsR0FBRztVQUNoQixJQUFJLGdCQUFnQixVQUFVLFVBQVUsQ0FBQyxLQUFLLEVBQUU7ZUFDM0M7WUFDSCwwQ0FBMEM7WUFDMUMsZUFBZTtVQUNqQjtRQUNGO01BQ0Y7SUFDRjtFQUNGO0VBQ0EsSUFBSSxTQUFTLE1BQU0sSUFBSSxDQUFDO0VBQ3hCLElBQUksY0FBYztJQUNoQix1REFBdUQ7SUFDdkQsTUFBTyxhQUFhLE9BQU8sTUFBTSxFQUFFLEVBQUUsV0FBWTtNQUMvQyxJQUFJLENBQUMsZ0JBQWdCLE9BQU8sVUFBVSxDQUFDLGNBQWM7SUFDdkQ7SUFFQSxnQ0FBZ0M7SUFDaEMsSUFBSSxjQUFjLEdBQUcsU0FBUyxDQUFDLEVBQUUsRUFBRSxPQUFPLEtBQUssQ0FBQyxhQUFhO0VBQy9EO0VBRUEsT0FBTyxVQUFVO0FBQ25CIn0= +// denoCacheMetadata=17100293115144797105,3873617362002709515
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/50ec11ccd831a2a5370f919d392e0412ed7085af7d5d821bc3fce15102f26ea9.js b/vendor/gen/https/jsr.io/50ec11ccd831a2a5370f919d392e0412ed7085af7d5d821bc3fce15102f26ea9.js new file mode 100644 index 0000000..7d9467f --- /dev/null +++ b/vendor/gen/https/jsr.io/50ec11ccd831a2a5370f919d392e0412ed7085af7d5d821bc3fce15102f26ea9.js @@ -0,0 +1,29 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { fromFileUrl as posixFromFileUrl } from "./posix/from_file_url.ts"; +import { fromFileUrl as windowsFromFileUrl } from "./windows/from_file_url.ts"; +/** + * Converts a file URL to a path string. + * + * @example Usage + * ```ts + * import { fromFileUrl } from "@std/path/from-file-url"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(fromFileUrl("file:///home/foo"), "\\home\\foo"); + * assertEquals(fromFileUrl("file:///C:/Users/foo"), "C:\\Users\\foo"); + * assertEquals(fromFileUrl("file://localhost/home/foo"), "\\home\\foo"); + * } else { + * assertEquals(fromFileUrl("file:///home/foo"), "/home/foo"); + * } + * ``` + * + * @param url The file URL to convert to a path. + * @returns The path string. + */ export function fromFileUrl(url) { + return isWindows ? windowsFromFileUrl(url) : posixFromFileUrl(url); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9mcm9tX2ZpbGVfdXJsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGlzV2luZG93cyB9IGZyb20gXCIuL19vcy50c1wiO1xuaW1wb3J0IHsgZnJvbUZpbGVVcmwgYXMgcG9zaXhGcm9tRmlsZVVybCB9IGZyb20gXCIuL3Bvc2l4L2Zyb21fZmlsZV91cmwudHNcIjtcbmltcG9ydCB7IGZyb21GaWxlVXJsIGFzIHdpbmRvd3NGcm9tRmlsZVVybCB9IGZyb20gXCIuL3dpbmRvd3MvZnJvbV9maWxlX3VybC50c1wiO1xuXG4vKipcbiAqIENvbnZlcnRzIGEgZmlsZSBVUkwgdG8gYSBwYXRoIHN0cmluZy5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGZyb21GaWxlVXJsIH0gZnJvbSBcIkBzdGQvcGF0aC9mcm9tLWZpbGUtdXJsXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBpZiAoRGVuby5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCIpIHtcbiAqICAgYXNzZXJ0RXF1YWxzKGZyb21GaWxlVXJsKFwiZmlsZTovLy9ob21lL2Zvb1wiKSwgXCJcXFxcaG9tZVxcXFxmb29cIik7XG4gKiAgIGFzc2VydEVxdWFscyhmcm9tRmlsZVVybChcImZpbGU6Ly8vQzovVXNlcnMvZm9vXCIpLCBcIkM6XFxcXFVzZXJzXFxcXGZvb1wiKTtcbiAqICAgYXNzZXJ0RXF1YWxzKGZyb21GaWxlVXJsKFwiZmlsZTovL2xvY2FsaG9zdC9ob21lL2Zvb1wiKSwgXCJcXFxcaG9tZVxcXFxmb29cIik7XG4gKiB9IGVsc2Uge1xuICogICBhc3NlcnRFcXVhbHMoZnJvbUZpbGVVcmwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpLCBcIi9ob21lL2Zvb1wiKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB1cmwgVGhlIGZpbGUgVVJMIHRvIGNvbnZlcnQgdG8gYSBwYXRoLlxuICogQHJldHVybnMgVGhlIHBhdGggc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbUZpbGVVcmwodXJsOiBzdHJpbmcgfCBVUkwpOiBzdHJpbmcge1xuICByZXR1cm4gaXNXaW5kb3dzID8gd2luZG93c0Zyb21GaWxlVXJsKHVybCkgOiBwb3NpeEZyb21GaWxlVXJsKHVybCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQyxTQUFTLFNBQVMsUUFBUSxXQUFXO0FBQ3JDLFNBQVMsZUFBZSxnQkFBZ0IsUUFBUSwyQkFBMkI7QUFDM0UsU0FBUyxlQUFlLGtCQUFrQixRQUFRLDZCQUE2QjtBQUUvRTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW1CQyxHQUNELE9BQU8sU0FBUyxZQUFZLEdBQWlCO0VBQzNDLE9BQU8sWUFBWSxtQkFBbUIsT0FBTyxpQkFBaUI7QUFDaEUifQ== +// denoCacheMetadata=5148178517284371969,17515150741914060454
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/51bfd7542bc0eda1a32293215f01b64eb581456a2370dd96febda3af3ccdbf29.js b/vendor/gen/https/jsr.io/51bfd7542bc0eda1a32293215f01b64eb581456a2370dd96febda3af3ccdbf29.js new file mode 100644 index 0000000..9e9464b --- /dev/null +++ b/vendor/gen/https/jsr.io/51bfd7542bc0eda1a32293215f01b64eb581456a2370dd96febda3af3ccdbf29.js @@ -0,0 +1,34 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { common as _common } from "./_common/common.ts"; +import { SEPARATOR } from "./constants.ts"; +/** + * Determines the common path from a set of paths for the given OS. + * + * @param paths Paths to search for common path. + * @returns The common path. + * + * @example Usage + * ```ts + * import { common } from "@std/path/common"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * const path = common([ + * "C:\\deno\\std\\path\\mod.ts", + * "C:\\deno\\std\\fs\\mod.ts" + * ]); + * assertEquals(path, "C:\\deno\\std\\"); + * } else { + * const path = common([ + * "./deno/std/path/mod.ts", + * "./deno/std/fs/mod.ts" + * ]); + * assertEquals(path, "./deno/std/"); + * } + * ``` + */ export function common(paths) { + return _common(paths, SEPARATOR); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9jb21tb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgY29tbW9uIGFzIF9jb21tb24gfSBmcm9tIFwiLi9fY29tbW9uL2NvbW1vbi50c1wiO1xuaW1wb3J0IHsgU0VQQVJBVE9SIH0gZnJvbSBcIi4vY29uc3RhbnRzLnRzXCI7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB0aGUgY29tbW9uIHBhdGggZnJvbSBhIHNldCBvZiBwYXRocyBmb3IgdGhlIGdpdmVuIE9TLlxuICpcbiAqIEBwYXJhbSBwYXRocyBQYXRocyB0byBzZWFyY2ggZm9yIGNvbW1vbiBwYXRoLlxuICogQHJldHVybnMgVGhlIGNvbW1vbiBwYXRoLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgY29tbW9uIH0gZnJvbSBcIkBzdGQvcGF0aC9jb21tb25cIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGlmIChEZW5vLmJ1aWxkLm9zID09PSBcIndpbmRvd3NcIikge1xuICogICBjb25zdCBwYXRoID0gY29tbW9uKFtcbiAqICAgICBcIkM6XFxcXGRlbm9cXFxcc3RkXFxcXHBhdGhcXFxcbW9kLnRzXCIsXG4gKiAgICAgXCJDOlxcXFxkZW5vXFxcXHN0ZFxcXFxmc1xcXFxtb2QudHNcIlxuICogICBdKTtcbiAqICAgYXNzZXJ0RXF1YWxzKHBhdGgsIFwiQzpcXFxcZGVub1xcXFxzdGRcXFxcXCIpO1xuICogfSBlbHNlIHtcbiAqICAgY29uc3QgcGF0aCA9IGNvbW1vbihbXG4gKiAgICAgXCIuL2Rlbm8vc3RkL3BhdGgvbW9kLnRzXCIsXG4gKiAgICAgXCIuL2Rlbm8vc3RkL2ZzL21vZC50c1wiXG4gKiAgIF0pO1xuICogICBhc3NlcnRFcXVhbHMocGF0aCwgXCIuL2Rlbm8vc3RkL1wiKTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tbW9uKHBhdGhzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIHJldHVybiBfY29tbW9uKHBhdGhzLCBTRVBBUkFUT1IpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckMsU0FBUyxVQUFVLE9BQU8sUUFBUSxzQkFBc0I7QUFDeEQsU0FBUyxTQUFTLFFBQVEsaUJBQWlCO0FBRTNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBeUJDLEdBQ0QsT0FBTyxTQUFTLE9BQU8sS0FBZTtFQUNwQyxPQUFPLFFBQVEsT0FBTztBQUN4QiJ9 +// denoCacheMetadata=9149851732963502573,12738996882824302011
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/52723ab88f0d7683c38830d4b4913dacb4e28f10cae0c1b3c7edf5edbb3180c0.js b/vendor/gen/https/jsr.io/52723ab88f0d7683c38830d4b4913dacb4e28f10cae0c1b3c7edf5edbb3180c0.js new file mode 100644 index 0000000..dddc7fa --- /dev/null +++ b/vendor/gen/https/jsr.io/52723ab88f0d7683c38830d4b4913dacb4e28f10cae0c1b3c7edf5edbb3180c0.js @@ -0,0 +1,40 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { join } from "./join.ts"; +import { SEPARATOR } from "./constants.ts"; +import { normalizeGlob } from "./normalize_glob.ts"; +/** + * Like join(), but doesn't collapse "**\/.." when `globstar` is true. + * + * @example Usage + * ```ts + * import { joinGlobs } from "@std/path/posix/join-globs"; + * import { assertEquals } from "@std/assert"; + * + * const path = joinGlobs(["foo", "bar", "**"], { globstar: true }); + * assertEquals(path, "foo/bar/**"); + * ``` + * + * @param globs The globs to join. + * @param options The options to use. + * @returns The joined path. + */ export function joinGlobs(globs, options = {}) { + const { globstar = false } = options; + if (!globstar || globs.length === 0) { + return join(...globs); + } + let joined; + for (const glob of globs){ + const path = glob; + if (path.length > 0) { + if (!joined) joined = path; + else joined += `${SEPARATOR}${path}`; + } + } + if (!joined) return "."; + return normalizeGlob(joined, { + globstar + }); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9wb3NpeC9qb2luX2dsb2JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB0eXBlIHsgR2xvYk9wdGlvbnMgfSBmcm9tIFwiLi4vX2NvbW1vbi9nbG9iX3RvX3JlZ19leHAudHNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwiLi9qb2luLnRzXCI7XG5pbXBvcnQgeyBTRVBBUkFUT1IgfSBmcm9tIFwiLi9jb25zdGFudHMudHNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZUdsb2IgfSBmcm9tIFwiLi9ub3JtYWxpemVfZ2xvYi50c1wiO1xuXG5leHBvcnQgdHlwZSB7IEdsb2JPcHRpb25zIH07XG5cbi8qKlxuICogTGlrZSBqb2luKCksIGJ1dCBkb2Vzbid0IGNvbGxhcHNlIFwiKipcXC8uLlwiIHdoZW4gYGdsb2JzdGFyYCBpcyB0cnVlLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgam9pbkdsb2JzIH0gZnJvbSBcIkBzdGQvcGF0aC9wb3NpeC9qb2luLWdsb2JzXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBwYXRoID0gam9pbkdsb2JzKFtcImZvb1wiLCBcImJhclwiLCBcIioqXCJdLCB7IGdsb2JzdGFyOiB0cnVlIH0pO1xuICogYXNzZXJ0RXF1YWxzKHBhdGgsIFwiZm9vL2Jhci8qKlwiKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBnbG9icyBUaGUgZ2xvYnMgdG8gam9pbi5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIHRvIHVzZS5cbiAqIEByZXR1cm5zIFRoZSBqb2luZWQgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpvaW5HbG9icyhcbiAgZ2xvYnM6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBQaWNrPEdsb2JPcHRpb25zLCBcImdsb2JzdGFyXCI+ID0ge30sXG4pOiBzdHJpbmcge1xuICBjb25zdCB7IGdsb2JzdGFyID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gIGlmICghZ2xvYnN0YXIgfHwgZ2xvYnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGpvaW4oLi4uZ2xvYnMpO1xuICB9XG4gIGxldCBqb2luZWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZm9yIChjb25zdCBnbG9iIG9mIGdsb2JzKSB7XG4gICAgY29uc3QgcGF0aCA9IGdsb2I7XG4gICAgaWYgKHBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFqb2luZWQpIGpvaW5lZCA9IHBhdGg7XG4gICAgICBlbHNlIGpvaW5lZCArPSBgJHtTRVBBUkFUT1J9JHtwYXRofWA7XG4gICAgfVxuICB9XG4gIGlmICgham9pbmVkKSByZXR1cm4gXCIuXCI7XG4gIHJldHVybiBub3JtYWxpemVHbG9iKGpvaW5lZCwgeyBnbG9ic3RhciB9KTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBR3JDLFNBQVMsSUFBSSxRQUFRLFlBQVk7QUFDakMsU0FBUyxTQUFTLFFBQVEsaUJBQWlCO0FBQzNDLFNBQVMsYUFBYSxRQUFRLHNCQUFzQjtBQUlwRDs7Ozs7Ozs7Ozs7Ozs7O0NBZUMsR0FDRCxPQUFPLFNBQVMsVUFDZCxLQUFlLEVBQ2YsVUFBeUMsQ0FBQyxDQUFDO0VBRTNDLE1BQU0sRUFBRSxXQUFXLEtBQUssRUFBRSxHQUFHO0VBQzdCLElBQUksQ0FBQyxZQUFZLE1BQU0sTUFBTSxLQUFLLEdBQUc7SUFDbkMsT0FBTyxRQUFRO0VBQ2pCO0VBQ0EsSUFBSTtFQUNKLEtBQUssTUFBTSxRQUFRLE1BQU87SUFDeEIsTUFBTSxPQUFPO0lBQ2IsSUFBSSxLQUFLLE1BQU0sR0FBRyxHQUFHO01BQ25CLElBQUksQ0FBQyxRQUFRLFNBQVM7V0FDakIsVUFBVSxHQUFHLFlBQVksTUFBTTtJQUN0QztFQUNGO0VBQ0EsSUFBSSxDQUFDLFFBQVEsT0FBTztFQUNwQixPQUFPLGNBQWMsUUFBUTtJQUFFO0VBQVM7QUFDMUMifQ== +// denoCacheMetadata=8474048573527403996,8715843483137798462
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/52a5ceb4391fa51760fc2e28428cfa87e4f4e1751be6b657bfd4b7e26746aba1.js b/vendor/gen/https/jsr.io/52a5ceb4391fa51760fc2e28428cfa87e4f4e1751be6b657bfd4b7e26746aba1.js new file mode 100644 index 0000000..1ed4e1e --- /dev/null +++ b/vendor/gen/https/jsr.io/52a5ceb4391fa51760fc2e28428cfa87e4f4e1751be6b657bfd4b7e26746aba1.js @@ -0,0 +1,39 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +export function runLengthEncode(arr) { + const data = []; + const runLengths = []; + let prev = Symbol("none"); + for (const x of arr){ + if (x === prev) { + ++runLengths[runLengths.length - 1]; + } else { + prev = x; + data.push(x); + runLengths.push(1); + } + } + for (const r of runLengths){ + if (r >= 0x100) { + throw new Error(`Run length too long: ${r}`); + } + } + return { + d: btoa(String.fromCharCode(...data)), + r: btoa(String.fromCharCode(...runLengths)) + }; +} +export function runLengthDecode({ d, r }) { + const data = atob(d); + const runLengths = atob(r); + let out = ""; + for (const [i, ch] of [ + ...runLengths + ].entries()){ + out += data[i].repeat(ch.codePointAt(0)); + } + return Uint8Array.from([ + ...out + ].map((x)=>x.codePointAt(0))); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvY2xpLzEuMC4xNy9fcnVuX2xlbmd0aC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuXG5leHBvcnQgZnVuY3Rpb24gcnVuTGVuZ3RoRW5jb2RlKGFycjogbnVtYmVyW10pIHtcbiAgY29uc3QgZGF0YTogbnVtYmVyW10gPSBbXTtcbiAgY29uc3QgcnVuTGVuZ3RoczogbnVtYmVyW10gPSBbXTtcblxuICBsZXQgcHJldjogc3ltYm9sIHwgbnVtYmVyID0gU3ltYm9sKFwibm9uZVwiKTtcblxuICBmb3IgKGNvbnN0IHggb2YgYXJyKSB7XG4gICAgaWYgKHggPT09IHByZXYpIHtcbiAgICAgICsrcnVuTGVuZ3Roc1tydW5MZW5ndGhzLmxlbmd0aCAtIDFdITtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJldiA9IHg7XG4gICAgICBkYXRhLnB1c2goeCk7XG4gICAgICBydW5MZW5ndGhzLnB1c2goMSk7XG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCByIG9mIHJ1bkxlbmd0aHMpIHtcbiAgICBpZiAociA+PSAweDEwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBSdW4gbGVuZ3RoIHRvbyBsb25nOiAke3J9YCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkOiBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUoLi4uZGF0YSkpLFxuICAgIHI6IGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZSguLi5ydW5MZW5ndGhzKSksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydW5MZW5ndGhEZWNvZGUoeyBkLCByIH06IHsgZDogc3RyaW5nOyByOiBzdHJpbmcgfSkge1xuICBjb25zdCBkYXRhID0gYXRvYihkKTtcbiAgY29uc3QgcnVuTGVuZ3RocyA9IGF0b2Iocik7XG4gIGxldCBvdXQgPSBcIlwiO1xuXG4gIGZvciAoY29uc3QgW2ksIGNoXSBvZiBbLi4ucnVuTGVuZ3Roc10uZW50cmllcygpKSB7XG4gICAgb3V0ICs9IGRhdGFbaV0hLnJlcGVhdChjaC5jb2RlUG9pbnRBdCgwKSEpO1xuICB9XG5cbiAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShbLi4ub3V0XS5tYXAoKHgpID0+IHguY29kZVBvaW50QXQoMCkhKSk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBRXJELE9BQU8sU0FBUyxnQkFBZ0IsR0FBYTtFQUMzQyxNQUFNLE9BQWlCLEVBQUU7RUFDekIsTUFBTSxhQUF1QixFQUFFO0VBRS9CLElBQUksT0FBd0IsT0FBTztFQUVuQyxLQUFLLE1BQU0sS0FBSyxJQUFLO0lBQ25CLElBQUksTUFBTSxNQUFNO01BQ2QsRUFBRSxVQUFVLENBQUMsV0FBVyxNQUFNLEdBQUcsRUFBRTtJQUNyQyxPQUFPO01BQ0wsT0FBTztNQUNQLEtBQUssSUFBSSxDQUFDO01BQ1YsV0FBVyxJQUFJLENBQUM7SUFDbEI7RUFDRjtFQUVBLEtBQUssTUFBTSxLQUFLLFdBQVk7SUFDMUIsSUFBSSxLQUFLLE9BQU87TUFDZCxNQUFNLElBQUksTUFBTSxDQUFDLHFCQUFxQixFQUFFLEdBQUc7SUFDN0M7RUFDRjtFQUVBLE9BQU87SUFDTCxHQUFHLEtBQUssT0FBTyxZQUFZLElBQUk7SUFDL0IsR0FBRyxLQUFLLE9BQU8sWUFBWSxJQUFJO0VBQ2pDO0FBQ0Y7QUFFQSxPQUFPLFNBQVMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBNEI7RUFDaEUsTUFBTSxPQUFPLEtBQUs7RUFDbEIsTUFBTSxhQUFhLEtBQUs7RUFDeEIsSUFBSSxNQUFNO0VBRVYsS0FBSyxNQUFNLENBQUMsR0FBRyxHQUFHLElBQUk7T0FBSTtHQUFXLENBQUMsT0FBTyxHQUFJO0lBQy9DLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBRSxNQUFNLENBQUMsR0FBRyxXQUFXLENBQUM7RUFDeEM7RUFFQSxPQUFPLFdBQVcsSUFBSSxDQUFDO09BQUk7R0FBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQU0sRUFBRSxXQUFXLENBQUM7QUFDM0QifQ== +// denoCacheMetadata=1118774851535590230,4532285022032180039
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/5304106c4e963b63ea0d18a201e1b9cdec614d7f987a7c1df04d83dda9ad391a.js b/vendor/gen/https/jsr.io/5304106c4e963b63ea0d18a201e1b9cdec614d7f987a7c1df04d83dda9ad391a.js new file mode 100644 index 0000000..ff4163d --- /dev/null +++ b/vendor/gen/https/jsr.io/5304106c4e963b63ea0d18a201e1b9cdec614d7f987a7c1df04d83dda9ad391a.js @@ -0,0 +1,17 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +export function _format(sep, pathObject) { + const dir = pathObject.dir || pathObject.root; + const base = pathObject.base || (pathObject.name ?? "") + (pathObject.ext ?? ""); + if (!dir) return base; + if (base === sep) return dir; + if (dir === pathObject.root) return dir + base; + return dir + sep + base; +} +export function assertArg(pathObject) { + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError(`The "pathObject" argument must be of type Object, received type "${typeof pathObject}"`); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9fY29tbW9uL2Zvcm1hdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgdHlwZSB7IFBhcnNlZFBhdGggfSBmcm9tIFwiLi4vdHlwZXMudHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIF9mb3JtYXQoXG4gIHNlcDogc3RyaW5nLFxuICBwYXRoT2JqZWN0OiBQYXJ0aWFsPFBhcnNlZFBhdGg+LFxuKTogc3RyaW5nIHtcbiAgY29uc3QgZGlyOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBwYXRoT2JqZWN0LmRpciB8fCBwYXRoT2JqZWN0LnJvb3Q7XG4gIGNvbnN0IGJhc2U6IHN0cmluZyA9IHBhdGhPYmplY3QuYmFzZSB8fFxuICAgIChwYXRoT2JqZWN0Lm5hbWUgPz8gXCJcIikgKyAocGF0aE9iamVjdC5leHQgPz8gXCJcIik7XG4gIGlmICghZGlyKSByZXR1cm4gYmFzZTtcbiAgaWYgKGJhc2UgPT09IHNlcCkgcmV0dXJuIGRpcjtcbiAgaWYgKGRpciA9PT0gcGF0aE9iamVjdC5yb290KSByZXR1cm4gZGlyICsgYmFzZTtcbiAgcmV0dXJuIGRpciArIHNlcCArIGJhc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRBcmcocGF0aE9iamVjdDogUGFydGlhbDxQYXJzZWRQYXRoPikge1xuICBpZiAocGF0aE9iamVjdCA9PT0gbnVsbCB8fCB0eXBlb2YgcGF0aE9iamVjdCAhPT0gXCJvYmplY3RcIikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBgVGhlIFwicGF0aE9iamVjdFwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBPYmplY3QsIHJlY2VpdmVkIHR5cGUgXCIke3R5cGVvZiBwYXRoT2JqZWN0fVwiYCxcbiAgICApO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUlyQyxPQUFPLFNBQVMsUUFDZCxHQUFXLEVBQ1gsVUFBK0I7RUFFL0IsTUFBTSxNQUEwQixXQUFXLEdBQUcsSUFBSSxXQUFXLElBQUk7RUFDakUsTUFBTSxPQUFlLFdBQVcsSUFBSSxJQUNsQyxDQUFDLFdBQVcsSUFBSSxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLEVBQUU7RUFDakQsSUFBSSxDQUFDLEtBQUssT0FBTztFQUNqQixJQUFJLFNBQVMsS0FBSyxPQUFPO0VBQ3pCLElBQUksUUFBUSxXQUFXLElBQUksRUFBRSxPQUFPLE1BQU07RUFDMUMsT0FBTyxNQUFNLE1BQU07QUFDckI7QUFFQSxPQUFPLFNBQVMsVUFBVSxVQUErQjtFQUN2RCxJQUFJLGVBQWUsUUFBUSxPQUFPLGVBQWUsVUFBVTtJQUN6RCxNQUFNLElBQUksVUFDUixDQUFDLGlFQUFpRSxFQUFFLE9BQU8sV0FBVyxDQUFDLENBQUM7RUFFNUY7QUFDRiJ9 +// denoCacheMetadata=3778493081554655896,9698638942083816661
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/5351942042f1aab5ffc9c2cbd36ae1eb5897741bd7565a8dc4fc7d1403da6d62.js b/vendor/gen/https/jsr.io/5351942042f1aab5ffc9c2cbd36ae1eb5897741bd7565a8dc4fc7d1403da6d62.js new file mode 100644 index 0000000..7dfdab6 --- /dev/null +++ b/vendor/gen/https/jsr.io/5351942042f1aab5ffc9c2cbd36ae1eb5897741bd7565a8dc4fc7d1403da6d62.js @@ -0,0 +1,44 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { extractFrontMatter } from "./_shared.ts"; +import { parse } from "jsr:@std/yaml@^1.0.5/parse"; +import { EXTRACT_YAML_REGEXP } from "./_formats.ts"; +/** + * Extracts and parses {@link https://yaml.org | YAML} from the metadata of + * front matter content. + * + * @example Extract YAML front matter + * ```ts + * import { extract } from "@std/front-matter/yaml"; + * import { assertEquals } from "@std/assert"; + * + * const output = `---yaml + * title: Three dashes marks the spot + * --- + * Hello, world!`; + * const result = extract(output); + * + * assertEquals(result, { + * frontMatter: "title: Three dashes marks the spot", + * body: "Hello, world!", + * attrs: { title: "Three dashes marks the spot" }, + * }); + * ``` + * + * Note: If you need to pass the options to the yaml parse, + * use the new version of this API from `@std/yaml/unstable-yaml`. + * + * @typeParam T The type of the parsed front matter. + * @param text The text to extract YAML front matter from. + * @returns The extracted YAML front matter and body content. + */ export function extract(text) { + const { frontMatter, body } = extractFrontMatter(text, EXTRACT_YAML_REGEXP); + const attrs = frontMatter ? parse(frontMatter) : {}; + return { + frontMatter, + body, + attrs + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnJvbnQtbWF0dGVyLzEuMC45L3lhbWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgZXh0cmFjdEZyb250TWF0dGVyIH0gZnJvbSBcIi4vX3NoYXJlZC50c1wiO1xuaW1wb3J0IHsgcGFyc2UgfSBmcm9tIFwianNyOkBzdGQveWFtbEBeMS4wLjUvcGFyc2VcIjtcbmltcG9ydCB0eXBlIHsgRXh0cmFjdCB9IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5pbXBvcnQgeyBFWFRSQUNUX1lBTUxfUkVHRVhQIH0gZnJvbSBcIi4vX2Zvcm1hdHMudHNcIjtcblxuZXhwb3J0IHR5cGUgeyBFeHRyYWN0IH07XG5cbi8qKlxuICogRXh0cmFjdHMgYW5kIHBhcnNlcyB7QGxpbmsgaHR0cHM6Ly95YW1sLm9yZyB8IFlBTUx9IGZyb20gdGhlIG1ldGFkYXRhIG9mXG4gKiBmcm9udCBtYXR0ZXIgY29udGVudC5cbiAqXG4gKiBAZXhhbXBsZSBFeHRyYWN0IFlBTUwgZnJvbnQgbWF0dGVyXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZXh0cmFjdCB9IGZyb20gXCJAc3RkL2Zyb250LW1hdHRlci95YW1sXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBvdXRwdXQgPSBgLS0teWFtbFxuICogdGl0bGU6IFRocmVlIGRhc2hlcyBtYXJrcyB0aGUgc3BvdFxuICogLS0tXG4gKiBIZWxsbywgd29ybGQhYDtcbiAqIGNvbnN0IHJlc3VsdCA9IGV4dHJhY3Qob3V0cHV0KTtcbiAqXG4gKiBhc3NlcnRFcXVhbHMocmVzdWx0LCB7XG4gKiAgIGZyb250TWF0dGVyOiBcInRpdGxlOiBUaHJlZSBkYXNoZXMgbWFya3MgdGhlIHNwb3RcIixcbiAqICAgYm9keTogXCJIZWxsbywgd29ybGQhXCIsXG4gKiAgIGF0dHJzOiB7IHRpdGxlOiBcIlRocmVlIGRhc2hlcyBtYXJrcyB0aGUgc3BvdFwiIH0sXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIE5vdGU6IElmIHlvdSBuZWVkIHRvIHBhc3MgdGhlIG9wdGlvbnMgdG8gdGhlIHlhbWwgcGFyc2UsXG4gKiB1c2UgdGhlIG5ldyB2ZXJzaW9uIG9mIHRoaXMgQVBJIGZyb20gYEBzdGQveWFtbC91bnN0YWJsZS15YW1sYC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgVGhlIHR5cGUgb2YgdGhlIHBhcnNlZCBmcm9udCBtYXR0ZXIuXG4gKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBleHRyYWN0IFlBTUwgZnJvbnQgbWF0dGVyIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgZXh0cmFjdGVkIFlBTUwgZnJvbnQgbWF0dGVyIGFuZCBib2R5IGNvbnRlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0PFQ+KHRleHQ6IHN0cmluZyk6IEV4dHJhY3Q8VD4ge1xuICBjb25zdCB7IGZyb250TWF0dGVyLCBib2R5IH0gPSBleHRyYWN0RnJvbnRNYXR0ZXIodGV4dCwgRVhUUkFDVF9ZQU1MX1JFR0VYUCk7XG4gIGNvbnN0IGF0dHJzID0gKGZyb250TWF0dGVyID8gcGFyc2UoZnJvbnRNYXR0ZXIpIDoge30pIGFzIFQ7XG4gIHJldHVybiB7IGZyb250TWF0dGVyLCBib2R5LCBhdHRycyB9O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckMsU0FBUyxrQkFBa0IsUUFBUSxlQUFlO0FBQ2xELFNBQVMsS0FBSyxRQUFRLDZCQUE2QjtBQUVuRCxTQUFTLG1CQUFtQixRQUFRLGdCQUFnQjtBQUlwRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQTRCQyxHQUNELE9BQU8sU0FBUyxRQUFXLElBQVk7RUFDckMsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsR0FBRyxtQkFBbUIsTUFBTTtFQUN2RCxNQUFNLFFBQVMsY0FBYyxNQUFNLGVBQWUsQ0FBQztFQUNuRCxPQUFPO0lBQUU7SUFBYTtJQUFNO0VBQU07QUFDcEMifQ== +// denoCacheMetadata=3644297134300504316,15385832643506227791
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/548a8a28c6d1bb97e6d28c99071457837531f26c0806d130d385ecb0c3f40e35.js b/vendor/gen/https/jsr.io/548a8a28c6d1bb97e6d28c99071457837531f26c0806d130d385ecb0c3f40e35.js new file mode 100644 index 0000000..ea12649 --- /dev/null +++ b/vendor/gen/https/jsr.io/548a8a28c6d1bb97e6d28c99071457837531f26c0806d130d385ecb0c3f40e35.js @@ -0,0 +1,25 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +export function common(paths, sep) { + const [first = "", ...remaining] = paths; + const parts = first.split(sep); + let endOfPrefix = parts.length; + let append = ""; + for (const path of remaining){ + const compare = path.split(sep); + if (compare.length <= endOfPrefix) { + endOfPrefix = compare.length; + append = ""; + } + for(let i = 0; i < endOfPrefix; i++){ + if (compare[i] !== parts[i]) { + endOfPrefix = i; + append = i === 0 ? "" : sep; + break; + } + } + } + return parts.slice(0, endOfPrefix).join(sep) + append; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9fY29tbW9uL2NvbW1vbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5leHBvcnQgZnVuY3Rpb24gY29tbW9uKHBhdGhzOiBzdHJpbmdbXSwgc2VwOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBbZmlyc3QgPSBcIlwiLCAuLi5yZW1haW5pbmddID0gcGF0aHM7XG4gIGNvbnN0IHBhcnRzID0gZmlyc3Quc3BsaXQoc2VwKTtcblxuICBsZXQgZW5kT2ZQcmVmaXggPSBwYXJ0cy5sZW5ndGg7XG4gIGxldCBhcHBlbmQgPSBcIlwiO1xuICBmb3IgKGNvbnN0IHBhdGggb2YgcmVtYWluaW5nKSB7XG4gICAgY29uc3QgY29tcGFyZSA9IHBhdGguc3BsaXQoc2VwKTtcbiAgICBpZiAoY29tcGFyZS5sZW5ndGggPD0gZW5kT2ZQcmVmaXgpIHtcbiAgICAgIGVuZE9mUHJlZml4ID0gY29tcGFyZS5sZW5ndGg7XG4gICAgICBhcHBlbmQgPSBcIlwiO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZW5kT2ZQcmVmaXg7IGkrKykge1xuICAgICAgaWYgKGNvbXBhcmVbaV0gIT09IHBhcnRzW2ldKSB7XG4gICAgICAgIGVuZE9mUHJlZml4ID0gaTtcbiAgICAgICAgYXBwZW5kID0gaSA9PT0gMCA/IFwiXCIgOiBzZXA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcGFydHMuc2xpY2UoMCwgZW5kT2ZQcmVmaXgpLmpvaW4oc2VwKSArIGFwcGVuZDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDLE9BQU8sU0FBUyxPQUFPLEtBQWUsRUFBRSxHQUFXO0VBQ2pELE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLFVBQVUsR0FBRztFQUNuQyxNQUFNLFFBQVEsTUFBTSxLQUFLLENBQUM7RUFFMUIsSUFBSSxjQUFjLE1BQU0sTUFBTTtFQUM5QixJQUFJLFNBQVM7RUFDYixLQUFLLE1BQU0sUUFBUSxVQUFXO0lBQzVCLE1BQU0sVUFBVSxLQUFLLEtBQUssQ0FBQztJQUMzQixJQUFJLFFBQVEsTUFBTSxJQUFJLGFBQWE7TUFDakMsY0FBYyxRQUFRLE1BQU07TUFDNUIsU0FBUztJQUNYO0lBRUEsSUFBSyxJQUFJLElBQUksR0FBRyxJQUFJLGFBQWEsSUFBSztNQUNwQyxJQUFJLE9BQU8sQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRTtRQUMzQixjQUFjO1FBQ2QsU0FBUyxNQUFNLElBQUksS0FBSztRQUN4QjtNQUNGO0lBQ0Y7RUFDRjtFQUNBLE9BQU8sTUFBTSxLQUFLLENBQUMsR0FBRyxhQUFhLElBQUksQ0FBQyxPQUFPO0FBQ2pEIn0= +// denoCacheMetadata=8256645066389567415,18114461622825755580
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/55ba303596e2b0b0a3440b83abf434b8919584f53f34ee5017729f4dbe5b3cea.js b/vendor/gen/https/jsr.io/55ba303596e2b0b0a3440b83abf434b8919584f53f34ee5017729f4dbe5b3cea.js new file mode 100644 index 0000000..c5d8fb4 --- /dev/null +++ b/vendor/gen/https/jsr.io/55ba303596e2b0b0a3440b83abf434b8919584f53f34ee5017729f4dbe5b3cea.js @@ -0,0 +1,13 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * The character used to separate entries in the PATH environment variable. + */ export const DELIMITER = ":"; +/** + * The character used to separate components of a file path. + */ export const SEPARATOR = "/"; +/** + * A regular expression that matches one or more path separators. + */ export const SEPARATOR_PATTERN = /\/+/; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9wb3NpeC9jb25zdGFudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuLyoqXG4gKiBUaGUgY2hhcmFjdGVyIHVzZWQgdG8gc2VwYXJhdGUgZW50cmllcyBpbiB0aGUgUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAqL1xuZXhwb3J0IGNvbnN0IERFTElNSVRFUiA9IFwiOlwiIGFzIGNvbnN0O1xuLyoqXG4gKiBUaGUgY2hhcmFjdGVyIHVzZWQgdG8gc2VwYXJhdGUgY29tcG9uZW50cyBvZiBhIGZpbGUgcGF0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNFUEFSQVRPUiA9IFwiL1wiIGFzIGNvbnN0O1xuLyoqXG4gKiBBIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IG1hdGNoZXMgb25lIG9yIG1vcmUgcGF0aCBzZXBhcmF0b3JzLlxuICovXG5leHBvcnQgY29uc3QgU0VQQVJBVE9SX1BBVFRFUk4gPSAvXFwvKy87XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQzs7Q0FFQyxHQUNELE9BQU8sTUFBTSxZQUFZLElBQWE7QUFDdEM7O0NBRUMsR0FDRCxPQUFPLE1BQU0sWUFBWSxJQUFhO0FBQ3RDOztDQUVDLEdBQ0QsT0FBTyxNQUFNLG9CQUFvQixNQUFNIn0= +// denoCacheMetadata=7692415120176802751,3856687756469946887
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/560e33636905b3f4b7797daddd2356fffc4f8a3d1a8ba29b731b198274973d20.js b/vendor/gen/https/jsr.io/560e33636905b3f4b7797daddd2356fffc4f8a3d1a8ba29b731b198274973d20.js new file mode 100644 index 0000000..4237e15 --- /dev/null +++ b/vendor/gen/https/jsr.io/560e33636905b3f4b7797daddd2356fffc4f8a3d1a8ba29b731b198274973d20.js @@ -0,0 +1,33 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { normalize } from "./normalize.ts"; +import { SEPARATOR_PATTERN } from "./constants.ts"; +/** + * Like normalize(), but doesn't collapse "**\/.." when `globstar` is true. + * + * @example Usage + * ```ts + * import { normalizeGlob } from "@std/path/posix/normalize-glob"; + * import { assertEquals } from "@std/assert"; + * + * const path = normalizeGlob("foo/bar/../*", { globstar: true }); + * assertEquals(path, "foo/*"); + * ``` + * + * @param glob The glob to normalize. + * @param options The options to use. + * @returns The normalized path. + */ export function normalizeGlob(glob, options = {}) { + const { globstar = false } = options; + if (glob.match(/\0/g)) { + throw new Error(`Glob contains invalid characters: "${glob}"`); + } + if (!globstar) { + return normalize(glob); + } + const s = SEPARATOR_PATTERN.source; + const badParentPattern = new RegExp(`(?<=(${s}|^)\\*\\*${s})\\.\\.(?=${s}|$)`, "g"); + return normalize(glob.replace(badParentPattern, "\0")).replace(/\0/g, ".."); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9wb3NpeC9ub3JtYWxpemVfZ2xvYi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgdHlwZSB7IEdsb2JPcHRpb25zIH0gZnJvbSBcIi4uL19jb21tb24vZ2xvYl90b19yZWdfZXhwLnRzXCI7XG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi9ub3JtYWxpemUudHNcIjtcbmltcG9ydCB7IFNFUEFSQVRPUl9QQVRURVJOIH0gZnJvbSBcIi4vY29uc3RhbnRzLnRzXCI7XG5cbmV4cG9ydCB0eXBlIHsgR2xvYk9wdGlvbnMgfTtcblxuLyoqXG4gKiBMaWtlIG5vcm1hbGl6ZSgpLCBidXQgZG9lc24ndCBjb2xsYXBzZSBcIioqXFwvLi5cIiB3aGVuIGBnbG9ic3RhcmAgaXMgdHJ1ZS5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IG5vcm1hbGl6ZUdsb2IgfSBmcm9tIFwiQHN0ZC9wYXRoL3Bvc2l4L25vcm1hbGl6ZS1nbG9iXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBwYXRoID0gbm9ybWFsaXplR2xvYihcImZvby9iYXIvLi4vKlwiLCB7IGdsb2JzdGFyOiB0cnVlIH0pO1xuICogYXNzZXJ0RXF1YWxzKHBhdGgsIFwiZm9vLypcIik7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gZ2xvYiBUaGUgZ2xvYiB0byBub3JtYWxpemUuXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyB0byB1c2UuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplR2xvYihcbiAgZ2xvYjogc3RyaW5nLFxuICBvcHRpb25zOiBQaWNrPEdsb2JPcHRpb25zLCBcImdsb2JzdGFyXCI+ID0ge30sXG4pOiBzdHJpbmcge1xuICBjb25zdCB7IGdsb2JzdGFyID0gZmFsc2UgfTogR2xvYk9wdGlvbnMgPSBvcHRpb25zO1xuICBpZiAoZ2xvYi5tYXRjaCgvXFwwL2cpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBHbG9iIGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVyczogXCIke2dsb2J9XCJgKTtcbiAgfVxuICBpZiAoIWdsb2JzdGFyKSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZShnbG9iKTtcbiAgfVxuICBjb25zdCBzID0gU0VQQVJBVE9SX1BBVFRFUk4uc291cmNlO1xuICBjb25zdCBiYWRQYXJlbnRQYXR0ZXJuID0gbmV3IFJlZ0V4cChcbiAgICBgKD88PSgke3N9fF4pXFxcXCpcXFxcKiR7c30pXFxcXC5cXFxcLig/PSR7c318JClgLFxuICAgIFwiZ1wiLFxuICApO1xuICByZXR1cm4gbm9ybWFsaXplKGdsb2IucmVwbGFjZShiYWRQYXJlbnRQYXR0ZXJuLCBcIlxcMFwiKSkucmVwbGFjZSgvXFwwL2csIFwiLi5cIik7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUdyQyxTQUFTLFNBQVMsUUFBUSxpQkFBaUI7QUFDM0MsU0FBUyxpQkFBaUIsUUFBUSxpQkFBaUI7QUFJbkQ7Ozs7Ozs7Ozs7Ozs7OztDQWVDLEdBQ0QsT0FBTyxTQUFTLGNBQ2QsSUFBWSxFQUNaLFVBQXlDLENBQUMsQ0FBQztFQUUzQyxNQUFNLEVBQUUsV0FBVyxLQUFLLEVBQUUsR0FBZ0I7RUFDMUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxRQUFRO0lBQ3JCLE1BQU0sSUFBSSxNQUFNLENBQUMsbUNBQW1DLEVBQUUsS0FBSyxDQUFDLENBQUM7RUFDL0Q7RUFDQSxJQUFJLENBQUMsVUFBVTtJQUNiLE9BQU8sVUFBVTtFQUNuQjtFQUNBLE1BQU0sSUFBSSxrQkFBa0IsTUFBTTtFQUNsQyxNQUFNLG1CQUFtQixJQUFJLE9BQzNCLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQ3pDO0VBRUYsT0FBTyxVQUFVLEtBQUssT0FBTyxDQUFDLGtCQUFrQixPQUFPLE9BQU8sQ0FBQyxPQUFPO0FBQ3hFIn0= +// denoCacheMetadata=16318712865581256228,12741739365736166250
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/561e93e1856f69ee9e73f3e4fe6c9a1e9006c74d8eedbcb1e83b2b69b070fb48.js b/vendor/gen/https/jsr.io/561e93e1856f69ee9e73f3e4fe6c9a1e9006c74d8eedbcb1e83b2b69b070fb48.js new file mode 100644 index 0000000..0a9887e --- /dev/null +++ b/vendor/gen/https/jsr.io/561e93e1856f69ee9e73f3e4fe6c9a1e9006c74d8eedbcb1e83b2b69b070fb48.js @@ -0,0 +1,81 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// Copyright (c) 2014 Jameson Little. MIT License. +// This module is browser compatible. +/** + * Utilities for + * {@link https://www.rfc-editor.org/rfc/rfc4648.html#section-6 | base32} + * encoding and decoding. + * + * Modified from {@link https://github.com/beatgammit/base64-js}. + * + * ```ts + * import { encodeBase32, decodeBase32 } from "@std/encoding/base32"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(encodeBase32("foobar"), "MZXW6YTBOI======"); + * + * assertEquals( + * decodeBase32("MZXW6YTBOI======"), + * new TextEncoder().encode("foobar") + * ); + * ``` + * + * @module + */ import { calcSizeBase32, decode, encode } from "./_common32.ts"; +import { detach } from "./_common_detach.ts"; +const padding = "=".charCodeAt(0); +const alphabet = new TextEncoder().encode("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"); +const rAlphabet = new Uint8Array(128).fill(32); //alphabet.length +alphabet.forEach((byte, i)=>rAlphabet[byte] = i); +/** + * Converts data into a base32-encoded string. + * + * @see {@link https://www.rfc-editor.org/rfc/rfc4648.html#section-6} + * + * @param data The data to encode. + * @returns The base32-encoded string. + * + * @example Usage + * ```ts + * import { encodeBase32 } from "@std/encoding/base32"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(encodeBase32("6c60c0"), "GZRTMMDDGA======"); + * ``` + */ export function encodeBase32(data) { + if (typeof data === "string") { + data = new TextEncoder().encode(data); + } else if (data instanceof ArrayBuffer) data = new Uint8Array(data).slice(); + else data = data.slice(); + const [output, i] = detach(data, calcSizeBase32(data.length)); + encode(output, i, 0, alphabet, padding); + return new TextDecoder().decode(output); +} +/** + * Decodes a base32-encoded string. + * + * @see {@link https://www.rfc-editor.org/rfc/rfc4648.html#section-6} + * + * @param b32 The base32-encoded string to decode. + * @returns The decoded data. + * + * @example Usage + * ```ts + * import { decodeBase32 } from "@std/encoding/base32"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals( + * decodeBase32("GZRTMMDDGA======"), + * new TextEncoder().encode("6c60c0"), + * ); + * ``` + */ export function decodeBase32(b32) { + const output = new TextEncoder().encode(b32); + if (output.length % 8) { + throw new TypeError(`Invalid base32 string: length (${output.length}) must be a multiple of 8`); + } + // deno-lint-ignore no-explicit-any + return new Uint8Array(output.buffer.transfer(decode(output, 0, 0, rAlphabet, padding))); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZW5jb2RpbmcvMS4wLjEwL2Jhc2UzMi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IChjKSAyMDE0IEphbWVzb24gTGl0dGxlLiBNSVQgTGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuLyoqXG4gKiBVdGlsaXRpZXMgZm9yXG4gKiB7QGxpbmsgaHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzQ2NDguaHRtbCNzZWN0aW9uLTYgfCBiYXNlMzJ9XG4gKiBlbmNvZGluZyBhbmQgZGVjb2RpbmcuXG4gKlxuICogTW9kaWZpZWQgZnJvbSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2JlYXRnYW1taXQvYmFzZTY0LWpzfS5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZW5jb2RlQmFzZTMyLCBkZWNvZGVCYXNlMzIgfSBmcm9tIFwiQHN0ZC9lbmNvZGluZy9iYXNlMzJcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydEVxdWFscyhlbmNvZGVCYXNlMzIoXCJmb29iYXJcIiksIFwiTVpYVzZZVEJPST09PT09PVwiKTtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoXG4gKiAgIGRlY29kZUJhc2UzMihcIk1aWFc2WVRCT0k9PT09PT1cIiksXG4gKiAgIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShcImZvb2JhclwiKVxuICogKTtcbiAqIGBgYFxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBjYWxjU2l6ZUJhc2UzMiwgZGVjb2RlLCBlbmNvZGUgfSBmcm9tIFwiLi9fY29tbW9uMzIudHNcIjtcbmltcG9ydCB7IGRldGFjaCB9IGZyb20gXCIuL19jb21tb25fZGV0YWNoLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFVpbnQ4QXJyYXlfIH0gZnJvbSBcIi4vX3R5cGVzLnRzXCI7XG5leHBvcnQgdHlwZSB7IFVpbnQ4QXJyYXlfIH07XG5cbmNvbnN0IHBhZGRpbmcgPSBcIj1cIi5jaGFyQ29kZUF0KDApO1xuY29uc3QgYWxwaGFiZXQgPSBuZXcgVGV4dEVuY29kZXIoKVxuICAuZW5jb2RlKFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoyMzQ1NjdcIik7XG5jb25zdCByQWxwaGFiZXQgPSBuZXcgVWludDhBcnJheSgxMjgpLmZpbGwoMzIpOyAvL2FscGhhYmV0Lmxlbmd0aFxuYWxwaGFiZXQuZm9yRWFjaCgoYnl0ZSwgaSkgPT4gckFscGhhYmV0W2J5dGVdID0gaSk7XG5cbi8qKlxuICogQ29udmVydHMgZGF0YSBpbnRvIGEgYmFzZTMyLWVuY29kZWQgc3RyaW5nLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM0NjQ4Lmh0bWwjc2VjdGlvbi02fVxuICpcbiAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIHRvIGVuY29kZS5cbiAqIEByZXR1cm5zIFRoZSBiYXNlMzItZW5jb2RlZCBzdHJpbmcuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBlbmNvZGVCYXNlMzIgfSBmcm9tIFwiQHN0ZC9lbmNvZGluZy9iYXNlMzJcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydEVxdWFscyhlbmNvZGVCYXNlMzIoXCI2YzYwYzBcIiksIFwiR1pSVE1NRERHQT09PT09PVwiKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlQmFzZTMyKGRhdGE6IEFycmF5QnVmZmVyIHwgVWludDhBcnJheSB8IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIikge1xuICAgIGRhdGEgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoZGF0YSkgYXMgVWludDhBcnJheV87XG4gIH0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSBkYXRhID0gbmV3IFVpbnQ4QXJyYXkoZGF0YSkuc2xpY2UoKTtcbiAgZWxzZSBkYXRhID0gZGF0YS5zbGljZSgpO1xuICBjb25zdCBbb3V0cHV0LCBpXSA9IGRldGFjaChcbiAgICBkYXRhIGFzIFVpbnQ4QXJyYXlfLFxuICAgIGNhbGNTaXplQmFzZTMyKChkYXRhIGFzIFVpbnQ4QXJyYXlfKS5sZW5ndGgpLFxuICApO1xuICBlbmNvZGUob3V0cHV0LCBpLCAwLCBhbHBoYWJldCwgcGFkZGluZyk7XG4gIHJldHVybiBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUob3V0cHV0KTtcbn1cblxuLyoqXG4gKiBEZWNvZGVzIGEgYmFzZTMyLWVuY29kZWQgc3RyaW5nLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM0NjQ4Lmh0bWwjc2VjdGlvbi02fVxuICpcbiAqIEBwYXJhbSBiMzIgVGhlIGJhc2UzMi1lbmNvZGVkIHN0cmluZyB0byBkZWNvZGUuXG4gKiBAcmV0dXJucyBUaGUgZGVjb2RlZCBkYXRhLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZGVjb2RlQmFzZTMyIH0gZnJvbSBcIkBzdGQvZW5jb2RpbmcvYmFzZTMyXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoXG4gKiAgIGRlY29kZUJhc2UzMihcIkdaUlRNTURER0E9PT09PT1cIiksXG4gKiAgIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShcIjZjNjBjMFwiKSxcbiAqICk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUJhc2UzMihiMzI6IHN0cmluZyk6IFVpbnQ4QXJyYXlfIHtcbiAgY29uc3Qgb3V0cHV0ID0gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKGIzMikgYXMgVWludDhBcnJheV87XG4gIGlmIChvdXRwdXQubGVuZ3RoICUgOCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBgSW52YWxpZCBiYXNlMzIgc3RyaW5nOiBsZW5ndGggKCR7b3V0cHV0Lmxlbmd0aH0pIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA4YCxcbiAgICApO1xuICB9XG4gIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG4gIHJldHVybiBuZXcgVWludDhBcnJheSgob3V0cHV0LmJ1ZmZlciBhcyBhbnkpXG4gICAgLnRyYW5zZmVyKGRlY29kZShvdXRwdXQsIDAsIDAsIHJBbHBoYWJldCwgcGFkZGluZykpKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQsa0RBQWtEO0FBQ2xELHFDQUFxQztBQUVyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FvQkMsR0FFRCxTQUFTLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLGlCQUFpQjtBQUNoRSxTQUFTLE1BQU0sUUFBUSxzQkFBc0I7QUFJN0MsTUFBTSxVQUFVLElBQUksVUFBVSxDQUFDO0FBQy9CLE1BQU0sV0FBVyxJQUFJLGNBQ2xCLE1BQU0sQ0FBQztBQUNWLE1BQU0sWUFBWSxJQUFJLFdBQVcsS0FBSyxJQUFJLENBQUMsS0FBSyxpQkFBaUI7QUFDakUsU0FBUyxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQU0sU0FBUyxDQUFDLEtBQUssR0FBRztBQUVoRDs7Ozs7Ozs7Ozs7Ozs7O0NBZUMsR0FDRCxPQUFPLFNBQVMsYUFBYSxJQUF1QztFQUNsRSxJQUFJLE9BQU8sU0FBUyxVQUFVO0lBQzVCLE9BQU8sSUFBSSxjQUFjLE1BQU0sQ0FBQztFQUNsQyxPQUFPLElBQUksZ0JBQWdCLGFBQWEsT0FBTyxJQUFJLFdBQVcsTUFBTSxLQUFLO09BQ3BFLE9BQU8sS0FBSyxLQUFLO0VBQ3RCLE1BQU0sQ0FBQyxRQUFRLEVBQUUsR0FBRyxPQUNsQixNQUNBLGVBQWUsQUFBQyxLQUFxQixNQUFNO0VBRTdDLE9BQU8sUUFBUSxHQUFHLEdBQUcsVUFBVTtFQUMvQixPQUFPLElBQUksY0FBYyxNQUFNLENBQUM7QUFDbEM7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBa0JDLEdBQ0QsT0FBTyxTQUFTLGFBQWEsR0FBVztFQUN0QyxNQUFNLFNBQVMsSUFBSSxjQUFjLE1BQU0sQ0FBQztFQUN4QyxJQUFJLE9BQU8sTUFBTSxHQUFHLEdBQUc7SUFDckIsTUFBTSxJQUFJLFVBQ1IsQ0FBQywrQkFBK0IsRUFBRSxPQUFPLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQztFQUU5RTtFQUNBLG1DQUFtQztFQUNuQyxPQUFPLElBQUksV0FBVyxBQUFDLE9BQU8sTUFBTSxDQUNqQyxRQUFRLENBQUMsT0FBTyxRQUFRLEdBQUcsR0FBRyxXQUFXO0FBQzlDIn0= +// denoCacheMetadata=18355270542933081533,16415477618679115178
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/58252e6d286c880d8773d8a341cfe36914d2bd9c2f6ec9db90d26b95f521f5a0.js b/vendor/gen/https/jsr.io/58252e6d286c880d8773d8a341cfe36914d2bd9c2f6ec9db90d26b95f521f5a0.js new file mode 100644 index 0000000..65510a1 --- /dev/null +++ b/vendor/gen/https/jsr.io/58252e6d286c880d8773d8a341cfe36914d2bd9c2f6ec9db90d26b95f521f5a0.js @@ -0,0 +1,214 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +/** + * Options for {@linkcode globToRegExp}, {@linkcode joinGlobs}, + * {@linkcode normalizeGlob} and {@linkcode expandGlob}. + */ const REG_EXP_ESCAPE_CHARS = [ + "!", + "$", + "(", + ")", + "*", + "+", + ".", + "=", + "?", + "[", + "\\", + "^", + "{", + "|" +]; +const RANGE_ESCAPE_CHARS = [ + "-", + "\\", + "]" +]; +export function _globToRegExp(c, glob, { extended = true, globstar: globstarOption = true, // os = osType, +caseInsensitive = false } = {}) { + if (glob === "") { + return /(?!)/; + } + // Remove trailing separators. + let newLength = glob.length; + for(; newLength > 1 && c.seps.includes(glob[newLength - 1]); newLength--); + glob = glob.slice(0, newLength); + let regExpString = ""; + // Terminates correctly. Trust that `j` is incremented every iteration. + for(let j = 0; j < glob.length;){ + let segment = ""; + const groupStack = []; + let inRange = false; + let inEscape = false; + let endsWithSep = false; + let i = j; + // Terminates with `i` at the non-inclusive end of the current segment. + for(; i < glob.length && !c.seps.includes(glob[i]); i++){ + if (inEscape) { + inEscape = false; + const escapeChars = inRange ? RANGE_ESCAPE_CHARS : REG_EXP_ESCAPE_CHARS; + segment += escapeChars.includes(glob[i]) ? `\\${glob[i]}` : glob[i]; + continue; + } + if (glob[i] === c.escapePrefix) { + inEscape = true; + continue; + } + if (glob[i] === "[") { + if (!inRange) { + inRange = true; + segment += "["; + if (glob[i + 1] === "!") { + i++; + segment += "^"; + } else if (glob[i + 1] === "^") { + i++; + segment += "\\^"; + } + continue; + } else if (glob[i + 1] === ":") { + let k = i + 1; + let value = ""; + while(glob[k + 1] !== undefined && glob[k + 1] !== ":"){ + value += glob[k + 1]; + k++; + } + if (glob[k + 1] === ":" && glob[k + 2] === "]") { + i = k + 2; + if (value === "alnum") segment += "\\dA-Za-z"; + else if (value === "alpha") segment += "A-Za-z"; + else if (value === "ascii") segment += "\x00-\x7F"; + else if (value === "blank") segment += "\t "; + else if (value === "cntrl") segment += "\x00-\x1F\x7F"; + else if (value === "digit") segment += "\\d"; + else if (value === "graph") segment += "\x21-\x7E"; + else if (value === "lower") segment += "a-z"; + else if (value === "print") segment += "\x20-\x7E"; + else if (value === "punct") { + segment += "!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_‘{|}~"; + } else if (value === "space") segment += "\\s\v"; + else if (value === "upper") segment += "A-Z"; + else if (value === "word") segment += "\\w"; + else if (value === "xdigit") segment += "\\dA-Fa-f"; + continue; + } + } + } + if (glob[i] === "]" && inRange) { + inRange = false; + segment += "]"; + continue; + } + if (inRange) { + segment += glob[i]; + continue; + } + if (glob[i] === ")" && groupStack.length > 0 && groupStack[groupStack.length - 1] !== "BRACE") { + segment += ")"; + const type = groupStack.pop(); + if (type === "!") { + segment += c.wildcard; + } else if (type !== "@") { + segment += type; + } + continue; + } + if (glob[i] === "|" && groupStack.length > 0 && groupStack[groupStack.length - 1] !== "BRACE") { + segment += "|"; + continue; + } + if (glob[i] === "+" && extended && glob[i + 1] === "(") { + i++; + groupStack.push("+"); + segment += "(?:"; + continue; + } + if (glob[i] === "@" && extended && glob[i + 1] === "(") { + i++; + groupStack.push("@"); + segment += "(?:"; + continue; + } + if (glob[i] === "?") { + if (extended && glob[i + 1] === "(") { + i++; + groupStack.push("?"); + segment += "(?:"; + } else { + segment += "."; + } + continue; + } + if (glob[i] === "!" && extended && glob[i + 1] === "(") { + i++; + groupStack.push("!"); + segment += "(?!"; + continue; + } + if (glob[i] === "{") { + groupStack.push("BRACE"); + segment += "(?:"; + continue; + } + if (glob[i] === "}" && groupStack[groupStack.length - 1] === "BRACE") { + groupStack.pop(); + segment += ")"; + continue; + } + if (glob[i] === "," && groupStack[groupStack.length - 1] === "BRACE") { + segment += "|"; + continue; + } + if (glob[i] === "*") { + if (extended && glob[i + 1] === "(") { + i++; + groupStack.push("*"); + segment += "(?:"; + } else { + const prevChar = glob[i - 1]; + let numStars = 1; + while(glob[i + 1] === "*"){ + i++; + numStars++; + } + const nextChar = glob[i + 1]; + if (globstarOption && numStars === 2 && [ + ...c.seps, + undefined + ].includes(prevChar) && [ + ...c.seps, + undefined + ].includes(nextChar)) { + segment += c.globstar; + endsWithSep = true; + } else { + segment += c.wildcard; + } + } + continue; + } + segment += REG_EXP_ESCAPE_CHARS.includes(glob[i]) ? `\\${glob[i]}` : glob[i]; + } + // Check for unclosed groups or a dangling backslash. + if (groupStack.length > 0 || inRange || inEscape) { + // Parse failure. Take all characters from this segment literally. + segment = ""; + for (const c of glob.slice(j, i)){ + segment += REG_EXP_ESCAPE_CHARS.includes(c) ? `\\${c}` : c; + endsWithSep = false; + } + } + regExpString += segment; + if (!endsWithSep) { + regExpString += i < glob.length ? c.sep : c.sepMaybe; + endsWithSep = true; + } + // Terminates with `i` at the start of the next segment. + while(c.seps.includes(glob[i]))i++; + j = i; + } + regExpString = `^${regExpString}$`; + return new RegExp(regExpString, caseInsensitive ? "i" : ""); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9fY29tbW9uL2dsb2JfdG9fcmVnX2V4cC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGlua2NvZGUgZ2xvYlRvUmVnRXhwfSwge0BsaW5rY29kZSBqb2luR2xvYnN9LFxuICoge0BsaW5rY29kZSBub3JtYWxpemVHbG9ifSBhbmQge0BsaW5rY29kZSBleHBhbmRHbG9ifS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHbG9iT3B0aW9ucyB7XG4gIC8qKiBFeHRlbmRlZCBnbG9iIHN5bnRheC5cbiAgICogU2VlIGh0dHBzOi8vd3d3LmxpbnV4am91cm5hbC5jb20vY29udGVudC9iYXNoLWV4dGVuZGVkLWdsb2JiaW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7dHJ1ZX1cbiAgICovXG4gIGV4dGVuZGVkPzogYm9vbGVhbjtcbiAgLyoqIEdsb2JzdGFyIHN5bnRheC5cbiAgICogU2VlIGh0dHBzOi8vd3d3LmxpbnV4am91cm5hbC5jb20vY29udGVudC9nbG9ic3Rhci1uZXctYmFzaC1nbG9iYmluZy1vcHRpb24uXG4gICAqIElmIGZhbHNlLCBgKipgIGlzIHRyZWF0ZWQgbGlrZSBgKmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHt0cnVlfVxuICAgKi9cbiAgZ2xvYnN0YXI/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciBnbG9ic3RhciBzaG91bGQgYmUgY2FzZS1pbnNlbnNpdGl2ZS5cbiAgICpcbiAgICogQGRlZmF1bHQge2ZhbHNlfVxuICAgKi9cbiAgY2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbjtcbn1cblxuY29uc3QgUkVHX0VYUF9FU0NBUEVfQ0hBUlMgPSBbXG4gIFwiIVwiLFxuICBcIiRcIixcbiAgXCIoXCIsXG4gIFwiKVwiLFxuICBcIipcIixcbiAgXCIrXCIsXG4gIFwiLlwiLFxuICBcIj1cIixcbiAgXCI/XCIsXG4gIFwiW1wiLFxuICBcIlxcXFxcIixcbiAgXCJeXCIsXG4gIFwie1wiLFxuICBcInxcIixcbl0gYXMgY29uc3Q7XG5jb25zdCBSQU5HRV9FU0NBUEVfQ0hBUlMgPSBbXCItXCIsIFwiXFxcXFwiLCBcIl1cIl0gYXMgY29uc3Q7XG5cbnR5cGUgUmVnRXhwRXNjYXBlQ2hhciA9IHR5cGVvZiBSRUdfRVhQX0VTQ0FQRV9DSEFSU1tudW1iZXJdO1xudHlwZSBSYW5nZUVzY2FwZUNoYXIgPSB0eXBlb2YgUkFOR0VfRVNDQVBFX0NIQVJTW251bWJlcl07XG50eXBlIEVzY2FwZUNoYXIgPSBSZWdFeHBFc2NhcGVDaGFyIHwgUmFuZ2VFc2NhcGVDaGFyO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdsb2JDb25zdGFudHMge1xuICBzZXA6IHN0cmluZztcbiAgc2VwTWF5YmU6IHN0cmluZztcbiAgc2Vwczogc3RyaW5nW107XG4gIGdsb2JzdGFyOiBzdHJpbmc7XG4gIHdpbGRjYXJkOiBzdHJpbmc7XG4gIGVzY2FwZVByZWZpeDogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX2dsb2JUb1JlZ0V4cChcbiAgYzogR2xvYkNvbnN0YW50cyxcbiAgZ2xvYjogc3RyaW5nLFxuICB7XG4gICAgZXh0ZW5kZWQgPSB0cnVlLFxuICAgIGdsb2JzdGFyOiBnbG9ic3Rhck9wdGlvbiA9IHRydWUsXG4gICAgLy8gb3MgPSBvc1R5cGUsXG4gICAgY2FzZUluc2Vuc2l0aXZlID0gZmFsc2UsXG4gIH06IEdsb2JPcHRpb25zID0ge30sXG4pOiBSZWdFeHAge1xuICBpZiAoZ2xvYiA9PT0gXCJcIikge1xuICAgIHJldHVybiAvKD8hKS87XG4gIH1cblxuICAvLyBSZW1vdmUgdHJhaWxpbmcgc2VwYXJhdG9ycy5cbiAgbGV0IG5ld0xlbmd0aCA9IGdsb2IubGVuZ3RoO1xuICBmb3IgKDsgbmV3TGVuZ3RoID4gMSAmJiBjLnNlcHMuaW5jbHVkZXMoZ2xvYltuZXdMZW5ndGggLSAxXSEpOyBuZXdMZW5ndGgtLSk7XG4gIGdsb2IgPSBnbG9iLnNsaWNlKDAsIG5ld0xlbmd0aCk7XG5cbiAgbGV0IHJlZ0V4cFN0cmluZyA9IFwiXCI7XG5cbiAgLy8gVGVybWluYXRlcyBjb3JyZWN0bHkuIFRydXN0IHRoYXQgYGpgIGlzIGluY3JlbWVudGVkIGV2ZXJ5IGl0ZXJhdGlvbi5cbiAgZm9yIChsZXQgaiA9IDA7IGogPCBnbG9iLmxlbmd0aDspIHtcbiAgICBsZXQgc2VnbWVudCA9IFwiXCI7XG4gICAgY29uc3QgZ3JvdXBTdGFjazogc3RyaW5nW10gPSBbXTtcbiAgICBsZXQgaW5SYW5nZSA9IGZhbHNlO1xuICAgIGxldCBpbkVzY2FwZSA9IGZhbHNlO1xuICAgIGxldCBlbmRzV2l0aFNlcCA9IGZhbHNlO1xuICAgIGxldCBpID0gajtcblxuICAgIC8vIFRlcm1pbmF0ZXMgd2l0aCBgaWAgYXQgdGhlIG5vbi1pbmNsdXNpdmUgZW5kIG9mIHRoZSBjdXJyZW50IHNlZ21lbnQuXG4gICAgZm9yICg7IGkgPCBnbG9iLmxlbmd0aCAmJiAhYy5zZXBzLmluY2x1ZGVzKGdsb2JbaV0hKTsgaSsrKSB7XG4gICAgICBpZiAoaW5Fc2NhcGUpIHtcbiAgICAgICAgaW5Fc2NhcGUgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgZXNjYXBlQ2hhcnMgPSAoaW5SYW5nZVxuICAgICAgICAgID8gUkFOR0VfRVNDQVBFX0NIQVJTXG4gICAgICAgICAgOiBSRUdfRVhQX0VTQ0FQRV9DSEFSUykgYXMgdW5rbm93biBhcyBFc2NhcGVDaGFyW107XG4gICAgICAgIHNlZ21lbnQgKz0gZXNjYXBlQ2hhcnMuaW5jbHVkZXMoZ2xvYltpXSEgYXMgRXNjYXBlQ2hhcilcbiAgICAgICAgICA/IGBcXFxcJHtnbG9iW2ldfWBcbiAgICAgICAgICA6IGdsb2JbaV07XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2xvYltpXSA9PT0gYy5lc2NhcGVQcmVmaXgpIHtcbiAgICAgICAgaW5Fc2NhcGUgPSB0cnVlO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JbaV0gPT09IFwiW1wiKSB7XG4gICAgICAgIGlmICghaW5SYW5nZSkge1xuICAgICAgICAgIGluUmFuZ2UgPSB0cnVlO1xuICAgICAgICAgIHNlZ21lbnQgKz0gXCJbXCI7XG4gICAgICAgICAgaWYgKGdsb2JbaSArIDFdID09PSBcIiFcIikge1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgc2VnbWVudCArPSBcIl5cIjtcbiAgICAgICAgICB9IGVsc2UgaWYgKGdsb2JbaSArIDFdID09PSBcIl5cIikge1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgc2VnbWVudCArPSBcIlxcXFxeXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2UgaWYgKGdsb2JbaSArIDFdID09PSBcIjpcIikge1xuICAgICAgICAgIGxldCBrID0gaSArIDE7XG4gICAgICAgICAgbGV0IHZhbHVlID0gXCJcIjtcbiAgICAgICAgICB3aGlsZSAoZ2xvYltrICsgMV0gIT09IHVuZGVmaW5lZCAmJiBnbG9iW2sgKyAxXSAhPT0gXCI6XCIpIHtcbiAgICAgICAgICAgIHZhbHVlICs9IGdsb2JbayArIDFdO1xuICAgICAgICAgICAgaysrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZ2xvYltrICsgMV0gPT09IFwiOlwiICYmIGdsb2JbayArIDJdID09PSBcIl1cIikge1xuICAgICAgICAgICAgaSA9IGsgKyAyO1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBcImFsbnVtXCIpIHNlZ21lbnQgKz0gXCJcXFxcZEEtWmEtelwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT09IFwiYWxwaGFcIikgc2VnbWVudCArPSBcIkEtWmEtelwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT09IFwiYXNjaWlcIikgc2VnbWVudCArPSBcIlxceDAwLVxceDdGXCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gXCJibGFua1wiKSBzZWdtZW50ICs9IFwiXFx0IFwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT09IFwiY250cmxcIikgc2VnbWVudCArPSBcIlxceDAwLVxceDFGXFx4N0ZcIjtcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09PSBcImRpZ2l0XCIpIHNlZ21lbnQgKz0gXCJcXFxcZFwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT09IFwiZ3JhcGhcIikgc2VnbWVudCArPSBcIlxceDIxLVxceDdFXCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gXCJsb3dlclwiKSBzZWdtZW50ICs9IFwiYS16XCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gXCJwcmludFwiKSBzZWdtZW50ICs9IFwiXFx4MjAtXFx4N0VcIjtcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09PSBcInB1bmN0XCIpIHtcbiAgICAgICAgICAgICAgc2VnbWVudCArPSBcIiFcXFwiIyQlJicoKSorLFxcXFwtLi86Ozw9Pj9AW1xcXFxcXFxcXFxcXF1eX+KAmHt8fX5cIjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IFwic3BhY2VcIikgc2VnbWVudCArPSBcIlxcXFxzXFx2XCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gXCJ1cHBlclwiKSBzZWdtZW50ICs9IFwiQS1aXCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gXCJ3b3JkXCIpIHNlZ21lbnQgKz0gXCJcXFxcd1wiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT09IFwieGRpZ2l0XCIpIHNlZ21lbnQgKz0gXCJcXFxcZEEtRmEtZlwiO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09PSBcIl1cIiAmJiBpblJhbmdlKSB7XG4gICAgICAgIGluUmFuZ2UgPSBmYWxzZTtcbiAgICAgICAgc2VnbWVudCArPSBcIl1cIjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChpblJhbmdlKSB7XG4gICAgICAgIHNlZ21lbnQgKz0gZ2xvYltpXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgZ2xvYltpXSA9PT0gXCIpXCIgJiYgZ3JvdXBTdGFjay5sZW5ndGggPiAwICYmXG4gICAgICAgIGdyb3VwU3RhY2tbZ3JvdXBTdGFjay5sZW5ndGggLSAxXSAhPT0gXCJCUkFDRVwiXG4gICAgICApIHtcbiAgICAgICAgc2VnbWVudCArPSBcIilcIjtcbiAgICAgICAgY29uc3QgdHlwZSA9IGdyb3VwU3RhY2sucG9wKCkhO1xuICAgICAgICBpZiAodHlwZSA9PT0gXCIhXCIpIHtcbiAgICAgICAgICBzZWdtZW50ICs9IGMud2lsZGNhcmQ7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSAhPT0gXCJAXCIpIHtcbiAgICAgICAgICBzZWdtZW50ICs9IHR5cGU7XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgZ2xvYltpXSA9PT0gXCJ8XCIgJiYgZ3JvdXBTdGFjay5sZW5ndGggPiAwICYmXG4gICAgICAgIGdyb3VwU3RhY2tbZ3JvdXBTdGFjay5sZW5ndGggLSAxXSAhPT0gXCJCUkFDRVwiXG4gICAgICApIHtcbiAgICAgICAgc2VnbWVudCArPSBcInxcIjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09PSBcIitcIiAmJiBleHRlbmRlZCAmJiBnbG9iW2kgKyAxXSA9PT0gXCIoXCIpIHtcbiAgICAgICAgaSsrO1xuICAgICAgICBncm91cFN0YWNrLnB1c2goXCIrXCIpO1xuICAgICAgICBzZWdtZW50ICs9IFwiKD86XCI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2xvYltpXSA9PT0gXCJAXCIgJiYgZXh0ZW5kZWQgJiYgZ2xvYltpICsgMV0gPT09IFwiKFwiKSB7XG4gICAgICAgIGkrKztcbiAgICAgICAgZ3JvdXBTdGFjay5wdXNoKFwiQFwiKTtcbiAgICAgICAgc2VnbWVudCArPSBcIig/OlwiO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JbaV0gPT09IFwiP1wiKSB7XG4gICAgICAgIGlmIChleHRlbmRlZCAmJiBnbG9iW2kgKyAxXSA9PT0gXCIoXCIpIHtcbiAgICAgICAgICBpKys7XG4gICAgICAgICAgZ3JvdXBTdGFjay5wdXNoKFwiP1wiKTtcbiAgICAgICAgICBzZWdtZW50ICs9IFwiKD86XCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VnbWVudCArPSBcIi5cIjtcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JbaV0gPT09IFwiIVwiICYmIGV4dGVuZGVkICYmIGdsb2JbaSArIDFdID09PSBcIihcIikge1xuICAgICAgICBpKys7XG4gICAgICAgIGdyb3VwU3RhY2sucHVzaChcIiFcIik7XG4gICAgICAgIHNlZ21lbnQgKz0gXCIoPyFcIjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09PSBcIntcIikge1xuICAgICAgICBncm91cFN0YWNrLnB1c2goXCJCUkFDRVwiKTtcbiAgICAgICAgc2VnbWVudCArPSBcIig/OlwiO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JbaV0gPT09IFwifVwiICYmIGdyb3VwU3RhY2tbZ3JvdXBTdGFjay5sZW5ndGggLSAxXSA9PT0gXCJCUkFDRVwiKSB7XG4gICAgICAgIGdyb3VwU3RhY2sucG9wKCk7XG4gICAgICAgIHNlZ21lbnQgKz0gXCIpXCI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2xvYltpXSA9PT0gXCIsXCIgJiYgZ3JvdXBTdGFja1tncm91cFN0YWNrLmxlbmd0aCAtIDFdID09PSBcIkJSQUNFXCIpIHtcbiAgICAgICAgc2VnbWVudCArPSBcInxcIjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09PSBcIipcIikge1xuICAgICAgICBpZiAoZXh0ZW5kZWQgJiYgZ2xvYltpICsgMV0gPT09IFwiKFwiKSB7XG4gICAgICAgICAgaSsrO1xuICAgICAgICAgIGdyb3VwU3RhY2sucHVzaChcIipcIik7XG4gICAgICAgICAgc2VnbWVudCArPSBcIig/OlwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHByZXZDaGFyID0gZ2xvYltpIC0gMV07XG4gICAgICAgICAgbGV0IG51bVN0YXJzID0gMTtcbiAgICAgICAgICB3aGlsZSAoZ2xvYltpICsgMV0gPT09IFwiKlwiKSB7XG4gICAgICAgICAgICBpKys7XG4gICAgICAgICAgICBudW1TdGFycysrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBuZXh0Q2hhciA9IGdsb2JbaSArIDFdO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGdsb2JzdGFyT3B0aW9uICYmIG51bVN0YXJzID09PSAyICYmXG4gICAgICAgICAgICBbLi4uYy5zZXBzLCB1bmRlZmluZWRdLmluY2x1ZGVzKHByZXZDaGFyKSAmJlxuICAgICAgICAgICAgWy4uLmMuc2VwcywgdW5kZWZpbmVkXS5pbmNsdWRlcyhuZXh0Q2hhcilcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHNlZ21lbnQgKz0gYy5nbG9ic3RhcjtcbiAgICAgICAgICAgIGVuZHNXaXRoU2VwID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2VnbWVudCArPSBjLndpbGRjYXJkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgc2VnbWVudCArPSBSRUdfRVhQX0VTQ0FQRV9DSEFSUy5pbmNsdWRlcyhnbG9iW2ldISBhcyBSZWdFeHBFc2NhcGVDaGFyKVxuICAgICAgICA/IGBcXFxcJHtnbG9iW2ldfWBcbiAgICAgICAgOiBnbG9iW2ldO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciB1bmNsb3NlZCBncm91cHMgb3IgYSBkYW5nbGluZyBiYWNrc2xhc2guXG4gICAgaWYgKGdyb3VwU3RhY2subGVuZ3RoID4gMCB8fCBpblJhbmdlIHx8IGluRXNjYXBlKSB7XG4gICAgICAvLyBQYXJzZSBmYWlsdXJlLiBUYWtlIGFsbCBjaGFyYWN0ZXJzIGZyb20gdGhpcyBzZWdtZW50IGxpdGVyYWxseS5cbiAgICAgIHNlZ21lbnQgPSBcIlwiO1xuICAgICAgZm9yIChjb25zdCBjIG9mIGdsb2Iuc2xpY2UoaiwgaSkpIHtcbiAgICAgICAgc2VnbWVudCArPSBSRUdfRVhQX0VTQ0FQRV9DSEFSUy5pbmNsdWRlcyhjIGFzIFJlZ0V4cEVzY2FwZUNoYXIpXG4gICAgICAgICAgPyBgXFxcXCR7Y31gXG4gICAgICAgICAgOiBjO1xuICAgICAgICBlbmRzV2l0aFNlcCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlZ0V4cFN0cmluZyArPSBzZWdtZW50O1xuICAgIGlmICghZW5kc1dpdGhTZXApIHtcbiAgICAgIHJlZ0V4cFN0cmluZyArPSBpIDwgZ2xvYi5sZW5ndGggPyBjLnNlcCA6IGMuc2VwTWF5YmU7XG4gICAgICBlbmRzV2l0aFNlcCA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gVGVybWluYXRlcyB3aXRoIGBpYCBhdCB0aGUgc3RhcnQgb2YgdGhlIG5leHQgc2VnbWVudC5cbiAgICB3aGlsZSAoYy5zZXBzLmluY2x1ZGVzKGdsb2JbaV0hKSkgaSsrO1xuXG4gICAgaiA9IGk7XG4gIH1cblxuICByZWdFeHBTdHJpbmcgPSBgXiR7cmVnRXhwU3RyaW5nfSRgO1xuICByZXR1cm4gbmV3IFJlZ0V4cChyZWdFeHBTdHJpbmcsIGNhc2VJbnNlbnNpdGl2ZSA/IFwiaVwiIDogXCJcIik7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQzs7O0NBR0MsR0F1QkQsTUFBTSx1QkFBdUI7RUFDM0I7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtDQUNEO0FBQ0QsTUFBTSxxQkFBcUI7RUFBQztFQUFLO0VBQU07Q0FBSTtBQWUzQyxPQUFPLFNBQVMsY0FDZCxDQUFnQixFQUNoQixJQUFZLEVBQ1osRUFDRSxXQUFXLElBQUksRUFDZixVQUFVLGlCQUFpQixJQUFJLEVBQy9CLGVBQWU7QUFDZixrQkFBa0IsS0FBSyxFQUNYLEdBQUcsQ0FBQyxDQUFDO0VBRW5CLElBQUksU0FBUyxJQUFJO0lBQ2YsT0FBTztFQUNUO0VBRUEsOEJBQThCO0VBQzlCLElBQUksWUFBWSxLQUFLLE1BQU07RUFDM0IsTUFBTyxZQUFZLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBSTtFQUMvRCxPQUFPLEtBQUssS0FBSyxDQUFDLEdBQUc7RUFFckIsSUFBSSxlQUFlO0VBRW5CLHVFQUF1RTtFQUN2RSxJQUFLLElBQUksSUFBSSxHQUFHLElBQUksS0FBSyxNQUFNLEVBQUc7SUFDaEMsSUFBSSxVQUFVO0lBQ2QsTUFBTSxhQUF1QixFQUFFO0lBQy9CLElBQUksVUFBVTtJQUNkLElBQUksV0FBVztJQUNmLElBQUksY0FBYztJQUNsQixJQUFJLElBQUk7SUFFUix1RUFBdUU7SUFDdkUsTUFBTyxJQUFJLEtBQUssTUFBTSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUksSUFB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 +// denoCacheMetadata=6957165210549219853,16413184510828082162
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/590dc3cc72c9f412bf0525f9de88ed9fe5165a6288da3c007a9b5f2c74b438f4.js b/vendor/gen/https/jsr.io/590dc3cc72c9f412bf0525f9de88ed9fe5165a6288da3c007a9b5f2c74b438f4.js new file mode 100644 index 0000000..81f7078 --- /dev/null +++ b/vendor/gen/https/jsr.io/590dc3cc72c9f412bf0525f9de88ed9fe5165a6288da3c007a9b5f2c74b438f4.js @@ -0,0 +1,31 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { relative as posixRelative } from "./posix/relative.ts"; +import { relative as windowsRelative } from "./windows/relative.ts"; +/** + * Return the relative path from `from` to `to` based on current working + * directory. + * + * @example Usage + * ```ts + * import { relative } from "@std/path/relative"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * const path = relative("C:\\foobar\\test\\aaa", "C:\\foobar\\impl\\bbb"); + * assertEquals(path, "..\\..\\impl\\bbb"); + * } else { + * const path = relative("/data/foobar/test/aaa", "/data/foobar/impl/bbb"); + * assertEquals(path, "../../impl/bbb"); + * } + * ``` + * + * @param from Path in current working directory. + * @param to Path in current working directory. + * @returns The relative path from `from` to `to`. + */ export function relative(from, to) { + return isWindows ? windowsRelative(from, to) : posixRelative(from, to); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9yZWxhdGl2ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBpc1dpbmRvd3MgfSBmcm9tIFwiLi9fb3MudHNcIjtcbmltcG9ydCB7IHJlbGF0aXZlIGFzIHBvc2l4UmVsYXRpdmUgfSBmcm9tIFwiLi9wb3NpeC9yZWxhdGl2ZS50c1wiO1xuaW1wb3J0IHsgcmVsYXRpdmUgYXMgd2luZG93c1JlbGF0aXZlIH0gZnJvbSBcIi4vd2luZG93cy9yZWxhdGl2ZS50c1wiO1xuXG4vKipcbiAqIFJldHVybiB0aGUgcmVsYXRpdmUgcGF0aCBmcm9tIGBmcm9tYCB0byBgdG9gIGJhc2VkIG9uIGN1cnJlbnQgd29ya2luZ1xuICogZGlyZWN0b3J5LlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgcmVsYXRpdmUgfSBmcm9tIFwiQHN0ZC9wYXRoL3JlbGF0aXZlXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBpZiAoRGVuby5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCIpIHtcbiAqICAgY29uc3QgcGF0aCA9IHJlbGF0aXZlKFwiQzpcXFxcZm9vYmFyXFxcXHRlc3RcXFxcYWFhXCIsIFwiQzpcXFxcZm9vYmFyXFxcXGltcGxcXFxcYmJiXCIpO1xuICogICBhc3NlcnRFcXVhbHMocGF0aCwgXCIuLlxcXFwuLlxcXFxpbXBsXFxcXGJiYlwiKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGNvbnN0IHBhdGggPSByZWxhdGl2ZShcIi9kYXRhL2Zvb2Jhci90ZXN0L2FhYVwiLCBcIi9kYXRhL2Zvb2Jhci9pbXBsL2JiYlwiKTtcbiAqICAgYXNzZXJ0RXF1YWxzKHBhdGgsIFwiLi4vLi4vaW1wbC9iYmJcIik7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gZnJvbSBQYXRoIGluIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuXG4gKiBAcGFyYW0gdG8gUGF0aCBpbiBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LlxuICogQHJldHVybnMgVGhlIHJlbGF0aXZlIHBhdGggZnJvbSBgZnJvbWAgdG8gYHRvYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbGF0aXZlKGZyb206IHN0cmluZywgdG86IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBpc1dpbmRvd3MgPyB3aW5kb3dzUmVsYXRpdmUoZnJvbSwgdG8pIDogcG9zaXhSZWxhdGl2ZShmcm9tLCB0byk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQyxTQUFTLFNBQVMsUUFBUSxXQUFXO0FBQ3JDLFNBQVMsWUFBWSxhQUFhLFFBQVEsc0JBQXNCO0FBQ2hFLFNBQVMsWUFBWSxlQUFlLFFBQVEsd0JBQXdCO0FBRXBFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FxQkMsR0FDRCxPQUFPLFNBQVMsU0FBUyxJQUFZLEVBQUUsRUFBVTtFQUMvQyxPQUFPLFlBQVksZ0JBQWdCLE1BQU0sTUFBTSxjQUFjLE1BQU07QUFDckUifQ== +// denoCacheMetadata=4943766333112962144,3510761696935998279
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/59b15946e5c41739f041facf257e61065ca2e759fa92c8dc627590b8ad366543.js b/vendor/gen/https/jsr.io/59b15946e5c41739f041facf257e61065ca2e759fa92c8dc627590b8ad366543.js new file mode 100644 index 0000000..e9489ad --- /dev/null +++ b/vendor/gen/https/jsr.io/59b15946e5c41739f041facf257e61065ca2e759fa92c8dc627590b8ad366543.js @@ -0,0 +1,104 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { assertArg } from "../_common/dirname.ts"; +import { CHAR_COLON } from "../_common/constants.ts"; +import { stripTrailingSeparators } from "../_common/strip_trailing_separators.ts"; +import { isPathSeparator, isPosixPathSeparator, isWindowsDeviceRoot } from "./_util.ts"; +/** + * Return the directory path of a `path`. + * + * @example Usage + * ```ts + * import { dirname } from "@std/path/windows/dirname"; + * import { assertEquals } from "@std/assert"; + * + * const dir = dirname("C:\\foo\\bar\\baz.ext"); + * assertEquals(dir, "C:\\foo\\bar"); + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `dirname` from `@std/path/windows/unstable-dirname`. + * + * @param path The path to get the directory from. + * @returns The directory path. + */ export function dirname(path) { + assertArg(path); + const len = path.length; + let rootEnd = -1; + let end = -1; + let matchedSlash = true; + let offset = 0; + const code = path.charCodeAt(0); + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + rootEnd = offset = 1; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for(; j < len; ++j){ + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + return path; + } + if (j !== last) { + // We matched a UNC root with leftovers + // Offset by 1 to include the separator after the UNC root to + // treat it as a "normal root" on top of a (UNC) root + rootEnd = offset = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = offset = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) rootEnd = offset = 3; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + return path; + } + for(let i = len - 1; i >= offset; --i){ + if (isPathSeparator(path.charCodeAt(i))) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + if (end === -1) { + if (rootEnd === -1) return "."; + else end = rootEnd; + } + return stripTrailingSeparators(path.slice(0, end), isPosixPathSeparator); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS93aW5kb3dzL2Rpcm5hbWUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgYXNzZXJ0QXJnIH0gZnJvbSBcIi4uL19jb21tb24vZGlybmFtZS50c1wiO1xuaW1wb3J0IHsgQ0hBUl9DT0xPTiB9IGZyb20gXCIuLi9fY29tbW9uL2NvbnN0YW50cy50c1wiO1xuaW1wb3J0IHsgc3RyaXBUcmFpbGluZ1NlcGFyYXRvcnMgfSBmcm9tIFwiLi4vX2NvbW1vbi9zdHJpcF90cmFpbGluZ19zZXBhcmF0b3JzLnRzXCI7XG5pbXBvcnQge1xuICBpc1BhdGhTZXBhcmF0b3IsXG4gIGlzUG9zaXhQYXRoU2VwYXJhdG9yLFxuICBpc1dpbmRvd3NEZXZpY2VSb290LFxufSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuXG4vKipcbiAqIFJldHVybiB0aGUgZGlyZWN0b3J5IHBhdGggb2YgYSBgcGF0aGAuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSBcIkBzdGQvcGF0aC93aW5kb3dzL2Rpcm5hbWVcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IGRpciA9IGRpcm5hbWUoXCJDOlxcXFxmb29cXFxcYmFyXFxcXGJhei5leHRcIik7XG4gKiBhc3NlcnRFcXVhbHMoZGlyLCBcIkM6XFxcXGZvb1xcXFxiYXJcIik7XG4gKiBgYGBcbiAqXG4gKiBOb3RlOiBJZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBmaWxlIFVSTHMsXG4gKiB1c2UgdGhlIG5ldyB2ZXJzaW9uIG9mIGBkaXJuYW1lYCBmcm9tIGBAc3RkL3BhdGgvd2luZG93cy91bnN0YWJsZS1kaXJuYW1lYC5cbiAqXG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byBnZXQgdGhlIGRpcmVjdG9yeSBmcm9tLlxuICogQHJldHVybnMgVGhlIGRpcmVjdG9yeSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlybmFtZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBhc3NlcnRBcmcocGF0aCk7XG5cbiAgY29uc3QgbGVuID0gcGF0aC5sZW5ndGg7XG4gIGxldCByb290RW5kID0gLTE7XG4gIGxldCBlbmQgPSAtMTtcbiAgbGV0IG1hdGNoZWRTbGFzaCA9IHRydWU7XG4gIGxldCBvZmZzZXQgPSAwO1xuICBjb25zdCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KDApO1xuXG4gIC8vIFRyeSB0byBtYXRjaCBhIHJvb3RcbiAgaWYgKGxlbiA+IDEpIHtcbiAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgICAvLyBQb3NzaWJsZSBVTkMgcm9vdFxuXG4gICAgICByb290RW5kID0gb2Zmc2V0ID0gMTtcblxuICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMSkpKSB7XG4gICAgICAgIC8vIE1hdGNoZWQgZG91YmxlIHBhdGggc2VwYXJhdG9yIGF0IGJlZ2lubmluZ1xuICAgICAgICBsZXQgaiA9IDI7XG4gICAgICAgIGxldCBsYXN0ID0gajtcbiAgICAgICAgLy8gTWF0Y2ggMSBvciBtb3JlIG5vbi1wYXRoIHNlcGFyYXRvcnNcbiAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGopKSkgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGogPCBsZW4gJiYgaiAhPT0gbGFzdCkge1xuICAgICAgICAgIC8vIE1hdGNoZWQhXG4gICAgICAgICAgbGFzdCA9IGo7XG4gICAgICAgICAgLy8gTWF0Y2ggMSBvciBtb3JlIHBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICAgIGlmICghaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaiA8IGxlbiAmJiBqICE9PSBsYXN0KSB7XG4gICAgICAgICAgICAvLyBNYXRjaGVkIVxuICAgICAgICAgICAgbGFzdCA9IGo7XG4gICAgICAgICAgICAvLyBNYXRjaCAxIG9yIG1vcmUgbm9uLXBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGogPT09IGxlbikge1xuICAgICAgICAgICAgICAvLyBXZSBtYXRjaGVkIGEgVU5DIHJvb3Qgb25seVxuICAgICAgICAgICAgICByZXR1cm4gcGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChqICE9PSBsYXN0KSB7XG4gICAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgYSBVTkMgcm9vdCB3aXRoIGxlZnRvdmVyc1xuXG4gICAgICAgICAgICAgIC8vIE9mZnNldCBieSAxIHRvIGluY2x1ZGUgdGhlIHNlcGFyYXRvciBhZnRlciB0aGUgVU5DIHJvb3QgdG9cbiAgICAgICAgICAgICAgLy8gdHJlYXQgaXQgYXMgYSBcIm5vcm1hbCByb290XCIgb24gdG9wIG9mIGEgKFVOQykgcm9vdFxuICAgICAgICAgICAgICByb290RW5kID0gb2Zmc2V0ID0gaiArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KGNvZGUpKSB7XG4gICAgICAvLyBQb3NzaWJsZSBkZXZpY2Ugcm9vdFxuXG4gICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OKSB7XG4gICAgICAgIHJvb3RFbmQgPSBvZmZzZXQgPSAyO1xuICAgICAgICBpZiAobGVuID4gMikge1xuICAgICAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDIpKSkgcm9vdEVuZCA9IG9mZnNldCA9IDM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgLy8gYHBhdGhgIGNvbnRhaW5zIGp1c3QgYSBwYXRoIHNlcGFyYXRvciwgZXhpdCBlYXJseSB0byBhdm9pZFxuICAgIC8vIHVubmVjZXNzYXJ5IHdvcmtcbiAgICByZXR1cm4gcGF0aDtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSBsZW4gLSAxOyBpID49IG9mZnNldDsgLS1pKSB7XG4gICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaSkpKSB7XG4gICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICBlbmQgPSBpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3JcbiAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChlbmQgPT09IC0xKSB7XG4gICAgaWYgKHJvb3RFbmQgPT09IC0xKSByZXR1cm4gXCIuXCI7XG4gICAgZWxzZSBlbmQgPSByb290RW5kO1xuICB9XG4gIHJldHVybiBzdHJpcFRyYWlsaW5nU2VwYXJhdG9ycyhwYXRoLnNsaWNlKDAsIGVuZCksIGlzUG9zaXhQYXRoU2VwYXJhdG9yKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDLFNBQVMsU0FBUyxRQUFRLHdCQUF3QjtBQUNsRCxTQUFTLFVBQVUsUUFBUSwwQkFBMEI7QUFDckQsU0FBUyx1QkFBdUIsUUFBUSwwQ0FBMEM7QUFDbEYsU0FDRSxlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLG1CQUFtQixRQUNkLGFBQWE7QUFFcEI7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBaUJDLEdBQ0QsT0FBTyxTQUFTLFFBQVEsSUFBWTtFQUNsQyxVQUFVO0VBRVYsTUFBTSxNQUFNLEtBQUssTUFBTTtFQUN2QixJQUFJLFVBQVUsQ0FBQztFQUNmLElBQUksTUFBTSxDQUFDO0VBQ1gsSUFBSSxlQUFlO0VBQ25CLElBQUksU0FBUztFQUNiLE1BQU0sT0FBTyxLQUFLLFVBQVUsQ0FBQztFQUU3QixzQkFBc0I7RUFDdEIsSUFBSSxNQUFNLEdBQUc7SUFDWCxJQUFJLGdCQUFnQixPQUFPO01BQ3pCLG9CQUFvQjtNQUVwQixVQUFVLFNBQVM7TUFFbkIsSUFBSSxnQkFBZ0IsS0FBSyxVQUFVLENBQUMsS0FBSztRQUN2Qyw2Q0FBNkM7UUFDN0MsSUFBSSxJQUFJO1FBQ1IsSUFBSSxPQUFPO1FBQ1gsc0NBQXNDO1FBQ3RDLE1BQU8sSUFBSSxLQUFLLEVBQUUsRUFBRztVQUNuQixJQUFJLGdCQUFnQixLQUFLLFVBQVUsQ0FBQyxLQUFLO1FBQzNDO1FBQ0EsSUFBSSxJQUFJLE9BQU8sTUFBTSxNQUFNO1VBQ3pCLFdBQVc7VUFDWCxPQUFPO1VBQ1Asa0NBQWtDO1VBQ2xDLE1BQU8sSUFBSSxLQUFLLEVBQUUsRUFBRztZQUNuQixJQUFJLENBQUMsZ0JBQWdCLEtBQUssVUFBVSxDQUFDLEtBQUs7VUFDNUM7VUFDQSxJQUFJLElBQUksT0FBTyxNQUFNLE1BQU07WUFDekIsV0FBVztZQUNYLE9BQU87WUFDUCxzQ0FBc0M7WUFDdEMsTUFBTyxJQUFJLEtBQUssRUFBRSxFQUFHO2NBQ25CLElBQUksZ0JBQWdCLEtBQUssVUFBVSxDQUFDLEtBQUs7WUFDM0M7WUFDQSxJQUFJLE1BQU0sS0FBSztjQUNiLDZCQUE2QjtjQUM3QixPQUFPO1lBQ1Q7WUFDQSxJQUFJLE1BQU0sTUFBTTtjQUNkLHVDQUF1QztjQUV2Qyw2REFBNkQ7Y0FDN0QscURBQXFEO2NBQ3JELFVBQVUsU0FBUyxJQUFJO1lBQ3pCO1VBQ0Y7UUFDRjtNQUNGO0lBQ0YsT0FBTyxJQUFJLG9CQUFvQixPQUFPO01BQ3BDLHVCQUF1QjtNQUV2QixJQUFJLEtBQUssVUFBVSxDQUFDLE9BQU8sWUFBWTtRQUNyQyxVQUFVLFNBQVM7UUFDbkIsSUFBSSxNQUFNLEdBQUc7VUFDWCxJQUFJLGdCQUFnQixLQUFLLFVBQVUsQ0FBQyxLQUFLLFVBQVUsU0FBUztRQUM5RDtNQUNGO0lBQ0Y7RUFDRixPQUFPLElBQUksZ0JBQWdCLE9BQU87SUFDaEMsNkRBQTZEO0lBQzdELG1CQUFtQjtJQUNuQixPQUFPO0VBQ1Q7RUFFQSxJQUFLLElBQUksSUFBSSxNQUFNLEdBQUcsS0FBSyxRQUFRLEVBQUUsRUFBRztJQUN0QyxJQUFJLGdCQUFnQixLQUFLLFVBQVUsQ0FBQyxLQUFLO01BQ3ZDLElBQUksQ0FBQyxjQUFjO1FBQ2pCLE1BQU07UUFDTjtNQUNGO0lBQ0YsT0FBTztNQUNMLHNDQUFzQztNQUN0QyxlQUFlO0lBQ2pCO0VBQ0Y7RUFFQSxJQUFJLFFBQVEsQ0FBQyxHQUFHO0lBQ2QsSUFBSSxZQUFZLENBQUMsR0FBRyxPQUFPO1NBQ3RCLE1BQU07RUFDYjtFQUNBLE9BQU8sd0JBQXdCLEtBQUssS0FBSyxDQUFDLEdBQUcsTUFBTTtBQUNyRCJ9 +// denoCacheMetadata=17668655450337548276,6950762780350019021
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/5a2b3f7cda9dc10babd5c467f85a5ee73f994a8548762b861ed441397aade522.js b/vendor/gen/https/jsr.io/5a2b3f7cda9dc10babd5c467f85a5ee73f994a8548762b861ed441397aade522.js new file mode 100644 index 0000000..d9d8e6f --- /dev/null +++ b/vendor/gen/https/jsr.io/5a2b3f7cda9dc10babd5c467f85a5ee73f994a8548762b861ed441397aade522.js @@ -0,0 +1,7 @@ +// deno-lint-ignore-file no-explicit-any +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +// Check Deno, then the remaining runtimes (e.g. Node, Bun and the browser) +export const isWindows = globalThis.Deno?.build.os === "windows" || globalThis.navigator?.platform?.startsWith("Win") || globalThis.process?.platform?.startsWith("win") || false; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9fb3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZGVuby1saW50LWlnbm9yZS1maWxlIG5vLWV4cGxpY2l0LWFueVxuLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuLy8gQ2hlY2sgRGVubywgdGhlbiB0aGUgcmVtYWluaW5nIHJ1bnRpbWVzIChlLmcuIE5vZGUsIEJ1biBhbmQgdGhlIGJyb3dzZXIpXG5leHBvcnQgY29uc3QgaXNXaW5kb3dzOiBib29sZWFuID1cbiAgKGdsb2JhbFRoaXMgYXMgYW55KS5EZW5vPy5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCIgfHxcbiAgKGdsb2JhbFRoaXMgYXMgYW55KS5uYXZpZ2F0b3I/LnBsYXRmb3JtPy5zdGFydHNXaXRoKFwiV2luXCIpIHx8XG4gIChnbG9iYWxUaGlzIGFzIGFueSkucHJvY2Vzcz8ucGxhdGZvcm0/LnN0YXJ0c1dpdGgoXCJ3aW5cIikgfHxcbiAgZmFsc2U7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0NBQXdDO0FBQ3hDLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckMsMkVBQTJFO0FBQzNFLE9BQU8sTUFBTSxZQUNYLEFBQUMsV0FBbUIsSUFBSSxFQUFFLE1BQU0sT0FBTyxhQUN2QyxBQUFDLFdBQW1CLFNBQVMsRUFBRSxVQUFVLFdBQVcsVUFDcEQsQUFBQyxXQUFtQixPQUFPLEVBQUUsVUFBVSxXQUFXLFVBQ2xELE1BQU0ifQ== +// denoCacheMetadata=942429766422638421,9245551528494870799
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/5a3e5143598daa6b6fbe4264ac06f15b7ca7553501fbd415da1cc427f2b370f2.js b/vendor/gen/https/jsr.io/5a3e5143598daa6b6fbe4264ac06f15b7ca7553501fbd415da1cc427f2b370f2.js new file mode 100644 index 0000000..1d61188 --- /dev/null +++ b/vendor/gen/https/jsr.io/5a3e5143598daa6b6fbe4264ac06f15b7ca7553501fbd415da1cc427f2b370f2.js @@ -0,0 +1,50 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { assertArgs, lastPathSegment, stripSuffix } from "../_common/basename.ts"; +import { stripTrailingSeparators } from "../_common/strip_trailing_separators.ts"; +import { isPosixPathSeparator } from "./_util.ts"; +/** + * Return the last portion of a `path`. + * Trailing directory separators are ignored, and optional suffix is removed. + * + * @example Usage + * ```ts + * import { basename } from "@std/path/posix/basename"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(basename("/home/user/Documents/"), "Documents"); + * assertEquals(basename("/home/user/Documents/image.png"), "image.png"); + * assertEquals(basename("/home/user/Documents/image.png", ".png"), "image"); + * ``` + * + * @example Working with URLs + * + * Note: This function doesn't automatically strip hash and query parts from + * URLs. If your URL contains a hash or query, remove them before passing the + * URL to the function. This can be done by passing the URL to `new URL(url)`, + * and setting the `hash` and `search` properties to empty strings. + * + * ```ts + * import { basename } from "@std/path/posix/basename"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(basename("https://deno.land/std/path/mod.ts"), "mod.ts"); + * assertEquals(basename("https://deno.land/std/path/mod.ts", ".ts"), "mod"); + * assertEquals(basename("https://deno.land/std/path/mod.ts?a=b"), "mod.ts?a=b"); + * assertEquals(basename("https://deno.land/std/path/mod.ts#header"), "mod.ts#header"); + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `basename` from `@std/path/posix/unstable-basename`. + * + * @param path The path to extract the name from. + * @param suffix The suffix to remove from extracted name. + * @returns The extracted name. + */ export function basename(path, suffix = "") { + assertArgs(path, suffix); + const lastSegment = lastPathSegment(path, isPosixPathSeparator); + const strippedSegment = stripTrailingSeparators(lastSegment, isPosixPathSeparator); + return suffix ? stripSuffix(strippedSegment, suffix) : strippedSegment; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9wb3NpeC9iYXNlbmFtZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQge1xuICBhc3NlcnRBcmdzLFxuICBsYXN0UGF0aFNlZ21lbnQsXG4gIHN0cmlwU3VmZml4LFxufSBmcm9tIFwiLi4vX2NvbW1vbi9iYXNlbmFtZS50c1wiO1xuaW1wb3J0IHsgc3RyaXBUcmFpbGluZ1NlcGFyYXRvcnMgfSBmcm9tIFwiLi4vX2NvbW1vbi9zdHJpcF90cmFpbGluZ19zZXBhcmF0b3JzLnRzXCI7XG5pbXBvcnQgeyBpc1Bvc2l4UGF0aFNlcGFyYXRvciB9IGZyb20gXCIuL191dGlsLnRzXCI7XG5cbi8qKlxuICogUmV0dXJuIHRoZSBsYXN0IHBvcnRpb24gb2YgYSBgcGF0aGAuXG4gKiBUcmFpbGluZyBkaXJlY3Rvcnkgc2VwYXJhdG9ycyBhcmUgaWdub3JlZCwgYW5kIG9wdGlvbmFsIHN1ZmZpeCBpcyByZW1vdmVkLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgYmFzZW5hbWUgfSBmcm9tIFwiQHN0ZC9wYXRoL3Bvc2l4L2Jhc2VuYW1lXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoYmFzZW5hbWUoXCIvaG9tZS91c2VyL0RvY3VtZW50cy9cIiksIFwiRG9jdW1lbnRzXCIpO1xuICogYXNzZXJ0RXF1YWxzKGJhc2VuYW1lKFwiL2hvbWUvdXNlci9Eb2N1bWVudHMvaW1hZ2UucG5nXCIpLCBcImltYWdlLnBuZ1wiKTtcbiAqIGFzc2VydEVxdWFscyhiYXNlbmFtZShcIi9ob21lL3VzZXIvRG9jdW1lbnRzL2ltYWdlLnBuZ1wiLCBcIi5wbmdcIiksIFwiaW1hZ2VcIik7XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBXb3JraW5nIHdpdGggVVJMc1xuICpcbiAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gZG9lc24ndCBhdXRvbWF0aWNhbGx5IHN0cmlwIGhhc2ggYW5kIHF1ZXJ5IHBhcnRzIGZyb21cbiAqIFVSTHMuIElmIHlvdXIgVVJMIGNvbnRhaW5zIGEgaGFzaCBvciBxdWVyeSwgcmVtb3ZlIHRoZW0gYmVmb3JlIHBhc3NpbmcgdGhlXG4gKiBVUkwgdG8gdGhlIGZ1bmN0aW9uLiBUaGlzIGNhbiBiZSBkb25lIGJ5IHBhc3NpbmcgdGhlIFVSTCB0byBgbmV3IFVSTCh1cmwpYCxcbiAqIGFuZCBzZXR0aW5nIHRoZSBgaGFzaGAgYW5kIGBzZWFyY2hgIHByb3BlcnRpZXMgdG8gZW1wdHkgc3RyaW5ncy5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgYmFzZW5hbWUgfSBmcm9tIFwiQHN0ZC9wYXRoL3Bvc2l4L2Jhc2VuYW1lXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoYmFzZW5hbWUoXCJodHRwczovL2Rlbm8ubGFuZC9zdGQvcGF0aC9tb2QudHNcIiksIFwibW9kLnRzXCIpO1xuICogYXNzZXJ0RXF1YWxzKGJhc2VuYW1lKFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkL3BhdGgvbW9kLnRzXCIsIFwiLnRzXCIpLCBcIm1vZFwiKTtcbiAqIGFzc2VydEVxdWFscyhiYXNlbmFtZShcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9wYXRoL21vZC50cz9hPWJcIiksIFwibW9kLnRzP2E9YlwiKTtcbiAqIGFzc2VydEVxdWFscyhiYXNlbmFtZShcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9wYXRoL21vZC50cyNoZWFkZXJcIiksIFwibW9kLnRzI2hlYWRlclwiKTtcbiAqIGBgYFxuICpcbiAqIE5vdGU6IElmIHlvdSBhcmUgd29ya2luZyB3aXRoIGZpbGUgVVJMcyxcbiAqIHVzZSB0aGUgbmV3IHZlcnNpb24gb2YgYGJhc2VuYW1lYCBmcm9tIGBAc3RkL3BhdGgvcG9zaXgvdW5zdGFibGUtYmFzZW5hbWVgLlxuICpcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIGV4dHJhY3QgdGhlIG5hbWUgZnJvbS5cbiAqIEBwYXJhbSBzdWZmaXggVGhlIHN1ZmZpeCB0byByZW1vdmUgZnJvbSBleHRyYWN0ZWQgbmFtZS5cbiAqIEByZXR1cm5zIFRoZSBleHRyYWN0ZWQgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJhc2VuYW1lKHBhdGg6IHN0cmluZywgc3VmZml4ID0gXCJcIik6IHN0cmluZyB7XG4gIGFzc2VydEFyZ3MocGF0aCwgc3VmZml4KTtcblxuICBjb25zdCBsYXN0U2VnbWVudCA9IGxhc3RQYXRoU2VnbWVudChwYXRoLCBpc1Bvc2l4UGF0aFNlcGFyYXRvcik7XG4gIGNvbnN0IHN0cmlwcGVkU2VnbWVudCA9IHN0cmlwVHJhaWxpbmdTZXBhcmF0b3JzKFxuICAgIGxhc3RTZWdtZW50LFxuICAgIGlzUG9zaXhQYXRoU2VwYXJhdG9yLFxuICApO1xuICByZXR1cm4gc3VmZml4ID8gc3RyaXBTdWZmaXgoc3RyaXBwZWRTZWdtZW50LCBzdWZmaXgpIDogc3RyaXBwZWRTZWdtZW50O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckMsU0FDRSxVQUFVLEVBQ1YsZUFBZSxFQUNmLFdBQVcsUUFDTix5QkFBeUI7QUFDaEMsU0FBUyx1QkFBdUIsUUFBUSwwQ0FBMEM7QUFDbEYsU0FBUyxvQkFBb0IsUUFBUSxhQUFhO0FBRWxEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBcUNDLEdBQ0QsT0FBTyxTQUFTLFNBQVMsSUFBWSxFQUFFLFNBQVMsRUFBRTtFQUNoRCxXQUFXLE1BQU07RUFFakIsTUFBTSxjQUFjLGdCQUFnQixNQUFNO0VBQzFDLE1BQU0sa0JBQWtCLHdCQUN0QixhQUNBO0VBRUYsT0FBTyxTQUFTLFlBQVksaUJBQWlCLFVBQVU7QUFDekQifQ== +// denoCacheMetadata=2145197038781110742,6023720020292018312
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/5aaf5a8124be57046a016c9b1a7e3d9ba20e9b3865f259c932999ea7636b6e00.js b/vendor/gen/https/jsr.io/5aaf5a8124be57046a016c9b1a7e3d9ba20e9b3865f259c932999ea7636b6e00.js new file mode 100644 index 0000000..df5fc42 --- /dev/null +++ b/vendor/gen/https/jsr.io/5aaf5a8124be57046a016c9b1a7e3d9ba20e9b3865f259c932999ea7636b6e00.js @@ -0,0 +1,152 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +import { dirname } from "jsr:@std/path@^1.0.9/dirname"; +import { resolve } from "jsr:@std/path@^1.0.9/resolve"; +import { ensureDir, ensureDirSync } from "./ensure_dir.ts"; +import { getFileInfoType } from "./_get_file_info_type.ts"; +import { toPathString } from "./_to_path_string.ts"; +// deno-lint-ignore no-explicit-any +const isWindows = globalThis.Deno?.build.os === "windows"; +function resolveSymlinkTarget(target, linkName) { + if (typeof target !== "string") return target; // URL is always absolute path + if (typeof linkName === "string") { + return resolve(dirname(linkName), target); + } else { + return new URL(target, linkName); + } +} +function getSymlinkOption(type) { + return isWindows ? { + type: type === "dir" ? "dir" : "file" + } : undefined; +} +/** + * Asynchronously ensures that the link exists, and points to a valid file. + * + * If the parent directories for the link do not exist, they are created. If the + * link already exists, and it is not modified, this function does nothing. If + * the link already exists, and it does not point to the given target, an error + * is thrown. + * + * Requires `--allow-read` and `--allow-write` permissions. + * + * @see {@link https://docs.deno.com/runtime/manual/basics/permissions#file-system-access} + * for more information on Deno's permissions system. + * + * @param target The source file path as a string or URL. If it is a relative path string, it have to be relative to the link path. + * @param linkName The destination link path as a string or URL. + * + * @returns A void promise that resolves once the link exists. + * + * @example Basic usage + * ```ts ignore + * import { ensureSymlink } from "@std/fs/ensure-symlink"; + * + * // Ensures the link `./targetFile.link.dat` exists and points to `./targetFile.dat` + * await ensureSymlink("./targetFile.dat", "./targetFile.link.dat"); + * ``` + * + * @example Ensuring a link in a folder + * ```ts ignore + * import { ensureSymlink } from "@std/fs/ensure-symlink"; + * + * // Ensures the link `./folder/targetFile.link.dat` exists and points to `./folder/targetFile.dat` + * await ensureSymlink("./targetFile.dat", "./folder/targetFile.link.dat"); + * ``` + */ export async function ensureSymlink(target, linkName) { + const targetRealPath = resolveSymlinkTarget(target, linkName); + let srcStatInfo; + try { + srcStatInfo = await Deno.lstat(targetRealPath); + } catch (error) { + if (error instanceof Deno.errors.NotFound) { + throw new Deno.errors.NotFound(`Cannot ensure symlink as the target path does not exist: ${targetRealPath}`); + } + throw error; + } + const srcFilePathType = getFileInfoType(srcStatInfo); + await ensureDir(dirname(toPathString(linkName))); + const options = getSymlinkOption(srcFilePathType); + try { + await Deno.symlink(target, linkName, options); + } catch (error) { + if (!(error instanceof Deno.errors.AlreadyExists)) { + throw error; + } + const linkStatInfo = await Deno.lstat(linkName); + if (!linkStatInfo.isSymlink) { + const type = getFileInfoType(linkStatInfo); + throw new Deno.errors.AlreadyExists(`A '${type}' already exists at the path: ${linkName}`); + } + const linkPath = await Deno.readLink(linkName); + const linkRealPath = resolve(linkPath); + if (linkRealPath !== targetRealPath) { + throw new Deno.errors.AlreadyExists(`A symlink targeting to an undesired path already exists: ${linkName} -> ${linkRealPath}`); + } + } +} +/** + * Synchronously ensures that the link exists, and points to a valid file. + * + * If the parent directories for the link do not exist, they are created. If the + * link already exists, and it is not modified, this function does nothing. If + * the link already exists, and it does not point to the given target, an error + * is thrown. + * + * Requires `--allow-read` and `--allow-write` permissions. + * + * @see {@link https://docs.deno.com/runtime/manual/basics/permissions#file-system-access} + * for more information on Deno's permissions system. + * + * @param target The source file path as a string or URL. If it is a relative path string, it have to be relative to the link path. + * @param linkName The destination link path as a string or URL. + * @returns A void value that returns once the link exists. + * + * @example Basic usage + * ```ts ignore + * import { ensureSymlinkSync } from "@std/fs/ensure-symlink"; + * + * // Ensures the link `./targetFile.link.dat` exists and points to `./targetFile.dat` + * ensureSymlinkSync("./targetFile.dat", "./targetFile.link.dat"); + * ``` + * + * @example Ensuring a link in a folder + * ```ts ignore + * import { ensureSymlinkSync } from "@std/fs/ensure-symlink"; + * + * // Ensures the link `./folder/targetFile.link.dat` exists and points to `./folder/targetFile.dat` + * ensureSymlinkSync("./targetFile.dat", "./folder/targetFile.link.dat"); + * ``` + */ export function ensureSymlinkSync(target, linkName) { + const targetRealPath = resolveSymlinkTarget(target, linkName); + let srcStatInfo; + try { + srcStatInfo = Deno.lstatSync(targetRealPath); + } catch (error) { + if (error instanceof Deno.errors.NotFound) { + throw new Deno.errors.NotFound(`Cannot ensure symlink as the target path does not exist: ${targetRealPath}`); + } + throw error; + } + const srcFilePathType = getFileInfoType(srcStatInfo); + ensureDirSync(dirname(toPathString(linkName))); + const options = getSymlinkOption(srcFilePathType); + try { + Deno.symlinkSync(target, linkName, options); + } catch (error) { + if (!(error instanceof Deno.errors.AlreadyExists)) { + throw error; + } + const linkStatInfo = Deno.lstatSync(linkName); + if (!linkStatInfo.isSymlink) { + const type = getFileInfoType(linkStatInfo); + throw new Deno.errors.AlreadyExists(`A '${type}' already exists at the path: ${linkName}`); + } + const linkPath = Deno.readLinkSync(linkName); + const linkRealPath = resolve(linkPath); + if (linkRealPath !== targetRealPath) { + throw new Deno.errors.AlreadyExists(`A symlink targeting to an undesired path already exists: ${linkName} -> ${linkRealPath}`); + } + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnMvMS4wLjE3L2Vuc3VyZV9zeW1saW5rLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG5pbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSBcImpzcjpAc3RkL3BhdGhAXjEuMC45L2Rpcm5hbWVcIjtcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tIFwianNyOkBzdGQvcGF0aEBeMS4wLjkvcmVzb2x2ZVwiO1xuaW1wb3J0IHsgZW5zdXJlRGlyLCBlbnN1cmVEaXJTeW5jIH0gZnJvbSBcIi4vZW5zdXJlX2Rpci50c1wiO1xuaW1wb3J0IHsgZ2V0RmlsZUluZm9UeXBlLCB0eXBlIFBhdGhUeXBlIH0gZnJvbSBcIi4vX2dldF9maWxlX2luZm9fdHlwZS50c1wiO1xuaW1wb3J0IHsgdG9QYXRoU3RyaW5nIH0gZnJvbSBcIi4vX3RvX3BhdGhfc3RyaW5nLnRzXCI7XG5cbi8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG5jb25zdCBpc1dpbmRvd3MgPSAoZ2xvYmFsVGhpcyBhcyBhbnkpLkRlbm8/LmJ1aWxkLm9zID09PSBcIndpbmRvd3NcIjtcblxuZnVuY3Rpb24gcmVzb2x2ZVN5bWxpbmtUYXJnZXQodGFyZ2V0OiBzdHJpbmcgfCBVUkwsIGxpbmtOYW1lOiBzdHJpbmcgfCBVUkwpIHtcbiAgaWYgKHR5cGVvZiB0YXJnZXQgIT09IFwic3RyaW5nXCIpIHJldHVybiB0YXJnZXQ7IC8vIFVSTCBpcyBhbHdheXMgYWJzb2x1dGUgcGF0aFxuICBpZiAodHlwZW9mIGxpbmtOYW1lID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHJlc29sdmUoZGlybmFtZShsaW5rTmFtZSksIHRhcmdldCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBVUkwodGFyZ2V0LCBsaW5rTmFtZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0U3ltbGlua09wdGlvbihcbiAgdHlwZTogUGF0aFR5cGUgfCB1bmRlZmluZWQsXG4pOiBEZW5vLlN5bWxpbmtPcHRpb25zIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGlzV2luZG93cyA/IHsgdHlwZTogdHlwZSA9PT0gXCJkaXJcIiA/IFwiZGlyXCIgOiBcImZpbGVcIiB9IDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEFzeW5jaHJvbm91c2x5IGVuc3VyZXMgdGhhdCB0aGUgbGluayBleGlzdHMsIGFuZCBwb2ludHMgdG8gYSB2YWxpZCBmaWxlLlxuICpcbiAqIElmIHRoZSBwYXJlbnQgZGlyZWN0b3JpZXMgZm9yIHRoZSBsaW5rIGRvIG5vdCBleGlzdCwgdGhleSBhcmUgY3JlYXRlZC4gSWYgdGhlXG4gKiBsaW5rIGFscmVhZHkgZXhpc3RzLCBhbmQgaXQgaXMgbm90IG1vZGlmaWVkLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4gSWZcbiAqIHRoZSBsaW5rIGFscmVhZHkgZXhpc3RzLCBhbmQgaXQgZG9lcyBub3QgcG9pbnQgdG8gdGhlIGdpdmVuIHRhcmdldCwgYW4gZXJyb3JcbiAqIGlzIHRocm93bi5cbiAqXG4gKiBSZXF1aXJlcyBgLS1hbGxvdy1yZWFkYCBhbmQgYC0tYWxsb3ctd3JpdGVgIHBlcm1pc3Npb25zLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZG9jcy5kZW5vLmNvbS9ydW50aW1lL21hbnVhbC9iYXNpY3MvcGVybWlzc2lvbnMjZmlsZS1zeXN0ZW0tYWNjZXNzfVxuICogZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gRGVubydzIHBlcm1pc3Npb25zIHN5c3RlbS5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IFRoZSBzb3VyY2UgZmlsZSBwYXRoIGFzIGEgc3RyaW5nIG9yIFVSTC4gSWYgaXQgaXMgYSByZWxhdGl2ZSBwYXRoIHN0cmluZywgaXQgaGF2ZSB0byBiZSByZWxhdGl2ZSB0byB0aGUgbGluayBwYXRoLlxuICogQHBhcmFtIGxpbmtOYW1lIFRoZSBkZXN0aW5hdGlvbiBsaW5rIHBhdGggYXMgYSBzdHJpbmcgb3IgVVJMLlxuICpcbiAqIEByZXR1cm5zIEEgdm9pZCBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgbGluayBleGlzdHMuXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgdXNhZ2VcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgZW5zdXJlU3ltbGluayB9IGZyb20gXCJAc3RkL2ZzL2Vuc3VyZS1zeW1saW5rXCI7XG4gKlxuICogLy8gRW5zdXJlcyB0aGUgbGluayBgLi90YXJnZXRGaWxlLmxpbmsuZGF0YCBleGlzdHMgYW5kIHBvaW50cyB0byBgLi90YXJnZXRGaWxlLmRhdGBcbiAqIGF3YWl0IGVuc3VyZVN5bWxpbmsoXCIuL3RhcmdldEZpbGUuZGF0XCIsIFwiLi90YXJnZXRGaWxlLmxpbmsuZGF0XCIpO1xuICogYGBgXG4gKlxuICogQGV4YW1wbGUgRW5zdXJpbmcgYSBsaW5rIGluIGEgZm9sZGVyXG4gKiBgYGB0cyBpZ25vcmVcbiAqIGltcG9ydCB7IGVuc3VyZVN5bWxpbmsgfSBmcm9tIFwiQHN0ZC9mcy9lbnN1cmUtc3ltbGlua1wiO1xuICpcbiAqIC8vIEVuc3VyZXMgdGhlIGxpbmsgYC4vZm9sZGVyL3RhcmdldEZpbGUubGluay5kYXRgIGV4aXN0cyBhbmQgcG9pbnRzIHRvIGAuL2ZvbGRlci90YXJnZXRGaWxlLmRhdGBcbiAqIGF3YWl0IGVuc3VyZVN5bWxpbmsoXCIuL3RhcmdldEZpbGUuZGF0XCIsIFwiLi9mb2xkZXIvdGFyZ2V0RmlsZS5saW5rLmRhdFwiKTtcbiAqIGBgYFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlU3ltbGluayhcbiAgdGFyZ2V0OiBzdHJpbmcgfCBVUkwsXG4gIGxpbmtOYW1lOiBzdHJpbmcgfCBVUkwsXG4pIHtcbiAgY29uc3QgdGFyZ2V0UmVhbFBhdGggPSByZXNvbHZlU3ltbGlua1RhcmdldCh0YXJnZXQsIGxpbmtOYW1lKTtcbiAgbGV0IHNyY1N0YXRJbmZvO1xuICB0cnkge1xuICAgIHNyY1N0YXRJbmZvID0gYXdhaXQgRGVuby5sc3RhdCh0YXJnZXRSZWFsUGF0aCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRGVuby5lcnJvcnMuTm90Rm91bmQpIHtcbiAgICAgIHRocm93IG5ldyBEZW5vLmVycm9ycy5Ob3RGb3VuZChcbiAgICAgICAgYENhbm5vdCBlbnN1cmUgc3ltbGluayBhcyB0aGUgdGFyZ2V0IHBhdGggZG9lcyBub3QgZXhpc3Q6ICR7dGFyZ2V0UmVhbFBhdGh9YCxcbiAgICAgICk7XG4gICAgfVxuICAgIHRocm93IGVycm9yO1xuICB9XG4gIGNvbnN0IHNyY0ZpbGVQYXRoVHlwZSA9IGdldEZpbGVJbmZvVHlwZShzcmNTdGF0SW5mbyk7XG5cbiAgYXdhaXQgZW5zdXJlRGlyKGRpcm5hbWUodG9QYXRoU3RyaW5nKGxpbmtOYW1lKSkpO1xuXG4gIGNvbnN0IG9wdGlvbnMgPSBnZXRTeW1saW5rT3B0aW9uKHNyY0ZpbGVQYXRoVHlwZSk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBEZW5vLnN5bWxpbmsodGFyZ2V0LCBsaW5rTmFtZSwgb3B0aW9ucyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBEZW5vLmVycm9ycy5BbHJlYWR5RXhpc3RzKSkge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIGNvbnN0IGxpbmtTdGF0SW5mbyA9IGF3YWl0IERlbm8ubHN0YXQobGlua05hbWUpO1xuICAgIGlmICghbGlua1N0YXRJbmZvLmlzU3ltbGluaykge1xuICAgICAgY29uc3QgdHlwZSA9IGdldEZpbGVJbmZvVHlwZShsaW5rU3RhdEluZm8pO1xuICAgICAgdGhyb3cgbmV3IERlbm8uZXJyb3JzLkFscmVhZHlFeGlzdHMoXG4gICAgICAgIGBBICcke3R5cGV9JyBhbHJlYWR5IGV4aXN0cyBhdCB0aGUgcGF0aDogJHtsaW5rTmFtZX1gLFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgbGlua1BhdGggPSBhd2FpdCBEZW5vLnJlYWRMaW5rKGxpbmtOYW1lKTtcbiAgICBjb25zdCBsaW5rUmVhbFBhdGggPSByZXNvbHZlKGxpbmtQYXRoKTtcbiAgICBpZiAobGlua1JlYWxQYXRoICE9PSB0YXJnZXRSZWFsUGF0aCkge1xuICAgICAgdGhyb3cgbmV3IERlbm8uZXJyb3JzLkFscmVhZHlFeGlzdHMoXG4gICAgICAgIGBBIHN5bWxpbmsgdGFyZ2V0aW5nIHRvIGFuIHVuZGVzaXJlZCBwYXRoIGFscmVhZHkgZXhpc3RzOiAke2xpbmtOYW1lfSAtPiAke2xpbmtSZWFsUGF0aH1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBTeW5jaHJvbm91c2x5IGVuc3VyZXMgdGhhdCB0aGUgbGluayBleGlzdHMsIGFuZCBwb2ludHMgdG8gYSB2YWxpZCBmaWxlLlxuICpcbiAqIElmIHRoZSBwYXJlbnQgZGlyZWN0b3JpZXMgZm9yIHRoZSBsaW5rIGRvIG5vdCBleGlzdCwgdGhleSBhcmUgY3JlYXRlZC4gSWYgdGhlXG4gKiBsaW5rIGFscmVhZHkgZXhpc3RzLCBhbmQgaXQgaXMgbm90IG1vZGlmaWVkLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4gSWZcbiAqIHRoZSBsaW5rIGFscmVhZHkgZXhpc3RzLCBhbmQgaXQgZG9lcyBub3QgcG9pbnQgdG8gdGhlIGdpdmVuIHRhcmdldCwgYW4gZXJyb3JcbiAqIGlzIHRocm93bi5cbiAqXG4gKiBSZXF1aXJlcyBgLS1hbGxvdy1yZWFkYCBhbmQgYC0tYWxsb3ctd3JpdGVgIHBlcm1pc3Npb25zLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZG9jcy5kZW5vLmNvbS9ydW50aW1lL21hbnVhbC9iYXNpY3MvcGVybWlzc2lvbnMjZmlsZS1zeXN0ZW0tYWNjZXNzfVxuICogZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gRGVubydzIHBlcm1pc3Npb25zIHN5c3RlbS5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IFRoZSBzb3VyY2UgZmlsZSBwYXRoIGFzIGEgc3RyaW5nIG9yIFVSTC4gSWYgaXQgaXMgYSByZWxhdGl2ZSBwYXRoIHN0cmluZywgaXQgaGF2ZSB0byBiZSByZWxhdGl2ZSB0byB0aGUgbGluayBwYXRoLlxuICogQHBhcmFtIGxpbmtOYW1lIFRoZSBkZXN0aW5hdGlvbiBsaW5rIHBhdGggYXMgYSBzdHJpbmcgb3IgVVJMLlxuICogQHJldHVybnMgQSB2b2lkIHZhbHVlIHRoYXQgcmV0dXJucyBvbmNlIHRoZSBsaW5rIGV4aXN0cy5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgdHMgaWdub3JlXG4gKiBpbXBvcnQgeyBlbnN1cmVTeW1saW5rU3luYyB9IGZyb20gXCJAc3RkL2ZzL2Vuc3VyZS1zeW1saW5rXCI7XG4gKlxuICogLy8gRW5zdXJlcyB0aGUgbGluayBgLi90YXJnZXRGaWxlLmxpbmsuZGF0YCBleGlzdHMgYW5kIHBvaW50cyB0byBgLi90YXJnZXRGaWxlLmRhdGBcbiAqIGVuc3VyZVN5bWxpbmtTeW5jKFwiLi90YXJnZXRGaWxlLmRhdFwiLCBcIi4vdGFyZ2V0RmlsZS5saW5rLmRhdFwiKTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIEVuc3VyaW5nIGEgbGluayBpbiBhIGZvbGRlclxuICogYGBgdHMgaWdub3JlXG4gKiBpbXBvcnQgeyBlbnN1cmVTeW1saW5rU3luYyB9IGZyb20gXCJAc3RkL2ZzL2Vuc3VyZS1zeW1saW5rXCI7XG4gKlxuICogLy8gRW5zdXJlcyB0aGUgbGluayBgLi9mb2xkZXIvdGFyZ2V0RmlsZS5saW5rLmRhdGAgZXhpc3RzIGFuZCBwb2ludHMgdG8gYC4vZm9sZGVyL3RhcmdldEZpbGUuZGF0YFxuICogZW5zdXJlU3ltbGlua1N5bmMoXCIuL3RhcmdldEZpbGUuZGF0XCIsIFwiLi9mb2xkZXIvdGFyZ2V0RmlsZS5saW5rLmRhdFwiKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlU3ltbGlua1N5bmMoXG4gIHRhcmdldDogc3RyaW5nIHwgVVJMLFxuICBsaW5rTmFtZTogc3RyaW5nIHwgVVJMLFxuKSB7XG4gIGNvbnN0IHRhcmdldFJlYWxQYXRoID0gcmVzb2x2ZVN5bWxpbmtUYXJnZXQodGFyZ2V0LCBsaW5rTmFtZSk7XG4gIGxldCBzcmNTdGF0SW5mbztcbiAgdHJ5IHtcbiAgICBzcmNTdGF0SW5mbyA9IERlbm8ubHN0YXRTeW5jKHRhcmdldFJlYWxQYXRoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBEZW5vLmVycm9ycy5Ob3RGb3VuZCkge1xuICAgICAgdGhyb3cgbmV3IERlbm8uZXJyb3JzLk5vdEZvdW5kKFxuICAgICAgICBgQ2Fubm90IGVuc3VyZSBzeW1saW5rIGFzIHRoZSB0YXJnZXQgcGF0aCBkb2VzIG5vdCBleGlzdDogJHt0YXJnZXRSZWFsUGF0aH1gLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbiAgY29uc3Qgc3JjRmlsZVBhdGhUeXBlID0gZ2V0RmlsZUluZm9UeXBlKHNyY1N0YXRJbmZvKTtcblxuICBlbnN1cmVEaXJTeW5jKGRpcm5hbWUodG9QYXRoU3RyaW5nKGxpbmtOYW1lKSkpO1xuXG4gIGNvbnN0IG9wdGlvbnMgPSBnZXRTeW1saW5rT3B0aW9uKHNyY0ZpbGVQYXRoVHlwZSk7XG5cbiAgdHJ5IHtcbiAgICBEZW5vLnN5bWxpbmtTeW5jKHRhcmdldCwgbGlua05hbWUsIG9wdGlvbnMpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgRGVuby5lcnJvcnMuQWxyZWFkeUV4aXN0cykpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICBjb25zdCBsaW5rU3RhdEluZm8gPSBEZW5vLmxzdGF0U3luYyhsaW5rTmFtZSk7XG4gICAgaWYgKCFsaW5rU3RhdEluZm8uaXNTeW1saW5rKSB7XG4gICAgICBjb25zdCB0eXBlID0gZ2V0RmlsZUluZm9UeXBlKGxpbmtTdGF0SW5mbyk7XG4gICAgICB0aHJvdyBuZXcgRGVuby5lcnJvcnMuQWxyZWFkeUV4aXN0cyhcbiAgICAgICAgYEEgJyR7dHlwZX0nIGFscmVhZHkgZXhpc3RzIGF0IHRoZSBwYXRoOiAke2xpbmtOYW1lfWAsXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBsaW5rUGF0aCA9IERlbm8ucmVhZExpbmtTeW5jKGxpbmtOYW1lKTtcbiAgICBjb25zdCBsaW5rUmVhbFBhdGggPSByZXNvbHZlKGxpbmtQYXRoKTtcbiAgICBpZiAobGlua1JlYWxQYXRoICE9PSB0YXJnZXRSZWFsUGF0aCkge1xuICAgICAgdGhyb3cgbmV3IERlbm8uZXJyb3JzLkFscmVhZHlFeGlzdHMoXG4gICAgICAgIGBBIHN5bWxpbmsgdGFyZ2V0aW5nIHRvIGFuIHVuZGVzaXJlZCBwYXRoIGFscmVhZHkgZXhpc3RzOiAke2xpbmtOYW1lfSAtPiAke2xpbmtSZWFsUGF0aH1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQsU0FBUyxPQUFPLFFBQVEsK0JBQStCO0FBQ3ZELFNBQVMsT0FBTyxRQUFRLCtCQUErQjtBQUN2RCxTQUFTLFNBQVMsRUFBRSxhQUFhLFFBQVEsa0JBQWtCO0FBQzNELFNBQVMsZUFBZSxRQUF1QiwyQkFBMkI7QUFDMUUsU0FBUyxZQUFZLFFBQVEsdUJBQXVCO0FBRXBELG1DQUFtQztBQUNuQyxNQUFNLFlBQVksQUFBQyxXQUFtQixJQUFJLEVBQUUsTUFBTSxPQUFPO0FBRXpELFNBQVMscUJBQXFCLE1BQW9CLEVBQUUsUUFBc0I7RUFDeEUsSUFBSSxPQUFPLFdBQVcsVUFBVSxPQUFPLFFBQVEsOEJBQThCO0VBQzdFLElBQUksT0FBTyxhQUFhLFVBQVU7SUFDaEMsT0FBTyxRQUFRLFFBQVEsV0FBVztFQUNwQyxPQUFPO0lBQ0wsT0FBTyxJQUFJLElBQUksUUFBUTtFQUN6QjtBQUNGO0FBRUEsU0FBUyxpQkFDUCxJQUEwQjtFQUUxQixPQUFPLFlBQVk7SUFBRSxNQUFNLFNBQVMs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 +// denoCacheMetadata=1273745982400005058,10168868461436950531
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/5ad0b729bff518ae7b1d0e1b7df87fb6b9211646cf1b700f51bed24d18c41962.js b/vendor/gen/https/jsr.io/5ad0b729bff518ae7b1d0e1b7df87fb6b9211646cf1b700f51bed24d18c41962.js new file mode 100644 index 0000000..46c6eeb --- /dev/null +++ b/vendor/gen/https/jsr.io/5ad0b729bff518ae7b1d0e1b7df87fb6b9211646cf1b700f51bed24d18c41962.js @@ -0,0 +1,129 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// Copyright (c) Jason Campbell. MIT license +// This module is browser compatible. +/** + * Extracts + * {@link https://daily-dev-tips.com/posts/what-exactly-is-frontmatter/ | front matter} + * from strings. Adapted from + * {@link https://github.com/jxson/front-matter/blob/36f139ef797bd9e5196a9ede03ef481d7fbca18e/index.js | jxson/front-matter}. + * + * ## Supported formats + * + * ### JSON + * + * ```ts + * import { test, extractJson } from "@std/front-matter"; + * import { assertEquals } from "@std/assert"; + * + * const str = "---json\n{\"and\": \"this\"}\n---\ndeno is awesome"; + * + * assertEquals(test(str), true); + * assertEquals(extractJson(str), { + * frontMatter: "{\"and\": \"this\"}", + * body: "deno is awesome", + * attrs: { and: "this" } + * }); + * ``` + * + * {@linkcode extractJson | extract} and {@linkcode test} support the following + * delimiters. + * + * ```markdown + * ---json + * { + * "and": "this" + * } + * --- + * ``` + * + * ```markdown + * { + * "is": "JSON" + * } + * ``` + * + * ### TOML + * + * ```ts + * import { test, extractToml } from "@std/front-matter"; + * import { assertEquals } from "@std/assert"; + * + * const str = "---toml\nmodule = 'front_matter'\n---\ndeno is awesome"; + * + * assertEquals(test(str), true); + * assertEquals(extractToml(str), { + * frontMatter: "module = 'front_matter'", + * body: "deno is awesome", + * attrs: { module: "front_matter" } + * }); + * ``` + * + * {@linkcode extractToml | extract} and {@linkcode test} support the following + * delimiters. + * + * ```markdown + * ---toml + * this = 'is' + * --- + * ``` + * + * ```markdown + * = toml = + * parsed = 'as' + * toml = 'data' + * = toml = + * ``` + * + * ```markdown + * +++ + * is = 'that' + * not = 'cool?' + * +++ + * ``` + * + * ### YAML + * + * ```ts + * import { test, extractYaml } from "@std/front-matter"; + * import { assertEquals } from "@std/assert"; + * + * const str = "---yaml\nmodule: front_matter\n---\ndeno is awesome"; + * + * assertEquals(test(str), true); + * assertEquals(extractYaml(str), { + * frontMatter: "module: front_matter", + * body: "deno is awesome", + * attrs: { module: "front_matter" } + * }); + * ``` + * + * {@linkcode extractYaml | extract} and {@linkcode test} support the following + * delimiters. + * + * ```front_matter + * --- + * these: are + * --- + * ``` + * + * ```markdown + * ---yaml + * all: recognized + * --- + * ``` + * + * ```markdown + * = yaml = + * as: yaml + * = yaml = + * ``` + * + * @module + */ import { extract as extractJson } from "./json.ts"; +import { extract as extractToml } from "./toml.ts"; +import { extract as extractYaml } from "./yaml.ts"; +export * from "./test.ts"; +export * from "./types.ts"; +export { extractJson, extractToml, extractYaml }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnJvbnQtbWF0dGVyLzEuMC45L21vZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IChjKSBKYXNvbiBDYW1wYmVsbC4gTUlUIGxpY2Vuc2Vcbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuLyoqXG4gKiBFeHRyYWN0c1xuICoge0BsaW5rIGh0dHBzOi8vZGFpbHktZGV2LXRpcHMuY29tL3Bvc3RzL3doYXQtZXhhY3RseS1pcy1mcm9udG1hdHRlci8gfCBmcm9udCBtYXR0ZXJ9XG4gKiBmcm9tIHN0cmluZ3MuIEFkYXB0ZWQgZnJvbVxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9qeHNvbi9mcm9udC1tYXR0ZXIvYmxvYi8zNmYxMzllZjc5N2JkOWU1MTk2YTllZGUwM2VmNDgxZDdmYmNhMThlL2luZGV4LmpzIHwganhzb24vZnJvbnQtbWF0dGVyfS5cbiAqXG4gKiAjIyBTdXBwb3J0ZWQgZm9ybWF0c1xuICpcbiAqICMjIyBKU09OXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHRlc3QsIGV4dHJhY3RKc29uIH0gZnJvbSBcIkBzdGQvZnJvbnQtbWF0dGVyXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBzdHIgPSBcIi0tLWpzb25cXG57XFxcImFuZFxcXCI6IFxcXCJ0aGlzXFxcIn1cXG4tLS1cXG5kZW5vIGlzIGF3ZXNvbWVcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHModGVzdChzdHIpLCB0cnVlKTtcbiAqIGFzc2VydEVxdWFscyhleHRyYWN0SnNvbihzdHIpLCB7XG4gKiAgIGZyb250TWF0dGVyOiBcIntcXFwiYW5kXFxcIjogXFxcInRoaXNcXFwifVwiLFxuICogICBib2R5OiBcImRlbm8gaXMgYXdlc29tZVwiLFxuICogICBhdHRyczogeyBhbmQ6IFwidGhpc1wiIH1cbiAqIH0pO1xuICogYGBgXG4gKlxuICoge0BsaW5rY29kZSBleHRyYWN0SnNvbiB8IGV4dHJhY3R9IGFuZCB7QGxpbmtjb2RlIHRlc3R9IHN1cHBvcnQgdGhlIGZvbGxvd2luZ1xuICogZGVsaW1pdGVycy5cbiAqXG4gKiBgYGBtYXJrZG93blxuICogLS0tanNvblxuICoge1xuICogICBcImFuZFwiOiBcInRoaXNcIlxuICogfVxuICogLS0tXG4gKiBgYGBcbiAqXG4gKiBgYGBtYXJrZG93blxuICoge1xuICogICBcImlzXCI6IFwiSlNPTlwiXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyMgVE9NTFxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyB0ZXN0LCBleHRyYWN0VG9tbCB9IGZyb20gXCJAc3RkL2Zyb250LW1hdHRlclwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3Qgc3RyID0gXCItLS10b21sXFxubW9kdWxlID0gJ2Zyb250X21hdHRlcidcXG4tLS1cXG5kZW5vIGlzIGF3ZXNvbWVcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHModGVzdChzdHIpLCB0cnVlKTtcbiAqIGFzc2VydEVxdWFscyhleHRyYWN0VG9tbChzdHIpLCB7XG4gKiAgIGZyb250TWF0dGVyOiBcIm1vZHVsZSA9ICdmcm9udF9tYXR0ZXInXCIsXG4gKiAgIGJvZHk6IFwiZGVubyBpcyBhd2Vzb21lXCIsXG4gKiAgIGF0dHJzOiB7IG1vZHVsZTogXCJmcm9udF9tYXR0ZXJcIiB9XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIHtAbGlua2NvZGUgZXh0cmFjdFRvbWwgfCBleHRyYWN0fSBhbmQge0BsaW5rY29kZSB0ZXN0fSBzdXBwb3J0IHRoZSBmb2xsb3dpbmdcbiAqIGRlbGltaXRlcnMuXG4gKlxuICogYGBgbWFya2Rvd25cbiAqIC0tLXRvbWxcbiAqIHRoaXMgPSAnaXMnXG4gKiAtLS1cbiAqIGBgYFxuICpcbiAqIGBgYG1hcmtkb3duXG4gKiA9IHRvbWwgPVxuICogcGFyc2VkID0gJ2FzJ1xuICogdG9tbCA9ICdkYXRhJ1xuICogPSB0b21sID1cbiAqIGBgYFxuICpcbiAqIGBgYG1hcmtkb3duXG4gKiArKytcbiAqIGlzID0gJ3RoYXQnXG4gKiBub3QgPSAnY29vbD8nXG4gKiArKytcbiAqIGBgYFxuICpcbiAqICMjIyBZQU1MXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHRlc3QsIGV4dHJhY3RZYW1sIH0gZnJvbSBcIkBzdGQvZnJvbnQtbWF0dGVyXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBzdHIgPSBcIi0tLXlhbWxcXG5tb2R1bGU6IGZyb250X21hdHRlclxcbi0tLVxcbmRlbm8gaXMgYXdlc29tZVwiO1xuICpcbiAqIGFzc2VydEVxdWFscyh0ZXN0KHN0ciksIHRydWUpO1xuICogYXNzZXJ0RXF1YWxzKGV4dHJhY3RZYW1sKHN0ciksIHtcbiAqICAgZnJvbnRNYXR0ZXI6IFwibW9kdWxlOiBmcm9udF9tYXR0ZXJcIixcbiAqICAgYm9keTogXCJkZW5vIGlzIGF3ZXNvbWVcIixcbiAqICAgYXR0cnM6IHsgbW9kdWxlOiBcImZyb250X21hdHRlclwiIH1cbiAqIH0pO1xuICogYGBgXG4gKlxuICoge0BsaW5rY29kZSBleHRyYWN0WWFtbCB8IGV4dHJhY3R9IGFuZCB7QGxpbmtjb2RlIHRlc3R9IHN1cHBvcnQgdGhlIGZvbGxvd2luZ1xuICogZGVsaW1pdGVycy5cbiAqXG4gKiBgYGBmcm9udF9tYXR0ZXJcbiAqIC0tLVxuICogdGhlc2U6IGFyZVxuICogLS0tXG4gKiBgYGBcbiAqXG4gKiBgYGBtYXJrZG93blxuICogLS0teWFtbFxuICogYWxsOiByZWNvZ25pemVkXG4gKiAtLS1cbiAqIGBgYFxuICpcbiAqIGBgYG1hcmtkb3duXG4gKiA9IHlhbWwgPVxuICogYXM6IHlhbWxcbiAqID0geWFtbCA9XG4gKiBgYGBcbiAqXG4gKiBAbW9kdWxlXG4gKi9cbmltcG9ydCB7IGV4dHJhY3QgYXMgZXh0cmFjdEpzb24gfSBmcm9tIFwiLi9qc29uLnRzXCI7XG5pbXBvcnQgeyBleHRyYWN0IGFzIGV4dHJhY3RUb21sIH0gZnJvbSBcIi4vdG9tbC50c1wiO1xuaW1wb3J0IHsgZXh0cmFjdCBhcyBleHRyYWN0WWFtbCB9IGZyb20gXCIuL3lhbWwudHNcIjtcblxuZXhwb3J0ICogZnJvbSBcIi4vdGVzdC50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMudHNcIjtcblxuZXhwb3J0IHsgZXh0cmFjdEpzb24sIGV4dHJhY3RUb21sLCBleHRyYWN0WWFtbCB9O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCw0Q0FBNEM7QUFDNUMscUNBQXFDO0FBRXJDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBc0hDLEdBQ0QsU0FBUyxXQUFXLFdBQVcsUUFBUSxZQUFZO0FBQ25ELFNBQVMsV0FBVyxXQUFXLFFBQVEsWUFBWTtBQUNuRCxTQUFTLFdBQVcsV0FBVyxRQUFRLFlBQVk7QUFFbkQsY0FBYyxZQUFZO0FBQzFCLGNBQWMsYUFBYTtBQUUzQixTQUFTLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxHQUFHIn0= +// denoCacheMetadata=10868004174874085482,12088208579340012596
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/5b2ed25f336e15fc393d4e34f9694d457ece3821100c6200e4261af96dd1f320.js b/vendor/gen/https/jsr.io/5b2ed25f336e15fc393d4e34f9694d457ece3821100c6200e4261af96dd1f320.js new file mode 100644 index 0000000..b26f662 --- /dev/null +++ b/vendor/gen/https/jsr.io/5b2ed25f336e15fc393d4e34f9694d457ece3821100c6200e4261af96dd1f320.js @@ -0,0 +1,64 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * Returns the index of the last occurrence of the needle array in the source + * array, or -1 if it is not present. + * + * The complexity of this function is `O(source.length * needle.length)`. + * + * @param source Source array to check. + * @param needle Needle array to check for. + * @param start Start index in the source array to begin the search. Defaults to + * `source.length - 1`. + * @returns Index of the last occurrence of the needle array in the source + * array, or -1 if it is not present. + * + * @example Basic usage + * ```ts + * import { lastIndexOfNeedle } from "@std/bytes/last-index-of-needle"; + * import { assertEquals } from "@std/assert"; + * + * const source = new Uint8Array([0, 1, 2, 1, 2, 1, 2, 3]); + * const needle = new Uint8Array([1, 2]); + * const notNeedle = new Uint8Array([5, 0]); + * + * assertEquals(lastIndexOfNeedle(source, needle), 5); + * assertEquals(lastIndexOfNeedle(source, notNeedle), -1); + * ``` + * + * @example Start index + * ```ts + * import { lastIndexOfNeedle } from "@std/bytes/last-index-of-needle"; + * import { assertEquals } from "@std/assert"; + * + * const source = new Uint8Array([0, 1, 2, 1, 2, 1, 2, 3]); + * const needle = new Uint8Array([1, 2]); + * + * assertEquals(lastIndexOfNeedle(source, needle, 2), 1); + * assertEquals(lastIndexOfNeedle(source, needle, 6), 5); + * ``` + * Defining a start index will begin the search at the specified index in the + * source array. + */ export function lastIndexOfNeedle(source, needle, start = source.length - 1) { + if (start < 0) { + return -1; + } + if (start >= source.length) { + start = source.length - 1; + } + const e = needle[needle.length - 1]; + for(let i = start; i >= 0; i--){ + if (source[i] !== e) continue; + let matched = 1; + let j = i; + while(matched < needle.length && source[--j] === needle[needle.length - 1 - (i - j)]){ + matched++; + } + if (matched === needle.length) { + return i - needle.length + 1; + } + } + return -1; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvYnl0ZXMvMS4wLjYvbGFzdF9pbmRleF9vZl9uZWVkbGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZSBuZWVkbGUgYXJyYXkgaW4gdGhlIHNvdXJjZVxuICogYXJyYXksIG9yIC0xIGlmIGl0IGlzIG5vdCBwcmVzZW50LlxuICpcbiAqIFRoZSBjb21wbGV4aXR5IG9mIHRoaXMgZnVuY3Rpb24gaXMgYE8oc291cmNlLmxlbmd0aCAqIG5lZWRsZS5sZW5ndGgpYC5cbiAqXG4gKiBAcGFyYW0gc291cmNlIFNvdXJjZSBhcnJheSB0byBjaGVjay5cbiAqIEBwYXJhbSBuZWVkbGUgTmVlZGxlIGFycmF5IHRvIGNoZWNrIGZvci5cbiAqIEBwYXJhbSBzdGFydCBTdGFydCBpbmRleCBpbiB0aGUgc291cmNlIGFycmF5IHRvIGJlZ2luIHRoZSBzZWFyY2guIERlZmF1bHRzIHRvXG4gKiBgc291cmNlLmxlbmd0aCAtIDFgLlxuICogQHJldHVybnMgSW5kZXggb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiB0aGUgbmVlZGxlIGFycmF5IGluIHRoZSBzb3VyY2VcbiAqIGFycmF5LCBvciAtMSBpZiBpdCBpcyBub3QgcHJlc2VudC5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGxhc3RJbmRleE9mTmVlZGxlIH0gZnJvbSBcIkBzdGQvYnl0ZXMvbGFzdC1pbmRleC1vZi1uZWVkbGVcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IHNvdXJjZSA9IG5ldyBVaW50OEFycmF5KFswLCAxLCAyLCAxLCAyLCAxLCAyLCAzXSk7XG4gKiBjb25zdCBuZWVkbGUgPSBuZXcgVWludDhBcnJheShbMSwgMl0pO1xuICogY29uc3Qgbm90TmVlZGxlID0gbmV3IFVpbnQ4QXJyYXkoWzUsIDBdKTtcbiAqXG4gKiBhc3NlcnRFcXVhbHMobGFzdEluZGV4T2ZOZWVkbGUoc291cmNlLCBuZWVkbGUpLCA1KTtcbiAqIGFzc2VydEVxdWFscyhsYXN0SW5kZXhPZk5lZWRsZShzb3VyY2UsIG5vdE5lZWRsZSksIC0xKTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFN0YXJ0IGluZGV4XG4gKiBgYGB0c1xuICogaW1wb3J0IHsgbGFzdEluZGV4T2ZOZWVkbGUgfSBmcm9tIFwiQHN0ZC9ieXRlcy9sYXN0LWluZGV4LW9mLW5lZWRsZVwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3Qgc291cmNlID0gbmV3IFVpbnQ4QXJyYXkoWzAsIDEsIDIsIDEsIDIsIDEsIDIsIDNdKTtcbiAqIGNvbnN0IG5lZWRsZSA9IG5ldyBVaW50OEFycmF5KFsxLCAyXSk7XG4gKlxuICogYXNzZXJ0RXF1YWxzKGxhc3RJbmRleE9mTmVlZGxlKHNvdXJjZSwgbmVlZGxlLCAyKSwgMSk7XG4gKiBhc3NlcnRFcXVhbHMobGFzdEluZGV4T2ZOZWVkbGUoc291cmNlLCBuZWVkbGUsIDYpLCA1KTtcbiAqIGBgYFxuICogRGVmaW5pbmcgYSBzdGFydCBpbmRleCB3aWxsIGJlZ2luIHRoZSBzZWFyY2ggYXQgdGhlIHNwZWNpZmllZCBpbmRleCBpbiB0aGVcbiAqIHNvdXJjZSBhcnJheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxhc3RJbmRleE9mTmVlZGxlKFxuICBzb3VyY2U6IFVpbnQ4QXJyYXksXG4gIG5lZWRsZTogVWludDhBcnJheSxcbiAgc3RhcnQ6IG51bWJlciA9IHNvdXJjZS5sZW5ndGggLSAxLFxuKTogbnVtYmVyIHtcbiAgaWYgKHN0YXJ0IDwgMCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICBpZiAoc3RhcnQgPj0gc291cmNlLmxlbmd0aCkge1xuICAgIHN0YXJ0ID0gc291cmNlLmxlbmd0aCAtIDE7XG4gIH1cbiAgY29uc3QgZSA9IG5lZWRsZVtuZWVkbGUubGVuZ3RoIC0gMV07XG4gIGZvciAobGV0IGkgPSBzdGFydDsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoc291cmNlW2ldICE9PSBlKSBjb250aW51ZTtcbiAgICBsZXQgbWF0Y2hlZCA9IDE7XG4gICAgbGV0IGogPSBpO1xuICAgIHdoaWxlIChcbiAgICAgIG1hdGNoZWQgPCBuZWVkbGUubGVuZ3RoICYmXG4gICAgICBzb3VyY2VbLS1qXSA9PT0gbmVlZGxlW25lZWRsZS5sZW5ndGggLSAxIC0gKGkgLSBqKV1cbiAgICApIHtcbiAgICAgIG1hdGNoZWQrKztcbiAgICB9XG4gICAgaWYgKG1hdGNoZWQgPT09IG5lZWRsZS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBpIC0gbmVlZGxlLmxlbmd0aCArIDE7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0F1Q0MsR0FDRCxPQUFPLFNBQVMsa0JBQ2QsTUFBa0IsRUFDbEIsTUFBa0IsRUFDbEIsUUFBZ0IsT0FBTyxNQUFNLEdBQUcsQ0FBQztFQUVqQyxJQUFJLFFBQVEsR0FBRztJQUNiLE9BQU8sQ0FBQztFQUNWO0VBQ0EsSUFBSSxTQUFTLE9BQU8sTUFBTSxFQUFFO0lBQzFCLFFBQVEsT0FBTyxNQUFNLEdBQUc7RUFDMUI7RUFDQSxNQUFNLElBQUksTUFBTSxDQUFDLE9BQU8sTUFBTSxHQUFHLEVBQUU7RUFDbkMsSUFBSyxJQUFJLElBQUksT0FBTyxLQUFLLEdBQUcsSUFBSztJQUMvQixJQUFJLE1BQU0sQ0FBQyxFQUFFLEtBQUssR0FBRztJQUNyQixJQUFJLFVBQVU7SUFDZCxJQUFJLElBQUk7SUFDUixNQUNFLFVBQVUsT0FBTyxNQUFNLElBQ3ZCLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxNQUFNLENBQUMsT0FBTyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ25EO01BQ0E7SUFDRjtJQUNBLElBQUksWUFBWSxPQUFPLE1BQU0sRUFBRTtNQUM3QixPQUFPLElBQUksT0FBTyxNQUFNLEdBQUc7SUFDN0I7RUFDRjtFQUNBLE9BQU8sQ0FBQztBQUNWIn0= +// denoCacheMetadata=4931381517954871612,1911009538987697348
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/5c777cdacb2b2650a97900385ce3cdd687aba4f7e98960ce3f524ad23becf40c.js b/vendor/gen/https/jsr.io/5c777cdacb2b2650a97900385ce3cdd687aba4f7e98960ce3f524ad23becf40c.js new file mode 100644 index 0000000..7ae5ab3 --- /dev/null +++ b/vendor/gen/https/jsr.io/5c777cdacb2b2650a97900385ce3cdd687aba4f7e98960ce3f524ad23becf40c.js @@ -0,0 +1,28 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { toNamespacedPath as posixToNamespacedPath } from "./posix/to_namespaced_path.ts"; +import { toNamespacedPath as windowsToNamespacedPath } from "./windows/to_namespaced_path.ts"; +/** + * Resolves path to a namespace path. This is a no-op on + * non-windows systems. + * + * @example Usage + * ```ts + * import { toNamespacedPath } from "@std/path/to-namespaced-path"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(toNamespacedPath("C:\\foo\\bar"), "\\\\?\\C:\\foo\\bar"); + * } else { + * assertEquals(toNamespacedPath("/foo/bar"), "/foo/bar"); + * } + * ``` + * + * @param path Path to resolve to namespace. + * @returns The resolved namespace path. + */ export function toNamespacedPath(path) { + return isWindows ? windowsToNamespacedPath(path) : posixToNamespacedPath(path); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS90b19uYW1lc3BhY2VkX3BhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgaXNXaW5kb3dzIH0gZnJvbSBcIi4vX29zLnRzXCI7XG5pbXBvcnQgeyB0b05hbWVzcGFjZWRQYXRoIGFzIHBvc2l4VG9OYW1lc3BhY2VkUGF0aCB9IGZyb20gXCIuL3Bvc2l4L3RvX25hbWVzcGFjZWRfcGF0aC50c1wiO1xuaW1wb3J0IHsgdG9OYW1lc3BhY2VkUGF0aCBhcyB3aW5kb3dzVG9OYW1lc3BhY2VkUGF0aCB9IGZyb20gXCIuL3dpbmRvd3MvdG9fbmFtZXNwYWNlZF9wYXRoLnRzXCI7XG5cbi8qKlxuICogUmVzb2x2ZXMgcGF0aCB0byBhIG5hbWVzcGFjZSBwYXRoLiAgVGhpcyBpcyBhIG5vLW9wIG9uXG4gKiBub24td2luZG93cyBzeXN0ZW1zLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgdG9OYW1lc3BhY2VkUGF0aCB9IGZyb20gXCJAc3RkL3BhdGgvdG8tbmFtZXNwYWNlZC1wYXRoXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBpZiAoRGVuby5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCIpIHtcbiAqICAgYXNzZXJ0RXF1YWxzKHRvTmFtZXNwYWNlZFBhdGgoXCJDOlxcXFxmb29cXFxcYmFyXCIpLCBcIlxcXFxcXFxcP1xcXFxDOlxcXFxmb29cXFxcYmFyXCIpO1xuICogfSBlbHNlIHtcbiAqICAgYXNzZXJ0RXF1YWxzKHRvTmFtZXNwYWNlZFBhdGgoXCIvZm9vL2JhclwiKSwgXCIvZm9vL2JhclwiKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBwYXRoIFBhdGggdG8gcmVzb2x2ZSB0byBuYW1lc3BhY2UuXG4gKiBAcmV0dXJucyBUaGUgcmVzb2x2ZWQgbmFtZXNwYWNlIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b05hbWVzcGFjZWRQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBpc1dpbmRvd3NcbiAgICA/IHdpbmRvd3NUb05hbWVzcGFjZWRQYXRoKHBhdGgpXG4gICAgOiBwb3NpeFRvTmFtZXNwYWNlZFBhdGgocGF0aCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQyxTQUFTLFNBQVMsUUFBUSxXQUFXO0FBQ3JDLFNBQVMsb0JBQW9CLHFCQUFxQixRQUFRLGdDQUFnQztBQUMxRixTQUFTLG9CQUFvQix1QkFBdUIsUUFBUSxrQ0FBa0M7QUFFOUY7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWtCQyxHQUNELE9BQU8sU0FBUyxpQkFBaUIsSUFBWTtFQUMzQyxPQUFPLFlBQ0gsd0JBQXdCLFFBQ3hCLHNCQUFzQjtBQUM1QiJ9 +// denoCacheMetadata=14948196027882635086,13869330107584423005
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/5da4665762c15cd959e16747dc6dcd6acdab04f5b2c4fc2b40c6f81faa998e84.js b/vendor/gen/https/jsr.io/5da4665762c15cd959e16747dc6dcd6acdab04f5b2c4fc2b40c6f81faa998e84.js new file mode 100644 index 0000000..159e62a --- /dev/null +++ b/vendor/gen/https/jsr.io/5da4665762c15cd959e16747dc6dcd6acdab04f5b2c4fc2b40c6f81faa998e84.js @@ -0,0 +1,48 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. +// Alphabet chars. +export const CHAR_UPPERCASE_A = 65; /* A */ +export const CHAR_LOWERCASE_A = 97; /* a */ +export const CHAR_UPPERCASE_Z = 90; /* Z */ +export const CHAR_LOWERCASE_Z = 122; /* z */ +// Non-alphabetic chars. +export const CHAR_DOT = 46; /* . */ +export const CHAR_FORWARD_SLASH = 47; /* / */ +export const CHAR_BACKWARD_SLASH = 92; /* \ */ +export const CHAR_VERTICAL_LINE = 124; /* | */ +export const CHAR_COLON = 58; /* : */ +export const CHAR_QUESTION_MARK = 63; /* ? */ +export const CHAR_UNDERSCORE = 95; /* _ */ +export const CHAR_LINE_FEED = 10; /* \n */ +export const CHAR_CARRIAGE_RETURN = 13; /* \r */ +export const CHAR_TAB = 9; /* \t */ +export const CHAR_FORM_FEED = 12; /* \f */ +export const CHAR_EXCLAMATION_MARK = 33; /* ! */ +export const CHAR_HASH = 35; /* # */ +export const CHAR_SPACE = 32; /* */ +export const CHAR_NO_BREAK_SPACE = 160; /* \u00A0 */ +export const CHAR_ZERO_WIDTH_NOBREAK_SPACE = 65279; /* \uFEFF */ +export const CHAR_LEFT_SQUARE_BRACKET = 91; /* [ */ +export const CHAR_RIGHT_SQUARE_BRACKET = 93; /* ] */ +export const CHAR_LEFT_ANGLE_BRACKET = 60; /* < */ +export const CHAR_RIGHT_ANGLE_BRACKET = 62; /* > */ +export const CHAR_LEFT_CURLY_BRACKET = 123; /* { */ +export const CHAR_RIGHT_CURLY_BRACKET = 125; /* } */ +export const CHAR_HYPHEN_MINUS = 45; /* - */ +export const CHAR_PLUS = 43; /* + */ +export const CHAR_DOUBLE_QUOTE = 34; /* " */ +export const CHAR_SINGLE_QUOTE = 39; /* ' */ +export const CHAR_PERCENT = 37; /* % */ +export const CHAR_SEMICOLON = 59; /* ; */ +export const CHAR_CIRCUMFLEX_ACCENT = 94; /* ^ */ +export const CHAR_GRAVE_ACCENT = 96; /* ` */ +export const CHAR_AT = 64; /* @ */ +export const CHAR_AMPERSAND = 38; /* & */ +export const CHAR_EQUAL = 61; /* = */ +// Digits +export const CHAR_0 = 48; /* 0 */ +export const CHAR_9 = 57; /* 9 */ +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9fY29tbW9uL2NvbnN0YW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IHRoZSBCcm93c2VyaWZ5IGF1dGhvcnMuIE1JVCBMaWNlbnNlLlxuLy8gUG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2Jyb3dzZXJpZnkvcGF0aC1icm93c2VyaWZ5L1xuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vLyBBbHBoYWJldCBjaGFycy5cbmV4cG9ydCBjb25zdCBDSEFSX1VQUEVSQ0FTRV9BID0gNjU7IC8qIEEgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0xPV0VSQ0FTRV9BID0gOTc7IC8qIGEgKi9cbmV4cG9ydCBjb25zdCBDSEFSX1VQUEVSQ0FTRV9aID0gOTA7IC8qIFogKi9cbmV4cG9ydCBjb25zdCBDSEFSX0xPV0VSQ0FTRV9aID0gMTIyOyAvKiB6ICovXG5cbi8vIE5vbi1hbHBoYWJldGljIGNoYXJzLlxuZXhwb3J0IGNvbnN0IENIQVJfRE9UID0gNDY7IC8qIC4gKi9cbmV4cG9ydCBjb25zdCBDSEFSX0ZPUldBUkRfU0xBU0ggPSA0NzsgLyogLyAqL1xuZXhwb3J0IGNvbnN0IENIQVJfQkFDS1dBUkRfU0xBU0ggPSA5MjsgLyogXFwgKi9cbmV4cG9ydCBjb25zdCBDSEFSX1ZFUlRJQ0FMX0xJTkUgPSAxMjQ7IC8qIHwgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0NPTE9OID0gNTg7IC8qIDogKi9cbmV4cG9ydCBjb25zdCBDSEFSX1FVRVNUSU9OX01BUksgPSA2MzsgLyogPyAqL1xuZXhwb3J0IGNvbnN0IENIQVJfVU5ERVJTQ09SRSA9IDk1OyAvKiBfICovXG5leHBvcnQgY29uc3QgQ0hBUl9MSU5FX0ZFRUQgPSAxMDsgLyogXFxuICovXG5leHBvcnQgY29uc3QgQ0hBUl9DQVJSSUFHRV9SRVRVUk4gPSAxMzsgLyogXFxyICovXG5leHBvcnQgY29uc3QgQ0hBUl9UQUIgPSA5OyAvKiBcXHQgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0ZPUk1fRkVFRCA9IDEyOyAvKiBcXGYgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0VYQ0xBTUFUSU9OX01BUksgPSAzMzsgLyogISAqL1xuZXhwb3J0IGNvbnN0IENIQVJfSEFTSCA9IDM1OyAvKiAjICovXG5leHBvcnQgY29uc3QgQ0hBUl9TUEFDRSA9IDMyOyAvKiAgICovXG5leHBvcnQgY29uc3QgQ0hBUl9OT19CUkVBS19TUEFDRSA9IDE2MDsgLyogXFx1MDBBMCAqL1xuZXhwb3J0IGNvbnN0IENIQVJfWkVST19XSURUSF9OT0JSRUFLX1NQQUNFID0gNjUyNzk7IC8qIFxcdUZFRkYgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVQgPSA5MTsgLyogWyAqL1xuZXhwb3J0IGNvbnN0IENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQgPSA5MzsgLyogXSAqL1xuZXhwb3J0IGNvbnN0IENIQVJfTEVGVF9BTkdMRV9CUkFDS0VUID0gNjA7IC8qIDwgKi9cbmV4cG9ydCBjb25zdCBDSEFSX1JJR0hUX0FOR0xFX0JSQUNLRVQgPSA2MjsgLyogPiAqL1xuZXhwb3J0IGNvbnN0IENIQVJfTEVGVF9DVVJMWV9CUkFDS0VUID0gMTIzOyAvKiB7ICovXG5leHBvcnQgY29uc3QgQ0hBUl9SSUdIVF9DVVJMWV9CUkFDS0VUID0gMTI1OyAvKiB9ICovXG5leHBvcnQgY29uc3QgQ0hBUl9IWVBIRU5fTUlOVVMgPSA0NTsgLyogLSAqL1xuZXhwb3J0IGNvbnN0IENIQVJfUExVUyA9IDQzOyAvKiArICovXG5leHBvcnQgY29uc3QgQ0hBUl9ET1VCTEVfUVVPVEUgPSAzNDsgLyogXCIgKi9cbmV4cG9ydCBjb25zdCBDSEFSX1NJTkdMRV9RVU9URSA9IDM5OyAvKiAnICovXG5leHBvcnQgY29uc3QgQ0hBUl9QRVJDRU5UID0gMzc7IC8qICUgKi9cbmV4cG9ydCBjb25zdCBDSEFSX1NFTUlDT0xPTiA9IDU5OyAvKiA7ICovXG5leHBvcnQgY29uc3QgQ0hBUl9DSVJDVU1GTEVYX0FDQ0VOVCA9IDk0OyAvKiBeICovXG5leHBvcnQgY29uc3QgQ0hBUl9HUkFWRV9BQ0NFTlQgPSA5NjsgLyogYCAqL1xuZXhwb3J0IGNvbnN0IENIQVJfQVQgPSA2NDsgLyogQCAqL1xuZXhwb3J0IGNvbnN0IENIQVJfQU1QRVJTQU5EID0gMzg7IC8qICYgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0VRVUFMID0gNjE7IC8qID0gKi9cblxuLy8gRGlnaXRzXG5leHBvcnQgY29uc3QgQ0hBUl8wID0gNDg7IC8qIDAgKi9cbmV4cG9ydCBjb25zdCBDSEFSXzkgPSA1NzsgLyogOSAqL1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxpREFBaUQ7QUFDakQsNkRBQTZEO0FBQzdELHFDQUFxQztBQUVyQyxrQkFBa0I7QUFDbEIsT0FBTyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBSztBQUN6QyxPQUFPLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFLO0FBQ3pDLE9BQU8sTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEtBQUs7QUFDekMsT0FBTyxNQUFNLG1CQUFtQixJQUFJLENBQUMsS0FBSztBQUUxQyx3QkFBd0I7QUFDeEIsT0FBTyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUs7QUFDakMsT0FBTyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBSztBQUMzQyxPQUFPLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFLO0FBQzVDLE9BQU8sTUFBTSxxQkFBcUIsSUFBSSxDQUFDLEtBQUs7QUFDNUMsT0FBTyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQUs7QUFDbkMsT0FBTyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBSztBQUMzQyxPQUFPLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFLO0FBQ3hDLE9BQU8sTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE1BQU07QUFDeEMsT0FBTyxNQUFNLHVCQUF1QixHQUFHLENBQUMsTUFBTTtBQUM5QyxPQUFPLE1BQU0sV0FBVyxFQUFFLENBQUMsTUFBTTtBQUNqQyxPQUFPLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUFNO0FBQ3hDLE9BQU8sTUFBTSx3QkFBd0IsR0FBRyxDQUFDLEtBQUs7QUFDOUMsT0FBTyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQUs7QUFDbEMsT0FBTyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQUs7QUFDbkMsT0FBTyxNQUFNLHNCQUFzQixJQUFJLENBQUMsVUFBVTtBQUNsRCxPQUFPLE1BQU0sZ0NBQWdDLE1BQU0sQ0FBQyxVQUFVO0FBQzlELE9BQU8sTUFBTSwyQkFBMkIsR0FBRyxDQUFDLEtBQUs7QUFDakQsT0FBTyxNQUFNLDRCQUE0QixHQUFHLENBQUMsS0FBSztBQUNsRCxPQUFPLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxLQUFLO0FBQ2hELE9BQU8sTUFBTSwyQkFBMkIsR0FBRyxDQUFDLEtBQUs7QUFDakQsT0FBTyxNQUFNLDBCQUEwQixJQUFJLENBQUMsS0FBSztBQUNqRCxPQUFPLE1BQU0sMkJBQTJCLElBQUksQ0FBQyxLQUFLO0FBQ2xELE9BQU8sTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQUs7QUFDMUMsT0FBTyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQUs7QUFDbEMsT0FBTyxNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBSztBQUMxQyxPQUFPLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFLO0FBQzFDLE9BQU8sTUFBTSxlQUFlLEdBQUcsQ0FBQyxLQUFLO0FBQ3JDLE9BQU8sTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQUs7QUFDdkMsT0FBTyxNQUFNLHlCQUF5QixHQUFHLENBQUMsS0FBSztBQUMvQyxPQUFPLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFLO0FBQzFDLE9BQU8sTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFLO0FBQ2hDLE9BQU8sTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQUs7QUFDdkMsT0FBTyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQUs7QUFFbkMsU0FBUztBQUNULE9BQU8sTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFLO0FBQy9CLE9BQU8sTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFLIn0= +// denoCacheMetadata=2964153292777835285,13068673423762595761
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/5ff5b9a14f6bb57b6e7c7035553a5a8c12be8daff3b2d2f66ddfd87a704ac89e.js b/vendor/gen/https/jsr.io/5ff5b9a14f6bb57b6e7c7035553a5a8c12be8daff3b2d2f66ddfd87a704ac89e.js new file mode 100644 index 0000000..2d20166 --- /dev/null +++ b/vendor/gen/https/jsr.io/5ff5b9a14f6bb57b6e7c7035553a5a8c12be8daff3b2d2f66ddfd87a704ac89e.js @@ -0,0 +1,117 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { CHAR_BACKWARD_SLASH } from "../_common/constants.ts"; +import { resolve } from "./resolve.ts"; +import { assertArgs } from "../_common/relative.ts"; +/** + * Return the relative path from `from` to `to` based on current working directory. + * + * An example in windws, for instance: + * from = 'C:\\orandea\\test\\aaa' + * to = 'C:\\orandea\\impl\\bbb' + * The output of the function should be: '..\\..\\impl\\bbb' + * + * @example Usage + * ```ts + * import { relative } from "@std/path/windows/relative"; + * import { assertEquals } from "@std/assert"; + * + * const relativePath = relative("C:\\foobar\\test\\aaa", "C:\\foobar\\impl\\bbb"); + * assertEquals(relativePath, "..\\..\\impl\\bbb"); + * ``` + * + * @param from The path from which to calculate the relative path + * @param to The path to which to calculate the relative path + * @returns The relative path from `from` to `to` + */ export function relative(from, to) { + assertArgs(from, to); + const fromOrig = resolve(from); + const toOrig = resolve(to); + if (fromOrig === toOrig) return ""; + from = fromOrig.toLowerCase(); + to = toOrig.toLowerCase(); + if (from === to) return ""; + // Trim any leading backslashes + let fromStart = 0; + let fromEnd = from.length; + for(; fromStart < fromEnd; ++fromStart){ + if (from.charCodeAt(fromStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for(; fromEnd - 1 > fromStart; --fromEnd){ + if (from.charCodeAt(fromEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const fromLen = fromEnd - fromStart; + // Trim any leading backslashes + let toStart = 0; + let toEnd = to.length; + for(; toStart < toEnd; ++toStart){ + if (to.charCodeAt(toStart) !== CHAR_BACKWARD_SLASH) break; + } + // Trim trailing backslashes (applicable to UNC paths only) + for(; toEnd - 1 > toStart; --toEnd){ + if (to.charCodeAt(toEnd - 1) !== CHAR_BACKWARD_SLASH) break; + } + const toLen = toEnd - toStart; + // Compare paths to find the longest common path from root + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for(; i <= length; ++i){ + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `from` is the exact base path for `to`. + // For example: from='C:\\foo\\bar'; to='C:\\foo\\bar\\baz' + return toOrig.slice(toStart + i + 1); + } else if (i === 2) { + // We get here if `from` is the device root. + // For example: from='C:\\'; to='C:\\foo' + return toOrig.slice(toStart + i); + } + } + if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) { + // We get here if `to` is the exact base path for `from`. + // For example: from='C:\\foo\\bar'; to='C:\\foo' + lastCommonSep = i; + } else if (i === 2) { + // We get here if `to` is the device root. + // For example: from='C:\\foo\\bar'; to='C:\\' + lastCommonSep = 3; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === CHAR_BACKWARD_SLASH) lastCommonSep = i; + } + // We found a mismatch before the first common path separator was seen, so + // return the original `to`. + if (i !== length && lastCommonSep === -1) { + return toOrig; + } + let out = ""; + if (lastCommonSep === -1) lastCommonSep = 0; + // Generate the relative path based on the path difference between `to` and + // `from` + for(i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i){ + if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) { + if (out.length === 0) out += ".."; + else out += "\\.."; + } + } + // Lastly, append the rest of the destination (`to`) path that comes after + // the common path parts + if (out.length > 0) { + return out + toOrig.slice(toStart + lastCommonSep, toEnd); + } else { + toStart += lastCommonSep; + if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) ++toStart; + return toOrig.slice(toStart, toEnd); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC93aW5kb3dzL3JlbGF0aXZlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IENIQVJfQkFDS1dBUkRfU0xBU0ggfSBmcm9tIFwiLi4vX2NvbW1vbi9jb25zdGFudHMudHNcIjtcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tIFwiLi9yZXNvbHZlLnRzXCI7XG5pbXBvcnQgeyBhc3NlcnRBcmdzIH0gZnJvbSBcIi4uL19jb21tb24vcmVsYXRpdmUudHNcIjtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIHJlbGF0aXZlIHBhdGggZnJvbSBgZnJvbWAgdG8gYHRvYCBiYXNlZCBvbiBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LlxuICpcbiAqIEFuIGV4YW1wbGUgaW4gd2luZHdzLCBmb3IgaW5zdGFuY2U6XG4gKiAgZnJvbSA9ICdDOlxcXFxvcmFuZGVhXFxcXHRlc3RcXFxcYWFhJ1xuICogIHRvID0gJ0M6XFxcXG9yYW5kZWFcXFxcaW1wbFxcXFxiYmInXG4gKiBUaGUgb3V0cHV0IG9mIHRoZSBmdW5jdGlvbiBzaG91bGQgYmU6ICcuLlxcXFwuLlxcXFxpbXBsXFxcXGJiYidcbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHJlbGF0aXZlIH0gZnJvbSBcIkBzdGQvcGF0aC93aW5kb3dzL3JlbGF0aXZlXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCByZWxhdGl2ZVBhdGggPSByZWxhdGl2ZShcIkM6XFxcXGZvb2JhclxcXFx0ZXN0XFxcXGFhYVwiLCBcIkM6XFxcXGZvb2JhclxcXFxpbXBsXFxcXGJiYlwiKTtcbiAqIGFzc2VydEVxdWFscyhyZWxhdGl2ZVBhdGgsIFwiLi5cXFxcLi5cXFxcaW1wbFxcXFxiYmJcIik7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gZnJvbSBUaGUgcGF0aCBmcm9tIHdoaWNoIHRvIGNhbGN1bGF0ZSB0aGUgcmVsYXRpdmUgcGF0aFxuICogQHBhcmFtIHRvIFRoZSBwYXRoIHRvIHdoaWNoIHRvIGNhbGN1bGF0ZSB0aGUgcmVsYXRpdmUgcGF0aFxuICogQHJldHVybnMgVGhlIHJlbGF0aXZlIHBhdGggZnJvbSBgZnJvbWAgdG8gYHRvYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVsYXRpdmUoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKTogc3RyaW5nIHtcbiAgYXNzZXJ0QXJncyhmcm9tLCB0byk7XG5cbiAgY29uc3QgZnJvbU9yaWcgPSByZXNvbHZlKGZyb20pO1xuICBjb25zdCB0b09yaWcgPSByZXNvbHZlKHRvKTtcblxuICBpZiAoZnJvbU9yaWcgPT09IHRvT3JpZykgcmV0dXJuIFwiXCI7XG5cbiAgZnJvbSA9IGZyb21PcmlnLnRvTG93ZXJDYXNlKCk7XG4gIHRvID0gdG9PcmlnLnRvTG93ZXJDYXNlKCk7XG5cbiAgaWYgKGZyb20gPT09IHRvKSByZXR1cm4gXCJcIjtcblxuICAvLyBUcmltIGFueSBsZWFkaW5nIGJhY2tzbGFzaGVzXG4gIGxldCBmcm9tU3RhcnQgPSAwO1xuICBsZXQgZnJvbUVuZCA9IGZyb20ubGVuZ3RoO1xuICBmb3IgKDsgZnJvbVN0YXJ0IDwgZnJvbUVuZDsgKytmcm9tU3RhcnQpIHtcbiAgICBpZiAoZnJvbS5jaGFyQ29kZUF0KGZyb21TdGFydCkgIT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIGJyZWFrO1xuICB9XG4gIC8vIFRyaW0gdHJhaWxpbmcgYmFja3NsYXNoZXMgKGFwcGxpY2FibGUgdG8gVU5DIHBhdGhzIG9ubHkpXG4gIGZvciAoOyBmcm9tRW5kIC0gMSA+IGZyb21TdGFydDsgLS1mcm9tRW5kKSB7XG4gICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tRW5kIC0gMSkgIT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIGJyZWFrO1xuICB9XG4gIGNvbnN0IGZyb21MZW4gPSBmcm9tRW5kIC0gZnJvbVN0YXJ0O1xuXG4gIC8vIFRyaW0gYW55IGxlYWRpbmcgYmFja3NsYXNoZXNcbiAgbGV0IHRvU3RhcnQgPSAwO1xuICBsZXQgdG9FbmQgPSB0by5sZW5ndGg7XG4gIGZvciAoOyB0b1N0YXJ0IDwgdG9FbmQ7ICsrdG9TdGFydCkge1xuICAgIGlmICh0by5jaGFyQ29kZUF0KHRvU3RhcnQpICE9PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSBicmVhaztcbiAgfVxuICAvLyBUcmltIHRyYWlsaW5nIGJhY2tzbGFzaGVzIChhcHBsaWNhYmxlIHRvIFVOQyBwYXRocyBvbmx5KVxuICBmb3IgKDsgdG9FbmQgLSAxID4gdG9TdGFydDsgLS10b0VuZCkge1xuICAgIGlmICh0by5jaGFyQ29kZUF0KHRvRW5kIC0gMSkgIT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIGJyZWFrO1xuICB9XG4gIGNvbnN0IHRvTGVuID0gdG9FbmQgLSB0b1N0YXJ0O1xuXG4gIC8vIENvbXBhcmUgcGF0aHMgdG8gZmluZCB0aGUgbG9uZ2VzdCBjb21tb24gcGF0aCBmcm9tIHJvb3RcbiAgY29uc3QgbGVuZ3RoID0gZnJvbUxlbiA8IHRvTGVuID8gZnJvbUxlbiA6IHRvTGVuO1xuICBsZXQgbGFzdENvbW1vblNlcCA9IC0xO1xuICBsZXQgaSA9IDA7XG4gIGZvciAoOyBpIDw9IGxlbmd0aDsgKytpKSB7XG4gICAgaWYgKGkgPT09IGxlbmd0aCkge1xuICAgICAgaWYgKHRvTGVuID4gbGVuZ3RoKSB7XG4gICAgICAgIGlmICh0by5jaGFyQ29kZUF0KHRvU3RhcnQgKyBpKSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkge1xuICAgICAgICAgIC8vIFdlIGdldCBoZXJlIGlmIGBmcm9tYCBpcyB0aGUgZXhhY3QgYmFzZSBwYXRoIGZvciBgdG9gLlxuICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPSdDOlxcXFxmb29cXFxcYmFyJzsgdG89J0M6XFxcXGZvb1xcXFxiYXJcXFxcYmF6J1xuICAgICAgICAgIHJldHVybiB0b09yaWcuc2xpY2UodG9TdGFydCArIGkgKyAxKTtcbiAgICAgICAgfSBlbHNlIGlmIChpID09PSAyKSB7XG4gICAgICAgICAgLy8gV2UgZ2V0IGhlcmUgaWYgYGZyb21gIGlzIHRoZSBkZXZpY2Ugcm9vdC5cbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nQzpcXFxcJzsgdG89J0M6XFxcXGZvbydcbiAgICAgICAgICByZXR1cm4gdG9PcmlnLnNsaWNlKHRvU3RhcnQgKyBpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGZyb21MZW4gPiBsZW5ndGgpIHtcbiAgICAgICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQgKyBpKSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkge1xuICAgICAgICAgIC8vIFdlIGdldCBoZXJlIGlmIGB0b2AgaXMgdGhlIGV4YWN0IGJhc2UgcGF0aCBmb3IgYGZyb21gLlxuICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPSdDOlxcXFxmb29cXFxcYmFyJzsgdG89J0M6XFxcXGZvbydcbiAgICAgICAgICBsYXN0Q29tbW9uU2VwID0gaTtcbiAgICAgICAgfSBlbHNlIGlmIChpID09PSAyKSB7XG4gICAgICAgICAgLy8gV2UgZ2V0IGhlcmUgaWYgYHRvYCBpcyB0aGUgZGV2aWNlIHJvb3QuXG4gICAgICAgICAgLy8gRm9yIGV4YW1wbGU6IGZyb209J0M6XFxcXGZvb1xcXFxiYXInOyB0bz0nQzpcXFxcJ1xuICAgICAgICAgIGxhc3RDb21tb25TZXAgPSAzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY29uc3QgZnJvbUNvZGUgPSBmcm9tLmNoYXJDb2RlQXQoZnJvbVN0YXJ0ICsgaSk7XG4gICAgY29uc3QgdG9Db2RlID0gdG8uY2hhckNvZGVBdCh0b1N0YXJ0ICsgaSk7XG4gICAgaWYgKGZyb21Db2RlICE9PSB0b0NvZGUpIGJyZWFrO1xuICAgIGVsc2UgaWYgKGZyb21Db2RlID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSBsYXN0Q29tbW9uU2VwID0gaTtcbiAgfVxuXG4gIC8vIFdlIGZvdW5kIGEgbWlzbWF0Y2ggYmVmb3JlIHRoZSBmaXJzdCBjb21tb24gcGF0aCBzZXBhcmF0b3Igd2FzIHNlZW4sIHNvXG4gIC8vIHJldHVybiB0aGUgb3JpZ2luYWwgYHRvYC5cbiAgaWYgKGkgIT09IGxlbmd0aCAmJiBsYXN0Q29tbW9uU2VwID09PSAtMSkge1xuICAgIHJldHVybiB0b09yaWc7XG4gIH1cblxuICBsZXQgb3V0ID0gXCJcIjtcbiAgaWYgKGxhc3RDb21tb25TZXAgPT09IC0xKSBsYXN0Q29tbW9uU2VwID0gMDtcbiAgLy8gR2VuZXJhdGUgdGhlIHJlbGF0aXZlIHBhdGggYmFzZWQgb24gdGhlIHBhdGggZGlmZmVyZW5jZSBiZXR3ZWVuIGB0b2AgYW5kXG4gIC8vIGBmcm9tYFxuICBmb3IgKGkgPSBmcm9tU3RhcnQgKyBsYXN0Q29tbW9uU2VwICsgMTsgaSA8PSBmcm9tRW5kOyArK2kpIHtcbiAgICBpZiAoaSA9PT0gZnJvbUVuZCB8fCBmcm9tLmNoYXJDb2RlQXQoaSkgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHtcbiAgICAgIGlmIChvdXQubGVuZ3RoID09PSAwKSBvdXQgKz0gXCIuLlwiO1xuICAgICAgZWxzZSBvdXQgKz0gXCJcXFxcLi5cIjtcbiAgICB9XG4gIH1cblxuICAvLyBMYXN0bHksIGFwcGVuZCB0aGUgcmVzdCBvZiB0aGUgZGVzdGluYXRpb24gKGB0b2ApIHBhdGggdGhhdCBjb21lcyBhZnRlclxuICAvLyB0aGUgY29tbW9uIHBhdGggcGFydHNcbiAgaWYgKG91dC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIG91dCArIHRvT3JpZy5zbGljZSh0b1N0YXJ0ICsgbGFzdENvbW1vblNlcCwgdG9FbmQpO1xuICB9IGVsc2Uge1xuICAgIHRvU3RhcnQgKz0gbGFzdENvbW1vblNlcDtcbiAgICBpZiAodG9PcmlnLmNoYXJDb2RlQXQodG9TdGFydCkgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpICsrdG9TdGFydDtcbiAgICByZXR1cm4gdG9PcmlnLnNsaWNlKHRvU3RhcnQsIHRvRW5kKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxxQ0FBcUM7QUFFckMsU0FBUyxtQkFBbUIsUUFBUSwwQkFBMEI7QUFDOUQsU0FBUyxPQUFPLFFBQVEsZUFBZTtBQUN2QyxTQUFTLFVBQVUsUUFBUSx5QkFBeUI7QUFFcEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBb0JDLEdBQ0QsT0FBTyxTQUFTLFNBQVMsSUFBWSxFQUFFLEVBQVU7RUFDL0MsV0FBVyxNQUFNO0VBRWpCLE1BQU0sV0FBVyxRQUFRO0VBQ3pCLE1BQU0sU0FBUyxRQUFRO0VBRXZCLElBQUksYUFBYSxRQUFRLE9BQU87RUFFaEMsT0FBTyxTQUFTLFdBQVc7RUFDM0IsS0FBSyxPQUFPLFdBQVc7RUFFdkIsSUFBSSxTQUFTLElBQUksT0FBTztFQUV4QiwrQkFBK0I7RUFDL0IsSUFBSSxZQUFZO0VBQ2hCLElBQUksVUFBVSxLQUFLLE1BQU07RUFDekIsTUFBTyxZQUFZLFNBQVMsRUFBRSxVQUFXO0lBQ3ZDLElBQUksS0FBSyxVQUFVLENBQUMsZUFBZSxxQkFBcUI7RUFDMUQ7RUFDQSwyREFBMkQ7RUFDM0QsTUFBTyxVQUFVLElBQUksV0FBVyxFQUFFLFFBQVM7SUFDekMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxVQUFVLE9BQU8scUJBQXFCO0VBQzVEO0VBQ0EsTUFBTSxVQUFVLFVBQVU7RUFFMUIsK0JBQStCO0VBQy9CLElBQUksVUFBVTtFQUNkLElBQUksUUFBUSxHQUFHLE1BQU07RUFDckIsTUFBTyxVQUFVLE9BQU8sRUFBRSxRQUFTO0lBQ2pDLElBQUksR0FBRyxVQUFVLENBQUMsYUFBYSxxQkFBcUI7RUFDdEQ7RUFDQSwyREFBMkQ7RUFDM0QsTUFBTyxRQUFRLElBQUksU0FBUyxFQUFFLE1BQU87SUFDbkMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLE9BQU8scUJBQXFCO0VBQ3hEO0VBQ0EsTUFBTSxRQUFRLFFBQVE7RUFFdEIsMERBQTBEO0VBQzFELE1BQU0sU0FBUyxVQUFVLFFBQVEsVUFBVTtFQUMzQyxJQUFJLGdCQUFnQixDQUFDO0VBQ3JCLElBQUksSUFBSTtFQUNSLE1BQU8sS0FBSyxRQUFRLEVBQUUsRUFBRztJQUN2QixJQUFJLE1BQU0sUUFBUTtNQUNoQixJQUFJLFFBQVEsUUFBUTtRQUNsQixJQUFJLEdBQUcsVUFBVSxDQUFDLFVBQVUsT0FBTyxxQkFBcUI7VUFDdEQseURBQXlEO1VBQ3pELDJEQUEyRDtVQUMzRCxPQUFPLE9BQU8sS0FBSyxDQUFDLFVBQVUsSUFBSTtRQUNwQyxPQUFPLElBQUksTUFBTSxHQUFHO1VBQ2xCLDRDQUE0QztVQUM1Qyx5Q0FBeUM7VUFDekMsT0FBTyxPQUFPLEtBQUssQ0FBQyxVQUFVO1FBQ2hDO01BQ0Y7TUFDQSxJQUFJLFVBQVUsUUFBUTtRQUNwQixJQUFJLEtBQUssVUFBVSxDQUFDLFlBQVksT0FBTyxxQkFBcUI7VUFDMUQseURBQXlEO1VBQ3pELGlEQUFpRDtVQUNqRCxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLE1BQU0sR0FBRztVQUNsQiwwQ0FBMEM7VUFDMUMsOENBQThDO1VBQzlDLGdCQUFnQjtRQUNsQjtNQUNGO01BQ0E7SUFDRjtJQUNBLE1BQU0sV0FBVyxLQUFLLFVBQVUsQ0FBQyxZQUFZO0lBQzdDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxVQUFVO0lBQ3ZDLElBQUksYUFBYSxRQUFRO1NBQ3BCLElBQUksYUFBYSxxQkFBcUIsZ0JBQWdCO0VBQzdEO0VBRUEsMEVBQTBFO0VBQzFFLDRCQUE0QjtFQUM1QixJQUFJLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxHQUFHO0lBQ3hDLE9BQU87RUFDVDtFQUVBLElBQUksTUFBTTtFQUNWLElBQUksa0JBQWtCLENBQUMsR0FBRyxnQkFBZ0I7RUFDMUMsMkVBQTJFO0VBQzNFLFNBQVM7RUFDVCxJQUFLLElBQUksWUFBWSxnQkFBZ0IsR0FBRyxLQUFLLFNBQVMsRUFBRSxFQUFHO0lBQ3pELElBQUksTUFBTSxXQUFXLEtBQUssVUFBVSxDQUFDLE9BQU8scUJBQXFCO01BQy9ELElBQUksSUFBSSxNQUFNLEtBQUssR0FBRyxPQUFPO1dBQ3hCLE9BQU87SUFDZDtFQUNGO0VBRUEsMEVBQTBFO0VBQzFFLHdCQUF3QjtFQUN4QixJQUFJLElBQUksTUFBTSxHQUFHLEdBQUc7SUFDbEIsT0FBTyxNQUFNLE9BQU8sS0FBSyxDQUFDLFVBQVUsZUFBZTtFQUNyRCxPQUFPO0lBQ0wsV0FBVztJQUNYLElBQUksT0FBTyxVQUFVLENBQUMsYUFBYSxxQkFBcUIsRUFBRTtJQUMxRCxPQUFPLE9BQU8sS0FBSyxDQUFDLFNBQVM7RUFDL0I7QUFDRiJ9 +// denoCacheMetadata=12358683919675001962,5129319053798673887
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/60a4950732b161230d657ba32a1f0423c16e3e80101ee98f7220f201b665e466.js b/vendor/gen/https/jsr.io/60a4950732b161230d657ba32a1f0423c16e3e80101ee98f7220f201b665e466.js new file mode 100644 index 0000000..5e28599 --- /dev/null +++ b/vendor/gen/https/jsr.io/60a4950732b161230d657ba32a1f0423c16e3e80101ee98f7220f201b665e466.js @@ -0,0 +1,63 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. +import { CHAR_DOT, CHAR_FORWARD_SLASH } from "./constants.ts"; +// Resolves . and .. elements in a path with directory names +export function normalizeString(path, allowAboveRoot, separator, isPathSeparator) { + let res = ""; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code; + for(let i = 0; i <= path.length; ++i){ + if (i < path.length) code = path.charCodeAt(i); + else if (isPathSeparator(code)) break; + else code = CHAR_FORWARD_SLASH; + if (isPathSeparator(code)) { + if (lastSlash === i - 1 || dots === 1) { + // NOOP + } else if (lastSlash !== i - 1 && dots === 2) { + if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== CHAR_DOT || res.charCodeAt(res.length - 2) !== CHAR_DOT) { + if (res.length > 2) { + const lastSlashIndex = res.lastIndexOf(separator); + if (lastSlashIndex === -1) { + res = ""; + lastSegmentLength = 0; + } else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf(separator); + } + lastSlash = i; + dots = 0; + continue; + } else if (res.length === 2 || res.length === 1) { + res = ""; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + if (res.length > 0) res += `${separator}..`; + else res = ".."; + lastSegmentLength = 2; + } + } else { + if (res.length > 0) res += separator + path.slice(lastSlash + 1, i); + else res = path.slice(lastSlash + 1, i); + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } else if (code === CHAR_DOT && dots !== -1) { + ++dots; + } else { + dots = -1; + } + } + return res; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9fY29tbW9uL25vcm1hbGl6ZV9zdHJpbmcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cbi8vIFBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9icm93c2VyaWZ5L3BhdGgtYnJvd3NlcmlmeS9cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgQ0hBUl9ET1QsIENIQVJfRk9SV0FSRF9TTEFTSCB9IGZyb20gXCIuL2NvbnN0YW50cy50c1wiO1xuXG4vLyBSZXNvbHZlcyAuIGFuZCAuLiBlbGVtZW50cyBpbiBhIHBhdGggd2l0aCBkaXJlY3RvcnkgbmFtZXNcbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTdHJpbmcoXG4gIHBhdGg6IHN0cmluZyxcbiAgYWxsb3dBYm92ZVJvb3Q6IGJvb2xlYW4sXG4gIHNlcGFyYXRvcjogc3RyaW5nLFxuICBpc1BhdGhTZXBhcmF0b3I6IChjb2RlOiBudW1iZXIpID0+IGJvb2xlYW4sXG4pOiBzdHJpbmcge1xuICBsZXQgcmVzID0gXCJcIjtcbiAgbGV0IGxhc3RTZWdtZW50TGVuZ3RoID0gMDtcbiAgbGV0IGxhc3RTbGFzaCA9IC0xO1xuICBsZXQgZG90cyA9IDA7XG4gIGxldCBjb2RlOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIGZvciAobGV0IGkgPSAwOyBpIDw9IHBhdGgubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoaSA8IHBhdGgubGVuZ3RoKSBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgIGVsc2UgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlISkpIGJyZWFrO1xuICAgIGVsc2UgY29kZSA9IENIQVJfRk9SV0FSRF9TTEFTSDtcblxuICAgIGlmIChpc1BhdGhTZXBhcmF0b3IoY29kZSEpKSB7XG4gICAgICBpZiAobGFzdFNsYXNoID09PSBpIC0gMSB8fCBkb3RzID09PSAxKSB7XG4gICAgICAgIC8vIE5PT1BcbiAgICAgIH0gZWxzZSBpZiAobGFzdFNsYXNoICE9PSBpIC0gMSAmJiBkb3RzID09PSAyKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXMubGVuZ3RoIDwgMiB8fFxuICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoICE9PSAyIHx8XG4gICAgICAgICAgcmVzLmNoYXJDb2RlQXQocmVzLmxlbmd0aCAtIDEpICE9PSBDSEFSX0RPVCB8fFxuICAgICAgICAgIHJlcy5jaGFyQ29kZUF0KHJlcy5sZW5ndGggLSAyKSAhPT0gQ0hBUl9ET1RcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICBjb25zdCBsYXN0U2xhc2hJbmRleCA9IHJlcy5sYXN0SW5kZXhPZihzZXBhcmF0b3IpO1xuICAgICAgICAgICAgaWYgKGxhc3RTbGFzaEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICByZXMgPSBcIlwiO1xuICAgICAgICAgICAgICBsYXN0U2VnbWVudExlbmd0aCA9IDA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXMgPSByZXMuc2xpY2UoMCwgbGFzdFNsYXNoSW5kZXgpO1xuICAgICAgICAgICAgICBsYXN0U2VnbWVudExlbmd0aCA9IHJlcy5sZW5ndGggLSAxIC0gcmVzLmxhc3RJbmRleE9mKHNlcGFyYXRvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYXN0U2xhc2ggPSBpO1xuICAgICAgICAgICAgZG90cyA9IDA7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5sZW5ndGggPT09IDIgfHwgcmVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcmVzID0gXCJcIjtcbiAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMDtcbiAgICAgICAgICAgIGxhc3RTbGFzaCA9IGk7XG4gICAgICAgICAgICBkb3RzID0gMDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoYWxsb3dBYm92ZVJvb3QpIHtcbiAgICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHJlcyArPSBgJHtzZXBhcmF0b3J9Li5gO1xuICAgICAgICAgIGVsc2UgcmVzID0gXCIuLlwiO1xuICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAwKSByZXMgKz0gc2VwYXJhdG9yICsgcGF0aC5zbGljZShsYXN0U2xhc2ggKyAxLCBpKTtcbiAgICAgICAgZWxzZSByZXMgPSBwYXRoLnNsaWNlKGxhc3RTbGFzaCArIDEsIGkpO1xuICAgICAgICBsYXN0U2VnbWVudExlbmd0aCA9IGkgLSBsYXN0U2xhc2ggLSAxO1xuICAgICAgfVxuICAgICAgbGFzdFNsYXNoID0gaTtcbiAgICAgIGRvdHMgPSAwO1xuICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gQ0hBUl9ET1QgJiYgZG90cyAhPT0gLTEpIHtcbiAgICAgICsrZG90cztcbiAgICB9IGVsc2Uge1xuICAgICAgZG90cyA9IC0xO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxpREFBaUQ7QUFDakQsNkRBQTZEO0FBQzdELHFDQUFxQztBQUVyQyxTQUFTLFFBQVEsRUFBRSxrQkFBa0IsUUFBUSxpQkFBaUI7QUFFOUQsNERBQTREO0FBQzVELE9BQU8sU0FBUyxnQkFDZCxJQUFZLEVBQ1osY0FBdUIsRUFDdkIsU0FBaUIsRUFDakIsZUFBMEM7RUFFMUMsSUFBSSxNQUFNO0VBQ1YsSUFBSSxvQkFBb0I7RUFDeEIsSUFBSSxZQUFZLENBQUM7RUFDakIsSUFBSSxPQUFPO0VBQ1gsSUFBSTtFQUNKLElBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxLQUFLLE1BQU0sRUFBRSxFQUFFLEVBQUc7SUFDckMsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFLE9BQU8sS0FBSyxVQUFVLENBQUM7U0FDdkMsSUFBSSxnQkFBZ0IsT0FBUTtTQUM1QixPQUFPO0lBRVosSUFBSSxnQkFBZ0IsT0FBUTtNQUMxQixJQUFJLGNBQWMsSUFBSSxLQUFLLFNBQVMsR0FBRztNQUNyQyxPQUFPO01BQ1QsT0FBTyxJQUFJLGNBQWMsSUFBSSxLQUFLLFNBQVMsR0FBRztRQUM1QyxJQUNFLElBQUksTUFBTSxHQUFHLEtBQ2Isc0JBQXNCLEtBQ3RCLElBQUksVUFBVSxDQUFDLElBQUksTUFBTSxHQUFHLE9BQU8sWUFDbkMsSUFBSSxVQUFVLENBQUMsSUFBSSxNQUFNLEdBQUcsT0FBTyxVQUNuQztVQUNBLElBQUksSUFBSSxNQUFNLEdBQUcsR0FBRztZQUNsQixNQUFNLGlCQUFpQixJQUFJLFdBQVcsQ0FBQztZQUN2QyxJQUFJLG1CQUFtQixDQUFDLEdBQUc7Y0FDekIsTUFBTTtjQUNOLG9CQUFvQjtZQUN0QixPQUFPO2NBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHO2NBQ25CLG9CQUFvQixJQUFJLE1BQU0sR0FBRyxJQUFJLElBQUksV0FBVyxDQUFDO1lBQ3ZEO1lBQ0EsWUFBWTtZQUNaLE9BQU87WUFDUDtVQUNGLE9BQU8sSUFBSSxJQUFJLE1BQU0sS0FBSyxLQUFLLElBQUksTUFBTSxLQUFLLEdBQUc7WUFDL0MsTUFBTTtZQUNOLG9CQUFvQjtZQUNwQixZQUFZO1lBQ1osT0FBTztZQUNQO1VBQ0Y7UUFDRjtRQUNBLElBQUksZ0JBQWdCO1VBQ2xCLElBQUksSUFBSSxNQUFNLEdBQUcsR0FBRyxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7ZUFDdEMsTUFBTTtVQUNYLG9CQUFvQjtRQUN0QjtNQUNGLE9BQU87UUFDTCxJQUFJLElBQUksTUFBTSxHQUFHLEdBQUcsT0FBTyxZQUFZLEtBQUssS0FBSyxDQUFDLFlBQVksR0FBRzthQUM1RCxNQUFNLEtBQUssS0FBSyxDQUFDLFlBQVksR0FBRztRQUNyQyxvQkFBb0IsSUFBSSxZQUFZO01BQ3RDO01BQ0EsWUFBWTtNQUNaLE9BQU87SUFDVCxPQUFPLElBQUksU0FBUyxZQUFZLFNBQVMsQ0FBQyxHQUFHO01BQzNDLEVBQUU7SUFDSixPQUFPO01BQ0wsT0FBTyxDQUFDO0lBQ1Y7RUFDRjtFQUNBLE9BQU87QUFDVCJ9 +// denoCacheMetadata=8989519023525258381,5659464771974533758
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/6285dfaf21300225c1ee1691dec58f0fe9dabb33adb0e4cf6790798b02c1111e.js b/vendor/gen/https/jsr.io/6285dfaf21300225c1ee1691dec58f0fe9dabb33adb0e4cf6790798b02c1111e.js new file mode 100644 index 0000000..f62c1f3 --- /dev/null +++ b/vendor/gen/https/jsr.io/6285dfaf21300225c1ee1691dec58f0fe9dabb33adb0e4cf6790798b02c1111e.js @@ -0,0 +1,60 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +import { dirname } from "jsr:@std/path@^1.0.9/dirname"; +import { ensureDir, ensureDirSync } from "./ensure_dir.ts"; +import { toPathString } from "./_to_path_string.ts"; +/** + * Asynchronously ensures that the hard link exists. + * + * If the parent directories for the hard link do not exist, they are created. + * + * Requires `--allow-read` and `--allow-write` permissions. + * + * @see {@link https://docs.deno.com/runtime/manual/basics/permissions#file-system-access} + * for more information on Deno's permissions system. + * + * @param src The source file path as a string or URL. Directory hard links are + * not allowed. + * @param dest The destination link path as a string or URL. + * + * @returns A void promise that resolves once the hard link exists. + * + * @example Usage + * ```ts ignore + * import { ensureLink } from "@std/fs/ensure-link"; + * + * await ensureLink("./folder/targetFile.dat", "./folder/targetFile.link.dat"); + * ``` + */ export async function ensureLink(src, dest) { + dest = toPathString(dest); + await ensureDir(dirname(dest)); + await Deno.link(toPathString(src), dest); +} +/** + * Synchronously ensures that the hard link exists. + * + * If the parent directories for the hard link do not exist, they are created. + * + * Requires `--allow-read` and `--allow-write` permissions. + * + * @see {@link https://docs.deno.com/runtime/manual/basics/permissions#file-system-access} + * for more information on Deno's permissions system. + * + * @param src The source file path as a string or URL. Directory hard links are + * not allowed. + * @param dest The destination link path as a string or URL. + * + * @returns A void value that returns once the hard link exists. + * + * @example Usage + * ```ts ignore + * import { ensureLinkSync } from "@std/fs/ensure-link"; + * + * ensureLinkSync("./folder/targetFile.dat", "./folder/targetFile.link.dat"); + * ``` + */ export function ensureLinkSync(src, dest) { + dest = toPathString(dest); + ensureDirSync(dirname(dest)); + Deno.linkSync(toPathString(src), dest); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnMvMS4wLjE3L2Vuc3VyZV9saW5rLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG5pbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSBcImpzcjpAc3RkL3BhdGhAXjEuMC45L2Rpcm5hbWVcIjtcbmltcG9ydCB7IGVuc3VyZURpciwgZW5zdXJlRGlyU3luYyB9IGZyb20gXCIuL2Vuc3VyZV9kaXIudHNcIjtcbmltcG9ydCB7IHRvUGF0aFN0cmluZyB9IGZyb20gXCIuL190b19wYXRoX3N0cmluZy50c1wiO1xuXG4vKipcbiAqIEFzeW5jaHJvbm91c2x5IGVuc3VyZXMgdGhhdCB0aGUgaGFyZCBsaW5rIGV4aXN0cy5cbiAqXG4gKiBJZiB0aGUgcGFyZW50IGRpcmVjdG9yaWVzIGZvciB0aGUgaGFyZCBsaW5rIGRvIG5vdCBleGlzdCwgdGhleSBhcmUgY3JlYXRlZC5cbiAqXG4gKiBSZXF1aXJlcyBgLS1hbGxvdy1yZWFkYCBhbmQgYC0tYWxsb3ctd3JpdGVgIHBlcm1pc3Npb25zLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZG9jcy5kZW5vLmNvbS9ydW50aW1lL21hbnVhbC9iYXNpY3MvcGVybWlzc2lvbnMjZmlsZS1zeXN0ZW0tYWNjZXNzfVxuICogZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gRGVubydzIHBlcm1pc3Npb25zIHN5c3RlbS5cbiAqXG4gKiBAcGFyYW0gc3JjIFRoZSBzb3VyY2UgZmlsZSBwYXRoIGFzIGEgc3RyaW5nIG9yIFVSTC4gRGlyZWN0b3J5IGhhcmQgbGlua3MgYXJlXG4gKiBub3QgYWxsb3dlZC5cbiAqIEBwYXJhbSBkZXN0IFRoZSBkZXN0aW5hdGlvbiBsaW5rIHBhdGggYXMgYSBzdHJpbmcgb3IgVVJMLlxuICpcbiAqIEByZXR1cm5zIEEgdm9pZCBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgaGFyZCBsaW5rIGV4aXN0cy5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHMgaWdub3JlXG4gKiBpbXBvcnQgeyBlbnN1cmVMaW5rIH0gZnJvbSBcIkBzdGQvZnMvZW5zdXJlLWxpbmtcIjtcbiAqXG4gKiBhd2FpdCBlbnN1cmVMaW5rKFwiLi9mb2xkZXIvdGFyZ2V0RmlsZS5kYXRcIiwgXCIuL2ZvbGRlci90YXJnZXRGaWxlLmxpbmsuZGF0XCIpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbnN1cmVMaW5rKHNyYzogc3RyaW5nIHwgVVJMLCBkZXN0OiBzdHJpbmcgfCBVUkwpIHtcbiAgZGVzdCA9IHRvUGF0aFN0cmluZyhkZXN0KTtcbiAgYXdhaXQgZW5zdXJlRGlyKGRpcm5hbWUoZGVzdCkpO1xuXG4gIGF3YWl0IERlbm8ubGluayh0b1BhdGhTdHJpbmcoc3JjKSwgZGVzdCk7XG59XG5cbi8qKlxuICogU3luY2hyb25vdXNseSBlbnN1cmVzIHRoYXQgdGhlIGhhcmQgbGluayBleGlzdHMuXG4gKlxuICogSWYgdGhlIHBhcmVudCBkaXJlY3RvcmllcyBmb3IgdGhlIGhhcmQgbGluayBkbyBub3QgZXhpc3QsIHRoZXkgYXJlIGNyZWF0ZWQuXG4gKlxuICogUmVxdWlyZXMgYC0tYWxsb3ctcmVhZGAgYW5kIGAtLWFsbG93LXdyaXRlYCBwZXJtaXNzaW9ucy5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2RvY3MuZGVuby5jb20vcnVudGltZS9tYW51YWwvYmFzaWNzL3Blcm1pc3Npb25zI2ZpbGUtc3lzdGVtLWFjY2Vzc31cbiAqIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIERlbm8ncyBwZXJtaXNzaW9ucyBzeXN0ZW0uXG4gKlxuICogQHBhcmFtIHNyYyBUaGUgc291cmNlIGZpbGUgcGF0aCBhcyBhIHN0cmluZyBvciBVUkwuIERpcmVjdG9yeSBoYXJkIGxpbmtzIGFyZVxuICogbm90IGFsbG93ZWQuXG4gKiBAcGFyYW0gZGVzdCBUaGUgZGVzdGluYXRpb24gbGluayBwYXRoIGFzIGEgc3RyaW5nIG9yIFVSTC5cbiAqXG4gKiBAcmV0dXJucyBBIHZvaWQgdmFsdWUgdGhhdCByZXR1cm5zIG9uY2UgdGhlIGhhcmQgbGluayBleGlzdHMuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgZW5zdXJlTGlua1N5bmMgfSBmcm9tIFwiQHN0ZC9mcy9lbnN1cmUtbGlua1wiO1xuICpcbiAqIGVuc3VyZUxpbmtTeW5jKFwiLi9mb2xkZXIvdGFyZ2V0RmlsZS5kYXRcIiwgXCIuL2ZvbGRlci90YXJnZXRGaWxlLmxpbmsuZGF0XCIpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVMaW5rU3luYyhzcmM6IHN0cmluZyB8IFVSTCwgZGVzdDogc3RyaW5nIHwgVVJMKSB7XG4gIGRlc3QgPSB0b1BhdGhTdHJpbmcoZGVzdCk7XG4gIGVuc3VyZURpclN5bmMoZGlybmFtZShkZXN0KSk7XG5cbiAgRGVuby5saW5rU3luYyh0b1BhdGhTdHJpbmcoc3JjKSwgZGVzdCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELFNBQVMsT0FBTyxRQUFRLCtCQUErQjtBQUN2RCxTQUFTLFNBQVMsRUFBRSxhQUFhLFFBQVEsa0JBQWtCO0FBQzNELFNBQVMsWUFBWSxRQUFRLHVCQUF1QjtBQUVwRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXNCQyxHQUNELE9BQU8sZUFBZSxXQUFXLEdBQWlCLEVBQUUsSUFBa0I7RUFDcEUsT0FBTyxhQUFhO0VBQ3BCLE1BQU0sVUFBVSxRQUFRO0VBRXhCLE1BQU0sS0FBSyxJQUFJLENBQUMsYUFBYSxNQUFNO0FBQ3JDO0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FzQkMsR0FDRCxPQUFPLFNBQVMsZUFBZSxHQUFpQixFQUFFLElBQWtCO0VBQ2xFLE9BQU8sYUFBYTtFQUNwQixjQUFjLFFBQVE7RUFFdEIsS0FBSyxRQUFRLENBQUMsYUFBYSxNQUFNO0FBQ25DIn0= +// denoCacheMetadata=885851216026383931,12865618983262542485
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/6309c5636a1829309dd3307c9db57a6c498ddace1c314f49005ec1e853b8a559.js b/vendor/gen/https/jsr.io/6309c5636a1829309dd3307c9db57a6c498ddace1c314f49005ec1e853b8a559.js new file mode 100644 index 0000000..b3d5168 --- /dev/null +++ b/vendor/gen/https/jsr.io/6309c5636a1829309dd3307c9db57a6c498ddace1c314f49005ec1e853b8a559.js @@ -0,0 +1,44 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { assertArgs, lastPathSegment, stripSuffix } from "../_common/basename.ts"; +import { CHAR_COLON } from "../_common/constants.ts"; +import { stripTrailingSeparators } from "../_common/strip_trailing_separators.ts"; +import { isPathSeparator, isWindowsDeviceRoot } from "./_util.ts"; +/** + * Return the last portion of a `path`. + * Trailing directory separators are ignored, and optional suffix is removed. + * + * @example Usage + * ```ts + * import { basename } from "@std/path/windows/basename"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(basename("C:\\user\\Documents\\"), "Documents"); + * assertEquals(basename("C:\\user\\Documents\\image.png"), "image.png"); + * assertEquals(basename("C:\\user\\Documents\\image.png", ".png"), "image"); + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `basename` from `@std/path/windows/unstable-basename`. + * + * @param path The path to extract the name from. + * @param suffix The suffix to remove from extracted name. + * @returns The extracted name. + */ export function basename(path, suffix = "") { + assertArgs(path, suffix); + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + let start = 0; + if (path.length >= 2) { + const drive = path.charCodeAt(0); + if (isWindowsDeviceRoot(drive)) { + if (path.charCodeAt(1) === CHAR_COLON) start = 2; + } + } + const lastSegment = lastPathSegment(path, isPathSeparator, start); + const strippedSegment = stripTrailingSeparators(lastSegment, isPathSeparator); + return suffix ? stripSuffix(strippedSegment, suffix) : strippedSegment; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC93aW5kb3dzL2Jhc2VuYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7XG4gIGFzc2VydEFyZ3MsXG4gIGxhc3RQYXRoU2VnbWVudCxcbiAgc3RyaXBTdWZmaXgsXG59IGZyb20gXCIuLi9fY29tbW9uL2Jhc2VuYW1lLnRzXCI7XG5pbXBvcnQgeyBDSEFSX0NPTE9OIH0gZnJvbSBcIi4uL19jb21tb24vY29uc3RhbnRzLnRzXCI7XG5pbXBvcnQgeyBzdHJpcFRyYWlsaW5nU2VwYXJhdG9ycyB9IGZyb20gXCIuLi9fY29tbW9uL3N0cmlwX3RyYWlsaW5nX3NlcGFyYXRvcnMudHNcIjtcbmltcG9ydCB7IGlzUGF0aFNlcGFyYXRvciwgaXNXaW5kb3dzRGV2aWNlUm9vdCB9IGZyb20gXCIuL191dGlsLnRzXCI7XG5cbi8qKlxuICogUmV0dXJuIHRoZSBsYXN0IHBvcnRpb24gb2YgYSBgcGF0aGAuXG4gKiBUcmFpbGluZyBkaXJlY3Rvcnkgc2VwYXJhdG9ycyBhcmUgaWdub3JlZCwgYW5kIG9wdGlvbmFsIHN1ZmZpeCBpcyByZW1vdmVkLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgYmFzZW5hbWUgfSBmcm9tIFwiQHN0ZC9wYXRoL3dpbmRvd3MvYmFzZW5hbWVcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydEVxdWFscyhiYXNlbmFtZShcIkM6XFxcXHVzZXJcXFxcRG9jdW1lbnRzXFxcXFwiKSwgXCJEb2N1bWVudHNcIik7XG4gKiBhc3NlcnRFcXVhbHMoYmFzZW5hbWUoXCJDOlxcXFx1c2VyXFxcXERvY3VtZW50c1xcXFxpbWFnZS5wbmdcIiksIFwiaW1hZ2UucG5nXCIpO1xuICogYXNzZXJ0RXF1YWxzKGJhc2VuYW1lKFwiQzpcXFxcdXNlclxcXFxEb2N1bWVudHNcXFxcaW1hZ2UucG5nXCIsIFwiLnBuZ1wiKSwgXCJpbWFnZVwiKTtcbiAqIGBgYFxuICpcbiAqIE5vdGU6IElmIHlvdSBhcmUgd29ya2luZyB3aXRoIGZpbGUgVVJMcyxcbiAqIHVzZSB0aGUgbmV3IHZlcnNpb24gb2YgYGJhc2VuYW1lYCBmcm9tIGBAc3RkL3BhdGgvd2luZG93cy91bnN0YWJsZS1iYXNlbmFtZWAuXG4gKlxuICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gZXh0cmFjdCB0aGUgbmFtZSBmcm9tLlxuICogQHBhcmFtIHN1ZmZpeCBUaGUgc3VmZml4IHRvIHJlbW92ZSBmcm9tIGV4dHJhY3RlZCBuYW1lLlxuICogQHJldHVybnMgVGhlIGV4dHJhY3RlZCBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYmFzZW5hbWUocGF0aDogc3RyaW5nLCBzdWZmaXggPSBcIlwiKTogc3RyaW5nIHtcbiAgYXNzZXJ0QXJncyhwYXRoLCBzdWZmaXgpO1xuXG4gIC8vIENoZWNrIGZvciBhIGRyaXZlIGxldHRlciBwcmVmaXggc28gYXMgbm90IHRvIG1pc3Rha2UgdGhlIGZvbGxvd2luZ1xuICAvLyBwYXRoIHNlcGFyYXRvciBhcyBhbiBleHRyYSBzZXBhcmF0b3IgYXQgdGhlIGVuZCBvZiB0aGUgcGF0aCB0aGF0IGNhbiBiZVxuICAvLyBkaXNyZWdhcmRlZFxuICBsZXQgc3RhcnQgPSAwO1xuICBpZiAocGF0aC5sZW5ndGggPj0gMikge1xuICAgIGNvbnN0IGRyaXZlID0gcGF0aC5jaGFyQ29kZUF0KDApO1xuICAgIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KGRyaXZlKSkge1xuICAgICAgaWYgKHBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9DT0xPTikgc3RhcnQgPSAyO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGxhc3RTZWdtZW50ID0gbGFzdFBhdGhTZWdtZW50KHBhdGgsIGlzUGF0aFNlcGFyYXRvciwgc3RhcnQpO1xuICBjb25zdCBzdHJpcHBlZFNlZ21lbnQgPSBzdHJpcFRyYWlsaW5nU2VwYXJhdG9ycyhsYXN0U2VnbWVudCwgaXNQYXRoU2VwYXJhdG9yKTtcbiAgcmV0dXJuIHN1ZmZpeCA/IHN0cmlwU3VmZml4KHN0cmlwcGVkU2VnbWVudCwgc3VmZml4KSA6IHN0cmlwcGVkU2VnbWVudDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBRXJDLFNBQ0UsVUFBVSxFQUNWLGVBQWUsRUFDZixXQUFXLFFBQ04seUJBQXlCO0FBQ2hDLFNBQVMsVUFBVSxRQUFRLDBCQUEwQjtBQUNyRCxTQUFTLHVCQUF1QixRQUFRLDBDQUEwQztBQUNsRixTQUFTLGVBQWUsRUFBRSxtQkFBbUIsUUFBUSxhQUFhO0FBRWxFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW9CQyxHQUNELE9BQU8sU0FBUyxTQUFTLElBQVksRUFBRSxTQUFTLEVBQUU7RUFDaEQsV0FBVyxNQUFNO0VBRWpCLHFFQUFxRTtFQUNyRSwwRUFBMEU7RUFDMUUsY0FBYztFQUNkLElBQUksUUFBUTtFQUNaLElBQUksS0FBSyxNQUFNLElBQUksR0FBRztJQUNwQixNQUFNLFFBQVEsS0FBSyxVQUFVLENBQUM7SUFDOUIsSUFBSSxvQkFBb0IsUUFBUTtNQUM5QixJQUFJLEtBQUssVUFBVSxDQUFDLE9BQU8sWUFBWSxRQUFRO0lBQ2pEO0VBQ0Y7RUFFQSxNQUFNLGNBQWMsZ0JBQWdCLE1BQU0saUJBQWlCO0VBQzNELE1BQU0sa0JBQWtCLHdCQUF3QixhQUFhO0VBQzdELE9BQU8sU0FBUyxZQUFZLGlCQUFpQixVQUFVO0FBQ3pEIn0= +// denoCacheMetadata=6126291965185441111,13388793222432510517
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/6478588dab36d4c6b1fad2b6909e61673d0fcd3cb2fa3dda5df94186b0870130.js b/vendor/gen/https/jsr.io/6478588dab36d4c6b1fad2b6909e61673d0fcd3cb2fa3dda5df94186b0870130.js new file mode 100644 index 0000000..7150b74 --- /dev/null +++ b/vendor/gen/https/jsr.io/6478588dab36d4c6b1fad2b6909e61673d0fcd3cb2fa3dda5df94186b0870130.js @@ -0,0 +1,32 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { types } from "./_db.ts"; +/** + * Returns the media type associated with the file extension, or `undefined` if + * no media type is found. + * + * Values are normalized to lower case and matched irrespective of a leading + * `.`. + * + * @param extension The file extension to get the media type for. + * + * @returns The media type associated with the file extension, or `undefined` if + * no media type is found. + * + * @example Usage + * ```ts + * import { typeByExtension } from "@std/media-types/type-by-extension"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(typeByExtension("js"), "text/javascript"); + * assertEquals(typeByExtension(".HTML"), "text/html"); + * assertEquals(typeByExtension("foo"), undefined); + * assertEquals(typeByExtension("file.json"), undefined); + * ``` + */ export function typeByExtension(extension) { + extension = extension.startsWith(".") ? extension.slice(1) : extension; + // @ts-ignore Work around https://github.com/denoland/dnt/issues/148 + return types.get(extension.toLowerCase()); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvbWVkaWEtdHlwZXMvMS4xLjAvdHlwZV9ieV9leHRlbnNpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgdHlwZXMgfSBmcm9tIFwiLi9fZGIudHNcIjtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBtZWRpYSB0eXBlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZSBleHRlbnNpb24sIG9yIGB1bmRlZmluZWRgIGlmXG4gKiBubyBtZWRpYSB0eXBlIGlzIGZvdW5kLlxuICpcbiAqIFZhbHVlcyBhcmUgbm9ybWFsaXplZCB0byBsb3dlciBjYXNlIGFuZCBtYXRjaGVkIGlycmVzcGVjdGl2ZSBvZiBhIGxlYWRpbmdcbiAqIGAuYC5cbiAqXG4gKiBAcGFyYW0gZXh0ZW5zaW9uIFRoZSBmaWxlIGV4dGVuc2lvbiB0byBnZXQgdGhlIG1lZGlhIHR5cGUgZm9yLlxuICpcbiAqIEByZXR1cm5zIFRoZSBtZWRpYSB0eXBlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZSBleHRlbnNpb24sIG9yIGB1bmRlZmluZWRgIGlmXG4gKiBubyBtZWRpYSB0eXBlIGlzIGZvdW5kLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgdHlwZUJ5RXh0ZW5zaW9uIH0gZnJvbSBcIkBzdGQvbWVkaWEtdHlwZXMvdHlwZS1ieS1leHRlbnNpb25cIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydEVxdWFscyh0eXBlQnlFeHRlbnNpb24oXCJqc1wiKSwgXCJ0ZXh0L2phdmFzY3JpcHRcIik7XG4gKiBhc3NlcnRFcXVhbHModHlwZUJ5RXh0ZW5zaW9uKFwiLkhUTUxcIiksIFwidGV4dC9odG1sXCIpO1xuICogYXNzZXJ0RXF1YWxzKHR5cGVCeUV4dGVuc2lvbihcImZvb1wiKSwgdW5kZWZpbmVkKTtcbiAqIGFzc2VydEVxdWFscyh0eXBlQnlFeHRlbnNpb24oXCJmaWxlLmpzb25cIiksIHVuZGVmaW5lZCk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHR5cGVCeUV4dGVuc2lvbihleHRlbnNpb246IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGV4dGVuc2lvbiA9IGV4dGVuc2lvbi5zdGFydHNXaXRoKFwiLlwiKSA/IGV4dGVuc2lvbi5zbGljZSgxKSA6IGV4dGVuc2lvbjtcbiAgLy8gQHRzLWlnbm9yZSBXb3JrIGFyb3VuZCBodHRwczovL2dpdGh1Yi5jb20vZGVub2xhbmQvZG50L2lzc3Vlcy8xNDhcbiAgcmV0dXJuIHR5cGVzLmdldChleHRlbnNpb24udG9Mb3dlckNhc2UoKSk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQyxTQUFTLEtBQUssUUFBUSxXQUFXO0FBRWpDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBc0JDLEdBQ0QsT0FBTyxTQUFTLGdCQUFnQixTQUFpQjtFQUMvQyxZQUFZLFVBQVUsVUFBVSxDQUFDLE9BQU8sVUFBVSxLQUFLLENBQUMsS0FBSztFQUM3RCxvRUFBb0U7RUFDcEUsT0FBTyxNQUFNLEdBQUcsQ0FBQyxVQUFVLFdBQVc7QUFDeEMifQ== +// denoCacheMetadata=18223311315059652447,5703654777241251835
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/651ba47183723c05f7ffd2456f7e0d3d88168e0bf6a00537cc2d2fa1dbfa57c3.js b/vendor/gen/https/jsr.io/651ba47183723c05f7ffd2456f7e0d3d88168e0bf6a00537cc2d2fa1dbfa57c3.js new file mode 100644 index 0000000..9b9a6b9 --- /dev/null +++ b/vendor/gen/https/jsr.io/651ba47183723c05f7ffd2456f7e0d3d88168e0bf6a00537cc2d2fa1dbfa57c3.js @@ -0,0 +1,41 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { join } from "./join.ts"; +import { SEPARATOR } from "./constants.ts"; +import { normalizeGlob } from "./normalize_glob.ts"; +/** + * Like join(), but doesn't collapse "**\/.." when `globstar` is true. + * + * @example Usage + * + * ```ts + * import { joinGlobs } from "@std/path/windows/join-globs"; + * import { assertEquals } from "@std/assert"; + * + * const joined = joinGlobs(["foo", "**", "bar"], { globstar: true }); + * assertEquals(joined, "foo\\**\\bar"); + * ``` + * + * @param globs The globs to join. + * @param options The options for glob pattern. + * @returns The joined glob pattern. + */ export function joinGlobs(globs, options = {}) { + const { globstar = false } = options; + if (!globstar || globs.length === 0) { + return join(...globs); + } + let joined; + for (const glob of globs){ + const path = glob; + if (path.length > 0) { + if (!joined) joined = path; + else joined += `${SEPARATOR}${path}`; + } + } + if (!joined) return "."; + return normalizeGlob(joined, { + globstar + }); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS93aW5kb3dzL2pvaW5fZ2xvYnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHR5cGUgeyBHbG9iT3B0aW9ucyB9IGZyb20gXCIuLi9fY29tbW9uL2dsb2JfdG9fcmVnX2V4cC50c1wiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCIuL2pvaW4udHNcIjtcbmltcG9ydCB7IFNFUEFSQVRPUiB9IGZyb20gXCIuL2NvbnN0YW50cy50c1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplR2xvYiB9IGZyb20gXCIuL25vcm1hbGl6ZV9nbG9iLnRzXCI7XG5cbmV4cG9ydCB0eXBlIHsgR2xvYk9wdGlvbnMgfTtcblxuLyoqXG4gKiBMaWtlIGpvaW4oKSwgYnV0IGRvZXNuJ3QgY29sbGFwc2UgXCIqKlxcLy4uXCIgd2hlbiBgZ2xvYnN0YXJgIGlzIHRydWUuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgam9pbkdsb2JzIH0gZnJvbSBcIkBzdGQvcGF0aC93aW5kb3dzL2pvaW4tZ2xvYnNcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IGpvaW5lZCA9IGpvaW5HbG9icyhbXCJmb29cIiwgXCIqKlwiLCBcImJhclwiXSwgeyBnbG9ic3RhcjogdHJ1ZSB9KTtcbiAqIGFzc2VydEVxdWFscyhqb2luZWQsIFwiZm9vXFxcXCoqXFxcXGJhclwiKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBnbG9icyBUaGUgZ2xvYnMgdG8gam9pbi5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciBnbG9iIHBhdHRlcm4uXG4gKiBAcmV0dXJucyBUaGUgam9pbmVkIGdsb2IgcGF0dGVybi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpvaW5HbG9icyhcbiAgZ2xvYnM6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBQaWNrPEdsb2JPcHRpb25zLCBcImdsb2JzdGFyXCI+ID0ge30sXG4pOiBzdHJpbmcge1xuICBjb25zdCB7IGdsb2JzdGFyID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gIGlmICghZ2xvYnN0YXIgfHwgZ2xvYnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGpvaW4oLi4uZ2xvYnMpO1xuICB9XG4gIGxldCBqb2luZWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZm9yIChjb25zdCBnbG9iIG9mIGdsb2JzKSB7XG4gICAgY29uc3QgcGF0aCA9IGdsb2I7XG4gICAgaWYgKHBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFqb2luZWQpIGpvaW5lZCA9IHBhdGg7XG4gICAgICBlbHNlIGpvaW5lZCArPSBgJHtTRVBBUkFUT1J9JHtwYXRofWA7XG4gICAgfVxuICB9XG4gIGlmICgham9pbmVkKSByZXR1cm4gXCIuXCI7XG4gIHJldHVybiBub3JtYWxpemVHbG9iKGpvaW5lZCwgeyBnbG9ic3RhciB9KTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBR3JDLFNBQVMsSUFBSSxRQUFRLFlBQVk7QUFDakMsU0FBUyxTQUFTLFFBQVEsaUJBQWlCO0FBQzNDLFNBQVMsYUFBYSxRQUFRLHNCQUFzQjtBQUlwRDs7Ozs7Ozs7Ozs7Ozs7OztDQWdCQyxHQUNELE9BQU8sU0FBUyxVQUNkLEtBQWUsRUFDZixVQUF5QyxDQUFDLENBQUM7RUFFM0MsTUFBTSxFQUFFLFdBQVcsS0FBSyxFQUFFLEdBQUc7RUFDN0IsSUFBSSxDQUFDLFlBQVksTUFBTSxNQUFNLEtBQUssR0FBRztJQUNuQyxPQUFPLFFBQVE7RUFDakI7RUFDQSxJQUFJO0VBQ0osS0FBSyxNQUFNLFFBQVEsTUFBTztJQUN4QixNQUFNLE9BQU87SUFDYixJQUFJLEtBQUssTUFBTSxHQUFHLEdBQUc7TUFDbkIsSUFBSSxDQUFDLFFBQVEsU0FBUztXQUNqQixVQUFVLEdBQUcsWUFBWSxNQUFNO0lBQ3RDO0VBQ0Y7RUFDQSxJQUFJLENBQUMsUUFBUSxPQUFPO0VBQ3BCLE9BQU8sY0FBYyxRQUFRO0lBQUU7RUFBUztBQUMxQyJ9 +// denoCacheMetadata=4966238593691959618,13762202024271026174
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/65faaccaf28669a72ef1b6830ea46615956c2f248bae796c29cd2292757640e7.js b/vendor/gen/https/jsr.io/65faaccaf28669a72ef1b6830ea46615956c2f248bae796c29cd2292757640e7.js new file mode 100644 index 0000000..0fba0cd --- /dev/null +++ b/vendor/gen/https/jsr.io/65faaccaf28669a72ef1b6830ea46615956c2f248bae796c29cd2292757640e7.js @@ -0,0 +1,80 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +import { EXTRACT_REGEXP_MAP } from "./_formats.ts"; +/** + * Tests if a string has valid front matter. + * Supports {@link https://yaml.org | YAML}, {@link https://toml.io | TOML} and + * {@link https://www.json.org/ | JSON}. + * + * @param str String to test. + * @param formats A list of formats to test for. Defaults to all supported formats. + * @returns `true` if the string has valid front matter, otherwise `false`. + * + * @example Test for valid YAML front matter + * ```ts + * import { test } from "@std/front-matter/test"; + * import { assert } from "@std/assert"; + * + * const result = test( + * `--- + * title: Three dashes marks the spot + * --- + * `); + * assert(result); + * ``` + * + * @example Test for valid TOML front matter + * ```ts + * import { test } from "@std/front-matter/test"; + * import { assert } from "@std/assert"; + * + * const result = test( + * `---toml + * title = 'Three dashes followed by format marks the spot' + * --- + * `); + * assert(result); + * ``` + * + * @example Test for valid JSON front matter + * ```ts + * import { test } from "@std/front-matter/test"; + * import { assert } from "@std/assert"; + * + * const result = test( + * `---json + * {"title": "Three dashes followed by format marks the spot"} + * --- + * `); + * assert(result); + * ``` + * + * @example JSON front matter is not valid as YAML + * ```ts + * import { test } from "@std/front-matter/test"; + * import { assertFalse } from "@std/assert"; + * + * const result = test( + * `---json + * {"title": "Three dashes followed by format marks the spot"} + * --- + * `, ["yaml"]); + * assertFalse(result); + * ``` + */ export function test(str, formats) { + if (!formats) formats = [ + ...EXTRACT_REGEXP_MAP.keys() + ]; + for (const format of formats){ + const regexp = EXTRACT_REGEXP_MAP.get(format); + if (!regexp) { + throw new TypeError(`Unable to test for ${format} front matter format`); + } + const match = regexp.exec(str); + if (match?.index === 0) { + return true; + } + } + return false; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnJvbnQtbWF0dGVyLzEuMC45L3Rlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cblxuaW1wb3J0IHsgRVhUUkFDVF9SRUdFWFBfTUFQLCB0eXBlIEZvcm1hdCB9IGZyb20gXCIuL19mb3JtYXRzLnRzXCI7XG5cbmV4cG9ydCB0eXBlIHsgRm9ybWF0IH07XG5cbi8qKlxuICogVGVzdHMgaWYgYSBzdHJpbmcgaGFzIHZhbGlkIGZyb250IG1hdHRlci5cbiAqIFN1cHBvcnRzIHtAbGluayBodHRwczovL3lhbWwub3JnIHwgWUFNTH0sIHtAbGluayBodHRwczovL3RvbWwuaW8gfCBUT01MfSBhbmRcbiAqIHtAbGluayBodHRwczovL3d3dy5qc29uLm9yZy8gfCBKU09OfS5cbiAqXG4gKiBAcGFyYW0gc3RyIFN0cmluZyB0byB0ZXN0LlxuICogQHBhcmFtIGZvcm1hdHMgQSBsaXN0IG9mIGZvcm1hdHMgdG8gdGVzdCBmb3IuIERlZmF1bHRzIHRvIGFsbCBzdXBwb3J0ZWQgZm9ybWF0cy5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgc3RyaW5nIGhhcyB2YWxpZCBmcm9udCBtYXR0ZXIsIG90aGVyd2lzZSBgZmFsc2VgLlxuICpcbiAqIEBleGFtcGxlIFRlc3QgZm9yIHZhbGlkIFlBTUwgZnJvbnQgbWF0dGVyXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgdGVzdCB9IGZyb20gXCJAc3RkL2Zyb250LW1hdHRlci90ZXN0XCI7XG4gKiBpbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCByZXN1bHQgPSB0ZXN0KFxuICogYC0tLVxuICogdGl0bGU6IFRocmVlIGRhc2hlcyBtYXJrcyB0aGUgc3BvdFxuICogLS0tXG4gKiBgKTtcbiAqIGFzc2VydChyZXN1bHQpO1xuICogYGBgXG4gKlxuICogQGV4YW1wbGUgVGVzdCBmb3IgdmFsaWQgVE9NTCBmcm9udCBtYXR0ZXJcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyB0ZXN0IH0gZnJvbSBcIkBzdGQvZnJvbnQtbWF0dGVyL3Rlc3RcIjtcbiAqIGltcG9ydCB7IGFzc2VydCB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IHJlc3VsdCA9IHRlc3QoXG4gKiBgLS0tdG9tbFxuICogdGl0bGUgPSAnVGhyZWUgZGFzaGVzIGZvbGxvd2VkIGJ5IGZvcm1hdCBtYXJrcyB0aGUgc3BvdCdcbiAqIC0tLVxuICogYCk7XG4gKiBhc3NlcnQocmVzdWx0KTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFRlc3QgZm9yIHZhbGlkIEpTT04gZnJvbnQgbWF0dGVyXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgdGVzdCB9IGZyb20gXCJAc3RkL2Zyb250LW1hdHRlci90ZXN0XCI7XG4gKiBpbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCByZXN1bHQgPSB0ZXN0KFxuICogYC0tLWpzb25cbiAqIHtcInRpdGxlXCI6IFwiVGhyZWUgZGFzaGVzIGZvbGxvd2VkIGJ5IGZvcm1hdCBtYXJrcyB0aGUgc3BvdFwifVxuICogLS0tXG4gKiBgKTtcbiAqIGFzc2VydChyZXN1bHQpO1xuICogYGBgXG4gKlxuICogQGV4YW1wbGUgSlNPTiBmcm9udCBtYXR0ZXIgaXMgbm90IHZhbGlkIGFzIFlBTUxcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyB0ZXN0IH0gZnJvbSBcIkBzdGQvZnJvbnQtbWF0dGVyL3Rlc3RcIjtcbiAqIGltcG9ydCB7IGFzc2VydEZhbHNlIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3QgcmVzdWx0ID0gdGVzdChcbiAqIGAtLS1qc29uXG4gKiB7XCJ0aXRsZVwiOiBcIlRocmVlIGRhc2hlcyBmb2xsb3dlZCBieSBmb3JtYXQgbWFya3MgdGhlIHNwb3RcIn1cbiAqIC0tLVxuICogYCwgW1wieWFtbFwiXSk7XG4gKiBhc3NlcnRGYWxzZShyZXN1bHQpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZXN0KHN0cjogc3RyaW5nLCBmb3JtYXRzPzogRm9ybWF0W10pOiBib29sZWFuIHtcbiAgaWYgKCFmb3JtYXRzKSBmb3JtYXRzID0gWy4uLkVYVFJBQ1RfUkVHRVhQX01BUC5rZXlzKCldIGFzIEZvcm1hdFtdO1xuXG4gIGZvciAoY29uc3QgZm9ybWF0IG9mIGZvcm1hdHMpIHtcbiAgICBjb25zdCByZWdleHAgPSBFWFRSQUNUX1JFR0VYUF9NQVAuZ2V0KGZvcm1hdCk7XG4gICAgaWYgKCFyZWdleHApIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFVuYWJsZSB0byB0ZXN0IGZvciAke2Zvcm1hdH0gZnJvbnQgbWF0dGVyIGZvcm1hdGApO1xuICAgIH1cbiAgICBjb25zdCBtYXRjaCA9IHJlZ2V4cC5leGVjKHN0cik7XG4gICAgaWYgKG1hdGNoPy5pbmRleCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUVyRCxTQUFTLGtCQUFrQixRQUFxQixnQkFBZ0I7QUFJaEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQTREQyxHQUNELE9BQU8sU0FBUyxLQUFLLEdBQVcsRUFBRSxPQUFrQjtFQUNsRCxJQUFJLENBQUMsU0FBUyxVQUFVO09BQUksbUJBQW1CLElBQUk7R0FBRztFQUV0RCxLQUFLLE1BQU0sVUFBVSxRQUFTO0lBQzVCLE1BQU0sU0FBUyxtQkFBbUIsR0FBRyxDQUFDO0lBQ3RDLElBQUksQ0FBQyxRQUFRO01BQ1gsTUFBTSxJQUFJLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLG9CQUFvQixDQUFDO0lBQ3hFO0lBQ0EsTUFBTSxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQzFCLElBQUksT0FBTyxVQUFVLEdBQUc7TUFDdEIsT0FBTztJQUNUO0VBQ0Y7RUFFQSxPQUFPO0FBQ1QifQ== +// denoCacheMetadata=5725765818060338960,48075601722144883
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/6747bf701f3d06962451bf17cd72da9de6bf605cd2a83dc7221c64bbf6831c78.js b/vendor/gen/https/jsr.io/6747bf701f3d06962451bf17cd72da9de6bf605cd2a83dc7221c64bbf6831c78.js new file mode 100644 index 0000000..b8c3510 --- /dev/null +++ b/vendor/gen/https/jsr.io/6747bf701f3d06962451bf17cd72da9de6bf605cd2a83dc7221c64bbf6831c78.js @@ -0,0 +1,28 @@ +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2025 the Deno authors. MIT license. +import { isPlainObject } from "../_utils.ts"; +function resolveYamlOmap(data) { + const objectKeys = new Set(); + for (const object of data){ + if (!isPlainObject(object)) return false; + const keys = Object.keys(object); + if (keys.length !== 1) return false; + for (const key of keys){ + if (objectKeys.has(key)) return false; + objectKeys.add(key); + } + } + return true; +} +export const omap = { + tag: "tag:yaml.org,2002:omap", + kind: "sequence", + resolve: resolveYamlOmap, + construct (data) { + return data; + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQveWFtbC8xLjAuNi9fdHlwZS9vbWFwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFBvcnRlZCBmcm9tIGpzLXlhbWwgdjMuMTMuMTpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvanMteWFtbC9jb21taXQvNjY1YWFkZGE0MjM0OWRjYWU4NjlmMTIwNDBkOWIxMGVmMThkMTJkYVxuLy8gQ29weXJpZ2h0IDIwMTEtMjAxNSBieSBWaXRhbHkgUHV6cmluLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG5cbmltcG9ydCB0eXBlIHsgVHlwZSB9IGZyb20gXCIuLi9fdHlwZS50c1wiO1xuaW1wb3J0IHsgaXNQbGFpbk9iamVjdCB9IGZyb20gXCIuLi9fdXRpbHMudHNcIjtcblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxPbWFwKGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10pOiBib29sZWFuIHtcbiAgY29uc3Qgb2JqZWN0S2V5cyA9IG5ldyBTZXQoKTtcbiAgZm9yIChjb25zdCBvYmplY3Qgb2YgZGF0YSkge1xuICAgIGlmICghaXNQbGFpbk9iamVjdChvYmplY3QpKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7XG4gICAgaWYgKGtleXMubGVuZ3RoICE9PSAxKSByZXR1cm4gZmFsc2U7XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgaWYgKG9iamVjdEtleXMuaGFzKGtleSkpIHJldHVybiBmYWxzZTtcbiAgICAgIG9iamVjdEtleXMuYWRkKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgY29uc3Qgb21hcDogVHlwZTxcInNlcXVlbmNlXCIsIFJlY29yZDxQcm9wZXJ0eUtleSwgdW5rbm93bj5bXT4gPSB7XG4gIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjpvbWFwXCIsXG4gIGtpbmQ6IFwic2VxdWVuY2VcIixcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxPbWFwLFxuICBjb25zdHJ1Y3QoZGF0YSkge1xuICAgIHJldHVybiBkYXRhO1xuICB9LFxufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0Isb0ZBQW9GO0FBQ3BGLDBFQUEwRTtBQUMxRSxxREFBcUQ7QUFHckQsU0FBUyxhQUFhLFFBQVEsZUFBZTtBQUU3QyxTQUFTLGdCQUFnQixJQUErQjtFQUN0RCxNQUFNLGFBQWEsSUFBSTtFQUN2QixLQUFLLE1BQU0sVUFBVSxLQUFNO0lBQ3pCLElBQUksQ0FBQyxjQUFjLFNBQVMsT0FBTztJQUNuQyxNQUFNLE9BQU8sT0FBTyxJQUFJLENBQUM7SUFDekIsSUFBSSxLQUFLLE1BQU0sS0FBSyxHQUFHLE9BQU87SUFDOUIsS0FBSyxNQUFNLE9BQU8sS0FBTTtNQUN0QixJQUFJLFdBQVcsR0FBRyxDQUFDLE1BQU0sT0FBTztNQUNoQyxXQUFXLEdBQUcsQ0FBQztJQUNqQjtFQUNGO0VBQ0EsT0FBTztBQUNUO0FBRUEsT0FBTyxNQUFNLE9BQXlEO0VBQ3BFLEtBQUs7RUFDTCxNQUFNO0VBQ04sU0FBUztFQUNULFdBQVUsSUFBSTtJQUNaLE9BQU87RUFDVDtBQUNGLEVBQUUifQ== +// denoCacheMetadata=5721867118394237595,3278364661059839552
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/676979eaa18bc94435f9733ede83ca3be7eb3ab8566b1f9967aaa7b89abb9a9e.js b/vendor/gen/https/jsr.io/676979eaa18bc94435f9733ede83ca3be7eb3ab8566b1f9967aaa7b89abb9a9e.js new file mode 100644 index 0000000..4a981cf --- /dev/null +++ b/vendor/gen/https/jsr.io/676979eaa18bc94435f9733ede83ca3be7eb3ab8566b1f9967aaa7b89abb9a9e.js @@ -0,0 +1,214 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * Options for {@linkcode globToRegExp}, {@linkcode joinGlobs}, + * {@linkcode normalizeGlob} and {@linkcode expandGlob}. + */ const REG_EXP_ESCAPE_CHARS = [ + "!", + "$", + "(", + ")", + "*", + "+", + ".", + "=", + "?", + "[", + "\\", + "^", + "{", + "|" +]; +const RANGE_ESCAPE_CHARS = [ + "-", + "\\", + "]" +]; +export function _globToRegExp(c, glob, { extended = true, globstar: globstarOption = true, // os = osType, +caseInsensitive = false } = {}) { + if (glob === "") { + return /(?!)/; + } + // Remove trailing separators. + let newLength = glob.length; + for(; newLength > 1 && c.seps.includes(glob[newLength - 1]); newLength--); + glob = glob.slice(0, newLength); + let regExpString = ""; + // Terminates correctly. Trust that `j` is incremented every iteration. + for(let j = 0; j < glob.length;){ + let segment = ""; + const groupStack = []; + let inRange = false; + let inEscape = false; + let endsWithSep = false; + let i = j; + // Terminates with `i` at the non-inclusive end of the current segment. + for(; i < glob.length && !c.seps.includes(glob[i]); i++){ + if (inEscape) { + inEscape = false; + const escapeChars = inRange ? RANGE_ESCAPE_CHARS : REG_EXP_ESCAPE_CHARS; + segment += escapeChars.includes(glob[i]) ? `\\${glob[i]}` : glob[i]; + continue; + } + if (glob[i] === c.escapePrefix) { + inEscape = true; + continue; + } + if (glob[i] === "[") { + if (!inRange) { + inRange = true; + segment += "["; + if (glob[i + 1] === "!") { + i++; + segment += "^"; + } else if (glob[i + 1] === "^") { + i++; + segment += "\\^"; + } + continue; + } else if (glob[i + 1] === ":") { + let k = i + 1; + let value = ""; + while(glob[k + 1] !== undefined && glob[k + 1] !== ":"){ + value += glob[k + 1]; + k++; + } + if (glob[k + 1] === ":" && glob[k + 2] === "]") { + i = k + 2; + if (value === "alnum") segment += "\\dA-Za-z"; + else if (value === "alpha") segment += "A-Za-z"; + else if (value === "ascii") segment += "\x00-\x7F"; + else if (value === "blank") segment += "\t "; + else if (value === "cntrl") segment += "\x00-\x1F\x7F"; + else if (value === "digit") segment += "\\d"; + else if (value === "graph") segment += "\x21-\x7E"; + else if (value === "lower") segment += "a-z"; + else if (value === "print") segment += "\x20-\x7E"; + else if (value === "punct") { + segment += "!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_‘{|}~"; + } else if (value === "space") segment += "\\s\v"; + else if (value === "upper") segment += "A-Z"; + else if (value === "word") segment += "\\w"; + else if (value === "xdigit") segment += "\\dA-Fa-f"; + continue; + } + } + } + if (glob[i] === "]" && inRange) { + inRange = false; + segment += "]"; + continue; + } + if (inRange) { + segment += glob[i]; + continue; + } + if (glob[i] === ")" && groupStack.length > 0 && groupStack[groupStack.length - 1] !== "BRACE") { + segment += ")"; + const type = groupStack.pop(); + if (type === "!") { + segment += c.wildcard; + } else if (type !== "@") { + segment += type; + } + continue; + } + if (glob[i] === "|" && groupStack.length > 0 && groupStack[groupStack.length - 1] !== "BRACE") { + segment += "|"; + continue; + } + if (glob[i] === "+" && extended && glob[i + 1] === "(") { + i++; + groupStack.push("+"); + segment += "(?:"; + continue; + } + if (glob[i] === "@" && extended && glob[i + 1] === "(") { + i++; + groupStack.push("@"); + segment += "(?:"; + continue; + } + if (glob[i] === "?") { + if (extended && glob[i + 1] === "(") { + i++; + groupStack.push("?"); + segment += "(?:"; + } else { + segment += "."; + } + continue; + } + if (glob[i] === "!" && extended && glob[i + 1] === "(") { + i++; + groupStack.push("!"); + segment += "(?!"; + continue; + } + if (glob[i] === "{") { + groupStack.push("BRACE"); + segment += "(?:"; + continue; + } + if (glob[i] === "}" && groupStack[groupStack.length - 1] === "BRACE") { + groupStack.pop(); + segment += ")"; + continue; + } + if (glob[i] === "," && groupStack[groupStack.length - 1] === "BRACE") { + segment += "|"; + continue; + } + if (glob[i] === "*") { + if (extended && glob[i + 1] === "(") { + i++; + groupStack.push("*"); + segment += "(?:"; + } else { + const prevChar = glob[i - 1]; + let numStars = 1; + while(glob[i + 1] === "*"){ + i++; + numStars++; + } + const nextChar = glob[i + 1]; + if (globstarOption && numStars === 2 && [ + ...c.seps, + undefined + ].includes(prevChar) && [ + ...c.seps, + undefined + ].includes(nextChar)) { + segment += c.globstar; + endsWithSep = true; + } else { + segment += c.wildcard; + } + } + continue; + } + segment += REG_EXP_ESCAPE_CHARS.includes(glob[i]) ? `\\${glob[i]}` : glob[i]; + } + // Check for unclosed groups or a dangling backslash. + if (groupStack.length > 0 || inRange || inEscape) { + // Parse failure. Take all characters from this segment literally. + segment = ""; + for (const c of glob.slice(j, i)){ + segment += REG_EXP_ESCAPE_CHARS.includes(c) ? `\\${c}` : c; + endsWithSep = false; + } + } + regExpString += segment; + if (!endsWithSep) { + regExpString += i < glob.length ? c.sep : c.sepMaybe; + endsWithSep = true; + } + // Terminates with `i` at the start of the next segment. + while(c.seps.includes(glob[i]))i++; + j = i; + } + regExpString = `^${regExpString}$`; + return new RegExp(regExpString, caseInsensitive ? "i" : ""); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9fY29tbW9uL2dsb2JfdG9fcmVnX2V4cC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGlua2NvZGUgZ2xvYlRvUmVnRXhwfSwge0BsaW5rY29kZSBqb2luR2xvYnN9LFxuICoge0BsaW5rY29kZSBub3JtYWxpemVHbG9ifSBhbmQge0BsaW5rY29kZSBleHBhbmRHbG9ifS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHbG9iT3B0aW9ucyB7XG4gIC8qKiBFeHRlbmRlZCBnbG9iIHN5bnRheC5cbiAgICogU2VlIGh0dHBzOi8vd3d3LmxpbnV4am91cm5hbC5jb20vY29udGVudC9iYXNoLWV4dGVuZGVkLWdsb2JiaW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7dHJ1ZX1cbiAgICovXG4gIGV4dGVuZGVkPzogYm9vbGVhbjtcbiAgLyoqIEdsb2JzdGFyIHN5bnRheC5cbiAgICogU2VlIGh0dHBzOi8vd3d3LmxpbnV4am91cm5hbC5jb20vY29udGVudC9nbG9ic3Rhci1uZXctYmFzaC1nbG9iYmluZy1vcHRpb24uXG4gICAqIElmIGZhbHNlLCBgKipgIGlzIHRyZWF0ZWQgbGlrZSBgKmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHt0cnVlfVxuICAgKi9cbiAgZ2xvYnN0YXI/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciBnbG9ic3RhciBzaG91bGQgYmUgY2FzZS1pbnNlbnNpdGl2ZS5cbiAgICpcbiAgICogQGRlZmF1bHQge2ZhbHNlfVxuICAgKi9cbiAgY2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbjtcbn1cblxuY29uc3QgUkVHX0VYUF9FU0NBUEVfQ0hBUlMgPSBbXG4gIFwiIVwiLFxuICBcIiRcIixcbiAgXCIoXCIsXG4gIFwiKVwiLFxuICBcIipcIixcbiAgXCIrXCIsXG4gIFwiLlwiLFxuICBcIj1cIixcbiAgXCI/XCIsXG4gIFwiW1wiLFxuICBcIlxcXFxcIixcbiAgXCJeXCIsXG4gIFwie1wiLFxuICBcInxcIixcbl0gYXMgY29uc3Q7XG5jb25zdCBSQU5HRV9FU0NBUEVfQ0hBUlMgPSBbXCItXCIsIFwiXFxcXFwiLCBcIl1cIl0gYXMgY29uc3Q7XG5cbnR5cGUgUmVnRXhwRXNjYXBlQ2hhciA9IHR5cGVvZiBSRUdfRVhQX0VTQ0FQRV9DSEFSU1tudW1iZXJdO1xudHlwZSBSYW5nZUVzY2FwZUNoYXIgPSB0eXBlb2YgUkFOR0VfRVNDQVBFX0NIQVJTW251bWJlcl07XG50eXBlIEVzY2FwZUNoYXIgPSBSZWdFeHBFc2NhcGVDaGFyIHwgUmFuZ2VFc2NhcGVDaGFyO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdsb2JDb25zdGFudHMge1xuICBzZXA6IHN0cmluZztcbiAgc2VwTWF5YmU6IHN0cmluZztcbiAgc2Vwczogc3RyaW5nW107XG4gIGdsb2JzdGFyOiBzdHJpbmc7XG4gIHdpbGRjYXJkOiBzdHJpbmc7XG4gIGVzY2FwZVByZWZpeDogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gX2dsb2JUb1JlZ0V4cChcbiAgYzogR2xvYkNvbnN0YW50cyxcbiAgZ2xvYjogc3RyaW5nLFxuICB7XG4gICAgZXh0ZW5kZWQgPSB0cnVlLFxuICAgIGdsb2JzdGFyOiBnbG9ic3Rhck9wdGlvbiA9IHRydWUsXG4gICAgLy8gb3MgPSBvc1R5cGUsXG4gICAgY2FzZUluc2Vuc2l0aXZlID0gZmFsc2UsXG4gIH06IEdsb2JPcHRpb25zID0ge30sXG4pOiBSZWdFeHAge1xuICBpZiAoZ2xvYiA9PT0gXCJcIikge1xuICAgIHJldHVybiAvKD8hKS87XG4gIH1cblxuICAvLyBSZW1vdmUgdHJhaWxpbmcgc2VwYXJhdG9ycy5cbiAgbGV0IG5ld0xlbmd0aCA9IGdsb2IubGVuZ3RoO1xuICBmb3IgKDsgbmV3TGVuZ3RoID4gMSAmJiBjLnNlcHMuaW5jbHVkZXMoZ2xvYltuZXdMZW5ndGggLSAxXSEpOyBuZXdMZW5ndGgtLSk7XG4gIGdsb2IgPSBnbG9iLnNsaWNlKDAsIG5ld0xlbmd0aCk7XG5cbiAgbGV0IHJlZ0V4cFN0cmluZyA9IFwiXCI7XG5cbiAgLy8gVGVybWluYXRlcyBjb3JyZWN0bHkuIFRydXN0IHRoYXQgYGpgIGlzIGluY3JlbWVudGVkIGV2ZXJ5IGl0ZXJhdGlvbi5cbiAgZm9yIChsZXQgaiA9IDA7IGogPCBnbG9iLmxlbmd0aDspIHtcbiAgICBsZXQgc2VnbWVudCA9IFwiXCI7XG4gICAgY29uc3QgZ3JvdXBTdGFjazogc3RyaW5nW10gPSBbXTtcbiAgICBsZXQgaW5SYW5nZSA9IGZhbHNlO1xuICAgIGxldCBpbkVzY2FwZSA9IGZhbHNlO1xuICAgIGxldCBlbmRzV2l0aFNlcCA9IGZhbHNlO1xuICAgIGxldCBpID0gajtcblxuICAgIC8vIFRlcm1pbmF0ZXMgd2l0aCBgaWAgYXQgdGhlIG5vbi1pbmNsdXNpdmUgZW5kIG9mIHRoZSBjdXJyZW50IHNlZ21lbnQuXG4gICAgZm9yICg7IGkgPCBnbG9iLmxlbmd0aCAmJiAhYy5zZXBzLmluY2x1ZGVzKGdsb2JbaV0hKTsgaSsrKSB7XG4gICAgICBpZiAoaW5Fc2NhcGUpIHtcbiAgICAgICAgaW5Fc2NhcGUgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgZXNjYXBlQ2hhcnMgPSAoaW5SYW5nZVxuICAgICAgICAgID8gUkFOR0VfRVNDQVBFX0NIQVJTXG4gICAgICAgICAgOiBSRUdfRVhQX0VTQ0FQRV9DSEFSUykgYXMgdW5rbm93biBhcyBFc2NhcGVDaGFyW107XG4gICAgICAgIHNlZ21lbnQgKz0gZXNjYXBlQ2hhcnMuaW5jbHVkZXMoZ2xvYltpXSEgYXMgRXNjYXBlQ2hhcilcbiAgICAgICAgICA/IGBcXFxcJHtnbG9iW2ldfWBcbiAgICAgICAgICA6IGdsb2JbaV07XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2xvYltpXSA9PT0gYy5lc2NhcGVQcmVmaXgpIHtcbiAgICAgICAgaW5Fc2NhcGUgPSB0cnVlO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JbaV0gPT09IFwiW1wiKSB7XG4gICAgICAgIGlmICghaW5SYW5nZSkge1xuICAgICAgICAgIGluUmFuZ2UgPSB0cnVlO1xuICAgICAgICAgIHNlZ21lbnQgKz0gXCJbXCI7XG4gICAgICAgICAgaWYgKGdsb2JbaSArIDFdID09PSBcIiFcIikge1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgc2VnbWVudCArPSBcIl5cIjtcbiAgICAgICAgICB9IGVsc2UgaWYgKGdsb2JbaSArIDFdID09PSBcIl5cIikge1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgc2VnbWVudCArPSBcIlxcXFxeXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2UgaWYgKGdsb2JbaSArIDFdID09PSBcIjpcIikge1xuICAgICAgICAgIGxldCBrID0gaSArIDE7XG4gICAgICAgICAgbGV0IHZhbHVlID0gXCJcIjtcbiAgICAgICAgICB3aGlsZSAoZ2xvYltrICsgMV0gIT09IHVuZGVmaW5lZCAmJiBnbG9iW2sgKyAxXSAhPT0gXCI6XCIpIHtcbiAgICAgICAgICAgIHZhbHVlICs9IGdsb2JbayArIDFdO1xuICAgICAgICAgICAgaysrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZ2xvYltrICsgMV0gPT09IFwiOlwiICYmIGdsb2JbayArIDJdID09PSBcIl1cIikge1xuICAgICAgICAgICAgaSA9IGsgKyAyO1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBcImFsbnVtXCIpIHNlZ21lbnQgKz0gXCJcXFxcZEEtWmEtelwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT09IFwiYWxwaGFcIikgc2VnbWVudCArPSBcIkEtWmEtelwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT09IFwiYXNjaWlcIikgc2VnbWVudCArPSBcIlxceDAwLVxceDdGXCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gXCJibGFua1wiKSBzZWdtZW50ICs9IFwiXFx0IFwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT09IFwiY250cmxcIikgc2VnbWVudCArPSBcIlxceDAwLVxceDFGXFx4N0ZcIjtcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09PSBcImRpZ2l0XCIpIHNlZ21lbnQgKz0gXCJcXFxcZFwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT09IFwiZ3JhcGhcIikgc2VnbWVudCArPSBcIlxceDIxLVxceDdFXCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gXCJsb3dlclwiKSBzZWdtZW50ICs9IFwiYS16XCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gXCJwcmludFwiKSBzZWdtZW50ICs9IFwiXFx4MjAtXFx4N0VcIjtcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09PSBcInB1bmN0XCIpIHtcbiAgICAgICAgICAgICAgc2VnbWVudCArPSBcIiFcXFwiIyQlJicoKSorLFxcXFwtLi86Ozw9Pj9AW1xcXFxcXFxcXFxcXF1eX+KAmHt8fX5cIjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IFwic3BhY2VcIikgc2VnbWVudCArPSBcIlxcXFxzXFx2XCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gXCJ1cHBlclwiKSBzZWdtZW50ICs9IFwiQS1aXCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gXCJ3b3JkXCIpIHNlZ21lbnQgKz0gXCJcXFxcd1wiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT09IFwieGRpZ2l0XCIpIHNlZ21lbnQgKz0gXCJcXFxcZEEtRmEtZlwiO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09PSBcIl1cIiAmJiBpblJhbmdlKSB7XG4gICAgICAgIGluUmFuZ2UgPSBmYWxzZTtcbiAgICAgICAgc2VnbWVudCArPSBcIl1cIjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChpblJhbmdlKSB7XG4gICAgICAgIHNlZ21lbnQgKz0gZ2xvYltpXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgZ2xvYltpXSA9PT0gXCIpXCIgJiYgZ3JvdXBTdGFjay5sZW5ndGggPiAwICYmXG4gICAgICAgIGdyb3VwU3RhY2tbZ3JvdXBTdGFjay5sZW5ndGggLSAxXSAhPT0gXCJCUkFDRVwiXG4gICAgICApIHtcbiAgICAgICAgc2VnbWVudCArPSBcIilcIjtcbiAgICAgICAgY29uc3QgdHlwZSA9IGdyb3VwU3RhY2sucG9wKCkhO1xuICAgICAgICBpZiAodHlwZSA9PT0gXCIhXCIpIHtcbiAgICAgICAgICBzZWdtZW50ICs9IGMud2lsZGNhcmQ7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSAhPT0gXCJAXCIpIHtcbiAgICAgICAgICBzZWdtZW50ICs9IHR5cGU7XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgZ2xvYltpXSA9PT0gXCJ8XCIgJiYgZ3JvdXBTdGFjay5sZW5ndGggPiAwICYmXG4gICAgICAgIGdyb3VwU3RhY2tbZ3JvdXBTdGFjay5sZW5ndGggLSAxXSAhPT0gXCJCUkFDRVwiXG4gICAgICApIHtcbiAgICAgICAgc2VnbWVudCArPSBcInxcIjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09PSBcIitcIiAmJiBleHRlbmRlZCAmJiBnbG9iW2kgKyAxXSA9PT0gXCIoXCIpIHtcbiAgICAgICAgaSsrO1xuICAgICAgICBncm91cFN0YWNrLnB1c2goXCIrXCIpO1xuICAgICAgICBzZWdtZW50ICs9IFwiKD86XCI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2xvYltpXSA9PT0gXCJAXCIgJiYgZXh0ZW5kZWQgJiYgZ2xvYltpICsgMV0gPT09IFwiKFwiKSB7XG4gICAgICAgIGkrKztcbiAgICAgICAgZ3JvdXBTdGFjay5wdXNoKFwiQFwiKTtcbiAgICAgICAgc2VnbWVudCArPSBcIig/OlwiO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JbaV0gPT09IFwiP1wiKSB7XG4gICAgICAgIGlmIChleHRlbmRlZCAmJiBnbG9iW2kgKyAxXSA9PT0gXCIoXCIpIHtcbiAgICAgICAgICBpKys7XG4gICAgICAgICAgZ3JvdXBTdGFjay5wdXNoKFwiP1wiKTtcbiAgICAgICAgICBzZWdtZW50ICs9IFwiKD86XCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VnbWVudCArPSBcIi5cIjtcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JbaV0gPT09IFwiIVwiICYmIGV4dGVuZGVkICYmIGdsb2JbaSArIDFdID09PSBcIihcIikge1xuICAgICAgICBpKys7XG4gICAgICAgIGdyb3VwU3RhY2sucHVzaChcIiFcIik7XG4gICAgICAgIHNlZ21lbnQgKz0gXCIoPyFcIjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09PSBcIntcIikge1xuICAgICAgICBncm91cFN0YWNrLnB1c2goXCJCUkFDRVwiKTtcbiAgICAgICAgc2VnbWVudCArPSBcIig/OlwiO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JbaV0gPT09IFwifVwiICYmIGdyb3VwU3RhY2tbZ3JvdXBTdGFjay5sZW5ndGggLSAxXSA9PT0gXCJCUkFDRVwiKSB7XG4gICAgICAgIGdyb3VwU3RhY2sucG9wKCk7XG4gICAgICAgIHNlZ21lbnQgKz0gXCIpXCI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2xvYltpXSA9PT0gXCIsXCIgJiYgZ3JvdXBTdGFja1tncm91cFN0YWNrLmxlbmd0aCAtIDFdID09PSBcIkJSQUNFXCIpIHtcbiAgICAgICAgc2VnbWVudCArPSBcInxcIjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09PSBcIipcIikge1xuICAgICAgICBpZiAoZXh0ZW5kZWQgJiYgZ2xvYltpICsgMV0gPT09IFwiKFwiKSB7XG4gICAgICAgICAgaSsrO1xuICAgICAgICAgIGdyb3VwU3RhY2sucHVzaChcIipcIik7XG4gICAgICAgICAgc2VnbWVudCArPSBcIig/OlwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHByZXZDaGFyID0gZ2xvYltpIC0gMV07XG4gICAgICAgICAgbGV0IG51bVN0YXJzID0gMTtcbiAgICAgICAgICB3aGlsZSAoZ2xvYltpICsgMV0gPT09IFwiKlwiKSB7XG4gICAgICAgICAgICBpKys7XG4gICAgICAgICAgICBudW1TdGFycysrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBuZXh0Q2hhciA9IGdsb2JbaSArIDFdO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGdsb2JzdGFyT3B0aW9uICYmIG51bVN0YXJzID09PSAyICYmXG4gICAgICAgICAgICBbLi4uYy5zZXBzLCB1bmRlZmluZWRdLmluY2x1ZGVzKHByZXZDaGFyKSAmJlxuICAgICAgICAgICAgWy4uLmMuc2VwcywgdW5kZWZpbmVkXS5pbmNsdWRlcyhuZXh0Q2hhcilcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHNlZ21lbnQgKz0gYy5nbG9ic3RhcjtcbiAgICAgICAgICAgIGVuZHNXaXRoU2VwID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2VnbWVudCArPSBjLndpbGRjYXJkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgc2VnbWVudCArPSBSRUdfRVhQX0VTQ0FQRV9DSEFSUy5pbmNsdWRlcyhnbG9iW2ldISBhcyBSZWdFeHBFc2NhcGVDaGFyKVxuICAgICAgICA/IGBcXFxcJHtnbG9iW2ldfWBcbiAgICAgICAgOiBnbG9iW2ldO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciB1bmNsb3NlZCBncm91cHMgb3IgYSBkYW5nbGluZyBiYWNrc2xhc2guXG4gICAgaWYgKGdyb3VwU3RhY2subGVuZ3RoID4gMCB8fCBpblJhbmdlIHx8IGluRXNjYXBlKSB7XG4gICAgICAvLyBQYXJzZSBmYWlsdXJlLiBUYWtlIGFsbCBjaGFyYWN0ZXJzIGZyb20gdGhpcyBzZWdtZW50IGxpdGVyYWxseS5cbiAgICAgIHNlZ21lbnQgPSBcIlwiO1xuICAgICAgZm9yIChjb25zdCBjIG9mIGdsb2Iuc2xpY2UoaiwgaSkpIHtcbiAgICAgICAgc2VnbWVudCArPSBSRUdfRVhQX0VTQ0FQRV9DSEFSUy5pbmNsdWRlcyhjIGFzIFJlZ0V4cEVzY2FwZUNoYXIpXG4gICAgICAgICAgPyBgXFxcXCR7Y31gXG4gICAgICAgICAgOiBjO1xuICAgICAgICBlbmRzV2l0aFNlcCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlZ0V4cFN0cmluZyArPSBzZWdtZW50O1xuICAgIGlmICghZW5kc1dpdGhTZXApIHtcbiAgICAgIHJlZ0V4cFN0cmluZyArPSBpIDwgZ2xvYi5sZW5ndGggPyBjLnNlcCA6IGMuc2VwTWF5YmU7XG4gICAgICBlbmRzV2l0aFNlcCA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gVGVybWluYXRlcyB3aXRoIGBpYCBhdCB0aGUgc3RhcnQgb2YgdGhlIG5leHQgc2VnbWVudC5cbiAgICB3aGlsZSAoYy5zZXBzLmluY2x1ZGVzKGdsb2JbaV0hKSkgaSsrO1xuXG4gICAgaiA9IGk7XG4gIH1cblxuICByZWdFeHBTdHJpbmcgPSBgXiR7cmVnRXhwU3RyaW5nfSRgO1xuICByZXR1cm4gbmV3IFJlZ0V4cChyZWdFeHBTdHJpbmcsIGNhc2VJbnNlbnNpdGl2ZSA/IFwiaVwiIDogXCJcIik7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQzs7O0NBR0MsR0F1QkQsTUFBTSx1QkFBdUI7RUFDM0I7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtDQUNEO0FBQ0QsTUFBTSxxQkFBcUI7RUFBQztFQUFLO0VBQU07Q0FBSTtBQWUzQyxPQUFPLFNBQVMsY0FDZCxDQUFnQixFQUNoQixJQUFZLEVBQ1osRUFDRSxXQUFXLElBQUksRUFDZixVQUFVLGlCQUFpQixJQUFJLEVBQy9CLGVBQWU7QUFDZixrQkFBa0IsS0FBSyxFQUNYLEdBQUcsQ0FBQyxDQUFDO0VBRW5CLElBQUksU0FBUyxJQUFJO0lBQ2YsT0FBTztFQUNUO0VBRUEsOEJBQThCO0VBQzlCLElBQUksWUFBWSxLQUFLLE1BQU07RUFDM0IsTUFBTyxZQUFZLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBSTtFQUMvRCxPQUFPLEtBQUssS0FBSyxDQUFDLEdBQUc7RUFFckIsSUFBSSxlQUFlO0VBRW5CLHVFQUF1RTtFQUN2RSxJQUFLLElBQUksSUFBSSxHQUFHLElBQUksS0FBSyxNQUFNLEVBQUc7SUFDaEMsSUFBSSxVQUFVO0lBQ2QsTUFBTSxhQUF1QixFQUFFO0lBQy9CLElBQUksVUFBVTtJQUNkLElBQUksV0FBVztJQUNmLElBQUksY0FBYztJQUNsQixJQUFJLElBQUk7SUFFUix1RUFBdUU7SUFDdkUsTUFBTyxJQUFJLEtBQUssTUFBTSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUksSUFBSztNQUN6RCxJQUFJLFVBQVU7UUFD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 +// denoCacheMetadata=14023822740281142119,2406781536396885475
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/6a34c89abc1f2de5e2abf89333e993b3cd10d3aaa33652f033913f0e59218890.js b/vendor/gen/https/jsr.io/6a34c89abc1f2de5e2abf89333e993b3cd10d3aaa33652f033913f0e59218890.js new file mode 100644 index 0000000..f1e083e --- /dev/null +++ b/vendor/gen/https/jsr.io/6a34c89abc1f2de5e2abf89333e993b3cd10d3aaa33652f033913f0e59218890.js @@ -0,0 +1,93 @@ +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { isEOL } from "./_chars.ts"; +import { LoaderState } from "./_loader_state.ts"; +import { SCHEMA_MAP } from "./_schema.ts"; +function sanitizeInput(input) { + input = String(input); + if (input.length > 0) { + // Add trailing `\n` if not exists + if (!isEOL(input.charCodeAt(input.length - 1))) input += "\n"; + // Strip BOM + if (input.charCodeAt(0) === 0xfeff) input = input.slice(1); + } + // Use 0 as string terminator. That significantly simplifies bounds check. + input += "\0"; + return input; +} +/** + * Parse and return a YAML string as a parsed YAML document object. + * + * Note: This does not support functions. Untrusted data is safe to parse. + * + * @example Usage + * ```ts + * import { parse } from "@std/yaml/parse"; + * import { assertEquals } from "@std/assert"; + * + * const data = parse(` + * id: 1 + * name: Alice + * `); + * + * assertEquals(data, { id: 1, name: "Alice" }); + * ``` + * + * @throws {SyntaxError} Throws error on invalid YAML. + * @param content YAML string to parse. + * @param options Parsing options. + * @returns Parsed document. + */ export function parse(content, options = {}) { + content = sanitizeInput(content); + const state = new LoaderState(content, { + ...options, + schema: SCHEMA_MAP.get(options.schema) + }); + const documentGenerator = state.readDocuments(); + const document = documentGenerator.next().value; + if (!documentGenerator.next().done) { + throw new SyntaxError("Found more than 1 document in the stream: expected a single document"); + } + return document ?? null; +} +/** + * Same as {@linkcode parse}, but understands multi-document YAML sources, and + * returns multiple parsed YAML document objects. + * + * @example Usage + * ```ts + * import { parseAll } from "@std/yaml/parse"; + * import { assertEquals } from "@std/assert"; + * + * const data = parseAll(` + * --- + * id: 1 + * name: Alice + * --- + * id: 2 + * name: Bob + * --- + * id: 3 + * name: Eve + * `); + * assertEquals(data, [ { id: 1, name: "Alice" }, { id: 2, name: "Bob" }, { id: 3, name: "Eve" }]); + * ``` + * + * @param content YAML string to parse. + * @param options Parsing options. + * @returns Array of parsed documents. + */ export function parseAll(content, options = {}) { + content = sanitizeInput(content); + const state = new LoaderState(content, { + ...options, + schema: SCHEMA_MAP.get(options.schema) + }); + return [ + ...state.readDocuments() + ]; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQveWFtbC8xLjAuNi9wYXJzZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQb3J0ZWQgZnJvbSBqcy15YW1sIHYzLjEzLjE6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWNhL2pzLXlhbWwvY29tbWl0LzY2NWFhZGRhNDIzNDlkY2FlODY5ZjEyMDQwZDliMTBlZjE4ZDEyZGFcbi8vIENvcHlyaWdodCAyMDExLTIwMTUgYnkgVml0YWx5IFB1enJpbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBpc0VPTCB9IGZyb20gXCIuL19jaGFycy50c1wiO1xuaW1wb3J0IHsgTG9hZGVyU3RhdGUgfSBmcm9tIFwiLi9fbG9hZGVyX3N0YXRlLnRzXCI7XG5pbXBvcnQgeyBTQ0hFTUFfTUFQLCB0eXBlIFNjaGVtYVR5cGUgfSBmcm9tIFwiLi9fc2NoZW1hLnRzXCI7XG5cbmV4cG9ydCB0eXBlIHsgU2NoZW1hVHlwZSB9O1xuXG4vKiogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBwYXJzZX0uICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBzY2hlbWEgdG8gdXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7XCJkZWZhdWx0XCJ9XG4gICAqL1xuICBzY2hlbWE/OiBTY2hlbWFUeXBlO1xuICAvKipcbiAgICogSWYgYHRydWVgLCBkdXBsaWNhdGUga2V5cyB3aWxsIG92ZXJ3cml0ZSBwcmV2aW91cyB2YWx1ZXMuIE90aGVyd2lzZSxcbiAgICogZHVwbGljYXRlIGtleXMgd2lsbCB0aHJvdyBhIHtAbGlua2NvZGUgU3ludGF4RXJyb3J9LlxuICAgKlxuICAgKiBAZGVmYXVsdCB7ZmFsc2V9XG4gICAqL1xuICBhbGxvd0R1cGxpY2F0ZUtleXM/OiBib29sZWFuO1xuICAvKipcbiAgICogSWYgZGVmaW5lZCwgYSBmdW5jdGlvbiB0byBjYWxsIG9uIHdhcm5pbmcgbWVzc2FnZXMgdGFraW5nIGFuXG4gICAqIHtAbGlua2NvZGUgRXJyb3J9IGFzIGl0cyBvbmx5IGFyZ3VtZW50LlxuICAgKi9cbiAgb25XYXJuaW5nPyhlcnJvcjogRXJyb3IpOiB2b2lkO1xufVxuXG5mdW5jdGlvbiBzYW5pdGl6ZUlucHV0KGlucHV0OiBzdHJpbmcpIHtcbiAgaW5wdXQgPSBTdHJpbmcoaW5wdXQpO1xuXG4gIGlmIChpbnB1dC5sZW5ndGggPiAwKSB7XG4gICAgLy8gQWRkIHRyYWlsaW5nIGBcXG5gIGlmIG5vdCBleGlzdHNcbiAgICBpZiAoIWlzRU9MKGlucHV0LmNoYXJDb2RlQXQoaW5wdXQubGVuZ3RoIC0gMSkpKSBpbnB1dCArPSBcIlxcblwiO1xuXG4gICAgLy8gU3RyaXAgQk9NXG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQoMCkgPT09IDB4ZmVmZikgaW5wdXQgPSBpbnB1dC5zbGljZSgxKTtcbiAgfVxuXG4gIC8vIFVzZSAwIGFzIHN0cmluZyB0ZXJtaW5hdG9yLiBUaGF0IHNpZ25pZmljYW50bHkgc2ltcGxpZmllcyBib3VuZHMgY2hlY2suXG4gIGlucHV0ICs9IFwiXFwwXCI7XG5cbiAgcmV0dXJuIGlucHV0O1xufVxuXG4vKipcbiAqIFBhcnNlIGFuZCByZXR1cm4gYSBZQU1MIHN0cmluZyBhcyBhIHBhcnNlZCBZQU1MIGRvY3VtZW50IG9iamVjdC5cbiAqXG4gKiBOb3RlOiBUaGlzIGRvZXMgbm90IHN1cHBvcnQgZnVuY3Rpb25zLiBVbnRydXN0ZWQgZGF0YSBpcyBzYWZlIHRvIHBhcnNlLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgcGFyc2UgfSBmcm9tIFwiQHN0ZC95YW1sL3BhcnNlXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBkYXRhID0gcGFyc2UoYFxuICogaWQ6IDFcbiAqIG5hbWU6IEFsaWNlXG4gKiBgKTtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoZGF0YSwgeyBpZDogMSwgbmFtZTogXCJBbGljZVwiIH0pO1xuICogYGBgXG4gKlxuICogQHRocm93cyB7U3ludGF4RXJyb3J9IFRocm93cyBlcnJvciBvbiBpbnZhbGlkIFlBTUwuXG4gKiBAcGFyYW0gY29udGVudCBZQU1MIHN0cmluZyB0byBwYXJzZS5cbiAqIEBwYXJhbSBvcHRpb25zIFBhcnNpbmcgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFBhcnNlZCBkb2N1bWVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKFxuICBjb250ZW50OiBzdHJpbmcsXG4gIG9wdGlvbnM6IFBhcnNlT3B0aW9ucyA9IHt9LFxuKTogdW5rbm93biB7XG4gIGNvbnRlbnQgPSBzYW5pdGl6ZUlucHV0KGNvbnRlbnQpO1xuICBjb25zdCBzdGF0ZSA9IG5ldyBMb2FkZXJTdGF0ZShjb250ZW50LCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBzY2hlbWE6IFNDSEVNQV9NQVAuZ2V0KG9wdGlvbnMuc2NoZW1hISkhLFxuICB9KTtcbiAgY29uc3QgZG9jdW1lbnRHZW5lcmF0b3IgPSBzdGF0ZS5yZWFkRG9jdW1lbnRzKCk7XG4gIGNvbnN0IGRvY3VtZW50ID0gZG9jdW1lbnRHZW5lcmF0b3IubmV4dCgpLnZhbHVlO1xuICBpZiAoIWRvY3VtZW50R2VuZXJhdG9yLm5leHQoKS5kb25lKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgXCJGb3VuZCBtb3JlIHRoYW4gMSBkb2N1bWVudCBpbiB0aGUgc3RyZWFtOiBleHBlY3RlZCBhIHNpbmdsZSBkb2N1bWVudFwiLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGRvY3VtZW50ID8/IG51bGw7XG59XG5cbi8qKlxuICogU2FtZSBhcyB7QGxpbmtjb2RlIHBhcnNlfSwgYnV0IHVuZGVyc3RhbmRzIG11bHRpLWRvY3VtZW50IFlBTUwgc291cmNlcywgYW5kXG4gKiByZXR1cm5zIG11bHRpcGxlIHBhcnNlZCBZQU1MIGRvY3VtZW50IG9iamVjdHMuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBwYXJzZUFsbCB9IGZyb20gXCJAc3RkL3lhbWwvcGFyc2VcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IGRhdGEgPSBwYXJzZUFsbChgXG4gKiAtLS1cbiAqIGlkOiAxXG4gKiBuYW1lOiBBbGljZVxuICogLS0tXG4gKiBpZDogMlxuICogbmFtZTogQm9iXG4gKiAtLS1cbiAqIGlkOiAzXG4gKiBuYW1lOiBFdmVcbiAqIGApO1xuICogYXNzZXJ0RXF1YWxzKGRhdGEsIFsgeyBpZDogMSwgbmFtZTogXCJBbGljZVwiIH0sIHsgaWQ6IDIsIG5hbWU6IFwiQm9iXCIgfSwgeyBpZDogMywgbmFtZTogXCJFdmVcIiB9XSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gY29udGVudCBZQU1MIHN0cmluZyB0byBwYXJzZS5cbiAqIEBwYXJhbSBvcHRpb25zIFBhcnNpbmcgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEFycmF5IG9mIHBhcnNlZCBkb2N1bWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFsbChjb250ZW50OiBzdHJpbmcsIG9wdGlvbnM6IFBhcnNlT3B0aW9ucyA9IHt9KTogdW5rbm93biB7XG4gIGNvbnRlbnQgPSBzYW5pdGl6ZUlucHV0KGNvbnRlbnQpO1xuICBjb25zdCBzdGF0ZSA9IG5ldyBMb2FkZXJTdGF0ZShjb250ZW50LCB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBzY2hlbWE6IFNDSEVNQV9NQVAuZ2V0KG9wdGlvbnMuc2NoZW1hISkhLFxuICB9KTtcbiAgcmV0dXJuIFsuLi5zdGF0ZS5yZWFkRG9jdW1lbnRzKCldO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixvRkFBb0Y7QUFDcEYsMEVBQTBFO0FBQzFFLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckMsU0FBUyxLQUFLLFFBQVEsY0FBYztBQUNwQyxTQUFTLFdBQVcsUUFBUSxxQkFBcUI7QUFDakQsU0FBUyxVQUFVLFFBQXlCLGVBQWU7QUEwQjNELFNBQVMsY0FBYyxLQUFhO0VBQ2xDLFFBQVEsT0FBTztFQUVmLElBQUksTUFBTSxNQUFNLEdBQUcsR0FBRztJQUNwQixrQ0FBa0M7SUFDbEMsSUFBSSxDQUFDLE1BQU0sTUFBTSxVQUFVLENBQUMsTUFBTSxNQUFNLEdBQUcsS0FBSyxTQUFTO0lBRXpELFlBQVk7SUFDWixJQUFJLE1BQU0sVUFBVSxDQUFDLE9BQU8sUUFBUSxRQUFRLE1BQU0sS0FBSyxDQUFDO0VBQzFEO0VBRUEsMEVBQTBFO0VBQzFFLFNBQVM7RUFFVCxPQUFPO0FBQ1Q7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXNCQyxHQUNELE9BQU8sU0FBUyxNQUNkLE9BQWUsRUFDZixVQUF3QixDQUFDLENBQUM7RUFFMUIsVUFBVSxjQUFjO0VBQ3hCLE1BQU0sUUFBUSxJQUFJLFlBQVksU0FBUztJQUNyQyxHQUFHLE9BQU87SUFDVixRQUFRLFdBQVcsR0FBRyxDQUFDLFFBQVEsTUFBTTtFQUN2QztFQUNBLE1BQU0sb0JBQW9CLE1BQU0sYUFBYTtFQUM3QyxNQUFNLFdBQVcsa0JBQWtCLElBQUksR0FBRyxLQUFLO0VBQy9DLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxHQUFHLElBQUksRUFBRTtJQUNsQyxNQUFNLElBQUksWUFDUjtFQUVKO0VBQ0EsT0FBTyxZQUFZO0FBQ3JCO0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBMEJDLEdBQ0QsT0FBTyxTQUFTLFNBQVMsT0FBZSxFQUFFLFVBQXdCLENBQUMsQ0FBQztFQUNsRSxVQUFVLGNBQWM7RUFDeEIsTUFBTSxRQUFRLElBQUksWUFBWSxTQUFTO0lBQ3JDLEdBQUcsT0FBTztJQUNWLFFBQVEsV0FBVyxHQUFHLENBQUMsUUFBUSxNQUFNO0VBQ3ZDO0VBQ0EsT0FBTztPQUFJLE1BQU0sYUFBYTtHQUFHO0FBQ25DIn0= +// denoCacheMetadata=14411214152827362767,2587073948749365229
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/6b0fe05b55b67d65e900040720f1786785fe3230bb279928ba030016c815aeff.js b/vendor/gen/https/jsr.io/6b0fe05b55b67d65e900040720f1786785fe3230bb279928ba030016c815aeff.js new file mode 100644 index 0000000..2595722 --- /dev/null +++ b/vendor/gen/https/jsr.io/6b0fe05b55b67d65e900040720f1786785fe3230bb279928ba030016c815aeff.js @@ -0,0 +1,31 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { assertArg } from "../_common/from_file_url.ts"; +/** + * Converts a file URL to a path string. + * + * @example Usage + * ```ts + * import { fromFileUrl } from "@std/path/windows/from-file-url"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(fromFileUrl("file:///home/foo"), "\\home\\foo"); + * assertEquals(fromFileUrl("file:///C:/Users/foo"), "C:\\Users\\foo"); + * assertEquals(fromFileUrl("file://localhost/home/foo"), "\\home\\foo"); + * ``` + * + * @param url The file URL to convert. + * @returns The path string. + */ export function fromFileUrl(url) { + url = assertArg(url); + let path = decodeURIComponent(url.pathname.replace(/\//g, "\\").replace(/%(?![0-9A-Fa-f]{2})/g, "%25")).replace(/^\\*([A-Za-z]:)(\\|$)/, "$1\\"); + if (url.hostname !== "") { + // Note: The `URL` implementation guarantees that the drive letter and + // hostname are mutually exclusive. Otherwise it would not have been valid + // to append the hostname and path like this. + path = `\\\\${url.hostname}${path}`; + } + return path; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS93aW5kb3dzL2Zyb21fZmlsZV91cmwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgYXNzZXJ0QXJnIH0gZnJvbSBcIi4uL19jb21tb24vZnJvbV9maWxlX3VybC50c1wiO1xuXG4vKipcbiAqIENvbnZlcnRzIGEgZmlsZSBVUkwgdG8gYSBwYXRoIHN0cmluZy5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGZyb21GaWxlVXJsIH0gZnJvbSBcIkBzdGQvcGF0aC93aW5kb3dzL2Zyb20tZmlsZS11cmxcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydEVxdWFscyhmcm9tRmlsZVVybChcImZpbGU6Ly8vaG9tZS9mb29cIiksIFwiXFxcXGhvbWVcXFxcZm9vXCIpO1xuICogYXNzZXJ0RXF1YWxzKGZyb21GaWxlVXJsKFwiZmlsZTovLy9DOi9Vc2Vycy9mb29cIiksIFwiQzpcXFxcVXNlcnNcXFxcZm9vXCIpO1xuICogYXNzZXJ0RXF1YWxzKGZyb21GaWxlVXJsKFwiZmlsZTovL2xvY2FsaG9zdC9ob21lL2Zvb1wiKSwgXCJcXFxcaG9tZVxcXFxmb29cIik7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gdXJsIFRoZSBmaWxlIFVSTCB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIHBhdGggc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbUZpbGVVcmwodXJsOiBVUkwgfCBzdHJpbmcpOiBzdHJpbmcge1xuICB1cmwgPSBhc3NlcnRBcmcodXJsKTtcbiAgbGV0IHBhdGggPSBkZWNvZGVVUklDb21wb25lbnQoXG4gICAgdXJsLnBhdGhuYW1lLnJlcGxhY2UoL1xcLy9nLCBcIlxcXFxcIikucmVwbGFjZSgvJSg/IVswLTlBLUZhLWZdezJ9KS9nLCBcIiUyNVwiKSxcbiAgKS5yZXBsYWNlKC9eXFxcXCooW0EtWmEtel06KShcXFxcfCQpLywgXCIkMVxcXFxcIik7XG4gIGlmICh1cmwuaG9zdG5hbWUgIT09IFwiXCIpIHtcbiAgICAvLyBOb3RlOiBUaGUgYFVSTGAgaW1wbGVtZW50YXRpb24gZ3VhcmFudGVlcyB0aGF0IHRoZSBkcml2ZSBsZXR0ZXIgYW5kXG4gICAgLy8gaG9zdG5hbWUgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gT3RoZXJ3aXNlIGl0IHdvdWxkIG5vdCBoYXZlIGJlZW4gdmFsaWRcbiAgICAvLyB0byBhcHBlbmQgdGhlIGhvc3RuYW1lIGFuZCBwYXRoIGxpa2UgdGhpcy5cbiAgICBwYXRoID0gYFxcXFxcXFxcJHt1cmwuaG9zdG5hbWV9JHtwYXRofWA7XG4gIH1cbiAgcmV0dXJuIHBhdGg7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQyxTQUFTLFNBQVMsUUFBUSw4QkFBOEI7QUFFeEQ7Ozs7Ozs7Ozs7Ozs7OztDQWVDLEdBQ0QsT0FBTyxTQUFTLFlBQVksR0FBaUI7RUFDM0MsTUFBTSxVQUFVO0VBQ2hCLElBQUksT0FBTyxtQkFDVCxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxNQUFNLE9BQU8sQ0FBQyx3QkFBd0IsUUFDbEUsT0FBTyxDQUFDLHlCQUF5QjtFQUNuQyxJQUFJLElBQUksUUFBUSxLQUFLLElBQUk7SUFDdkIsc0VBQXNFO0lBQ3RFLDBFQUEwRTtJQUMxRSw2Q0FBNkM7SUFDN0MsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLFFBQVEsR0FBRyxNQUFNO0VBQ3JDO0VBQ0EsT0FBTztBQUNUIn0= +// denoCacheMetadata=11528200222592288066,710286884957873560
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/6b4d93c891018ad595cf8ce1de36ba2333f9ab24ae6ffb40b9c56bee82480636.js b/vendor/gen/https/jsr.io/6b4d93c891018ad595cf8ce1de36ba2333f9ab24ae6ffb40b9c56bee82480636.js new file mode 100644 index 0000000..7d3bf6d --- /dev/null +++ b/vendor/gen/https/jsr.io/6b4d93c891018ad595cf8ce1de36ba2333f9ab24ae6ffb40b9c56bee82480636.js @@ -0,0 +1,11 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +export function assertArg(url) { + url = url instanceof URL ? url : new URL(url); + if (url.protocol !== "file:") { + throw new TypeError(`URL must be a file URL: received "${url.protocol}"`); + } + return url; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9fY29tbW9uL2Zyb21fZmlsZV91cmwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEFyZyh1cmw6IFVSTCB8IHN0cmluZykge1xuICB1cmwgPSB1cmwgaW5zdGFuY2VvZiBVUkwgPyB1cmwgOiBuZXcgVVJMKHVybCk7XG4gIGlmICh1cmwucHJvdG9jb2wgIT09IFwiZmlsZTpcIikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBgVVJMIG11c3QgYmUgYSBmaWxlIFVSTDogcmVjZWl2ZWQgXCIke3VybC5wcm90b2NvbH1cImAsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gdXJsO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckMsT0FBTyxTQUFTLFVBQVUsR0FBaUI7RUFDekMsTUFBTSxlQUFlLE1BQU0sTUFBTSxJQUFJLElBQUk7RUFDekMsSUFBSSxJQUFJLFFBQVEsS0FBSyxTQUFTO0lBQzVCLE1BQU0sSUFBSSxVQUNSLENBQUMsa0NBQWtDLEVBQUUsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDO0VBRXhEO0VBQ0EsT0FBTztBQUNUIn0= +// denoCacheMetadata=13899213134167469369,301577986770782634
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/6dc153e700218eaf14764539b39826de198c3a73de2cc26f56ef42136a3dde49.js b/vendor/gen/https/jsr.io/6dc153e700218eaf14764539b39826de198c3a73de2cc26f56ef42136a3dde49.js new file mode 100644 index 0000000..f2b15ad --- /dev/null +++ b/vendor/gen/https/jsr.io/6dc153e700218eaf14764539b39826de198c3a73de2cc26f56ef42136a3dde49.js @@ -0,0 +1,41 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { extractFrontMatter } from "./_shared.ts"; +import { parse } from "jsr:@std/toml@^1.0.3/parse"; +import { EXTRACT_TOML_REGEXP } from "./_formats.ts"; +/** + * Extracts and parses {@link https://toml.io | TOML} from the metadata of + * front matter content. + * + * @example Extract TOML front matter + * ```ts + * import { extract } from "@std/front-matter/toml"; + * import { assertEquals } from "@std/assert"; + * + * const output = `---toml + * title = "Three dashes marks the spot" + * --- + * Hello, world!`; + * const result = extract(output); + * + * assertEquals(result, { + * frontMatter: 'title = "Three dashes marks the spot"', + * body: "Hello, world!", + * attrs: { title: "Three dashes marks the spot" }, + * }); + * ``` + * + * @typeParam T The type of the parsed front matter. + * @param text The text to extract TOML front matter from. + * @returns The extracted TOML front matter and body content. + */ export function extract(text) { + const { frontMatter, body } = extractFrontMatter(text, EXTRACT_TOML_REGEXP); + const attrs = frontMatter ? parse(frontMatter) : {}; + return { + frontMatter, + body, + attrs + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnJvbnQtbWF0dGVyLzEuMC45L3RvbWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgZXh0cmFjdEZyb250TWF0dGVyIH0gZnJvbSBcIi4vX3NoYXJlZC50c1wiO1xuaW1wb3J0IHsgcGFyc2UgfSBmcm9tIFwianNyOkBzdGQvdG9tbEBeMS4wLjMvcGFyc2VcIjtcbmltcG9ydCB0eXBlIHsgRXh0cmFjdCB9IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5pbXBvcnQgeyBFWFRSQUNUX1RPTUxfUkVHRVhQIH0gZnJvbSBcIi4vX2Zvcm1hdHMudHNcIjtcblxuZXhwb3J0IHR5cGUgeyBFeHRyYWN0IH07XG5cbi8qKlxuICogRXh0cmFjdHMgYW5kIHBhcnNlcyB7QGxpbmsgaHR0cHM6Ly90b21sLmlvIHwgVE9NTH0gZnJvbSB0aGUgbWV0YWRhdGEgb2ZcbiAqIGZyb250IG1hdHRlciBjb250ZW50LlxuICpcbiAqIEBleGFtcGxlIEV4dHJhY3QgVE9NTCBmcm9udCBtYXR0ZXJcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBleHRyYWN0IH0gZnJvbSBcIkBzdGQvZnJvbnQtbWF0dGVyL3RvbWxcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IG91dHB1dCA9IGAtLS10b21sXG4gKiB0aXRsZSA9IFwiVGhyZWUgZGFzaGVzIG1hcmtzIHRoZSBzcG90XCJcbiAqIC0tLVxuICogSGVsbG8sIHdvcmxkIWA7XG4gKiBjb25zdCByZXN1bHQgPSBleHRyYWN0KG91dHB1dCk7XG4gKlxuICogYXNzZXJ0RXF1YWxzKHJlc3VsdCwge1xuICogICBmcm9udE1hdHRlcjogJ3RpdGxlID0gXCJUaHJlZSBkYXNoZXMgbWFya3MgdGhlIHNwb3RcIicsXG4gKiAgIGJvZHk6IFwiSGVsbG8sIHdvcmxkIVwiLFxuICogICBhdHRyczogeyB0aXRsZTogXCJUaHJlZSBkYXNoZXMgbWFya3MgdGhlIHNwb3RcIiB9LFxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAdHlwZVBhcmFtIFQgVGhlIHR5cGUgb2YgdGhlIHBhcnNlZCBmcm9udCBtYXR0ZXIuXG4gKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBleHRyYWN0IFRPTUwgZnJvbnQgbWF0dGVyIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgZXh0cmFjdGVkIFRPTUwgZnJvbnQgbWF0dGVyIGFuZCBib2R5IGNvbnRlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0PFQ+KHRleHQ6IHN0cmluZyk6IEV4dHJhY3Q8VD4ge1xuICBjb25zdCB7IGZyb250TWF0dGVyLCBib2R5IH0gPSBleHRyYWN0RnJvbnRNYXR0ZXIodGV4dCwgRVhUUkFDVF9UT01MX1JFR0VYUCk7XG5cbiAgY29uc3QgYXR0cnMgPSAoZnJvbnRNYXR0ZXIgPyBwYXJzZShmcm9udE1hdHRlcikgOiB7fSkgYXMgVDtcbiAgcmV0dXJuIHsgZnJvbnRNYXR0ZXIsIGJvZHksIGF0dHJzIH07XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQyxTQUFTLGtCQUFrQixRQUFRLGVBQWU7QUFDbEQsU0FBUyxLQUFLLFFBQVEsNkJBQTZCO0FBRW5ELFNBQVMsbUJBQW1CLFFBQVEsZ0JBQWdCO0FBSXBEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBeUJDLEdBQ0QsT0FBTyxTQUFTLFFBQVcsSUFBWTtFQUNyQyxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxHQUFHLG1CQUFtQixNQUFNO0VBRXZELE1BQU0sUUFBUyxjQUFjLE1BQU0sZUFBZSxDQUFDO0VBQ25ELE9BQU87SUFBRTtJQUFhO0lBQU07RUFBTTtBQUNwQyJ9 +// denoCacheMetadata=15434664675513041108,14144867996205728024
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/6e25cb4ac2850b01023cf179359c85777db38a8dd21d87c852a04d7ea74493fc.js b/vendor/gen/https/jsr.io/6e25cb4ac2850b01023cf179359c85777db38a8dd21d87c852a04d7ea74493fc.js new file mode 100644 index 0000000..f196bef --- /dev/null +++ b/vendor/gen/https/jsr.io/6e25cb4ac2850b01023cf179359c85777db38a8dd21d87c852a04d7ea74493fc.js @@ -0,0 +1,139 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { CHAR_COLON } from "../_common/constants.ts"; +import { normalizeString } from "../_common/normalize_string.ts"; +import { assertPath } from "../_common/assert_path.ts"; +import { isPathSeparator, isWindowsDeviceRoot } from "./_util.ts"; +/** + * Resolves path segments into a `path`. + * + * @example Usage + * ```ts + * import { resolve } from "@std/path/windows/resolve"; + * import { assertEquals } from "@std/assert"; + * + * const resolved = resolve("C:\\foo\\bar", "..\\baz"); + * assertEquals(resolved, "C:\\foo\\baz"); + * ``` + * + * @param pathSegments The path segments to process to path + * @returns The resolved path + */ export function resolve(...pathSegments) { + let resolvedDevice = ""; + let resolvedTail = ""; + let resolvedAbsolute = false; + for(let i = pathSegments.length - 1; i >= -1; i--){ + let path; + // deno-lint-ignore no-explicit-any + const { Deno } = globalThis; + if (i >= 0) { + path = pathSegments[i]; + } else if (!resolvedDevice) { + if (typeof Deno?.cwd !== "function") { + throw new TypeError("Resolved a drive-letter-less path without a current working directory (CWD)"); + } + path = Deno.cwd(); + } else { + if (typeof Deno?.env?.get !== "function" || typeof Deno?.cwd !== "function") { + throw new TypeError("Resolved a relative path without a current working directory (CWD)"); + } + path = Deno.cwd(); + // Verify that a cwd was found and that it actually points + // to our drive. If not, default to the drive's root. + if (path === undefined || path.slice(0, 3).toLowerCase() !== `${resolvedDevice.toLowerCase()}\\`) { + path = `${resolvedDevice}\\`; + } + } + assertPath(path); + const len = path.length; + // Skip empty entries + if (len === 0) continue; + let rootEnd = 0; + let device = ""; + let isAbsolute = false; + const code = path.charCodeAt(0); + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + // If we started with a separator, we know we at least have an + // absolute path of some kind (UNC or otherwise) + isAbsolute = true; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for(; j < len; ++j){ + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + device = `\\\\${firstPart}\\${path.slice(last)}`; + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator + rootEnd = 1; + isAbsolute = true; + } + if (device.length > 0 && resolvedDevice.length > 0 && device.toLowerCase() !== resolvedDevice.toLowerCase()) { + continue; + } + if (resolvedDevice.length === 0 && device.length > 0) { + resolvedDevice = device; + } + if (!resolvedAbsolute) { + resolvedTail = `${path.slice(rootEnd)}\\${resolvedTail}`; + resolvedAbsolute = isAbsolute; + } + if (resolvedAbsolute && resolvedDevice.length > 0) break; + } + // At this point the path should be resolved to a full absolute path, + // but handle relative paths to be safe (might happen when Deno.cwd() + // fails) + // Normalize the tail path + resolvedTail = normalizeString(resolvedTail, !resolvedAbsolute, "\\", isPathSeparator); + return resolvedDevice + (resolvedAbsolute ? "\\" : "") + resolvedTail || "."; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS93aW5kb3dzL3Jlc29sdmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgQ0hBUl9DT0xPTiB9IGZyb20gXCIuLi9fY29tbW9uL2NvbnN0YW50cy50c1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplU3RyaW5nIH0gZnJvbSBcIi4uL19jb21tb24vbm9ybWFsaXplX3N0cmluZy50c1wiO1xuaW1wb3J0IHsgYXNzZXJ0UGF0aCB9IGZyb20gXCIuLi9fY29tbW9uL2Fzc2VydF9wYXRoLnRzXCI7XG5pbXBvcnQgeyBpc1BhdGhTZXBhcmF0b3IsIGlzV2luZG93c0RldmljZVJvb3QgfSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuXG4vKipcbiAqIFJlc29sdmVzIHBhdGggc2VnbWVudHMgaW50byBhIGBwYXRoYC5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHJlc29sdmUgfSBmcm9tIFwiQHN0ZC9wYXRoL3dpbmRvd3MvcmVzb2x2ZVwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlKFwiQzpcXFxcZm9vXFxcXGJhclwiLCBcIi4uXFxcXGJhelwiKTtcbiAqIGFzc2VydEVxdWFscyhyZXNvbHZlZCwgXCJDOlxcXFxmb29cXFxcYmF6XCIpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHBhdGhTZWdtZW50cyBUaGUgcGF0aCBzZWdtZW50cyB0byBwcm9jZXNzIHRvIHBhdGhcbiAqIEByZXR1cm5zIFRoZSByZXNvbHZlZCBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlKC4uLnBhdGhTZWdtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICBsZXQgcmVzb2x2ZWREZXZpY2UgPSBcIlwiO1xuICBsZXQgcmVzb2x2ZWRUYWlsID0gXCJcIjtcbiAgbGV0IHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZTtcblxuICBmb3IgKGxldCBpID0gcGF0aFNlZ21lbnRzLmxlbmd0aCAtIDE7IGkgPj0gLTE7IGktLSkge1xuICAgIGxldCBwYXRoOiBzdHJpbmc7XG4gICAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCB7IERlbm8gfSA9IGdsb2JhbFRoaXMgYXMgYW55O1xuICAgIGlmIChpID49IDApIHtcbiAgICAgIHBhdGggPSBwYXRoU2VnbWVudHNbaV0hO1xuICAgIH0gZWxzZSBpZiAoIXJlc29sdmVkRGV2aWNlKSB7XG4gICAgICBpZiAodHlwZW9mIERlbm8/LmN3ZCAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgXCJSZXNvbHZlZCBhIGRyaXZlLWxldHRlci1sZXNzIHBhdGggd2l0aG91dCBhIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgKENXRClcIixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHBhdGggPSBEZW5vLmN3ZCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBEZW5vPy5lbnY/LmdldCAhPT0gXCJmdW5jdGlvblwiIHx8IHR5cGVvZiBEZW5vPy5jd2QgIT09IFwiZnVuY3Rpb25cIlxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgXCJSZXNvbHZlZCBhIHJlbGF0aXZlIHBhdGggd2l0aG91dCBhIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgKENXRClcIixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHBhdGggPSBEZW5vLmN3ZCgpO1xuXG4gICAgICAvLyBWZXJpZnkgdGhhdCBhIGN3ZCB3YXMgZm91bmQgYW5kIHRoYXQgaXQgYWN0dWFsbHkgcG9pbnRzXG4gICAgICAvLyB0byBvdXIgZHJpdmUuIElmIG5vdCwgZGVmYXVsdCB0byB0aGUgZHJpdmUncyByb290LlxuICAgICAgaWYgKFxuICAgICAgICBwYXRoID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgcGF0aC5zbGljZSgwLCAzKS50b0xvd2VyQ2FzZSgpICE9PSBgJHtyZXNvbHZlZERldmljZS50b0xvd2VyQ2FzZSgpfVxcXFxgXG4gICAgICApIHtcbiAgICAgICAgcGF0aCA9IGAke3Jlc29sdmVkRGV2aWNlfVxcXFxgO1xuICAgICAgfVxuICAgIH1cblxuICAgIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgICBjb25zdCBsZW4gPSBwYXRoLmxlbmd0aDtcblxuICAgIC8vIFNraXAgZW1wdHkgZW50cmllc1xuICAgIGlmIChsZW4gPT09IDApIGNvbnRpbnVlO1xuXG4gICAgbGV0IHJvb3RFbmQgPSAwO1xuICAgIGxldCBkZXZpY2UgPSBcIlwiO1xuICAgIGxldCBpc0Fic29sdXRlID0gZmFsc2U7XG4gICAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdCgwKTtcblxuICAgIC8vIFRyeSB0byBtYXRjaCBhIHJvb3RcbiAgICBpZiAobGVuID4gMSkge1xuICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgICAvLyBQb3NzaWJsZSBVTkMgcm9vdFxuXG4gICAgICAgIC8vIElmIHdlIHN0YXJ0ZWQgd2l0aCBhIHNlcGFyYXRvciwgd2Uga25vdyB3ZSBhdCBsZWFzdCBoYXZlIGFuXG4gICAgICAgIC8vIGFic29sdXRlIHBhdGggb2Ygc29tZSBraW5kIChVTkMgb3Igb3RoZXJ3aXNlKVxuICAgICAgICBpc0Fic29sdXRlID0gdHJ1ZTtcblxuICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdCgxKSkpIHtcbiAgICAgICAgICAvLyBNYXRjaGVkIGRvdWJsZSBwYXRoIHNlcGFyYXRvciBhdCBiZWdpbm5pbmdcbiAgICAgICAgICBsZXQgaiA9IDI7XG4gICAgICAgICAgbGV0IGxhc3QgPSBqO1xuICAgICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBub24tcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGogPCBsZW4gJiYgaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RQYXJ0ID0gcGF0aC5zbGljZShsYXN0LCBqKTtcbiAgICAgICAgICAgIC8vIE1hdGNoZWQhXG4gICAgICAgICAgICBsYXN0ID0gajtcbiAgICAgICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBwYXRoIHNlcGFyYXRvcnNcbiAgICAgICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICAgICAgaWYgKCFpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGopKSkgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaiA8IGxlbiAmJiBqICE9PSBsYXN0KSB7XG4gICAgICAgICAgICAgIC8vIE1hdGNoZWQhXG4gICAgICAgICAgICAgIGxhc3QgPSBqO1xuICAgICAgICAgICAgICAvLyBNYXRjaCAxIG9yIG1vcmUgbm9uLXBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgICAgICBmb3IgKDsgaiA8IGxlbjsgKytqKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoaiA9PT0gbGVuKSB7XG4gICAgICAgICAgICAgICAgLy8gV2UgbWF0Y2hlZCBhIFVOQyByb290IG9ubHlcbiAgICAgICAgICAgICAgICBkZXZpY2UgPSBgXFxcXFxcXFwke2ZpcnN0UGFydH1cXFxcJHtwYXRoLnNsaWNlKGxhc3QpfWA7XG4gICAgICAgICAgICAgICAgcm9vdEVuZCA9IGo7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgYSBVTkMgcm9vdCB3aXRoIGxlZnRvdmVyc1xuXG4gICAgICAgICAgICAgICAgZGV2aWNlID0gYFxcXFxcXFxcJHtmaXJzdFBhcnR9XFxcXCR7cGF0aC5zbGljZShsYXN0LCBqKX1gO1xuICAgICAgICAgICAgICAgIHJvb3RFbmQgPSBqO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJvb3RFbmQgPSAxO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzV2luZG93c0RldmljZVJvb3QoY29kZSkpIHtcbiAgICAgICAgLy8gUG9zc2libGUgZGV2aWNlIHJvb3RcblxuICAgICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OKSB7XG4gICAgICAgICAgZGV2aWNlID0gcGF0aC5zbGljZSgwLCAyKTtcbiAgICAgICAgICByb290RW5kID0gMjtcbiAgICAgICAgICBpZiAobGVuID4gMikge1xuICAgICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMikpKSB7XG4gICAgICAgICAgICAgIC8vIFRyZWF0IHNlcGFyYXRvciBmb2xsb3dpbmcgZHJpdmUgbmFtZSBhcyBhbiBhYnNvbHV0ZSBwYXRoXG4gICAgICAgICAgICAgIC8vIGluZGljYXRvclxuICAgICAgICAgICAgICBpc0Fic29sdXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgcm9vdEVuZCA9IDM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1BhdGhTZXBhcmF0b3IoY29kZSkpIHtcbiAgICAgIC8vIGBwYXRoYCBjb250YWlucyBqdXN0IGEgcGF0aCBzZXBhcmF0b3JcbiAgICAgIHJvb3RFbmQgPSAxO1xuICAgICAgaXNBYnNvbHV0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgZGV2aWNlLmxlbmd0aCA+IDAgJiZcbiAgICAgIHJlc29sdmVkRGV2aWNlLmxlbmd0aCA+IDAgJiZcbiAgICAgIGRldmljZS50b0xvd2VyQ2FzZSgpICE9PSByZXNvbHZlZERldmljZS50b0xvd2VyQ2FzZSgpXG4gICAgKSB7XG4gICAgICAvLyBUaGlzIHBhdGggcG9pbnRzIHRvIGFub3RoZXIgZGV2aWNlIHNvIGl0IGlzIG5vdCBhcHBsaWNhYmxlXG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAocmVzb2x2ZWREZXZpY2UubGVuZ3RoID09PSAwICYmIGRldmljZS5sZW5ndGggPiAwKSB7XG4gICAgICByZXNvbHZlZERldmljZSA9IGRldmljZTtcbiAgICB9XG4gICAgaWYgKCFyZXNvbHZlZEFic29sdXRlKSB7XG4gICAgICByZXNvbHZlZFRhaWwgPSBgJHtwYXRoLnNsaWNlKHJvb3RFbmQpfVxcXFwke3Jlc29sdmVkVGFpbH1gO1xuICAgICAgcmVzb2x2ZWRBYnNvbHV0ZSA9IGlzQWJzb2x1dGU7XG4gICAgfVxuXG4gICAgaWYgKHJlc29sdmVkQWJzb2x1dGUgJiYgcmVzb2x2ZWREZXZpY2UubGVuZ3RoID4gMCkgYnJlYWs7XG4gIH1cblxuICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwYXRoIHNob3VsZCBiZSByZXNvbHZlZCB0byBhIGZ1bGwgYWJzb2x1dGUgcGF0aCxcbiAgLy8gYnV0IGhhbmRsZSByZWxhdGl2ZSBwYXRocyB0byBiZSBzYWZlIChtaWdodCBoYXBwZW4gd2hlbiBEZW5vLmN3ZCgpXG4gIC8vIGZhaWxzKVxuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgdGFpbCBwYXRoXG4gIHJlc29sdmVkVGFpbCA9IG5vcm1hbGl6ZVN0cmluZyhcbiAgICByZXNvbHZlZFRhaWwsXG4gICAgIXJlc29sdmVkQWJzb2x1dGUsXG4gICAgXCJcXFxcXCIsXG4gICAgaXNQYXRoU2VwYXJhdG9yLFxuICApO1xuXG4gIHJldHVybiByZXNvbHZlZERldmljZSArIChyZXNvbHZlZEFic29sdXRlID8gXCJcXFxcXCIgOiBcIlwiKSArIHJlc29sdmVkVGFpbCB8fCBcIi5cIjtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDLFNBQVMsVUFBVSxRQUFRLDBCQUEwQjtBQUNyRCxTQUFTLGVBQWUsUUFBUSxpQ0FBaUM7QUFDakUsU0FBUyxVQUFVLFFBQVEsNEJBQTRCO0FBQ3ZELFNBQVMsZUFBZSxFQUFFLG1CQUFtQixRQUFRLGFBQWE7QUFFbEU7Ozs7Ozs7Ozs7Ozs7O0NBY0MsR0FDRCxPQUFPLFNBQVMsUUFBUSxHQUFHLFlBQXNCO0VBQy9DLElBQUksaUJBQWlCO0VBQ3JCLElBQUksZUFBZTtFQUNuQixJQUFJLG1CQUFtQjtFQUV2QixJQUFLLElBQUksSUFBSSxhQUFhLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLElBQUs7SUFDbEQsSUFBSTtJQUNKLG1DQUFtQztJQUNuQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUc7SUFDakIsSUFBSSxLQUFLLEdBQUc7TUFDVixPQUFPLFlBQVksQ0FBQyxFQUFFO0lBQ3hCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQjtNQUMxQixJQUFJLE9BQU8sTUFBTSxRQUFRLFlBQVk7UUFDbkMsTUFBTSxJQUFJLFVBQ1I7TUFFSjtNQUNBLE9BQU8sS0FBSyxHQUFHO0lBQ2pCLE9BQU87TUFDTCxJQUNFLE9BQU8sTUFBTSxLQUFLLFFBQVEsY0FBYyxPQUFPLE1BQU0sUUFBUSxZQUM3RDtRQUNBLE1BQU0sSUFBSSxVQUNSO01BRUo7TUFDQSxPQUFPLEtBQUssR0FBRztNQUVmLDBEQUEwRDtNQUMxRCxxREFBcUQ7TUFDckQsSUFDRSxTQUFTLGFBQ1QsS0FBSyxLQUFLLENBQUMsR0FBRyxHQUFHLFdBQVcsT0FB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 +// denoCacheMetadata=10190520586420333420,9848684562424408665
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/6f8f7f5108dda9845849548f2d97c52a64621c94a50080622cbbd6ad1df18725.js b/vendor/gen/https/jsr.io/6f8f7f5108dda9845849548f2d97c52a64621c94a50080622cbbd6ad1df18725.js new file mode 100644 index 0000000..8328c68 --- /dev/null +++ b/vendor/gen/https/jsr.io/6f8f7f5108dda9845849548f2d97c52a64621c94a50080622cbbd6ad1df18725.js @@ -0,0 +1,20 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. +export function stripTrailingSeparators(segment, isSep) { + if (segment.length <= 1) { + return segment; + } + let end = segment.length; + for(let i = segment.length - 1; i > 0; i--){ + if (isSep(segment.charCodeAt(i))) { + end = i; + } else { + break; + } + } + return segment.slice(0, end); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9fY29tbW9uL3N0cmlwX3RyYWlsaW5nX3NlcGFyYXRvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cbi8vIFBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9icm93c2VyaWZ5L3BhdGgtYnJvd3NlcmlmeS9cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwVHJhaWxpbmdTZXBhcmF0b3JzKFxuICBzZWdtZW50OiBzdHJpbmcsXG4gIGlzU2VwOiAoY2hhcjogbnVtYmVyKSA9PiBib29sZWFuLFxuKTogc3RyaW5nIHtcbiAgaWYgKHNlZ21lbnQubGVuZ3RoIDw9IDEpIHtcbiAgICByZXR1cm4gc2VnbWVudDtcbiAgfVxuXG4gIGxldCBlbmQgPSBzZWdtZW50Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpID0gc2VnbWVudC5sZW5ndGggLSAxOyBpID4gMDsgaS0tKSB7XG4gICAgaWYgKGlzU2VwKHNlZ21lbnQuY2hhckNvZGVBdChpKSkpIHtcbiAgICAgIGVuZCA9IGk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzZWdtZW50LnNsaWNlKDAsIGVuZCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELGlEQUFpRDtBQUNqRCw2REFBNkQ7QUFDN0QscUNBQXFDO0FBRXJDLE9BQU8sU0FBUyx3QkFDZCxPQUFlLEVBQ2YsS0FBZ0M7RUFFaEMsSUFBSSxRQUFRLE1BQU0sSUFBSSxHQUFHO0lBQ3ZCLE9BQU87RUFDVDtFQUVBLElBQUksTUFBTSxRQUFRLE1BQU07RUFFeEIsSUFBSyxJQUFJLElBQUksUUFBUSxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsSUFBSztJQUMzQyxJQUFJLE1BQU0sUUFBUSxVQUFVLENBQUMsS0FBSztNQUNoQyxNQUFNO0lBQ1IsT0FBTztNQUNMO0lBQ0Y7RUFDRjtFQUVBLE9BQU8sUUFBUSxLQUFLLENBQUMsR0FBRztBQUMxQiJ9 +// denoCacheMetadata=3145773384819464748,10658932497392680713
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/73024f538622d1ca5bab214faa71cdb9cff76c5fc8527c7e2aec87c13bb316dc.js b/vendor/gen/https/jsr.io/73024f538622d1ca5bab214faa71cdb9cff76c5fc8527c7e2aec87c13bb316dc.js new file mode 100644 index 0000000..91b7890 --- /dev/null +++ b/vendor/gen/https/jsr.io/73024f538622d1ca5bab214faa71cdb9cff76c5fc8527c7e2aec87c13bb316dc.js @@ -0,0 +1,9 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// Copyright the Browserify authors. MIT License. +export function assertPath(path) { + if (typeof path !== "string") { + throw new TypeError(`Path must be a string, received "${JSON.stringify(path)}"`); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9fY29tbW9uL2Fzc2VydF9wYXRoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgdGhlIEJyb3dzZXJpZnkgYXV0aG9ycy4gTUlUIExpY2Vuc2UuXG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRQYXRoKHBhdGg/OiBzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBwYXRoICE9PSBcInN0cmluZ1wiKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIGBQYXRoIG11c3QgYmUgYSBzdHJpbmcsIHJlY2VpdmVkIFwiJHtKU09OLnN0cmluZ2lmeShwYXRoKX1cImAsXG4gICAgKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxpREFBaUQ7QUFFakQsT0FBTyxTQUFTLFdBQVcsSUFBYTtFQUN0QyxJQUFJLE9BQU8sU0FBUyxVQUFVO0lBQzVCLE1BQU0sSUFBSSxVQUNSLENBQUMsaUNBQWlDLEVBQUUsS0FBSyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7RUFFL0Q7QUFDRiJ9 +// denoCacheMetadata=5161316252443248054,14320655457283198329
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/747afd3f78995a6f93354a3128bc7c3659e1dddad22fa4087da9f47a5a5df701.js b/vendor/gen/https/jsr.io/747afd3f78995a6f93354a3128bc7c3659e1dddad22fa4087da9f47a5a5df701.js new file mode 100644 index 0000000..466a312 --- /dev/null +++ b/vendor/gen/https/jsr.io/747afd3f78995a6f93354a3128bc7c3659e1dddad22fa4087da9f47a5a5df701.js @@ -0,0 +1,17 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +const WHITESPACE_ENCODINGS = { + "\u0009": "%09", + "\u000A": "%0A", + "\u000B": "%0B", + "\u000C": "%0C", + "\u000D": "%0D", + "\u0020": "%20" +}; +export function encodeWhitespace(string) { + return string.replaceAll(/[\s]/g, (c)=>{ + return WHITESPACE_ENCODINGS[c] ?? c; + }); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9fY29tbW9uL3RvX2ZpbGVfdXJsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmNvbnN0IFdISVRFU1BBQ0VfRU5DT0RJTkdTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBcIlxcdTAwMDlcIjogXCIlMDlcIixcbiAgXCJcXHUwMDBBXCI6IFwiJTBBXCIsXG4gIFwiXFx1MDAwQlwiOiBcIiUwQlwiLFxuICBcIlxcdTAwMENcIjogXCIlMENcIixcbiAgXCJcXHUwMDBEXCI6IFwiJTBEXCIsXG4gIFwiXFx1MDAyMFwiOiBcIiUyMFwiLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVdoaXRlc3BhY2Uoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2VBbGwoL1tcXHNdL2csIChjKSA9PiB7XG4gICAgcmV0dXJuIFdISVRFU1BBQ0VfRU5DT0RJTkdTW2NdID8/IGM7XG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckMsTUFBTSx1QkFBK0M7RUFDbkQsVUFBVTtFQUNWLFVBQVU7RUFDVixVQUFVO0VBQ1YsVUFBVTtFQUNWLFVBQVU7RUFDVixVQUFVO0FBQ1o7QUFFQSxPQUFPLFNBQVMsaUJBQWlCLE1BQWM7RUFDN0MsT0FBTyxPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUM7SUFDakMsT0FBTyxvQkFBb0IsQ0FBQyxFQUFFLElBQUk7RUFDcEM7QUFDRiJ9 +// denoCacheMetadata=17988897989042616441,13949134333811092129
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/74a9e65c6c0c814de7082d8591d274f4c8e82f69264757876492fd0311e58682.js b/vendor/gen/https/jsr.io/74a9e65c6c0c814de7082d8591d274f4c8e82f69264757876492fd0311e58682.js new file mode 100644 index 0000000..2872949 --- /dev/null +++ b/vendor/gen/https/jsr.io/74a9e65c6c0c814de7082d8591d274f4c8e82f69264757876492fd0311e58682.js @@ -0,0 +1,46 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * Test whether the given string is a glob. + * + * @example Usage + * ```ts + * import { isGlob } from "@std/path/is-glob"; + * import { assert } from "@std/assert"; + * + * assert(!isGlob("foo/bar/../baz")); + * assert(isGlob("foo/*ar/../baz")); + * ``` + * + * @param str String to test. + * @returns `true` if the given string is a glob, otherwise `false` + */ export function isGlob(str) { + const chars = { + "{": "}", + "(": ")", + "[": "]" + }; + const regex = /\\(.)|(^!|\*|\?|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/; + if (str === "") { + return false; + } + let match; + while(match = regex.exec(str)){ + if (match[2]) return true; + let idx = match.index + match[0].length; + // if an open bracket/brace/paren is escaped, + // set the index to the next closing character + const open = match[1]; + const close = open ? chars[open] : null; + if (open && close) { + const n = str.indexOf(close, idx); + if (n !== -1) { + idx = n + 1; + } + } + str = str.slice(idx); + } + return false; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9pc19nbG9iLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbi8qKlxuICogVGVzdCB3aGV0aGVyIHRoZSBnaXZlbiBzdHJpbmcgaXMgYSBnbG9iLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgaXNHbG9iIH0gZnJvbSBcIkBzdGQvcGF0aC9pcy1nbG9iXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnQoIWlzR2xvYihcImZvby9iYXIvLi4vYmF6XCIpKTtcbiAqIGFzc2VydChpc0dsb2IoXCJmb28vKmFyLy4uL2JhelwiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIFN0cmluZyB0byB0ZXN0LlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgYSBnbG9iLCBvdGhlcndpc2UgYGZhbHNlYFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNHbG9iKHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNoYXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geyBcIntcIjogXCJ9XCIsIFwiKFwiOiBcIilcIiwgXCJbXCI6IFwiXVwiIH07XG4gIGNvbnN0IHJlZ2V4ID1cbiAgICAvXFxcXCguKXwoXiF8XFwqfFxcP3xbXFxdLispXVxcP3xcXFtbXlxcXFxcXF1dK1xcXXxcXHtbXlxcXFx9XStcXH18XFwoXFw/WzohPV1bXlxcXFwpXStcXCl8XFwoW158XStcXHxbXlxcXFwpXStcXCkpLztcblxuICBpZiAoc3RyID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbGV0IG1hdGNoOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsO1xuXG4gIHdoaWxlICgobWF0Y2ggPSByZWdleC5leGVjKHN0cikpKSB7XG4gICAgaWYgKG1hdGNoWzJdKSByZXR1cm4gdHJ1ZTtcbiAgICBsZXQgaWR4ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XG5cbiAgICAvLyBpZiBhbiBvcGVuIGJyYWNrZXQvYnJhY2UvcGFyZW4gaXMgZXNjYXBlZCxcbiAgICAvLyBzZXQgdGhlIGluZGV4IHRvIHRoZSBuZXh0IGNsb3NpbmcgY2hhcmFjdGVyXG4gICAgY29uc3Qgb3BlbiA9IG1hdGNoWzFdO1xuICAgIGNvbnN0IGNsb3NlID0gb3BlbiA/IGNoYXJzW29wZW5dIDogbnVsbDtcbiAgICBpZiAob3BlbiAmJiBjbG9zZSkge1xuICAgICAgY29uc3QgbiA9IHN0ci5pbmRleE9mKGNsb3NlLCBpZHgpO1xuICAgICAgaWYgKG4gIT09IC0xKSB7XG4gICAgICAgIGlkeCA9IG4gKyAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHN0ciA9IHN0ci5zbGljZShpZHgpO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckM7Ozs7Ozs7Ozs7Ozs7O0NBY0MsR0FDRCxPQUFPLFNBQVMsT0FBTyxHQUFXO0VBQ2hDLE1BQU0sUUFBZ0M7SUFBRSxLQUFLO0lBQUssS0FBSztJQUFLLEtBQUs7RUFBSTtFQUNyRSxNQUFNLFFBQ0o7RUFFRixJQUFJLFFBQVEsSUFBSTtJQUNkLE9BQU87RUFDVDtFQUVBLElBQUk7RUFFSixNQUFRLFFBQVEsTUFBTSxJQUFJLENBQUMsS0FBTztJQUNoQyxJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTztJQUNyQixJQUFJLE1BQU0sTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNO0lBRXZDLDZDQUE2QztJQUM3Qyw4Q0FBOEM7SUFDOUMsTUFBTSxPQUFPLEtBQUssQ0FBQyxFQUFFO0lBQ3JCLE1BQU0sUUFBUSxPQUFPLEtBQUssQ0FBQyxLQUFLLEdBQUc7SUFDbkMsSUFBSSxRQUFRLE9BQU87TUFDakIsTUFBTSxJQUFJLElBQUksT0FBTyxDQUFDLE9BQU87TUFDN0IsSUFBSSxNQUFNLENBQUMsR0FBRztRQUNaLE1BQU0sSUFBSTtNQUNaO0lBQ0Y7SUFFQSxNQUFNLElBQUksS0FBSyxDQUFDO0VBQ2xCO0VBRUEsT0FBTztBQUNUIn0= +// denoCacheMetadata=7863879360361386436,10111449833257119539
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/762a06d5cb62c7976d8eff7361c8145e3a869b837c701fe66c3ff50d34f5bba6.js b/vendor/gen/https/jsr.io/762a06d5cb62c7976d8eff7361c8145e3a869b837c701fe66c3ff50d34f5bba6.js new file mode 100644 index 0000000..5d9b6af --- /dev/null +++ b/vendor/gen/https/jsr.io/762a06d5cb62c7976d8eff7361c8145e3a869b837c701fe66c3ff50d34f5bba6.js @@ -0,0 +1,19 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +/** + * A parsed path object generated by path.parse() or consumed by path.format(). + * + * @example + * ```ts + * import { parse } from "@std/path"; + * + * const parsedPathObj = parse("c:\\path\\dir\\index.html"); + * parsedPathObj.root; // "c:\\" + * parsedPathObj.dir; // "c:\\path\\dir" + * parsedPathObj.base; // "index.html" + * parsedPathObj.ext; // ".html" + * parsedPathObj.name; // "index" + * ``` + */ +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vKipcbiAqIEEgcGFyc2VkIHBhdGggb2JqZWN0IGdlbmVyYXRlZCBieSBwYXRoLnBhcnNlKCkgb3IgY29uc3VtZWQgYnkgcGF0aC5mb3JtYXQoKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHBhcnNlIH0gZnJvbSBcIkBzdGQvcGF0aFwiO1xuICpcbiAqIGNvbnN0IHBhcnNlZFBhdGhPYmogPSBwYXJzZShcImM6XFxcXHBhdGhcXFxcZGlyXFxcXGluZGV4Lmh0bWxcIik7XG4gKiBwYXJzZWRQYXRoT2JqLnJvb3Q7IC8vIFwiYzpcXFxcXCJcbiAqIHBhcnNlZFBhdGhPYmouZGlyOyAvLyBcImM6XFxcXHBhdGhcXFxcZGlyXCJcbiAqIHBhcnNlZFBhdGhPYmouYmFzZTsgLy8gXCJpbmRleC5odG1sXCJcbiAqIHBhcnNlZFBhdGhPYmouZXh0OyAvLyBcIi5odG1sXCJcbiAqIHBhcnNlZFBhdGhPYmoubmFtZTsgLy8gXCJpbmRleFwiXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRQYXRoIHtcbiAgLyoqXG4gICAqIFRoZSByb290IG9mIHRoZSBwYXRoIHN1Y2ggYXMgJy8nIG9yICdjOlxcJ1xuICAgKi9cbiAgcm9vdDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGZ1bGwgZGlyZWN0b3J5IHBhdGggb2YgdGhlIHBhcmVudCBzdWNoIGFzICcvaG9tZS91c2VyL2Rpcicgb3IgJ2M6XFxwYXRoXFxkaXInXG4gICAqL1xuICBkaXI6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBmaWxlIG5hbWUgaW5jbHVkaW5nIGV4dGVuc2lvbiAoaWYgYW55KSBzdWNoIGFzICdpbmRleC5odG1sJ1xuICAgKi9cbiAgYmFzZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGZpbGUgZXh0ZW5zaW9uIChpZiBhbnkpIHN1Y2ggYXMgJy5odG1sJ1xuICAgKi9cbiAgZXh0OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZmlsZSBuYW1lIHdpdGhvdXQgZXh0ZW5zaW9uIChpZiBhbnkpIHN1Y2ggYXMgJ2luZGV4J1xuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxxQ0FBcUM7QUFFckM7Ozs7Ozs7Ozs7Ozs7O0NBY0MsR0FDRCJ9 +// denoCacheMetadata=9125149823512923979,1476604798125126188
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/769bbd5bd8b1a0055f7ded6c1675bffee41ad499f3155663351baac1a6d71f5b.js b/vendor/gen/https/jsr.io/769bbd5bd8b1a0055f7ded6c1675bffee41ad499f3155663351baac1a6d71f5b.js new file mode 100644 index 0000000..100689d --- /dev/null +++ b/vendor/gen/https/jsr.io/769bbd5bd8b1a0055f7ded6c1675bffee41ad499f3155663351baac1a6d71f5b.js @@ -0,0 +1,62 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { assertArg } from "../_common/dirname.ts"; +import { stripTrailingSeparators } from "../_common/strip_trailing_separators.ts"; +import { isPosixPathSeparator } from "./_util.ts"; +/** + * Return the directory path of a `path`. + * + * @example Usage + * ```ts + * import { dirname } from "@std/path/posix/dirname"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(dirname("/home/user/Documents/"), "/home/user"); + * assertEquals(dirname("/home/user/Documents/image.png"), "/home/user/Documents"); + * assertEquals(dirname("https://deno.land/std/path/mod.ts"), "https://deno.land/std/path"); + * ``` + * + * @example Working with URLs + * + * ```ts + * import { dirname } from "@std/path/posix/dirname"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(dirname("https://deno.land/std/path/mod.ts"), "https://deno.land/std/path"); + * assertEquals(dirname("https://deno.land/std/path/mod.ts?a=b"), "https://deno.land/std/path"); + * assertEquals(dirname("https://deno.land/std/path/mod.ts#header"), "https://deno.land/std/path"); + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `dirname` from `@std/path/posix/unstable-dirname`. + * + * @param path The path to get the directory from. + * @returns The directory path. + */ export function dirname(path) { + assertArg(path); + let end = -1; + let matchedNonSeparator = false; + for(let i = path.length - 1; i >= 1; --i){ + if (isPosixPathSeparator(path.charCodeAt(i))) { + if (matchedNonSeparator) { + end = i; + break; + } + } else { + matchedNonSeparator = true; + } + } + // No matches. Fallback based on provided path: + // + // - leading slashes paths + // "/foo" => "/" + // "///foo" => "/" + // - no slash path + // "foo" => "." + if (end === -1) { + return isPosixPathSeparator(path.charCodeAt(0)) ? "/" : "."; + } + return stripTrailingSeparators(path.slice(0, end), isPosixPathSeparator); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9wb3NpeC9kaXJuYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGFzc2VydEFyZyB9IGZyb20gXCIuLi9fY29tbW9uL2Rpcm5hbWUudHNcIjtcbmltcG9ydCB7IHN0cmlwVHJhaWxpbmdTZXBhcmF0b3JzIH0gZnJvbSBcIi4uL19jb21tb24vc3RyaXBfdHJhaWxpbmdfc2VwYXJhdG9ycy50c1wiO1xuaW1wb3J0IHsgaXNQb3NpeFBhdGhTZXBhcmF0b3IgfSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuXG4vKipcbiAqIFJldHVybiB0aGUgZGlyZWN0b3J5IHBhdGggb2YgYSBgcGF0aGAuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSBcIkBzdGQvcGF0aC9wb3NpeC9kaXJuYW1lXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoZGlybmFtZShcIi9ob21lL3VzZXIvRG9jdW1lbnRzL1wiKSwgXCIvaG9tZS91c2VyXCIpO1xuICogYXNzZXJ0RXF1YWxzKGRpcm5hbWUoXCIvaG9tZS91c2VyL0RvY3VtZW50cy9pbWFnZS5wbmdcIiksIFwiL2hvbWUvdXNlci9Eb2N1bWVudHNcIik7XG4gKiBhc3NlcnRFcXVhbHMoZGlybmFtZShcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9wYXRoL21vZC50c1wiKSwgXCJodHRwczovL2Rlbm8ubGFuZC9zdGQvcGF0aFwiKTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFdvcmtpbmcgd2l0aCBVUkxzXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGRpcm5hbWUgfSBmcm9tIFwiQHN0ZC9wYXRoL3Bvc2l4L2Rpcm5hbWVcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydEVxdWFscyhkaXJuYW1lKFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkL3BhdGgvbW9kLnRzXCIpLCBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9wYXRoXCIpO1xuICogYXNzZXJ0RXF1YWxzKGRpcm5hbWUoXCJodHRwczovL2Rlbm8ubGFuZC9zdGQvcGF0aC9tb2QudHM/YT1iXCIpLCBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9wYXRoXCIpO1xuICogYXNzZXJ0RXF1YWxzKGRpcm5hbWUoXCJodHRwczovL2Rlbm8ubGFuZC9zdGQvcGF0aC9tb2QudHMjaGVhZGVyXCIpLCBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9wYXRoXCIpO1xuICogYGBgXG4gKlxuICogTm90ZTogSWYgeW91IGFyZSB3b3JraW5nIHdpdGggZmlsZSBVUkxzLFxuICogdXNlIHRoZSBuZXcgdmVyc2lvbiBvZiBgZGlybmFtZWAgZnJvbSBgQHN0ZC9wYXRoL3Bvc2l4L3Vuc3RhYmxlLWRpcm5hbWVgLlxuICpcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIGdldCB0aGUgZGlyZWN0b3J5IGZyb20uXG4gKiBAcmV0dXJucyBUaGUgZGlyZWN0b3J5IHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXJuYW1lKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGFzc2VydEFyZyhwYXRoKTtcblxuICBsZXQgZW5kID0gLTE7XG4gIGxldCBtYXRjaGVkTm9uU2VwYXJhdG9yID0gZmFsc2U7XG5cbiAgZm9yIChsZXQgaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSAxOyAtLWkpIHtcbiAgICBpZiAoaXNQb3NpeFBhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGkpKSkge1xuICAgICAgaWYgKG1hdGNoZWROb25TZXBhcmF0b3IpIHtcbiAgICAgICAgZW5kID0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG1hdGNoZWROb25TZXBhcmF0b3IgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vIE5vIG1hdGNoZXMuIEZhbGxiYWNrIGJhc2VkIG9uIHByb3ZpZGVkIHBhdGg6XG4gIC8vXG4gIC8vIC0gbGVhZGluZyBzbGFzaGVzIHBhdGhzXG4gIC8vICAgICBcIi9mb29cIiA9PiBcIi9cIlxuICAvLyAgICAgXCIvLy9mb29cIiA9PiBcIi9cIlxuICAvLyAtIG5vIHNsYXNoIHBhdGhcbiAgLy8gICAgIFwiZm9vXCIgPT4gXCIuXCJcbiAgaWYgKGVuZCA9PT0gLTEpIHtcbiAgICByZXR1cm4gaXNQb3NpeFBhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDApKSA/IFwiL1wiIDogXCIuXCI7XG4gIH1cblxuICByZXR1cm4gc3RyaXBUcmFpbGluZ1NlcGFyYXRvcnMoXG4gICAgcGF0aC5zbGljZSgwLCBlbmQpLFxuICAgIGlzUG9zaXhQYXRoU2VwYXJhdG9yLFxuICApO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckMsU0FBUyxTQUFTLFFBQVEsd0JBQXdCO0FBQ2xELFNBQVMsdUJBQXVCLFFBQVEsMENBQTBDO0FBQ2xGLFNBQVMsb0JBQW9CLFFBQVEsYUFBYTtBQUVsRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E2QkMsR0FDRCxPQUFPLFNBQVMsUUFBUSxJQUFZO0VBQ2xDLFVBQVU7RUFFVixJQUFJLE1BQU0sQ0FBQztFQUNYLElBQUksc0JBQXNCO0VBRTFCLElBQUssSUFBSSxJQUFJLEtBQUssTUFBTSxHQUFHLEdBQUcsS0FBSyxHQUFHLEVBQUUsRUFBRztJQUN6QyxJQUFJLHFCQUFxQixLQUFLLFVBQVUsQ0FBQyxLQUFLO01BQzVDLElBQUkscUJBQXFCO1FBQ3ZCLE1BQU07UUFDTjtNQUNGO0lBQ0YsT0FBTztNQUNMLHNCQUFzQjtJQUN4QjtFQUNGO0VBRUEsK0NBQStDO0VBQy9DLEVBQUU7RUFDRiwwQkFBMEI7RUFDMUIsb0JBQW9CO0VBQ3BCLHNCQUFzQjtFQUN0QixrQkFBa0I7RUFDbEIsbUJBQW1CO0VBQ25CLElBQUksUUFBUSxDQUFDLEdBQUc7SUFDZCxPQUFPLHFCQUFxQixLQUFLLFVBQVUsQ0FBQyxNQUFNLE1BQU07RUFDMUQ7RUFFQSxPQUFPLHdCQUNMLEtBQUssS0FBSyxDQUFDLEdBQUcsTUFDZDtBQUVKIn0= +// denoCacheMetadata=11113492860492456424,16459553962190930279
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/78a4df5e1ccb1386d9b6208cdf7265e15af199d4337692fa6fd9ac1f33a7618b.js b/vendor/gen/https/jsr.io/78a4df5e1ccb1386d9b6208cdf7265e15af199d4337692fa6fd9ac1f33a7618b.js new file mode 100644 index 0000000..1a22c82 --- /dev/null +++ b/vendor/gen/https/jsr.io/78a4df5e1ccb1386d9b6208cdf7265e15af199d4337692fa6fd9ac1f33a7618b.js @@ -0,0 +1,74 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { CHAR_COLON, CHAR_DOT } from "../_common/constants.ts"; +import { assertPath } from "../_common/assert_path.ts"; +import { isPathSeparator, isWindowsDeviceRoot } from "./_util.ts"; +/** + * Return the extension of the `path` with leading period. + * + * @example Usage + * ```ts + * import { extname } from "@std/path/windows/extname"; + * import { assertEquals } from "@std/assert"; + * + * const ext = extname("file.ts"); + * assertEquals(ext, ".ts"); + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `extname` from `@std/path/windows/unstable-extname`. + * + * @param path The path to get the extension from. + * @returns The extension of the `path`. + */ export function extname(path) { + assertPath(path); + let start = 0; + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + if (path.length >= 2 && path.charCodeAt(1) === CHAR_COLON && isWindowsDeviceRoot(path.charCodeAt(0))) { + start = startPart = 2; + } + for(let i = path.length - 1; i >= start; --i){ + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot + preDotState === 0 || // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + return ""; + } + return path.slice(startDot, end); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS93aW5kb3dzL2V4dG5hbWUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgQ0hBUl9DT0xPTiwgQ0hBUl9ET1QgfSBmcm9tIFwiLi4vX2NvbW1vbi9jb25zdGFudHMudHNcIjtcbmltcG9ydCB7IGFzc2VydFBhdGggfSBmcm9tIFwiLi4vX2NvbW1vbi9hc3NlcnRfcGF0aC50c1wiO1xuaW1wb3J0IHsgaXNQYXRoU2VwYXJhdG9yLCBpc1dpbmRvd3NEZXZpY2VSb290IH0gZnJvbSBcIi4vX3V0aWwudHNcIjtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIGV4dGVuc2lvbiBvZiB0aGUgYHBhdGhgIHdpdGggbGVhZGluZyBwZXJpb2QuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBleHRuYW1lIH0gZnJvbSBcIkBzdGQvcGF0aC93aW5kb3dzL2V4dG5hbWVcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IGV4dCA9IGV4dG5hbWUoXCJmaWxlLnRzXCIpO1xuICogYXNzZXJ0RXF1YWxzKGV4dCwgXCIudHNcIik7XG4gKiBgYGBcbiAqXG4gKiBOb3RlOiBJZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBmaWxlIFVSTHMsXG4gKiB1c2UgdGhlIG5ldyB2ZXJzaW9uIG9mIGBleHRuYW1lYCBmcm9tIGBAc3RkL3BhdGgvd2luZG93cy91bnN0YWJsZS1leHRuYW1lYC5cbiAqXG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byBnZXQgdGhlIGV4dGVuc2lvbiBmcm9tLlxuICogQHJldHVybnMgVGhlIGV4dGVuc2lvbiBvZiB0aGUgYHBhdGhgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0bmFtZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuXG4gIGxldCBzdGFydCA9IDA7XG4gIGxldCBzdGFydERvdCA9IC0xO1xuICBsZXQgc3RhcnRQYXJ0ID0gMDtcbiAgbGV0IGVuZCA9IC0xO1xuICBsZXQgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgLy8gVHJhY2sgdGhlIHN0YXRlIG9mIGNoYXJhY3RlcnMgKGlmIGFueSkgd2Ugc2VlIGJlZm9yZSBvdXIgZmlyc3QgZG90IGFuZFxuICAvLyBhZnRlciBhbnkgcGF0aCBzZXBhcmF0b3Igd2UgZmluZFxuICBsZXQgcHJlRG90U3RhdGUgPSAwO1xuXG4gIC8vIENoZWNrIGZvciBhIGRyaXZlIGxldHRlciBwcmVmaXggc28gYXMgbm90IHRvIG1pc3Rha2UgdGhlIGZvbGxvd2luZ1xuICAvLyBwYXRoIHNlcGFyYXRvciBhcyBhbiBleHRyYSBzZXBhcmF0b3IgYXQgdGhlIGVuZCBvZiB0aGUgcGF0aCB0aGF0IGNhbiBiZVxuICAvLyBkaXNyZWdhcmRlZFxuXG4gIGlmIChcbiAgICBwYXRoLmxlbmd0aCA+PSAyICYmXG4gICAgcGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OICYmXG4gICAgaXNXaW5kb3dzRGV2aWNlUm9vdChwYXRoLmNoYXJDb2RlQXQoMCkpXG4gICkge1xuICAgIHN0YXJ0ID0gc3RhcnRQYXJ0ID0gMjtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gc3RhcnQ7IC0taSkge1xuICAgIGNvbnN0IGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgc3RhcnRQYXJ0ID0gaSArIDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAvLyBleHRlbnNpb25cbiAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgZW5kID0gaSArIDE7XG4gICAgfVxuICAgIGlmIChjb2RlID09PSBDSEFSX0RPVCkge1xuICAgICAgLy8gSWYgdGhpcyBpcyBvdXIgZmlyc3QgZG90LCBtYXJrIGl0IGFzIHRoZSBzdGFydCBvZiBvdXIgZXh0ZW5zaW9uXG4gICAgICBpZiAoc3RhcnREb3QgPT09IC0xKSBzdGFydERvdCA9IGk7XG4gICAgICBlbHNlIGlmIChwcmVEb3RTdGF0ZSAhPT0gMSkgcHJlRG90U3RhdGUgPSAxO1xuICAgIH0gZWxzZSBpZiAoc3RhcnREb3QgIT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgYSBub24tZG90IGFuZCBub24tcGF0aCBzZXBhcmF0b3IgYmVmb3JlIG91ciBkb3QsIHNvIHdlIHNob3VsZFxuICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb25cbiAgICAgIHByZURvdFN0YXRlID0gLTE7XG4gICAgfVxuICB9XG5cbiAgaWYgKFxuICAgIHN0YXJ0RG90ID09PSAtMSB8fFxuICAgIGVuZCA9PT0gLTEgfHxcbiAgICAvLyBXZSBzYXcgYSBub24tZG90IGNoYXJhY3RlciBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGRvdFxuICAgIHByZURvdFN0YXRlID09PSAwIHx8XG4gICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgJy4uJ1xuICAgIChwcmVEb3RTdGF0ZSA9PT0gMSAmJiBzdGFydERvdCA9PT0gZW5kIC0gMSAmJiBzdGFydERvdCA9PT0gc3RhcnRQYXJ0ICsgMSlcbiAgKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbiAgcmV0dXJuIHBhdGguc2xpY2Uoc3RhcnREb3QsIGVuZCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQyxTQUFTLFVBQVUsRUFBRSxRQUFRLFFBQVEsMEJBQTBCO0FBQy9ELFNBQVMsVUFBVSxRQUFRLDRCQUE0QjtBQUN2RCxTQUFTLGVBQWUsRUFBRSxtQkFBbUIsUUFBUSxhQUFhO0FBRWxFOzs7Ozs7Ozs7Ozs7Ozs7OztDQWlCQyxHQUNELE9BQU8sU0FBUyxRQUFRLElBQVk7RUFDbEMsV0FBVztFQUVYLElBQUksUUFBUTtFQUNaLElBQUksV0FBVyxDQUFDO0VBQ2hCLElBQUksWUFBWTtFQUNoQixJQUFJLE1BQU0sQ0FBQztFQUNYLElBQUksZUFBZTtFQUNuQix5RUFBeUU7RUFDekUsbUNBQW1DO0VBQ25DLElBQUksY0FBYztFQUVsQixxRUFBcUU7RUFDckUsMEVBQTBFO0VBQzFFLGNBQWM7RUFFZCxJQUNFLEtBQUssTUFBTSxJQUFJLEtBQ2YsS0FBSyxVQUFVLENBQUMsT0FBTyxjQUN2QixvQkFBb0IsS0FBSyxVQUFVLENBQUMsS0FDcEM7SUFDQSxRQUFRLFlBQVk7RUFDdEI7RUFFQSxJQUFLLElBQUksSUFBSSxLQUFLLE1BQU0sR0FBRyxHQUFHLEtBQUssT0FBTyxFQUFFLEVBQUc7SUFDN0MsTUFBTSxPQUFPLEtBQUssVUFBVSxDQUFDO0lBQzdCLElBQUksZ0JBQWdCLE9BQU87TUFDekIsb0VBQW9FO01BQ3BFLGdEQUFnRDtNQUNoRCxJQUFJLENBQUMsY0FBYztRQUNqQixZQUFZLElBQUk7UUFDaEI7TUFDRjtNQUNBO0lBQ0Y7SUFDQSxJQUFJLFFBQVEsQ0FBQyxHQUFHO01BQ2QsbUVBQW1FO01BQ25FLFlBQVk7TUFDWixlQUFlO01BQ2YsTUFBTSxJQUFJO0lBQ1o7SUFDQSxJQUFJLFNBQVMsVUFBVTtNQUNyQixrRUFBa0U7TUFDbEUsSUFBSSxhQUFhLENBQUMsR0FBRyxXQUFXO1dBQzNCLElBQUksZ0JBQWdCLEdBQUcsY0FBYztJQUM1QyxPQUFPLElBQUksYUFBYSxDQUFDLEdBQUc7TUFDMUIsdUVBQXVFO01BQ3ZFLHFEQUFxRDtNQUNyRCxjQUFjLENBQUM7SUFDakI7RUFDRjtFQUVBLElBQ0UsYUFBYSxDQUFDLEtBQ2QsUUFBUSxDQUFDLEtBQ1Qsd0RBQXdEO0VBQ3hELGdCQUFnQixLQUNoQiwwREFBMEQ7RUFDekQsZ0JBQWdCLEtBQUssYUFBYSxNQUFNLEtBQUssYUFBYSxZQUFZLEdBQ3ZFO0lBQ0EsT0FBTztFQUNUO0VBQ0EsT0FBTyxLQUFLLEtBQUssQ0FBQyxVQUFVO0FBQzlCIn0= +// denoCacheMetadata=15942174873077626128,15782438913444249489
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/79723db584e7d9342e232ee1b43cbb3a43290f20feeb991d0afce2089f35dd99.js b/vendor/gen/https/jsr.io/79723db584e7d9342e232ee1b43cbb3a43290f20feeb991d0afce2089f35dd99.js new file mode 100644 index 0000000..da0841d --- /dev/null +++ b/vendor/gen/https/jsr.io/79723db584e7d9342e232ee1b43cbb3a43290f20feeb991d0afce2089f35dd99.js @@ -0,0 +1,30 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { join as posixJoin } from "./posix/join.ts"; +import { join as windowsJoin } from "./windows/join.ts"; +/** + * Joins a sequence of paths, then normalizes the resulting path. + * + * @example Usage + * ```ts + * import { join } from "@std/path/join"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(join("C:\\foo", "bar", "baz\\quux", "garply", ".."), "C:\\foo\\bar\\baz\\quux"); + * } else { + * assertEquals(join("/foo", "bar", "baz/quux", "garply", ".."), "/foo/bar/baz/quux"); + * } + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `join` from `@std/path/unstable-join`. + * + * @param paths Paths to be joined and normalized. + * @returns The joined and normalized path. + */ export function join(...paths) { + return isWindows ? windowsJoin(...paths) : posixJoin(...paths); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9qb2luLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGlzV2luZG93cyB9IGZyb20gXCIuL19vcy50c1wiO1xuaW1wb3J0IHsgam9pbiBhcyBwb3NpeEpvaW4gfSBmcm9tIFwiLi9wb3NpeC9qb2luLnRzXCI7XG5pbXBvcnQgeyBqb2luIGFzIHdpbmRvd3NKb2luIH0gZnJvbSBcIi4vd2luZG93cy9qb2luLnRzXCI7XG5cbi8qKlxuICogSm9pbnMgYSBzZXF1ZW5jZSBvZiBwYXRocywgdGhlbiBub3JtYWxpemVzIHRoZSByZXN1bHRpbmcgcGF0aC5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGpvaW4gfSBmcm9tIFwiQHN0ZC9wYXRoL2pvaW5cIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGlmIChEZW5vLmJ1aWxkLm9zID09PSBcIndpbmRvd3NcIikge1xuICogICBhc3NlcnRFcXVhbHMoam9pbihcIkM6XFxcXGZvb1wiLCBcImJhclwiLCBcImJhelxcXFxxdXV4XCIsIFwiZ2FycGx5XCIsIFwiLi5cIiksIFwiQzpcXFxcZm9vXFxcXGJhclxcXFxiYXpcXFxccXV1eFwiKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGFzc2VydEVxdWFscyhqb2luKFwiL2Zvb1wiLCBcImJhclwiLCBcImJhei9xdXV4XCIsIFwiZ2FycGx5XCIsIFwiLi5cIiksIFwiL2Zvby9iYXIvYmF6L3F1dXhcIik7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBOb3RlOiBJZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBmaWxlIFVSTHMsXG4gKiB1c2UgdGhlIG5ldyB2ZXJzaW9uIG9mIGBqb2luYCBmcm9tIGBAc3RkL3BhdGgvdW5zdGFibGUtam9pbmAuXG4gKlxuICogQHBhcmFtIHBhdGhzIFBhdGhzIHRvIGJlIGpvaW5lZCBhbmQgbm9ybWFsaXplZC5cbiAqIEByZXR1cm5zIFRoZSBqb2luZWQgYW5kIG5vcm1hbGl6ZWQgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpvaW4oLi4ucGF0aHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlzV2luZG93cyA/IHdpbmRvd3NKb2luKC4uLnBhdGhzKSA6IHBvc2l4Sm9pbiguLi5wYXRocyk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQyxTQUFTLFNBQVMsUUFBUSxXQUFXO0FBQ3JDLFNBQVMsUUFBUSxTQUFTLFFBQVEsa0JBQWtCO0FBQ3BELFNBQVMsUUFBUSxXQUFXLFFBQVEsb0JBQW9CO0FBRXhEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW9CQyxHQUNELE9BQU8sU0FBUyxLQUFLLEdBQUcsS0FBZTtFQUNyQyxPQUFPLFlBQVksZUFBZSxTQUFTLGFBQWE7QUFDMUQifQ== +// denoCacheMetadata=3375357924244136567,9810853541388642278
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/79e1ab97020b4c9a9154275b6fd14a76696de85cd4da82636a97637dcbecde18.js b/vendor/gen/https/jsr.io/79e1ab97020b4c9a9154275b6fd14a76696de85cd4da82636a97637dcbecde18.js new file mode 100644 index 0000000..1a53b9c --- /dev/null +++ b/vendor/gen/https/jsr.io/79e1ab97020b4c9a9154275b6fd14a76696de85cd4da82636a97637dcbecde18.js @@ -0,0 +1,217 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// Copyright the Browserify authors. MIT License. +// Ported mostly from https://github.com/browserify/path-browserify/ +// This module is browser compatible. +/** + * Utilities for working with OS-specific file paths. + * + * Functions from this module will automatically switch to support the path style + * of the current OS, either `windows` for Microsoft Windows, or `posix` for + * every other operating system, eg. Linux, MacOS, BSD etc. + * + * To use functions for a specific path style regardless of the current OS + * import the modules from the platform sub directory instead. + * + * ## Basic Path Operations + * + * ```ts + * import * as path from "@std/path"; + * import { assertEquals } from "@std/assert"; + * + * // Get components of a path + * if (Deno.build.os === "windows") { + * assertEquals(path.basename("C:\\Users\\user\\file.txt"), "file.txt"); + * assertEquals(path.dirname("C:\\Users\\user\\file.txt"), "C:\\Users\\user"); + * assertEquals(path.extname("C:\\Users\\user\\file.txt"), ".txt"); + * } else { + * assertEquals(path.basename("/home/user/file.txt"), "file.txt"); + * assertEquals(path.dirname("/home/user/file.txt"), "/home/user"); + * assertEquals(path.extname("/home/user/file.txt"), ".txt"); + * } + * + * // Join path segments + * if (Deno.build.os === "windows") { + * assertEquals(path.join("C:\\", "Users", "docs", "file.txt"), "C:\\Users\\docs\\file.txt"); + * } else { + * assertEquals(path.join("/home", "user", "docs", "file.txt"), "/home/user/docs/file.txt"); + * } + * + * // Normalize a path + * if (Deno.build.os === "windows") { + * assertEquals(path.normalize("C:\\Users\\user\\..\\temp\\.\\file.txt"), "C:\\Users\\temp\\file.txt"); + * } else { + * assertEquals(path.normalize("/home/user/../temp/./file.txt"), "/home/temp/file.txt"); + * } + * + * // Resolve absolute path + * if (Deno.build.os === "windows") { + * const resolved = path.resolve("C:\\foo", "docs", "file.txt"); + * assertEquals(resolved, "C:\\foo\\docs\\file.txt"); + * assertEquals(path.isAbsolute(resolved), true); + * } else { + * const resolved = path.resolve("/foo", "docs", "file.txt"); + * assertEquals(resolved, "/foo/docs/file.txt"); + * assertEquals(path.isAbsolute(resolved), true); + * } + * + * // Get relative path + * if (Deno.build.os === "windows") { + * assertEquals(path.relative("C:\\Users", "C:\\Users\\docs\\file.txt"), "docs\\file.txt"); + * assertEquals(path.relative("C:\\Users", "D:\\Programs"), "D:\\Programs"); + * } else { + * assertEquals(path.relative("/home/user", "/home/user/docs/file.txt"), "docs/file.txt"); + * assertEquals(path.relative("/home/user", "/var/data"), "../../var/data"); + * } + * ``` + * + * ## Path Parsing and Formatting + * + * ```ts + * import * as path from "@std/path"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * const parsedWindows = path.parse("C:\\Users\\user\\file.txt"); + * assertEquals(parsedWindows.root, "C:\\"); + * assertEquals(parsedWindows.dir, "C:\\Users\\user"); + * assertEquals(parsedWindows.base, "file.txt"); + * assertEquals(parsedWindows.ext, ".txt"); + * assertEquals(parsedWindows.name, "file"); + * + * // Format path from components (Windows) + * assertEquals( + * path.format({ dir: "C:\\Users\\user", base: "file.txt" }), + * "C:\\Users\\user\\file.txt" + * ); + * } else { + * const parsedPosix = path.parse("/home/user/file.txt"); + * assertEquals(parsedPosix.root, "/"); + * assertEquals(parsedPosix.dir, "/home/user"); + * assertEquals(parsedPosix.base, "file.txt"); + * assertEquals(parsedPosix.ext, ".txt"); + * assertEquals(parsedPosix.name, "file"); + * + * // Format path from components (POSIX) + * assertEquals( + * path.format({ dir: "/home/user", base: "file.txt" }), + * "/home/user/file.txt" + * ); + * } + * ``` + * + * ## URL Conversion + * + * ```ts + * import * as path from "@std/path"; + * import { assertEquals } from "@std/assert"; + * + * // Convert between file URLs and paths + * if (Deno.build.os === "windows") { + * assertEquals(path.fromFileUrl("file:///C:/Users/user/file.txt"), "C:\\Users\\user\\file.txt"); + * assertEquals(path.toFileUrl("C:\\Users\\user\\file.txt").href, "file:///C:/Users/user/file.txt"); + * } else { + * assertEquals(path.fromFileUrl("file:///home/user/file.txt"), "/home/user/file.txt"); + * assertEquals(path.toFileUrl("/home/user/file.txt").href, "file:///home/user/file.txt"); + * } + * ``` + * + * ## Path Properties + * + * ```ts + * import * as path from "@std/path"; + * import { assertEquals } from "@std/assert"; + * + * // Check if path is absolute + * if (Deno.build.os === "windows") { + * assertEquals(path.isAbsolute("C:\\Users"), true); + * assertEquals(path.isAbsolute("\\\\Server\\share"), true); + * assertEquals(path.isAbsolute("C:relative\\path"), false); + * assertEquals(path.isAbsolute("..\\relative\\path"), false); + * } else { + * assertEquals(path.isAbsolute("/home/user"), true); + * assertEquals(path.isAbsolute("./relative/path"), false); + * assertEquals(path.isAbsolute("../relative/path"), false); + * } + * + * // Convert to namespaced path (Windows-specific) + * if (Deno.build.os === "windows") { + * assertEquals(path.toNamespacedPath("C:\\Users\\file.txt"), "\\\\?\\C:\\Users\\file.txt"); + * assertEquals(path.toNamespacedPath("\\\\server\\share\\file.txt"), "\\\\?\\UNC\\server\\share\\file.txt"); + * } else { + * // On POSIX, toNamespacedPath returns the path unchanged + * assertEquals(path.toNamespacedPath("/home/user/file.txt"), "/home/user/file.txt"); + * } + * ``` + * + * ## Glob Pattern Utilities + * + * ```ts + * import * as path from "@std/path"; + * import { assertEquals } from "@std/assert"; + * + * // Check if a string is a glob pattern + * assertEquals(path.isGlob("*.txt"), true); + * + * // Convert glob pattern to RegExp + * const pattern = path.globToRegExp("*.txt"); + * assertEquals(pattern.test("file.txt"), true); + * + * // Join multiple glob patterns + * if (Deno.build.os === "windows") { + * assertEquals(path.joinGlobs(["src", "**\\*.ts"]), "src\\**\\*.ts"); + * } else { + * assertEquals(path.joinGlobs(["src", "**\/*.ts"]), "src/**\/*.ts"); + * } + * + * // Normalize a glob pattern + * if (Deno.build.os === "windows") { + * assertEquals(path.normalizeGlob("src\\..\\**\\*.ts"), "**\\*.ts"); + * } else { + * assertEquals(path.normalizeGlob("src/../**\/*.ts"), "**\/*.ts"); + * } + * ``` + * + * For POSIX-specific functions: + * + * ```ts + * import { fromFileUrl } from "@std/path/posix/from-file-url"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(fromFileUrl("file:///home/foo"), "/home/foo"); + * ``` + * + * For Windows-specific functions: + * + * ```ts + * import { fromFileUrl } from "@std/path/windows/from-file-url"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(fromFileUrl("file:///home/foo"), "\\home\\foo"); + * ``` + * + * Functions for working with URLs can be found in + * {@link ./doc/posix/~ | @std/path/posix}. + * + * @module + */ export * from "./basename.ts"; +export * from "./constants.ts"; +export * from "./dirname.ts"; +export * from "./extname.ts"; +export * from "./format.ts"; +export * from "./from_file_url.ts"; +export * from "./is_absolute.ts"; +export * from "./join.ts"; +export * from "./normalize.ts"; +export * from "./parse.ts"; +export * from "./relative.ts"; +export * from "./resolve.ts"; +export * from "./to_file_url.ts"; +export * from "./to_namespaced_path.ts"; +export * from "./common.ts"; +export * from "./types.ts"; +export * from "./glob_to_regexp.ts"; +export * from "./is_glob.ts"; +export * from "./join_globs.ts"; +export * from "./normalize_glob.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9tb2QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cbi8vIFBvcnRlZCBtb3N0bHkgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYnJvd3NlcmlmeS9wYXRoLWJyb3dzZXJpZnkvXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbi8qKlxuICogVXRpbGl0aWVzIGZvciB3b3JraW5nIHdpdGggT1Mtc3BlY2lmaWMgZmlsZSBwYXRocy5cbiAqXG4gKiBGdW5jdGlvbnMgZnJvbSB0aGlzIG1vZHVsZSB3aWxsIGF1dG9tYXRpY2FsbHkgc3dpdGNoIHRvIHN1cHBvcnQgdGhlIHBhdGggc3R5bGVcbiAqIG9mIHRoZSBjdXJyZW50IE9TLCBlaXRoZXIgYHdpbmRvd3NgIGZvciBNaWNyb3NvZnQgV2luZG93cywgb3IgYHBvc2l4YCBmb3JcbiAqIGV2ZXJ5IG90aGVyIG9wZXJhdGluZyBzeXN0ZW0sIGVnLiBMaW51eCwgTWFjT1MsIEJTRCBldGMuXG4gKlxuICogVG8gdXNlIGZ1bmN0aW9ucyBmb3IgYSBzcGVjaWZpYyBwYXRoIHN0eWxlIHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgT1NcbiAqIGltcG9ydCB0aGUgbW9kdWxlcyBmcm9tIHRoZSBwbGF0Zm9ybSBzdWIgZGlyZWN0b3J5IGluc3RlYWQuXG4gKlxuICogIyMgQmFzaWMgUGF0aCBPcGVyYXRpb25zXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCAqIGFzIHBhdGggZnJvbSBcIkBzdGQvcGF0aFwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogLy8gR2V0IGNvbXBvbmVudHMgb2YgYSBwYXRoXG4gKiBpZiAoRGVuby5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCIpIHtcbiAqICAgYXNzZXJ0RXF1YWxzKHBhdGguYmFzZW5hbWUoXCJDOlxcXFxVc2Vyc1xcXFx1c2VyXFxcXGZpbGUudHh0XCIpLCBcImZpbGUudHh0XCIpO1xuICogICBhc3NlcnRFcXVhbHMocGF0aC5kaXJuYW1lKFwiQzpcXFxcVXNlcnNcXFxcdXNlclxcXFxmaWxlLnR4dFwiKSwgXCJDOlxcXFxVc2Vyc1xcXFx1c2VyXCIpO1xuICogICBhc3NlcnRFcXVhbHMocGF0aC5leHRuYW1lKFwiQzpcXFxcVXNlcnNcXFxcdXNlclxcXFxmaWxlLnR4dFwiKSwgXCIudHh0XCIpO1xuICogfSBlbHNlIHtcbiAqICAgYXNzZXJ0RXF1YWxzKHBhdGguYmFzZW5hbWUoXCIvaG9tZS91c2VyL2ZpbGUudHh0XCIpLCBcImZpbGUudHh0XCIpO1xuICogICBhc3NlcnRFcXVhbHMocGF0aC5kaXJuYW1lKFwiL2hvbWUvdXNlci9maWxlLnR4dFwiKSwgXCIvaG9tZS91c2VyXCIpO1xuICogICBhc3NlcnRFcXVhbHMocGF0aC5leHRuYW1lKFwiL2hvbWUvdXNlci9maWxlLnR4dFwiKSwgXCIudHh0XCIpO1xuICogfVxuICpcbiAqIC8vIEpvaW4gcGF0aCBzZWdtZW50c1xuICogaWYgKERlbm8uYnVpbGQub3MgPT09IFwid2luZG93c1wiKSB7XG4gKiAgIGFzc2VydEVxdWFscyhwYXRoLmpvaW4oXCJDOlxcXFxcIiwgXCJVc2Vyc1wiLCBcImRvY3NcIiwgXCJmaWxlLnR4dFwiKSwgXCJDOlxcXFxVc2Vyc1xcXFxkb2NzXFxcXGZpbGUudHh0XCIpO1xuICogfSBlbHNlIHtcbiAqICAgYXNzZXJ0RXF1YWxzKHBhdGguam9pbihcIi9ob21lXCIsIFwidXNlclwiLCBcImRvY3NcIiwgXCJmaWxlLnR4dFwiKSwgXCIvaG9tZS91c2VyL2RvY3MvZmlsZS50eHRcIik7XG4gKiB9XG4gKlxuICogLy8gTm9ybWFsaXplIGEgcGF0aFxuICogaWYgKERlbm8uYnVpbGQub3MgPT09IFwid2luZG93c1wiKSB7XG4gKiAgIGFzc2VydEVxdWFscyhwYXRoLm5vcm1hbGl6ZShcIkM6XFxcXFVzZXJzXFxcXHVzZXJcXFxcLi5cXFxcdGVtcFxcXFwuXFxcXGZpbGUudHh0XCIpLCBcIkM6XFxcXFVzZXJzXFxcXHRlbXBcXFxcZmlsZS50eHRcIik7XG4gKiB9IGVsc2Uge1xuICogICBhc3NlcnRFcXVhbHMocGF0aC5ub3JtYWxpemUoXCIvaG9tZS91c2VyLy4uL3RlbXAvLi9maWxlLnR4dFwiKSwgXCIvaG9tZS90ZW1wL2ZpbGUudHh0XCIpO1xuICogfVxuICpcbiAqIC8vIFJlc29sdmUgYWJzb2x1dGUgcGF0aFxuICogaWYgKERlbm8uYnVpbGQub3MgPT09IFwid2luZG93c1wiKSB7XG4gKiAgIGNvbnN0IHJlc29sdmVkID0gcGF0aC5yZXNvbHZlKFwiQzpcXFxcZm9vXCIsIFwiZG9jc1wiLCBcImZpbGUudHh0XCIpO1xuICogICBhc3NlcnRFcXVhbHMocmVzb2x2ZWQsIFwiQzpcXFxcZm9vXFxcXGRvY3NcXFxcZmlsZS50eHRcIik7XG4gKiAgIGFzc2VydEVxdWFscyhwYXRoLmlzQWJzb2x1dGUocmVzb2x2ZWQpLCB0cnVlKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGNvbnN0IHJlc29sdmVkID0gcGF0aC5yZXNvbHZlKFwiL2Zvb1wiLCBcImRvY3NcIiwgXCJmaWxlLnR4dFwiKTtcbiAqICAgYXNzZXJ0RXF1YWxzKHJlc29sdmVkLCBcIi9mb28vZG9jcy9maWxlLnR4dFwiKTtcbiAqICAgYXNzZXJ0RXF1YWxzKHBhdGguaXNBYnNvbHV0ZShyZXNvbHZlZCksIHRydWUpO1xuICogfVxuICpcbiAqIC8vIEdldCByZWxhdGl2ZSBwYXRoXG4gKiBpZiAoRGVuby5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCIpIHtcbiAqICAgYXNzZXJ0RXF1YWxzKHBhdGgucmVsYXRpdmUoXCJDOlxcXFxVc2Vyc1wiLCBcIkM6XFxcXFVzZXJzXFxcXGRvY3NcXFxcZmlsZS50eHRcIiksIFwiZG9jc1xcXFxmaWxlLnR4dFwiKTtcbiAqICAgYXNzZXJ0RXF1YWxzKHBhdGgucmVsYXRpdmUoXCJDOlxcXFxVc2Vyc1wiLCBcIkQ6XFxcXFByb2dyYW1zXCIpLCBcIkQ6XFxcXFByb2dyYW1zXCIpO1xuICogfSBlbHNlIHtcbiAqICAgYXNzZXJ0RXF1YWxzKHBhdGgucmVsYXRpdmUoXCIvaG9tZS91c2VyXCIsIFwiL2hvbWUvdXNlci9kb2NzL2ZpbGUudHh0XCIpLCBcImRvY3MvZmlsZS50eHRcIik7XG4gKiAgIGFzc2VydEVxdWFscyhwYXRoLnJlbGF0aXZlKFwiL2hvbWUvdXNlclwiLCBcIi92YXIvZGF0YVwiKSwgXCIuLi8uLi92YXIvZGF0YVwiKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqICMjIFBhdGggUGFyc2luZyBhbmQgRm9ybWF0dGluZ1xuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJAc3RkL3BhdGhcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGlmIChEZW5vLmJ1aWxkLm9zID09PSBcIndpbmRvd3NcIikge1xuICogICBjb25zdCBwYXJzZWRXaW5kb3dzID0gcGF0aC5wYXJzZShcIkM6XFxcXFVzZXJzXFxcXHVzZXJcXFxcZmlsZS50eHRcIik7XG4gKiAgIGFzc2VydEVxdWFscyhwYXJzZWRXaW5kb3dzLnJvb3QsIFwiQzpcXFxcXCIpO1xuICogICBhc3NlcnRFcXVhbHMocGFyc2VkV2luZG93cy5kaXIsIFwiQzpcXFxcVXNlcnNcXFxcdXNlclwiKTtcbiAqICAgYXNzZXJ0RXF1YWxzKHBhcnNlZFdpbmRvd3MuYmFzZSwgXCJmaWxlLnR4dFwiKTtcbiAqICAgYXNzZXJ0RXF1YWxzKHBhcnNlZFdpbmRvd3MuZXh0LCBcIi50eHRcIik7XG4gKiAgIGFzc2VydEVxdWFscyhwYXJzZWRXaW5kb3dzLm5hbWUsIFwiZmlsZVwiKTtcbiAqXG4gKiAgIC8vIEZvcm1hdCBwYXRoIGZyb20gY29tcG9uZW50cyAoV2luZG93cylcbiAqICAgYXNzZXJ0RXF1YWxzKFxuICogICAgIHBhdGguZm9ybWF0KHsgZGlyOiBcIkM6XFxcXFVzZXJzXFxcXHVzZXJcIiwgYmFzZTogXCJmaWxlLnR4dFwiIH0pLFxuICogICAgIFwiQzpcXFxcVXNlcnNcXFxcdXNlclxcXFxmaWxlLnR4dFwiXG4gKiAgICk7XG4gKiB9IGVsc2Uge1xuICogICBjb25zdCBwYXJzZWRQb3NpeCA9IHBhdGgucGFyc2UoXCIvaG9tZS91c2VyL2ZpbGUudHh0XCIpO1xuICogICBhc3NlcnRFcXVhbHMocGFyc2VkUG9zaXgucm9vdCwgXCIvXCIpO1xuICogICBhc3NlcnRFcXVhbHMocGFyc2VkUG9zaXguZGlyLCBcIi9ob21lL3VzZXJcIik7XG4gKiAgIGFzc2VydEVxdWFscyhwYXJzZWRQb3NpeC5iYXNlLCBcImZpbGUudHh0XCIpO1xuICogICBhc3NlcnRFcXVhbHMocGFyc2VkUG9zaXguZXh0LCBcIi50eHRcIik7XG4gKiAgIGFzc2VydEVxdWFscyhwYXJzZWRQb3NpeC5uYW1lLCBcImZpbGVcIik7XG4gKlxuICogICAvLyBGb3JtYXQgcGF0aCBmcm9tIGNvbXBvbmVudHMgKFBPU0lYKVxuICogICBhc3NlcnRFcXVhbHMoXG4gKiAgICAgcGF0aC5mb3JtYXQoeyBkaXI6IFwiL2hvbWUvdXNlclwiLCBiYXNlOiBcImZpbGUudHh0XCIgfSksXG4gKiAgICAgXCIvaG9tZS91c2VyL2ZpbGUudHh0XCJcbiAqICAgKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqICMjIFVSTCBDb252ZXJzaW9uXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCAqIGFzIHBhdGggZnJvbSBcIkBzdGQvcGF0aFwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogLy8gQ29udmVydCBiZXR3ZWVuIGZpbGUgVVJMcyBhbmQgcGF0aHNcbiAqIGlmIChEZW5vLmJ1aWxkLm9zID09PSBcIndpbmRvd3NcIikge1xuICogICBhc3NlcnRFcXVhbHMocGF0aC5mcm9tRmlsZVVybChcImZpbGU6Ly8vQzovVXNlcnMvdXNlci9maWxlLnR4dFwiKSwgXCJDOlxcXFxVc2Vyc1xcXFx1c2VyXFxcXGZpbGUudHh0XCIpO1xuICogICBhc3NlcnRFcXVhbHMocGF0aC50b0ZpbGVVcmwoXCJDOlxcXFxVc2Vyc1xcXFx1c2VyXFxcXGZpbGUudHh0XCIpLmhyZWYsIFwiZmlsZTovLy9DOi9Vc2Vycy91c2VyL2ZpbGUudHh0XCIpO1xuICogfSBlbHNlIHtcbiAqICAgYXNzZXJ0RXF1YWxzKHBhdGguZnJvbUZpbGVVcmwoXCJmaWxlOi8vL2hvbWUvdXNlci9maWxlLnR4dFwiKSwgXCIvaG9tZS91c2VyL2ZpbGUudHh0XCIpO1xuICogICBhc3NlcnRFcXVhbHMocGF0aC50b0ZpbGVVcmwoXCIvaG9tZS91c2VyL2ZpbGUudHh0XCIpLmhyZWYsIFwiZmlsZTovLy9ob21lL3VzZXIvZmlsZS50eHRcIik7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyBQYXRoIFByb3BlcnRpZXNcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwiQHN0ZC9wYXRoXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiAvLyBDaGVjayBpZiBwYXRoIGlzIGFic29sdXRlXG4gKiBpZiAoRGVuby5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCIpIHtcbiAqICAgYXNzZXJ0RXF1YWxzKHBhdGguaXNBYnNvbHV0ZShcIkM6XFxcXFVzZXJzXCIpLCB0cnVlKTtcbiAqICAgYXNzZXJ0RXF1YWxzKHBhdGguaXNBYnNvbHV0ZShcIlxcXFxcXFxcU2VydmVyXFxcXHNoYXJlXCIpLCB0cnVlKTtcbiAqICAgYXNzZXJ0RXF1YWxzKHBhdGguaXNBYnNvbHV0ZShcIkM6cmVsYXRpdmVcXFxccGF0aFwiKSwgZmFsc2UpO1xuICogICBhc3NlcnRFcXVhbHMocGF0aC5pc0Fic29sdXRlKFwiLi5cXFxccmVsYXRpdmVcXFxccGF0aFwiKSwgZmFsc2UpO1xuICogfSBlbHNlIHtcbiAqICAgYXNzZXJ0RXF1YWxzKHBhdGguaXNBYnNvbHV0ZShcIi9ob21lL3VzZXJcIiksIHRydWUpO1xuICogICBhc3NlcnRFcXVhbHMocGF0aC5pc0Fic29sdXRlKFwiLi9yZWxhdGl2ZS9wYXRoXCIpLCBmYWxzZSk7XG4gKiAgIGFzc2VydEVxdWFscyhwYXRoLmlzQWJzb2x1dGUoXCIuLi9yZWxhdGl2ZS9wYXRoXCIpLCBmYWxzZSk7XG4gKiB9XG4gKlxuICogLy8gQ29udmVydCB0byBuYW1lc3BhY2VkIHBhdGggKFdpbmRvd3Mtc3BlY2lmaWMpXG4gKiBpZiAoRGVuby5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCIpIHtcbiAqICAgYXNzZXJ0RXF1YWxzKHBhdGgudG9OYW1lc3BhY2VkUGF0aChcIkM6XFxcXFVzZXJzXFxcXGZpbGUudHh0XCIpLCBcIlxcXFxcXFxcP1xcXFxDOlxcXFxVc2Vyc1xcXFxmaWxlLnR4dFwiKTtcbiAqICAgYXNzZXJ0RXF1YWxzKHBhdGgudG9OYW1lc3BhY2VkUGF0aChcIlxcXFxcXFxcc2VydmVyXFxcXHNoYXJlXFxcXGZpbGUudHh0XCIpLCBcIlxcXFxcXFxcP1xcXFxVTkNcXFxcc2VydmVyXFxcXHNoYXJlXFxcXGZpbGUudHh0XCIpO1xuICogfSBlbHNlIHtcbiAqICAgLy8gT24gUE9TSVgsIHRvTmFtZXNwYWNlZFBhdGggcmV0dXJucyB0aGUgcGF0aCB1bmNoYW5nZWRcbiAqICAgYXNzZXJ0RXF1YWxzKHBhdGgudG9OYW1lc3BhY2VkUGF0aChcIi9ob21lL3VzZXIvZmlsZS50eHRcIiksIFwiL2hvbWUvdXNlci9maWxlLnR4dFwiKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqICMjIEdsb2IgUGF0dGVybiBVdGlsaXRpZXNcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwiQHN0ZC9wYXRoXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiAvLyBDaGVjayBpZiBhIHN0cmluZyBpcyBhIGdsb2IgcGF0dGVyblxuICogYXNzZXJ0RXF1YWxzKHBhdGguaXNHbG9iKFwiKi50eHRcIiksIHRydWUpO1xuICpcbiAqIC8vIENvbnZlcnQgZ2xvYiBwYXR0ZXJuIHRvIFJlZ0V4cFxuICogY29uc3QgcGF0dGVybiA9IHBhdGguZ2xvYlRvUmVnRXhwKFwiKi50eHRcIik7XG4gKiBhc3NlcnRFcXVhbHMocGF0dGVybi50ZXN0KFwiZmlsZS50eHRcIiksIHRydWUpO1xuICpcbiAqIC8vIEpvaW4gbXVsdGlwbGUgZ2xvYiBwYXR0ZXJuc1xuICogaWYgKERlbm8uYnVpbGQub3MgPT09IFwid2luZG93c1wiKSB7XG4gKiAgIGFzc2VydEVxdWFscyhwYXRoLmpvaW5HbG9icyhbXCJzcmNcIiwgXCIqKlxcXFwqLnRzXCJdKSwgXCJzcmNcXFxcKipcXFxcKi50c1wiKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGFzc2VydEVxdWFscyhwYXRoLmpvaW5HbG9icyhbXCJzcmNcIiwgXCIqKlxcLyoudHNcIl0pLCBcInNyYy8qKlxcLyoudHNcIik7XG4gKiB9XG4gKlxuICogLy8gTm9ybWFsaXplIGEgZ2xvYiBwYXR0ZXJuXG4gKiBpZiAoRGVuby5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCIpIHtcbiAqICAgYXNzZXJ0RXF1YWxzKHBhdGgubm9ybWFsaXplR2xvYihcInNyY1xcXFwuLlxcXFwqKlxcXFwqLnRzXCIpLCBcIioqXFxcXCoudHNcIik7XG4gKiB9IGVsc2Uge1xuICogICBhc3NlcnRFcXVhbHMocGF0aC5ub3JtYWxpemVHbG9iKFwic3JjLy4uLyoqXFwvKi50c1wiKSwgXCIqKlxcLyoudHNcIik7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBGb3IgUE9TSVgtc3BlY2lmaWMgZnVuY3Rpb25zOlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBmcm9tRmlsZVVybCB9IGZyb20gXCJAc3RkL3BhdGgvcG9zaXgvZnJvbS1maWxlLXVybFwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogYXNzZXJ0RXF1YWxzKGZyb21GaWxlVXJsKFwiZmlsZTovLy9ob21lL2Zvb1wiKSwgXCIvaG9tZS9mb29cIik7XG4gKiBgYGBcbiAqXG4gKiBGb3IgV2luZG93cy1zcGVjaWZpYyBmdW5jdGlvbnM6XG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGZyb21GaWxlVXJsIH0gZnJvbSBcIkBzdGQvcGF0aC93aW5kb3dzL2Zyb20tZmlsZS11cmxcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydEVxdWFscyhmcm9tRmlsZVVybChcImZpbGU6Ly8vaG9tZS9mb29cIiksIFwiXFxcXGhvbWVcXFxcZm9vXCIpO1xuICogYGBgXG4gKlxuICogRnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggVVJMcyBjYW4gYmUgZm91bmQgaW5cbiAqIHtAbGluayAuL2RvYy9wb3NpeC9+IHwgQHN0ZC9wYXRoL3Bvc2l4fS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cbmV4cG9ydCAqIGZyb20gXCIuL2Jhc2VuYW1lLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb25zdGFudHMudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Rpcm5hbWUudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2V4dG5hbWUudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Zvcm1hdC50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZnJvbV9maWxlX3VybC50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vaXNfYWJzb2x1dGUudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2pvaW4udHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL25vcm1hbGl6ZS50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGFyc2UudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JlbGF0aXZlLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZXNvbHZlLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90b19maWxlX3VybC50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdG9fbmFtZXNwYWNlZF9wYXRoLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21tb24udHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9nbG9iX3RvX3JlZ2V4cC50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vaXNfZ2xvYi50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vam9pbl9nbG9icy50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbm9ybWFsaXplX2dsb2IudHNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQsaURBQWlEO0FBQ2pELG9FQUFvRTtBQUNwRSxxQ0FBcUM7QUFFckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBK0xDLEdBQ0QsY0FBYyxnQkFBZ0I7QUFDOUIsY0FBYyxpQkFBaUI7QUFDL0IsY0FBYyxlQUFlO0FBQzdCLGNBQWMsZUFBZTtBQUM3QixjQUFjLGNBQWM7QUFDNUIsY0FBYyxxQkFBcUI7QUFDbkMsY0FBYyxtQkFBbUI7QUFDakMsY0FBYyxZQUFZO0FBQzFCLGNBQWMsaUJBQWlCO0FBQy9CLGNBQWMsYUFBYTtBQUMzQixjQUFjLGdCQUFnQjtBQUM5QixjQUFjLGVBQWU7QUFDN0IsY0FBYyxtQkFBbUI7QUFDakMsY0FBYywwQkFBMEI7QUFDeEMsY0FBYyxjQUFjO0FBQzVCLGNBQWMsYUFBYTtBQUMzQixjQUFjLHNCQUFzQjtBQUNwQyxjQUFjLGVBQWU7QUFDN0IsY0FBYyxrQkFBa0I7QUFDaEMsY0FBYyxzQkFBc0IifQ== +// denoCacheMetadata=2454136495561419247,7747580965380926824
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/7a355925927e59c1b259e2a6f95925987a2b7c2f7f42641b4304c4cac214819b.js b/vendor/gen/https/jsr.io/7a355925927e59c1b259e2a6f95925987a2b7c2f7f42641b4304c4cac214819b.js new file mode 100644 index 0000000..8c2649f --- /dev/null +++ b/vendor/gen/https/jsr.io/7a355925927e59c1b259e2a6f95925987a2b7c2f7f42641b4304c4cac214819b.js @@ -0,0 +1,161 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +export function consumeToken(v) { + const notPos = indexOf(v, isNotTokenChar); + if (notPos === -1) { + return [ + v, + "" + ]; + } + if (notPos === 0) { + return [ + "", + v + ]; + } + return [ + v.slice(0, notPos), + v.slice(notPos) + ]; +} +export function consumeValue(v) { + if (!v) { + return [ + "", + v + ]; + } + if (v[0] !== `"`) { + return consumeToken(v); + } + let value = ""; + for(let i = 1; i < v.length; i++){ + const r = v[i]; + if (r === `"`) { + return [ + value, + v.slice(i + 1) + ]; + } + const next = v[i + 1]; + if (r === "\\" && typeof next === "string" && isTSpecial(next)) { + value += next; + i++; + continue; + } + if (r === "\r" || r === "\n") { + return [ + "", + v + ]; + } + value += v[i]; + } + return [ + "", + v + ]; +} +export function consumeMediaParam(v) { + let rest = v.trimStart(); + if (!rest.startsWith(";")) { + return [ + "", + "", + v + ]; + } + rest = rest.slice(1); + rest = rest.trimStart(); + let param; + [param, rest] = consumeToken(rest); + param = param.toLowerCase(); + if (!param) { + return [ + "", + "", + v + ]; + } + rest = rest.slice(1); + rest = rest.trimStart(); + const [value, rest2] = consumeValue(rest); + if (value === "" && rest2 === rest) { + return [ + "", + "", + v + ]; + } + rest = rest2; + return [ + param, + value, + rest + ]; +} +export function decode2331Encoding(v) { + const sv = v.split(`'`, 3); + if (sv.length !== 3) { + return undefined; + } + const [sv0, , sv2] = sv; + const charset = sv0.toLowerCase(); + if (!charset) { + return undefined; + } + if (charset !== "us-ascii" && charset !== "utf-8") { + return undefined; + } + const encv = decodeURI(sv2); + if (!encv) { + return undefined; + } + return encv; +} +function indexOf(s, fn) { + let i = -1; + for (const v of s){ + i++; + if (fn(v)) { + return i; + } + } + return -1; +} +export function isIterator(obj) { + if (obj === null || obj === undefined) { + return false; + } + // deno-lint-ignore no-explicit-any + return typeof obj[Symbol.iterator] === "function"; +} +export function isToken(s) { + if (!s) { + return false; + } + return indexOf(s, isNotTokenChar) < 0; +} +function isNotTokenChar(r) { + return !isTokenChar(r); +} +function isTokenChar(r) { + const code = r.charCodeAt(0); + return code > 0x20 && code < 0x7f && !isTSpecial(r); +} +export function isTSpecial(r) { + return r[0] ? `()<>@,;:\\"/[]?=`.includes(r[0]) : false; +} +const CHAR_CODE_SPACE = " ".charCodeAt(0); +const CHAR_CODE_TILDE = "~".charCodeAt(0); +export function needsEncoding(s) { + for (const b of s){ + const charCode = b.charCodeAt(0); + if ((charCode < CHAR_CODE_SPACE || charCode > CHAR_CODE_TILDE) && b !== "\t") { + return true; + } + } + return false; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvbWVkaWEtdHlwZXMvMS4xLjAvX3V0aWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cblxuZXhwb3J0IGludGVyZmFjZSBEQkVudHJ5IHtcbiAgc291cmNlOiBzdHJpbmc7XG4gIGNvbXByZXNzaWJsZT86IGJvb2xlYW47XG4gIGNoYXJzZXQ/OiBzdHJpbmc7XG4gIGV4dGVuc2lvbnM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN1bWVUb2tlbih2OiBzdHJpbmcpOiBbdG9rZW46IHN0cmluZywgcmVzdDogc3RyaW5nXSB7XG4gIGNvbnN0IG5vdFBvcyA9IGluZGV4T2YodiwgaXNOb3RUb2tlbkNoYXIpO1xuICBpZiAobm90UG9zID09PSAtMSkge1xuICAgIHJldHVybiBbdiwgXCJcIl07XG4gIH1cbiAgaWYgKG5vdFBvcyA9PT0gMCkge1xuICAgIHJldHVybiBbXCJcIiwgdl07XG4gIH1cbiAgcmV0dXJuIFt2LnNsaWNlKDAsIG5vdFBvcyksIHYuc2xpY2Uobm90UG9zKV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdW1lVmFsdWUodjogc3RyaW5nKTogW3ZhbHVlOiBzdHJpbmcsIHJlc3Q6IHN0cmluZ10ge1xuICBpZiAoIXYpIHtcbiAgICByZXR1cm4gW1wiXCIsIHZdO1xuICB9XG4gIGlmICh2WzBdICE9PSBgXCJgKSB7XG4gICAgcmV0dXJuIGNvbnN1bWVUb2tlbih2KTtcbiAgfVxuICBsZXQgdmFsdWUgPSBcIlwiO1xuICBmb3IgKGxldCBpID0gMTsgaSA8IHYubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCByID0gdltpXTtcbiAgICBpZiAociA9PT0gYFwiYCkge1xuICAgICAgcmV0dXJuIFt2YWx1ZSwgdi5zbGljZShpICsgMSldO1xuICAgIH1cbiAgICBjb25zdCBuZXh0ID0gdltpICsgMV07XG4gICAgaWYgKHIgPT09IFwiXFxcXFwiICYmIHR5cGVvZiBuZXh0ID09PSBcInN0cmluZ1wiICYmIGlzVFNwZWNpYWwobmV4dCkpIHtcbiAgICAgIHZhbHVlICs9IG5leHQ7XG4gICAgICBpKys7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKHIgPT09IFwiXFxyXCIgfHwgciA9PT0gXCJcXG5cIikge1xuICAgICAgcmV0dXJuIFtcIlwiLCB2XTtcbiAgICB9XG4gICAgdmFsdWUgKz0gdltpXTtcbiAgfVxuICByZXR1cm4gW1wiXCIsIHZdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3VtZU1lZGlhUGFyYW0oXG4gIHY6IHN0cmluZyxcbik6IFtrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZywgcmVzdDogc3RyaW5nXSB7XG4gIGxldCByZXN0ID0gdi50cmltU3RhcnQoKTtcbiAgaWYgKCFyZXN0LnN0YXJ0c1dpdGgoXCI7XCIpKSB7XG4gICAgcmV0dXJuIFtcIlwiLCBcIlwiLCB2XTtcbiAgfVxuICByZXN0ID0gcmVzdC5zbGljZSgxKTtcbiAgcmVzdCA9IHJlc3QudHJpbVN0YXJ0KCk7XG4gIGxldCBwYXJhbTogc3RyaW5nO1xuICBbcGFyYW0sIHJlc3RdID0gY29uc3VtZVRva2VuKHJlc3QpO1xuICBwYXJhbSA9IHBhcmFtLnRvTG93ZXJDYXNlKCk7XG4gIGlmICghcGFyYW0pIHtcbiAgICByZXR1cm4gW1wiXCIsIFwiXCIsIHZdO1xuICB9XG4gIHJlc3QgPSByZXN0LnNsaWNlKDEpO1xuICByZXN0ID0gcmVzdC50cmltU3RhcnQoKTtcbiAgY29uc3QgW3ZhbHVlLCByZXN0Ml0gPSBjb25zdW1lVmFsdWUocmVzdCk7XG4gIGlmICh2YWx1ZSA9PT0gXCJcIiAmJiByZXN0MiA9PT0gcmVzdCkge1xuICAgIHJldHVybiBbXCJcIiwgXCJcIiwgdl07XG4gIH1cbiAgcmVzdCA9IHJlc3QyO1xuICByZXR1cm4gW3BhcmFtLCB2YWx1ZSwgcmVzdF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGUyMzMxRW5jb2Rpbmcodjogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgc3YgPSB2LnNwbGl0KGAnYCwgMyk7XG4gIGlmIChzdi5sZW5ndGggIT09IDMpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IFtzdjAsICwgc3YyXSA9IHN2IGFzIFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXTtcbiAgY29uc3QgY2hhcnNldCA9IHN2MC50b0xvd2VyQ2FzZSgpO1xuICBpZiAoIWNoYXJzZXQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGlmIChjaGFyc2V0ICE9PSBcInVzLWFzY2lpXCIgJiYgY2hhcnNldCAhPT0gXCJ1dGYtOFwiKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBlbmN2ID0gZGVjb2RlVVJJKHN2Mik7XG4gIGlmICghZW5jdikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgcmV0dXJuIGVuY3Y7XG59XG5cbmZ1bmN0aW9uIGluZGV4T2Y8VD4oczogSXRlcmFibGU8VD4sIGZuOiAoczogVCkgPT4gYm9vbGVhbik6IG51bWJlciB7XG4gIGxldCBpID0gLTE7XG4gIGZvciAoY29uc3QgdiBvZiBzKSB7XG4gICAgaSsrO1xuICAgIGlmIChmbih2KSkge1xuICAgICAgcmV0dXJuIGk7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSXRlcmF0b3I8VD4ob2JqOiB1bmtub3duKTogb2JqIGlzIEl0ZXJhYmxlPFQ+IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCBvYmogPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuICByZXR1cm4gdHlwZW9mIChvYmogYXMgYW55KVtTeW1ib2wuaXRlcmF0b3JdID09PSBcImZ1bmN0aW9uXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Rva2VuKHM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoIXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGluZGV4T2YocywgaXNOb3RUb2tlbkNoYXIpIDwgMDtcbn1cblxuZnVuY3Rpb24gaXNOb3RUb2tlbkNoYXIocjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAhaXNUb2tlbkNoYXIocik7XG59XG5cbmZ1bmN0aW9uIGlzVG9rZW5DaGFyKHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBjb2RlID0gci5jaGFyQ29kZUF0KDApO1xuICByZXR1cm4gY29kZSA+IDB4MjAgJiYgY29kZSA8IDB4N2YgJiYgIWlzVFNwZWNpYWwocik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1RTcGVjaWFsKHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gclswXSA/IGAoKTw+QCw7OlxcXFxcIi9bXT89YC5pbmNsdWRlcyhyWzBdKSA6IGZhbHNlO1xufVxuXG5jb25zdCBDSEFSX0NPREVfU1BBQ0UgPSBcIiBcIi5jaGFyQ29kZUF0KDApO1xuY29uc3QgQ0hBUl9DT0RFX1RJTERFID0gXCJ+XCIuY2hhckNvZGVBdCgwKTtcblxuZXhwb3J0IGZ1bmN0aW9uIG5lZWRzRW5jb2Rpbmcoczogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGZvciAoY29uc3QgYiBvZiBzKSB7XG4gICAgY29uc3QgY2hhckNvZGUgPSBiLmNoYXJDb2RlQXQoMCk7XG4gICAgaWYgKFxuICAgICAgKGNoYXJDb2RlIDwgQ0hBUl9DT0RFX1NQQUNFIHx8IGNoYXJDb2RlID4gQ0hBUl9DT0RFX1RJTERFKSAmJiBiICE9PSBcIlxcdFwiXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQVMxRSxPQUFPLFNB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 +// denoCacheMetadata=11919937667941442457,13446163425307429414
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/7a9c1bc33a76752abbdb0526735a4efc927cb49acb2e0652056b65b39e5413b8.js b/vendor/gen/https/jsr.io/7a9c1bc33a76752abbdb0526735a4efc927cb49acb2e0652056b65b39e5413b8.js new file mode 100644 index 0000000..642a983 --- /dev/null +++ b/vendor/gen/https/jsr.io/7a9c1bc33a76752abbdb0526735a4efc927cb49acb2e0652056b65b39e5413b8.js @@ -0,0 +1,35 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { encodeWhitespace } from "../_common/to_file_url.ts"; +import { isAbsolute } from "./is_absolute.ts"; +/** + * Converts a path string to a file URL. + * + * @example Usage + * ```ts + * import { toFileUrl } from "@std/path/windows/to-file-url"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(toFileUrl("\\home\\foo"), new URL("file:///home/foo")); + * assertEquals(toFileUrl("C:\\Users\\foo"), new URL("file:///C:/Users/foo")); + * assertEquals(toFileUrl("\\\\127.0.0.1\\home\\foo"), new URL("file://127.0.0.1/home/foo")); + * ``` + * @param path The path to convert. + * @returns The file URL. + */ export function toFileUrl(path) { + if (!isAbsolute(path)) { + throw new TypeError(`Path must be absolute: received "${path}"`); + } + const [, hostname, pathname] = path.match(/^(?:[/\\]{2}([^/\\]+)(?=[/\\](?:[^/\\]|$)))?(.*)/); + const url = new URL("file:///"); + url.pathname = encodeWhitespace(pathname.replace(/%/g, "%25")); + if (hostname !== undefined && hostname !== "localhost") { + url.hostname = hostname; + if (!url.hostname) { + throw new TypeError(`Invalid hostname: "${url.hostname}"`); + } + } + return url; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC93aW5kb3dzL3RvX2ZpbGVfdXJsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGVuY29kZVdoaXRlc3BhY2UgfSBmcm9tIFwiLi4vX2NvbW1vbi90b19maWxlX3VybC50c1wiO1xuaW1wb3J0IHsgaXNBYnNvbHV0ZSB9IGZyb20gXCIuL2lzX2Fic29sdXRlLnRzXCI7XG5cbi8qKlxuICogQ29udmVydHMgYSBwYXRoIHN0cmluZyB0byBhIGZpbGUgVVJMLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgdG9GaWxlVXJsIH0gZnJvbSBcIkBzdGQvcGF0aC93aW5kb3dzL3RvLWZpbGUtdXJsXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHModG9GaWxlVXJsKFwiXFxcXGhvbWVcXFxcZm9vXCIpLCBuZXcgVVJMKFwiZmlsZTovLy9ob21lL2Zvb1wiKSk7XG4gKiBhc3NlcnRFcXVhbHModG9GaWxlVXJsKFwiQzpcXFxcVXNlcnNcXFxcZm9vXCIpLCBuZXcgVVJMKFwiZmlsZTovLy9DOi9Vc2Vycy9mb29cIikpO1xuICogYXNzZXJ0RXF1YWxzKHRvRmlsZVVybChcIlxcXFxcXFxcMTI3LjAuMC4xXFxcXGhvbWVcXFxcZm9vXCIpLCBuZXcgVVJMKFwiZmlsZTovLzEyNy4wLjAuMS9ob21lL2Zvb1wiKSk7XG4gKiBgYGBcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBUaGUgZmlsZSBVUkwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0ZpbGVVcmwocGF0aDogc3RyaW5nKTogVVJMIHtcbiAgaWYgKCFpc0Fic29sdXRlKHBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUGF0aCBtdXN0IGJlIGFic29sdXRlOiByZWNlaXZlZCBcIiR7cGF0aH1cImApO1xuICB9XG4gIGNvbnN0IFssIGhvc3RuYW1lLCBwYXRobmFtZV0gPSBwYXRoLm1hdGNoKFxuICAgIC9eKD86Wy9cXFxcXXsyfShbXi9cXFxcXSspKD89Wy9cXFxcXSg/OlteL1xcXFxdfCQpKSk/KC4qKS8sXG4gICkhO1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKFwiZmlsZTovLy9cIik7XG4gIHVybC5wYXRobmFtZSA9IGVuY29kZVdoaXRlc3BhY2UocGF0aG5hbWUhLnJlcGxhY2UoLyUvZywgXCIlMjVcIikpO1xuICBpZiAoaG9zdG5hbWUgIT09IHVuZGVmaW5lZCAmJiBob3N0bmFtZSAhPT0gXCJsb2NhbGhvc3RcIikge1xuICAgIHVybC5ob3N0bmFtZSA9IGhvc3RuYW1lO1xuICAgIGlmICghdXJsLmhvc3RuYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIGhvc3RuYW1lOiBcIiR7dXJsLmhvc3RuYW1lfVwiYCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB1cmw7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQyxTQUFTLGdCQUFnQixRQUFRLDRCQUE0QjtBQUM3RCxTQUFTLFVBQVUsUUFBUSxtQkFBbUI7QUFFOUM7Ozs7Ozs7Ozs7Ozs7O0NBY0MsR0FDRCxPQUFPLFNBQVMsVUFBVSxJQUFZO0VBQ3BDLElBQUksQ0FBQyxXQUFXLE9BQU87SUFDckIsTUFBTSxJQUFJLFVBQVUsQ0FBQyxpQ0FBaUMsRUFBRSxLQUFLLENBQUMsQ0FBQztFQUNqRTtFQUNBLE1BQU0sR0FBRyxVQUFVLFNBQVMsR0FBRyxLQUFLLEtBQUssQ0FDdkM7RUFFRixNQUFNLE1BQU0sSUFBSSxJQUFJO0VBQ3BCLElBQUksUUFBUSxHQUFHLGlCQUFpQixTQUFVLE9BQU8sQ0FBQyxNQUFNO0VBQ3hELElBQUksYUFBYSxhQUFhLGFBQWEsYUFBYTtJQUN0RCxJQUFJLFFBQVEsR0FBRztJQUNmLElBQUksQ0FBQyxJQUFJLFFBQVEsRUFBRTtNQUNqQixNQUFNLElBQUksVUFBVSxDQUFDLG1CQUFtQixFQUFFLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMzRDtFQUNGO0VBQ0EsT0FBTztBQUNUIn0= +// denoCacheMetadata=2663322999922838084,14941618161143651566
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/7af12675adbdb192abff581e22d0b8bc64913d7b5ef406c354e1274e423a6383.js b/vendor/gen/https/jsr.io/7af12675adbdb192abff581e22d0b8bc64913d7b5ef406c354e1274e423a6383.js new file mode 100644 index 0000000..d4fe024 --- /dev/null +++ b/vendor/gen/https/jsr.io/7af12675adbdb192abff581e22d0b8bc64913d7b5ef406c354e1274e423a6383.js @@ -0,0 +1,16 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. +import { CHAR_BACKWARD_SLASH, CHAR_FORWARD_SLASH, CHAR_LOWERCASE_A, CHAR_LOWERCASE_Z, CHAR_UPPERCASE_A, CHAR_UPPERCASE_Z } from "../_common/constants.ts"; +export function isPosixPathSeparator(code) { + return code === CHAR_FORWARD_SLASH; +} +export function isPathSeparator(code) { + return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; +} +export function isWindowsDeviceRoot(code) { + return code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z || code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS93aW5kb3dzL191dGlsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgdGhlIEJyb3dzZXJpZnkgYXV0aG9ycy4gTUlUIExpY2Vuc2UuXG4vLyBQb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYnJvd3NlcmlmeS9wYXRoLWJyb3dzZXJpZnkvXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7XG4gIENIQVJfQkFDS1dBUkRfU0xBU0gsXG4gIENIQVJfRk9SV0FSRF9TTEFTSCxcbiAgQ0hBUl9MT1dFUkNBU0VfQSxcbiAgQ0hBUl9MT1dFUkNBU0VfWixcbiAgQ0hBUl9VUFBFUkNBU0VfQSxcbiAgQ0hBUl9VUFBFUkNBU0VfWixcbn0gZnJvbSBcIi4uL19jb21tb24vY29uc3RhbnRzLnRzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Bvc2l4UGF0aFNlcGFyYXRvcihjb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNvZGUgPT09IENIQVJfRk9SV0FSRF9TTEFTSDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUGF0aFNlcGFyYXRvcihjb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIGNvZGUgPT09IENIQVJfRk9SV0FSRF9TTEFTSCB8fCBjb2RlID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNXaW5kb3dzRGV2aWNlUm9vdChjb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICAoY29kZSA+PSBDSEFSX0xPV0VSQ0FTRV9BICYmIGNvZGUgPD0gQ0hBUl9MT1dFUkNBU0VfWikgfHxcbiAgICAoY29kZSA+PSBDSEFSX1VQUEVSQ0FTRV9BICYmIGNvZGUgPD0gQ0hBUl9VUFBFUkNBU0VfWilcbiAgKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQsaURBQWlEO0FBQ2pELDZEQUE2RDtBQUM3RCxxQ0FBcUM7QUFFckMsU0FDRSxtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGdCQUFnQixRQUNYLDBCQUEwQjtBQUVqQyxPQUFPLFNBQVMscUJBQXFCLElBQVk7RUFDL0MsT0FBTyxTQUFTO0FBQ2xCO0FBRUEsT0FBTyxTQUFTLGdCQUFnQixJQUFZO0VBQzFDLE9BQU8sU0FBUyxzQkFBc0IsU0FBUztBQUNqRDtBQUVBLE9BQU8sU0FBUyxvQkFBb0IsSUFBWTtFQUM5QyxPQUNFLEFBQUMsUUFBUSxvQkFBb0IsUUFBUSxvQkFDcEMsUUFBUSxvQkFBb0IsUUFBUTtBQUV6QyJ9 +// denoCacheMetadata=4171129387492989809,12313993677460840538
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/7b700222389200c367abe08d5c2b036f40a97247c5d8fa22a5a1f2da6a65b9af.js b/vendor/gen/https/jsr.io/7b700222389200c367abe08d5c2b036f40a97247c5d8fa22a5a1f2da6a65b9af.js new file mode 100644 index 0000000..68ae52e --- /dev/null +++ b/vendor/gen/https/jsr.io/7b700222389200c367abe08d5c2b036f40a97247c5d8fa22a5a1f2da6a65b9af.js @@ -0,0 +1,121 @@ +// Copyright 2014-2021 Sindre Sorhus. All rights reserved. MIT license. +// Copyright 2021 Yoshiya Hinosawa. All rights reserved. MIT license. +// Copyright 2021 Giuseppe Eletto. All rights reserved. MIT license. +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * Convert bytes to a human-readable string: 1337 → 1.34 kB + * + * Based on {@link https://github.com/sindresorhus/pretty-bytes | pretty-bytes}. + * A utility for displaying file sizes for humans. + * + * ```ts + * import { format } from "@std/fmt/bytes"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(format(1337), "1.34 kB"); + * assertEquals(format(100), "100 B"); + * ``` + * @module + */ /** + * Convert bytes to a human-readable string: 1337 → 1.34 kB + * + * Based on {@link https://github.com/sindresorhus/pretty-bytes | pretty-bytes}. + * A utility for displaying file sizes for humans. + * + * @param num The bytes value to format + * @param options The options for formatting + * @returns The formatted string + * + * @example Basic usage + * ```ts + * import { format } from "@std/fmt/bytes"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(format(1337), "1.34 kB"); + * assertEquals(format(100), "100 B"); + * ``` + * + * @example Include bits representation + * + * ```ts + * import { format } from "@std/fmt/bytes"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(format(1337, { bits: true }), "1.34 kbit"); + * ``` + * + * @example Include sign + * + * ```ts + * import { format } from "@std/fmt/bytes"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(format(42, { signed: true }), "+42 B"); + * assertEquals(format(-42, { signed: true }), "-42 B"); + * ``` + * + * @example Change locale + * + * ```ts + * import { format } from "@std/fmt/bytes"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(format(1337, { locale: "de" }), "1,34 kB"); + * ``` + */ export function format(num, options = {}) { + if (!Number.isFinite(num)) { + throw new TypeError(`Expected a finite number, got ${typeof num}: ${num}`); + } + const UNITS_FIRSTLETTER = (options.bits ? "b" : "B") + "kMGTPEZY"; + if (options.signed && num === 0) { + return ` 0 ${UNITS_FIRSTLETTER[0]}`; + } + const prefix = num < 0 ? "-" : options.signed ? "+" : ""; + num = Math.abs(num); + const localeOptions = getLocaleOptions(options); + if (num < 1) { + const numberString = toLocaleString(num, options.locale, localeOptions); + return prefix + numberString + " " + UNITS_FIRSTLETTER[0]; + } + const exponent = Math.min(Math.floor(options.binary ? Math.log(num) / Math.log(1024) : Math.log10(num) / 3), UNITS_FIRSTLETTER.length - 1); + num /= Math.pow(options.binary ? 1024 : 1000, exponent); + if (!localeOptions) { + num = Number(num.toPrecision(3)); + } + const numberString = toLocaleString(num, options.locale, localeOptions); + let unit = UNITS_FIRSTLETTER[exponent]; + if (exponent > 0) { + unit += options.binary ? "i" : ""; + unit += options.bits ? "bit" : "B"; + } + return prefix + numberString + " " + unit; +} +function getLocaleOptions({ maximumFractionDigits, minimumFractionDigits }) { + if (maximumFractionDigits === undefined && minimumFractionDigits === undefined) { + return; + } + const ret = {}; + if (maximumFractionDigits !== undefined) { + ret.maximumFractionDigits = maximumFractionDigits; + } + if (minimumFractionDigits !== undefined) { + ret.minimumFractionDigits = minimumFractionDigits; + } + return ret; +} +/** + * Formats the given number using `Number#toLocaleString`. + * - If locale is a string, the value is expected to be a locale-key (for example: `de`). + * - If locale is true, the system default locale is used for translation. + * - If no value for locale is specified, the number is returned unmodified. + */ function toLocaleString(num, locale, options) { + if (typeof locale === "string" || Array.isArray(locale)) { + return num.toLocaleString(locale, options); + } else if (locale === true || options !== undefined) { + return num.toLocaleString(undefined, options); + } + return num.toString(); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZm10LzEuMC44L2J5dGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE0LTIwMjEgU2luZHJlIFNvcmh1cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgMjAyMSBZb3NoaXlhIEhpbm9zYXdhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCAyMDIxIEdpdXNlcHBlIEVsZXR0by4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vKipcbiAqIENvbnZlcnQgYnl0ZXMgdG8gYSBodW1hbi1yZWFkYWJsZSBzdHJpbmc6IDEzMzcg4oaSIDEuMzQga0JcbiAqXG4gKiBCYXNlZCBvbiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9wcmV0dHktYnl0ZXMgfCBwcmV0dHktYnl0ZXN9LlxuICogQSB1dGlsaXR5IGZvciBkaXNwbGF5aW5nIGZpbGUgc2l6ZXMgZm9yIGh1bWFucy5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSBcIkBzdGQvZm10L2J5dGVzXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoZm9ybWF0KDEzMzcpLCBcIjEuMzQga0JcIik7XG4gKiBhc3NlcnRFcXVhbHMoZm9ybWF0KDEwMCksIFwiMTAwIEJcIik7XG4gKiBgYGBcbiAqIEBtb2R1bGVcbiAqL1xuXG50eXBlIExvY2FsZU9wdGlvbnMgPSB7XG4gIG1pbmltdW1GcmFjdGlvbkRpZ2l0cz86IG51bWJlcjtcbiAgbWF4aW11bUZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xufTtcblxuLyoqIE9wdGlvbnMgZm9yIHtAbGlua2NvZGUgZm9ybWF0fS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBVc2VzIGJpdHMgcmVwcmVzZW50YXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IHtmYWxzZX1cbiAgICovXG4gIGJpdHM/OiBib29sZWFuO1xuICAvKipcbiAgICogVXNlcyBiaW5hcnkgYnl0ZXMgKGUuZy4ga2liaWJ5dGUpLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7ZmFsc2V9XG4gICAqL1xuICBiaW5hcnk/OiBib29sZWFuO1xuICAvKipcbiAgICogSW5jbHVkZSBwbHVzIHNpZ24gZm9yIHBvc2l0aXZlIG51bWJlcnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtmYWxzZX1cbiAgICovXG4gIHNpZ25lZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBVc2VzIGxvY2FsaXplZCBudW1iZXIgZm9ybWF0dGluZy4gSWYgaXQgaXMgc2V0IHRvIHRydWUsIHVzZXMgZGVmYXVsdFxuICAgKiBsb2NhbGUgb24gdGhlIHN5c3RlbS4gSWYgaXQncyBzZXQgdG8gc3RyaW5nLCB1c2VzIHRoYXQgbG9jYWxlLiBUaGUgZ2l2ZW5cbiAgICogc3RyaW5nIHNob3VsZCBiZSBhXG4gICAqIHtAbGluayBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JRVRGX2xhbmd1YWdlX3RhZyB8IEJDUCA0NyBsYW5ndWFnZSB0YWd9LlxuICAgKiBZb3UgY2FuIGFsc28gZ2l2ZSB0aGUgbGlzdCBvZiBsYW5ndWFnZSB0YWdzLlxuICAgKi9cbiAgbG9jYWxlPzogYm9vbGVhbiB8IHN0cmluZyB8IHN0cmluZ1tdO1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIGZyYWN0aW9uIGRpZ2l0cyB0byBkaXNwbGF5LiBJZiBuZWl0aGVyXG4gICAqIHtAbGlua2NvZGUgbWluaW11bUZyYWN0aW9uRGlnaXRzfSBvciB7QGxpbmtjb2RlIG1heGltdW1GcmFjdGlvbkRpZ2l0c31cbiAgICogYXJlIHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgezN9XG4gICAqL1xuICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZnJhY3Rpb24gZGlnaXRzIHRvIGRpc3BsYXkuIElmIG5laXRoZXJcbiAgICoge0BsaW5rY29kZSBtaW5pbXVtRnJhY3Rpb25EaWdpdHN9IG9yIHtAbGlua2NvZGUgbWF4aW11bUZyYWN0aW9uRGlnaXRzfVxuICAgKiBhcmUgc2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCB7M31cbiAgICovXG4gIG1heGltdW1GcmFjdGlvbkRpZ2l0cz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGJ5dGVzIHRvIGEgaHVtYW4tcmVhZGFibGUgc3RyaW5nOiAxMzM3IOKGkiAxLjM0IGtCXG4gKlxuICogQmFzZWQgb24ge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvcHJldHR5LWJ5dGVzIHwgcHJldHR5LWJ5dGVzfS5cbiAqIEEgdXRpbGl0eSBmb3IgZGlzcGxheWluZyBmaWxlIHNpemVzIGZvciBodW1hbnMuXG4gKlxuICogQHBhcmFtIG51bSBUaGUgYnl0ZXMgdmFsdWUgdG8gZm9ybWF0XG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgZm9ybWF0dGluZ1xuICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBzdHJpbmdcbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGZvcm1hdCB9IGZyb20gXCJAc3RkL2ZtdC9ieXRlc1wiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogYXNzZXJ0RXF1YWxzKGZvcm1hdCgxMzM3KSwgXCIxLjM0IGtCXCIpO1xuICogYXNzZXJ0RXF1YWxzKGZvcm1hdCgxMDApLCBcIjEwMCBCXCIpO1xuICogYGBgXG4gKlxuICogQGV4YW1wbGUgSW5jbHVkZSBiaXRzIHJlcHJlc2VudGF0aW9uXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGZvcm1hdCB9IGZyb20gXCJAc3RkL2ZtdC9ieXRlc1wiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogYXNzZXJ0RXF1YWxzKGZvcm1hdCgxMzM3LCB7IGJpdHM6IHRydWUgfSksIFwiMS4zNCBrYml0XCIpO1xuICogYGBgXG4gKlxuICogQGV4YW1wbGUgSW5jbHVkZSBzaWduXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGZvcm1hdCB9IGZyb20gXCJAc3RkL2ZtdC9ieXRlc1wiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogYXNzZXJ0RXF1YWxzKGZvcm1hdCg0MiwgeyBzaWduZWQ6IHRydWUgfSksIFwiKzQyIEJcIik7XG4gKiBhc3NlcnRFcXVhbHMoZm9ybWF0KC00MiwgeyBzaWduZWQ6IHRydWUgfSksIFwiLTQyIEJcIik7XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBDaGFuZ2UgbG9jYWxlXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGZvcm1hdCB9IGZyb20gXCJAc3RkL2ZtdC9ieXRlc1wiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogYXNzZXJ0RXF1YWxzKGZvcm1hdCgxMzM3LCB7IGxvY2FsZTogXCJkZVwiIH0pLCBcIjEsMzQga0JcIik7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdChcbiAgbnVtOiBudW1iZXIsXG4gIG9wdGlvbnM6IEZvcm1hdE9wdGlvbnMgPSB7fSxcbik6IHN0cmluZyB7XG4gIGlmICghTnVtYmVyLmlzRmluaXRlKG51bSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBhIGZpbml0ZSBudW1iZXIsIGdvdCAke3R5cGVvZiBudW19OiAke251bX1gKTtcbiAgfVxuXG4gIGNvbnN0IFVOSVRTX0ZJUlNUTEVUVEVSID0gKG9wdGlvbnMuYml0cyA/IFwiYlwiIDogXCJCXCIpICsgXCJrTUdUUEVaWVwiO1xuXG4gIGlmIChvcHRpb25zLnNpZ25lZCAmJiBudW0gPT09IDApIHtcbiAgICByZXR1cm4gYCAwICR7VU5JVFNfRklSU1RMRVRURVJbMF19YDtcbiAgfVxuXG4gIGNvbnN0IHByZWZpeCA9IG51bSA8IDAgPyBcIi1cIiA6IChvcHRpb25zLnNpZ25lZCA/IFwiK1wiIDogXCJcIik7XG4gIG51bSA9IE1hdGguYWJzKG51bSk7XG5cbiAgY29uc3QgbG9jYWxlT3B0aW9ucyA9IGdldExvY2FsZU9wdGlvbnMob3B0aW9ucyk7XG5cbiAgaWYgKG51bSA8IDEpIHtcbiAgICBjb25zdCBudW1iZXJTdHJpbmcgPSB0b0xvY2FsZVN0cmluZyhudW0sIG9wdGlvbnMubG9jYWxlLCBsb2NhbGVPcHRpb25zKTtcbiAgICByZXR1cm4gcHJlZml4ICsgbnVtYmVyU3RyaW5nICsgXCIgXCIgKyBVTklUU19GSVJTVExFVFRFUlswXTtcbiAgfVxuXG4gIGNvbnN0IGV4cG9uZW50ID0gTWF0aC5taW4oXG4gICAgTWF0aC5mbG9vcihcbiAgICAgIG9wdGlvbnMuYmluYXJ5ID8gTWF0aC5sb2cobnVtKSAvIE1hdGgubG9nKDEwMjQpIDogTWF0aC5sb2cxMChudW0pIC8gMyxcbiAgICApLFxuICAgIFVOSVRTX0ZJUlNUTEVUVEVSLmxlbmd0aCAtIDEsXG4gICk7XG4gIG51bSAvPSBNYXRoLnBvdyhvcHRpb25zLmJpbmFyeSA/IDEwMjQgOiAxMDAwLCBleHBvbmVudCk7XG5cbiAgaWYgKCFsb2NhbGVPcHRpb25zKSB7XG4gICAgbnVtID0gTnVtYmVyKG51bS50b1ByZWNpc2lvbigzKSk7XG4gIH1cblxuICBjb25zdCBudW1iZXJTdHJpbmcgPSB0b0xvY2FsZVN0cmluZyhcbiAgICBudW0sXG4gICAgb3B0aW9ucy5sb2NhbGUsXG4gICAgbG9jYWxlT3B0aW9ucyxcbiAgKTtcblxuICBsZXQgdW5pdCA9IFVOSVRTX0ZJUlNUTEVUVEVSW2V4cG9uZW50XTtcbiAgaWYgKGV4cG9uZW50ID4gMCkge1xuICAgIHVuaXQgKz0gb3B0aW9ucy5iaW5hcnkgPyBcImlcIiA6IFwiXCI7XG4gICAgdW5pdCArPSBvcHRpb25zLmJpdHMgPyBcImJpdFwiIDogXCJCXCI7XG4gIH1cblxuICByZXR1cm4gcHJlZml4ICsgbnVtYmVyU3RyaW5nICsgXCIgXCIgKyB1bml0O1xufVxuXG5mdW5jdGlvbiBnZXRMb2NhbGVPcHRpb25zKFxuICB7IG1heGltdW1GcmFjdGlvbkRpZ2l0cywgbWluaW11bUZyYWN0aW9uRGlnaXRzIH06IEZvcm1hdE9wdGlvbnMsXG4pOiBMb2NhbGVPcHRpb25zIHwgdW5kZWZpbmVkIHtcbiAgaWYgKFxuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9PT0gdW5kZWZpbmVkICYmIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9PT0gdW5kZWZpbmVkXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHJldDogTG9jYWxlT3B0aW9ucyA9IHt9O1xuICBpZiAobWF4aW11bUZyYWN0aW9uRGlnaXRzICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXQubWF4aW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzO1xuICB9XG4gIGlmIChtaW5pbXVtRnJhY3Rpb25EaWdpdHMgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldC5taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiBGb3JtYXRzIHRoZSBnaXZlbiBudW1iZXIgdXNpbmcgYE51bWJlciN0b0xvY2FsZVN0cmluZ2AuXG4gKiAtIElmIGxvY2FsZSBpcyBhIHN0cmluZywgdGhlIHZhbHVlIGlzIGV4cGVjdGVkIHRvIGJlIGEgbG9jYWxlLWtleSAoZm9yIGV4YW1wbGU6IGBkZWApLlxuICogLSBJZiBsb2NhbGUgaXMgdHJ1ZSwgdGhlIHN5c3RlbSBkZWZhdWx0IGxvY2FsZSBpcyB1c2VkIGZvciB0cmFuc2xhdGlvbi5cbiAqIC0gSWYgbm8gdmFsdWUgZm9yIGxvY2FsZSBpcyBzcGVjaWZpZWQsIHRoZSBudW1iZXIgaXMgcmV0dXJuZWQgdW5tb2RpZmllZC5cbiAqL1xuZnVuY3Rpb24gdG9Mb2NhbGVTdHJpbmcoXG4gIG51bTogbnVtYmVyLFxuICBsb2NhbGU6IGJvb2xlYW4gfCBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCxcbiAgb3B0aW9uczogTG9jYWxlT3B0aW9ucyB8IHVuZGVmaW5lZCxcbik6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgbG9jYWxlID09PSBcInN0cmluZ1wiIHx8IEFycmF5LmlzQXJyYXkobG9jYWxlKSkge1xuICAgIHJldHVybiBudW0udG9Mb2NhbGVTdHJpbmcobG9jYWxlLCBvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChsb2NhbGUgPT09IHRydWUgfHwgb3B0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG51bS50b0xvY2FsZVN0cmluZyh1bmRlZmluZWQsIG9wdGlvbnMpO1xuICB9XG5cbiAgcmV0dXJuIG51bS50b1N0cmluZygpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVFQUF1RTtBQUN2RSxxRUFBcUU7QUFDckUsb0VBQW9FO0FBQ3BFLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckM7Ozs7Ozs7Ozs7Ozs7O0NBY0MsR0FxREQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E4Q0MsR0FDRCxPQUFPLFNBQVMsT0FDZCxHQUFXLEVBQ1gsVUFBeUIsQ0FBQyxDQUFDO0VBRTNCLElBQUksQ0FBQyxPQUFPLFFBQVEsQ0FBQyxNQUFNO0lBQ3pCLE1BQU0sSUFBSSxVQUFVLENBQUMsOEJBQThCLEVBQUUsT0FBTyxJQUFJLEVBQUUsRUFBRSxLQUFLO0VBQzNFO0VBRUEsTUFBTSxvQkFBb0IsQ0FBQyxRQUFRLElBQUksR0FBRyxNQUFNLEdBQUcsSUFBSTtFQUV2RCxJQUFJLFFBQVEsTUFBTSxJQUFJLFFBQVEsR0FBRztJQUMvQixPQUFPLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDLEVBQUUsRUFBRTtFQUNyQztFQUVBLE1BQU0sU0FBUyxNQUFNLElBQUksTUFBTyxRQUFRLE1BQU0sR0FBRyxNQUFNO0VBQ3ZELE1BQU0sS0FBSyxHQUFHLENBQUM7RUFFZixNQUFNLGdCQUFnQixpQkFBaUI7RUFFdkMsSUFBSSxNQUFNLEdBQUc7SUFDWCxNQUFNLGVBQWUsZUFBZSxLQUFLLFFBQVEsTUFBTSxFQUFFO0lBQ3pELE9BQU8sU0FBUyxlQUFlLE1BQU0saUJBQWlCLENBQUMsRUFBRTtFQUMzRDtFQUVBLE1BQU0sV0FBVyxLQUFLLEdBQUcsQ0FDdkIsS0FBSyxLQUFLLENBQ1IsUUFBUSxNQUFNLEdBQUcsS0FBSyxHQUFHLENBQUMsT0FBTyxLQUFLLEdBQUcsQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLE9BQU8sSUFFdEUsa0JBQWtCLE1BQU0sR0FBRztFQUU3QixPQUFPLEtBQUssR0FBRyxDQUFDLFFBQVEsTUFBTSxHQUFHLE9BQU8sTUFBTTtFQUU5QyxJQUFJLENBQUMsZUFBZTtJQUNsQixNQUFNLE9BQU8sSUFBSSxXQUFXLENBQUM7RUFDL0I7RUFFQSxNQUFNLGVBQWUsZUFDbkIsS0FDQSxRQUFRLE1BQU0sRUFDZDtFQUdGLElBQUksT0FBTyxpQkFBaUIsQ0FBQyxTQUFTO0VBQ3RDLElBQUksV0FBVyxHQUFHO0lBQ2hCLFFBQVEsUUFBUSxNQUFNLEdBQUcsTUFBTTtJQUMvQixRQUFRLFFBQVEsSUFBSSxHQUFHLFFBQVE7RUFDakM7RUFFQSxPQUFPLFNBQVMsZUFBZSxNQUFNO0FBQ3ZDO0FBRUEsU0FBUyxpQkFDUCxFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFpQjtFQUUvRCxJQUNFLDBCQUEwQixhQUFhLDBCQUEwQixXQUNqRTtJQUNBO0VBQ0Y7RUFFQSxNQUFNLE1BQXFCLENBQUM7RUFDNUIsSUFBSSwwQkFBMEIsV0FBVztJQUN2QyxJQUFJLHFCQUFxQixHQUFHO0VBQzlCO0VBQ0EsSUFBSSwwQkFBMEIsV0FBVztJQUN2QyxJQUFJLHFCQUFxQixHQUFHO0VBQzlCO0VBQ0EsT0FBTztBQUNUO0FBRUE7Ozs7O0NBS0MsR0FDRCxTQUFTLGVBQ1AsR0FBVyxFQUNYLE1BQStDLEVBQy9DLE9BQWtDO0VBRWxDLElBQUksT0FBTyxXQUFXLFlBQVksTUFBTSxPQUFPLENBQUMsU0FBUztJQUN2RCxPQUFPLElBQUksY0FBYyxDQUFDLFFBQVE7RUFDcEMsT0FBTyxJQUFJLFdBQVcsUUFBUSxZQUFZLFdBQVc7SUFDbkQsT0FBTyxJQUFJLGNBQWMsQ0FBQyxXQUFXO0VBQ3ZDO0VBRUEsT0FBTyxJQUFJLFFBQVE7QUFDckIifQ== +// denoCacheMetadata=4639989136864435531,14649888807913702563
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/7bf9ff33835356995e82eebb24fe4b52afb4f364360acbb1274723efc2414c23.js b/vendor/gen/https/jsr.io/7bf9ff33835356995e82eebb24fe4b52afb4f364360acbb1274723efc2414c23.js new file mode 100644 index 0000000..96e6c49 --- /dev/null +++ b/vendor/gen/https/jsr.io/7bf9ff33835356995e82eebb24fe4b52afb4f364360acbb1274723efc2414c23.js @@ -0,0 +1,45 @@ +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2025 the Deno authors. MIT license. +const YAML_TRUE_BOOLEANS = [ + "true", + "True", + "TRUE" +]; +const YAML_FALSE_BOOLEANS = [ + "false", + "False", + "FALSE" +]; +const YAML_BOOLEANS = [ + ...YAML_TRUE_BOOLEANS, + ...YAML_FALSE_BOOLEANS +]; +export const bool = { + tag: "tag:yaml.org,2002:bool", + kind: "scalar", + defaultStyle: "lowercase", + predicate: (value)=>typeof value === "boolean" || value instanceof Boolean, + construct: (data)=>YAML_TRUE_BOOLEANS.includes(data), + resolve: (data)=>YAML_BOOLEANS.includes(data), + represent: { + // deno-lint-ignore ban-types + lowercase: (object)=>{ + const value = object instanceof Boolean ? object.valueOf() : object; + return value ? "true" : "false"; + }, + // deno-lint-ignore ban-types + uppercase: (object)=>{ + const value = object instanceof Boolean ? object.valueOf() : object; + return value ? "TRUE" : "FALSE"; + }, + // deno-lint-ignore ban-types + camelcase: (object)=>{ + const value = object instanceof Boolean ? object.valueOf() : object; + return value ? "True" : "False"; + } + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQveWFtbC8xLjAuNi9fdHlwZS9ib29sLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFBvcnRlZCBmcm9tIGpzLXlhbWwgdjMuMTMuMTpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvanMteWFtbC9jb21taXQvNjY1YWFkZGE0MjM0OWRjYWU4NjlmMTIwNDBkOWIxMGVmMThkMTJkYVxuLy8gQ29weXJpZ2h0IDIwMTEtMjAxNSBieSBWaXRhbHkgUHV6cmluLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG5cbmltcG9ydCB0eXBlIHsgVHlwZSB9IGZyb20gXCIuLi9fdHlwZS50c1wiO1xuXG5jb25zdCBZQU1MX1RSVUVfQk9PTEVBTlMgPSBbXCJ0cnVlXCIsIFwiVHJ1ZVwiLCBcIlRSVUVcIl07XG5jb25zdCBZQU1MX0ZBTFNFX0JPT0xFQU5TID0gW1wiZmFsc2VcIiwgXCJGYWxzZVwiLCBcIkZBTFNFXCJdO1xuY29uc3QgWUFNTF9CT09MRUFOUyA9IFsuLi5ZQU1MX1RSVUVfQk9PTEVBTlMsIC4uLllBTUxfRkFMU0VfQk9PTEVBTlNdO1xuXG5leHBvcnQgY29uc3QgYm9vbDogVHlwZTxcInNjYWxhclwiLCBib29sZWFuPiA9IHtcbiAgdGFnOiBcInRhZzp5YW1sLm9yZywyMDAyOmJvb2xcIixcbiAga2luZDogXCJzY2FsYXJcIixcbiAgZGVmYXVsdFN0eWxlOiBcImxvd2VyY2FzZVwiLFxuICBwcmVkaWNhdGU6ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIGJvb2xlYW4gPT5cbiAgICB0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiIHx8IHZhbHVlIGluc3RhbmNlb2YgQm9vbGVhbixcbiAgY29uc3RydWN0OiAoZGF0YTogc3RyaW5nKTogYm9vbGVhbiA9PiBZQU1MX1RSVUVfQk9PTEVBTlMuaW5jbHVkZXMoZGF0YSksXG4gIHJlc29sdmU6IChkYXRhOiBzdHJpbmcpOiBib29sZWFuID0+IFlBTUxfQk9PTEVBTlMuaW5jbHVkZXMoZGF0YSksXG4gIHJlcHJlc2VudDoge1xuICAgIC8vIGRlbm8tbGludC1pZ25vcmUgYmFuLXR5cGVzXG4gICAgbG93ZXJjYXNlOiAob2JqZWN0OiBib29sZWFuIHwgQm9vbGVhbik6IHN0cmluZyA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IG9iamVjdCBpbnN0YW5jZW9mIEJvb2xlYW4gPyBvYmplY3QudmFsdWVPZigpIDogb2JqZWN0O1xuICAgICAgcmV0dXJuIHZhbHVlID8gXCJ0cnVlXCIgOiBcImZhbHNlXCI7XG4gICAgfSxcbiAgICAvLyBkZW5vLWxpbnQtaWdub3JlIGJhbi10eXBlc1xuICAgIHVwcGVyY2FzZTogKG9iamVjdDogYm9vbGVhbiB8IEJvb2xlYW4pOiBzdHJpbmcgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBvYmplY3QgaW5zdGFuY2VvZiBCb29sZWFuID8gb2JqZWN0LnZhbHVlT2YoKSA6IG9iamVjdDtcbiAgICAgIHJldHVybiB2YWx1ZSA/IFwiVFJVRVwiIDogXCJGQUxTRVwiO1xuICAgIH0sXG4gICAgLy8gZGVuby1saW50LWlnbm9yZSBiYW4tdHlwZXNcbiAgICBjYW1lbGNhc2U6IChvYmplY3Q6IGJvb2xlYW4gfCBCb29sZWFuKTogc3RyaW5nID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gb2JqZWN0IGluc3RhbmNlb2YgQm9vbGVhbiA/IG9iamVjdC52YWx1ZU9mKCkgOiBvYmplY3Q7XG4gICAgICByZXR1cm4gdmFsdWUgPyBcIlRydWVcIiA6IFwiRmFsc2VcIjtcbiAgICB9LFxuICB9LFxufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0Isb0ZBQW9GO0FBQ3BGLDBFQUEwRTtBQUMxRSxxREFBcUQ7QUFJckQsTUFBTSxxQkFBcUI7RUFBQztFQUFRO0VBQVE7Q0FBTztBQUNuRCxNQUFNLHNCQUFzQjtFQUFDO0VBQVM7RUFBUztDQUFRO0FBQ3ZELE1BQU0sZ0JBQWdCO0tBQUk7S0FBdUI7Q0FBb0I7QUFFckUsT0FBTyxNQUFNLE9BQWdDO0VBQzNDLEtBQUs7RUFDTCxNQUFNO0VBQ04sY0FBYztFQUNkLFdBQVcsQ0FBQyxRQUNWLE9BQU8sVUFBVSxhQUFhLGlCQUFpQjtFQUNqRCxXQUFXLENBQUMsT0FBMEIsbUJBQW1CLFFBQVEsQ0FBQztFQUNsRSxTQUFTLENBQUMsT0FBMEIsY0FBYyxRQUFRLENBQUM7RUFDM0QsV0FBVztJQUNULDZCQUE2QjtJQUM3QixXQUFXLENBQUM7TUFDVixNQUFNLFFBQVEsa0JBQWtCLFVBQVUsT0FBTyxPQUFPLEtBQUs7TUFDN0QsT0FBTyxRQUFRLFNBQVM7SUFDMUI7SUFDQSw2QkFBNkI7SUFDN0IsV0FBVyxDQUFDO01BQ1YsTUFBTSxRQUFRLGtCQUFrQixVQUFVLE9BQU8sT0FBTyxLQUFLO01BQzdELE9BQU8sUUFBUSxTQUFTO0lBQzFCO0lBQ0EsNkJBQTZCO0lBQzdCLFdBQVcsQ0FBQztNQUNWLE1BQU0sUUFBUSxrQkFBa0IsVUFBVSxPQUFPLE9BQU8sS0FBSztNQUM3RCxPQUFPLFFBQVEsU0FBUztJQUMxQjtFQUNGO0FBQ0YsRUFBRSJ9 +// denoCacheMetadata=2240750430742176594,8156036979188265507
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/7e02d6fde9e2a9fd86cfdfe19b8a0abdc309b1e1080fa275a921a36ea9b144bc.js b/vendor/gen/https/jsr.io/7e02d6fde9e2a9fd86cfdfe19b8a0abdc309b1e1080fa275a921a36ea9b144bc.js new file mode 100644 index 0000000..7843cb3 --- /dev/null +++ b/vendor/gen/https/jsr.io/7e02d6fde9e2a9fd86cfdfe19b8a0abdc309b1e1080fa275a921a36ea9b144bc.js @@ -0,0 +1,33 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { joinGlobs as posixJoinGlobs } from "./posix/join_globs.ts"; +import { joinGlobs as windowsJoinGlobs } from "./windows/join_globs.ts"; +/** + * Joins a sequence of globs, then normalizes the resulting glob. + * + * Behaves like {@linkcode https://jsr.io/@std/path/doc/~/join | join()}, but + * doesn't collapse `**\/..` when `globstar` is true. + * + * @example Usage + * ```ts + * import { joinGlobs } from "@std/path/join-globs"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(joinGlobs(["foo", "bar", "..", "baz"]), "foo\\baz"); + * assertEquals(joinGlobs(["foo", "**", "bar", "..", "baz"], { globstar: true }), "foo\\**\\baz"); + * } else { + * assertEquals(joinGlobs(["foo", "bar", "..", "baz"]), "foo/baz"); + * assertEquals(joinGlobs(["foo", "**", "bar", "..", "baz"], { globstar: true }), "foo/**\/baz"); + * } + * ``` + * + * @param globs Globs to be joined and normalized. + * @param options Glob options. + * @returns The joined and normalized glob string. + */ export function joinGlobs(globs, options = {}) { + return isWindows ? windowsJoinGlobs(globs, options) : posixJoinGlobs(globs, options); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9qb2luX2dsb2JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB0eXBlIHsgR2xvYk9wdGlvbnMgfSBmcm9tIFwiLi9fY29tbW9uL2dsb2JfdG9fcmVnX2V4cC50c1wiO1xuaW1wb3J0IHsgaXNXaW5kb3dzIH0gZnJvbSBcIi4vX29zLnRzXCI7XG5pbXBvcnQgeyBqb2luR2xvYnMgYXMgcG9zaXhKb2luR2xvYnMgfSBmcm9tIFwiLi9wb3NpeC9qb2luX2dsb2JzLnRzXCI7XG5pbXBvcnQgeyBqb2luR2xvYnMgYXMgd2luZG93c0pvaW5HbG9icyB9IGZyb20gXCIuL3dpbmRvd3Mvam9pbl9nbG9icy50c1wiO1xuXG5leHBvcnQgdHlwZSB7IEdsb2JPcHRpb25zIH07XG5cbi8qKlxuICogSm9pbnMgYSBzZXF1ZW5jZSBvZiBnbG9icywgdGhlbiBub3JtYWxpemVzIHRoZSByZXN1bHRpbmcgZ2xvYi5cbiAqXG4gKiBCZWhhdmVzIGxpa2Uge0BsaW5rY29kZSBodHRwczovL2pzci5pby9Ac3RkL3BhdGgvZG9jL34vam9pbiB8IGpvaW4oKX0sIGJ1dFxuICogZG9lc24ndCBjb2xsYXBzZSBgKipcXC8uLmAgd2hlbiBgZ2xvYnN0YXJgIGlzIHRydWUuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBqb2luR2xvYnMgfSBmcm9tIFwiQHN0ZC9wYXRoL2pvaW4tZ2xvYnNcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGlmIChEZW5vLmJ1aWxkLm9zID09PSBcIndpbmRvd3NcIikge1xuICogICBhc3NlcnRFcXVhbHMoam9pbkdsb2JzKFtcImZvb1wiLCBcImJhclwiLCBcIi4uXCIsIFwiYmF6XCJdKSwgXCJmb29cXFxcYmF6XCIpO1xuICogICBhc3NlcnRFcXVhbHMoam9pbkdsb2JzKFtcImZvb1wiLCBcIioqXCIsIFwiYmFyXCIsIFwiLi5cIiwgXCJiYXpcIl0sIHsgZ2xvYnN0YXI6IHRydWUgfSksIFwiZm9vXFxcXCoqXFxcXGJhelwiKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGFzc2VydEVxdWFscyhqb2luR2xvYnMoW1wiZm9vXCIsIFwiYmFyXCIsIFwiLi5cIiwgXCJiYXpcIl0pLCBcImZvby9iYXpcIik7XG4gKiAgIGFzc2VydEVxdWFscyhqb2luR2xvYnMoW1wiZm9vXCIsIFwiKipcIiwgXCJiYXJcIiwgXCIuLlwiLCBcImJhelwiXSwgeyBnbG9ic3RhcjogdHJ1ZSB9KSwgXCJmb28vKipcXC9iYXpcIik7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gZ2xvYnMgR2xvYnMgdG8gYmUgam9pbmVkIGFuZCBub3JtYWxpemVkLlxuICogQHBhcmFtIG9wdGlvbnMgR2xvYiBvcHRpb25zLlxuICogQHJldHVybnMgVGhlIGpvaW5lZCBhbmQgbm9ybWFsaXplZCBnbG9iIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpvaW5HbG9icyhcbiAgZ2xvYnM6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBHbG9iT3B0aW9ucyA9IHt9LFxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlzV2luZG93c1xuICAgID8gd2luZG93c0pvaW5HbG9icyhnbG9icywgb3B0aW9ucylcbiAgICA6IHBvc2l4Sm9pbkdsb2JzKGdsb2JzLCBvcHRpb25zKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBR3JDLFNBQVMsU0FBUyxRQUFRLFdBQVc7QUFDckMsU0FBUyxhQUFhLGNBQWMsUUFBUSx3QkFBd0I7QUFDcEUsU0FBUyxhQUFhLGdCQUFnQixRQUFRLDBCQUEwQjtBQUl4RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0F1QkMsR0FDRCxPQUFPLFNBQVMsVUFDZCxLQUFlLEVBQ2YsVUFBdUIsQ0FBQyxDQUFDO0VBRXpCLE9BQU8sWUFDSCxpQkFBaUIsT0FBTyxXQUN4QixlQUFlLE9BQU87QUFDNUIifQ== +// denoCacheMetadata=14416926700287474739,16323115856195365116
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/7ef95e827d53e7a4dd4d0a2daf85aacd41ca0ed4b387c4c1fb903abec22b7f63.js b/vendor/gen/https/jsr.io/7ef95e827d53e7a4dd4d0a2daf85aacd41ca0ed4b387c4c1fb903abec22b7f63.js new file mode 100644 index 0000000..81554df --- /dev/null +++ b/vendor/gen/https/jsr.io/7ef95e827d53e7a4dd4d0a2daf85aacd41ca0ed4b387c4c1fb903abec22b7f63.js @@ -0,0 +1,28 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { encodeWhitespace } from "../_common/to_file_url.ts"; +import { isAbsolute } from "./is_absolute.ts"; +/** + * Converts a path string to a file URL. + * + * @example Usage + * ```ts + * import { toFileUrl } from "@std/path/posix/to-file-url"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(toFileUrl("/home/foo"), new URL("file:///home/foo")); + * assertEquals(toFileUrl("/home/foo bar"), new URL("file:///home/foo%20bar")); + * ``` + * + * @param path The path to convert. + * @returns The file URL. + */ export function toFileUrl(path) { + if (!isAbsolute(path)) { + throw new TypeError(`Path must be absolute: received "${path}"`); + } + const url = new URL("file:///"); + url.pathname = encodeWhitespace(path.replace(/%/g, "%25").replace(/\\/g, "%5C")); + return url; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9wb3NpeC90b19maWxlX3VybC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBlbmNvZGVXaGl0ZXNwYWNlIH0gZnJvbSBcIi4uL19jb21tb24vdG9fZmlsZV91cmwudHNcIjtcbmltcG9ydCB7IGlzQWJzb2x1dGUgfSBmcm9tIFwiLi9pc19hYnNvbHV0ZS50c1wiO1xuXG4vKipcbiAqIENvbnZlcnRzIGEgcGF0aCBzdHJpbmcgdG8gYSBmaWxlIFVSTC5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHRvRmlsZVVybCB9IGZyb20gXCJAc3RkL3BhdGgvcG9zaXgvdG8tZmlsZS11cmxcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydEVxdWFscyh0b0ZpbGVVcmwoXCIvaG9tZS9mb29cIiksIG5ldyBVUkwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpKTtcbiAqIGFzc2VydEVxdWFscyh0b0ZpbGVVcmwoXCIvaG9tZS9mb28gYmFyXCIpLCBuZXcgVVJMKFwiZmlsZTovLy9ob21lL2ZvbyUyMGJhclwiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIGZpbGUgVVJMLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9GaWxlVXJsKHBhdGg6IHN0cmluZyk6IFVSTCB7XG4gIGlmICghaXNBYnNvbHV0ZShwYXRoKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFBhdGggbXVzdCBiZSBhYnNvbHV0ZTogcmVjZWl2ZWQgXCIke3BhdGh9XCJgKTtcbiAgfVxuXG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoXCJmaWxlOi8vL1wiKTtcbiAgdXJsLnBhdGhuYW1lID0gZW5jb2RlV2hpdGVzcGFjZShcbiAgICBwYXRoLnJlcGxhY2UoLyUvZywgXCIlMjVcIikucmVwbGFjZSgvXFxcXC9nLCBcIiU1Q1wiKSxcbiAgKTtcbiAgcmV0dXJuIHVybDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBRXJDLFNBQVMsZ0JBQWdCLFFBQVEsNEJBQTRCO0FBQzdELFNBQVMsVUFBVSxRQUFRLG1CQUFtQjtBQUU5Qzs7Ozs7Ozs7Ozs7Ozs7Q0FjQyxHQUNELE9BQU8sU0FBUyxVQUFVLElBQVk7RUFDcEMsSUFBSSxDQUFDLFdBQVcsT0FBTztJQUNyQixNQUFNLElBQUksVUFBVSxDQUFDLGlDQUFpQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0VBQ2pFO0VBRUEsTUFBTSxNQUFNLElBQUksSUFBSTtFQUNwQixJQUFJLFFBQVEsR0FBRyxpQkFDYixLQUFLLE9BQU8sQ0FBQyxNQUFNLE9BQU8sT0FBTyxDQUFDLE9BQU87RUFFM0MsT0FBTztBQUNUIn0= +// denoCacheMetadata=460925350501805843,18260807639951873378
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/7fe4057724d6a3ff861e6d81afea88473bd0df708dd59158de4eca309bbda2db.js b/vendor/gen/https/jsr.io/7fe4057724d6a3ff861e6d81afea88473bd0df708dd59158de4eca309bbda2db.js new file mode 100644 index 0000000..4895537 --- /dev/null +++ b/vendor/gen/https/jsr.io/7fe4057724d6a3ff861e6d81afea88473bd0df708dd59158de4eca309bbda2db.js @@ -0,0 +1,26 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { parserFactory, toml } from "./_parser.ts"; +/** + * Parses a {@link https://toml.io | TOML} string into an object. + * + * @example Usage + * ```ts + * import { parse } from "@std/toml/parse"; + * import { assertEquals } from "@std/assert"; + * + * const tomlString = `title = "TOML Example" + * [owner] + * name = "Alice" + * bio = "Alice is a programmer."`; + * + * const obj = parse(tomlString); + * assertEquals(obj, { title: "TOML Example", owner: { name: "Alice", bio: "Alice is a programmer." } }); + * ``` + * @param tomlString TOML string to be parsed. + * @returns The parsed JS object. + */ export function parse(tomlString) { + return parserFactory(toml)(tomlString); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvdG9tbC8xLjAuNi9wYXJzZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBwYXJzZXJGYWN0b3J5LCB0b21sIH0gZnJvbSBcIi4vX3BhcnNlci50c1wiO1xuXG4vKipcbiAqIFBhcnNlcyBhIHtAbGluayBodHRwczovL3RvbWwuaW8gfCBUT01MfSBzdHJpbmcgaW50byBhbiBvYmplY3QuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBwYXJzZSB9IGZyb20gXCJAc3RkL3RvbWwvcGFyc2VcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IHRvbWxTdHJpbmcgPSBgdGl0bGUgPSBcIlRPTUwgRXhhbXBsZVwiXG4gKiBbb3duZXJdXG4gKiBuYW1lID0gXCJBbGljZVwiXG4gKiBiaW8gPSBcIkFsaWNlIGlzIGEgcHJvZ3JhbW1lci5cImA7XG4gKlxuICogY29uc3Qgb2JqID0gcGFyc2UodG9tbFN0cmluZyk7XG4gKiBhc3NlcnRFcXVhbHMob2JqLCB7IHRpdGxlOiBcIlRPTUwgRXhhbXBsZVwiLCBvd25lcjogeyBuYW1lOiBcIkFsaWNlXCIsIGJpbzogXCJBbGljZSBpcyBhIHByb2dyYW1tZXIuXCIgfSB9KTtcbiAqIGBgYFxuICogQHBhcmFtIHRvbWxTdHJpbmcgVE9NTCBzdHJpbmcgdG8gYmUgcGFyc2VkLlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBKUyBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZSh0b21sU3RyaW5nOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiBwYXJzZXJGYWN0b3J5KHRvbWwpKHRvbWxTdHJpbmcpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckMsU0FBUyxhQUFhLEVBQUUsSUFBSSxRQUFRLGVBQWU7QUFFbkQ7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWtCQyxHQUNELE9BQU8sU0FBUyxNQUFNLFVBQWtCO0VBQ3RDLE9BQU8sY0FBYyxNQUFNO0FBQzdCIn0= +// denoCacheMetadata=3843191867794975015,15672424288146020302
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/807992fce1e69434fb4f6b410e34161f57cd0c25d162888c7b021ebb3c978979.js b/vendor/gen/https/jsr.io/807992fce1e69434fb4f6b410e34161f57cd0c25d162888c7b021ebb3c978979.js new file mode 100644 index 0000000..2d06879 --- /dev/null +++ b/vendor/gen/https/jsr.io/807992fce1e69434fb4f6b410e34161f57cd0c25d162888c7b021ebb3c978979.js @@ -0,0 +1,10 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. +import { CHAR_FORWARD_SLASH } from "../_common/constants.ts"; +export function isPosixPathSeparator(code) { + return code === CHAR_FORWARD_SLASH; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9wb3NpeC9fdXRpbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IHRoZSBCcm93c2VyaWZ5IGF1dGhvcnMuIE1JVCBMaWNlbnNlLlxuLy8gUG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2Jyb3dzZXJpZnkvcGF0aC1icm93c2VyaWZ5L1xuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBDSEFSX0ZPUldBUkRfU0xBU0ggfSBmcm9tIFwiLi4vX2NvbW1vbi9jb25zdGFudHMudHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzUG9zaXhQYXRoU2VwYXJhdG9yKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gY29kZSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxpREFBaUQ7QUFDakQsNkRBQTZEO0FBQzdELHFDQUFxQztBQUVyQyxTQUFTLGtCQUFrQixRQUFRLDBCQUEwQjtBQUU3RCxPQUFPLFNBQVMscUJBQXFCLElBQVk7RUFDL0MsT0FBTyxTQUFTO0FBQ2xCIn0= +// denoCacheMetadata=10759725938560550747,4014566459724409501
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/84003758484e1d3a99bebf88da29e64a399372453c17163f298aa6a88be5214b.js b/vendor/gen/https/jsr.io/84003758484e1d3a99bebf88da29e64a399372453c17163f298aa6a88be5214b.js new file mode 100644 index 0000000..706b395 --- /dev/null +++ b/vendor/gen/https/jsr.io/84003758484e1d3a99bebf88da29e64a399372453c17163f298aa6a88be5214b.js @@ -0,0 +1,108 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +export const padding = "=".charCodeAt(0); +export const alphabet = { + base64: new TextEncoder().encode("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"), + base64url: new TextEncoder().encode("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_") +}; +export const rAlphabet = { + base64: new Uint8Array(128).fill(64), + base64url: new Uint8Array(128).fill(64) +}; +alphabet.base64.forEach((byte, i)=>rAlphabet.base64[byte] = i); +alphabet.base64url.forEach((byte, i)=>rAlphabet.base64url[byte] = i); +/** + * Calculate the output size needed to encode a given input size for + * {@linkcode encodeIntoBase64}. + * + * @param originalSize The size of the input buffer. + * @returns The size of the output buffer. + * + * @example Basic Usage + * ```ts + * import { assertEquals } from "@std/assert"; + * import { calcSizeBase64 } from "@std/encoding/unstable-base64"; + * + * assertEquals(calcSizeBase64(1), 4); + * ``` + */ export function calcSizeBase64(originalSize) { + return ((originalSize + 2) / 3 | 0) * 4; +} +export function encode(buffer, i, o, alphabet, padding) { + i += 2; + for(; i < buffer.length; i += 3){ + const x = buffer[i - 2] << 16 | buffer[i - 1] << 8 | buffer[i]; + buffer[o++] = alphabet[x >> 18]; + buffer[o++] = alphabet[x >> 12 & 0x3F]; + buffer[o++] = alphabet[x >> 6 & 0x3F]; + buffer[o++] = alphabet[x & 0x3F]; + } + switch(i){ + case buffer.length + 1: + { + const x = buffer[i - 2] << 16; + buffer[o++] = alphabet[x >> 18]; + buffer[o++] = alphabet[x >> 12 & 0x3F]; + buffer[o++] = padding; + buffer[o++] = padding; + break; + } + case buffer.length: + { + const x = buffer[i - 2] << 16 | buffer[i - 1] << 8; + buffer[o++] = alphabet[x >> 18]; + buffer[o++] = alphabet[x >> 12 & 0x3F]; + buffer[o++] = alphabet[x >> 6 & 0x3F]; + buffer[o++] = padding; + break; + } + } + return o; +} +export function decode(buffer, i, o, alphabet, padding) { + for(let x = buffer.length - 2; x < buffer.length; ++x){ + if (buffer[x] === padding) { + for(let y = x + 1; y < buffer.length; ++y){ + if (buffer[y] !== padding) { + throw new TypeError(`Cannot decode input as base64: Invalid character (${String.fromCharCode(buffer[y])})`); + } + } + buffer = buffer.subarray(0, x); + break; + } + } + if ((buffer.length - o) % 4 === 1) { + throw new RangeError(`Cannot decode input as base64: Length (${buffer.length - o}), excluding padding, must not have a remainder of 1 when divided by 4`); + } + i += 3; + for(; i < buffer.length; i += 4){ + const x = getByte(buffer[i - 3], alphabet) << 18 | getByte(buffer[i - 2], alphabet) << 12 | getByte(buffer[i - 1], alphabet) << 6 | getByte(buffer[i], alphabet); + buffer[o++] = x >> 16; + buffer[o++] = x >> 8 & 0xFF; + buffer[o++] = x & 0xFF; + } + switch(i){ + case buffer.length + 1: + { + const x = getByte(buffer[i - 3], alphabet) << 18 | getByte(buffer[i - 2], alphabet) << 12; + buffer[o++] = x >> 16; + break; + } + case buffer.length: + { + const x = getByte(buffer[i - 3], alphabet) << 18 | getByte(buffer[i - 2], alphabet) << 12 | getByte(buffer[i - 1], alphabet) << 6; + buffer[o++] = x >> 16; + buffer[o++] = x >> 8 & 0xFF; + break; + } + } + return o; +} +function getByte(char, alphabet) { + const byte = alphabet[char] ?? 64; + if (byte === 64) { + throw new TypeError(`Cannot decode input as base64: Invalid character (${String.fromCharCode(char)})`); + } + return byte; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZW5jb2RpbmcvMS4wLjEwL19jb21tb242NC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuXG5pbXBvcnQgdHlwZSB7IFVpbnQ4QXJyYXlfIH0gZnJvbSBcIi4vX3R5cGVzLnRzXCI7XG5leHBvcnQgdHlwZSB7IFVpbnQ4QXJyYXlfIH07XG5cbmV4cG9ydCBjb25zdCBwYWRkaW5nID0gXCI9XCIuY2hhckNvZGVBdCgwKTtcbmV4cG9ydCBjb25zdCBhbHBoYWJldDogUmVjb3JkPEJhc2U2NEFscGhhYmV0LCBVaW50OEFycmF5PiA9IHtcbiAgYmFzZTY0OiBuZXcgVGV4dEVuY29kZXIoKVxuICAgIC5lbmNvZGUoXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvXCIpLFxuICBiYXNlNjR1cmw6IG5ldyBUZXh0RW5jb2RlcigpXG4gICAgLmVuY29kZShcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LV9cIiksXG59O1xuZXhwb3J0IGNvbnN0IHJBbHBoYWJldDogUmVjb3JkPEJhc2U2NEFscGhhYmV0LCBVaW50OEFycmF5PiA9IHtcbiAgYmFzZTY0OiBuZXcgVWludDhBcnJheSgxMjgpLmZpbGwoNjQpLCAvLyBhbHBoYWJldC5iYXNlNjQubGVuZ3RoXG4gIGJhc2U2NHVybDogbmV3IFVpbnQ4QXJyYXkoMTI4KS5maWxsKDY0KSxcbn07XG5hbHBoYWJldC5iYXNlNjRcbiAgLmZvckVhY2goKGJ5dGUsIGkpID0+IHJBbHBoYWJldC5iYXNlNjRbYnl0ZV0gPSBpKTtcbmFscGhhYmV0LmJhc2U2NHVybFxuICAuZm9yRWFjaCgoYnl0ZSwgaSkgPT4gckFscGhhYmV0LmJhc2U2NHVybFtieXRlXSA9IGkpO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGVuY29kaW5nIGFuZCBkZWNvZGluZyBiYXNlNjQgc3RyaW5ncy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlNjRPcHRpb25zIHtcbiAgLyoqIFRoZSBiYXNlNjQgYWxwaGFiZXQuIERlZmF1bHRzIHRvIFwiYmFzZTY0XCIgKi9cbiAgYWxwaGFiZXQ/OiBCYXNlNjRBbHBoYWJldDtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZTY0IGFscGhhYmV0cy5cbiAqL1xuZXhwb3J0IHR5cGUgQmFzZTY0QWxwaGFiZXQgPSBcImJhc2U2NFwiIHwgXCJiYXNlNjR1cmxcIjtcblxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIG91dHB1dCBzaXplIG5lZWRlZCB0byBlbmNvZGUgYSBnaXZlbiBpbnB1dCBzaXplIGZvclxuICoge0BsaW5rY29kZSBlbmNvZGVJbnRvQmFzZTY0fS5cbiAqXG4gKiBAcGFyYW0gb3JpZ2luYWxTaXplIFRoZSBzaXplIG9mIHRoZSBpbnB1dCBidWZmZXIuXG4gKiBAcmV0dXJucyBUaGUgc2l6ZSBvZiB0aGUgb3V0cHV0IGJ1ZmZlci5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICogaW1wb3J0IHsgY2FsY1NpemVCYXNlNjQgfSBmcm9tIFwiQHN0ZC9lbmNvZGluZy91bnN0YWJsZS1iYXNlNjRcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoY2FsY1NpemVCYXNlNjQoMSksIDQpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjU2l6ZUJhc2U2NChvcmlnaW5hbFNpemU6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiAoKG9yaWdpbmFsU2l6ZSArIDIpIC8gMyB8IDApICogNDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZShcbiAgYnVmZmVyOiBVaW50OEFycmF5XyxcbiAgaTogbnVtYmVyLFxuICBvOiBudW1iZXIsXG4gIGFscGhhYmV0OiBVaW50OEFycmF5LFxuICBwYWRkaW5nOiBudW1iZXIsXG4pOiBudW1iZXIge1xuICBpICs9IDI7XG4gIGZvciAoOyBpIDwgYnVmZmVyLmxlbmd0aDsgaSArPSAzKSB7XG4gICAgY29uc3QgeCA9IChidWZmZXJbaSAtIDJdISA8PCAxNikgfCAoYnVmZmVyW2kgLSAxXSEgPDwgOCkgfCBidWZmZXJbaV0hO1xuICAgIGJ1ZmZlcltvKytdID0gYWxwaGFiZXRbeCA+PiAxOF0hO1xuICAgIGJ1ZmZlcltvKytdID0gYWxwaGFiZXRbeCA+PiAxMiAmIDB4M0ZdITtcbiAgICBidWZmZXJbbysrXSA9IGFscGhhYmV0W3ggPj4gNiAmIDB4M0ZdITtcbiAgICBidWZmZXJbbysrXSA9IGFscGhhYmV0W3ggJiAweDNGXSE7XG4gIH1cbiAgc3dpdGNoIChpKSB7XG4gICAgY2FzZSBidWZmZXIubGVuZ3RoICsgMToge1xuICAgICAgY29uc3QgeCA9IGJ1ZmZlcltpIC0gMl0hIDw8IDE2O1xuICAgICAgYnVmZmVyW28rK10gPSBhbHBoYWJldFt4ID4+IDE4XSE7XG4gICAgICBidWZmZXJbbysrXSA9IGFscGhhYmV0W3ggPj4gMTIgJiAweDNGXSE7XG4gICAgICBidWZmZXJbbysrXSA9IHBhZGRpbmc7XG4gICAgICBidWZmZXJbbysrXSA9IHBhZGRpbmc7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBidWZmZXIubGVuZ3RoOiB7XG4gICAgICBjb25zdCB4ID0gKGJ1ZmZlcltpIC0gMl0hIDw8IDE2KSB8IChidWZmZXJbaSAtIDFdISA8PCA4KTtcbiAgICAgIGJ1ZmZlcltvKytdID0gYWxwaGFiZXRbeCA+PiAxOF0hO1xuICAgICAgYnVmZmVyW28rK10gPSBhbHBoYWJldFt4ID4+IDEyICYgMHgzRl0hO1xuICAgICAgYnVmZmVyW28rK10gPSBhbHBoYWJldFt4ID4+IDYgJiAweDNGXSE7XG4gICAgICBidWZmZXJbbysrXSA9IHBhZGRpbmc7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG87XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGUoXG4gIGJ1ZmZlcjogVWludDhBcnJheV8sXG4gIGk6IG51bWJlcixcbiAgbzogbnVtYmVyLFxuICBhbHBoYWJldDogVWludDhBcnJheSxcbiAgcGFkZGluZzogbnVtYmVyLFxuKTogbnVtYmVyIHtcbiAgZm9yIChsZXQgeCA9IGJ1ZmZlci5sZW5ndGggLSAyOyB4IDwgYnVmZmVyLmxlbmd0aDsgKyt4KSB7XG4gICAgaWYgKGJ1ZmZlclt4XSA9PT0gcGFkZGluZykge1xuICAgICAgZm9yIChsZXQgeSA9IHggKyAxOyB5IDwgYnVmZmVyLmxlbmd0aDsgKyt5KSB7XG4gICAgICAgIGlmIChidWZmZXJbeV0gIT09IHBhZGRpbmcpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgICAgYENhbm5vdCBkZWNvZGUgaW5wdXQgYXMgYmFzZTY0OiBJbnZhbGlkIGNoYXJhY3RlciAoJHtcbiAgICAgICAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZShidWZmZXJbeV0hKVxuICAgICAgICAgICAgfSlgLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJ1ZmZlciA9IGJ1ZmZlci5zdWJhcnJheSgwLCB4KTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoKGJ1ZmZlci5sZW5ndGggLSBvKSAlIDQgPT09IDEpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcbiAgICAgIGBDYW5ub3QgZGVjb2RlIGlucHV0IGFzIGJhc2U2NDogTGVuZ3RoICgke1xuICAgICAgICBidWZmZXIubGVuZ3RoIC0gb1xuICAgICAgfSksIGV4Y2x1ZGluZyBwYWRkaW5nLCBtdXN0IG5vdCBoYXZlIGEgcmVtYWluZGVyIG9mIDEgd2hlbiBkaXZpZGVkIGJ5IDRgLFxuICAgICk7XG4gIH1cblxuICBpICs9IDM7XG4gIGZvciAoOyBpIDwgYnVmZmVyLmxlbmd0aDsgaSArPSA0KSB7XG4gICAgY29uc3QgeCA9IChnZXRCeXRlKGJ1ZmZlcltpIC0gM10hLCBhbHBoYWJldCkgPDwgMTgpIHxcbiAgICAgIChnZXRCeXRlKGJ1ZmZlcltpIC0gMl0hLCBhbHBoYWJldCkgPDwgMTIpIHxcbiAgICAgIChnZXRCeXRlKGJ1ZmZlcltpIC0gMV0hLCBhbHBoYWJldCkgPDwgNikgfFxuICAgICAgZ2V0Qnl0ZShidWZmZXJbaV0hLCBhbHBoYWJldCk7XG4gICAgYnVmZmVyW28rK10gPSB4ID4+IDE2O1xuICAgIGJ1ZmZlcltvKytdID0geCA+PiA4ICYgMHhGRjtcbiAgICBidWZmZXJbbysrXSA9IHggJiAweEZGO1xuICB9XG4gIHN3aXRjaCAoaSkge1xuICAgIGNhc2UgYnVmZmVyLmxlbmd0aCArIDE6IHtcbiAgICAgIGNvbnN0IHggPSAoZ2V0Qnl0ZShidWZmZXJbaSAtIDNdISwgYWxwaGFiZXQpIDw8IDE4KSB8XG4gICAgICAgIChnZXRCeXRlKGJ1ZmZlcltpIC0gMl0hLCBhbHBoYWJldCkgPDwgMTIpO1xuICAgICAgYnVmZmVyW28rK10gPSB4ID4+IDE2O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgYnVmZmVyLmxlbmd0aDoge1xuICAgICAgY29uc3QgeCA9IChnZXRCeXRlKGJ1ZmZlcltpIC0gM10hLCBhbHBoYWJldCkgPDwgMTgpIHxcbiAgICAgICAgKGdldEJ5dGUoYnVmZmVyW2kgLSAyXSEsIGFscGhhYmV0KSA8PCAxMikgfFxuICAgICAgICAoZ2V0Qnl0ZShidWZmZXJbaSAtIDFdISwgYWxwaGFiZXQpIDw8IDYpO1xuICAgICAgYnVmZmVyW28rK10gPSB4ID4+IDE2O1xuICAgICAgYnVmZmVyW28rK10gPSB4ID4+IDggJiAweEZGO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBvO1xufVxuXG5mdW5jdGlvbiBnZXRCeXRlKGNoYXI6IG51bWJlciwgYWxwaGFiZXQ6IFVpbnQ4QXJyYXkpOiBudW1iZXIge1xuICBjb25zdCBieXRlID0gYWxwaGFiZXRbY2hhcl0gPz8gNjQ7XG4gIGlmIChieXRlID09PSA2NCkgeyAvLyBhbHBoYWJldC5CYXNlNjQubGVuZ3RoXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIGBDYW5ub3QgZGVjb2RlIGlucHV0IGFzIGJhc2U2NDogSW52YWxpZCBjaGFyYWN0ZXIgKCR7XG4gICAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhcilcbiAgICAgIH0pYCxcbiAgICApO1xuICB9XG4gIHJldHVybiBieXRlO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUtyRCxPQUFPLE1BQU0sVUFBVSxJQUFJLFVBQVUsQ0FBQyxHQUFHO0FBQ3pDLE9BQU8sTUFBTSxXQUErQztFQUMxRCxRQUFRLElBQUksY0FDVCxNQUFNLENBQUM7RUFDVixXQUFXLElBQUksY0FDWixNQUFNLENBQUM7QUFDWixFQUFFO0FBQ0YsT0FBTyxNQUFNLFlBQWdEO0VBQzNELFFBQVEsSUFBSSxXQUFXLEtBQUssSUFBSSxDQUFDO0VBQ2pDLFdBQVcsSUFBSSxXQUFXLEtBQUssSUFBSSxDQUFDO0FBQ3RDLEVBQUU7QUFDRixTQUFTLE1BQU0sQ0FDWixPQUFPLENBQUMsQ0FBQyxNQUFNLElBQU0sVUFBVSxNQUFNLENBQUMsS0FBSyxHQUFHO0FBQ2pELFNBQVMsU0FBUyxDQUNmLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUFLLEdBQUc7QUFlcEQ7Ozs7Ozs7Ozs7Ozs7O0NBY0MsR0FDRCxPQUFPLFNBQVMsZUFBZSxZQUFvQjtFQUNqRCxPQUFPLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSTtBQUN4QztBQUVBLE9BQU8sU0FBUyxPQUNkLE1BQW1CLEVBQ25CLENBQVMsRUFDVCxDQUFTLEVBQ1QsUUFBb0IsRUFDcEIsT0FBZTtFQUVmLEtBQUs7RUFDTCxNQUFPLElBQUksT0FBTyxNQUFNLEVBQUUsS0FBSyxFQUFHO0lBQ2hDLE1BQU0sSUFBSSxBQUFDLE1BQU0sQ0FBQyxJQUFJLEVB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 +// denoCacheMetadata=7756811618221315489,14840202499170379627
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/85a9de88532df558c8914723531a910b73b52d30a948d4836769a3d85a2c4b76.js b/vendor/gen/https/jsr.io/85a9de88532df558c8914723531a910b73b52d30a948d4836769a3d85a2c4b76.js new file mode 100644 index 0000000..1ef3061 --- /dev/null +++ b/vendor/gen/https/jsr.io/85a9de88532df558c8914723531a910b73b52d30a948d4836769a3d85a2c4b76.js @@ -0,0 +1,10 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. +import { CHAR_FORWARD_SLASH } from "../_common/constants.ts"; +export function isPosixPathSeparator(code) { + return code === CHAR_FORWARD_SLASH; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9wb3NpeC9fdXRpbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IHRoZSBCcm93c2VyaWZ5IGF1dGhvcnMuIE1JVCBMaWNlbnNlLlxuLy8gUG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2Jyb3dzZXJpZnkvcGF0aC1icm93c2VyaWZ5L1xuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBDSEFSX0ZPUldBUkRfU0xBU0ggfSBmcm9tIFwiLi4vX2NvbW1vbi9jb25zdGFudHMudHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzUG9zaXhQYXRoU2VwYXJhdG9yKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gY29kZSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxpREFBaUQ7QUFDakQsNkRBQTZEO0FBQzdELHFDQUFxQztBQUVyQyxTQUFTLGtCQUFrQixRQUFRLDBCQUEwQjtBQUU3RCxPQUFPLFNBQVMscUJBQXFCLElBQVk7RUFDL0MsT0FBTyxTQUFTO0FBQ2xCIn0= +// denoCacheMetadata=1567545627153975335,5222158270785947831
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/8716e215c72c88449c76eb578318d4821148047bf78f5e21398b6703ce3191b4.js b/vendor/gen/https/jsr.io/8716e215c72c88449c76eb578318d4821148047bf78f5e21398b6703ce3191b4.js new file mode 100644 index 0000000..3bf67ef --- /dev/null +++ b/vendor/gen/https/jsr.io/8716e215c72c88449c76eb578318d4821148047bf78f5e21398b6703ce3191b4.js @@ -0,0 +1,15 @@ +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2025 the Deno authors. MIT license. +export const set = { + tag: "tag:yaml.org,2002:set", + kind: "mapping", + construct: (data)=>data !== null ? data : {}, + resolve: (data)=>{ + if (data === null) return true; + return Object.values(data).every((it)=>it === null); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQveWFtbC8xLjAuNi9fdHlwZS9zZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUG9ydGVkIGZyb20ganMteWFtbCB2My4xMy4xOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVjYS9qcy15YW1sL2NvbW1pdC82NjVhYWRkYTQyMzQ5ZGNhZTg2OWYxMjA0MGQ5YjEwZWYxOGQxMmRhXG4vLyBDb3B5cmlnaHQgMjAxMS0yMDE1IGJ5IFZpdGFseSBQdXpyaW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cblxuaW1wb3J0IHR5cGUgeyBUeXBlIH0gZnJvbSBcIi4uL190eXBlLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBzZXQ6IFR5cGU8XCJtYXBwaW5nXCIsIFJlY29yZDxQcm9wZXJ0eUtleSwgdW5rbm93bj4+ID0ge1xuICB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6c2V0XCIsXG4gIGtpbmQ6IFwibWFwcGluZ1wiLFxuICBjb25zdHJ1Y3Q6IChkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+XG4gICAgZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiB7fSxcbiAgcmVzb2x2ZTogKGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKGRhdGEpLmV2ZXJ5KChpdCkgPT4gaXQgPT09IG51bGwpO1xuICB9LFxufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0Isb0ZBQW9GO0FBQ3BGLDBFQUEwRTtBQUMxRSxxREFBcUQ7QUFJckQsT0FBTyxNQUFNLE1BQXFEO0VBQ2hFLEtBQUs7RUFDTCxNQUFNO0VBQ04sV0FBVyxDQUFDLE9BQ1YsU0FBUyxPQUFPLE9BQU8sQ0FBQztFQUMxQixTQUFTLENBQUM7SUFDUixJQUFJLFNBQVMsTUFBTSxPQUFPO0lBQzFCLE9BQU8sT0FBTyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxLQUFPLE9BQU87RUFDbEQ7QUFDRixFQUFFIn0= +// denoCacheMetadata=7748132789210695546,4577490462689952902
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/8723e1f25cd62b03a4a90125bfa0735a433fa48534216660acddc5339e57971d.js b/vendor/gen/https/jsr.io/8723e1f25cd62b03a4a90125bfa0735a433fa48534216660acddc5339e57971d.js new file mode 100644 index 0000000..27dccec --- /dev/null +++ b/vendor/gen/https/jsr.io/8723e1f25cd62b03a4a90125bfa0735a433fa48534216660acddc5339e57971d.js @@ -0,0 +1,29 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { resolve as posixResolve } from "./posix/resolve.ts"; +import { resolve as windowsResolve } from "./windows/resolve.ts"; +/** + * Resolves path segments into a path. + * + * @example Usage + * ```ts + * import { resolve } from "@std/path/resolve"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(resolve("C:\\foo", "bar", "baz"), "C:\\foo\\bar\\baz"); + * assertEquals(resolve("C:\\foo", "C:\\bar", "baz"), "C:\\bar\\baz"); + * } else { + * assertEquals(resolve("/foo", "bar", "baz"), "/foo/bar/baz"); + * assertEquals(resolve("/foo", "/bar", "baz"), "/bar/baz"); + * } + * ``` + * + * @param pathSegments Path segments to process to path. + * @returns The resolved path. + */ export function resolve(...pathSegments) { + return isWindows ? windowsResolve(...pathSegments) : posixResolve(...pathSegments); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9yZXNvbHZlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGlzV2luZG93cyB9IGZyb20gXCIuL19vcy50c1wiO1xuaW1wb3J0IHsgcmVzb2x2ZSBhcyBwb3NpeFJlc29sdmUgfSBmcm9tIFwiLi9wb3NpeC9yZXNvbHZlLnRzXCI7XG5pbXBvcnQgeyByZXNvbHZlIGFzIHdpbmRvd3NSZXNvbHZlIH0gZnJvbSBcIi4vd2luZG93cy9yZXNvbHZlLnRzXCI7XG5cbi8qKlxuICogUmVzb2x2ZXMgcGF0aCBzZWdtZW50cyBpbnRvIGEgcGF0aC5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHJlc29sdmUgfSBmcm9tIFwiQHN0ZC9wYXRoL3Jlc29sdmVcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGlmIChEZW5vLmJ1aWxkLm9zID09PSBcIndpbmRvd3NcIikge1xuICogICBhc3NlcnRFcXVhbHMocmVzb2x2ZShcIkM6XFxcXGZvb1wiLCBcImJhclwiLCBcImJhelwiKSwgXCJDOlxcXFxmb29cXFxcYmFyXFxcXGJhelwiKTtcbiAqICAgYXNzZXJ0RXF1YWxzKHJlc29sdmUoXCJDOlxcXFxmb29cIiwgXCJDOlxcXFxiYXJcIiwgXCJiYXpcIiksIFwiQzpcXFxcYmFyXFxcXGJhelwiKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGFzc2VydEVxdWFscyhyZXNvbHZlKFwiL2Zvb1wiLCBcImJhclwiLCBcImJhelwiKSwgXCIvZm9vL2Jhci9iYXpcIik7XG4gKiAgIGFzc2VydEVxdWFscyhyZXNvbHZlKFwiL2Zvb1wiLCBcIi9iYXJcIiwgXCJiYXpcIiksIFwiL2Jhci9iYXpcIik7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gcGF0aFNlZ21lbnRzIFBhdGggc2VnbWVudHMgdG8gcHJvY2VzcyB0byBwYXRoLlxuICogQHJldHVybnMgVGhlIHJlc29sdmVkIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlKC4uLnBhdGhTZWdtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICByZXR1cm4gaXNXaW5kb3dzXG4gICAgPyB3aW5kb3dzUmVzb2x2ZSguLi5wYXRoU2VnbWVudHMpXG4gICAgOiBwb3NpeFJlc29sdmUoLi4ucGF0aFNlZ21lbnRzKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBRXJDLFNBQVMsU0FBUyxRQUFRLFdBQVc7QUFDckMsU0FBUyxXQUFXLFlBQVksUUFBUSxxQkFBcUI7QUFDN0QsU0FBUyxXQUFXLGNBQWMsUUFBUSx1QkFBdUI7QUFFakU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FtQkMsR0FDRCxPQUFPLFNBQVMsUUFBUSxHQUFHLFlBQXNCO0VBQy9DLE9BQU8sWUFDSCxrQkFBa0IsZ0JBQ2xCLGdCQUFnQjtBQUN0QiJ9 +// denoCacheMetadata=11598194813702196850,8135697438734185210
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/87f385692355b13d6c2d3c59d5637b249b3dbd5e129200cf556a65f3ff1cf348.js b/vendor/gen/https/jsr.io/87f385692355b13d6c2d3c59d5637b249b3dbd5e129200cf556a65f3ff1cf348.js new file mode 100644 index 0000000..704465f --- /dev/null +++ b/vendor/gen/https/jsr.io/87f385692355b13d6c2d3c59d5637b249b3dbd5e129200cf556a65f3ff1cf348.js @@ -0,0 +1,34 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +import db from "./vendor/db.ts"; +/** A map of the media type for a given extension */ export const types = new Map(); +/** A map of extensions for a given media type. */ const extensions = new Map(); +/** Internal function to populate the maps based on the Mime DB. */ const preference = [ + "nginx", + "apache", + undefined, + "iana" +]; +for (const type of Object.keys(db)){ + const mime = db[type]; + const exts = mime.extensions; + if (!exts || !exts.length) { + continue; + } + // @ts-ignore Work around https://github.com/denoland/dnt/issues/148 + extensions.set(type, exts); + for (const ext of exts){ + const current = types.get(ext); + if (current) { + const from = preference.indexOf(db[current].source); + const to = preference.indexOf(mime.source); + if (current !== "application/octet-stream" && current !== "application/mp4" && (from > to || // @ts-ignore work around https://github.com/denoland/dnt/issues/148 + from === to && current.startsWith("application/"))) { + continue; + } + } + types.set(ext, type); + } +} +export { db, extensions }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvbWVkaWEtdHlwZXMvMS4xLjAvX2RiLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG5pbXBvcnQgZGIgZnJvbSBcIi4vdmVuZG9yL2RiLnRzXCI7XG5pbXBvcnQgdHlwZSB7IERCRW50cnkgfSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuXG5leHBvcnQgdHlwZSBLZXlPZkRiID0ga2V5b2YgdHlwZW9mIGRiO1xuXG4vKiogQSBtYXAgb2YgdGhlIG1lZGlhIHR5cGUgZm9yIGEgZ2l2ZW4gZXh0ZW5zaW9uICovXG5leHBvcnQgY29uc3QgdHlwZXMgPSBuZXcgTWFwPHN0cmluZywgS2V5T2ZEYj4oKTtcblxuLyoqIEEgbWFwIG9mIGV4dGVuc2lvbnMgZm9yIGEgZ2l2ZW4gbWVkaWEgdHlwZS4gKi9cbmNvbnN0IGV4dGVuc2lvbnM6IE1hcDxzdHJpbmcsIHN0cmluZ1tdPiA9IG5ldyBNYXAoKTtcblxuLyoqIEludGVybmFsIGZ1bmN0aW9uIHRvIHBvcHVsYXRlIHRoZSBtYXBzIGJhc2VkIG9uIHRoZSBNaW1lIERCLiAqL1xuY29uc3QgcHJlZmVyZW5jZSA9IFtcIm5naW54XCIsIFwiYXBhY2hlXCIsIHVuZGVmaW5lZCwgXCJpYW5hXCJdO1xuXG5mb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXMoZGIpIGFzIEtleU9mRGJbXSkge1xuICBjb25zdCBtaW1lID0gZGJbdHlwZV0gYXMgREJFbnRyeTtcbiAgY29uc3QgZXh0cyA9IG1pbWUuZXh0ZW5zaW9ucztcblxuICBpZiAoIWV4dHMgfHwgIWV4dHMubGVuZ3RoKSB7XG4gICAgY29udGludWU7XG4gIH1cblxuICAvLyBAdHMtaWdub3JlIFdvcmsgYXJvdW5kIGh0dHBzOi8vZ2l0aHViLmNvbS9kZW5vbGFuZC9kbnQvaXNzdWVzLzE0OFxuICBleHRlbnNpb25zLnNldCh0eXBlLCBleHRzKTtcblxuICBmb3IgKGNvbnN0IGV4dCBvZiBleHRzKSB7XG4gICAgY29uc3QgY3VycmVudCA9IHR5cGVzLmdldChleHQpO1xuICAgIGlmIChjdXJyZW50KSB7XG4gICAgICBjb25zdCBmcm9tID0gcHJlZmVyZW5jZS5pbmRleE9mKChkYltjdXJyZW50XSBhcyBEQkVudHJ5KS5zb3VyY2UpO1xuICAgICAgY29uc3QgdG8gPSBwcmVmZXJlbmNlLmluZGV4T2YobWltZS5zb3VyY2UpO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGN1cnJlbnQgIT09IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCIgJiZcbiAgICAgICAgY3VycmVudCAhPT0gXCJhcHBsaWNhdGlvbi9tcDRcIiAmJlxuICAgICAgICAoZnJvbSA+IHRvIHx8XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZSB3b3JrIGFyb3VuZCBodHRwczovL2dpdGh1Yi5jb20vZGVub2xhbmQvZG50L2lzc3Vlcy8xNDhcbiAgICAgICAgICAoZnJvbSA9PT0gdG8gJiYgY3VycmVudC5zdGFydHNXaXRoKFwiYXBwbGljYXRpb24vXCIpKSlcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0eXBlcy5zZXQoZXh0LCB0eXBlKTtcbiAgfVxufVxuXG5leHBvcnQgeyBkYiwgZXh0ZW5zaW9ucyB9O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxPQUFPLFFBQVEsaUJBQWlCO0FBS2hDLGtEQUFrRCxHQUNsRCxPQUFPLE1BQU0sUUFBUSxJQUFJLE1BQXVCO0FBRWhELGdEQUFnRCxHQUNoRCxNQUFNLGFBQW9DLElBQUk7QUFFOUMsaUVBQWlFLEdBQ2pFLE1BQU0sYUFBYTtFQUFDO0VBQVM7RUFBVTtFQUFXO0NBQU87QUFFekQsS0FBSyxNQUFNLFFBQVEsT0FBTyxJQUFJLENBQUMsSUFBa0I7RUFDL0MsTUFBTSxPQUFPLEVBQUUsQ0FBQyxLQUFLO0VBQ3JCLE1BQU0sT0FBTyxLQUFLLFVBQVU7RUFFNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLE1BQU0sRUFBRTtJQUN6QjtFQUNGO0VBRUEsb0VBQW9FO0VBQ3BFLFdBQVcsR0FBRyxDQUFDLE1BQU07RUFFckIsS0FBSyxNQUFNLE9BQU8sS0FBTTtJQUN0QixNQUFNLFVBQVUsTUFBTSxHQUFHLENBQUM7SUFDMUIsSUFBSSxTQUFTO01BQ1gsTUFBTSxPQUFPLFdBQVcsT0FBTyxDQUFDLEFBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBYSxNQUFNO01BQy9ELE1BQU0sS0FBSyxXQUFXLE9BQU8sQ0FBQyxLQUFLLE1BQU07TUFFekMsSUFDRSxZQUFZLDhCQUNaLFlBQVkscUJBQ1osQ0FBQyxPQUFPLE1BQ04sb0VBQW9FO01BQ25FLFNBQVMsTUFBTSxRQUFRLFVBQVUsQ0FBQyxlQUFnQixHQUNyRDtRQUNBO01BQ0Y7SUFDRjtJQUVBLE1BQU0sR0FBRyxDQUFDLEtBQUs7RUFDakI7QUFDRjtBQUVBLFNBQVMsRUFBRSxFQUFFLFVBQVUsR0FBRyJ9 +// denoCacheMetadata=11163744675880720223,12008397618873352438
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/8830625e22147a5105ac9c36460a9029c630ce356fc1665a5213ead4f55c4c80.js b/vendor/gen/https/jsr.io/8830625e22147a5105ac9c36460a9029c630ce356fc1665a5213ead4f55c4c80.js new file mode 100644 index 0000000..aec79e9 --- /dev/null +++ b/vendor/gen/https/jsr.io/8830625e22147a5105ac9c36460a9029c630ce356fc1665a5213ead4f55c4c80.js @@ -0,0 +1,33 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// Copyright the Browserify authors. MIT License. +import { basename } from "jsr:@std/path@^1.0.9/basename"; +import { normalize } from "jsr:@std/path@^1.0.9/normalize"; +import { toPathString } from "./_to_path_string.ts"; +/** Create {@linkcode WalkEntry} for the `path` synchronously. */ export function createWalkEntrySync(path) { + path = toPathString(path); + path = normalize(path); + const name = basename(path); + const info = Deno.statSync(path); + return { + path, + name, + isFile: info.isFile, + isDirectory: info.isDirectory, + isSymlink: info.isSymlink + }; +} +/** Create {@linkcode WalkEntry} for the `path` asynchronously. */ export async function createWalkEntry(path) { + path = toPathString(path); + path = normalize(path); + const name = basename(path); + const info = await Deno.stat(path); + return { + path, + name, + isFile: info.isFile, + isDirectory: info.isDirectory, + isSymlink: info.isSymlink + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnMvMS4wLjE3L19jcmVhdGVfd2Fsa19lbnRyeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IHRoZSBCcm93c2VyaWZ5IGF1dGhvcnMuIE1JVCBMaWNlbnNlLlxuXG5pbXBvcnQgeyBiYXNlbmFtZSB9IGZyb20gXCJqc3I6QHN0ZC9wYXRoQF4xLjAuOS9iYXNlbmFtZVwiO1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcImpzcjpAc3RkL3BhdGhAXjEuMC45L25vcm1hbGl6ZVwiO1xuaW1wb3J0IHsgdG9QYXRoU3RyaW5nIH0gZnJvbSBcIi4vX3RvX3BhdGhfc3RyaW5nLnRzXCI7XG5cbi8qKlxuICogV2FsayBlbnRyeSBmb3Ige0BsaW5rY29kZSB3YWxrfSwge0BsaW5rY29kZSB3YWxrU3luY30sXG4gKiB7QGxpbmtjb2RlIGV4cGFuZEdsb2J9IGFuZCB7QGxpbmtjb2RlIGV4cGFuZEdsb2JTeW5jfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXYWxrRW50cnkgZXh0ZW5kcyBEZW5vLkRpckVudHJ5IHtcbiAgLyoqIEZ1bGwgcGF0aCBvZiB0aGUgZW50cnkuICovXG4gIHBhdGg6IHN0cmluZztcbn1cblxuLyoqIENyZWF0ZSB7QGxpbmtjb2RlIFdhbGtFbnRyeX0gZm9yIHRoZSBgcGF0aGAgc3luY2hyb25vdXNseS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXYWxrRW50cnlTeW5jKHBhdGg6IHN0cmluZyB8IFVSTCk6IFdhbGtFbnRyeSB7XG4gIHBhdGggPSB0b1BhdGhTdHJpbmcocGF0aCk7XG4gIHBhdGggPSBub3JtYWxpemUocGF0aCk7XG4gIGNvbnN0IG5hbWUgPSBiYXNlbmFtZShwYXRoKTtcbiAgY29uc3QgaW5mbyA9IERlbm8uc3RhdFN5bmMocGF0aCk7XG4gIHJldHVybiB7XG4gICAgcGF0aCxcbiAgICBuYW1lLFxuICAgIGlzRmlsZTogaW5mby5pc0ZpbGUsXG4gICAgaXNEaXJlY3Rvcnk6IGluZm8uaXNEaXJlY3RvcnksXG4gICAgaXNTeW1saW5rOiBpbmZvLmlzU3ltbGluayxcbiAgfTtcbn1cblxuLyoqIENyZWF0ZSB7QGxpbmtjb2RlIFdhbGtFbnRyeX0gZm9yIHRoZSBgcGF0aGAgYXN5bmNocm9ub3VzbHkuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlV2Fsa0VudHJ5KHBhdGg6IHN0cmluZyB8IFVSTCk6IFByb21pc2U8V2Fsa0VudHJ5PiB7XG4gIHBhdGggPSB0b1BhdGhTdHJpbmcocGF0aCk7XG4gIHBhdGggPSBub3JtYWxpemUocGF0aCk7XG4gIGNvbnN0IG5hbWUgPSBiYXNlbmFtZShwYXRoKTtcbiAgY29uc3QgaW5mbyA9IGF3YWl0IERlbm8uc3RhdChwYXRoKTtcbiAgcmV0dXJuIHtcbiAgICBwYXRoLFxuICAgIG5hbWUsXG4gICAgaXNGaWxlOiBpbmZvLmlzRmlsZSxcbiAgICBpc0RpcmVjdG9yeTogaW5mby5pc0RpcmVjdG9yeSxcbiAgICBpc1N5bWxpbms6IGluZm8uaXNTeW1saW5rLFxuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxpREFBaUQ7QUFFakQsU0FBUyxRQUFRLFFBQVEsZ0NBQWdDO0FBQ3pELFNBQVMsU0FBUyxRQUFRLGlDQUFpQztBQUMzRCxTQUFTLFlBQVksUUFBUSx1QkFBdUI7QUFXcEQsK0RBQStELEdBQy9ELE9BQU8sU0FBUyxvQkFBb0IsSUFBa0I7RUFDcEQsT0FBTyxhQUFhO0VBQ3BCLE9BQU8sVUFBVTtFQUNqQixNQUFNLE9BQU8sU0FBUztFQUN0QixNQUFNLE9BQU8sS0FBSyxRQUFRLENBQUM7RUFDM0IsT0FBTztJQUNMO0lBQ0E7SUFDQSxRQUFRLEtBQUssTUFBTTtJQUNuQixhQUFhLEtBQUssV0FBVztJQUM3QixXQUFXLEtBQUssU0FBUztFQUMzQjtBQUNGO0FBRUEsZ0VBQWdFLEdBQ2hFLE9BQU8sZUFBZSxnQkFBZ0IsSUFBa0I7RUFDdEQsT0FBTyxhQUFhO0VBQ3BCLE9BQU8sVUFBVTtFQUNqQixNQUFNLE9BQU8sU0FBUztFQUN0QixNQUFNLE9BQU8sTUFBTSxLQUFLLElBQUksQ0FBQztFQUM3QixPQUFPO0lBQ0w7SUFDQTtJQUNBLFFBQVEsS0FBSyxNQUFNO0lBQ25CLGFBQWEsS0FBSyxXQUFXO0lBQzdCLFdBQVcsS0FBSyxTQUFTO0VBQzNCO0FBQ0YifQ== +// denoCacheMetadata=11179096423019822999,927007796123859514
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/899db1f33a2c0cff5cde63f30ca5bced082d934efcbcaba71fc4e480ddded700.js b/vendor/gen/https/jsr.io/899db1f33a2c0cff5cde63f30ca5bced082d934efcbcaba71fc4e480ddded700.js new file mode 100644 index 0000000..e3280db --- /dev/null +++ b/vendor/gen/https/jsr.io/899db1f33a2c0cff5cde63f30ca5bced082d934efcbcaba71fc4e480ddded700.js @@ -0,0 +1,29 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { isAbsolute as posixIsAbsolute } from "./posix/is_absolute.ts"; +import { isAbsolute as windowsIsAbsolute } from "./windows/is_absolute.ts"; +/** + * Verifies whether provided path is absolute. + * + * @example Usage + * ```ts + * import { isAbsolute } from "@std/path/is-absolute"; + * import { assert, assertFalse } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assert(isAbsolute("C:\\home\\foo")); + * assertFalse(isAbsolute("home\\foo")); + * } else { + * assert(isAbsolute("/home/foo")); + * assertFalse(isAbsolute("home/foo")); + * } + * ``` + * + * @param path Path to be verified as absolute. + * @returns `true` if path is absolute, `false` otherwise + */ export function isAbsolute(path) { + return isWindows ? windowsIsAbsolute(path) : posixIsAbsolute(path); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9pc19hYnNvbHV0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBpc1dpbmRvd3MgfSBmcm9tIFwiLi9fb3MudHNcIjtcbmltcG9ydCB7IGlzQWJzb2x1dGUgYXMgcG9zaXhJc0Fic29sdXRlIH0gZnJvbSBcIi4vcG9zaXgvaXNfYWJzb2x1dGUudHNcIjtcbmltcG9ydCB7IGlzQWJzb2x1dGUgYXMgd2luZG93c0lzQWJzb2x1dGUgfSBmcm9tIFwiLi93aW5kb3dzL2lzX2Fic29sdXRlLnRzXCI7XG5cbi8qKlxuICogVmVyaWZpZXMgd2hldGhlciBwcm92aWRlZCBwYXRoIGlzIGFic29sdXRlLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgaXNBYnNvbHV0ZSB9IGZyb20gXCJAc3RkL3BhdGgvaXMtYWJzb2x1dGVcIjtcbiAqIGltcG9ydCB7IGFzc2VydCwgYXNzZXJ0RmFsc2UgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBpZiAoRGVuby5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCIpIHtcbiAqICAgYXNzZXJ0KGlzQWJzb2x1dGUoXCJDOlxcXFxob21lXFxcXGZvb1wiKSk7XG4gKiAgIGFzc2VydEZhbHNlKGlzQWJzb2x1dGUoXCJob21lXFxcXGZvb1wiKSk7XG4gKiB9IGVsc2Uge1xuICogICBhc3NlcnQoaXNBYnNvbHV0ZShcIi9ob21lL2Zvb1wiKSk7XG4gKiAgIGFzc2VydEZhbHNlKGlzQWJzb2x1dGUoXCJob21lL2Zvb1wiKSk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gcGF0aCBQYXRoIHRvIGJlIHZlcmlmaWVkIGFzIGFic29sdXRlLlxuICogQHJldHVybnMgYHRydWVgIGlmIHBhdGggaXMgYWJzb2x1dGUsIGBmYWxzZWAgb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fic29sdXRlKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNXaW5kb3dzID8gd2luZG93c0lzQWJzb2x1dGUocGF0aCkgOiBwb3NpeElzQWJzb2x1dGUocGF0aCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQyxTQUFTLFNBQVMsUUFBUSxXQUFXO0FBQ3JDLFNBQVMsY0FBYyxlQUFlLFFBQVEseUJBQXlCO0FBQ3ZFLFNBQVMsY0FBYyxpQkFBaUIsUUFBUSwyQkFBMkI7QUFFM0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FtQkMsR0FDRCxPQUFPLFNBQVMsV0FBVyxJQUFZO0VBQ3JDLE9BQU8sWUFBWSxrQkFBa0IsUUFBUSxnQkFBZ0I7QUFDL0QifQ== +// denoCacheMetadata=16320229312657674033,16130092239885903435
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/8a11ac2a3ee9720926cf6acb595e4fa0490672b4622b8715d97db262a66d643a.js b/vendor/gen/https/jsr.io/8a11ac2a3ee9720926cf6acb595e4fa0490672b4622b8715d97db262a66d643a.js new file mode 100644 index 0000000..0a949bb --- /dev/null +++ b/vendor/gen/https/jsr.io/8a11ac2a3ee9720926cf6acb595e4fa0490672b4622b8715d97db262a66d643a.js @@ -0,0 +1,40 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { join } from "./join.ts"; +import { SEPARATOR } from "./constants.ts"; +import { normalizeGlob } from "./normalize_glob.ts"; +/** + * Like join(), but doesn't collapse "**\/.." when `globstar` is true. + * + * @example Usage + * ```ts + * import { joinGlobs } from "@std/path/posix/join-globs"; + * import { assertEquals } from "@std/assert"; + * + * const path = joinGlobs(["foo", "bar", "**"], { globstar: true }); + * assertEquals(path, "foo/bar/**"); + * ``` + * + * @param globs The globs to join. + * @param options The options to use. + * @returns The joined path. + */ export function joinGlobs(globs, options = {}) { + const { globstar = false } = options; + if (!globstar || globs.length === 0) { + return join(...globs); + } + let joined; + for (const glob of globs){ + const path = glob; + if (path.length > 0) { + if (!joined) joined = path; + else joined += `${SEPARATOR}${path}`; + } + } + if (!joined) return "."; + return normalizeGlob(joined, { + globstar + }); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9wb3NpeC9qb2luX2dsb2JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB0eXBlIHsgR2xvYk9wdGlvbnMgfSBmcm9tIFwiLi4vX2NvbW1vbi9nbG9iX3RvX3JlZ19leHAudHNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwiLi9qb2luLnRzXCI7XG5pbXBvcnQgeyBTRVBBUkFUT1IgfSBmcm9tIFwiLi9jb25zdGFudHMudHNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZUdsb2IgfSBmcm9tIFwiLi9ub3JtYWxpemVfZ2xvYi50c1wiO1xuXG5leHBvcnQgdHlwZSB7IEdsb2JPcHRpb25zIH07XG5cbi8qKlxuICogTGlrZSBqb2luKCksIGJ1dCBkb2Vzbid0IGNvbGxhcHNlIFwiKipcXC8uLlwiIHdoZW4gYGdsb2JzdGFyYCBpcyB0cnVlLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgam9pbkdsb2JzIH0gZnJvbSBcIkBzdGQvcGF0aC9wb3NpeC9qb2luLWdsb2JzXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBwYXRoID0gam9pbkdsb2JzKFtcImZvb1wiLCBcImJhclwiLCBcIioqXCJdLCB7IGdsb2JzdGFyOiB0cnVlIH0pO1xuICogYXNzZXJ0RXF1YWxzKHBhdGgsIFwiZm9vL2Jhci8qKlwiKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBnbG9icyBUaGUgZ2xvYnMgdG8gam9pbi5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIHRvIHVzZS5cbiAqIEByZXR1cm5zIFRoZSBqb2luZWQgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpvaW5HbG9icyhcbiAgZ2xvYnM6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBQaWNrPEdsb2JPcHRpb25zLCBcImdsb2JzdGFyXCI+ID0ge30sXG4pOiBzdHJpbmcge1xuICBjb25zdCB7IGdsb2JzdGFyID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gIGlmICghZ2xvYnN0YXIgfHwgZ2xvYnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGpvaW4oLi4uZ2xvYnMpO1xuICB9XG4gIGxldCBqb2luZWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZm9yIChjb25zdCBnbG9iIG9mIGdsb2JzKSB7XG4gICAgY29uc3QgcGF0aCA9IGdsb2I7XG4gICAgaWYgKHBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFqb2luZWQpIGpvaW5lZCA9IHBhdGg7XG4gICAgICBlbHNlIGpvaW5lZCArPSBgJHtTRVBBUkFUT1J9JHtwYXRofWA7XG4gICAgfVxuICB9XG4gIGlmICgham9pbmVkKSByZXR1cm4gXCIuXCI7XG4gIHJldHVybiBub3JtYWxpemVHbG9iKGpvaW5lZCwgeyBnbG9ic3RhciB9KTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBR3JDLFNBQVMsSUFBSSxRQUFRLFlBQVk7QUFDakMsU0FBUyxTQUFTLFFBQVEsaUJBQWlCO0FBQzNDLFNBQVMsYUFBYSxRQUFRLHNCQUFzQjtBQUlwRDs7Ozs7Ozs7Ozs7Ozs7O0NBZUMsR0FDRCxPQUFPLFNBQVMsVUFDZCxLQUFlLEVBQ2YsVUFBeUMsQ0FBQyxDQUFDO0VBRTNDLE1BQU0sRUFBRSxXQUFXLEtBQUssRUFBRSxHQUFHO0VBQzdCLElBQUksQ0FBQyxZQUFZLE1BQU0sTUFBTSxLQUFLLEdBQUc7SUFDbkMsT0FBTyxRQUFRO0VBQ2pCO0VBQ0EsSUFBSTtFQUNKLEtBQUssTUFBTSxRQUFRLE1BQU87SUFDeEIsTUFBTSxPQUFPO0lBQ2IsSUFBSSxLQUFLLE1BQU0sR0FBRyxHQUFHO01BQ25CLElBQUksQ0FBQyxRQUFRLFNBQVM7V0FDakIsVUFBVSxHQUFHLFlBQVksTUFBTTtJQUN0QztFQUNGO0VBQ0EsSUFBSSxDQUFDLFFBQVEsT0FBTztFQUNwQixPQUFPLGNBQWMsUUFBUTtJQUFFO0VBQVM7QUFDMUMifQ== +// denoCacheMetadata=14243324277028634948,12508663592402591262
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/8aff16c286c919482b617aa45fb52eb33bd519c292c30a75805c4b2eb34b28a1.js b/vendor/gen/https/jsr.io/8aff16c286c919482b617aa45fb52eb33bd519c292c30a75805c4b2eb34b28a1.js new file mode 100644 index 0000000..cdab350 --- /dev/null +++ b/vendor/gen/https/jsr.io/8aff16c286c919482b617aa45fb52eb33bd519c292c30a75805c4b2eb34b28a1.js @@ -0,0 +1,139 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { CHAR_COLON } from "../_common/constants.ts"; +import { normalizeString } from "../_common/normalize_string.ts"; +import { assertPath } from "../_common/assert_path.ts"; +import { isPathSeparator, isWindowsDeviceRoot } from "./_util.ts"; +/** + * Resolves path segments into a `path`. + * + * @example Usage + * ```ts + * import { resolve } from "@std/path/windows/resolve"; + * import { assertEquals } from "@std/assert"; + * + * const resolved = resolve("C:\\foo\\bar", "..\\baz"); + * assertEquals(resolved, "C:\\foo\\baz"); + * ``` + * + * @param pathSegments The path segments to process to path + * @returns The resolved path + */ export function resolve(...pathSegments) { + let resolvedDevice = ""; + let resolvedTail = ""; + let resolvedAbsolute = false; + for(let i = pathSegments.length - 1; i >= -1; i--){ + let path; + // deno-lint-ignore no-explicit-any + const { Deno } = globalThis; + if (i >= 0) { + path = pathSegments[i]; + } else if (!resolvedDevice) { + if (typeof Deno?.cwd !== "function") { + throw new TypeError("Resolved a drive-letter-less path without a current working directory (CWD)"); + } + path = Deno.cwd(); + } else { + if (typeof Deno?.env?.get !== "function" || typeof Deno?.cwd !== "function") { + throw new TypeError("Resolved a relative path without a current working directory (CWD)"); + } + path = Deno.cwd(); + // Verify that a cwd was found and that it actually points + // to our drive. If not, default to the drive's root. + if (path === undefined || path.slice(0, 3).toLowerCase() !== `${resolvedDevice.toLowerCase()}\\`) { + path = `${resolvedDevice}\\`; + } + } + assertPath(path); + const len = path.length; + // Skip empty entries + if (len === 0) continue; + let rootEnd = 0; + let device = ""; + let isAbsolute = false; + const code = path.charCodeAt(0); + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + // If we started with a separator, we know we at least have an + // absolute path of some kind (UNC or otherwise) + isAbsolute = true; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for(; j < len; ++j){ + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + device = `\\\\${firstPart}\\${path.slice(last)}`; + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator + rootEnd = 1; + isAbsolute = true; + } + if (device.length > 0 && resolvedDevice.length > 0 && device.toLowerCase() !== resolvedDevice.toLowerCase()) { + continue; + } + if (resolvedDevice.length === 0 && device.length > 0) { + resolvedDevice = device; + } + if (!resolvedAbsolute) { + resolvedTail = `${path.slice(rootEnd)}\\${resolvedTail}`; + resolvedAbsolute = isAbsolute; + } + if (resolvedAbsolute && resolvedDevice.length > 0) break; + } + // At this point the path should be resolved to a full absolute path, + // but handle relative paths to be safe (might happen when Deno.cwd() + // fails) + // Normalize the tail path + resolvedTail = normalizeString(resolvedTail, !resolvedAbsolute, "\\", isPathSeparator); + return resolvedDevice + (resolvedAbsolute ? "\\" : "") + resolvedTail || "."; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC93aW5kb3dzL3Jlc29sdmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgQ0hBUl9DT0xPTiB9IGZyb20gXCIuLi9fY29tbW9uL2NvbnN0YW50cy50c1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplU3RyaW5nIH0gZnJvbSBcIi4uL19jb21tb24vbm9ybWFsaXplX3N0cmluZy50c1wiO1xuaW1wb3J0IHsgYXNzZXJ0UGF0aCB9IGZyb20gXCIuLi9fY29tbW9uL2Fzc2VydF9wYXRoLnRzXCI7XG5pbXBvcnQgeyBpc1BhdGhTZXBhcmF0b3IsIGlzV2luZG93c0RldmljZVJvb3QgfSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuXG4vKipcbiAqIFJlc29sdmVzIHBhdGggc2VnbWVudHMgaW50byBhIGBwYXRoYC5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHJlc29sdmUgfSBmcm9tIFwiQHN0ZC9wYXRoL3dpbmRvd3MvcmVzb2x2ZVwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlKFwiQzpcXFxcZm9vXFxcXGJhclwiLCBcIi4uXFxcXGJhelwiKTtcbiAqIGFzc2VydEVxdWFscyhyZXNvbHZlZCwgXCJDOlxcXFxmb29cXFxcYmF6XCIpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHBhdGhTZWdtZW50cyBUaGUgcGF0aCBzZWdtZW50cyB0byBwcm9jZXNzIHRvIHBhdGhcbiAqIEByZXR1cm5zIFRoZSByZXNvbHZlZCBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlKC4uLnBhdGhTZWdtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICBsZXQgcmVzb2x2ZWREZXZpY2UgPSBcIlwiO1xuICBsZXQgcmVzb2x2ZWRUYWlsID0gXCJcIjtcbiAgbGV0IHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZTtcblxuICBmb3IgKGxldCBpID0gcGF0aFNlZ21lbnRzLmxlbmd0aCAtIDE7IGkgPj0gLTE7IGktLSkge1xuICAgIGxldCBwYXRoOiBzdHJpbmc7XG4gICAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCB7IERlbm8gfSA9IGdsb2JhbFRoaXMgYXMgYW55O1xuICAgIGlmIChpID49IDApIHtcbiAgICAgIHBhdGggPSBwYXRoU2VnbWVudHNbaV0hO1xuICAgIH0gZWxzZSBpZiAoIXJlc29sdmVkRGV2aWNlKSB7XG4gICAgICBpZiAodHlwZW9mIERlbm8/LmN3ZCAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgXCJSZXNvbHZlZCBhIGRyaXZlLWxldHRlci1sZXNzIHBhdGggd2l0aG91dCBhIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgKENXRClcIixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHBhdGggPSBEZW5vLmN3ZCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBEZW5vPy5lbnY/LmdldCAhPT0gXCJmdW5jdGlvblwiIHx8IHR5cGVvZiBEZW5vPy5jd2QgIT09IFwiZnVuY3Rpb25cIlxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgXCJSZXNvbHZlZCBhIHJlbGF0aXZlIHBhdGggd2l0aG91dCBhIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgKENXRClcIixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHBhdGggPSBEZW5vLmN3ZCgpO1xuXG4gICAgICAvLyBWZXJpZnkgdGhhdCBhIGN3ZCB3YXMgZm91bmQgYW5kIHRoYXQgaXQgYWN0dWFsbHkgcG9pbnRzXG4gICAgICAvLyB0byBvdXIgZHJpdmUuIElmIG5vdCwgZGVmYXVsdCB0byB0aGUgZHJpdmUncyByb290LlxuICAgICAgaWYgKFxuICAgICAgICBwYXRoID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgcGF0aC5zbGljZSgwLCAzKS50b0xvd2VyQ2FzZSgpICE9PSBgJHtyZXNvbHZlZERldmljZS50b0xvd2VyQ2FzZSgpfVxcXFxgXG4gICAgICApIHtcbiAgICAgICAgcGF0aCA9IGAke3Jlc29sdmVkRGV2aWNlfVxcXFxgO1xuICAgICAgfVxuICAgIH1cblxuICAgIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgICBjb25zdCBsZW4gPSBwYXRoLmxlbmd0aDtcblxuICAgIC8vIFNraXAgZW1wdHkgZW50cmllc1xuICAgIGlmIChsZW4gPT09IDApIGNvbnRpbnVlO1xuXG4gICAgbGV0IHJvb3RFbmQgPSAwO1xuICAgIGxldCBkZXZpY2UgPSBcIlwiO1xuICAgIGxldCBpc0Fic29sdXRlID0gZmFsc2U7XG4gICAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdCgwKTtcblxuICAgIC8vIFRyeSB0byBtYXRjaCBhIHJvb3RcbiAgICBpZiAobGVuID4gMSkge1xuICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgICAvLyBQb3NzaWJsZSBVTkMgcm9vdFxuXG4gICAgICAgIC8vIElmIHdlIHN0YXJ0ZWQgd2l0aCBhIHNlcGFyYXRvciwgd2Uga25vdyB3ZSBhdCBsZWFzdCBoYXZlIGFuXG4gICAgICAgIC8vIGFic29sdXRlIHBhdGggb2Ygc29tZSBraW5kIChVTkMgb3Igb3RoZXJ3aXNlKVxuICAgICAgICBpc0Fic29sdXRlID0gdHJ1ZTtcblxuICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdCgxKSkpIHtcbiAgICAgICAgICAvLyBNYXRjaGVkIGRvdWJsZSBwYXRoIHNlcGFyYXRvciBhdCBiZWdpbm5pbmdcbiAgICAgICAgICBsZXQgaiA9IDI7XG4gICAgICAgICAgbGV0IGxhc3QgPSBqO1xuICAgICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBub24tcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGogPCBsZW4gJiYgaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RQYXJ0ID0gcGF0aC5zbGljZShsYXN0LCBqKTtcbiAgICAgICAgICAgIC8vIE1hdGNoZWQhXG4gICAgICAgICAgICBsYXN0ID0gajtcbiAgICAgICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBwYXRoIHNlcGFyYXRvcnNcbiAgICAgICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICAgICAgaWYgKCFpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGopKSkgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaiA8IGxlbiAmJiBqICE9PSBsYXN0KSB7XG4gICAgICAgICAgICAgIC8vIE1hdGNoZWQhXG4gICAgICAgICAgICAgIGxhc3QgPSBqO1xuICAgICAgICAgICAgICAvLyBNYXRjaCAxIG9yIG1vcmUgbm9uLXBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgICAgICBmb3IgKDsgaiA8IGxlbjsgKytqKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoaiA9PT0gbGVuKSB7XG4gICAgICAgICAgICAgICAgLy8gV2UgbWF0Y2hlZCBhIFVOQyByb290IG9ubHlcbiAgICAgICAgICAgICAgICBkZXZpY2UgPSBgXFxcXFxcXFwke2ZpcnN0UGFydH1cXFxcJHtwYXRoLnNsaWNlKGxhc3QpfWA7XG4gICAgICAgICAgICAgICAgcm9vdEVuZCA9IGo7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgYSBVTkMgcm9vdCB3aXRoIGxlZnRvdmVyc1xuXG4gICAgICAgICAgICAgICAgZGV2aWNlID0gYFxcXFxcXFxcJHtmaXJzdFBhcnR9XFxcXCR7cGF0aC5zbGljZShsYXN0LCBqKX1gO1xuICAgICAgICAgICAgICAgIHJvb3RFbmQgPSBqO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJvb3RFbmQgPSAxO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzV2luZG93c0RldmljZVJvb3QoY29kZSkpIHtcbiAgICAgICAgLy8gUG9zc2libGUgZGV2aWNlIHJvb3RcblxuICAgICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OKSB7XG4gICAgICAgICAgZGV2aWNlID0gcGF0aC5zbGljZSgwLCAyKTtcbiAgICAgICAgICByb290RW5kID0gMjtcbiAgICAgICAgICBpZiAobGVuID4gMikge1xuICAgICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMikpKSB7XG4gICAgICAgICAgICAgIC8vIFRyZWF0IHNlcGFyYXRvciBmb2xsb3dpbmcgZHJpdmUgbmFtZSBhcyBhbiBhYnNvbHV0ZSBwYXRoXG4gICAgICAgICAgICAgIC8vIGluZGljYXRvclxuICAgICAgICAgICAgICBpc0Fic29sdXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgcm9vdEVuZCA9IDM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1BhdGhTZXBhcmF0b3IoY29kZSkpIHtcbiAgICAgIC8vIGBwYXRoYCBjb250YWlucyBqdXN0IGEgcGF0aCBzZXBhcmF0b3JcbiAgICAgIHJvb3RFbmQgPSAxO1xuICAgICAgaXNBYnNvbHV0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgZGV2aWNlLmxlbmd0aCA+IDAgJiZcbiAgICAgIHJlc29sdmVkRGV2aWNlLmxlbmd0aCA+IDAgJiZcbiAgICAgIGRldmljZS50b0xvd2VyQ2FzZSgpICE9PSByZXNvbHZlZERldmljZS50b0xvd2VyQ2FzZSgpXG4gICAgKSB7XG4gICAgICAvLyBUaGlzIHBhdGggcG9pbnRzIHRvIGFub3RoZXIgZGV2aWNlIHNvIGl0IGlzIG5vdCBhcHBsaWNhYmxlXG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAocmVzb2x2ZWREZXZpY2UubGVuZ3RoID09PSAwICYmIGRldmljZS5sZW5ndGggPiAwKSB7XG4gICAgICByZXNvbHZlZERldmljZSA9IGRldmljZTtcbiAgICB9XG4gICAgaWYgKCFyZXNvbHZlZEFic29sdXRlKSB7XG4gICAgICByZXNvbHZlZFRhaWwgPSBgJHtwYXRoLnNsaWNlKHJvb3RFbmQpfVxcXFwke3Jlc29sdmVkVGFpbH1gO1xuICAgICAgcmVzb2x2ZWRBYnNvbHV0ZSA9IGlzQWJzb2x1dGU7XG4gICAgfVxuXG4gICAgaWYgKHJlc29sdmVkQWJzb2x1dGUgJiYgcmVzb2x2ZWREZXZpY2UubGVuZ3RoID4gMCkgYnJlYWs7XG4gIH1cblxuICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwYXRoIHNob3VsZCBiZSByZXNvbHZlZCB0byBhIGZ1bGwgYWJzb2x1dGUgcGF0aCxcbiAgLy8gYnV0IGhhbmRsZSByZWxhdGl2ZSBwYXRocyB0byBiZSBzYWZlIChtaWdodCBoYXBwZW4gd2hlbiBEZW5vLmN3ZCgpXG4gIC8vIGZhaWxzKVxuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgdGFpbCBwYXRoXG4gIHJlc29sdmVkVGFpbCA9IG5vcm1hbGl6ZVN0cmluZyhcbiAgICByZXNvbHZlZFRhaWwsXG4gICAgIXJlc29sdmVkQWJzb2x1dGUsXG4gICAgXCJcXFxcXCIsXG4gICAgaXNQYXRoU2VwYXJhdG9yLFxuICApO1xuXG4gIHJldHVybiByZXNvbHZlZERldmljZSArIChyZXNvbHZlZEFic29sdXRlID8gXCJcXFxcXCIgOiBcIlwiKSArIHJlc29sdmVkVGFpbCB8fCBcIi5cIjtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBRXJDLFNBQVMsVUFBVSxRQUFRLDBCQUEwQjtBQUNyRCxTQUFTLGVBQWUsUUFBUSxpQ0FBaUM7QUFDakUsU0FBUyxVQUFVLFFBQVEsNEJBQTRCO0FBQ3ZELFNBQVMsZUFBZSxFQUFFLG1CQUFtQixRQUFRLGFBQWE7QUFFbEU7Ozs7Ozs7Ozs7Ozs7O0NBY0MsR0FDRCxPQUFPLFNBQVMsUUFBUSxHQUFHLFlBQXNCO0VBQy9DLElBQUksaUJBQWlCO0VBQ3JCLElBQUksZUFBZTtFQUNuQixJQUFJLG1CQUFtQjtFQUV2QixJQUFLLElBQUksSUFBSSxhQUFhLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLElBQUs7SUFDbEQsSUFBSTtJQUNKLG1DQUFtQztJQUNuQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUc7SUFDakIsSUFBSSxLQUFLLEdBQUc7TUFDVixPQUFPLFlBQVksQ0FBQyxFQUFFO0lBQ3hCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQjtNQUMxQixJQUFJLE9BQU8sTUFBTSxRQUFRLFlBQVk7UUFDbkMsTUFBTSxJQUFJLFVBQ1I7TUFFSjtNQUNBLE9BQU8sS0FBSyxHQUFHO0lBQ2pCLE9BQU87TUFDTCxJQUNFLE9BQU8sTUFBTSxLQUFLLFFBQVEsY0FBYyxPQUFPLE1BQU0sUUFBUSxZQUM3RDtRQUNBLE1BQU0sSUFBSSxVQUNSO01BRUo7TUFDQSxPQUFPLEtBQUssR0FBRztNQUVmLDBEQUEwRDtNQUMxRCxxREFBcUQ7TUFDckQsSUFDRSxTQUFTLGFBQ1QsS0FBSyxLQUFLLENB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 +// denoCacheMetadata=17334109481114947153,8667544689236166222
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/8b4e24245a9065e2615ec879005f14842c30d9da9bc0f7d190880e5b306b4fc6.js b/vendor/gen/https/jsr.io/8b4e24245a9065e2615ec879005f14842c30d9da9bc0f7d190880e5b306b4fc6.js new file mode 100644 index 0000000..cc5a5b3 --- /dev/null +++ b/vendor/gen/https/jsr.io/8b4e24245a9065e2615ec879005f14842c30d9da9bc0f7d190880e5b306b4fc6.js @@ -0,0 +1,13 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +/** + * The character used to separate entries in the PATH environment variable. + */ export const DELIMITER = ";"; +/** + * The character used to separate components of a file path. + */ export const SEPARATOR = "\\"; +/** + * A regular expression that matches one or more path separators. + */ export const SEPARATOR_PATTERN = /[\\/]+/; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC93aW5kb3dzL2NvbnN0YW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vKipcbiAqIFRoZSBjaGFyYWN0ZXIgdXNlZCB0byBzZXBhcmF0ZSBlbnRyaWVzIGluIHRoZSBQQVRIIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICovXG5leHBvcnQgY29uc3QgREVMSU1JVEVSID0gXCI7XCIgYXMgY29uc3Q7XG4vKipcbiAqIFRoZSBjaGFyYWN0ZXIgdXNlZCB0byBzZXBhcmF0ZSBjb21wb25lbnRzIG9mIGEgZmlsZSBwYXRoLlxuICovXG5leHBvcnQgY29uc3QgU0VQQVJBVE9SID0gXCJcXFxcXCIgYXMgY29uc3Q7XG4vKipcbiAqIEEgcmVndWxhciBleHByZXNzaW9uIHRoYXQgbWF0Y2hlcyBvbmUgb3IgbW9yZSBwYXRoIHNlcGFyYXRvcnMuXG4gKi9cbmV4cG9ydCBjb25zdCBTRVBBUkFUT1JfUEFUVEVSTiA9IC9bXFxcXC9dKy87XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQzs7Q0FFQyxHQUNELE9BQU8sTUFBTSxZQUFZLElBQWE7QUFDdEM7O0NBRUMsR0FDRCxPQUFPLE1BQU0sWUFBWSxLQUFjO0FBQ3ZDOztDQUVDLEdBQ0QsT0FBTyxNQUFNLG9CQUFvQixTQUFTIn0= +// denoCacheMetadata=17668859964459971281,7916944506755840668
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/8b7c659a7c5be6d2872c842f5ca8b5e45a8847160f1da1ede807fc18f3209c98.js b/vendor/gen/https/jsr.io/8b7c659a7c5be6d2872c842f5ca8b5e45a8847160f1da1ede807fc18f3209c98.js new file mode 100644 index 0000000..a996c61 --- /dev/null +++ b/vendor/gen/https/jsr.io/8b7c659a7c5be6d2872c842f5ca8b5e45a8847160f1da1ede807fc18f3209c98.js @@ -0,0 +1,19 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * Filters the given array, removing all elements that do not match the given predicate + * **in place. This means `array` will be modified!**. + */ export function filterInPlace(array, predicate) { + let outputIndex = 0; + for (const cur of array){ + if (!predicate(cur)) { + continue; + } + array[outputIndex] = cur; + outputIndex += 1; + } + array.splice(outputIndex); + return array; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvY29sbGVjdGlvbnMvMS4xLjEvX3V0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbi8qKlxuICogRmlsdGVycyB0aGUgZ2l2ZW4gYXJyYXksIHJlbW92aW5nIGFsbCBlbGVtZW50cyB0aGF0IGRvIG5vdCBtYXRjaCB0aGUgZ2l2ZW4gcHJlZGljYXRlXG4gKiAqKmluIHBsYWNlLiBUaGlzIG1lYW5zIGBhcnJheWAgd2lsbCBiZSBtb2RpZmllZCEqKi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckluUGxhY2U8VD4oXG4gIGFycmF5OiBBcnJheTxUPixcbiAgcHJlZGljYXRlOiAoZWw6IFQpID0+IGJvb2xlYW4sXG4pOiBBcnJheTxUPiB7XG4gIGxldCBvdXRwdXRJbmRleCA9IDA7XG5cbiAgZm9yIChjb25zdCBjdXIgb2YgYXJyYXkpIHtcbiAgICBpZiAoIXByZWRpY2F0ZShjdXIpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBhcnJheVtvdXRwdXRJbmRleF0gPSBjdXI7XG4gICAgb3V0cHV0SW5kZXggKz0gMTtcbiAgfVxuXG4gIGFycmF5LnNwbGljZShvdXRwdXRJbmRleCk7XG5cbiAgcmV0dXJuIGFycmF5O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckM7OztDQUdDLEdBQ0QsT0FBTyxTQUFTLGNBQ2QsS0FBZSxFQUNmLFNBQTZCO0VBRTdCLElBQUksY0FBYztFQUVsQixLQUFLLE1BQU0sT0FBTyxNQUFPO0lBQ3ZCLElBQUksQ0FBQyxVQUFVLE1BQU07TUFDbkI7SUFDRjtJQUVBLEtBQUssQ0FBQyxZQUFZLEdBQUc7SUFDckIsZUFBZTtFQUNqQjtFQUVBLE1BQU0sTUFBTSxDQUFDO0VBRWIsT0FBTztBQUNUIn0= +// denoCacheMetadata=16921842693870320869,15103808202423326312
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/8d1c890b758033cc6367cbb53714b2eb41dce91e959b4ced1b0f0f650d53fb64.js b/vendor/gen/https/jsr.io/8d1c890b758033cc6367cbb53714b2eb41dce91e959b4ced1b0f0f650d53fb64.js new file mode 100644 index 0000000..841342e --- /dev/null +++ b/vendor/gen/https/jsr.io/8d1c890b758033cc6367cbb53714b2eb41dce91e959b4ced1b0f0f650d53fb64.js @@ -0,0 +1,34 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { common as _common } from "./_common/common.ts"; +import { SEPARATOR } from "./constants.ts"; +/** + * Determines the common path from a set of paths for the given OS. + * + * @param paths Paths to search for common path. + * @returns The common path. + * + * @example Usage + * ```ts + * import { common } from "@std/path/common"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * const path = common([ + * "C:\\deno\\std\\path\\mod.ts", + * "C:\\deno\\std\\fs\\mod.ts" + * ]); + * assertEquals(path, "C:\\deno\\std\\"); + * } else { + * const path = common([ + * "./deno/std/path/mod.ts", + * "./deno/std/fs/mod.ts" + * ]); + * assertEquals(path, "./deno/std/"); + * } + * ``` + */ export function common(paths) { + return _common(paths, SEPARATOR); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9jb21tb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgY29tbW9uIGFzIF9jb21tb24gfSBmcm9tIFwiLi9fY29tbW9uL2NvbW1vbi50c1wiO1xuaW1wb3J0IHsgU0VQQVJBVE9SIH0gZnJvbSBcIi4vY29uc3RhbnRzLnRzXCI7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB0aGUgY29tbW9uIHBhdGggZnJvbSBhIHNldCBvZiBwYXRocyBmb3IgdGhlIGdpdmVuIE9TLlxuICpcbiAqIEBwYXJhbSBwYXRocyBQYXRocyB0byBzZWFyY2ggZm9yIGNvbW1vbiBwYXRoLlxuICogQHJldHVybnMgVGhlIGNvbW1vbiBwYXRoLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgY29tbW9uIH0gZnJvbSBcIkBzdGQvcGF0aC9jb21tb25cIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGlmIChEZW5vLmJ1aWxkLm9zID09PSBcIndpbmRvd3NcIikge1xuICogICBjb25zdCBwYXRoID0gY29tbW9uKFtcbiAqICAgICBcIkM6XFxcXGRlbm9cXFxcc3RkXFxcXHBhdGhcXFxcbW9kLnRzXCIsXG4gKiAgICAgXCJDOlxcXFxkZW5vXFxcXHN0ZFxcXFxmc1xcXFxtb2QudHNcIlxuICogICBdKTtcbiAqICAgYXNzZXJ0RXF1YWxzKHBhdGgsIFwiQzpcXFxcZGVub1xcXFxzdGRcXFxcXCIpO1xuICogfSBlbHNlIHtcbiAqICAgY29uc3QgcGF0aCA9IGNvbW1vbihbXG4gKiAgICAgXCIuL2Rlbm8vc3RkL3BhdGgvbW9kLnRzXCIsXG4gKiAgICAgXCIuL2Rlbm8vc3RkL2ZzL21vZC50c1wiXG4gKiAgIF0pO1xuICogICBhc3NlcnRFcXVhbHMocGF0aCwgXCIuL2Rlbm8vc3RkL1wiKTtcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tbW9uKHBhdGhzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIHJldHVybiBfY29tbW9uKHBhdGhzLCBTRVBBUkFUT1IpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxxQ0FBcUM7QUFFckMsU0FBUyxVQUFVLE9BQU8sUUFBUSxzQkFBc0I7QUFDeEQsU0FBUyxTQUFTLFFBQVEsaUJBQWlCO0FBRTNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBeUJDLEdBQ0QsT0FBTyxTQUFTLE9BQU8sS0FBZTtFQUNwQyxPQUFPLFFBQVEsT0FBTztBQUN4QiJ9 +// denoCacheMetadata=12660959028440574006,4984166743566449236
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/8d53724239042b86f5795d180122804571647256ffa8e5f8358e5712f4e4af88.js b/vendor/gen/https/jsr.io/8d53724239042b86f5795d180122804571647256ffa8e5f8358e5712f4e4af88.js new file mode 100644 index 0000000..5b0350f --- /dev/null +++ b/vendor/gen/https/jsr.io/8d53724239042b86f5795d180122804571647256ffa8e5f8358e5712f4e4af88.js @@ -0,0 +1,51 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +/** + * Supported format for front matter. `"unknown"` is used when auto format + * detection logic fails. + */ const BOM = "\\ufeff?"; +const YAML_HEADER = `${BOM}(?:---yaml|= yaml =|---)`; +const YAML_FOOTER = `(?:= yaml =|---)`; +const TOML_HEADER = `${BOM}(?:---toml|\\+\\+\\+|= toml =)`; +const TOML_FOOTER = `(?:---|\\+\\+\\+|= toml =)`; +const JSON_HEADER = `${BOM}(?:---json|= json =)`; +const JSON_FOOTER = `(?:---|= json =)`; +const WHITESPACES = "\\s*"; +const NEWLINE = "\\r?\\n"; +const FRONT_MATTER = "(?<frontMatter>.+?)"; +const BODY = "(?:\\r?\\n(?<body>.+))?"; +const RECOGNIZE_YAML_REGEXP = new RegExp(`^${YAML_HEADER}${WHITESPACES}${NEWLINE}`, "i"); +const RECOGNIZE_TOML_REGEXP = new RegExp(`^${TOML_HEADER}${WHITESPACES}${NEWLINE}`, "i"); +const RECOGNIZE_JSON_REGEXP = new RegExp(`^${JSON_HEADER}${WHITESPACES}${NEWLINE}`, "i"); +export const EXTRACT_YAML_REGEXP = new RegExp(`^${YAML_HEADER}${WHITESPACES}${NEWLINE}${WHITESPACES}(?:${FRONT_MATTER}${WHITESPACES}${NEWLINE})?${YAML_FOOTER}${WHITESPACES}${BODY}$`, "is"); +export const EXTRACT_TOML_REGEXP = new RegExp(`^${TOML_HEADER}${WHITESPACES}${NEWLINE}${WHITESPACES}(?:${FRONT_MATTER}${WHITESPACES}${NEWLINE})?${TOML_FOOTER}${WHITESPACES}${BODY}$`, "is"); +export const EXTRACT_JSON_REGEXP = new RegExp(`^${JSON_HEADER}${WHITESPACES}${NEWLINE}${WHITESPACES}(?:${FRONT_MATTER}${WHITESPACES}${NEWLINE})?${JSON_FOOTER}${WHITESPACES}${BODY}$`, "is"); +export const RECOGNIZE_REGEXP_MAP = new Map([ + [ + "yaml", + RECOGNIZE_YAML_REGEXP + ], + [ + "toml", + RECOGNIZE_TOML_REGEXP + ], + [ + "json", + RECOGNIZE_JSON_REGEXP + ] +]); +export const EXTRACT_REGEXP_MAP = new Map([ + [ + "yaml", + EXTRACT_YAML_REGEXP + ], + [ + "toml", + EXTRACT_TOML_REGEXP + ], + [ + "json", + EXTRACT_JSON_REGEXP + ] +]); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnJvbnQtbWF0dGVyLzEuMC45L19mb3JtYXRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG5cbi8qKlxuICogU3VwcG9ydGVkIGZvcm1hdCBmb3IgZnJvbnQgbWF0dGVyLiBgXCJ1bmtub3duXCJgIGlzIHVzZWQgd2hlbiBhdXRvIGZvcm1hdFxuICogZGV0ZWN0aW9uIGxvZ2ljIGZhaWxzLlxuICovXG5leHBvcnQgdHlwZSBGb3JtYXQgPSBcInlhbWxcIiB8IFwidG9tbFwiIHwgXCJqc29uXCI7XG5cbmNvbnN0IEJPTSA9IFwiXFxcXHVmZWZmP1wiO1xuXG5jb25zdCBZQU1MX0hFQURFUiA9IGAke0JPTX0oPzotLS15YW1sfD0geWFtbCA9fC0tLSlgO1xuY29uc3QgWUFNTF9GT09URVIgPSBgKD86PSB5YW1sID18LS0tKWA7XG5cbmNvbnN0IFRPTUxfSEVBREVSID0gYCR7Qk9NfSg/Oi0tLXRvbWx8XFxcXCtcXFxcK1xcXFwrfD0gdG9tbCA9KWA7XG5jb25zdCBUT01MX0ZPT1RFUiA9IGAoPzotLS18XFxcXCtcXFxcK1xcXFwrfD0gdG9tbCA9KWA7XG5cbmNvbnN0IEpTT05fSEVBREVSID0gYCR7Qk9NfSg/Oi0tLWpzb258PSBqc29uID0pYDtcbmNvbnN0IEpTT05fRk9PVEVSID0gYCg/Oi0tLXw9IGpzb24gPSlgO1xuXG5jb25zdCBXSElURVNQQUNFUyA9IFwiXFxcXHMqXCI7XG5jb25zdCBORVdMSU5FID0gXCJcXFxccj9cXFxcblwiO1xuXG5jb25zdCBGUk9OVF9NQVRURVIgPSBcIig/PGZyb250TWF0dGVyPi4rPylcIjtcbmNvbnN0IEJPRFkgPSBcIig/OlxcXFxyP1xcXFxuKD88Ym9keT4uKykpP1wiO1xuXG5jb25zdCBSRUNPR05JWkVfWUFNTF9SRUdFWFAgPSBuZXcgUmVnRXhwKFxuICBgXiR7WUFNTF9IRUFERVJ9JHtXSElURVNQQUNFU30ke05FV0xJTkV9YCxcbiAgXCJpXCIsXG4pO1xuY29uc3QgUkVDT0dOSVpFX1RPTUxfUkVHRVhQID0gbmV3IFJlZ0V4cChcbiAgYF4ke1RPTUxfSEVBREVSfSR7V0hJVEVTUEFDRVN9JHtORVdMSU5FfWAsXG4gIFwiaVwiLFxuKTtcbmNvbnN0IFJFQ09HTklaRV9KU09OX1JFR0VYUCA9IG5ldyBSZWdFeHAoXG4gIGBeJHtKU09OX0hFQURFUn0ke1dISVRFU1BBQ0VTfSR7TkVXTElORX1gLFxuICBcImlcIixcbik7XG5cbmV4cG9ydCBjb25zdCBFWFRSQUNUX1lBTUxfUkVHRVhQID0gbmV3IFJlZ0V4cChcbiAgYF4ke1lBTUxfSEVBREVSfSR7V0hJVEVTUEFDRVN9JHtORVdMSU5FfSR7V0hJVEVTUEFDRVN9KD86JHtGUk9OVF9NQVRURVJ9JHtXSElURVNQQUNFU30ke05FV0xJTkV9KT8ke1lBTUxfRk9PVEVSfSR7V0hJVEVTUEFDRVN9JHtCT0RZfSRgLFxuICBcImlzXCIsXG4pO1xuZXhwb3J0IGNvbnN0IEVYVFJBQ1RfVE9NTF9SRUdFWFAgPSBuZXcgUmVnRXhwKFxuICBgXiR7VE9NTF9IRUFERVJ9JHtXSElURVNQQUNFU30ke05FV0xJTkV9JHtXSElURVNQQUNFU30oPzoke0ZST05UX01BVFRFUn0ke1dISVRFU1BBQ0VTfSR7TkVXTElORX0pPyR7VE9NTF9GT09URVJ9JHtXSElURVNQQUNFU30ke0JPRFl9JGAsXG4gIFwiaXNcIixcbik7XG5leHBvcnQgY29uc3QgRVhUUkFDVF9KU09OX1JFR0VYUCA9IG5ldyBSZWdFeHAoXG4gIGBeJHtKU09OX0hFQURFUn0ke1dISVRFU1BBQ0VTfSR7TkVXTElORX0ke1dISVRFU1BBQ0VTfSg/OiR7RlJPTlRfTUFUVEVSfSR7V0hJVEVTUEFDRVN9JHtORVdMSU5FfSk/JHtKU09OX0ZPT1RFUn0ke1dISVRFU1BBQ0VTfSR7Qk9EWX0kYCxcbiAgXCJpc1wiLFxuKTtcblxuZXhwb3J0IGNvbnN0IFJFQ09HTklaRV9SRUdFWFBfTUFQID0gbmV3IE1hcChbXG4gIFtcInlhbWxcIiwgUkVDT0dOSVpFX1lBTUxfUkVHRVhQXSxcbiAgW1widG9tbFwiLCBSRUNPR05JWkVfVE9NTF9SRUdFWFBdLFxuICBbXCJqc29uXCIsIFJFQ09HTklaRV9KU09OX1JFR0VYUF0sXG5dKTtcblxuZXhwb3J0IGNvbnN0IEVYVFJBQ1RfUkVHRVhQX01BUCA9IG5ldyBNYXAoW1xuICBbXCJ5YW1sXCIsIEVYVFJBQ1RfWUFNTF9SRUdFWFBdLFxuICBbXCJ0b21sXCIsIEVYVFJBQ1RfVE9NTF9SRUdFWFBdLFxuICBbXCJqc29uXCIsIEVYVFJBQ1RfSlNPTl9SRUdFWFBdLFxuXSk7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBRXJEOzs7Q0FHQyxHQUdELE1BQU0sTUFBTTtBQUVaLE1BQU0sY0FBYyxHQUFHLElBQUksd0JBQXdCLENBQUM7QUFDcEQsTUFBTSxjQUFjLENBQUMsZ0JBQWdCLENBQUM7QUFFdEMsTUFBTSxjQUFjLEdBQUcsSUFBSSw4QkFBOEIsQ0FBQztBQUMxRCxNQUFNLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQztBQUVoRCxNQUFNLGNBQWMsR0FBRyxJQUFJLG9CQUFvQixDQUFDO0FBQ2hELE1BQU0sY0FBYyxDQUFDLGdCQUFnQixDQUFDO0FBRXRDLE1BQU0sY0FBYztBQUNwQixNQUFNLFVBQVU7QUFFaEIsTUFBTSxlQUFlO0FBQ3JCLE1BQU0sT0FBTztBQUViLE1BQU0sd0JBQXdCLElBQUksT0FDaEMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxjQUFjLFNBQVMsRUFDekM7QUFFRixNQUFNLHdCQUF3QixJQUFJLE9BQ2hDLENBQUMsQ0FBQyxFQUFFLGNBQWMsY0FBYyxTQUFTLEVBQ3pDO0FBRUYsTUFBTSx3QkFBd0IsSUFBSSxPQUNoQyxDQUFDLENBQUMsRUFBRSxjQUFjLGNBQWMsU0FBUyxFQUN6QztBQUdGLE9BQU8sTUFBTSxzQkFBc0IsSUFBSSxPQUNyQyxDQUFDLENBQUMsRUFBRSxjQUFjLGNBQWMsVUFBVSxZQUFZLEdBQUcsRUFBRSxlQUFlLGNBQWMsUUFBUSxFQUFFLEVBQUUsY0FBYyxjQUFjLEtBQUssQ0FBQyxDQUFDLEVBQ3ZJLE1BQ0E7QUFDRixPQUFPLE1BQU0sc0JBQXNCLElBQUksT0FDckMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxjQUFjLFVBQVUsWUFBWSxHQUFHLEVBQUUsZUFBZSxjQUFjLFFBQVEsRUFBRSxFQUFFLGNBQWMsY0FBYyxLQUFLLENBQUMsQ0FBQyxFQUN2SSxNQUNBO0FBQ0YsT0FBTyxNQUFNLHNCQUFzQixJQUFJLE9BQ3JDLENBQUMsQ0FBQyxFQUFFLGNBQWMsY0FBYyxVQUFVLFlBQVksR0FBRyxFQUFFLGVBQWUsY0FBYyxRQUFRLEVBQUUsRUFBRSxjQUFjLGNBQWMsS0FBSyxDQUFDLENBQUMsRUFDdkksTUFDQTtBQUVGLE9BQU8sTUFBTSx1QkFBdUIsSUFBSSxJQUFJO0VBQzFDO0lBQUM7SUFBUTtHQUFzQjtFQUMvQjtJQUFDO0lBQVE7R0FBc0I7RUFDL0I7SUFBQztJQUFRO0dBQXNCO0NBQ2hDLEVBQUU7QUFFSCxPQUFPLE1BQU0scUJBQXFCLElBQUksSUFBSTtFQUN4QztJQUFDO0lBQVE7R0FBb0I7RUFDN0I7SUFBQztJQUFRO0dBQW9CO0VBQzdCO0lBQUM7SUFBUTtHQUFvQjtDQUM5QixFQUFFIn0= +// denoCacheMetadata=10857738309248229031,11849906769793540634
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/9012576778908b158e024660562adbf3f4f16d402c08352c59ab89a1249c85b1.js b/vendor/gen/https/jsr.io/9012576778908b158e024660562adbf3f4f16d402c08352c59ab89a1249c85b1.js new file mode 100644 index 0000000..e4fe8e8 --- /dev/null +++ b/vendor/gen/https/jsr.io/9012576778908b158e024660562adbf3f4f16d402c08352c59ab89a1249c85b1.js @@ -0,0 +1,87 @@ +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2025 the Deno authors. MIT license. +import { isNegativeZero } from "../_utils.ts"; +const YAML_FLOAT_PATTERN = new RegExp(// 2.5e4, 2.5 and integers +"^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?" + // .2e4, .2 +// special case, seems not from spec +"|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?" + // .inf +"|[-+]?\\.(?:inf|Inf|INF)" + // .nan +"|\\.(?:nan|NaN|NAN))$"); +function resolveYamlFloat(data) { + if (!YAML_FLOAT_PATTERN.test(data) || // Quick hack to not allow integers end with `_` + // Probably should update regexp & check speed + data[data.length - 1] === "_") { + return false; + } + return true; +} +function constructYamlFloat(data) { + let value = data.replace(/_/g, "").toLowerCase(); + const sign = value[0] === "-" ? -1 : 1; + if (value[0] && "+-".includes(value[0])) { + value = value.slice(1); + } + if (value === ".inf") { + return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; + } + if (value === ".nan") { + return NaN; + } + return sign * parseFloat(value); +} +const SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; +function representYamlFloat(// deno-lint-ignore ban-types +object, style) { + const value = object instanceof Number ? object.valueOf() : object; + if (isNaN(value)) { + switch(style){ + case "lowercase": + return ".nan"; + case "uppercase": + return ".NAN"; + case "camelcase": + return ".NaN"; + } + } else if (Number.POSITIVE_INFINITY === value) { + switch(style){ + case "lowercase": + return ".inf"; + case "uppercase": + return ".INF"; + case "camelcase": + return ".Inf"; + } + } else if (Number.NEGATIVE_INFINITY === value) { + switch(style){ + case "lowercase": + return "-.inf"; + case "uppercase": + return "-.INF"; + case "camelcase": + return "-.Inf"; + } + } else if (isNegativeZero(value)) { + return "-0.0"; + } + const res = value.toString(10); + // JS stringifier can build scientific format without dots: 5e-100, + // while YAML requires dot: 5.e-100. Fix it with simple hack + return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace("e", ".e") : res; +} +function isFloat(object) { + if (object instanceof Number) object = object.valueOf(); + return typeof object === "number" && (object % 1 !== 0 || isNegativeZero(object)); +} +export const float = { + tag: "tag:yaml.org,2002:float", + construct: constructYamlFloat, + defaultStyle: "lowercase", + kind: "scalar", + predicate: isFloat, + represent: representYamlFloat, + resolve: resolveYamlFloat +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQveWFtbC8xLjAuNi9fdHlwZS9mbG9hdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQb3J0ZWQgZnJvbSBqcy15YW1sIHYzLjEzLjE6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWNhL2pzLXlhbWwvY29tbWl0LzY2NWFhZGRhNDIzNDlkY2FlODY5ZjEyMDQwZDliMTBlZjE4ZDEyZGFcbi8vIENvcHlyaWdodCAyMDExLTIwMTUgYnkgVml0YWx5IFB1enJpbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuXG5pbXBvcnQgdHlwZSB7IFN0eWxlVmFyaWFudCwgVHlwZSB9IGZyb20gXCIuLi9fdHlwZS50c1wiO1xuaW1wb3J0IHsgaXNOZWdhdGl2ZVplcm8gfSBmcm9tIFwiLi4vX3V0aWxzLnRzXCI7XG5cbmNvbnN0IFlBTUxfRkxPQVRfUEFUVEVSTiA9IG5ldyBSZWdFeHAoXG4gIC8vIDIuNWU0LCAyLjUgYW5kIGludGVnZXJzXG4gIFwiXig/OlstK10/KD86MHxbMS05XVswLTlfXSopKD86XFxcXC5bMC05X10qKT8oPzpbZUVdWy0rXT9bMC05XSspP1wiICtcbiAgICAvLyAuMmU0LCAuMlxuICAgIC8vIHNwZWNpYWwgY2FzZSwgc2VlbXMgbm90IGZyb20gc3BlY1xuICAgIFwifFxcXFwuWzAtOV9dKyg/OltlRV1bLStdP1swLTldKyk/XCIgK1xuICAgIC8vIC5pbmZcbiAgICBcInxbLStdP1xcXFwuKD86aW5mfEluZnxJTkYpXCIgK1xuICAgIC8vIC5uYW5cbiAgICBcInxcXFxcLig/Om5hbnxOYU58TkFOKSkkXCIsXG4pO1xuXG5mdW5jdGlvbiByZXNvbHZlWWFtbEZsb2F0KGRhdGE6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoXG4gICAgIVlBTUxfRkxPQVRfUEFUVEVSTi50ZXN0KGRhdGEpIHx8XG4gICAgLy8gUXVpY2sgaGFjayB0byBub3QgYWxsb3cgaW50ZWdlcnMgZW5kIHdpdGggYF9gXG4gICAgLy8gUHJvYmFibHkgc2hvdWxkIHVwZGF0ZSByZWdleHAgJiBjaGVjayBzcGVlZFxuICAgIGRhdGFbZGF0YS5sZW5ndGggLSAxXSA9PT0gXCJfXCJcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxGbG9hdChkYXRhOiBzdHJpbmcpOiBudW1iZXIge1xuICBsZXQgdmFsdWUgPSBkYXRhLnJlcGxhY2UoL18vZywgXCJcIikudG9Mb3dlckNhc2UoKTtcbiAgY29uc3Qgc2lnbiA9IHZhbHVlWzBdID09PSBcIi1cIiA/IC0xIDogMTtcblxuICBpZiAodmFsdWVbMF0gJiYgXCIrLVwiLmluY2x1ZGVzKHZhbHVlWzBdKSkge1xuICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoMSk7XG4gIH1cblxuICBpZiAodmFsdWUgPT09IFwiLmluZlwiKSB7XG4gICAgcmV0dXJuIHNpZ24gPT09IDEgPyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgOiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7XG4gIH1cbiAgaWYgKHZhbHVlID09PSBcIi5uYW5cIikge1xuICAgIHJldHVybiBOYU47XG4gIH1cbiAgcmV0dXJuIHNpZ24gKiBwYXJzZUZsb2F0KHZhbHVlKTtcbn1cblxuY29uc3QgU0NJRU5USUZJQ19XSVRIT1VUX0RPVCA9IC9eWy0rXT9bMC05XStlLztcblxuZnVuY3Rpb24gcmVwcmVzZW50WWFtbEZsb2F0KFxuICAvLyBkZW5vLWxpbnQtaWdub3JlIGJhbi10eXBlc1xuICBvYmplY3Q6IG51bWJlciB8IE51bWJlcixcbiAgc3R5bGU/OiBTdHlsZVZhcmlhbnQsXG4pOiBzdHJpbmcge1xuICBjb25zdCB2YWx1ZSA9IG9iamVjdCBpbnN0YW5jZW9mIE51bWJlciA/IG9iamVjdC52YWx1ZU9mKCkgOiBvYmplY3Q7XG4gIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgICBjYXNlIFwibG93ZXJjYXNlXCI6XG4gICAgICAgIHJldHVybiBcIi5uYW5cIjtcbiAgICAgIGNhc2UgXCJ1cHBlcmNhc2VcIjpcbiAgICAgICAgcmV0dXJuIFwiLk5BTlwiO1xuICAgICAgY2FzZSBcImNhbWVsY2FzZVwiOlxuICAgICAgICByZXR1cm4gXCIuTmFOXCI7XG4gICAgfVxuICB9IGVsc2UgaWYgKE51bWJlci5QT1NJVElWRV9JTkZJTklUWSA9PT0gdmFsdWUpIHtcbiAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgICBjYXNlIFwibG93ZXJjYXNlXCI6XG4gICAgICAgIHJldHVybiBcIi5pbmZcIjtcbiAgICAgIGNhc2UgXCJ1cHBlcmNhc2VcIjpcbiAgICAgICAgcmV0dXJuIFwiLklORlwiO1xuICAgICAgY2FzZSBcImNhbWVsY2FzZVwiOlxuICAgICAgICByZXR1cm4gXCIuSW5mXCI7XG4gICAgfVxuICB9IGVsc2UgaWYgKE51bWJlci5ORUdBVElWRV9JTkZJTklUWSA9PT0gdmFsdWUpIHtcbiAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgICBjYXNlIFwibG93ZXJjYXNlXCI6XG4gICAgICAgIHJldHVybiBcIi0uaW5mXCI7XG4gICAgICBjYXNlIFwidXBwZXJjYXNlXCI6XG4gICAgICAgIHJldHVybiBcIi0uSU5GXCI7XG4gICAgICBjYXNlIFwiY2FtZWxjYXNlXCI6XG4gICAgICAgIHJldHVybiBcIi0uSW5mXCI7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzTmVnYXRpdmVaZXJvKHZhbHVlKSkge1xuICAgIHJldHVybiBcIi0wLjBcIjtcbiAgfVxuXG4gIGNvbnN0IHJlcyA9IHZhbHVlLnRvU3RyaW5nKDEwKTtcblxuICAvLyBKUyBzdHJpbmdpZmllciBjYW4gYnVpbGQgc2NpZW50aWZpYyBmb3JtYXQgd2l0aG91dCBkb3RzOiA1ZS0xMDAsXG4gIC8vIHdoaWxlIFlBTUwgcmVxdWlyZXMgZG90OiA1LmUtMTAwLiBGaXggaXQgd2l0aCBzaW1wbGUgaGFja1xuXG4gIHJldHVybiBTQ0lFTlRJRklDX1dJVEhPVVRfRE9ULnRlc3QocmVzKSA/IHJlcy5yZXBsYWNlKFwiZVwiLCBcIi5lXCIpIDogcmVzO1xufVxuXG5mdW5jdGlvbiBpc0Zsb2F0KG9iamVjdDogdW5rbm93bik6IG9iamVjdCBpcyBudW1iZXIge1xuICBpZiAob2JqZWN0IGluc3RhbmNlb2YgTnVtYmVyKSBvYmplY3QgPSBvYmplY3QudmFsdWVPZigpO1xuICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gXCJudW1iZXJcIiAmJlxuICAgIChvYmplY3QgJSAxICE9PSAwIHx8IGlzTmVnYXRpdmVaZXJvKG9iamVjdCkpO1xufVxuXG5leHBvcnQgY29uc3QgZmxvYXQ6IFR5cGU8XCJzY2FsYXJcIiwgbnVtYmVyPiA9IHtcbiAgdGFnOiBcInRhZzp5YW1sLm9yZywyMDAyOmZsb2F0XCIsXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbEZsb2F0LFxuICBkZWZhdWx0U3R5bGU6IFwibG93ZXJjYXNlXCIsXG4gIGtpbmQ6IFwic2NhbGFyXCIsXG4gIHByZWRpY2F0ZTogaXNGbG9hdCxcbiAgcmVwcmVzZW50OiByZXByZXNlbnRZYW1sRmxvYXQsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sRmxvYXQsXG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixvRkFBb0Y7QUFDcEYsMEVBQTBFO0FBQzFFLHFEQUFxRDtBQUdyRCxTQUFTLGNBQWMsUUFBUSxlQUFlO0FBRTlDLE1BQU0scUJBQXFCLElBQUksT0FDN0IsMEJBQTBCO0FBQzFCLG1FQUNFLFdBQVc7QUFDWCxvQ0FBb0M7QUFDcEMsb0NBQ0EsT0FBTztBQUNQLDZCQUNBLE9BQU87QUFDUDtBQUdKLFNBQVMsaUJBQWlCLElBQVk7RUFDcEMsSUFDRSxDQUFDLG1CQUFtQixJQUFJLENBQUMsU0FDekIsZ0RBQWdEO0VBQ2hELDhDQUE4QztFQUM5QyxJQUFJLENBQUMsS0FBSyxNQUFNLEdBQUcsRUFBRSxLQUFLLEtBQzFCO0lBQ0EsT0FBTztFQUNUO0VBRUEsT0FBTztBQUNUO0FBRUEsU0FBUyxtQkFBbUIsSUFBWTtFQUN0QyxJQUFJLFFBQVEsS0FBSyxPQUFPLENBQUMsTUFBTSxJQUFJLFdBQVc7RUFDOUMsTUFBTSxPQUFPLEtBQUssQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLElBQUk7RUFFckMsSUFBSSxLQUFLLENBQUMsRUFBRSxJQUFJLEtBQUssUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUc7SUFDdkMsUUFBUSxNQUFNLEtBQUssQ0FBQztFQUN0QjtFQUVBLElBQUksVUFBVSxRQUFRO0lBQ3BCLE9BQU8sU0FBUyxJQUFJLE9BQU8saUJBQWlCLEdBQUcsT0FBTyxpQkFBaUI7RUFDekU7RUFDQSxJQUFJLFVBQVUsUUFBUTtJQUNwQixPQUFPO0VBQ1Q7RUFDQSxPQUFPLE9BQU8sV0FBVztBQUMzQjtBQUVBLE1BQU0seUJBQXlCO0FBRS9CLFNBQVMsbUJBQ1AsNkJBQTZCO0FBQzdCLE1BQXVCLEVBQ3ZCLEtBQW9CO0VBRXBCLE1BQU0sUUFBUSxrQkFBa0IsU0FBUyxPQUFPLE9BQU8sS0FBSztFQUM1RCxJQUFJLE1BQU0sUUFBUTtJQUNoQixPQUFRO01BQ04sS0FBSztRQUNILE9BQU87TUFDVCxLQUFLO1FBQ0gsT0FBTztNQUNULEtBQUs7UUFDSCxPQUFPO0lBQ1g7RUFDRixPQUFPLElBQUksT0FBTyxpQkFBaUIsS0FBSyxPQUFPO0lBQzdDLE9BQVE7TUFDTixLQUFLO1FBQ0gsT0FBTztNQUNULEtBQUs7UUFDSCxPQUFPO01BQ1QsS0FBSztRQUNILE9BQU87SUFDWDtFQUNGLE9BQU8sSUFBSSxPQUFPLGlCQUFpQixLQUFLLE9BQU87SUFDN0MsT0FBUTtNQUNOLEtBQUs7UUFDSCxPQUFPO01BQ1QsS0FBSztRQUNILE9BQU87TUFDVCxLQUFLO1FBQ0gsT0FBTztJQUNYO0VBQ0YsT0FBTyxJQUFJLGVBQWUsUUFBUTtJQUNoQyxPQUFPO0VBQ1Q7RUFFQSxNQUFNLE1BQU0sTUFBTSxRQUFRLENBQUM7RUFFM0IsbUVBQW1FO0VBQ25FLDREQUE0RDtFQUU1RCxPQUFPLHVCQUF1QixJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVE7QUFDckU7QUFFQSxTQUFTLFFBQVEsTUFBZTtFQUM5QixJQUFJLGtCQUFrQixRQUFRLFNBQVMsT0FBTyxPQUFPO0VBQ3JELE9BQU8sT0FBTyxXQUFXLFlBQ3ZCLENBQUMsU0FBUyxNQUFNLEtBQUssZUFBZSxPQUFPO0FBQy9DO0FBRUEsT0FBTyxNQUFNLFFBQWdDO0VBQzNDLEtBQUs7RUFDTCxXQUFXO0VBQ1gsY0FBYztFQUNkLE1BQU07RUFDTixXQUFXO0VBQ1gsV0FBVztFQUNYLFNBQVM7QUFDWCxFQUFFIn0= +// denoCacheMetadata=11362213153114377680,6633427795845667555
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/90332a2c99630129e9ac5ad20794927391d60c3a46aba172cfbc4bacbd336134.js b/vendor/gen/https/jsr.io/90332a2c99630129e9ac5ad20794927391d60c3a46aba172cfbc4bacbd336134.js new file mode 100644 index 0000000..6b5a88d --- /dev/null +++ b/vendor/gen/https/jsr.io/90332a2c99630129e9ac5ad20794927391d60c3a46aba172cfbc4bacbd336134.js @@ -0,0 +1,42 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { assertPath } from "../_common/assert_path.ts"; +import { normalize } from "./normalize.ts"; +/** + * Join all given a sequence of `paths`,then normalizes the resulting path. + * + * @example Usage + * ```ts + * import { join } from "@std/path/posix/join"; + * import { assertEquals } from "@std/assert"; + * + * const path = join("/foo", "bar", "baz/asdf", "quux", ".."); + * assertEquals(path, "/foo/bar/baz/asdf"); + * ``` + * + * @example Working with URLs + * ```ts + * import { join } from "@std/path/posix/join"; + * import { assertEquals } from "@std/assert"; + * + * const url = new URL("https://deno.land"); + * url.pathname = join("std", "path", "mod.ts"); + * assertEquals(url.href, "https://deno.land/std/path/mod.ts"); + * + * url.pathname = join("//std", "path/", "/mod.ts"); + * assertEquals(url.href, "https://deno.land/std/path/mod.ts"); + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `join` from `@std/path/posix/unstable-join`. + * + * @param paths The paths to join. + * @returns The joined path. + */ export function join(...paths) { + if (paths.length === 0) return "."; + paths.forEach((path)=>assertPath(path)); + const joined = paths.filter((path)=>path.length > 0).join("/"); + return joined === "" ? "." : normalize(joined); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9wb3NpeC9qb2luLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGFzc2VydFBhdGggfSBmcm9tIFwiLi4vX2NvbW1vbi9hc3NlcnRfcGF0aC50c1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4vbm9ybWFsaXplLnRzXCI7XG5cbi8qKlxuICogSm9pbiBhbGwgZ2l2ZW4gYSBzZXF1ZW5jZSBvZiBgcGF0aHNgLHRoZW4gbm9ybWFsaXplcyB0aGUgcmVzdWx0aW5nIHBhdGguXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBqb2luIH0gZnJvbSBcIkBzdGQvcGF0aC9wb3NpeC9qb2luXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBwYXRoID0gam9pbihcIi9mb29cIiwgXCJiYXJcIiwgXCJiYXovYXNkZlwiLCBcInF1dXhcIiwgXCIuLlwiKTtcbiAqIGFzc2VydEVxdWFscyhwYXRoLCBcIi9mb28vYmFyL2Jhei9hc2RmXCIpO1xuICogYGBgXG4gKlxuICogQGV4YW1wbGUgV29ya2luZyB3aXRoIFVSTHNcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBqb2luIH0gZnJvbSBcIkBzdGQvcGF0aC9wb3NpeC9qb2luXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCB1cmwgPSBuZXcgVVJMKFwiaHR0cHM6Ly9kZW5vLmxhbmRcIik7XG4gKiB1cmwucGF0aG5hbWUgPSBqb2luKFwic3RkXCIsIFwicGF0aFwiLCBcIm1vZC50c1wiKTtcbiAqIGFzc2VydEVxdWFscyh1cmwuaHJlZiwgXCJodHRwczovL2Rlbm8ubGFuZC9zdGQvcGF0aC9tb2QudHNcIik7XG4gKlxuICogdXJsLnBhdGhuYW1lID0gam9pbihcIi8vc3RkXCIsIFwicGF0aC9cIiwgXCIvbW9kLnRzXCIpO1xuICogYXNzZXJ0RXF1YWxzKHVybC5ocmVmLCBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9wYXRoL21vZC50c1wiKTtcbiAqIGBgYFxuICpcbiAqIE5vdGU6IElmIHlvdSBhcmUgd29ya2luZyB3aXRoIGZpbGUgVVJMcyxcbiAqIHVzZSB0aGUgbmV3IHZlcnNpb24gb2YgYGpvaW5gIGZyb20gYEBzdGQvcGF0aC9wb3NpeC91bnN0YWJsZS1qb2luYC5cbiAqXG4gKiBAcGFyYW0gcGF0aHMgVGhlIHBhdGhzIHRvIGpvaW4uXG4gKiBAcmV0dXJucyBUaGUgam9pbmVkIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBqb2luKC4uLnBhdGhzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIGlmIChwYXRocy5sZW5ndGggPT09IDApIHJldHVybiBcIi5cIjtcbiAgcGF0aHMuZm9yRWFjaCgocGF0aCkgPT4gYXNzZXJ0UGF0aChwYXRoKSk7XG4gIGNvbnN0IGpvaW5lZCA9IHBhdGhzLmZpbHRlcigocGF0aCkgPT4gcGF0aC5sZW5ndGggPiAwKS5qb2luKFwiL1wiKTtcbiAgcmV0dXJuIGpvaW5lZCA9PT0gXCJcIiA/IFwiLlwiIDogbm9ybWFsaXplKGpvaW5lZCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQyxTQUFTLFVBQVUsUUFBUSw0QkFBNEI7QUFDdkQsU0FBUyxTQUFTLFFBQVEsaUJBQWlCO0FBRTNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E4QkMsR0FDRCxPQUFPLFNBQVMsS0FBSyxHQUFHLEtBQWU7RUFDckMsSUFBSSxNQUFNLE1BQU0sS0FBSyxHQUFHLE9BQU87RUFDL0IsTUFBTSxPQUFPLENBQUMsQ0FBQyxPQUFTLFdBQVc7RUFDbkMsTUFBTSxTQUFTLE1BQU0sTUFBTSxDQUFDLENBQUMsT0FBUyxLQUFLLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQztFQUM1RCxPQUFPLFdBQVcsS0FBSyxNQUFNLFVBQVU7QUFDekMifQ== +// denoCacheMetadata=17121326762094577775,17185432673470584853
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/90ec6ffe8bc46e52f8dee6e4ac18e9eb05d2961f04043f5c0568a52a5ee68719.js b/vendor/gen/https/jsr.io/90ec6ffe8bc46e52f8dee6e4ac18e9eb05d2961f04043f5c0568a52a5ee68719.js new file mode 100644 index 0000000..18b9005 --- /dev/null +++ b/vendor/gen/https/jsr.io/90ec6ffe8bc46e52f8dee6e4ac18e9eb05d2961f04043f5c0568a52a5ee68719.js @@ -0,0 +1,33 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { normalize } from "./normalize.ts"; +import { SEPARATOR_PATTERN } from "./constants.ts"; +/** + * Like normalize(), but doesn't collapse "**\/.." when `globstar` is true. + * + * @example Usage + * ```ts + * import { normalizeGlob } from "@std/path/posix/normalize-glob"; + * import { assertEquals } from "@std/assert"; + * + * const path = normalizeGlob("foo/bar/../*", { globstar: true }); + * assertEquals(path, "foo/*"); + * ``` + * + * @param glob The glob to normalize. + * @param options The options to use. + * @returns The normalized path. + */ export function normalizeGlob(glob, options = {}) { + const { globstar = false } = options; + if (glob.match(/\0/g)) { + throw new Error(`Glob contains invalid characters: "${glob}"`); + } + if (!globstar) { + return normalize(glob); + } + const s = SEPARATOR_PATTERN.source; + const badParentPattern = new RegExp(`(?<=(${s}|^)\\*\\*${s})\\.\\.(?=${s}|$)`, "g"); + return normalize(glob.replace(badParentPattern, "\0")).replace(/\0/g, ".."); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9wb3NpeC9ub3JtYWxpemVfZ2xvYi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgdHlwZSB7IEdsb2JPcHRpb25zIH0gZnJvbSBcIi4uL19jb21tb24vZ2xvYl90b19yZWdfZXhwLnRzXCI7XG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi9ub3JtYWxpemUudHNcIjtcbmltcG9ydCB7IFNFUEFSQVRPUl9QQVRURVJOIH0gZnJvbSBcIi4vY29uc3RhbnRzLnRzXCI7XG5cbmV4cG9ydCB0eXBlIHsgR2xvYk9wdGlvbnMgfTtcblxuLyoqXG4gKiBMaWtlIG5vcm1hbGl6ZSgpLCBidXQgZG9lc24ndCBjb2xsYXBzZSBcIioqXFwvLi5cIiB3aGVuIGBnbG9ic3RhcmAgaXMgdHJ1ZS5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IG5vcm1hbGl6ZUdsb2IgfSBmcm9tIFwiQHN0ZC9wYXRoL3Bvc2l4L25vcm1hbGl6ZS1nbG9iXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBwYXRoID0gbm9ybWFsaXplR2xvYihcImZvby9iYXIvLi4vKlwiLCB7IGdsb2JzdGFyOiB0cnVlIH0pO1xuICogYXNzZXJ0RXF1YWxzKHBhdGgsIFwiZm9vLypcIik7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gZ2xvYiBUaGUgZ2xvYiB0byBub3JtYWxpemUuXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyB0byB1c2UuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplR2xvYihcbiAgZ2xvYjogc3RyaW5nLFxuICBvcHRpb25zOiBQaWNrPEdsb2JPcHRpb25zLCBcImdsb2JzdGFyXCI+ID0ge30sXG4pOiBzdHJpbmcge1xuICBjb25zdCB7IGdsb2JzdGFyID0gZmFsc2UgfTogR2xvYk9wdGlvbnMgPSBvcHRpb25zO1xuICBpZiAoZ2xvYi5tYXRjaCgvXFwwL2cpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBHbG9iIGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVyczogXCIke2dsb2J9XCJgKTtcbiAgfVxuICBpZiAoIWdsb2JzdGFyKSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZShnbG9iKTtcbiAgfVxuICBjb25zdCBzID0gU0VQQVJBVE9SX1BBVFRFUk4uc291cmNlO1xuICBjb25zdCBiYWRQYXJlbnRQYXR0ZXJuID0gbmV3IFJlZ0V4cChcbiAgICBgKD88PSgke3N9fF4pXFxcXCpcXFxcKiR7c30pXFxcXC5cXFxcLig/PSR7c318JClgLFxuICAgIFwiZ1wiLFxuICApO1xuICByZXR1cm4gbm9ybWFsaXplKGdsb2IucmVwbGFjZShiYWRQYXJlbnRQYXR0ZXJuLCBcIlxcMFwiKSkucmVwbGFjZSgvXFwwL2csIFwiLi5cIik7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUdyQyxTQUFTLFNBQVMsUUFBUSxpQkFBaUI7QUFDM0MsU0FBUyxpQkFBaUIsUUFBUSxpQkFBaUI7QUFJbkQ7Ozs7Ozs7Ozs7Ozs7OztDQWVDLEdBQ0QsT0FBTyxTQUFTLGNBQ2QsSUFBWSxFQUNaLFVBQXlDLENBQUMsQ0FBQztFQUUzQyxNQUFNLEVBQUUsV0FBVyxLQUFLLEVBQUUsR0FBZ0I7RUFDMUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxRQUFRO0lBQ3JCLE1BQU0sSUFBSSxNQUFNLENBQUMsbUNBQW1DLEVBQUUsS0FBSyxDQUFDLENBQUM7RUFDL0Q7RUFDQSxJQUFJLENBQUMsVUFBVTtJQUNiLE9BQU8sVUFBVTtFQUNuQjtFQUNBLE1BQU0sSUFBSSxrQkFBa0IsTUFBTTtFQUNsQyxNQUFNLG1CQUFtQixJQUFJLE9BQzNCLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQ3pDO0VBRUYsT0FBTyxVQUFVLEtBQUssT0FBTyxDQUFDLGtCQUFrQixPQUFPLE9BQU8sQ0FBQyxPQUFPO0FBQ3hFIn0= +// denoCacheMetadata=11868087128212183149,101441925027780406
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/910266dea525a8c1a49ff738196a5e27d7d1d437c43571597b5e2fc30e3033fb.js b/vendor/gen/https/jsr.io/910266dea525a8c1a49ff738196a5e27d7d1d437c43571597b5e2fc30e3033fb.js new file mode 100644 index 0000000..532a43e --- /dev/null +++ b/vendor/gen/https/jsr.io/910266dea525a8c1a49ff738196a5e27d7d1d437c43571597b5e2fc30e3033fb.js @@ -0,0 +1,33 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { joinGlobs as posixJoinGlobs } from "./posix/join_globs.ts"; +import { joinGlobs as windowsJoinGlobs } from "./windows/join_globs.ts"; +/** + * Joins a sequence of globs, then normalizes the resulting glob. + * + * Behaves like {@linkcode https://jsr.io/@std/path/doc/~/join | join()}, but + * doesn't collapse `**\/..` when `globstar` is true. + * + * @example Usage + * ```ts + * import { joinGlobs } from "@std/path/join-globs"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(joinGlobs(["foo", "bar", "..", "baz"]), "foo\\baz"); + * assertEquals(joinGlobs(["foo", "**", "bar", "..", "baz"], { globstar: true }), "foo\\**\\baz"); + * } else { + * assertEquals(joinGlobs(["foo", "bar", "..", "baz"]), "foo/baz"); + * assertEquals(joinGlobs(["foo", "**", "bar", "..", "baz"], { globstar: true }), "foo/**\/baz"); + * } + * ``` + * + * @param globs Globs to be joined and normalized. + * @param options Glob options. + * @returns The joined and normalized glob string. + */ export function joinGlobs(globs, options = {}) { + return isWindows ? windowsJoinGlobs(globs, options) : posixJoinGlobs(globs, options); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9qb2luX2dsb2JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB0eXBlIHsgR2xvYk9wdGlvbnMgfSBmcm9tIFwiLi9fY29tbW9uL2dsb2JfdG9fcmVnX2V4cC50c1wiO1xuaW1wb3J0IHsgaXNXaW5kb3dzIH0gZnJvbSBcIi4vX29zLnRzXCI7XG5pbXBvcnQgeyBqb2luR2xvYnMgYXMgcG9zaXhKb2luR2xvYnMgfSBmcm9tIFwiLi9wb3NpeC9qb2luX2dsb2JzLnRzXCI7XG5pbXBvcnQgeyBqb2luR2xvYnMgYXMgd2luZG93c0pvaW5HbG9icyB9IGZyb20gXCIuL3dpbmRvd3Mvam9pbl9nbG9icy50c1wiO1xuXG5leHBvcnQgdHlwZSB7IEdsb2JPcHRpb25zIH07XG5cbi8qKlxuICogSm9pbnMgYSBzZXF1ZW5jZSBvZiBnbG9icywgdGhlbiBub3JtYWxpemVzIHRoZSByZXN1bHRpbmcgZ2xvYi5cbiAqXG4gKiBCZWhhdmVzIGxpa2Uge0BsaW5rY29kZSBodHRwczovL2pzci5pby9Ac3RkL3BhdGgvZG9jL34vam9pbiB8IGpvaW4oKX0sIGJ1dFxuICogZG9lc24ndCBjb2xsYXBzZSBgKipcXC8uLmAgd2hlbiBgZ2xvYnN0YXJgIGlzIHRydWUuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBqb2luR2xvYnMgfSBmcm9tIFwiQHN0ZC9wYXRoL2pvaW4tZ2xvYnNcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGlmIChEZW5vLmJ1aWxkLm9zID09PSBcIndpbmRvd3NcIikge1xuICogICBhc3NlcnRFcXVhbHMoam9pbkdsb2JzKFtcImZvb1wiLCBcImJhclwiLCBcIi4uXCIsIFwiYmF6XCJdKSwgXCJmb29cXFxcYmF6XCIpO1xuICogICBhc3NlcnRFcXVhbHMoam9pbkdsb2JzKFtcImZvb1wiLCBcIioqXCIsIFwiYmFyXCIsIFwiLi5cIiwgXCJiYXpcIl0sIHsgZ2xvYnN0YXI6IHRydWUgfSksIFwiZm9vXFxcXCoqXFxcXGJhelwiKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGFzc2VydEVxdWFscyhqb2luR2xvYnMoW1wiZm9vXCIsIFwiYmFyXCIsIFwiLi5cIiwgXCJiYXpcIl0pLCBcImZvby9iYXpcIik7XG4gKiAgIGFzc2VydEVxdWFscyhqb2luR2xvYnMoW1wiZm9vXCIsIFwiKipcIiwgXCJiYXJcIiwgXCIuLlwiLCBcImJhelwiXSwgeyBnbG9ic3RhcjogdHJ1ZSB9KSwgXCJmb28vKipcXC9iYXpcIik7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gZ2xvYnMgR2xvYnMgdG8gYmUgam9pbmVkIGFuZCBub3JtYWxpemVkLlxuICogQHBhcmFtIG9wdGlvbnMgR2xvYiBvcHRpb25zLlxuICogQHJldHVybnMgVGhlIGpvaW5lZCBhbmQgbm9ybWFsaXplZCBnbG9iIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpvaW5HbG9icyhcbiAgZ2xvYnM6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBHbG9iT3B0aW9ucyA9IHt9LFxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlzV2luZG93c1xuICAgID8gd2luZG93c0pvaW5HbG9icyhnbG9icywgb3B0aW9ucylcbiAgICA6IHBvc2l4Sm9pbkdsb2JzKGdsb2JzLCBvcHRpb25zKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBR3JDLFNBQVMsU0FBUyxRQUFRLFdBQVc7QUFDckMsU0FBUyxhQUFhLGNBQWMsUUFBUSx3QkFBd0I7QUFDcEUsU0FBUyxhQUFhLGdCQUFnQixRQUFRLDBCQUEwQjtBQUl4RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0F1QkMsR0FDRCxPQUFPLFNBQVMsVUFDZCxLQUFlLEVBQ2YsVUFBdUIsQ0FBQyxDQUFDO0VBRXpCLE9BQU8sWUFDSCxpQkFBaUIsT0FBTyxXQUN4QixlQUFlLE9BQU87QUFDNUIifQ== +// denoCacheMetadata=14270524343680273118,8886328438395208309
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/922f7cb1f4edaef51d69b5613cec55bea117e9f71d3b74f49cadebee27ca9137.js b/vendor/gen/https/jsr.io/922f7cb1f4edaef51d69b5613cec55bea117e9f71d3b74f49cadebee27ca9137.js new file mode 100644 index 0000000..15cf5c0 --- /dev/null +++ b/vendor/gen/https/jsr.io/922f7cb1f4edaef51d69b5613cec55bea117e9f71d3b74f49cadebee27ca9137.js @@ -0,0 +1,12 @@ +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2025 the Deno authors. MIT license. +export const merge = { + tag: "tag:yaml.org,2002:merge", + kind: "scalar", + resolve: (data)=>data === "<<" || data === null, + construct: (data)=>data +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQveWFtbC8xLjAuNi9fdHlwZS9tZXJnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQb3J0ZWQgZnJvbSBqcy15YW1sIHYzLjEzLjE6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWNhL2pzLXlhbWwvY29tbWl0LzY2NWFhZGRhNDIzNDlkY2FlODY5ZjEyMDQwZDliMTBlZjE4ZDEyZGFcbi8vIENvcHlyaWdodCAyMDExLTIwMTUgYnkgVml0YWx5IFB1enJpbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuXG5pbXBvcnQgdHlwZSB7IFR5cGUgfSBmcm9tIFwiLi4vX3R5cGUudHNcIjtcblxuZXhwb3J0IGNvbnN0IG1lcmdlOiBUeXBlPFwic2NhbGFyXCIsIHVua25vd24+ID0ge1xuICB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6bWVyZ2VcIixcbiAga2luZDogXCJzY2FsYXJcIixcbiAgcmVzb2x2ZTogKGRhdGE6IHVua25vd24pOiBib29sZWFuID0+IGRhdGEgPT09IFwiPDxcIiB8fCBkYXRhID09PSBudWxsLFxuICBjb25zdHJ1Y3Q6IChkYXRhOiB1bmtub3duKTogdW5rbm93biA9PiBkYXRhLFxufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0Isb0ZBQW9GO0FBQ3BGLDBFQUEwRTtBQUMxRSxxREFBcUQ7QUFJckQsT0FBTyxNQUFNLFFBQWlDO0VBQzVDLEtBQUs7RUFDTCxNQUFNO0VBQ04sU0FBUyxDQUFDLE9BQTJCLFNBQVMsUUFBUSxTQUFTO0VBQy9ELFdBQVcsQ0FBQyxPQUEyQjtBQUN6QyxFQUFFIn0= +// denoCacheMetadata=9499635318342153485,8199520343082147980
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/92434716b7698fef650a97c8f39c0d5b9a386c75f835219feb0ddf94a0156dd9.js b/vendor/gen/https/jsr.io/92434716b7698fef650a97c8f39c0d5b9a386c75f835219feb0ddf94a0156dd9.js new file mode 100644 index 0000000..4c833f7 --- /dev/null +++ b/vendor/gen/https/jsr.io/92434716b7698fef650a97c8f39c0d5b9a386c75f835219feb0ddf94a0156dd9.js @@ -0,0 +1,9 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { assertPath } from "./assert_path.ts"; +export function assertArg(path) { + assertPath(path); + if (path.length === 0) return "."; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9fY29tbW9uL2Rpcm5hbWUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgYXNzZXJ0UGF0aCB9IGZyb20gXCIuL2Fzc2VydF9wYXRoLnRzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRBcmcocGF0aDogc3RyaW5nKSB7XG4gIGFzc2VydFBhdGgocGF0aCk7XG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFwiLlwiO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxxQ0FBcUM7QUFFckMsU0FBUyxVQUFVLFFBQVEsbUJBQW1CO0FBRTlDLE9BQU8sU0FBUyxVQUFVLElBQVk7RUFDcEMsV0FBVztFQUNYLElBQUksS0FBSyxNQUFNLEtBQUssR0FBRyxPQUFPO0FBQ2hDIn0= +// denoCacheMetadata=17712730746436136858,17593399102706906974
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/9337c54a851fa7e98de02877cc8d9ce59da3ab1f79e4ae31856af9f815a2de5e.js b/vendor/gen/https/jsr.io/9337c54a851fa7e98de02877cc8d9ce59da3ab1f79e4ae31856af9f815a2de5e.js new file mode 100644 index 0000000..67aaccc --- /dev/null +++ b/vendor/gen/https/jsr.io/9337c54a851fa7e98de02877cc8d9ce59da3ab1f79e4ae31856af9f815a2de5e.js @@ -0,0 +1,10 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { assertPath } from "./assert_path.ts"; +export function assertArgs(from, to) { + assertPath(from); + assertPath(to); + if (from === to) return ""; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9fY29tbW9uL3JlbGF0aXZlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGFzc2VydFBhdGggfSBmcm9tIFwiLi9hc3NlcnRfcGF0aC50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0QXJncyhmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcpIHtcbiAgYXNzZXJ0UGF0aChmcm9tKTtcbiAgYXNzZXJ0UGF0aCh0byk7XG4gIGlmIChmcm9tID09PSB0bykgcmV0dXJuIFwiXCI7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQyxTQUFTLFVBQVUsUUFBUSxtQkFBbUI7QUFFOUMsT0FBTyxTQUFTLFdBQVcsSUFBWSxFQUFFLEVBQVU7RUFDakQsV0FBVztFQUNYLFdBQVc7RUFDWCxJQUFJLFNBQVMsSUFBSSxPQUFPO0FBQzFCIn0= +// denoCacheMetadata=4217116438509172037,3922427261957141882
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/952cb0109337dc9b2ca17eb596e622208b74117dae73e791d4ce3d8b2e9a74f4.js b/vendor/gen/https/jsr.io/952cb0109337dc9b2ca17eb596e622208b74117dae73e791d4ce3d8b2e9a74f4.js new file mode 100644 index 0000000..89c09fb --- /dev/null +++ b/vendor/gen/https/jsr.io/952cb0109337dc9b2ca17eb596e622208b74117dae73e791d4ce3d8b2e9a74f4.js @@ -0,0 +1,77 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { isIterator, isToken, needsEncoding } from "./_util.ts"; +/** + * Serializes the media type and the optional parameters as a media type + * conforming to {@link https://www.rfc-editor.org/rfc/rfc2045.html | RFC 2045} and + * {@link https://www.rfc-editor.org/rfc/rfc2616.html | RFC 2616}. + * + * The type and parameter names are written in lower-case. + * + * When any of the arguments results in a standard violation then the return + * value will be an empty string (`""`). + * + * @param type The media type to serialize. + * @param param Optional parameters to serialize. + * + * @returns The serialized media type. + * + * @example Basic usage + * ```ts + * import { formatMediaType } from "@std/media-types/format-media-type"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(formatMediaType("text/plain"), "text/plain"); + * ``` + * + * @example With parameters + * ```ts + * import { formatMediaType } from "@std/media-types/format-media-type"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(formatMediaType("text/plain", { charset: "UTF-8" }), "text/plain; charset=UTF-8"); + * ``` + */ export function formatMediaType(type, param) { + let serializedMediaType = ""; + const [major = "", sub] = type.split("/"); + if (!sub) { + if (!isToken(type)) { + return ""; + } + serializedMediaType += type.toLowerCase(); + } else { + if (!isToken(major) || !isToken(sub)) { + return ""; + } + serializedMediaType += `${major.toLowerCase()}/${sub.toLowerCase()}`; + } + if (param) { + param = isIterator(param) ? Object.fromEntries(param) : param; + const attrs = Object.keys(param); + attrs.sort(); + for (const attribute of attrs){ + if (!isToken(attribute)) { + return ""; + } + const value = param[attribute]; + serializedMediaType += `; ${attribute.toLowerCase()}`; + const needEnc = needsEncoding(value); + if (needEnc) { + serializedMediaType += "*"; + } + serializedMediaType += "="; + if (needEnc) { + serializedMediaType += `utf-8''${encodeURIComponent(value)}`; + continue; + } + if (isToken(value)) { + serializedMediaType += value; + continue; + } + serializedMediaType += `"${value.replace(/["\\]/gi, (m)=>`\\${m}`)}"`; + } + } + return serializedMediaType; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvbWVkaWEtdHlwZXMvMS4xLjAvZm9ybWF0X21lZGlhX3R5cGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgaXNJdGVyYXRvciwgaXNUb2tlbiwgbmVlZHNFbmNvZGluZyB9IGZyb20gXCIuL191dGlsLnRzXCI7XG5cbi8qKlxuICogU2VyaWFsaXplcyB0aGUgbWVkaWEgdHlwZSBhbmQgdGhlIG9wdGlvbmFsIHBhcmFtZXRlcnMgYXMgYSBtZWRpYSB0eXBlXG4gKiBjb25mb3JtaW5nIHRvIHtAbGluayBodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjMjA0NS5odG1sIHwgUkZDIDIwNDV9IGFuZFxuICoge0BsaW5rIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmMyNjE2Lmh0bWwgfCBSRkMgMjYxNn0uXG4gKlxuICogVGhlIHR5cGUgYW5kIHBhcmFtZXRlciBuYW1lcyBhcmUgd3JpdHRlbiBpbiBsb3dlci1jYXNlLlxuICpcbiAqIFdoZW4gYW55IG9mIHRoZSBhcmd1bWVudHMgcmVzdWx0cyBpbiBhIHN0YW5kYXJkIHZpb2xhdGlvbiB0aGVuIHRoZSByZXR1cm5cbiAqIHZhbHVlIHdpbGwgYmUgYW4gZW1wdHkgc3RyaW5nIChgXCJcImApLlxuICpcbiAqIEBwYXJhbSB0eXBlIFRoZSBtZWRpYSB0eXBlIHRvIHNlcmlhbGl6ZS5cbiAqIEBwYXJhbSBwYXJhbSBPcHRpb25hbCBwYXJhbWV0ZXJzIHRvIHNlcmlhbGl6ZS5cbiAqXG4gKiBAcmV0dXJucyBUaGUgc2VyaWFsaXplZCBtZWRpYSB0eXBlLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZm9ybWF0TWVkaWFUeXBlIH0gZnJvbSBcIkBzdGQvbWVkaWEtdHlwZXMvZm9ybWF0LW1lZGlhLXR5cGVcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydEVxdWFscyhmb3JtYXRNZWRpYVR5cGUoXCJ0ZXh0L3BsYWluXCIpLCBcInRleHQvcGxhaW5cIik7XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBXaXRoIHBhcmFtZXRlcnNcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBmb3JtYXRNZWRpYVR5cGUgfSBmcm9tIFwiQHN0ZC9tZWRpYS10eXBlcy9mb3JtYXQtbWVkaWEtdHlwZVwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogYXNzZXJ0RXF1YWxzKGZvcm1hdE1lZGlhVHlwZShcInRleHQvcGxhaW5cIiwgeyBjaGFyc2V0OiBcIlVURi04XCIgfSksIFwidGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOFwiKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TWVkaWFUeXBlKFxuICB0eXBlOiBzdHJpbmcsXG4gIHBhcmFtPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IEl0ZXJhYmxlPFtzdHJpbmcsIHN0cmluZ10+LFxuKTogc3RyaW5nIHtcbiAgbGV0IHNlcmlhbGl6ZWRNZWRpYVR5cGUgPSBcIlwiO1xuICBjb25zdCBbbWFqb3IgPSBcIlwiLCBzdWJdID0gdHlwZS5zcGxpdChcIi9cIik7XG4gIGlmICghc3ViKSB7XG4gICAgaWYgKCFpc1Rva2VuKHR5cGUpKSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgc2VyaWFsaXplZE1lZGlhVHlwZSArPSB0eXBlLnRvTG93ZXJDYXNlKCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKCFpc1Rva2VuKG1ham9yKSB8fCAhaXNUb2tlbihzdWIpKSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgc2VyaWFsaXplZE1lZGlhVHlwZSArPSBgJHttYWpvci50b0xvd2VyQ2FzZSgpfS8ke3N1Yi50b0xvd2VyQ2FzZSgpfWA7XG4gIH1cblxuICBpZiAocGFyYW0pIHtcbiAgICBwYXJhbSA9IGlzSXRlcmF0b3IocGFyYW0pID8gT2JqZWN0LmZyb21FbnRyaWVzKHBhcmFtKSA6IHBhcmFtO1xuICAgIGNvbnN0IGF0dHJzID0gT2JqZWN0LmtleXMocGFyYW0pO1xuICAgIGF0dHJzLnNvcnQoKTtcblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlIG9mIGF0dHJzKSB7XG4gICAgICBpZiAoIWlzVG9rZW4oYXR0cmlidXRlKSkge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW1bYXR0cmlidXRlXSE7XG4gICAgICBzZXJpYWxpemVkTWVkaWFUeXBlICs9IGA7ICR7YXR0cmlidXRlLnRvTG93ZXJDYXNlKCl9YDtcblxuICAgICAgY29uc3QgbmVlZEVuYyA9IG5lZWRzRW5jb2RpbmcodmFsdWUpO1xuICAgICAgaWYgKG5lZWRFbmMpIHtcbiAgICAgICAgc2VyaWFsaXplZE1lZGlhVHlwZSArPSBcIipcIjtcbiAgICAgIH1cbiAgICAgIHNlcmlhbGl6ZWRNZWRpYVR5cGUgKz0gXCI9XCI7XG5cbiAgICAgIGlmIChuZWVkRW5jKSB7XG4gICAgICAgIHNlcmlhbGl6ZWRNZWRpYVR5cGUgKz0gYHV0Zi04Jycke2VuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSl9YDtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc1Rva2VuKHZhbHVlKSkge1xuICAgICAgICBzZXJpYWxpemVkTWVkaWFUeXBlICs9IHZhbHVlO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHNlcmlhbGl6ZWRNZWRpYVR5cGUgKz0gYFwiJHt2YWx1ZS5yZXBsYWNlKC9bXCJcXFxcXS9naSwgKG0pID0+IGBcXFxcJHttfWApfVwiYDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHNlcmlhbGl6ZWRNZWRpYVR5cGU7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQyxTQUFTLFVBQVUsRUFBRSxPQUFPLEVBQUUsYUFBYSxRQUFRLGFBQWE7QUFFaEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQThCQyxHQUNELE9BQU8sU0FBUyxnQkFDZCxJQUFZLEVBQ1osS0FBMkQ7RUFFM0QsSUFBSSxzQkFBc0I7RUFDMUIsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksR0FBRyxLQUFLLEtBQUssQ0FBQztFQUNyQyxJQUFJLENBQUMsS0FBSztJQUNSLElBQUksQ0FBQyxRQUFRLE9BQU87TUFDbEIsT0FBTztJQUNUO0lBQ0EsdUJBQXVCLEtBQUssV0FBVztFQUN6QyxPQUFPO0lBQ0wsSUFBSSxDQUFDLFFBQVEsVUFBVSxDQUFDLFFBQVEsTUFBTTtNQUNwQyxPQUFPO0lBQ1Q7SUFDQSx1QkFBdUIsR0FBRyxNQUFNLFdBQVcsR0FBRyxDQUFDLEVBQUUsSUFBSSxXQUFXLElBQUk7RUFDdEU7RUFFQSxJQUFJLE9BQU87SUFDVCxRQUFRLFdBQVcsU0FBUyxPQUFPLFdBQVcsQ0FBQyxTQUFTO0lBQ3hELE1BQU0sUUFBUSxPQUFPLElBQUksQ0FBQztJQUMxQixNQUFNLElBQUk7SUFFVixLQUFLLE1BQU0sYUFBYSxNQUFPO01BQzdCLElBQUksQ0FBQyxRQUFRLFlBQVk7UUFDdkIsT0FBTztNQUNUO01BQ0EsTUFBTSxRQUFRLEtBQUssQ0FBQyxVQUFVO01BQzlCLHVCQUF1QixDQUFDLEVBQUUsRUFBRSxVQUFVLFdBQVcsSUFBSTtNQUVyRCxNQUFNLFVBQVUsY0FBYztNQUM5QixJQUFJLFNBQVM7UUFDWCx1QkFBdUI7TUFDekI7TUFDQSx1QkFBdUI7TUFFdkIsSUFBSSxTQUFTO1FBQ1gsdUJBQXVCLENBQUMsT0FBTyxFQUFFLG1CQUFtQixRQUFRO1FBQzVEO01BQ0Y7TUFFQSxJQUFJLFFBQVEsUUFBUTtRQUNsQix1QkFBdUI7UUFDdkI7TUFDRjtNQUNBLHVCQUF1QixDQUFDLENBQUMsRUFBRSxNQUFNLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFO0VBQ0Y7RUFDQSxPQUFPO0FBQ1QifQ== +// denoCacheMetadata=1546785954225567495,9425985109680049496
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/95a1cd8a407d14ce1ed34f21e53075771dd66b4336755fb2ab087faa31c6e42f.js b/vendor/gen/https/jsr.io/95a1cd8a407d14ce1ed34f21e53075771dd66b4336755fb2ab087faa31c6e42f.js new file mode 100644 index 0000000..0253586 --- /dev/null +++ b/vendor/gen/https/jsr.io/95a1cd8a407d14ce1ed34f21e53075771dd66b4336755fb2ab087faa31c6e42f.js @@ -0,0 +1,101 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +import { getFileInfoType } from "./_get_file_info_type.ts"; +/** + * Asynchronously ensures that the directory exists, like + * {@linkcode https://www.ibm.com/docs/en/aix/7.3?topic=m-mkdir-command#mkdir__row-d3e133766 | mkdir -p}. + * + * If the directory already exists, this function does nothing. If the directory + * does not exist, it is created. + * + * Requires `--allow-read` and `--allow-write` permissions. + * + * @see {@link https://docs.deno.com/runtime/manual/basics/permissions#file-system-access} + * for more information on Deno's permissions system. + * + * @param dir The path of the directory to ensure, as a string or URL. + * + * @returns A promise that resolves once the directory exists. + * + * @example Usage + * ```ts ignore + * import { ensureDir } from "@std/fs/ensure-dir"; + * + * await ensureDir("./bar"); + * ``` + */ export async function ensureDir(dir) { + try { + const fileInfo = await Deno.stat(dir); + throwIfNotDirectory(fileInfo); + return; + } catch (err) { + if (!(err instanceof Deno.errors.NotFound)) { + throw err; + } + } + // The dir doesn't exist. Create it. + // This can be racy. So we catch AlreadyExists and check stat again. + try { + await Deno.mkdir(dir, { + recursive: true + }); + } catch (err) { + if (!(err instanceof Deno.errors.AlreadyExists)) { + throw err; + } + const fileInfo = await Deno.stat(dir); + throwIfNotDirectory(fileInfo); + } +} +/** + * Synchronously ensures that the directory exists, like + * {@linkcode https://www.ibm.com/docs/en/aix/7.3?topic=m-mkdir-command#mkdir__row-d3e133766 | mkdir -p}. + * + * If the directory already exists, this function does nothing. If the directory + * does not exist, it is created. + * + * Requires `--allow-read` and `--allow-write` permissions. + * + * @see {@link https://docs.deno.com/runtime/manual/basics/permissions#file-system-access} + * for more information on Deno's permissions system. + * + * @param dir The path of the directory to ensure, as a string or URL. + * + * @returns A void value that returns once the directory exists. + * + * @example Usage + * ```ts ignore + * import { ensureDirSync } from "@std/fs/ensure-dir"; + * + * ensureDirSync("./bar"); + * ``` + */ export function ensureDirSync(dir) { + try { + const fileInfo = Deno.statSync(dir); + throwIfNotDirectory(fileInfo); + return; + } catch (err) { + if (!(err instanceof Deno.errors.NotFound)) { + throw err; + } + } + // The dir doesn't exist. Create it. + // This can be racy. So we catch AlreadyExists and check stat again. + try { + Deno.mkdirSync(dir, { + recursive: true + }); + } catch (err) { + if (!(err instanceof Deno.errors.AlreadyExists)) { + throw err; + } + const fileInfo = Deno.statSync(dir); + throwIfNotDirectory(fileInfo); + } +} +function throwIfNotDirectory(fileInfo) { + if (!fileInfo.isDirectory) { + throw new Error(`Failed to ensure directory exists: expected 'dir', got '${getFileInfoType(fileInfo)}'`); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnMvMS4wLjE3L2Vuc3VyZV9kaXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbmltcG9ydCB7IGdldEZpbGVJbmZvVHlwZSB9IGZyb20gXCIuL19nZXRfZmlsZV9pbmZvX3R5cGUudHNcIjtcblxuLyoqXG4gKiBBc3luY2hyb25vdXNseSBlbnN1cmVzIHRoYXQgdGhlIGRpcmVjdG9yeSBleGlzdHMsIGxpa2VcbiAqIHtAbGlua2NvZGUgaHR0cHM6Ly93d3cuaWJtLmNvbS9kb2NzL2VuL2FpeC83LjM/dG9waWM9bS1ta2Rpci1jb21tYW5kI21rZGlyX19yb3ctZDNlMTMzNzY2IHwgbWtkaXIgLXB9LlxuICpcbiAqIElmIHRoZSBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiBJZiB0aGUgZGlyZWN0b3J5XG4gKiBkb2VzIG5vdCBleGlzdCwgaXQgaXMgY3JlYXRlZC5cbiAqXG4gKiBSZXF1aXJlcyBgLS1hbGxvdy1yZWFkYCBhbmQgYC0tYWxsb3ctd3JpdGVgIHBlcm1pc3Npb25zLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZG9jcy5kZW5vLmNvbS9ydW50aW1lL21hbnVhbC9iYXNpY3MvcGVybWlzc2lvbnMjZmlsZS1zeXN0ZW0tYWNjZXNzfVxuICogZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gRGVubydzIHBlcm1pc3Npb25zIHN5c3RlbS5cbiAqXG4gKiBAcGFyYW0gZGlyIFRoZSBwYXRoIG9mIHRoZSBkaXJlY3RvcnkgdG8gZW5zdXJlLCBhcyBhIHN0cmluZyBvciBVUkwuXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgZGlyZWN0b3J5IGV4aXN0cy5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHMgaWdub3JlXG4gKiBpbXBvcnQgeyBlbnN1cmVEaXIgfSBmcm9tIFwiQHN0ZC9mcy9lbnN1cmUtZGlyXCI7XG4gKlxuICogYXdhaXQgZW5zdXJlRGlyKFwiLi9iYXJcIik7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZURpcihkaXI6IHN0cmluZyB8IFVSTCkge1xuICB0cnkge1xuICAgIGNvbnN0IGZpbGVJbmZvID0gYXdhaXQgRGVuby5zdGF0KGRpcik7XG4gICAgdGhyb3dJZk5vdERpcmVjdG9yeShmaWxlSW5mbyk7XG4gICAgcmV0dXJuO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoIShlcnIgaW5zdGFuY2VvZiBEZW5vLmVycm9ycy5Ob3RGb3VuZCkpIHtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cblxuICAvLyBUaGUgZGlyIGRvZXNuJ3QgZXhpc3QuIENyZWF0ZSBpdC5cbiAgLy8gVGhpcyBjYW4gYmUgcmFjeS4gU28gd2UgY2F0Y2ggQWxyZWFkeUV4aXN0cyBhbmQgY2hlY2sgc3RhdCBhZ2Fpbi5cbiAgdHJ5IHtcbiAgICBhd2FpdCBEZW5vLm1rZGlyKGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmICghKGVyciBpbnN0YW5jZW9mIERlbm8uZXJyb3JzLkFscmVhZHlFeGlzdHMpKSB7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgY29uc3QgZmlsZUluZm8gPSBhd2FpdCBEZW5vLnN0YXQoZGlyKTtcbiAgICB0aHJvd0lmTm90RGlyZWN0b3J5KGZpbGVJbmZvKTtcbiAgfVxufVxuXG4vKipcbiAqIFN5bmNocm9ub3VzbHkgZW5zdXJlcyB0aGF0IHRoZSBkaXJlY3RvcnkgZXhpc3RzLCBsaWtlXG4gKiB7QGxpbmtjb2RlIGh0dHBzOi8vd3d3LmlibS5jb20vZG9jcy9lbi9haXgvNy4zP3RvcGljPW0tbWtkaXItY29tbWFuZCNta2Rpcl9fcm93LWQzZTEzMzc2NiB8IG1rZGlyIC1wfS5cbiAqXG4gKiBJZiB0aGUgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4gSWYgdGhlIGRpcmVjdG9yeVxuICogZG9lcyBub3QgZXhpc3QsIGl0IGlzIGNyZWF0ZWQuXG4gKlxuICogUmVxdWlyZXMgYC0tYWxsb3ctcmVhZGAgYW5kIGAtLWFsbG93LXdyaXRlYCBwZXJtaXNzaW9ucy5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2RvY3MuZGVuby5jb20vcnVudGltZS9tYW51YWwvYmFzaWNzL3Blcm1pc3Npb25zI2ZpbGUtc3lzdGVtLWFjY2Vzc31cbiAqIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIERlbm8ncyBwZXJtaXNzaW9ucyBzeXN0ZW0uXG4gKlxuICogQHBhcmFtIGRpciBUaGUgcGF0aCBvZiB0aGUgZGlyZWN0b3J5IHRvIGVuc3VyZSwgYXMgYSBzdHJpbmcgb3IgVVJMLlxuICpcbiAqIEByZXR1cm5zIEEgdm9pZCB2YWx1ZSB0aGF0IHJldHVybnMgb25jZSB0aGUgZGlyZWN0b3J5IGV4aXN0cy5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHMgaWdub3JlXG4gKiBpbXBvcnQgeyBlbnN1cmVEaXJTeW5jIH0gZnJvbSBcIkBzdGQvZnMvZW5zdXJlLWRpclwiO1xuICpcbiAqIGVuc3VyZURpclN5bmMoXCIuL2JhclwiKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlRGlyU3luYyhkaXI6IHN0cmluZyB8IFVSTCkge1xuICB0cnkge1xuICAgIGNvbnN0IGZpbGVJbmZvID0gRGVuby5zdGF0U3luYyhkaXIpO1xuICAgIHRocm93SWZOb3REaXJlY3RvcnkoZmlsZUluZm8pO1xuICAgIHJldHVybjtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKCEoZXJyIGluc3RhbmNlb2YgRGVuby5lcnJvcnMuTm90Rm91bmQpKSB7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgLy8gVGhlIGRpciBkb2Vzbid0IGV4aXN0LiBDcmVhdGUgaXQuXG4gIC8vIFRoaXMgY2FuIGJlIHJhY3kuIFNvIHdlIGNhdGNoIEFscmVhZHlFeGlzdHMgYW5kIGNoZWNrIHN0YXQgYWdhaW4uXG4gIHRyeSB7XG4gICAgRGVuby5ta2RpclN5bmMoZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKCEoZXJyIGluc3RhbmNlb2YgRGVuby5lcnJvcnMuQWxyZWFkeUV4aXN0cykpIHtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG5cbiAgICBjb25zdCBmaWxlSW5mbyA9IERlbm8uc3RhdFN5bmMoZGlyKTtcbiAgICB0aHJvd0lmTm90RGlyZWN0b3J5KGZpbGVJbmZvKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0aHJvd0lmTm90RGlyZWN0b3J5KGZpbGVJbmZvOiBEZW5vLkZpbGVJbmZvKSB7XG4gIGlmICghZmlsZUluZm8uaXNEaXJlY3RvcnkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgRmFpbGVkIHRvIGVuc3VyZSBkaXJlY3RvcnkgZXhpc3RzOiBleHBlY3RlZCAnZGlyJywgZ290ICcke1xuICAgICAgICBnZXRGaWxlSW5mb1R5cGUoZmlsZUluZm8pXG4gICAgICB9J2AsXG4gICAgKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxTQUFTLGVBQWUsUUFBUSwyQkFBMkI7QUFFM0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FzQkMsR0FDRCxPQUFPLGVBQWUsVUFBVSxHQUFpQjtFQUMvQyxJQUFJO0lBQ0YsTUFBTSxXQUFXLE1BQU0sS0FBSyxJQUFJLENBQUM7SUFDakMsb0JBQW9CO0lBQ3BCO0VBQ0YsRUFBRSxPQUFPLEtBQUs7SUFDWixJQUFJLENBQUMsQ0FBQyxlQUFlLEtBQUssTUFBTSxDQUFDLFFBQVEsR0FBRztNQUMxQyxNQUFNO0lBQ1I7RUFDRjtFQUVBLG9DQUFvQztFQUNwQyxvRUFBb0U7RUFDcEUsSUFBSTtJQUNGLE1BQU0sS0FBSyxLQUFLLENBQUMsS0FBSztNQUFFLFdBQVc7SUFBSztFQUMxQyxFQUFFLE9BQU8sS0FBSztJQUNaLElBQUksQ0FBQyxDQUFDLGVBQWUsS0FBSyxNQUFNLENBQUMsYUFBYSxHQUFHO01BQy9DLE1BQU07SUFDUjtJQUVBLE1BQU0sV0FBVyxNQUFNLEtBQUssSUFBSSxDQUFDO0lBQ2pDLG9CQUFvQjtFQUN0QjtBQUNGO0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FzQkMsR0FDRCxPQUFPLFNBQVMsY0FBYyxHQUFpQjtFQUM3QyxJQUFJO0lBQ0YsTUFBTSxXQUFXLEtBQUssUUFBUSxDQUFDO0lBQy9CLG9CQUFvQjtJQUNwQjtFQUNGLEVBQUUsT0FBTyxLQUFLO0lBQ1osSUFBSSxDQUFDLENBQUMsZUFBZSxLQUFLLE1BQU0sQ0FBQyxRQUFRLEdBQUc7TUFDMUMsTUFBTTtJQUNSO0VBQ0Y7RUFFQSxvQ0FBb0M7RUFDcEMsb0VBQW9FO0VBQ3BFLElBQUk7SUFDRixLQUFLLFNBQVMsQ0FBQyxLQUFLO01BQUUsV0FBVztJQUFLO0VBQ3hDLEVBQUUsT0FBTyxLQUFLO0lBQ1osSUFBSSxDQUFDLENBQUMsZUFBZSxLQUFLLE1BQU0sQ0FBQyxhQUFhLEdBQUc7TUFDL0MsTUFBTTtJQUNSO0lBRUEsTUFBTSxXQUFXLEtBQUssUUFBUSxDQUFDO0lBQy9CLG9CQUFvQjtFQUN0QjtBQUNGO0FBRUEsU0FBUyxvQkFBb0IsUUFBdUI7RUFDbEQsSUFBSSxDQUFDLFNBQVMsV0FBVyxFQUFFO0lBQ3pCLE1BQU0sSUFBSSxNQUNSLENBQUMsd0RBQXdELEVBQ3ZELGdCQUFnQixVQUNqQixDQUFDLENBQUM7RUFFUDtBQUNGIn0= +// denoCacheMetadata=2256787284570079412,12836414336115148704
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/97354b4c15b720fc58f4d4222b501edd6a3f090531cea1d3eac1aa677df70d75.js b/vendor/gen/https/jsr.io/97354b4c15b720fc58f4d4222b501edd6a3f090531cea1d3eac1aa677df70d75.js new file mode 100644 index 0000000..d4005ae --- /dev/null +++ b/vendor/gen/https/jsr.io/97354b4c15b720fc58f4d4222b501edd6a3f090531cea1d3eac1aa677df70d75.js @@ -0,0 +1,165 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { CHAR_COLON, CHAR_DOT } from "../_common/constants.ts"; +import { assertPath } from "../_common/assert_path.ts"; +import { isPathSeparator, isWindowsDeviceRoot } from "./_util.ts"; +/** + * Return a `ParsedPath` object of the `path`. + * + * @example Usage + * ```ts + * import { parse } from "@std/path/windows/parse"; + * import { assertEquals } from "@std/assert"; + * + * const parsed = parse("C:\\foo\\bar\\baz.ext"); + * assertEquals(parsed, { + * root: "C:\\", + * dir: "C:\\foo\\bar", + * base: "baz.ext", + * ext: ".ext", + * name: "baz", + * }); + * ``` + * + * @param path The path to parse. + * @returns The `ParsedPath` object. + */ export function parse(path) { + assertPath(path); + const ret = { + root: "", + dir: "", + base: "", + ext: "", + name: "" + }; + const len = path.length; + if (len === 0) return ret; + let rootEnd = 0; + let code = path.charCodeAt(0); + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + rootEnd = 1; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for(; j < len; ++j){ + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + rootEnd = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + if (len === 3) { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + ret.base = "\\"; + return ret; + } + rootEnd = 3; + } + } else { + // `path` contains just a relative drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + ret.base = "\\"; + return ret; + } + if (rootEnd > 0) ret.root = path.slice(0, rootEnd); + let startDot = -1; + let startPart = rootEnd; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + // Get non-dir info + for(; i >= rootEnd; --i){ + code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot + preDotState === 0 || // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + if (end !== -1) { + ret.base = ret.name = path.slice(startPart, end); + } + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + ret.ext = path.slice(startDot, end); + } + // Fallback to '\' in case there is no basename + ret.base = ret.base || "\\"; + // If the directory is the root, use the entire root as the `dir` including + // the trailing slash if any (`C:\abc` -> `C:\`). Otherwise, strip out the + // trailing slash (`C:\abc\def` -> `C:\abc`). + if (startPart > 0 && startPart !== rootEnd) { + ret.dir = path.slice(0, startPart - 1); + } else ret.dir = ret.root; + return ret; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC93aW5kb3dzL3BhcnNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IENIQVJfQ09MT04sIENIQVJfRE9UIH0gZnJvbSBcIi4uL19jb21tb24vY29uc3RhbnRzLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFBhcnNlZFBhdGggfSBmcm9tIFwiLi4vdHlwZXMudHNcIjtcbmltcG9ydCB7IGFzc2VydFBhdGggfSBmcm9tIFwiLi4vX2NvbW1vbi9hc3NlcnRfcGF0aC50c1wiO1xuaW1wb3J0IHsgaXNQYXRoU2VwYXJhdG9yLCBpc1dpbmRvd3NEZXZpY2VSb290IH0gZnJvbSBcIi4vX3V0aWwudHNcIjtcblxuZXhwb3J0IHR5cGUgeyBQYXJzZWRQYXRoIH0gZnJvbSBcIi4uL3R5cGVzLnRzXCI7XG5cbi8qKlxuICogUmV0dXJuIGEgYFBhcnNlZFBhdGhgIG9iamVjdCBvZiB0aGUgYHBhdGhgLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgcGFyc2UgfSBmcm9tIFwiQHN0ZC9wYXRoL3dpbmRvd3MvcGFyc2VcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IHBhcnNlZCA9IHBhcnNlKFwiQzpcXFxcZm9vXFxcXGJhclxcXFxiYXouZXh0XCIpO1xuICogYXNzZXJ0RXF1YWxzKHBhcnNlZCwge1xuICogICByb290OiBcIkM6XFxcXFwiLFxuICogICBkaXI6IFwiQzpcXFxcZm9vXFxcXGJhclwiLFxuICogICBiYXNlOiBcImJhei5leHRcIixcbiAqICAgZXh0OiBcIi5leHRcIixcbiAqICAgbmFtZTogXCJiYXpcIixcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gcGFyc2UuXG4gKiBAcmV0dXJucyBUaGUgYFBhcnNlZFBhdGhgIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKHBhdGg6IHN0cmluZyk6IFBhcnNlZFBhdGgge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuXG4gIGNvbnN0IHJldDogUGFyc2VkUGF0aCA9IHsgcm9vdDogXCJcIiwgZGlyOiBcIlwiLCBiYXNlOiBcIlwiLCBleHQ6IFwiXCIsIG5hbWU6IFwiXCIgfTtcblxuICBjb25zdCBsZW4gPSBwYXRoLmxlbmd0aDtcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIHJldDtcblxuICBsZXQgcm9vdEVuZCA9IDA7XG4gIGxldCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KDApO1xuXG4gIC8vIFRyeSB0byBtYXRjaCBhIHJvb3RcbiAgaWYgKGxlbiA+IDEpIHtcbiAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgICAvLyBQb3NzaWJsZSBVTkMgcm9vdFxuXG4gICAgICByb290RW5kID0gMTtcbiAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDEpKSkge1xuICAgICAgICAvLyBNYXRjaGVkIGRvdWJsZSBwYXRoIHNlcGFyYXRvciBhdCBiZWdpbm5pbmdcbiAgICAgICAgbGV0IGogPSAyO1xuICAgICAgICBsZXQgbGFzdCA9IGo7XG4gICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBub24tcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChqIDwgbGVuICYmIGogIT09IGxhc3QpIHtcbiAgICAgICAgICAvLyBNYXRjaGVkIVxuICAgICAgICAgIGxhc3QgPSBqO1xuICAgICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBwYXRoIHNlcGFyYXRvcnNcbiAgICAgICAgICBmb3IgKDsgaiA8IGxlbjsgKytqKSB7XG4gICAgICAgICAgICBpZiAoIWlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGogPCBsZW4gJiYgaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgLy8gTWF0Y2hlZCFcbiAgICAgICAgICAgIGxhc3QgPSBqO1xuICAgICAgICAgICAgLy8gTWF0Y2ggMSBvciBtb3JlIG5vbi1wYXRoIHNlcGFyYXRvcnNcbiAgICAgICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChqID09PSBsZW4pIHtcbiAgICAgICAgICAgICAgLy8gV2UgbWF0Y2hlZCBhIFVOQyByb290IG9ubHlcblxuICAgICAgICAgICAgICByb290RW5kID0gajtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgICAvLyBXZSBtYXRjaGVkIGEgVU5DIHJvb3Qgd2l0aCBsZWZ0b3ZlcnNcblxuICAgICAgICAgICAgICByb290RW5kID0gaiArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KGNvZGUpKSB7XG4gICAgICAvLyBQb3NzaWJsZSBkZXZpY2Ugcm9vdFxuXG4gICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OKSB7XG4gICAgICAgIHJvb3RFbmQgPSAyO1xuICAgICAgICBpZiAobGVuID4gMikge1xuICAgICAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDIpKSkge1xuICAgICAgICAgICAgaWYgKGxlbiA9PT0gMykge1xuICAgICAgICAgICAgICAvLyBgcGF0aGAgY29udGFpbnMganVzdCBhIGRyaXZlIHJvb3QsIGV4aXQgZWFybHkgdG8gYXZvaWRcbiAgICAgICAgICAgICAgLy8gdW5uZWNlc3Nhcnkgd29ya1xuICAgICAgICAgICAgICByZXQucm9vdCA9IHJldC5kaXIgPSBwYXRoO1xuICAgICAgICAgICAgICByZXQuYmFzZSA9IFwiXFxcXFwiO1xuICAgICAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcm9vdEVuZCA9IDM7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGBwYXRoYCBjb250YWlucyBqdXN0IGEgcmVsYXRpdmUgZHJpdmUgcm9vdCwgZXhpdCBlYXJseSB0byBhdm9pZFxuICAgICAgICAgIC8vIHVubmVjZXNzYXJ5IHdvcmtcbiAgICAgICAgICByZXQucm9vdCA9IHJldC5kaXIgPSBwYXRoO1xuICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgLy8gYHBhdGhgIGNvbnRhaW5zIGp1c3QgYSBwYXRoIHNlcGFyYXRvciwgZXhpdCBlYXJseSB0byBhdm9pZFxuICAgIC8vIHVubmVjZXNzYXJ5IHdvcmtcbiAgICByZXQucm9vdCA9IHJldC5kaXIgPSBwYXRoO1xuICAgIHJldC5iYXNlID0gXCJcXFxcXCI7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIGlmIChyb290RW5kID4gMCkgcmV0LnJvb3QgPSBwYXRoLnNsaWNlKDAsIHJvb3RFbmQpO1xuXG4gIGxldCBzdGFydERvdCA9IC0xO1xuICBsZXQgc3RhcnRQYXJ0ID0gcm9vdEVuZDtcbiAgbGV0IGVuZCA9IC0xO1xuICBsZXQgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgbGV0IGkgPSBwYXRoLmxlbmd0aCAtIDE7XG5cbiAgLy8gVHJhY2sgdGhlIHN0YXRlIG9mIGNoYXJhY3RlcnMgKGlmIGFueSkgd2Ugc2VlIGJlZm9yZSBvdXIgZmlyc3QgZG90IGFuZFxuICAvLyBhZnRlciBhbnkgcGF0aCBzZXBhcmF0b3Igd2UgZmluZFxuICBsZXQgcHJlRG90U3RhdGUgPSAwO1xuXG4gIC8vIEdldCBub24tZGlyIGluZm9cbiAgZm9yICg7IGkgPj0gcm9vdEVuZDsgLS1pKSB7XG4gICAgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICBzdGFydFBhcnQgPSBpICsgMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGVuZCA9PT0gLTEpIHtcbiAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCBtYXJrIHRoaXMgYXMgdGhlIGVuZCBvZiBvdXJcbiAgICAgIC8vIGV4dGVuc2lvblxuICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgICBlbmQgPSBpICsgMTtcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IENIQVJfRE9UKSB7XG4gICAgICAvLyBJZiB0aGlzIGlzIG91ciBmaXJzdCBkb3QsIG1hcmsgaXQgYXMgdGhlIHN0YXJ0IG9mIG91ciBleHRlbnNpb25cbiAgICAgIGlmIChzdGFydERvdCA9PT0gLTEpIHN0YXJ0RG90ID0gaTtcbiAgICAgIGVsc2UgaWYgKHByZURvdFN0YXRlICE9PSAxKSBwcmVEb3RTdGF0ZSA9IDE7XG4gICAgfSBlbHNlIGlmIChzdGFydERvdCAhPT0gLTEpIHtcbiAgICAgIC8vIFdlIHNhdyBhIG5vbi1kb3QgYW5kIG5vbi1wYXRoIHNlcGFyYXRvciBiZWZvcmUgb3VyIGRvdCwgc28gd2Ugc2hvdWxkXG4gICAgICAvLyBoYXZlIGEgZ29vZCBjaGFuY2UgYXQgaGF2aW5nIGEgbm9uLWVtcHR5IGV4dGVuc2lvblxuICAgICAgcHJlRG90U3RhdGUgPSAtMTtcbiAgICB9XG4gIH1cblxuICBpZiAoXG4gICAgc3RhcnREb3QgPT09IC0xIHx8XG4gICAgZW5kID09PSAtMSB8fFxuICAgIC8vIFdlIHNhdyBhIG5vbi1kb3QgY2hhcmFjdGVyIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgZG90XG4gICAgcHJlRG90U3RhdGUgPT09IDAgfHxcbiAgICAvLyBUaGUgKHJpZ2h0LW1vc3QpIHRyaW1tZWQgcGF0aCBjb21wb25lbnQgaXMgZXhhY3RseSAnLi4nXG4gICAgKHByZURvdFN0YXRlID09PSAxICYmIHN0YXJ0RG90ID09PSBlbmQgLSAxICYmIHN0YXJ0RG90ID09PSBzdGFydFBhcnQgKyAxKVxuICApIHtcbiAgICBpZiAoZW5kICE9PSAtMSkge1xuICAgICAgcmV0LmJhc2UgPSByZXQubmFtZSA9IHBhdGguc2xpY2Uoc3RhcnRQYXJ0LCBlbmQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXQubmFtZSA9IHBhdGguc2xpY2Uoc3RhcnRQYXJ0LCBzdGFydERvdCk7XG4gICAgcmV0LmJhc2UgPSBwYXRoLnNsaWNlKHN0YXJ0UGFydCwgZW5kKTtcbiAgICByZXQuZXh0ID0gcGF0aC5zbGljZShzdGFydERvdCwgZW5kKTtcbiAgfVxuXG4gIC8vIEZhbGxiYWNrIHRvICdcXCcgaW4gY2FzZSB0aGVyZSBpcyBubyBiYXNlbmFtZVxuICByZXQuYmFzZSA9IHJldC5iYXNlIHx8IFwiXFxcXFwiO1xuXG4gIC8vIElmIHRoZSBkaXJlY3RvcnkgaXMgdGhlIHJvb3QsIHVzZSB0aGUgZW50aXJlIHJvb3QgYXMgdGhlIGBkaXJgIGluY2x1ZGluZ1xuICAvLyB0aGUgdHJhaWxpbmcgc2xhc2ggaWYgYW55IChgQzpcXGFiY2AgLT4gYEM6XFxgKS4gT3RoZXJ3aXNlLCBzdHJpcCBvdXQgdGhlXG4gIC8vIHRyYWlsaW5nIHNsYXNoIChgQzpcXGFiY1xcZGVmYCAtPiBgQzpcXGFiY2ApLlxuICBpZiAoc3RhcnRQYXJ0ID4gMCAmJiBzdGFydFBhcnQgIT09IHJvb3RFbmQpIHtcbiAgICByZXQuZGlyID0gcGF0aC5zbGljZSgwLCBzdGFydFBhcnQgLSAxKTtcbiAgfSBlbHNlIHJldC5kaXIgPSByZXQucm9vdDtcblxuICByZXR1cm4gcmV0O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxxQ0FBcUM7QUFFckMsU0FBUyxVQUFVLEVBQUUsUUFBUSxRQUFRLDBCQUEwQjtBQUUvRCxTQUFTLFVBQVUsUUFBUSw0QkFBNEI7QUFDdkQsU0FBUyxlQUFlLEVBQUUsbUJBQW1CLFFBQVEsYUFBYTtBQUlsRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FvQkMsR0FDRCxPQUFPLFNBQVMsTUFBTSxJQUFZO0VBQ2hDLFdBQVc7RUFFWCxNQUFNLE1BQWtCO0lBQUUsTUFBTTtJQUFJLEtBQUs7SUFBSSxNQUFNO0lBQUksS0FBSztJQUFJLE1BQU07RUFBRztFQUV6RSxNQUFNLE1BQU0sS0FBSyxNQUFNO0VBQ3ZCLElBQUksUUFBUSxHQUFHLE9BQU87RUFFdEIsSUFBSSxVQUFVO0VBQ2QsSUFBSSxPQUFPLEtBQUssVUFBVSxDQUFDO0VBRTNCLHNCQUFzQjtFQUN0QixJQUFJLE1BQU0sR0FBRztJQUNYLElBQUksZ0JBQWdCLE9BQU87TUFDekIsb0JBQW9CO01BRXBCLFVBQVU7TUFDVixJQUFJLGdCQUFnQixLQUFLLFVBQVUsQ0FBQyxLQUFLO1FBQ3ZDLDZDQUE2QztRQUM3QyxJQUFJLElBQUk7UUFDUixJQUFJLE9BQU87UUFDWCxzQ0FBc0M7UUFDdEMsTUFBTyxJQUFJLEtBQUssRUFBRSxFQUFHO1VBQ25CLElBQUksZ0JBQWdCLEtB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 +// denoCacheMetadata=15124701152240990132,7433973758695592333
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/98248e544ed47a15c14f94c7703548db184e7d0af81b715ac68343bc4b5d401c.js b/vendor/gen/https/jsr.io/98248e544ed47a15c14f94c7703548db184e7d0af81b715ac68343bc4b5d401c.js new file mode 100644 index 0000000..5e272c3 --- /dev/null +++ b/vendor/gen/https/jsr.io/98248e544ed47a15c14f94c7703548db184e7d0af81b715ac68343bc4b5d401c.js @@ -0,0 +1,252 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * Extensions to the + * {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API | Web Crypto API} + * supporting additional encryption APIs, but also delegating to the built-in + * APIs when possible. + * + * Provides additional digest algorithms that are not part of the WebCrypto + * standard as well as a `subtle.digest` and `subtle.digestSync` methods. + * + * The {@linkcode KeyStack} export implements the {@linkcode KeyRing} interface + * for managing rotatable keys for signing data to prevent tampering, like with + * HTTP cookies. + * + * ## Supported algorithms + * + * Here is a list of supported algorithms. If the algorithm name in WebCrypto + * and Wasm/Rust is the same, this library prefers to use the implementation + * provided by WebCrypto. + * + * Length-adjustable algorithms support the + * {@linkcode DigestAlgorithmObject.length} option. + * + * WebCrypto: + * - `SHA-384` + * - `SHA-256` (length-extendable) + * - `SHA-512` (length-extendable) + * + * Wasm/Rust: + * - `BLAKE2B` + * - `BLAKE2B-128` + * - `BLAKE2B-160` + * - `BLAKE2B-224` + * - `BLAKE2B-256` + * - `BLAKE2B-384` + * - `BLAKE2S` + * - `BLAKE3` (length-adjustable) + * - `KECCAK-224` + * - `KECCAK-256` + * - `KECCAK-384` + * - `KECCAK-512` + * - `SHA-384` + * - `SHA3-224` + * - `SHA3-256` + * - `SHA3-384` + * - `SHA3-512` + * - `SHAKE128` (length-adjustable) + * - `SHAKE256` (length-adjustable) + * - `TIGER` + * - `RIPEMD-160` (length-extendable) + * - `SHA-224` (length-extendable) + * - `SHA-256` (length-extendable) + * - `SHA-512` (length-extendable) + * - `MD4` (length-extendable and collidable) + * - `MD5` (length-extendable and collidable) + * - `SHA-1` (length-extendable and collidable) + * - `FNV32` (non-cryptographic) + * - `FNV32A` (non-cryptographic) + * - `FNV64` (non-cryptographic) + * - `FNV64A` (non-cryptographic) + * + * @example + * ```ts + * import { crypto } from "@std/crypto"; + * + * // This will delegate to the runtime's WebCrypto implementation. + * console.log( + * new Uint8Array( + * await crypto.subtle.digest( + * "SHA-384", + * new TextEncoder().encode("hello world"), + * ), + * ), + * ); + * + * // This will use a bundled Wasm/Rust implementation. + * console.log( + * new Uint8Array( + * await crypto.subtle.digest( + * "BLAKE3", + * new TextEncoder().encode("hello world"), + * ), + * ), + * ); + * ``` + * + * @example Convert hash to a string + * + * ```ts + * import { + * crypto, + * } from "@std/crypto"; + * import { encodeHex } from "@std/encoding/hex" + * import { encodeBase64 } from "@std/encoding/base64" + * + * const hash = await crypto.subtle.digest( + * "SHA-384", + * new TextEncoder().encode("You hear that Mr. Anderson?"), + * ); + * + * // Hex encoding + * console.log(encodeHex(hash)); + * + * // Or with base64 encoding + * console.log(encodeBase64(hash)); + * ``` + * + * @module + */ import { digest, DIGEST_ALGORITHM_NAMES, DigestContext } from "./_wasm/mod.ts"; +export { DIGEST_ALGORITHM_NAMES }; +/** Digest algorithms supported by WebCrypto. */ const WEB_CRYPTO_DIGEST_ALGORITHM_NAMES = [ + "SHA-384", + "SHA-256", + "SHA-512", + // insecure (length-extendable and collidable): + "SHA-1" +]; +/** + * A copy of the global WebCrypto interface, with methods bound so they're + * safe to re-export. + */ const webCrypto = ((crypto)=>({ + getRandomValues: crypto.getRandomValues?.bind(crypto), + randomUUID: crypto.randomUUID?.bind(crypto), + subtle: { + decrypt: crypto.subtle?.decrypt?.bind(crypto.subtle), + deriveBits: crypto.subtle?.deriveBits?.bind(crypto.subtle), + deriveKey: crypto.subtle?.deriveKey?.bind(crypto.subtle), + digest: crypto.subtle?.digest?.bind(crypto.subtle), + encrypt: crypto.subtle?.encrypt?.bind(crypto.subtle), + exportKey: crypto.subtle?.exportKey?.bind(crypto.subtle), + generateKey: crypto.subtle?.generateKey?.bind(crypto.subtle), + importKey: crypto.subtle?.importKey?.bind(crypto.subtle), + sign: crypto.subtle?.sign?.bind(crypto.subtle), + unwrapKey: crypto.subtle?.unwrapKey?.bind(crypto.subtle), + verify: crypto.subtle?.verify?.bind(crypto.subtle), + wrapKey: crypto.subtle?.wrapKey?.bind(crypto.subtle) + } + }))(globalThis.crypto); +function toUint8Array(data) { + if (data instanceof Uint8Array) { + return data; + } else if (ArrayBuffer.isView(data)) { + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength); + } else if (data instanceof ArrayBuffer) { + return new Uint8Array(data); + } + return undefined; +} +/** + * A wrapper for WebCrypto which adds support for additional non-standard + * algorithms, but delegates to the runtime WebCrypto implementation whenever + * possible. + */ const stdCrypto = ((x)=>x)({ + ...webCrypto, + subtle: { + ...webCrypto.subtle, + /** + * Polyfills stream support until the Web Crypto API does so: + * @see {@link https://github.com/wintercg/proposal-webcrypto-streams} + */ async digest (algorithm, data) { + const { name, length } = normalizeAlgorithm(algorithm); + assertValidDigestLength(length); + // We delegate to WebCrypto whenever possible, + if (// if the algorithm is supported by the WebCrypto standard, + WEB_CRYPTO_DIGEST_ALGORITHM_NAMES.includes(name) && // and the data is a single buffer, + isBufferSource(data)) { + return await webCrypto.subtle.digest(algorithm, data); + } else if (DIGEST_ALGORITHM_NAMES.includes(name)) { + if (isBufferSource(data)) { + // Otherwise, we use our bundled Wasm implementation via digestSync + // if it supports the algorithm. + return stdCrypto.subtle.digestSync(algorithm, data); + } else if (isIterable(data)) { + return stdCrypto.subtle.digestSync(algorithm, data); + } else if (isAsyncIterable(data)) { + const context = new DigestContext(name); + for await (const chunk of data){ + const chunkBytes = toUint8Array(chunk); + if (!chunkBytes) { + throw new TypeError("Cannot digest the data: A chunk is not ArrayBuffer nor ArrayBufferView"); + } + context.update(chunkBytes); + } + return context.digestAndDrop(length).buffer; + } else { + throw new TypeError(// deno-lint-ignore deno-style-guide/error-message + "data must be a BufferSource or [Async]Iterable<BufferSource>"); + } + } + // (TypeScript type definitions prohibit this case.) If they're trying + // to call an algorithm we don't recognize, pass it along to WebCrypto + // in case it's a non-standard algorithm supported by the the runtime + // they're using. + return await webCrypto.subtle.digest(algorithm, data); + }, + digestSync (algorithm, data) { + const { name, length } = normalizeAlgorithm(algorithm); + assertValidDigestLength(length); + if (isBufferSource(data)) { + const bytes = toUint8Array(data); + return digest(name, bytes, length).buffer; + } + if (isIterable(data)) { + const context = new DigestContext(name); + for (const chunk of data){ + const chunkBytes = toUint8Array(chunk); + if (!chunkBytes) { + throw new TypeError("Cannot digest the data: A chunk is not ArrayBuffer nor ArrayBufferView"); + } + context.update(chunkBytes); + } + return context.digestAndDrop(length).buffer; + } + throw new TypeError(// deno-lint-ignore deno-style-guide/error-message + "data must be a BufferSource or Iterable<BufferSource>"); + } + } +}); +/* + * The largest digest length the current Wasm implementation can support. This + * is the value of `isize::MAX` on 32-bit platforms like Wasm, which is the + * maximum allowed capacity of a Rust `Vec<u8>`. + */ const MAX_DIGEST_LENGTH = 0x7FFF_FFFF; +/** + * Asserts that a number is a valid length for a digest, which must be an + * integer that fits in a Rust `Vec<u8>`, or be undefined. + */ function assertValidDigestLength(value) { + if (value !== undefined && (value < 0 || value > MAX_DIGEST_LENGTH || !Number.isInteger(value))) { + throw new RangeError(`length must be an integer between 0 and ${MAX_DIGEST_LENGTH}, inclusive`); + } +} +function normalizeAlgorithm(algorithm) { + return typeof algorithm === "string" ? { + name: algorithm.toUpperCase() + } : { + ...algorithm, + name: algorithm.name.toUpperCase() + }; +} +function isBufferSource(obj) { + return obj instanceof ArrayBuffer || ArrayBuffer.isView(obj); +} +function isIterable(obj) { + return typeof obj[Symbol.iterator] === "function"; +} +function isAsyncIterable(obj) { + return typeof obj[Symbol.asyncIterator] === "function"; +} +export { stdCrypto as crypto }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvY3J5cHRvLzEuMC41L2NyeXB0by50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vKipcbiAqIEV4dGVuc2lvbnMgdG8gdGhlXG4gKiB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1dlYl9DcnlwdG9fQVBJIHwgV2ViIENyeXB0byBBUEl9XG4gKiBzdXBwb3J0aW5nIGFkZGl0aW9uYWwgZW5jcnlwdGlvbiBBUElzLCBidXQgYWxzbyBkZWxlZ2F0aW5nIHRvIHRoZSBidWlsdC1pblxuICogQVBJcyB3aGVuIHBvc3NpYmxlLlxuICpcbiAqIFByb3ZpZGVzIGFkZGl0aW9uYWwgZGlnZXN0IGFsZ29yaXRobXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIFdlYkNyeXB0b1xuICogc3RhbmRhcmQgYXMgd2VsbCBhcyBhIGBzdWJ0bGUuZGlnZXN0YCBhbmQgYHN1YnRsZS5kaWdlc3RTeW5jYCBtZXRob2RzLlxuICpcbiAqIFRoZSB7QGxpbmtjb2RlIEtleVN0YWNrfSBleHBvcnQgaW1wbGVtZW50cyB0aGUge0BsaW5rY29kZSBLZXlSaW5nfSBpbnRlcmZhY2VcbiAqIGZvciBtYW5hZ2luZyByb3RhdGFibGUga2V5cyBmb3Igc2lnbmluZyBkYXRhIHRvIHByZXZlbnQgdGFtcGVyaW5nLCBsaWtlIHdpdGhcbiAqIEhUVFAgY29va2llcy5cbiAqXG4gKiAjIyBTdXBwb3J0ZWQgYWxnb3JpdGhtc1xuICpcbiAqIEhlcmUgaXMgYSBsaXN0IG9mIHN1cHBvcnRlZCBhbGdvcml0aG1zLiBJZiB0aGUgYWxnb3JpdGhtIG5hbWUgaW4gV2ViQ3J5cHRvXG4gKiBhbmQgV2FzbS9SdXN0IGlzIHRoZSBzYW1lLCB0aGlzIGxpYnJhcnkgcHJlZmVycyB0byB1c2UgdGhlIGltcGxlbWVudGF0aW9uXG4gKiBwcm92aWRlZCBieSBXZWJDcnlwdG8uXG4gKlxuICogTGVuZ3RoLWFkanVzdGFibGUgYWxnb3JpdGhtcyBzdXBwb3J0IHRoZVxuICoge0BsaW5rY29kZSBEaWdlc3RBbGdvcml0aG1PYmplY3QubGVuZ3RofSBvcHRpb24uXG4gKlxuICogV2ViQ3J5cHRvOlxuICogLSBgU0hBLTM4NGBcbiAqIC0gYFNIQS0yNTZgIChsZW5ndGgtZXh0ZW5kYWJsZSlcbiAqIC0gYFNIQS01MTJgIChsZW5ndGgtZXh0ZW5kYWJsZSlcbiAqXG4gKiBXYXNtL1J1c3Q6XG4gKiAtIGBCTEFLRTJCYFxuICogLSBgQkxBS0UyQi0xMjhgXG4gKiAtIGBCTEFLRTJCLTE2MGBcbiAqIC0gYEJMQUtFMkItMjI0YFxuICogLSBgQkxBS0UyQi0yNTZgXG4gKiAtIGBCTEFLRTJCLTM4NGBcbiAqIC0gYEJMQUtFMlNgXG4gKiAtIGBCTEFLRTNgIChsZW5ndGgtYWRqdXN0YWJsZSlcbiAqIC0gYEtFQ0NBSy0yMjRgXG4gKiAtIGBLRUNDQUstMjU2YFxuICogLSBgS0VDQ0FLLTM4NGBcbiAqIC0gYEtFQ0NBSy01MTJgXG4gKiAtIGBTSEEtMzg0YFxuICogLSBgU0hBMy0yMjRgXG4gKiAtIGBTSEEzLTI1NmBcbiAqIC0gYFNIQTMtMzg0YFxuICogLSBgU0hBMy01MTJgXG4gKiAtIGBTSEFLRTEyOGAgKGxlbmd0aC1hZGp1c3RhYmxlKVxuICogLSBgU0hBS0UyNTZgIChsZW5ndGgtYWRqdXN0YWJsZSlcbiAqIC0gYFRJR0VSYFxuICogLSBgUklQRU1ELTE2MGAgKGxlbmd0aC1leHRlbmRhYmxlKVxuICogLSBgU0hBLTIyNGAgKGxlbmd0aC1leHRlbmRhYmxlKVxuICogLSBgU0hBLTI1NmAgKGxlbmd0aC1leHRlbmRhYmxlKVxuICogLSBgU0hBLTUxMmAgKGxlbmd0aC1leHRlbmRhYmxlKVxuICogLSBgTUQ0YCAobGVuZ3RoLWV4dGVuZGFibGUgYW5kIGNvbGxpZGFibGUpXG4gKiAtIGBNRDVgIChsZW5ndGgtZXh0ZW5kYWJsZSBhbmQgY29sbGlkYWJsZSlcbiAqIC0gYFNIQS0xYCAobGVuZ3RoLWV4dGVuZGFibGUgYW5kIGNvbGxpZGFibGUpXG4gKiAtIGBGTlYzMmAgKG5vbi1jcnlwdG9ncmFwaGljKVxuICogLSBgRk5WMzJBYCAobm9uLWNyeXB0b2dyYXBoaWMpXG4gKiAtIGBGTlY2NGAgKG5vbi1jcnlwdG9ncmFwaGljKVxuICogLSBgRk5WNjRBYCAobm9uLWNyeXB0b2dyYXBoaWMpXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBjcnlwdG8gfSBmcm9tIFwiQHN0ZC9jcnlwdG9cIjtcbiAqXG4gKiAvLyBUaGlzIHdpbGwgZGVsZWdhdGUgdG8gdGhlIHJ1bnRpbWUncyBXZWJDcnlwdG8gaW1wbGVtZW50YXRpb24uXG4gKiBjb25zb2xlLmxvZyhcbiAqICAgbmV3IFVpbnQ4QXJyYXkoXG4gKiAgICAgYXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoXG4gKiAgICAgICBcIlNIQS0zODRcIixcbiAqICAgICAgIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShcImhlbGxvIHdvcmxkXCIpLFxuICogICAgICksXG4gKiAgICksXG4gKiApO1xuICpcbiAqIC8vIFRoaXMgd2lsbCB1c2UgYSBidW5kbGVkIFdhc20vUnVzdCBpbXBsZW1lbnRhdGlvbi5cbiAqIGNvbnNvbGUubG9nKFxuICogICBuZXcgVWludDhBcnJheShcbiAqICAgICBhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdChcbiAqICAgICAgIFwiQkxBS0UzXCIsXG4gKiAgICAgICBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoXCJoZWxsbyB3b3JsZFwiKSxcbiAqICAgICApLFxuICogICApLFxuICogKTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIENvbnZlcnQgaGFzaCB0byBhIHN0cmluZ1xuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQge1xuICogICBjcnlwdG8sXG4gKiB9IGZyb20gXCJAc3RkL2NyeXB0b1wiO1xuICogaW1wb3J0IHsgZW5jb2RlSGV4IH0gZnJvbSBcIkBzdGQvZW5jb2RpbmcvaGV4XCJcbiAqIGltcG9ydCB7IGVuY29kZUJhc2U2NCB9IGZyb20gXCJAc3RkL2VuY29kaW5nL2Jhc2U2NFwiXG4gKlxuICogY29uc3QgaGFzaCA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KFxuICogICBcIlNIQS0zODRcIixcbiAqICAgbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKFwiWW91IGhlYXIgdGhhdCBNci4gQW5kZXJzb24/XCIpLFxuICogKTtcbiAqXG4gKiAvLyBIZXggZW5jb2RpbmdcbiAqIGNvbnNvbGUubG9nKGVuY29kZUhleChoYXNoKSk7XG4gKlxuICogLy8gT3Igd2l0aCBiYXNlNjQgZW5jb2RpbmdcbiAqIGNvbnNvbGUubG9nKGVuY29kZUJhc2U2NChoYXNoKSk7XG4gKiBgYGBcbiAqXG4gKiBAbW9kdWxlXG4gKi9cbmltcG9ydCB7XG4gIGRpZ2VzdCxcbiAgRElHRVNUX0FMR09SSVRITV9OQU1FUyxcbiAgdHlwZSBEaWdlc3RBbGdvcml0aG1OYW1lLFxuICBEaWdlc3RDb250ZXh0LFxufSBmcm9tIFwiLi9fd2FzbS9tb2QudHNcIjtcblxuZXhwb3J0IHsgRElHRVNUX0FMR09SSVRITV9OQU1FUywgdHlwZSBEaWdlc3RBbGdvcml0aG1OYW1lIH07XG5cbi8qKiBEaWdlc3QgYWxnb3JpdGhtcyBzdXBwb3J0ZWQgYnkgV2ViQ3J5cHRvLiAqL1xuY29uc3QgV0VCX0NSWVBUT19ESUdFU1RfQUxHT1JJVEhNX05BTUVTID0gW1xuICBcIlNIQS0zODRcIixcbiAgXCJTSEEtMjU2XCIsXG4gIFwiU0hBLTUxMlwiLFxuICAvLyBpbnNlY3VyZSAobGVuZ3RoLWV4dGVuZGFibGUgYW5kIGNvbGxpZGFibGUpOlxuICBcIlNIQS0xXCIsXG5dIGFzIGNvbnN0O1xuXG4vKipcbiAqIEEgY29weSBvZiB0aGUgZ2xvYmFsIFdlYkNyeXB0byBpbnRlcmZhY2UsIHdpdGggbWV0aG9kcyBib3VuZCBzbyB0aGV5J3JlXG4gKiBzYWZlIHRvIHJlLWV4cG9ydC5cbiAqL1xuY29uc3Qgd2ViQ3J5cHRvID0gKChjcnlwdG8pID0+ICh7XG4gIGdldFJhbmRvbVZhbHVlczogY3J5cHRvLmdldFJhbmRvbVZhbHVlcz8uYmluZChjcnlwdG8pLFxuICByYW5kb21VVUlEOiBjcnlwdG8ucmFuZG9tVVVJRD8uYmluZChjcnlwdG8pLFxuICBzdWJ0bGU6IHtcbiAgICBkZWNyeXB0OiBjcnlwdG8uc3VidGxlPy5kZWNyeXB0Py5iaW5kKGNyeXB0by5zdWJ0bGUpLFxuICAgIGRlcml2ZUJpdHM6IGNyeXB0by5zdWJ0bGU/LmRlcml2ZUJpdHM/LmJpbmQoY3J5cHRvLnN1YnRsZSksXG4gICAgZGVyaXZlS2V5OiBjcnlwdG8uc3VidGxlPy5kZXJpdmVLZXk/LmJpbmQoY3J5cHRvLnN1YnRsZSksXG4gICAgZGlnZXN0OiBjcnlwdG8uc3VidGxlPy5kaWdlc3Q/LmJpbmQoY3J5cHRvLnN1YnRsZSksXG4gICAgZW5jcnlwdDogY3J5cHRvLnN1YnRsZT8uZW5jcnlwdD8uYmluZChjcnlwdG8uc3VidGxlKSxcbiAgICBleHBvcnRLZXk6IGNyeXB0by5zdWJ0bGU/LmV4cG9ydEtleT8uYmluZChjcnlwdG8uc3VidGxlKSxcbiAgICBnZW5lcmF0ZUtleTogY3J5cHRvLnN1YnRsZT8uZ2VuZXJhdGVLZXk/LmJpbmQoY3J5cHRvLnN1YnRsZSksXG4gICAgaW1wb3J0S2V5OiBjcnlwdG8uc3VidGxlPy5pbXBvcnRLZXk/LmJpbmQoY3J5cHRvLnN1YnRsZSksXG4gICAgc2lnbjogY3J5cHRvLnN1YnRsZT8uc2lnbj8uYmluZChjcnlwdG8uc3VidGxlKSxcbiAgICB1bndyYXBLZXk6IGNyeXB0by5zdWJ0bGU/LnVud3JhcEtleT8uYmluZChjcnlwdG8uc3VidGxlKSxcbiAgICB2ZXJpZnk6IGNyeXB0by5zdWJ0bGU/LnZlcmlmeT8uYmluZChjcnlwdG8uc3VidGxlKSxcbiAgICB3cmFwS2V5OiBjcnlwdG8uc3VidGxlPy53cmFwS2V5Py5iaW5kKGNyeXB0by5zdWJ0bGUpLFxuICB9LFxufSkpKGdsb2JhbFRoaXMuY3J5cHRvKTtcblxuZnVuY3Rpb24gdG9VaW50OEFycmF5KGRhdGE6IHVua25vd24pOiBVaW50OEFycmF5IHwgdW5kZWZpbmVkIHtcbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KGRhdGEpKSB7XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGRhdGEuYnVmZmVyLCBkYXRhLmJ5dGVPZmZzZXQsIGRhdGEuYnl0ZUxlbmd0aCk7XG4gIH0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGRhdGEpO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKiBFeHRlbnNpb25zIHRvIHRoZSB3ZWIgc3RhbmRhcmQgYFN1YnRsZUNyeXB0b2AgaW50ZXJmYWNlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGRTdWJ0bGVDcnlwdG8gZXh0ZW5kcyBTdWJ0bGVDcnlwdG8ge1xuICAvKipcbiAgICogUmV0dXJucyBhIG5ldyBgUHJvbWlzZWAgb2JqZWN0IHRoYXQgd2lsbCBkaWdlc3QgYGRhdGFgIHVzaW5nIHRoZSBzcGVjaWZpZWRcbiAgICogYEFsZ29yaXRobUlkZW50aWZpZXJgLlxuICAgKi9cbiAgZGlnZXN0KFxuICAgIGFsZ29yaXRobTogRGlnZXN0QWxnb3JpdGhtLFxuICAgIGRhdGE6IEJ1ZmZlclNvdXJjZSB8IEFzeW5jSXRlcmFibGU8QnVmZmVyU291cmNlPiB8IEl0ZXJhYmxlPEJ1ZmZlclNvdXJjZT4sXG4gICk6IFByb21pc2U8QXJyYXlCdWZmZXI+O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgQXJyYXlCdWZmZXIgd2l0aCB0aGUgcmVzdWx0IG9mIGRpZ2VzdGluZyBgZGF0YWAgdXNpbmcgdGhlXG4gICAqIHNwZWNpZmllZCBgQWxnb3JpdGhtSWRlbnRpZmllcmAuXG4gICAqL1xuICBkaWdlc3RTeW5jKFxuICAgIGFsZ29yaXRobTogRGlnZXN0QWxnb3JpdGhtLFxuICAgIGRhdGE6IEJ1ZmZlclNvdXJjZSB8IEl0ZXJhYmxlPEJ1ZmZlclNvdXJjZT4sXG4gICk6IEFycmF5QnVmZmVyO1xufVxuXG4vKiogRXh0ZW5zaW9ucyB0byB0aGUgV2ViIHtAbGlua2NvZGUgQ3J5cHRvfSBpbnRlcmZhY2UuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0ZENyeXB0byBleHRlbmRzIENyeXB0byB7XG4gIC8qKiBFeHRlbnNpb24gdG8gdGhlIHtAbGlua2NvZGUgY3J5cHRvLlN1YnRsZUNyeXB0b30gaW50ZXJmYWNlLiAqL1xuICByZWFkb25seSBzdWJ0bGU6IFN0ZFN1YnRsZUNyeXB0bztcbn1cblxuLyoqXG4gKiBBIHdyYXBwZXIgZm9yIFdlYkNyeXB0byB3aGljaCBhZGRzIHN1cHBvcnQgZm9yIGFkZGl0aW9uYWwgbm9uLXN0YW5kYXJkXG4gKiBhbGdvcml0aG1zLCBidXQgZGVsZWdhdGVzIHRvIHRoZSBydW50aW1lIFdlYkNyeXB0byBpbXBsZW1lbnRhdGlvbiB3aGVuZXZlclxuICogcG9zc2libGUuXG4gKi9cbmNvbnN0IHN0ZENyeXB0bzogU3RkQ3J5cHRvID0gKCh4KSA9PiB4KSh7XG4gIC4uLndlYkNyeXB0byxcbiAgc3VidGxlOiB7XG4gICAgLi4ud2ViQ3J5cHRvLnN1YnRsZSxcblxuICAgIC8qKlxuICAgICAqIFBvbHlmaWxscyBzdHJlYW0gc3VwcG9ydCB1bnRpbCB0aGUgV2ViIENyeXB0byBBUEkgZG9lcyBzbzpcbiAgICAgKiBAc2VlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vd2ludGVyY2cvcHJvcG9zYWwtd2ViY3J5cHRvLXN0cmVhbXN9XG4gICAgICovXG4gICAgYXN5bmMgZGlnZXN0KFxuICAgICAgYWxnb3JpdGhtOiBEaWdlc3RBbGdvcml0aG0sXG4gICAgICBkYXRhOiBCdWZmZXJTb3VyY2UgfCBBc3luY0l0ZXJhYmxlPEJ1ZmZlclNvdXJjZT4gfCBJdGVyYWJsZTxCdWZmZXJTb3VyY2U+LFxuICAgICk6IFByb21pc2U8QXJyYXlCdWZmZXI+IHtcbiAgICAgIGNvbnN0IHsgbmFtZSwgbGVuZ3RoIH0gPSBub3JtYWxpemVBbGdvcml0aG0oYWxnb3JpdGhtKTtcblxuICAgICAgYXNzZXJ0VmFsaWREaWdlc3RMZW5ndGgobGVuZ3RoKTtcblxuICAgICAgLy8gV2UgZGVsZWdhdGUgdG8gV2ViQ3J5cHRvIHdoZW5ldmVyIHBvc3NpYmxlLFxuICAgICAgaWYgKFxuICAgICAgICAvLyBpZiB0aGUgYWxnb3JpdGhtIGlzIHN1cHBvcnRlZCBieSB0aGUgV2ViQ3J5cHRvIHN0YW5kYXJkLFxuICAgICAgICAoV0VCX0NSWVBUT19ESUdFU1RfQUxHT1JJVEhNX05BTUVTIGFzIHJlYWRvbmx5IHN0cmluZ1tdKS5pbmNsdWRlcyhcbiAgICAgICAgICBuYW1lLFxuICAgICAgICApICYmXG4gICAgICAgIC8vIGFuZCB0aGUgZGF0YSBpcyBhIHNpbmdsZSBidWZmZXIsXG4gICAgICAgIGlzQnVmZmVyU291cmNlKGRhdGEpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHdlYkNyeXB0by5zdWJ0bGUuZGlnZXN0KGFsZ29yaXRobSwgZGF0YSk7XG4gICAgICB9IGVsc2UgaWYgKERJR0VTVF9BTEdPUklUSE1fTkFNRVMuaW5jbHVkZXMobmFtZSBhcyBEaWdlc3RBbGdvcml0aG1OYW1lKSkge1xuICAgICAgICBpZiAoaXNCdWZmZXJTb3VyY2UoZGF0YSkpIHtcbiAgICAgICAgICAvLyBPdGhlcndpc2UsIHdlIHVzZSBvdXIgYnVuZGxlZCBXYXNtIGltcGxlbWVudGF0aW9uIHZpYSBkaWdlc3RTeW5jXG4gICAgICAgICAgLy8gaWYgaXQgc3VwcG9ydHMgdGhlIGFsZ29yaXRobS5cbiAgICAgICAgICByZXR1cm4gc3RkQ3J5cHRvLnN1YnRsZS5kaWdlc3RTeW5jKGFsZ29yaXRobSwgZGF0YSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNJdGVyYWJsZShkYXRhKSkge1xuICAgICAgICAgIHJldHVybiBzdGRDcnlwdG8uc3VidGxlLmRpZ2VzdFN5bmMoXG4gICAgICAgICAgICBhbGdvcml0aG0sXG4gICAgICAgICAgICBkYXRhIGFzIEl0ZXJhYmxlPEJ1ZmZlclNvdXJjZT4sXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FzeW5jSXRlcmFibGUoZGF0YSkpIHtcbiAgICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3IERpZ2VzdENvbnRleHQobmFtZSk7XG4gICAgICAgICAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBkYXRhIGFzIEFzeW5jSXRlcmFibGU8QnVmZmVyU291cmNlPikge1xuICAgICAgICAgICAgY29uc3QgY2h1bmtCeXRlcyA9IHRvVWludDhBcnJheShjaHVuayk7XG4gICAgICAgICAgICBpZiAoIWNodW5rQnl0ZXMpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICAgICAgICBcIkNhbm5vdCBkaWdlc3QgdGhlIGRhdGE6IEEgY2h1bmsgaXMgbm90IEFycmF5QnVmZmVyIG5vciBBcnJheUJ1ZmZlclZpZXdcIixcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRleHQudXBkYXRlKGNodW5rQnl0ZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gY29udGV4dC5kaWdlc3RBbmREcm9wKGxlbmd0aCkuYnVmZmVyIGFzIEFycmF5QnVmZmVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgICAvLyBkZW5vLWxpbnQtaWdub3JlIGRlbm8tc3R5bGUtZ3VpZGUvZXJyb3ItbWVzc2FnZVxuICAgICAgICAgICAgXCJkYXRhIG11c3QgYmUgYSBCdWZmZXJTb3VyY2Ugb3IgW0FzeW5jXUl0ZXJhYmxlPEJ1ZmZlclNvdXJjZT5cIixcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyAoVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHByb2hpYml0IHRoaXMgY2FzZS4pIElmIHRoZXkncmUgdHJ5aW5nXG4gICAgICAvLyB0byBjYWxsIGFuIGFsZ29yaXRobSB3ZSBkb24ndCByZWNvZ25pemUsIHBhc3MgaXQgYWxvbmcgdG8gV2ViQ3J5cHRvXG4gICAgICAvLyBpbiBjYXNlIGl0J3MgYSBub24tc3RhbmRhcmQgYWxnb3JpdGhtIHN1cHBvcnRlZCBieSB0aGUgdGhlIHJ1bnRpbWVcbiAgICAgIC8vIHRoZXkncmUgdXNpbmcuXG4gICAgICByZXR1cm4gYXdhaXQgd2ViQ3J5cHRvLnN1YnRsZS5kaWdlc3QoYWxnb3JpdGhtLCBkYXRhIGFzIEJ1ZmZlclNvdXJjZSk7XG4gICAgfSxcblxuICAgIGRpZ2VzdFN5bmMoXG4gICAgICBhbGdvcml0aG06IERpZ2VzdEFsZ29yaXRobSxcbiAgICAgIGRhdGE6IEJ1ZmZlclNvdXJjZSB8IEl0ZXJhYmxlPEJ1ZmZlclNvdXJjZT4sXG4gICAgKTogQXJyYXlCdWZmZXIge1xuICAgICAgY29uc3QgeyBuYW1lLCBsZW5ndGggfSA9IG5vcm1hbGl6ZUFsZ29yaXRobShhbGdvcml0aG0pO1xuICAgICAgYXNzZXJ0VmFsaWREaWdlc3RMZW5ndGgobGVuZ3RoKTtcblxuICAgICAgaWYgKGlzQnVmZmVyU291cmNlKGRhdGEpKSB7XG4gICAgICAgIGNvbnN0IGJ5dGVzID0gdG9VaW50OEFycmF5KGRhdGEpITtcbiAgICAgICAgcmV0dXJuIGRpZ2VzdChuYW1lLCBieXRlcywgbGVuZ3RoKS5idWZmZXIgYXMgQXJyYXlCdWZmZXI7XG4gICAgICB9XG4gICAgICBpZiAoaXNJdGVyYWJsZShkYXRhKSkge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gbmV3IERpZ2VzdENvbnRleHQobmFtZSk7XG4gICAgICAgIGZvciAoY29uc3QgY2h1bmsgb2YgZGF0YSkge1xuICAgICAgICAgIGNvbnN0IGNodW5rQnl0ZXMgPSB0b1VpbnQ4QXJyYXkoY2h1bmspO1xuICAgICAgICAgIGlmICghY2h1bmtCeXRlcykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICAgICAgXCJDYW5ub3QgZGlnZXN0IHRoZSBkYXRhOiBBIGNodW5rIGlzIG5vdCBBcnJheUJ1ZmZlciBub3IgQXJyYXlCdWZmZXJWaWV3XCIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb250ZXh0LnVwZGF0ZShjaHVua0J5dGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29udGV4dC5kaWdlc3RBbmREcm9wKGxlbmd0aCkuYnVmZmVyIGFzIEFycmF5QnVmZmVyO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgLy8gZGVuby1saW50LWlnbm9yZSBkZW5vLXN0eWxlLWd1aWRlL2Vycm9yLW1lc3NhZ2VcbiAgICAgICAgXCJkYXRhIG11c3QgYmUgYSBCdWZmZXJTb3VyY2Ugb3IgSXRlcmFibGU8QnVmZmVyU291cmNlPlwiLFxuICAgICAgKTtcbiAgICB9LFxuICB9LFxufSk7XG5cbi8qXG4gKiBUaGUgbGFyZ2VzdCBkaWdlc3QgbGVuZ3RoIHRoZSBjdXJyZW50IFdhc20gaW1wbGVtZW50YXRpb24gY2FuIHN1cHBvcnQuIFRoaXNcbiAqIGlzIHRoZSB2YWx1ZSBvZiBgaXNpemU6Ok1BWGAgb24gMzItYml0IHBsYXRmb3JtcyBsaWtlIFdhc20sIHdoaWNoIGlzIHRoZVxuICogbWF4aW11bSBhbGxvd2VkIGNhcGFjaXR5IG9mIGEgUnVzdCBgVmVjPHU4PmAuXG4gKi9cbmNvbnN0IE1BWF9ESUdFU1RfTEVOR1RIID0gMHg3RkZGX0ZGRkY7XG5cbi8qKlxuICogQXNzZXJ0cyB0aGF0IGEgbnVtYmVyIGlzIGEgdmFsaWQgbGVuZ3RoIGZvciBhIGRpZ2VzdCwgd2hpY2ggbXVzdCBiZSBhblxuICogaW50ZWdlciB0aGF0IGZpdHMgaW4gYSBSdXN0IGBWZWM8dTg+YCwgb3IgYmUgdW5kZWZpbmVkLlxuICovXG5mdW5jdGlvbiBhc3NlcnRWYWxpZERpZ2VzdExlbmd0aCh2YWx1ZT86IG51bWJlcikge1xuICBpZiAoXG4gICAgdmFsdWUgIT09IHVuZGVmaW5lZCAmJlxuICAgICh2YWx1ZSA8IDAgfHwgdmFsdWUgPiBNQVhfRElHRVNUX0xFTkdUSCB8fFxuICAgICAgIU51bWJlci5pc0ludGVnZXIodmFsdWUpKVxuICApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcbiAgICAgIGBsZW5ndGggbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgJHtNQVhfRElHRVNUX0xFTkdUSH0sIGluY2x1c2l2ZWAsXG4gICAgKTtcbiAgfVxufVxuXG4vKiogRXh0ZW5kZWQgZGlnZXN0IGFsZ29yaXRobSBvYmplY3RzLiAqL1xuZXhwb3J0IHR5cGUgRGlnZXN0QWxnb3JpdGhtT2JqZWN0ID0ge1xuICBuYW1lOiBEaWdlc3RBbGdvcml0aG1OYW1lO1xuICBsZW5ndGg/OiBudW1iZXI7XG59O1xuXG4vKipcbiAqIEV4dGVuZGVkIGRpZ2VzdCBhbGdvcml0aG1zIGFjY2VwdGVkIGJ5IHtAbGlua2NvZGUgc3RkQ3J5cHRvLnN1YnRsZS5kaWdlc3R9LlxuICpcbiAqIFRoZSBgbGVuZ3RoYCBvcHRpb24gd2lsbCBiZSBpZ25vcmVkIGZvclxuICoge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9TdWJ0bGVDcnlwdG8vZGlnZXN0I2FsZ29yaXRobSB8IFdlYiBTdGFuZGFyZCBhbGdvcml0aG1zfS5cbiAqL1xuZXhwb3J0IHR5cGUgRGlnZXN0QWxnb3JpdGhtID0gRGlnZXN0QWxnb3JpdGhtTmFtZSB8IERpZ2VzdEFsZ29yaXRobU9iamVjdDtcblxuZnVuY3Rpb24gbm9ybWFsaXplQWxnb3JpdGhtKGFsZ29yaXRobTogRGlnZXN0QWxnb3JpdGhtKSB7XG4gIHJldHVybiAoKHR5cGVvZiBhbGdvcml0aG0gPT09IFwic3RyaW5nXCIpXG4gICAgPyB7IG5hbWU6IGFsZ29yaXRobS50b1VwcGVyQ2FzZSgpIH1cbiAgICA6IHtcbiAgICAgIC4uLmFsZ29yaXRobSxcbiAgICAgIG5hbWU6IGFsZ29yaXRobS5uYW1lLnRvVXBwZXJDYXNlKCksXG4gICAgfSkgYXMgRGlnZXN0QWxnb3JpdGhtT2JqZWN0O1xufVxuXG5mdW5jdGlvbiBpc0J1ZmZlclNvdXJjZShvYmo6IHVua25vd24pOiBvYmogaXMgQnVmZmVyU291cmNlIHtcbiAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIEFycmF5QnVmZmVyIHx8IEFycmF5QnVmZmVyLmlzVmlldyhvYmopO1xufVxuXG5mdW5jdGlvbiBpc0l0ZXJhYmxlPFQ+KG9iajogdW5rbm93bik6IG9iaiBpcyBJdGVyYWJsZTxUPiB7XG4gIHJldHVybiB0eXBlb2YgKG9iaiBhcyBJdGVyYWJsZTxUPilbU3ltYm9sLml0ZXJhdG9yXSA9PT0gXCJmdW5jdGlvblwiO1xufVxuXG5mdW5jdGlvbiBpc0FzeW5jSXRlcmFibGU8VD4ob2JqOiB1bmtub3duKTogb2JqIGlzIEFzeW5jSXRlcmFibGU8VD4ge1xuICByZXR1cm4gdHlwZW9mIChvYmogYXMgQXN5bmNJdGVyYWJsZTxUPilbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID09PSBcImZ1bmN0aW9uXCI7XG59XG5cbmV4cG9ydCB7IHN0ZENyeXB0byBhcyBjcnlwdG8gfTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQTJHQyxHQUNELFNBQ0UsTUFBTSxFQUNOLHNCQUFzQixFQUV0QixhQUFhLFFBQ1IsaUJBQWlCO0FBRXhCLFNBQVMsc0JBQXNCLEdBQTZCO0FBRTVELDhDQUE4QyxHQUM5QyxNQUFNLG9DQUFvQztF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 +// denoCacheMetadata=12851248219351958936,15237271966104932992
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/98cb00e3517957054dc1b9f9b06db6ce05d5815406747c2845298cbc1890fb68.js b/vendor/gen/https/jsr.io/98cb00e3517957054dc1b9f9b06db6ce05d5815406747c2845298cbc1890fb68.js new file mode 100644 index 0000000..11d4ae8 --- /dev/null +++ b/vendor/gen/https/jsr.io/98cb00e3517957054dc1b9f9b06db6ce05d5815406747c2845298cbc1890fb68.js @@ -0,0 +1,22 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { assertArg } from "../_common/from_file_url.ts"; +/** + * Converts a file URL to a path string. + * + * @example Usage + * ```ts + * import { fromFileUrl } from "@std/path/posix/from-file-url"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(fromFileUrl(new URL("file:///home/foo")), "/home/foo"); + * ``` + * + * @param url The file URL to convert. + * @returns The path string. + */ export function fromFileUrl(url) { + url = assertArg(url); + return decodeURIComponent(url.pathname.replace(/%(?![0-9A-Fa-f]{2})/g, "%25")); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9wb3NpeC9mcm9tX2ZpbGVfdXJsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGFzc2VydEFyZyB9IGZyb20gXCIuLi9fY29tbW9uL2Zyb21fZmlsZV91cmwudHNcIjtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZpbGUgVVJMIHRvIGEgcGF0aCBzdHJpbmcuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBmcm9tRmlsZVVybCB9IGZyb20gXCJAc3RkL3BhdGgvcG9zaXgvZnJvbS1maWxlLXVybFwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogYXNzZXJ0RXF1YWxzKGZyb21GaWxlVXJsKG5ldyBVUkwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpKSwgXCIvaG9tZS9mb29cIik7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gdXJsIFRoZSBmaWxlIFVSTCB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIHBhdGggc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbUZpbGVVcmwodXJsOiBVUkwgfCBzdHJpbmcpOiBzdHJpbmcge1xuICB1cmwgPSBhc3NlcnRBcmcodXJsKTtcbiAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChcbiAgICB1cmwucGF0aG5hbWUucmVwbGFjZSgvJSg/IVswLTlBLUZhLWZdezJ9KS9nLCBcIiUyNVwiKSxcbiAgKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBRXJDLFNBQVMsU0FBUyxRQUFRLDhCQUE4QjtBQUV4RDs7Ozs7Ozs7Ozs7OztDQWFDLEdBQ0QsT0FBTyxTQUFTLFlBQVksR0FBaUI7RUFDM0MsTUFBTSxVQUFVO0VBQ2hCLE9BQU8sbUJBQ0wsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLHdCQUF3QjtBQUVqRCJ9 +// denoCacheMetadata=5888410168631165451,15717728533324680760
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/98f0259426a0c81a230d4c389982c1135532ead00f6ed20a8512836d26b91574.js b/vendor/gen/https/jsr.io/98f0259426a0c81a230d4c389982c1135532ead00f6ed20a8512836d26b91574.js new file mode 100644 index 0000000..b07d5c0 --- /dev/null +++ b/vendor/gen/https/jsr.io/98f0259426a0c81a230d4c389982c1135532ead00f6ed20a8512836d26b91574.js @@ -0,0 +1,46 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { CHAR_BACKWARD_SLASH, CHAR_COLON, CHAR_DOT, CHAR_QUESTION_MARK } from "../_common/constants.ts"; +import { isWindowsDeviceRoot } from "./_util.ts"; +import { resolve } from "./resolve.ts"; +/** + * Resolves path to a namespace path + * + * @example Usage + * ```ts + * import { toNamespacedPath } from "@std/path/windows/to-namespaced-path"; + * import { assertEquals } from "@std/assert"; + * + * const namespaced = toNamespacedPath("C:\\foo\\bar"); + * assertEquals(namespaced, "\\\\?\\C:\\foo\\bar"); + * ``` + * + * @param path The path to resolve to namespaced path + * @returns The resolved namespaced path + */ export function toNamespacedPath(path) { + // Note: this will *probably* throw somewhere. + if (typeof path !== "string") return path; + if (path.length === 0) return ""; + const resolvedPath = resolve(path); + if (resolvedPath.length >= 3) { + if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) { + // Possible UNC root + if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) { + const code = resolvedPath.charCodeAt(2); + if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) { + // Matched non-long UNC root, convert the path to a long UNC path + return `\\\\?\\UNC\\${resolvedPath.slice(2)}`; + } + } + } else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0))) { + // Possible device root + if (resolvedPath.charCodeAt(1) === CHAR_COLON && resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH) { + // Matched device root, convert the path to a long UNC path + return `\\\\?\\${resolvedPath}`; + } + } + } + return path; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC93aW5kb3dzL3RvX25hbWVzcGFjZWRfcGF0aC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQge1xuICBDSEFSX0JBQ0tXQVJEX1NMQVNILFxuICBDSEFSX0NPTE9OLFxuICBDSEFSX0RPVCxcbiAgQ0hBUl9RVUVTVElPTl9NQVJLLFxufSBmcm9tIFwiLi4vX2NvbW1vbi9jb25zdGFudHMudHNcIjtcbmltcG9ydCB7IGlzV2luZG93c0RldmljZVJvb3QgfSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gXCIuL3Jlc29sdmUudHNcIjtcblxuLyoqXG4gKiBSZXNvbHZlcyBwYXRoIHRvIGEgbmFtZXNwYWNlIHBhdGhcbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHRvTmFtZXNwYWNlZFBhdGggfSBmcm9tIFwiQHN0ZC9wYXRoL3dpbmRvd3MvdG8tbmFtZXNwYWNlZC1wYXRoXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBuYW1lc3BhY2VkID0gdG9OYW1lc3BhY2VkUGF0aChcIkM6XFxcXGZvb1xcXFxiYXJcIik7XG4gKiBhc3NlcnRFcXVhbHMobmFtZXNwYWNlZCwgXCJcXFxcXFxcXD9cXFxcQzpcXFxcZm9vXFxcXGJhclwiKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHJlc29sdmUgdG8gbmFtZXNwYWNlZCBwYXRoXG4gKiBAcmV0dXJucyBUaGUgcmVzb2x2ZWQgbmFtZXNwYWNlZCBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b05hbWVzcGFjZWRQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIE5vdGU6IHRoaXMgd2lsbCAqcHJvYmFibHkqIHRocm93IHNvbWV3aGVyZS5cbiAgaWYgKHR5cGVvZiBwYXRoICE9PSBcInN0cmluZ1wiKSByZXR1cm4gcGF0aDtcbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSByZXR1cm4gXCJcIjtcblxuICBjb25zdCByZXNvbHZlZFBhdGggPSByZXNvbHZlKHBhdGgpO1xuXG4gIGlmIChyZXNvbHZlZFBhdGgubGVuZ3RoID49IDMpIHtcbiAgICBpZiAocmVzb2x2ZWRQYXRoLmNoYXJDb2RlQXQoMCkgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHtcbiAgICAgIC8vIFBvc3NpYmxlIFVOQyByb290XG5cbiAgICAgIGlmIChyZXNvbHZlZFBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkge1xuICAgICAgICBjb25zdCBjb2RlID0gcmVzb2x2ZWRQYXRoLmNoYXJDb2RlQXQoMik7XG4gICAgICAgIGlmIChjb2RlICE9PSBDSEFSX1FVRVNUSU9OX01BUksgJiYgY29kZSAhPT0gQ0hBUl9ET1QpIHtcbiAgICAgICAgICAvLyBNYXRjaGVkIG5vbi1sb25nIFVOQyByb290LCBjb252ZXJ0IHRoZSBwYXRoIHRvIGEgbG9uZyBVTkMgcGF0aFxuICAgICAgICAgIHJldHVybiBgXFxcXFxcXFw/XFxcXFVOQ1xcXFwke3Jlc29sdmVkUGF0aC5zbGljZSgyKX1gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KHJlc29sdmVkUGF0aC5jaGFyQ29kZUF0KDApKSkge1xuICAgICAgLy8gUG9zc2libGUgZGV2aWNlIHJvb3RcblxuICAgICAgaWYgKFxuICAgICAgICByZXNvbHZlZFBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9DT0xPTiAmJlxuICAgICAgICByZXNvbHZlZFBhdGguY2hhckNvZGVBdCgyKSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSFxuICAgICAgKSB7XG4gICAgICAgIC8vIE1hdGNoZWQgZGV2aWNlIHJvb3QsIGNvbnZlcnQgdGhlIHBhdGggdG8gYSBsb25nIFVOQyBwYXRoXG4gICAgICAgIHJldHVybiBgXFxcXFxcXFw/XFxcXCR7cmVzb2x2ZWRQYXRofWA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhdGg7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQyxTQUNFLG1CQUFtQixFQUNuQixVQUFVLEVBQ1YsUUFBUSxFQUNSLGtCQUFrQixRQUNiLDBCQUEwQjtBQUNqQyxTQUFTLG1CQUFtQixRQUFRLGFBQWE7QUFDakQsU0FBUyxPQUFPLFFBQVEsZUFBZTtBQUV2Qzs7Ozs7Ozs7Ozs7Ozs7Q0FjQyxHQUNELE9BQU8sU0FBUyxpQkFBaUIsSUFBWTtFQUMzQyw4Q0FBOEM7RUFDOUMsSUFBSSxPQUFPLFNBQVMsVUFBVSxPQUFPO0VBQ3JDLElBQUksS0FBSyxNQUFNLEtBQUssR0FBRyxPQUFPO0VBRTlCLE1BQU0sZUFBZSxRQUFRO0VBRTdCLElBQUksYUFBYSxNQUFNLElBQUksR0FBRztJQUM1QixJQUFJLGFBQWEsVUFBVSxDQUFDLE9BQU8scUJBQXFCO01BQ3RELG9CQUFvQjtNQUVwQixJQUFJLGFBQWEsVUFBVSxDQUFDLE9BQU8scUJBQXFCO1FBQ3RELE1BQU0sT0FBTyxhQUFhLFVBQVUsQ0FBQztRQUNyQyxJQUFJLFNBQVMsc0JBQXNCLFNBQVMsVUFBVTtVQUNwRCxpRUFBaUU7VUFDakUsT0FBTyxDQUFDLFlBQVksRUFBRSxhQUFhLEtBQUssQ0FBQyxJQUFJO1FBQy9DO01BQ0Y7SUFDRixPQUFPLElBQUksb0JBQW9CLGFBQWEsVUFBVSxDQUFDLEtBQUs7TUFDMUQsdUJBQXVCO01BRXZCLElBQ0UsYUFBYSxVQUFVLENBQUMsT0FBTyxjQUMvQixhQUFhLFVBQVUsQ0FBQyxPQUFPLHFCQUMvQjtRQUNBLDJEQUEyRDtRQUMzRCxPQUFPLENBQUMsT0FBTyxFQUFFLGNBQWM7TUFDakM7SUFDRjtFQUNGO0VBRUEsT0FBTztBQUNUIn0= +// denoCacheMetadata=14631925446712950543,8746898558176197145
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/98f62dcda1e98ade7b8eec4fa4b9b5c664c1069ca223bcc2b5a93805f0e97884.js b/vendor/gen/https/jsr.io/98f62dcda1e98ade7b8eec4fa4b9b5c664c1069ca223bcc2b5a93805f0e97884.js new file mode 100644 index 0000000..27538d3 --- /dev/null +++ b/vendor/gen/https/jsr.io/98f62dcda1e98ade7b8eec4fa4b9b5c664c1069ca223bcc2b5a93805f0e97884.js @@ -0,0 +1,13 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +/** + * The character used to separate entries in the PATH environment variable. + */ export const DELIMITER = ":"; +/** + * The character used to separate components of a file path. + */ export const SEPARATOR = "/"; +/** + * A regular expression that matches one or more path separators. + */ export const SEPARATOR_PATTERN = /\/+/; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9wb3NpeC9jb25zdGFudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuLyoqXG4gKiBUaGUgY2hhcmFjdGVyIHVzZWQgdG8gc2VwYXJhdGUgZW50cmllcyBpbiB0aGUgUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAqL1xuZXhwb3J0IGNvbnN0IERFTElNSVRFUiA9IFwiOlwiIGFzIGNvbnN0O1xuLyoqXG4gKiBUaGUgY2hhcmFjdGVyIHVzZWQgdG8gc2VwYXJhdGUgY29tcG9uZW50cyBvZiBhIGZpbGUgcGF0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNFUEFSQVRPUiA9IFwiL1wiIGFzIGNvbnN0O1xuLyoqXG4gKiBBIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IG1hdGNoZXMgb25lIG9yIG1vcmUgcGF0aCBzZXBhcmF0b3JzLlxuICovXG5leHBvcnQgY29uc3QgU0VQQVJBVE9SX1BBVFRFUk4gPSAvXFwvKy87XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQzs7Q0FFQyxHQUNELE9BQU8sTUFBTSxZQUFZLElBQWE7QUFDdEM7O0NBRUMsR0FDRCxPQUFPLE1BQU0sWUFBWSxJQUFhO0FBQ3RDOztDQUVDLEdBQ0QsT0FBTyxNQUFNLG9CQUFvQixNQUFNIn0= +// denoCacheMetadata=9738949877297730477,13665888715184974858
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/992b4d94d2181a6ea0f6ca6443106d10e641b5198e04d0a84f446c0485f86a3b.js b/vendor/gen/https/jsr.io/992b4d94d2181a6ea0f6ca6443106d10e641b5198e04d0a84f446c0485f86a3b.js new file mode 100644 index 0000000..cc482fa --- /dev/null +++ b/vendor/gen/https/jsr.io/992b4d94d2181a6ea0f6ca6443106d10e641b5198e04d0a84f446c0485f86a3b.js @@ -0,0 +1,102 @@ +// Ported from js-yaml v3.13.1: +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2018-2025 the Deno authors. MIT license. +// [ 64, 65, 66 ] -> [ padding, CR, LF ] +const BASE64_MAP = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r"; +function resolveYamlBinary(data) { + if (data === null) return false; + let code; + let bitlen = 0; + const max = data.length; + const map = BASE64_MAP; + // Convert one by one. + for(let idx = 0; idx < max; idx++){ + code = map.indexOf(data.charAt(idx)); + // Skip CR/LF + if (code > 64) continue; + // Fail on illegal characters + if (code < 0) return false; + bitlen += 6; + } + // If there are any bits left, source was corrupted + return bitlen % 8 === 0; +} +function constructYamlBinary(data) { + // remove CR/LF & padding to simplify scan + const input = data.replace(/[\r\n=]/g, ""); + const max = input.length; + const map = BASE64_MAP; + // Collect by 6*4 bits (3 bytes) + const result = []; + let bits = 0; + for(let idx = 0; idx < max; idx++){ + if (idx % 4 === 0 && idx) { + result.push(bits >> 16 & 0xff); + result.push(bits >> 8 & 0xff); + result.push(bits & 0xff); + } + bits = bits << 6 | map.indexOf(input.charAt(idx)); + } + // Dump tail + const tailbits = max % 4 * 6; + if (tailbits === 0) { + result.push(bits >> 16 & 0xff); + result.push(bits >> 8 & 0xff); + result.push(bits & 0xff); + } else if (tailbits === 18) { + result.push(bits >> 10 & 0xff); + result.push(bits >> 2 & 0xff); + } else if (tailbits === 12) { + result.push(bits >> 4 & 0xff); + } + return new Uint8Array(result); +} +function representYamlBinary(object) { + const max = object.length; + const map = BASE64_MAP; + // Convert every three bytes to 4 ASCII characters. + let result = ""; + let bits = 0; + for(let idx = 0; idx < max; idx++){ + if (idx % 3 === 0 && idx) { + result += map[bits >> 18 & 0x3f]; + result += map[bits >> 12 & 0x3f]; + result += map[bits >> 6 & 0x3f]; + result += map[bits & 0x3f]; + } + bits = (bits << 8) + object[idx]; + } + // Dump tail + const tail = max % 3; + if (tail === 0) { + result += map[bits >> 18 & 0x3f]; + result += map[bits >> 12 & 0x3f]; + result += map[bits >> 6 & 0x3f]; + result += map[bits & 0x3f]; + } else if (tail === 2) { + result += map[bits >> 10 & 0x3f]; + result += map[bits >> 4 & 0x3f]; + result += map[bits << 2 & 0x3f]; + result += map[64]; + } else if (tail === 1) { + result += map[bits >> 2 & 0x3f]; + result += map[bits << 4 & 0x3f]; + result += map[64]; + result += map[64]; + } + return result; +} +function isBinary(obj) { + return obj instanceof Uint8Array; +} +export const binary = { + tag: "tag:yaml.org,2002:binary", + construct: constructYamlBinary, + kind: "scalar", + predicate: isBinary, + represent: representYamlBinary, + resolve: resolveYamlBinary +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQveWFtbC8xLjAuNi9fdHlwZS9iaW5hcnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUG9ydGVkIGZyb20ganMteWFtbCB2My4xMy4xOlxuLy8gQ29weXJpZ2h0IDIwMTEtMjAxNSBieSBWaXRhbHkgUHV6cmluLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvanMteWFtbC9jb21taXQvNjY1YWFkZGE0MjM0OWRjYWU4NjlmMTIwNDBkOWIxMGVmMThkMTJkYVxuLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbmltcG9ydCB0eXBlIHsgVHlwZSB9IGZyb20gXCIuLi9fdHlwZS50c1wiO1xuXG4vLyBbIDY0LCA2NSwgNjYgXSAtPiBbIHBhZGRpbmcsIENSLCBMRiBdXG5jb25zdCBCQVNFNjRfTUFQID1cbiAgXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPVxcblxcclwiO1xuXG5mdW5jdGlvbiByZXNvbHZlWWFtbEJpbmFyeShkYXRhOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICBsZXQgY29kZTogbnVtYmVyO1xuICBsZXQgYml0bGVuID0gMDtcbiAgY29uc3QgbWF4ID0gZGF0YS5sZW5ndGg7XG4gIGNvbnN0IG1hcCA9IEJBU0U2NF9NQVA7XG5cbiAgLy8gQ29udmVydCBvbmUgYnkgb25lLlxuICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCBtYXg7IGlkeCsrKSB7XG4gICAgY29kZSA9IG1hcC5pbmRleE9mKGRhdGEuY2hhckF0KGlkeCkpO1xuXG4gICAgLy8gU2tpcCBDUi9MRlxuICAgIGlmIChjb2RlID4gNjQpIGNvbnRpbnVlO1xuXG4gICAgLy8gRmFpbCBvbiBpbGxlZ2FsIGNoYXJhY3RlcnNcbiAgICBpZiAoY29kZSA8IDApIHJldHVybiBmYWxzZTtcblxuICAgIGJpdGxlbiArPSA2O1xuICB9XG5cbiAgLy8gSWYgdGhlcmUgYXJlIGFueSBiaXRzIGxlZnQsIHNvdXJjZSB3YXMgY29ycnVwdGVkXG4gIHJldHVybiBiaXRsZW4gJSA4ID09PSAwO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sQmluYXJ5KGRhdGE6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICAvLyByZW1vdmUgQ1IvTEYgJiBwYWRkaW5nIHRvIHNpbXBsaWZ5IHNjYW5cbiAgY29uc3QgaW5wdXQgPSBkYXRhLnJlcGxhY2UoL1tcXHJcXG49XS9nLCBcIlwiKTtcbiAgY29uc3QgbWF4ID0gaW5wdXQubGVuZ3RoO1xuICBjb25zdCBtYXAgPSBCQVNFNjRfTUFQO1xuXG4gIC8vIENvbGxlY3QgYnkgNio0IGJpdHMgKDMgYnl0ZXMpXG5cbiAgY29uc3QgcmVzdWx0ID0gW107XG4gIGxldCBiaXRzID0gMDtcbiAgZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgbWF4OyBpZHgrKykge1xuICAgIGlmIChpZHggJSA0ID09PSAwICYmIGlkeCkge1xuICAgICAgcmVzdWx0LnB1c2goKGJpdHMgPj4gMTYpICYgMHhmZik7XG4gICAgICByZXN1bHQucHVzaCgoYml0cyA+PiA4KSAmIDB4ZmYpO1xuICAgICAgcmVzdWx0LnB1c2goYml0cyAmIDB4ZmYpO1xuICAgIH1cblxuICAgIGJpdHMgPSAoYml0cyA8PCA2KSB8IG1hcC5pbmRleE9mKGlucHV0LmNoYXJBdChpZHgpKTtcbiAgfVxuXG4gIC8vIER1bXAgdGFpbFxuXG4gIGNvbnN0IHRhaWxiaXRzID0gKG1heCAlIDQpICogNjtcblxuICBpZiAodGFpbGJpdHMgPT09IDApIHtcbiAgICByZXN1bHQucHVzaCgoYml0cyA+PiAxNikgJiAweGZmKTtcbiAgICByZXN1bHQucHVzaCgoYml0cyA+PiA4KSAmIDB4ZmYpO1xuICAgIHJlc3VsdC5wdXNoKGJpdHMgJiAweGZmKTtcbiAgfSBlbHNlIGlmICh0YWlsYml0cyA9PT0gMTgpIHtcbiAgICByZXN1bHQucHVzaCgoYml0cyA+PiAxMCkgJiAweGZmKTtcbiAgICByZXN1bHQucHVzaCgoYml0cyA+PiAyKSAmIDB4ZmYpO1xuICB9IGVsc2UgaWYgKHRhaWxiaXRzID09PSAxMikge1xuICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDQpICYgMHhmZik7XG4gIH1cblxuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkocmVzdWx0KTtcbn1cblxuZnVuY3Rpb24gcmVwcmVzZW50WWFtbEJpbmFyeShvYmplY3Q6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICBjb25zdCBtYXggPSBvYmplY3QubGVuZ3RoO1xuICBjb25zdCBtYXAgPSBCQVNFNjRfTUFQO1xuXG4gIC8vIENvbnZlcnQgZXZlcnkgdGhyZWUgYnl0ZXMgdG8gNCBBU0NJSSBjaGFyYWN0ZXJzLlxuXG4gIGxldCByZXN1bHQgPSBcIlwiO1xuICBsZXQgYml0cyA9IDA7XG4gIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IG1heDsgaWR4KyspIHtcbiAgICBpZiAoaWR4ICUgMyA9PT0gMCAmJiBpZHgpIHtcbiAgICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gMTgpICYgMHgzZl07XG4gICAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDEyKSAmIDB4M2ZdO1xuICAgICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiA2KSAmIDB4M2ZdO1xuICAgICAgcmVzdWx0ICs9IG1hcFtiaXRzICYgMHgzZl07XG4gICAgfVxuXG4gICAgYml0cyA9IChiaXRzIDw8IDgpICsgb2JqZWN0W2lkeF0hO1xuICB9XG5cbiAgLy8gRHVtcCB0YWlsXG5cbiAgY29uc3QgdGFpbCA9IG1heCAlIDM7XG5cbiAgaWYgKHRhaWwgPT09IDApIHtcbiAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDE4KSAmIDB4M2ZdO1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gMTIpICYgMHgzZl07XG4gICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiA2KSAmIDB4M2ZdO1xuICAgIHJlc3VsdCArPSBtYXBbYml0cyAmIDB4M2ZdO1xuICB9IGVsc2UgaWYgKHRhaWwgPT09IDIpIHtcbiAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDEwKSAmIDB4M2ZdO1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gNCkgJiAweDNmXTtcbiAgICByZXN1bHQgKz0gbWFwWyhiaXRzIDw8IDIpICYgMHgzZl07XG4gICAgcmVzdWx0ICs9IG1hcFs2NF07XG4gIH0gZWxzZSBpZiAodGFpbCA9PT0gMSkge1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gMikgJiAweDNmXTtcbiAgICByZXN1bHQgKz0gbWFwWyhiaXRzIDw8IDQpICYgMHgzZl07XG4gICAgcmVzdWx0ICs9IG1hcFs2NF07XG4gICAgcmVzdWx0ICs9IG1hcFs2NF07XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gaXNCaW5hcnkob2JqOiB1bmtub3duKTogb2JqIGlzIFVpbnQ4QXJyYXkge1xuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgVWludDhBcnJheTtcbn1cblxuZXhwb3J0IGNvbnN0IGJpbmFyeTogVHlwZTxcInNjYWxhclwiLCBVaW50OEFycmF5PiA9IHtcbiAgdGFnOiBcInRhZzp5YW1sLm9yZywyMDAyOmJpbmFyeVwiLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxCaW5hcnksXG4gIGtpbmQ6IFwic2NhbGFyXCIsXG4gIHByZWRpY2F0ZTogaXNCaW5hcnksXG4gIHJlcHJlc2VudDogcmVwcmVzZW50WWFtbEJpbmFyeSxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxCaW5hcnksXG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQiwwRUFBMEU7QUFDMUUsb0ZBQW9GO0FBQ3BGLHFEQUFxRDtBQUdyRCx3Q0FBd0M7QUFDeEMsTUFBTSxhQUNKO0FBRUYsU0FBUyxrQkFBa0IsSUFBWTtFQUNyQyxJQUFJLFNBQVMsTUFBTSxPQUFPO0VBRTFCLElBQUk7RUFDSixJQUFJLFNBQVM7RUFDYixNQUFNLE1BQU0sS0FBSyxNQUFNO0VBQ3ZCLE1BQU0sTUFBTTtFQUVaLHNCQUFzQjtFQUN0QixJQUFLLElBQUksTUFBTSxHQUFHLE1BQU0sS0FBSyxNQUFPO0lBQ2xDLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxNQUFNLENBQUM7SUFFL0IsYUFBYTtJQUNiLElBQUksT0FBTyxJQUFJO0lBRWYsNkJBQTZCO0lBQzdCLElBQUksT0FBTyxHQUFHLE9BQU87SUFFckIsVUFBVTtFQUNaO0VBRUEsbURBQW1EO0VBQ25ELE9BQU8sU0FBUyxNQUFNO0FBQ3hCO0FBRUEsU0FBUyxvQkFBb0IsSUFBWTtFQUN2QywwQ0FBMEM7RUFDMUMsTUFBTSxRQUFRLEtBQUssT0FBTyxDQUFDLFlBQVk7RUFDdkMsTUFBTSxNQUFNLE1BQU0sTUFBTTtFQUN4QixNQUFNLE1BQU07RUFFWixnQ0FBZ0M7RUFFaEMsTUFBTSxTQUFTLEVBQUU7RUFDakIsSUFBSSxPQUFPO0VBQ1gsSUFBSyxJQUFJLE1BQU0sR0FBRyxNQUFNLEtBQUssTUFBTztJQUNsQyxJQUFJLE1BQU0sTUFBTSxLQUFLLEtBQUs7TUFDeEIsT0FBTyxJQUFJLENBQUMsQUFBQyxRQUFRLEtBQU07TUFDM0IsT0FBTyxJQUFJLENBQUMsQUFBQyxRQUFRLElBQUs7TUFDMUIsT0FBTyxJQUFJLENBQUMsT0FBTztJQUNyQjtJQUVBLE9BQU8sQUFBQyxRQUFRLElBQUssSUFBSSxPQUFPLENBQUMsTUFBTSxNQUFNLENBQUM7RUFDaEQ7RUFFQSxZQUFZO0VBRVosTUFBTSxXQUFXLEFBQUMsTUFBTSxJQUFLO0VBRTdCLElBQUksYUFBYSxHQUFHO0lBQ2xCLE9BQU8sSUFBSSxDQUFDLEFBQUMsUUFBUSxLQUFNO0lBQzNCLE9BQU8sSUFBSSxDQUFDLEFBQUMsUUFBUSxJQUFLO0lBQzFCLE9BQU8sSUFBSSxDQUFDLE9BQU87RUFDckIsT0FBTyxJQUFJLGFBQWEsSUFBSTtJQUMxQixPQUFPLElBQUksQ0FBQyxBQUFDLFFBQVEsS0FBTTtJQUMzQixPQUFPLElBQUksQ0FBQyxBQUFDLFFBQVEsSUFBSztFQUM1QixPQUFPLElBQUksYUFBYSxJQUFJO0lBQzFCLE9BQU8sSUFBSSxDQUFDLEFBQUMsUUFBUSxJQUFLO0VBQzVCO0VBRUEsT0FBTyxJQUFJLFdBQVc7QUFDeEI7QUFFQSxTQUFTLG9CQUFvQixNQUFrQjtFQUM3QyxNQUFNLE1BQU0sT0FBTyxNQUFNO0VBQ3pCLE1BQU0sTUFBTTtFQUVaLG1EQUFtRDtFQUVuRCxJQUFJLFNBQVM7RUFDYixJQUFJLE9BQU87RUFDWCxJQUFLLElBQUksTUFBTSxHQUFHLE1BQU0sS0FBSyxNQUFPO0lBQ2xDLElBQUksTUFBTSxNQUFNLEtBQUssS0FBSztNQUN4QixVQUFVLEdBQUcsQ0FBQyxBQUFDLFFBQVEsS0FBTSxLQUFLO01BQ2xDLFVBQVUsR0FBRyxDQUFDLEFBQUMsUUFBUSxLQUFNLEtBQUs7TUFDbEMsVUFBVSxHQUFHLENBQUMsQUFBQyxRQUFRLElBQUssS0FBSztNQUNqQyxVQUFVLEdBQUcsQ0FBQyxPQUFPLEtBQUs7SUFDNUI7SUFFQSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUk7RUFDbEM7RUFFQSxZQUFZO0VBRVosTUFBTSxPQUFPLE1BQU07RUFFbkIsSUFBSSxTQUFTLEdBQUc7SUFDZCxVQUFVLEdBQUcsQ0FBQyxBQUFDLFFBQVEsS0FBTSxLQUFLO0lBQ2xDLFVBQVUsR0FBRyxDQUFDLEFBQUMsUUFBUSxLQUFNLEtBQUs7SUFDbEMsVUFBVSxHQUFHLENBQUMsQUFBQyxRQUFRLElBQUssS0FBSztJQUNqQyxVQUFVLEdBQUcsQ0FBQyxPQUFPLEtBQUs7RUFDNUIsT0FBTyxJQUFJLFNBQVMsR0FBRztJQUNyQixVQUFVLEdBQUcsQ0FBQyxBQUFDLFFBQVEsS0FBTSxLQUFLO0lBQ2xDLFVBQVUsR0FBRyxDQUFDLEFBQUMsUUFBUSxJQUFLLEtBQUs7SUFDakMsVUFBVSxHQUFHLENBQUMsQUFBQyxRQUFRLElBQUssS0FBSztJQUNqQyxVQUFVLEdBQUcsQ0FBQyxHQUFHO0VBQ25CLE9BQU8sSUFBSSxTQUFTLEdBQUc7SUFDckIsVUFBVSxHQUFHLENBQUMsQUFBQyxRQUFRLElBQUssS0FBSztJQUNqQyxVQUFVLEdBQUcsQ0FBQyxBQUFDLFFBQVEsSUFBSyxLQUFLO0lBQ2pDLFVBQVUsR0FBRyxDQUFDLEdBQUc7SUFDakIsVUFBVSxHQUFHLENBQUMsR0FBRztFQUNuQjtFQUVBLE9BQU87QUFDVDtBQUNBLFNBQVMsU0FBUyxHQUFZO0VBQzVCLE9BQU8sZUFBZTtBQUN4QjtBQUVBLE9BQU8sTUFBTSxTQUFxQztFQUNoRCxLQUFLO0VBQ0wsV0FBVztFQUNYLE1BQU07RUFDTixXQUFXO0VBQ1gsV0FBVztFQUNYLFNBQVM7QUFDWCxFQUFFIn0= +// denoCacheMetadata=951669027442543421,8278982904742192468
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/9a5768f12c3d5486b6a5324e94c9a06da3c138ecae2dedb72cbe0c0c86912157.js b/vendor/gen/https/jsr.io/9a5768f12c3d5486b6a5324e94c9a06da3c138ecae2dedb72cbe0c0c86912157.js new file mode 100644 index 0000000..1fbf33f --- /dev/null +++ b/vendor/gen/https/jsr.io/9a5768f12c3d5486b6a5324e94c9a06da3c138ecae2dedb72cbe0c0c86912157.js @@ -0,0 +1,35 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { encodeWhitespace } from "../_common/to_file_url.ts"; +import { isAbsolute } from "./is_absolute.ts"; +/** + * Converts a path string to a file URL. + * + * @example Usage + * ```ts + * import { toFileUrl } from "@std/path/windows/to-file-url"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(toFileUrl("\\home\\foo"), new URL("file:///home/foo")); + * assertEquals(toFileUrl("C:\\Users\\foo"), new URL("file:///C:/Users/foo")); + * assertEquals(toFileUrl("\\\\127.0.0.1\\home\\foo"), new URL("file://127.0.0.1/home/foo")); + * ``` + * @param path The path to convert. + * @returns The file URL. + */ export function toFileUrl(path) { + if (!isAbsolute(path)) { + throw new TypeError(`Path must be absolute: received "${path}"`); + } + const [, hostname, pathname] = path.match(/^(?:[/\\]{2}([^/\\]+)(?=[/\\](?:[^/\\]|$)))?(.*)/); + const url = new URL("file:///"); + url.pathname = encodeWhitespace(pathname.replace(/%/g, "%25")); + if (hostname !== undefined && hostname !== "localhost") { + url.hostname = hostname; + if (!url.hostname) { + throw new TypeError(`Invalid hostname: "${url.hostname}"`); + } + } + return url; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS93aW5kb3dzL3RvX2ZpbGVfdXJsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGVuY29kZVdoaXRlc3BhY2UgfSBmcm9tIFwiLi4vX2NvbW1vbi90b19maWxlX3VybC50c1wiO1xuaW1wb3J0IHsgaXNBYnNvbHV0ZSB9IGZyb20gXCIuL2lzX2Fic29sdXRlLnRzXCI7XG5cbi8qKlxuICogQ29udmVydHMgYSBwYXRoIHN0cmluZyB0byBhIGZpbGUgVVJMLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgdG9GaWxlVXJsIH0gZnJvbSBcIkBzdGQvcGF0aC93aW5kb3dzL3RvLWZpbGUtdXJsXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHModG9GaWxlVXJsKFwiXFxcXGhvbWVcXFxcZm9vXCIpLCBuZXcgVVJMKFwiZmlsZTovLy9ob21lL2Zvb1wiKSk7XG4gKiBhc3NlcnRFcXVhbHModG9GaWxlVXJsKFwiQzpcXFxcVXNlcnNcXFxcZm9vXCIpLCBuZXcgVVJMKFwiZmlsZTovLy9DOi9Vc2Vycy9mb29cIikpO1xuICogYXNzZXJ0RXF1YWxzKHRvRmlsZVVybChcIlxcXFxcXFxcMTI3LjAuMC4xXFxcXGhvbWVcXFxcZm9vXCIpLCBuZXcgVVJMKFwiZmlsZTovLzEyNy4wLjAuMS9ob21lL2Zvb1wiKSk7XG4gKiBgYGBcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBUaGUgZmlsZSBVUkwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0ZpbGVVcmwocGF0aDogc3RyaW5nKTogVVJMIHtcbiAgaWYgKCFpc0Fic29sdXRlKHBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUGF0aCBtdXN0IGJlIGFic29sdXRlOiByZWNlaXZlZCBcIiR7cGF0aH1cImApO1xuICB9XG4gIGNvbnN0IFssIGhvc3RuYW1lLCBwYXRobmFtZV0gPSBwYXRoLm1hdGNoKFxuICAgIC9eKD86Wy9cXFxcXXsyfShbXi9cXFxcXSspKD89Wy9cXFxcXSg/OlteL1xcXFxdfCQpKSk/KC4qKS8sXG4gICkhO1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKFwiZmlsZTovLy9cIik7XG4gIHVybC5wYXRobmFtZSA9IGVuY29kZVdoaXRlc3BhY2UocGF0aG5hbWUhLnJlcGxhY2UoLyUvZywgXCIlMjVcIikpO1xuICBpZiAoaG9zdG5hbWUgIT09IHVuZGVmaW5lZCAmJiBob3N0bmFtZSAhPT0gXCJsb2NhbGhvc3RcIikge1xuICAgIHVybC5ob3N0bmFtZSA9IGhvc3RuYW1lO1xuICAgIGlmICghdXJsLmhvc3RuYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBJbnZhbGlkIGhvc3RuYW1lOiBcIiR7dXJsLmhvc3RuYW1lfVwiYCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB1cmw7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQyxTQUFTLGdCQUFnQixRQUFRLDRCQUE0QjtBQUM3RCxTQUFTLFVBQVUsUUFBUSxtQkFBbUI7QUFFOUM7Ozs7Ozs7Ozs7Ozs7O0NBY0MsR0FDRCxPQUFPLFNBQVMsVUFBVSxJQUFZO0VBQ3BDLElBQUksQ0FBQyxXQUFXLE9BQU87SUFDckIsTUFBTSxJQUFJLFVBQVUsQ0FBQyxpQ0FBaUMsRUFBRSxLQUFLLENBQUMsQ0FBQztFQUNqRTtFQUNBLE1BQU0sR0FBRyxVQUFVLFNBQVMsR0FBRyxLQUFLLEtBQUssQ0FDdkM7RUFFRixNQUFNLE1BQU0sSUFBSSxJQUFJO0VBQ3BCLElBQUksUUFBUSxHQUFHLGlCQUFpQixTQUFVLE9BQU8sQ0FBQyxNQUFNO0VBQ3hELElBQUksYUFBYSxhQUFhLGFBQWEsYUFBYTtJQUN0RCxJQUFJLFFBQVEsR0FBRztJQUNmLElBQUksQ0FBQyxJQUFJLFFBQVEsRUFBRTtNQUNqQixNQUFNLElBQUksVUFBVSxDQUFDLG1CQUFtQixFQUFFLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMzRDtFQUNGO0VBQ0EsT0FBTztBQUNUIn0= +// denoCacheMetadata=3227129872462315296,10480969667969707814
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/9b021aa9d7accb3c15a3433f842c97639b9bd91dbd9be7fba09c9d099164fee6.js b/vendor/gen/https/jsr.io/9b021aa9d7accb3c15a3433f842c97639b9bd91dbd9be7fba09c9d099164fee6.js new file mode 100644 index 0000000..b11d6c1 --- /dev/null +++ b/vendor/gen/https/jsr.io/9b021aa9d7accb3c15a3433f842c97639b9bd91dbd9be7fba09c9d099164fee6.js @@ -0,0 +1,15 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// Copyright the Browserify authors. MIT License. +/** + * Get a human readable file type string. + * + * @param file File information, as returned by {@linkcode Deno.stat} or + * {@linkcode Deno.lstat}. + * + * @returns The file type as a string, or `undefined` if the file type is + * unknown. + */ export function getFileInfoType(fileInfo) { + return fileInfo.isFile ? "file" : fileInfo.isDirectory ? "dir" : fileInfo.isSymlink ? "symlink" : undefined; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnMvMS4wLjE3L19nZXRfZmlsZV9pbmZvX3R5cGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cblxuZXhwb3J0IHR5cGUgUGF0aFR5cGUgPSBcImZpbGVcIiB8IFwiZGlyXCIgfCBcInN5bWxpbmtcIjtcblxuLyoqXG4gKiBHZXQgYSBodW1hbiByZWFkYWJsZSBmaWxlIHR5cGUgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBmaWxlIEZpbGUgaW5mb3JtYXRpb24sIGFzIHJldHVybmVkIGJ5IHtAbGlua2NvZGUgRGVuby5zdGF0fSBvclxuICoge0BsaW5rY29kZSBEZW5vLmxzdGF0fS5cbiAqXG4gKiBAcmV0dXJucyBUaGUgZmlsZSB0eXBlIGFzIGEgc3RyaW5nLCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgZmlsZSB0eXBlIGlzXG4gKiB1bmtub3duLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZUluZm9UeXBlKGZpbGVJbmZvOiBEZW5vLkZpbGVJbmZvKTogUGF0aFR5cGUgfCB1bmRlZmluZWQge1xuICByZXR1cm4gZmlsZUluZm8uaXNGaWxlXG4gICAgPyBcImZpbGVcIlxuICAgIDogZmlsZUluZm8uaXNEaXJlY3RvcnlcbiAgICA/IFwiZGlyXCJcbiAgICA6IGZpbGVJbmZvLmlzU3ltbGlua1xuICAgID8gXCJzeW1saW5rXCJcbiAgICA6IHVuZGVmaW5lZDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQsaURBQWlEO0FBSWpEOzs7Ozs7OztDQVFDLEdBQ0QsT0FBTyxTQUFTLGdCQUFnQixRQUF1QjtFQUNyRCxPQUFPLFNBQVMsTUFBTSxHQUNsQixTQUNBLFNBQVMsV0FBVyxHQUNwQixRQUNBLFNBQVMsU0FBUyxHQUNsQixZQUNBO0FBQ04ifQ== +// denoCacheMetadata=12441232959464199775,8145133913644284989
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/9e70c413dd22ed24e5ae6d305c9d42c1eb39670785101b4ffc7fceafa1f7797e.js b/vendor/gen/https/jsr.io/9e70c413dd22ed24e5ae6d305c9d42c1eb39670785101b4ffc7fceafa1f7797e.js new file mode 100644 index 0000000..adf0b43 --- /dev/null +++ b/vendor/gen/https/jsr.io/9e70c413dd22ed24e5ae6d305c9d42c1eb39670785101b4ffc7fceafa1f7797e.js @@ -0,0 +1,46 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +/** + * Test whether the given string is a glob. + * + * @example Usage + * ```ts + * import { isGlob } from "@std/path/is-glob"; + * import { assert } from "@std/assert"; + * + * assert(!isGlob("foo/bar/../baz")); + * assert(isGlob("foo/*ar/../baz")); + * ``` + * + * @param str String to test. + * @returns `true` if the given string is a glob, otherwise `false` + */ export function isGlob(str) { + const chars = { + "{": "}", + "(": ")", + "[": "]" + }; + const regex = /\\(.)|(^!|\*|\?|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/; + if (str === "") { + return false; + } + let match; + while(match = regex.exec(str)){ + if (match[2]) return true; + let idx = match.index + match[0].length; + // if an open bracket/brace/paren is escaped, + // set the index to the next closing character + const open = match[1]; + const close = open ? chars[open] : null; + if (open && close) { + const n = str.indexOf(close, idx); + if (n !== -1) { + idx = n + 1; + } + } + str = str.slice(idx); + } + return false; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9pc19nbG9iLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbi8qKlxuICogVGVzdCB3aGV0aGVyIHRoZSBnaXZlbiBzdHJpbmcgaXMgYSBnbG9iLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgaXNHbG9iIH0gZnJvbSBcIkBzdGQvcGF0aC9pcy1nbG9iXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnQoIWlzR2xvYihcImZvby9iYXIvLi4vYmF6XCIpKTtcbiAqIGFzc2VydChpc0dsb2IoXCJmb28vKmFyLy4uL2JhelwiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIFN0cmluZyB0byB0ZXN0LlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgYSBnbG9iLCBvdGhlcndpc2UgYGZhbHNlYFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNHbG9iKHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNoYXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geyBcIntcIjogXCJ9XCIsIFwiKFwiOiBcIilcIiwgXCJbXCI6IFwiXVwiIH07XG4gIGNvbnN0IHJlZ2V4ID1cbiAgICAvXFxcXCguKXwoXiF8XFwqfFxcP3xbXFxdLispXVxcP3xcXFtbXlxcXFxcXF1dK1xcXXxcXHtbXlxcXFx9XStcXH18XFwoXFw/WzohPV1bXlxcXFwpXStcXCl8XFwoW158XStcXHxbXlxcXFwpXStcXCkpLztcblxuICBpZiAoc3RyID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbGV0IG1hdGNoOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsO1xuXG4gIHdoaWxlICgobWF0Y2ggPSByZWdleC5leGVjKHN0cikpKSB7XG4gICAgaWYgKG1hdGNoWzJdKSByZXR1cm4gdHJ1ZTtcbiAgICBsZXQgaWR4ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XG5cbiAgICAvLyBpZiBhbiBvcGVuIGJyYWNrZXQvYnJhY2UvcGFyZW4gaXMgZXNjYXBlZCxcbiAgICAvLyBzZXQgdGhlIGluZGV4IHRvIHRoZSBuZXh0IGNsb3NpbmcgY2hhcmFjdGVyXG4gICAgY29uc3Qgb3BlbiA9IG1hdGNoWzFdO1xuICAgIGNvbnN0IGNsb3NlID0gb3BlbiA/IGNoYXJzW29wZW5dIDogbnVsbDtcbiAgICBpZiAob3BlbiAmJiBjbG9zZSkge1xuICAgICAgY29uc3QgbiA9IHN0ci5pbmRleE9mKGNsb3NlLCBpZHgpO1xuICAgICAgaWYgKG4gIT09IC0xKSB7XG4gICAgICAgIGlkeCA9IG4gKyAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHN0ciA9IHN0ci5zbGljZShpZHgpO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxxQ0FBcUM7QUFFckM7Ozs7Ozs7Ozs7Ozs7O0NBY0MsR0FDRCxPQUFPLFNBQVMsT0FBTyxHQUFXO0VBQ2hDLE1BQU0sUUFBZ0M7SUFBRSxLQUFLO0lBQUssS0FBSztJQUFLLEtBQUs7RUFBSTtFQUNyRSxNQUFNLFFBQ0o7RUFFRixJQUFJLFFBQVEsSUFBSTtJQUNkLE9BQU87RUFDVDtFQUVBLElBQUk7RUFFSixNQUFRLFFBQVEsTUFBTSxJQUFJLENBQUMsS0FBTztJQUNoQyxJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTztJQUNyQixJQUFJLE1BQU0sTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNO0lBRXZDLDZDQUE2QztJQUM3Qyw4Q0FBOEM7SUFDOUMsTUFBTSxPQUFPLEtBQUssQ0FBQyxFQUFFO0lBQ3JCLE1BQU0sUUFBUSxPQUFPLEtBQUssQ0FBQyxLQUFLLEdBQUc7SUFDbkMsSUFBSSxRQUFRLE9BQU87TUFDakIsTUFBTSxJQUFJLElBQUksT0FBTyxDQUFDLE9BQU87TUFDN0IsSUFBSSxNQUFNLENBQUMsR0FBRztRQUNaLE1BQU0sSUFBSTtNQUNaO0lBQ0Y7SUFFQSxNQUFNLElBQUksS0FBSyxDQUFDO0VBQ2xCO0VBRUEsT0FBTztBQUNUIn0= +// denoCacheMetadata=9914055199463671674,905173533948372675
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/a0b7e8477b3687472f959d96973062e83a843ecd2caee2a9fb327b10b406bd8f.js b/vendor/gen/https/jsr.io/a0b7e8477b3687472f959d96973062e83a843ecd2caee2a9fb327b10b406bd8f.js new file mode 100644 index 0000000..808b17a --- /dev/null +++ b/vendor/gen/https/jsr.io/a0b7e8477b3687472f959d96973062e83a843ecd2caee2a9fb327b10b406bd8f.js @@ -0,0 +1,28 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { format as posixFormat } from "./posix/format.ts"; +import { format as windowsFormat } from "./windows/format.ts"; +/** + * Generate a path from a {@linkcode ParsedPath} object. It does the + * opposite of {@linkcode https://jsr.io/@std/path/doc/~/parse | parse()}. + * + * @example Usage + * ```ts + * import { format } from "@std/path/format"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(format({ dir: "C:\\path\\to", base: "script.ts" }), "C:\\path\\to\\script.ts"); + * } else { + * assertEquals(format({ dir: "/path/to/dir", base: "script.ts" }), "/path/to/dir/script.ts"); + * } + * ``` + * + * @param pathObject Object with path components. + * @returns The formatted path. + */ export function format(pathObject) { + return isWindows ? windowsFormat(pathObject) : posixFormat(pathObject); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9mb3JtYXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgaXNXaW5kb3dzIH0gZnJvbSBcIi4vX29zLnRzXCI7XG5pbXBvcnQgeyBmb3JtYXQgYXMgcG9zaXhGb3JtYXQgfSBmcm9tIFwiLi9wb3NpeC9mb3JtYXQudHNcIjtcbmltcG9ydCB7IGZvcm1hdCBhcyB3aW5kb3dzRm9ybWF0IH0gZnJvbSBcIi4vd2luZG93cy9mb3JtYXQudHNcIjtcbmltcG9ydCB0eXBlIHsgUGFyc2VkUGF0aCB9IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5cbi8qKlxuICogR2VuZXJhdGUgYSBwYXRoIGZyb20gYSB7QGxpbmtjb2RlIFBhcnNlZFBhdGh9IG9iamVjdC4gSXQgZG9lcyB0aGVcbiAqIG9wcG9zaXRlIG9mIHtAbGlua2NvZGUgaHR0cHM6Ly9qc3IuaW8vQHN0ZC9wYXRoL2RvYy9+L3BhcnNlIHwgcGFyc2UoKX0uXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBmb3JtYXQgfSBmcm9tIFwiQHN0ZC9wYXRoL2Zvcm1hdFwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogaWYgKERlbm8uYnVpbGQub3MgPT09IFwid2luZG93c1wiKSB7XG4gKiAgIGFzc2VydEVxdWFscyhmb3JtYXQoeyBkaXI6IFwiQzpcXFxccGF0aFxcXFx0b1wiLCBiYXNlOiBcInNjcmlwdC50c1wiIH0pLCBcIkM6XFxcXHBhdGhcXFxcdG9cXFxcc2NyaXB0LnRzXCIpO1xuICogfSBlbHNlIHtcbiAqICAgYXNzZXJ0RXF1YWxzKGZvcm1hdCh7IGRpcjogXCIvcGF0aC90by9kaXJcIiwgYmFzZTogXCJzY3JpcHQudHNcIiB9KSwgXCIvcGF0aC90by9kaXIvc2NyaXB0LnRzXCIpO1xuICogfVxuICogYGBgXG4gKlxuICogQHBhcmFtIHBhdGhPYmplY3QgT2JqZWN0IHdpdGggcGF0aCBjb21wb25lbnRzLlxuICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0KHBhdGhPYmplY3Q6IFBhcnRpYWw8UGFyc2VkUGF0aD4pOiBzdHJpbmcge1xuICByZXR1cm4gaXNXaW5kb3dzID8gd2luZG93c0Zvcm1hdChwYXRoT2JqZWN0KSA6IHBvc2l4Rm9ybWF0KHBhdGhPYmplY3QpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckMsU0FBUyxTQUFTLFFBQVEsV0FBVztBQUNyQyxTQUFTLFVBQVUsV0FBVyxRQUFRLG9CQUFvQjtBQUMxRCxTQUFTLFVBQVUsYUFBYSxRQUFRLHNCQUFzQjtBQUc5RDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBa0JDLEdBQ0QsT0FBTyxTQUFTLE9BQU8sVUFBK0I7RUFDcEQsT0FBTyxZQUFZLGNBQWMsY0FBYyxZQUFZO0FBQzdEIn0= +// denoCacheMetadata=9621334086137080607,9623553648236149046
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/a16be1205c7305277e3dc0bc58e8ae9fbc68100d59b874588c142e26e7ae057a.js b/vendor/gen/https/jsr.io/a16be1205c7305277e3dc0bc58e8ae9fbc68100d59b874588c142e26e7ae057a.js new file mode 100644 index 0000000..3b533df --- /dev/null +++ b/vendor/gen/https/jsr.io/a16be1205c7305277e3dc0bc58e8ae9fbc68100d59b874588c142e26e7ae057a.js @@ -0,0 +1,29 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { resolve as posixResolve } from "./posix/resolve.ts"; +import { resolve as windowsResolve } from "./windows/resolve.ts"; +/** + * Resolves path segments into a path. + * + * @example Usage + * ```ts + * import { resolve } from "@std/path/resolve"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(resolve("C:\\foo", "bar", "baz"), "C:\\foo\\bar\\baz"); + * assertEquals(resolve("C:\\foo", "C:\\bar", "baz"), "C:\\bar\\baz"); + * } else { + * assertEquals(resolve("/foo", "bar", "baz"), "/foo/bar/baz"); + * assertEquals(resolve("/foo", "/bar", "baz"), "/bar/baz"); + * } + * ``` + * + * @param pathSegments Path segments to process to path. + * @returns The resolved path. + */ export function resolve(...pathSegments) { + return isWindows ? windowsResolve(...pathSegments) : posixResolve(...pathSegments); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9yZXNvbHZlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGlzV2luZG93cyB9IGZyb20gXCIuL19vcy50c1wiO1xuaW1wb3J0IHsgcmVzb2x2ZSBhcyBwb3NpeFJlc29sdmUgfSBmcm9tIFwiLi9wb3NpeC9yZXNvbHZlLnRzXCI7XG5pbXBvcnQgeyByZXNvbHZlIGFzIHdpbmRvd3NSZXNvbHZlIH0gZnJvbSBcIi4vd2luZG93cy9yZXNvbHZlLnRzXCI7XG5cbi8qKlxuICogUmVzb2x2ZXMgcGF0aCBzZWdtZW50cyBpbnRvIGEgcGF0aC5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHJlc29sdmUgfSBmcm9tIFwiQHN0ZC9wYXRoL3Jlc29sdmVcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGlmIChEZW5vLmJ1aWxkLm9zID09PSBcIndpbmRvd3NcIikge1xuICogICBhc3NlcnRFcXVhbHMocmVzb2x2ZShcIkM6XFxcXGZvb1wiLCBcImJhclwiLCBcImJhelwiKSwgXCJDOlxcXFxmb29cXFxcYmFyXFxcXGJhelwiKTtcbiAqICAgYXNzZXJ0RXF1YWxzKHJlc29sdmUoXCJDOlxcXFxmb29cIiwgXCJDOlxcXFxiYXJcIiwgXCJiYXpcIiksIFwiQzpcXFxcYmFyXFxcXGJhelwiKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGFzc2VydEVxdWFscyhyZXNvbHZlKFwiL2Zvb1wiLCBcImJhclwiLCBcImJhelwiKSwgXCIvZm9vL2Jhci9iYXpcIik7XG4gKiAgIGFzc2VydEVxdWFscyhyZXNvbHZlKFwiL2Zvb1wiLCBcIi9iYXJcIiwgXCJiYXpcIiksIFwiL2Jhci9iYXpcIik7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gcGF0aFNlZ21lbnRzIFBhdGggc2VnbWVudHMgdG8gcHJvY2VzcyB0byBwYXRoLlxuICogQHJldHVybnMgVGhlIHJlc29sdmVkIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlKC4uLnBhdGhTZWdtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICByZXR1cm4gaXNXaW5kb3dzXG4gICAgPyB3aW5kb3dzUmVzb2x2ZSguLi5wYXRoU2VnbWVudHMpXG4gICAgOiBwb3NpeFJlc29sdmUoLi4ucGF0aFNlZ21lbnRzKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDLFNBQVMsU0FBUyxRQUFRLFdBQVc7QUFDckMsU0FBUyxXQUFXLFlBQVksUUFBUSxxQkFBcUI7QUFDN0QsU0FBUyxXQUFXLGNBQWMsUUFBUSx1QkFBdUI7QUFFakU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FtQkMsR0FDRCxPQUFPLFNBQVMsUUFBUSxHQUFHLFlBQXNCO0VBQy9DLE9BQU8sWUFDSCxrQkFBa0IsZ0JBQ2xCLGdCQUFnQjtBQUN0QiJ9 +// denoCacheMetadata=4254090534752271865,4742310458575240755
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/a1b7b3e77d09f84a8a399462a64ad12165676a13d7efacf78dfa068c0ad92ec4.js b/vendor/gen/https/jsr.io/a1b7b3e77d09f84a8a399462a64ad12165676a13d7efacf78dfa068c0ad92ec4.js new file mode 100644 index 0000000..fc4fa8d --- /dev/null +++ b/vendor/gen/https/jsr.io/a1b7b3e77d09f84a8a399462a64ad12165676a13d7efacf78dfa068c0ad92ec4.js @@ -0,0 +1,692 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { deepMerge } from "jsr:@std/collections@^1.1.0/deep-merge"; +export class Scanner { + #whitespace = /[ \t]/; + #position = 0; + #source; + constructor(source){ + this.#source = source; + } + get position() { + return this.#position; + } + get source() { + return this.#source; + } + /** + * Get current character + * @param index - relative index from current position + */ char(index = 0) { + return this.#source[this.#position + index] ?? ""; + } + /** + * Get sliced string + * @param start - start position relative from current position + * @param end - end position relative from current position + */ slice(start, end) { + return this.#source.slice(this.#position + start, this.#position + end); + } + /** + * Move position to next + */ next(count = 1) { + this.#position += count; + } + skipWhitespaces() { + while(this.#whitespace.test(this.char()) && !this.eof()){ + this.next(); + } + // Invalid if current char is other kinds of whitespace + if (!this.isCurrentCharEOL() && /\s/.test(this.char())) { + const escaped = "\\u" + this.char().charCodeAt(0).toString(16); + const position = this.#position; + throw new SyntaxError(`Cannot parse the TOML: It contains invalid whitespace at position '${position}': \`${escaped}\``); + } + } + nextUntilChar(options = { + skipComments: true + }) { + while(!this.eof()){ + const char = this.char(); + if (this.#whitespace.test(char) || this.isCurrentCharEOL()) { + this.next(); + } else if (options.skipComments && this.char() === "#") { + // entering comment + while(!this.isCurrentCharEOL() && !this.eof()){ + this.next(); + } + } else { + break; + } + } + } + /** + * Position reached EOF or not + */ eof() { + return this.#position >= this.#source.length; + } + isCurrentCharEOL() { + return this.char() === "\n" || this.startsWith("\r\n"); + } + startsWith(searchString) { + return this.#source.startsWith(searchString, this.#position); + } + match(regExp) { + if (!regExp.sticky) { + throw new Error(`RegExp ${regExp} does not have a sticky 'y' flag`); + } + regExp.lastIndex = this.#position; + return this.#source.match(regExp); + } +} +// ----------------------- +// Utilities +// ----------------------- +function success(body) { + return { + ok: true, + body + }; +} +function failure() { + return { + ok: false + }; +} +/** + * Creates a nested object from the keys and values. + * + * e.g. `unflat(["a", "b", "c"], 1)` returns `{ a: { b: { c: 1 } } }` + */ export function unflat(keys, values = {}) { + return keys.reduceRight((acc, key)=>({ + [key]: acc + }), values); +} +export function deepAssignWithTable(target, table) { + if (table.key.length === 0 || table.key[0] == null) { + throw new Error("Cannot parse the TOML: key length is not a positive number"); + } + const value = target[table.key[0]]; + if (typeof value === "undefined") { + Object.assign(target, unflat(table.key, table.type === "Table" ? table.value : [ + table.value + ])); + } else if (Array.isArray(value)) { + if (table.type === "TableArray" && table.key.length === 1) { + value.push(table.value); + } else { + const last = value[value.length - 1]; + deepAssignWithTable(last, { + type: table.type, + key: table.key.slice(1), + value: table.value + }); + } + } else if (typeof value === "object" && value !== null) { + deepAssignWithTable(value, { + type: table.type, + key: table.key.slice(1), + value: table.value + }); + } else { + throw new Error("Unexpected assign"); + } +} +// --------------------------------- +// Parser combinators and generators +// --------------------------------- +// deno-lint-ignore no-explicit-any +function or(parsers) { + return (scanner)=>{ + for (const parse of parsers){ + const result = parse(scanner); + if (result.ok) return result; + } + return failure(); + }; +} +/** Join the parse results of the given parser into an array. + * + * If the parser fails at the first attempt, it will return an empty array. + */ function join(parser, separator) { + const Separator = character(separator); + return (scanner)=>{ + const out = []; + const first = parser(scanner); + if (!first.ok) return success(out); + out.push(first.body); + while(!scanner.eof()){ + if (!Separator(scanner).ok) break; + const result = parser(scanner); + if (!result.ok) { + throw new SyntaxError(`Invalid token after "${separator}"`); + } + out.push(result.body); + } + return success(out); + }; +} +/** Join the parse results of the given parser into an array. + * + * This requires the parser to succeed at least once. + */ function join1(parser, separator) { + const Separator = character(separator); + return (scanner)=>{ + const first = parser(scanner); + if (!first.ok) return failure(); + const out = [ + first.body + ]; + while(!scanner.eof()){ + if (!Separator(scanner).ok) break; + const result = parser(scanner); + if (!result.ok) { + throw new SyntaxError(`Invalid token after "${separator}"`); + } + out.push(result.body); + } + return success(out); + }; +} +function kv(keyParser, separator, valueParser) { + const Separator = character(separator); + return (scanner)=>{ + const position = scanner.position; + const key = keyParser(scanner); + if (!key.ok) return failure(); + const sep = Separator(scanner); + if (!sep.ok) { + throw new SyntaxError(`key/value pair doesn't have "${separator}"`); + } + const value = valueParser(scanner); + if (!value.ok) { + const lineEndIndex = scanner.source.indexOf("\n", scanner.position); + const endPosition = lineEndIndex > 0 ? lineEndIndex : scanner.source.length; + const line = scanner.source.slice(position, endPosition); + throw new SyntaxError(`Cannot parse value on line '${line}'`); + } + return success(unflat(key.body, value.body)); + }; +} +function merge(parser) { + return (scanner)=>{ + const result = parser(scanner); + if (!result.ok) return failure(); + let body = {}; + for (const record of result.body){ + if (typeof record === "object" && record !== null) { + body = deepMerge(body, record); + } + } + return success(body); + }; +} +function repeat(parser) { + return (scanner)=>{ + const body = []; + while(!scanner.eof()){ + const result = parser(scanner); + if (!result.ok) break; + body.push(result.body); + scanner.nextUntilChar(); + } + if (body.length === 0) return failure(); + return success(body); + }; +} +function surround(left, parser, right) { + const Left = character(left); + const Right = character(right); + return (scanner)=>{ + if (!Left(scanner).ok) { + return failure(); + } + const result = parser(scanner); + if (!result.ok) { + throw new SyntaxError(`Invalid token after "${left}"`); + } + if (!Right(scanner).ok) { + throw new SyntaxError(`Not closed by "${right}" after started with "${left}"`); + } + return success(result.body); + }; +} +function character(str) { + return (scanner)=>{ + scanner.skipWhitespaces(); + if (!scanner.startsWith(str)) return failure(); + scanner.next(str.length); + scanner.skipWhitespaces(); + return success(undefined); + }; +} +// ----------------------- +// Parser components +// ----------------------- +const BARE_KEY_REGEXP = /[A-Za-z0-9_-]+/y; +export function bareKey(scanner) { + scanner.skipWhitespaces(); + const key = scanner.match(BARE_KEY_REGEXP)?.[0]; + if (!key) return failure(); + scanner.next(key.length); + return success(key); +} +function escapeSequence(scanner) { + if (scanner.char() !== "\\") return failure(); + scanner.next(); + // See https://toml.io/en/v1.0.0-rc.3#string + switch(scanner.char()){ + case "b": + scanner.next(); + return success("\b"); + case "t": + scanner.next(); + return success("\t"); + case "n": + scanner.next(); + return success("\n"); + case "f": + scanner.next(); + return success("\f"); + case "r": + scanner.next(); + return success("\r"); + case "u": + case "U": + { + // Unicode character + const codePointLen = scanner.char() === "u" ? 4 : 6; + const codePoint = parseInt("0x" + scanner.slice(1, 1 + codePointLen), 16); + const str = String.fromCodePoint(codePoint); + scanner.next(codePointLen + 1); + return success(str); + } + case '"': + scanner.next(); + return success('"'); + case "\\": + scanner.next(); + return success("\\"); + default: + throw new SyntaxError(`Invalid escape sequence: \\${scanner.char()}`); + } +} +export function basicString(scanner) { + scanner.skipWhitespaces(); + if (scanner.char() !== '"') return failure(); + scanner.next(); + const acc = []; + while(scanner.char() !== '"' && !scanner.eof()){ + if (scanner.char() === "\n") { + throw new SyntaxError("Single-line string cannot contain EOL"); + } + const escapedChar = escapeSequence(scanner); + if (escapedChar.ok) { + acc.push(escapedChar.body); + } else { + acc.push(scanner.char()); + scanner.next(); + } + } + if (scanner.eof()) { + throw new SyntaxError(`Single-line string is not closed:\n${acc.join("")}`); + } + scanner.next(); // skip last '"" + return success(acc.join("")); +} +export function literalString(scanner) { + scanner.skipWhitespaces(); + if (scanner.char() !== "'") return failure(); + scanner.next(); + const acc = []; + while(scanner.char() !== "'" && !scanner.eof()){ + if (scanner.char() === "\n") { + throw new SyntaxError("Single-line string cannot contain EOL"); + } + acc.push(scanner.char()); + scanner.next(); + } + if (scanner.eof()) { + throw new SyntaxError(`Single-line string is not closed:\n${acc.join("")}`); + } + scanner.next(); // skip last "'" + return success(acc.join("")); +} +export function multilineBasicString(scanner) { + scanner.skipWhitespaces(); + if (!scanner.startsWith('"""')) return failure(); + scanner.next(3); + if (scanner.char() === "\n") { + // The first newline (LF) is trimmed + scanner.next(); + } else if (scanner.startsWith("\r\n")) { + // The first newline (CRLF) is trimmed + scanner.next(2); + } + const acc = []; + while(!scanner.startsWith('"""') && !scanner.eof()){ + // line ending backslash + if (scanner.startsWith("\\\n")) { + scanner.next(); + scanner.nextUntilChar({ + skipComments: false + }); + continue; + } else if (scanner.startsWith("\\\r\n")) { + scanner.next(); + scanner.nextUntilChar({ + skipComments: false + }); + continue; + } + const escapedChar = escapeSequence(scanner); + if (escapedChar.ok) { + acc.push(escapedChar.body); + } else { + acc.push(scanner.char()); + scanner.next(); + } + } + if (scanner.eof()) { + throw new SyntaxError(`Multi-line string is not closed:\n${acc.join("")}`); + } + // if ends with 4 `"`, push the fist `"` to string + if (scanner.char(3) === '"') { + acc.push('"'); + scanner.next(); + } + scanner.next(3); // skip last '"""" + return success(acc.join("")); +} +export function multilineLiteralString(scanner) { + scanner.skipWhitespaces(); + if (!scanner.startsWith("'''")) return failure(); + scanner.next(3); + if (scanner.char() === "\n") { + // The first newline (LF) is trimmed + scanner.next(); + } else if (scanner.startsWith("\r\n")) { + // The first newline (CRLF) is trimmed + scanner.next(2); + } + const acc = []; + while(!scanner.startsWith("'''") && !scanner.eof()){ + acc.push(scanner.char()); + scanner.next(); + } + if (scanner.eof()) { + throw new SyntaxError(`Multi-line string is not closed:\n${acc.join("")}`); + } + // if ends with 4 `'`, push the fist `'` to string + if (scanner.char(3) === "'") { + acc.push("'"); + scanner.next(); + } + scanner.next(3); // skip last "'''" + return success(acc.join("")); +} +const BOOLEAN_REGEXP = /(?:true|false)\b/y; +export function boolean(scanner) { + scanner.skipWhitespaces(); + const match = scanner.match(BOOLEAN_REGEXP); + if (!match) return failure(); + const string = match[0]; + scanner.next(string.length); + const value = string === "true"; + return success(value); +} +const INFINITY_MAP = new Map([ + [ + "inf", + Infinity + ], + [ + "+inf", + Infinity + ], + [ + "-inf", + -Infinity + ] +]); +const INFINITY_REGEXP = /[+-]?inf\b/y; +export function infinity(scanner) { + scanner.skipWhitespaces(); + const match = scanner.match(INFINITY_REGEXP); + if (!match) return failure(); + const string = match[0]; + scanner.next(string.length); + const value = INFINITY_MAP.get(string); + return success(value); +} +const NAN_REGEXP = /[+-]?nan\b/y; +export function nan(scanner) { + scanner.skipWhitespaces(); + const match = scanner.match(NAN_REGEXP); + if (!match) return failure(); + const string = match[0]; + scanner.next(string.length); + const value = NaN; + return success(value); +} +export const dottedKey = join1(or([ + bareKey, + basicString, + literalString +]), "."); +const BINARY_REGEXP = /0b[01]+(?:_[01]+)*\b/y; +export function binary(scanner) { + scanner.skipWhitespaces(); + const match = scanner.match(BINARY_REGEXP)?.[0]; + if (!match) return failure(); + scanner.next(match.length); + const value = match.slice(2).replaceAll("_", ""); + const number = parseInt(value, 2); + return isNaN(number) ? failure() : success(number); +} +const OCTAL_REGEXP = /0o[0-7]+(?:_[0-7]+)*\b/y; +export function octal(scanner) { + scanner.skipWhitespaces(); + const match = scanner.match(OCTAL_REGEXP)?.[0]; + if (!match) return failure(); + scanner.next(match.length); + const value = match.slice(2).replaceAll("_", ""); + const number = parseInt(value, 8); + return isNaN(number) ? failure() : success(number); +} +const HEX_REGEXP = /0x[0-9a-f]+(?:_[0-9a-f]+)*\b/yi; +export function hex(scanner) { + scanner.skipWhitespaces(); + const match = scanner.match(HEX_REGEXP)?.[0]; + if (!match) return failure(); + scanner.next(match.length); + const value = match.slice(2).replaceAll("_", ""); + const number = parseInt(value, 16); + return isNaN(number) ? failure() : success(number); +} +const INTEGER_REGEXP = /[+-]?[0-9]+(?:_[0-9]+)*\b/y; +export function integer(scanner) { + scanner.skipWhitespaces(); + const match = scanner.match(INTEGER_REGEXP)?.[0]; + if (!match) return failure(); + scanner.next(match.length); + const value = match.replaceAll("_", ""); + const int = parseInt(value, 10); + return success(int); +} +const FLOAT_REGEXP = /[+-]?[0-9]+(?:_[0-9]+)*(?:\.[0-9]+(?:_[0-9]+)*)?(?:e[+-]?[0-9]+(?:_[0-9]+)*)?\b/yi; +export function float(scanner) { + scanner.skipWhitespaces(); + const match = scanner.match(FLOAT_REGEXP)?.[0]; + if (!match) return failure(); + scanner.next(match.length); + const value = match.replaceAll("_", ""); + const float = parseFloat(value); + if (isNaN(float)) return failure(); + return success(float); +} +const DATE_TIME_REGEXP = /\d{4}-\d{2}-\d{2}(?:[ 0-9TZ.:+-]+)?\b/y; +export function dateTime(scanner) { + scanner.skipWhitespaces(); + // example: 1979-05-27 + const match = scanner.match(DATE_TIME_REGEXP)?.[0]; + if (!match) return failure(); + scanner.next(match.length); + const date = new Date(match.trim()); + // invalid date + if (isNaN(date.getTime())) { + throw new SyntaxError(`Invalid date string "${match}"`); + } + return success(date); +} +const LOCAL_TIME_REGEXP = /(\d{2}):(\d{2}):(\d{2})(?:\.[0-9]+)?\b/y; +export function localTime(scanner) { + scanner.skipWhitespaces(); + const match = scanner.match(LOCAL_TIME_REGEXP)?.[0]; + if (!match) return failure(); + scanner.next(match.length); + return success(match); +} +export function arrayValue(scanner) { + scanner.skipWhitespaces(); + if (scanner.char() !== "[") return failure(); + scanner.next(); + const array = []; + while(!scanner.eof()){ + scanner.nextUntilChar(); + const result = value(scanner); + if (!result.ok) break; + array.push(result.body); + scanner.skipWhitespaces(); + // may have a next item, but trailing comma is allowed at array + if (scanner.char() !== ",") break; + scanner.next(); + } + scanner.nextUntilChar(); + if (scanner.char() !== "]") throw new SyntaxError("Array is not closed"); + scanner.next(); + return success(array); +} +export function inlineTable(scanner) { + scanner.nextUntilChar(); + if (scanner.char(1) === "}") { + scanner.next(2); + return success({}); + } + const pairs = surround("{", join(pair, ","), "}")(scanner); + if (!pairs.ok) return failure(); + let table = {}; + for (const pair of pairs.body){ + table = deepMerge(table, pair); + } + return success(table); +} +export const value = or([ + multilineBasicString, + multilineLiteralString, + basicString, + literalString, + boolean, + infinity, + nan, + dateTime, + localTime, + binary, + octal, + hex, + float, + integer, + arrayValue, + inlineTable +]); +export const pair = kv(dottedKey, "=", value); +export function block(scanner) { + scanner.nextUntilChar(); + const result = merge(repeat(pair))(scanner); + if (result.ok) return success({ + type: "Block", + value: result.body + }); + return failure(); +} +export const tableHeader = surround("[", dottedKey, "]"); +export function table(scanner) { + scanner.nextUntilChar(); + const header = tableHeader(scanner); + if (!header.ok) return failure(); + scanner.nextUntilChar(); + const b = block(scanner); + return success({ + type: "Table", + key: header.body, + value: b.ok ? b.body.value : {} + }); +} +export const tableArrayHeader = surround("[[", dottedKey, "]]"); +export function tableArray(scanner) { + scanner.nextUntilChar(); + const header = tableArrayHeader(scanner); + if (!header.ok) return failure(); + scanner.nextUntilChar(); + const b = block(scanner); + return success({ + type: "TableArray", + key: header.body, + value: b.ok ? b.body.value : {} + }); +} +export function toml(scanner) { + const blocks = repeat(or([ + block, + tableArray, + table + ]))(scanner); + let body = {}; + if (!blocks.ok) return success(body); + for (const block of blocks.body){ + switch(block.type){ + case "Block": + { + body = deepMerge(body, block.value); + break; + } + case "Table": + { + deepAssignWithTable(body, block); + break; + } + case "TableArray": + { + deepAssignWithTable(body, block); + break; + } + } + } + return success(body); +} +function createParseErrorMessage(scanner, message) { + const string = scanner.source.slice(0, scanner.position); + const lines = string.split("\n"); + const row = lines.length; + const column = lines.at(-1)?.length ?? 0; + return `Parse error on line ${row}, column ${column}: ${message}`; +} +export function parserFactory(parser) { + return (tomlString)=>{ + const scanner = new Scanner(tomlString); + try { + const result = parser(scanner); + if (result.ok && scanner.eof()) return result.body; + const message = `Unexpected character: "${scanner.char()}"`; + throw new SyntaxError(createParseErrorMessage(scanner, message)); + } catch (error) { + if (error instanceof Error) { + throw new SyntaxError(createParseErrorMessage(scanner, error.message)); + } + const message = "Invalid error type caught"; + throw new SyntaxError(createParseErrorMessage(scanner, message)); + } + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvdG9tbC8xLjAuNi9fcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGRlZXBNZXJnZSB9IGZyb20gXCJqc3I6QHN0ZC9jb2xsZWN0aW9uc0BeMS4xLjAvZGVlcC1tZXJnZVwiO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEludGVyZmFjZXMgYW5kIGJhc2UgY2xhc3Nlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmludGVyZmFjZSBTdWNjZXNzPFQ+IHtcbiAgb2s6IHRydWU7XG4gIGJvZHk6IFQ7XG59XG5pbnRlcmZhY2UgRmFpbHVyZSB7XG4gIG9rOiBmYWxzZTtcbn1cbnR5cGUgUGFyc2VSZXN1bHQ8VD4gPSBTdWNjZXNzPFQ+IHwgRmFpbHVyZTtcblxudHlwZSBQYXJzZXJDb21wb25lbnQ8VCA9IHVua25vd24+ID0gKHNjYW5uZXI6IFNjYW5uZXIpID0+IFBhcnNlUmVzdWx0PFQ+O1xuXG50eXBlIEJsb2NrUGFyc2VSZXN1bHRCb2R5ID0ge1xuICB0eXBlOiBcIkJsb2NrXCI7XG4gIHZhbHVlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn0gfCB7XG4gIHR5cGU6IFwiVGFibGVcIjtcbiAga2V5OiBzdHJpbmdbXTtcbiAgdmFsdWU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufSB8IHtcbiAgdHlwZTogXCJUYWJsZUFycmF5XCI7XG4gIGtleTogc3RyaW5nW107XG4gIHZhbHVlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn07XG5cbmV4cG9ydCBjbGFzcyBTY2FubmVyIHtcbiAgI3doaXRlc3BhY2UgPSAvWyBcXHRdLztcbiAgI3Bvc2l0aW9uID0gMDtcbiAgI3NvdXJjZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNvdXJjZTogc3RyaW5nKSB7XG4gICAgdGhpcy4jc291cmNlID0gc291cmNlO1xuICB9XG5cbiAgZ2V0IHBvc2l0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLiNwb3NpdGlvbjtcbiAgfVxuICBnZXQgc291cmNlKCkge1xuICAgIHJldHVybiB0aGlzLiNzb3VyY2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgY2hhcmFjdGVyXG4gICAqIEBwYXJhbSBpbmRleCAtIHJlbGF0aXZlIGluZGV4IGZyb20gY3VycmVudCBwb3NpdGlvblxuICAgKi9cbiAgY2hhcihpbmRleCA9IDApIHtcbiAgICByZXR1cm4gdGhpcy4jc291cmNlW3RoaXMuI3Bvc2l0aW9uICsgaW5kZXhdID8/IFwiXCI7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHNsaWNlZCBzdHJpbmdcbiAgICogQHBhcmFtIHN0YXJ0IC0gc3RhcnQgcG9zaXRpb24gcmVsYXRpdmUgZnJvbSBjdXJyZW50IHBvc2l0aW9uXG4gICAqIEBwYXJhbSBlbmQgLSBlbmQgcG9zaXRpb24gcmVsYXRpdmUgZnJvbSBjdXJyZW50IHBvc2l0aW9uXG4gICAqL1xuICBzbGljZShzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuI3NvdXJjZS5zbGljZSh0aGlzLiNwb3NpdGlvbiArIHN0YXJ0LCB0aGlzLiNwb3NpdGlvbiArIGVuZCk7XG4gIH1cblxuICAvKipcbiAgICogTW92ZSBwb3NpdGlvbiB0byBuZXh0XG4gICAqL1xuICBuZXh0KGNvdW50OiBudW1iZXIgPSAxKSB7XG4gICAgdGhpcy4jcG9zaXRpb24gKz0gY291bnQ7XG4gIH1cblxuICBza2lwV2hpdGVzcGFjZXMoKSB7XG4gICAgd2hpbGUgKHRoaXMuI3doaXRlc3BhY2UudGVzdCh0aGlzLmNoYXIoKSkgJiYgIXRoaXMuZW9mKCkpIHtcbiAgICAgIHRoaXMubmV4dCgpO1xuICAgIH1cbiAgICAvLyBJbnZhbGlkIGlmIGN1cnJlbnQgY2hhciBpcyBvdGhlciBraW5kcyBvZiB3aGl0ZXNwYWNlXG4gICAgaWYgKCF0aGlzLmlzQ3VycmVudENoYXJFT0woKSAmJiAvXFxzLy50ZXN0KHRoaXMuY2hhcigpKSkge1xuICAgICAgY29uc3QgZXNjYXBlZCA9IFwiXFxcXHVcIiArIHRoaXMuY2hhcigpLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpO1xuICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLiNwb3NpdGlvbjtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgYENhbm5vdCBwYXJzZSB0aGUgVE9NTDogSXQgY29udGFpbnMgaW52YWxpZCB3aGl0ZXNwYWNlIGF0IHBvc2l0aW9uICcke3Bvc2l0aW9ufSc6IFxcYCR7ZXNjYXBlZH1cXGBgLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZXh0VW50aWxDaGFyKG9wdGlvbnM6IHsgc2tpcENvbW1lbnRzPzogYm9vbGVhbiB9ID0geyBza2lwQ29tbWVudHM6IHRydWUgfSkge1xuICAgIHdoaWxlICghdGhpcy5lb2YoKSkge1xuICAgICAgY29uc3QgY2hhciA9IHRoaXMuY2hhcigpO1xuICAgICAgaWYgKHRoaXMuI3doaXRlc3BhY2UudGVzdChjaGFyKSB8fCB0aGlzLmlzQ3VycmVudENoYXJFT0woKSkge1xuICAgICAgICB0aGlzLm5leHQoKTtcbiAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5za2lwQ29tbWVudHMgJiYgdGhpcy5jaGFyKCkgPT09IFwiI1wiKSB7XG4gICAgICAgIC8vIGVudGVyaW5nIGNvbW1lbnRcbiAgICAgICAgd2hpbGUgKCF0aGlzLmlzQ3VycmVudENoYXJFT0woKSAmJiAhdGhpcy5lb2YoKSkge1xuICAgICAgICAgIHRoaXMubmV4dCgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUG9zaXRpb24gcmVhY2hlZCBFT0Ygb3Igbm90XG4gICAqL1xuICBlb2YoKSB7XG4gICAgcmV0dXJuIHRoaXMuI3Bvc2l0aW9uID49IHRoaXMuI3NvdXJjZS5sZW5ndGg7XG4gIH1cblxuICBpc0N1cnJlbnRDaGFyRU9MKCkge1xuICAgIHJldHVybiB0aGlzLmNoYXIoKSA9PT0gXCJcXG5cIiB8fCB0aGlzLnN0YXJ0c1dpdGgoXCJcXHJcXG5cIik7XG4gIH1cblxuICBzdGFydHNXaXRoKHNlYXJjaFN0cmluZzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuI3NvdXJjZS5zdGFydHNXaXRoKHNlYXJjaFN0cmluZywgdGhpcy4jcG9zaXRpb24pO1xuICB9XG5cbiAgbWF0Y2gocmVnRXhwOiBSZWdFeHApIHtcbiAgICBpZiAoIXJlZ0V4cC5zdGlja3kpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUmVnRXhwICR7cmVnRXhwfSBkb2VzIG5vdCBoYXZlIGEgc3RpY2t5ICd5JyBmbGFnYCk7XG4gICAgfVxuICAgIHJlZ0V4cC5sYXN0SW5kZXggPSB0aGlzLiNwb3NpdGlvbjtcbiAgICByZXR1cm4gdGhpcy4jc291cmNlLm1hdGNoKHJlZ0V4cCk7XG4gIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFV0aWxpdGllc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZnVuY3Rpb24gc3VjY2VzczxUPihib2R5OiBUKTogU3VjY2VzczxUPiB7XG4gIHJldHVybiB7IG9rOiB0cnVlLCBib2R5IH07XG59XG5mdW5jdGlvbiBmYWlsdXJlKCk6IEZhaWx1cmUge1xuICByZXR1cm4geyBvazogZmFsc2UgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmVzdGVkIG9iamVjdCBmcm9tIHRoZSBrZXlzIGFuZCB2YWx1ZXMuXG4gKlxuICogZS5nLiBgdW5mbGF0KFtcImFcIiwgXCJiXCIsIFwiY1wiXSwgMSlgIHJldHVybnMgYHsgYTogeyBiOiB7IGM6IDEgfSB9IH1gXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmZsYXQoXG4gIGtleXM6IHN0cmluZ1tdLFxuICB2YWx1ZXM6IHVua25vd24gPSB7fSxcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIGtleXMucmVkdWNlUmlnaHQoXG4gICAgKGFjYywga2V5KSA9PiAoeyBba2V5XTogYWNjIH0pLFxuICAgIHZhbHVlcyxcbiAgKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZXBBc3NpZ25XaXRoVGFibGUodGFyZ2V0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGFibGU6IHtcbiAgdHlwZTogXCJUYWJsZVwiIHwgXCJUYWJsZUFycmF5XCI7XG4gIGtleTogc3RyaW5nW107XG4gIHZhbHVlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn0pIHtcbiAgaWYgKHRhYmxlLmtleS5sZW5ndGggPT09IDAgfHwgdGFibGUua2V5WzBdID09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIkNhbm5vdCBwYXJzZSB0aGUgVE9NTDoga2V5IGxlbmd0aCBpcyBub3QgYSBwb3NpdGl2ZSBudW1iZXJcIixcbiAgICApO1xuICB9XG4gIGNvbnN0IHZhbHVlID0gdGFyZ2V0W3RhYmxlLmtleVswXV07XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICB0YXJnZXQsXG4gICAgICB1bmZsYXQoXG4gICAgICAgIHRhYmxlLmtleSxcbiAgICAgICAgdGFibGUudHlwZSA9PT0gXCJUYWJsZVwiID8gdGFibGUudmFsdWUgOiBbdGFibGUudmFsdWVdLFxuICAgICAgKSxcbiAgICApO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgaWYgKHRhYmxlLnR5cGUgPT09IFwiVGFibGVBcnJheVwiICYmIHRhYmxlLmtleS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHZhbHVlLnB1c2godGFibGUudmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsYXN0ID0gdmFsdWVbdmFsdWUubGVuZ3RoIC0gMV07XG4gICAgICBkZWVwQXNzaWduV2l0aFRhYmxlKGxhc3QsIHtcbiAgICAgICAgdHlwZTogdGFibGUudHlwZSxcbiAgICAgICAga2V5OiB0YWJsZS5rZXkuc2xpY2UoMSksXG4gICAgICAgIHZhbHVlOiB0YWJsZS52YWx1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICBkZWVwQXNzaWduV2l0aFRhYmxlKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB7XG4gICAgICB0eXBlOiB0YWJsZS50eXBlLFxuICAgICAga2V5OiB0YWJsZS5rZXkuc2xpY2UoMSksXG4gICAgICB2YWx1ZTogdGFibGUudmFsdWUsXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBhc3NpZ25cIik7XG4gIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQYXJzZXIgY29tYmluYXRvcnMgYW5kIGdlbmVyYXRvcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuZnVuY3Rpb24gb3I8VCBleHRlbmRzIHJlYWRvbmx5IFBhcnNlckNvbXBvbmVudDxhbnk+W10+KFxuICBwYXJzZXJzOiBULFxuKTogUGFyc2VyQ29tcG9uZW50PFxuICBSZXR1cm5UeXBlPFRbbnVtYmVyXT4gZXh0ZW5kcyBQYXJzZVJlc3VsdDxpbmZlciBSPiA/IFIgOiBGYWlsdXJlXG4+IHtcbiAgcmV0dXJuIChzY2FubmVyOiBTY2FubmVyKSA9PiB7XG4gICAgZm9yIChjb25zdCBwYXJzZSBvZiBwYXJzZXJzKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBwYXJzZShzY2FubmVyKTtcbiAgICAgIGlmIChyZXN1bHQub2spIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiBmYWlsdXJlKCk7XG4gIH07XG59XG5cbi8qKiBKb2luIHRoZSBwYXJzZSByZXN1bHRzIG9mIHRoZSBnaXZlbiBwYXJzZXIgaW50byBhbiBhcnJheS5cbiAqXG4gKiBJZiB0aGUgcGFyc2VyIGZhaWxzIGF0IHRoZSBmaXJzdCBhdHRlbXB0LCBpdCB3aWxsIHJldHVybiBhbiBlbXB0eSBhcnJheS5cbiAqL1xuZnVuY3Rpb24gam9pbjxUPihcbiAgcGFyc2VyOiBQYXJzZXJDb21wb25lbnQ8VD4sXG4gIHNlcGFyYXRvcjogc3RyaW5nLFxuKTogUGFyc2VyQ29tcG9uZW50PFRbXT4ge1xuICBjb25zdCBTZXBhcmF0b3IgPSBjaGFyYWN0ZXIoc2VwYXJhdG9yKTtcbiAgcmV0dXJuIChzY2FubmVyOiBTY2FubmVyKTogUGFyc2VSZXN1bHQ8VFtdPiA9PiB7XG4gICAgY29uc3Qgb3V0OiBUW10gPSBbXTtcbiAgICBjb25zdCBmaXJzdCA9IHBhcnNlcihzY2FubmVyKTtcbiAgICBpZiAoIWZpcnN0Lm9rKSByZXR1cm4gc3VjY2VzcyhvdXQpO1xuICAgIG91dC5wdXNoKGZpcnN0LmJvZHkpO1xuICAgIHdoaWxlICghc2Nhbm5lci5lb2YoKSkge1xuICAgICAgaWYgKCFTZXBhcmF0b3Ioc2Nhbm5lcikub2spIGJyZWFrO1xuICAgICAgY29uc3QgcmVzdWx0ID0gcGFyc2VyKHNjYW5uZXIpO1xuICAgICAgaWYgKCFyZXN1bHQub2spIHtcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBJbnZhbGlkIHRva2VuIGFmdGVyIFwiJHtzZXBhcmF0b3J9XCJgKTtcbiAgICAgIH1cbiAgICAgIG91dC5wdXNoKHJlc3VsdC5ib2R5KTtcbiAgICB9XG4gICAgcmV0dXJuIHN1Y2Nlc3Mob3V0KTtcbiAgfTtcbn1cblxuLyoqIEpvaW4gdGhlIHBhcnNlIHJlc3VsdHMgb2YgdGhlIGdpdmVuIHBhcnNlciBpbnRvIGFuIGFycmF5LlxuICpcbiAqIFRoaXMgcmVxdWlyZXMgdGhlIHBhcnNlciB0byBzdWNjZWVkIGF0IGxlYXN0IG9uY2UuXG4gKi9cbmZ1bmN0aW9uIGpvaW4xPFQ+KFxuICBwYXJzZXI6IFBhcnNlckNvbXBvbmVudDxUPixcbiAgc2VwYXJhdG9yOiBzdHJpbmcsXG4pOiBQYXJzZXJDb21wb25lbnQ8VFtdPiB7XG4gIGNvbnN0IFNlcGFyYXRvciA9IGNoYXJhY3RlcihzZXBhcmF0b3IpO1xuICByZXR1cm4gKHNjYW5uZXI6IFNjYW5uZXIpOiBQYXJzZVJlc3VsdDxUW10+ID0+IHtcbiAgICBjb25zdCBmaXJzdCA9IHBhcnNlcihzY2FubmVyKTtcbiAgICBpZiAoIWZpcnN0Lm9rKSByZXR1cm4gZmFpbHVyZSgpO1xuICAgIGNvbnN0IG91dDogVFtdID0gW2ZpcnN0LmJvZHldO1xuICAgIHdoaWxlICghc2Nhbm5lci5lb2YoKSkge1xuICAgICAgaWYgKCFTZXBhcmF0b3Ioc2Nhbm5lcikub2spIGJyZWFrO1xuICAgICAgY29uc3QgcmVzdWx0ID0gcGFyc2VyKHNjYW5uZXIpO1xuICAgICAgaWYgKCFyZXN1bHQub2spIHtcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBJbnZhbGlkIHRva2VuIGFmdGVyIFwiJHtzZXBhcmF0b3J9XCJgKTtcbiAgICAgIH1cbiAgICAgIG91dC5wdXNoKHJlc3VsdC5ib2R5KTtcbiAgICB9XG4gICAgcmV0dXJuIHN1Y2Nlc3Mob3V0KTtcbiAgfTtcbn1cblxuZnVuY3Rpb24ga3Y8VD4oXG4gIGtleVBhcnNlcjogUGFyc2VyQ29tcG9uZW50PHN0cmluZ1tdPixcbiAgc2VwYXJhdG9yOiBzdHJpbmcsXG4gIHZhbHVlUGFyc2VyOiBQYXJzZXJDb21wb25lbnQ8VD4sXG4pOiBQYXJzZXJDb21wb25lbnQ8eyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0+IHtcbiAgY29uc3QgU2VwYXJhdG9yID0gY2hhcmFjdGVyKHNlcGFyYXRvcik7XG4gIHJldHVybiAoc2Nhbm5lcjogU2Nhbm5lcik6IFBhcnNlUmVzdWx0PHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9PiA9PiB7XG4gICAgY29uc3QgcG9zaXRpb24gPSBzY2FubmVyLnBvc2l0aW9uO1xuICAgIGNvbnN0IGtleSA9IGtleVBhcnNlcihzY2FubmVyKTtcbiAgICBpZiAoIWtleS5vaykgcmV0dXJuIGZhaWx1cmUoKTtcbiAgICBjb25zdCBzZXAgPSBTZXBhcmF0b3Ioc2Nhbm5lcik7XG4gICAgaWYgKCFzZXAub2spIHtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihga2V5L3ZhbHVlIHBhaXIgZG9lc24ndCBoYXZlIFwiJHtzZXBhcmF0b3J9XCJgKTtcbiAgICB9XG4gICAgY29uc3QgdmFsdWUgPSB2YWx1ZVBhcnNlcihzY2FubmVyKTtcbiAgICBpZiAoIXZhbHVlLm9rKSB7XG4gICAgICBjb25zdCBsaW5lRW5kSW5kZXggPSBzY2FubmVyLnNvdXJjZS5pbmRleE9mKFwiXFxuXCIsIHNjYW5uZXIucG9zaXRpb24pO1xuICAgICAgY29uc3QgZW5kUG9zaXRpb24gPSBsaW5lRW5kSW5kZXggPiAwXG4gICAgICAgID8gbGluZUVuZEluZGV4XG4gICAgICAgIDogc2Nhbm5lci5zb3VyY2UubGVuZ3RoO1xuICAgICAgY29uc3QgbGluZSA9IHNjYW5uZXIuc291cmNlLnNsaWNlKHBvc2l0aW9uLCBlbmRQb3NpdGlvbik7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYENhbm5vdCBwYXJzZSB2YWx1ZSBvbiBsaW5lICcke2xpbmV9J2ApO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2Vzcyh1bmZsYXQoa2V5LmJvZHksIHZhbHVlLmJvZHkpKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWVyZ2UoXG4gIHBhcnNlcjogUGFyc2VyQ29tcG9uZW50PHVua25vd25bXT4sXG4pOiBQYXJzZXJDb21wb25lbnQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgcmV0dXJuIChzY2FubmVyOiBTY2FubmVyKTogUGFyc2VSZXN1bHQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+ID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBwYXJzZXIoc2Nhbm5lcik7XG4gICAgaWYgKCFyZXN1bHQub2spIHJldHVybiBmYWlsdXJlKCk7XG4gICAgbGV0IGJvZHkgPSB7fTtcbiAgICBmb3IgKGNvbnN0IHJlY29yZCBvZiByZXN1bHQuYm9keSkge1xuICAgICAgaWYgKHR5cGVvZiByZWNvcmQgPT09IFwib2JqZWN0XCIgJiYgcmVjb3JkICE9PSBudWxsKSB7XG4gICAgICAgIGJvZHkgPSBkZWVwTWVyZ2UoYm9keSwgcmVjb3JkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN1Y2Nlc3MoYm9keSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlcGVhdDxUPihcbiAgcGFyc2VyOiBQYXJzZXJDb21wb25lbnQ8VD4sXG4pOiBQYXJzZXJDb21wb25lbnQ8VFtdPiB7XG4gIHJldHVybiAoc2Nhbm5lcjogU2Nhbm5lcikgPT4ge1xuICAgIGNvbnN0IGJvZHk6IFRbXSA9IFtdO1xuICAgIHdoaWxlICghc2Nhbm5lci5lb2YoKSkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gcGFyc2VyKHNjYW5uZXIpO1xuICAgICAgaWYgKCFyZXN1bHQub2spIGJyZWFrO1xuICAgICAgYm9keS5wdXNoKHJlc3VsdC5ib2R5KTtcbiAgICAgIHNjYW5uZXIubmV4dFVudGlsQ2hhcigpO1xuICAgIH1cbiAgICBpZiAoYm9keS5sZW5ndGggPT09IDApIHJldHVybiBmYWlsdXJlKCk7XG4gICAgcmV0dXJuIHN1Y2Nlc3MoYm9keSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHN1cnJvdW5kPFQ+KFxuICBsZWZ0OiBzdHJpbmcsXG4gIHBhcnNlcjogUGFyc2VyQ29tcG9uZW50PFQ+LFxuICByaWdodDogc3RyaW5nLFxuKTogUGFyc2VyQ29tcG9uZW50PFQ+IHtcbiAgY29uc3QgTGVmdCA9IGNoYXJhY3RlcihsZWZ0KTtcbiAgY29uc3QgUmlnaHQgPSBjaGFyYWN0ZXIocmlnaHQpO1xuICByZXR1cm4gKHNjYW5uZXI6IFNjYW5uZXIpID0+IHtcbiAgICBpZiAoIUxlZnQoc2Nhbm5lcikub2spIHtcbiAgICAgIHJldHVybiBmYWlsdXJlKCk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IHBhcnNlcihzY2FubmVyKTtcbiAgICBpZiAoIXJlc3VsdC5vaykge1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBJbnZhbGlkIHRva2VuIGFmdGVyIFwiJHtsZWZ0fVwiYCk7XG4gICAgfVxuICAgIGlmICghUmlnaHQoc2Nhbm5lcikub2spIHtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgYE5vdCBjbG9zZWQgYnkgXCIke3JpZ2h0fVwiIGFmdGVyIHN0YXJ0ZWQgd2l0aCBcIiR7bGVmdH1cImAsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VzcyhyZXN1bHQuYm9keSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNoYXJhY3RlcihzdHI6IHN0cmluZykge1xuICByZXR1cm4gKHNjYW5uZXI6IFNjYW5uZXIpOiBQYXJzZVJlc3VsdDx2b2lkPiA9PiB7XG4gICAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgICBpZiAoIXNjYW5uZXIuc3RhcnRzV2l0aChzdHIpKSByZXR1cm4gZmFpbHVyZSgpO1xuICAgIHNjYW5uZXIubmV4dChzdHIubGVuZ3RoKTtcbiAgICBzY2FubmVyLnNraXBXaGl0ZXNwYWNlcygpO1xuICAgIHJldHVybiBzdWNjZXNzKHVuZGVmaW5lZCk7XG4gIH07XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQYXJzZXIgY29tcG9uZW50c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuY29uc3QgQkFSRV9LRVlfUkVHRVhQID0gL1tBLVphLXowLTlfLV0rL3k7XG5leHBvcnQgZnVuY3Rpb24gYmFyZUtleShzY2FubmVyOiBTY2FubmVyKTogUGFyc2VSZXN1bHQ8c3RyaW5nPiB7XG4gIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gIGNvbnN0IGtleSA9IHNjYW5uZXIubWF0Y2goQkFSRV9LRVlfUkVHRVhQKT8uWzBdO1xuICBpZiAoIWtleSkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0KGtleS5sZW5ndGgpO1xuICByZXR1cm4gc3VjY2VzcyhrZXkpO1xufVxuXG5mdW5jdGlvbiBlc2NhcGVTZXF1ZW5jZShzY2FubmVyOiBTY2FubmVyKTogUGFyc2VSZXN1bHQ8c3RyaW5nPiB7XG4gIGlmIChzY2FubmVyLmNoYXIoKSAhPT0gXCJcXFxcXCIpIHJldHVybiBmYWlsdXJlKCk7XG4gIHNjYW5uZXIubmV4dCgpO1xuICAvLyBTZWUgaHR0cHM6Ly90b21sLmlvL2VuL3YxLjAuMC1yYy4zI3N0cmluZ1xuICBzd2l0Y2ggKHNjYW5uZXIuY2hhcigpKSB7XG4gICAgY2FzZSBcImJcIjpcbiAgICAgIHNjYW5uZXIubmV4dCgpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3MoXCJcXGJcIik7XG4gICAgY2FzZSBcInRcIjpcbiAgICAgIHNjYW5uZXIubmV4dCgpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3MoXCJcXHRcIik7XG4gICAgY2FzZSBcIm5cIjpcbiAgICAgIHNjYW5uZXIubmV4dCgpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3MoXCJcXG5cIik7XG4gICAgY2FzZSBcImZcIjpcbiAgICAgIHNjYW5uZXIubmV4dCgpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3MoXCJcXGZcIik7XG4gICAgY2FzZSBcInJcIjpcbiAgICAgIHNjYW5uZXIubmV4dCgpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3MoXCJcXHJcIik7XG4gICAgY2FzZSBcInVcIjpcbiAgICBjYXNlIFwiVVwiOiB7XG4gICAgICAvLyBVbmljb2RlIGNoYXJhY3RlclxuICAgICAgY29uc3QgY29kZVBvaW50TGVuID0gc2Nhbm5lci5jaGFyKCkgPT09IFwidVwiID8gNCA6IDY7XG4gICAgICBjb25zdCBjb2RlUG9pbnQgPSBwYXJzZUludChcIjB4XCIgKyBzY2FubmVyLnNsaWNlKDEsIDEgKyBjb2RlUG9pbnRMZW4pLCAxNik7XG4gICAgICBjb25zdCBzdHIgPSBTdHJpbmcuZnJvbUNvZGVQb2ludChjb2RlUG9pbnQpO1xuICAgICAgc2Nhbm5lci5uZXh0KGNvZGVQb2ludExlbiArIDEpO1xuICAgICAgcmV0dXJuIHN1Y2Nlc3Moc3RyKTtcbiAgICB9XG4gICAgY2FzZSAnXCInOlxuICAgICAgc2Nhbm5lci5uZXh0KCk7XG4gICAgICByZXR1cm4gc3VjY2VzcygnXCInKTtcbiAgICBjYXNlIFwiXFxcXFwiOlxuICAgICAgc2Nhbm5lci5uZXh0KCk7XG4gICAgICByZXR1cm4gc3VjY2VzcyhcIlxcXFxcIik7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgYEludmFsaWQgZXNjYXBlIHNlcXVlbmNlOiBcXFxcJHtzY2FubmVyLmNoYXIoKX1gLFxuICAgICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFzaWNTdHJpbmcoc2Nhbm5lcjogU2Nhbm5lcik6IFBhcnNlUmVzdWx0PHN0cmluZz4ge1xuICBzY2FubmVyLnNraXBXaGl0ZXNwYWNlcygpO1xuICBpZiAoc2Nhbm5lci5jaGFyKCkgIT09ICdcIicpIHJldHVybiBmYWlsdXJlKCk7XG4gIHNjYW5uZXIubmV4dCgpO1xuICBjb25zdCBhY2MgPSBbXTtcbiAgd2hpbGUgKHNjYW5uZXIuY2hhcigpICE9PSAnXCInICYmICFzY2FubmVyLmVvZigpKSB7XG4gICAgaWYgKHNjYW5uZXIuY2hhcigpID09PSBcIlxcblwiKSB7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXCJTaW5nbGUtbGluZSBzdHJpbmcgY2Fubm90IGNvbnRhaW4gRU9MXCIpO1xuICAgIH1cbiAgICBjb25zdCBlc2NhcGVkQ2hhciA9IGVzY2FwZVNlcXVlbmNlKHNjYW5uZXIpO1xuICAgIGlmIChlc2NhcGVkQ2hhci5vaykge1xuICAgICAgYWNjLnB1c2goZXNjYXBlZENoYXIuYm9keSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjYy5wdXNoKHNjYW5uZXIuY2hhcigpKTtcbiAgICAgIHNjYW5uZXIubmV4dCgpO1xuICAgIH1cbiAgfVxuICBpZiAoc2Nhbm5lci5lb2YoKSkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgIGBTaW5nbGUtbGluZSBzdHJpbmcgaXMgbm90IGNsb3NlZDpcXG4ke2FjYy5qb2luKFwiXCIpfWAsXG4gICAgKTtcbiAgfVxuICBzY2FubmVyLm5leHQoKTsgLy8gc2tpcCBsYXN0ICdcIlwiXG4gIHJldHVybiBzdWNjZXNzKGFjYy5qb2luKFwiXCIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpdGVyYWxTdHJpbmcoc2Nhbm5lcjogU2Nhbm5lcik6IFBhcnNlUmVzdWx0PHN0cmluZz4ge1xuICBzY2FubmVyLnNraXBXaGl0ZXNwYWNlcygpO1xuICBpZiAoc2Nhbm5lci5jaGFyKCkgIT09IFwiJ1wiKSByZXR1cm4gZmFpbHVyZSgpO1xuICBzY2FubmVyLm5leHQoKTtcbiAgY29uc3QgYWNjOiBzdHJpbmdbXSA9IFtdO1xuICB3aGlsZSAoc2Nhbm5lci5jaGFyKCkgIT09IFwiJ1wiICYmICFzY2FubmVyLmVvZigpKSB7XG4gICAgaWYgKHNjYW5uZXIuY2hhcigpID09PSBcIlxcblwiKSB7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXCJTaW5nbGUtbGluZSBzdHJpbmcgY2Fubm90IGNvbnRhaW4gRU9MXCIpO1xuICAgIH1cbiAgICBhY2MucHVzaChzY2FubmVyLmNoYXIoKSk7XG4gICAgc2Nhbm5lci5uZXh0KCk7XG4gIH1cbiAgaWYgKHNjYW5uZXIuZW9mKCkpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICBgU2luZ2xlLWxpbmUgc3RyaW5nIGlzIG5vdCBjbG9zZWQ6XFxuJHthY2Muam9pbihcIlwiKX1gLFxuICAgICk7XG4gIH1cbiAgc2Nhbm5lci5uZXh0KCk7IC8vIHNraXAgbGFzdCBcIidcIlxuICByZXR1cm4gc3VjY2VzcyhhY2Muam9pbihcIlwiKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtdWx0aWxpbmVCYXNpY1N0cmluZyhcbiAgc2Nhbm5lcjogU2Nhbm5lcixcbik6IFBhcnNlUmVzdWx0PHN0cmluZz4ge1xuICBzY2FubmVyLnNraXBXaGl0ZXNwYWNlcygpO1xuICBpZiAoIXNjYW5uZXIuc3RhcnRzV2l0aCgnXCJcIlwiJykpIHJldHVybiBmYWlsdXJlKCk7XG4gIHNjYW5uZXIubmV4dCgzKTtcbiAgaWYgKHNjYW5uZXIuY2hhcigpID09PSBcIlxcblwiKSB7XG4gICAgLy8gVGhlIGZpcnN0IG5ld2xpbmUgKExGKSBpcyB0cmltbWVkXG4gICAgc2Nhbm5lci5uZXh0KCk7XG4gIH0gZWxzZSBpZiAoc2Nhbm5lci5zdGFydHNXaXRoKFwiXFxyXFxuXCIpKSB7XG4gICAgLy8gVGhlIGZpcnN0IG5ld2xpbmUgKENSTEYpIGlzIHRyaW1tZWRcbiAgICBzY2FubmVyLm5leHQoMik7XG4gIH1cbiAgY29uc3QgYWNjOiBzdHJpbmdbXSA9IFtdO1xuICB3aGlsZSAoIXNjYW5uZXIuc3RhcnRzV2l0aCgnXCJcIlwiJykgJiYgIXNjYW5uZXIuZW9mKCkpIHtcbiAgICAvLyBsaW5lIGVuZGluZyBiYWNrc2xhc2hcbiAgICBpZiAoc2Nhbm5lci5zdGFydHNXaXRoKFwiXFxcXFxcblwiKSkge1xuICAgICAgc2Nhbm5lci5uZXh0KCk7XG4gICAgICBzY2FubmVyLm5leHRVbnRpbENoYXIoeyBza2lwQ29tbWVudHM6IGZhbHNlIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfSBlbHNlIGlmIChzY2FubmVyLnN0YXJ0c1dpdGgoXCJcXFxcXFxyXFxuXCIpKSB7XG4gICAgICBzY2FubmVyLm5leHQoKTtcbiAgICAgIHNjYW5uZXIubmV4dFVudGlsQ2hhcih7IHNraXBDb21tZW50czogZmFsc2UgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgZXNjYXBlZENoYXIgPSBlc2NhcGVTZXF1ZW5jZShzY2FubmVyKTtcbiAgICBpZiAoZXNjYXBlZENoYXIub2spIHtcbiAgICAgIGFjYy5wdXNoKGVzY2FwZWRDaGFyLmJvZHkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhY2MucHVzaChzY2FubmVyLmNoYXIoKSk7XG4gICAgICBzY2FubmVyLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBpZiAoc2Nhbm5lci5lb2YoKSkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgIGBNdWx0aS1saW5lIHN0cmluZyBpcyBub3QgY2xvc2VkOlxcbiR7YWNjLmpvaW4oXCJcIil9YCxcbiAgICApO1xuICB9XG4gIC8vIGlmIGVuZHMgd2l0aCA0IGBcImAsIHB1c2ggdGhlIGZpc3QgYFwiYCB0byBzdHJpbmdcbiAgaWYgKHNjYW5uZXIuY2hhcigzKSA9PT0gJ1wiJykge1xuICAgIGFjYy5wdXNoKCdcIicpO1xuICAgIHNjYW5uZXIubmV4dCgpO1xuICB9XG4gIHNjYW5uZXIubmV4dCgzKTsgLy8gc2tpcCBsYXN0ICdcIlwiXCJcIlxuICByZXR1cm4gc3VjY2VzcyhhY2Muam9pbihcIlwiKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtdWx0aWxpbmVMaXRlcmFsU3RyaW5nKFxuICBzY2FubmVyOiBTY2FubmVyLFxuKTogUGFyc2VSZXN1bHQ8c3RyaW5nPiB7XG4gIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gIGlmICghc2Nhbm5lci5zdGFydHNXaXRoKFwiJycnXCIpKSByZXR1cm4gZmFpbHVyZSgpO1xuICBzY2FubmVyLm5leHQoMyk7XG4gIGlmIChzY2FubmVyLmNoYXIoKSA9PT0gXCJcXG5cIikge1xuICAgIC8vIFRoZSBmaXJzdCBuZXdsaW5lIChMRikgaXMgdHJpbW1lZFxuICAgIHNjYW5uZXIubmV4dCgpO1xuICB9IGVsc2UgaWYgKHNjYW5uZXIuc3RhcnRzV2l0aChcIlxcclxcblwiKSkge1xuICAgIC8vIFRoZSBmaXJzdCBuZXdsaW5lIChDUkxGKSBpcyB0cmltbWVkXG4gICAgc2Nhbm5lci5uZXh0KDIpO1xuICB9XG4gIGNvbnN0IGFjYzogc3RyaW5nW10gPSBbXTtcbiAgd2hpbGUgKCFzY2FubmVyLnN0YXJ0c1dpdGgoXCInJydcIikgJiYgIXNjYW5uZXIuZW9mKCkpIHtcbiAgICBhY2MucHVzaChzY2FubmVyLmNoYXIoKSk7XG4gICAgc2Nhbm5lci5uZXh0KCk7XG4gIH1cbiAgaWYgKHNjYW5uZXIuZW9mKCkpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXG4gICAgICBgTXVsdGktbGluZSBzdHJpbmcgaXMgbm90IGNsb3NlZDpcXG4ke2FjYy5qb2luKFwiXCIpfWAsXG4gICAgKTtcbiAgfVxuICAvLyBpZiBlbmRzIHdpdGggNCBgJ2AsIHB1c2ggdGhlIGZpc3QgYCdgIHRvIHN0cmluZ1xuICBpZiAoc2Nhbm5lci5jaGFyKDMpID09PSBcIidcIikge1xuICAgIGFjYy5wdXNoKFwiJ1wiKTtcbiAgICBzY2FubmVyLm5leHQoKTtcbiAgfVxuICBzY2FubmVyLm5leHQoMyk7IC8vIHNraXAgbGFzdCBcIicnJ1wiXG4gIHJldHVybiBzdWNjZXNzKGFjYy5qb2luKFwiXCIpKTtcbn1cblxuY29uc3QgQk9PTEVBTl9SRUdFWFAgPSAvKD86dHJ1ZXxmYWxzZSlcXGIveTtcbmV4cG9ydCBmdW5jdGlvbiBib29sZWFuKHNjYW5uZXI6IFNjYW5uZXIpOiBQYXJzZVJlc3VsdDxib29sZWFuPiB7XG4gIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gIGNvbnN0IG1hdGNoID0gc2Nhbm5lci5tYXRjaChCT09MRUFOX1JFR0VYUCk7XG4gIGlmICghbWF0Y2gpIHJldHVybiBmYWlsdXJlKCk7XG4gIGNvbnN0IHN0cmluZyA9IG1hdGNoWzBdO1xuICBzY2FubmVyLm5leHQoc3RyaW5nLmxlbmd0aCk7XG4gIGNvbnN0IHZhbHVlID0gc3RyaW5nID09PSBcInRydWVcIjtcbiAgcmV0dXJuIHN1Y2Nlc3ModmFsdWUpO1xufVxuXG5jb25zdCBJTkZJTklUWV9NQVAgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPihbXG4gIFtcImluZlwiLCBJbmZpbml0eV0sXG4gIFtcIitpbmZcIiwgSW5maW5pdHldLFxuICBbXCItaW5mXCIsIC1JbmZpbml0eV0sXG5dKTtcbmNvbnN0IElORklOSVRZX1JFR0VYUCA9IC9bKy1dP2luZlxcYi95O1xuZXhwb3J0IGZ1bmN0aW9uIGluZmluaXR5KHNjYW5uZXI6IFNjYW5uZXIpOiBQYXJzZVJlc3VsdDxudW1iZXI+IHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgY29uc3QgbWF0Y2ggPSBzY2FubmVyLm1hdGNoKElORklOSVRZX1JFR0VYUCk7XG4gIGlmICghbWF0Y2gpIHJldHVybiBmYWlsdXJlKCk7XG4gIGNvbnN0IHN0cmluZyA9IG1hdGNoWzBdO1xuICBzY2FubmVyLm5leHQoc3RyaW5nLmxlbmd0aCk7XG4gIGNvbnN0IHZhbHVlID0gSU5GSU5JVFlfTUFQLmdldChzdHJpbmcpITtcbiAgcmV0dXJuIHN1Y2Nlc3ModmFsdWUpO1xufVxuXG5jb25zdCBOQU5fUkVHRVhQID0gL1srLV0/bmFuXFxiL3k7XG5leHBvcnQgZnVuY3Rpb24gbmFuKHNjYW5uZXI6IFNjYW5uZXIpOiBQYXJzZVJlc3VsdDxudW1iZXI+IHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgY29uc3QgbWF0Y2ggPSBzY2FubmVyLm1hdGNoKE5BTl9SRUdFWFApO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gZmFpbHVyZSgpO1xuICBjb25zdCBzdHJpbmcgPSBtYXRjaFswXTtcbiAgc2Nhbm5lci5uZXh0KHN0cmluZy5sZW5ndGgpO1xuICBjb25zdCB2YWx1ZSA9IE5hTjtcbiAgcmV0dXJuIHN1Y2Nlc3ModmFsdWUpO1xufVxuXG5leHBvcnQgY29uc3QgZG90dGVkS2V5ID0gam9pbjEob3IoW2JhcmVLZXksIGJhc2ljU3RyaW5nLCBsaXRlcmFsU3RyaW5nXSksIFwiLlwiKTtcblxuY29uc3QgQklOQVJZX1JFR0VYUCA9IC8wYlswMV0rKD86X1swMV0rKSpcXGIveTtcbmV4cG9ydCBmdW5jdGlvbiBiaW5hcnkoc2Nhbm5lcjogU2Nhbm5lcik6IFBhcnNlUmVzdWx0PG51bWJlciB8IHN0cmluZz4ge1xuICBzY2FubmVyLnNraXBXaGl0ZXNwYWNlcygpO1xuICBjb25zdCBtYXRjaCA9IHNjYW5uZXIubWF0Y2goQklOQVJZX1JFR0VYUCk/LlswXTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0KG1hdGNoLmxlbmd0aCk7XG4gIGNvbnN0IHZhbHVlID0gbWF0Y2guc2xpY2UoMikucmVwbGFjZUFsbChcIl9cIiwgXCJcIik7XG4gIGNvbnN0IG51bWJlciA9IHBhcnNlSW50KHZhbHVlLCAyKTtcbiAgcmV0dXJuIGlzTmFOKG51bWJlcikgPyBmYWlsdXJlKCkgOiBzdWNjZXNzKG51bWJlcik7XG59XG5cbmNvbnN0IE9DVEFMX1JFR0VYUCA9IC8wb1swLTddKyg/Ol9bMC03XSspKlxcYi95O1xuZXhwb3J0IGZ1bmN0aW9uIG9jdGFsKHNjYW5uZXI6IFNjYW5uZXIpOiBQYXJzZVJlc3VsdDxudW1iZXIgfCBzdHJpbmc+IHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgY29uc3QgbWF0Y2ggPSBzY2FubmVyLm1hdGNoKE9DVEFMX1JFR0VYUCk/LlswXTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0KG1hdGNoLmxlbmd0aCk7XG4gIGNvbnN0IHZhbHVlID0gbWF0Y2guc2xpY2UoMikucmVwbGFjZUFsbChcIl9cIiwgXCJcIik7XG4gIGNvbnN0IG51bWJlciA9IHBhcnNlSW50KHZhbHVlLCA4KTtcbiAgcmV0dXJuIGlzTmFOKG51bWJlcikgPyBmYWlsdXJlKCkgOiBzdWNjZXNzKG51bWJlcik7XG59XG5cbmNvbnN0IEhFWF9SRUdFWFAgPSAvMHhbMC05YS1mXSsoPzpfWzAtOWEtZl0rKSpcXGIveWk7XG5leHBvcnQgZnVuY3Rpb24gaGV4KHNjYW5uZXI6IFNjYW5uZXIpOiBQYXJzZVJlc3VsdDxudW1iZXIgfCBzdHJpbmc+IHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgY29uc3QgbWF0Y2ggPSBzY2FubmVyLm1hdGNoKEhFWF9SRUdFWFApPy5bMF07XG4gIGlmICghbWF0Y2gpIHJldHVybiBmYWlsdXJlKCk7XG4gIHNjYW5uZXIubmV4dChtYXRjaC5sZW5ndGgpO1xuICBjb25zdCB2YWx1ZSA9IG1hdGNoLnNsaWNlKDIpLnJlcGxhY2VBbGwoXCJfXCIsIFwiXCIpO1xuICBjb25zdCBudW1iZXIgPSBwYXJzZUludCh2YWx1ZSwgMTYpO1xuICByZXR1cm4gaXNOYU4obnVtYmVyKSA/IGZhaWx1cmUoKSA6IHN1Y2Nlc3MobnVtYmVyKTtcbn1cblxuY29uc3QgSU5URUdFUl9SRUdFWFAgPSAvWystXT9bMC05XSsoPzpfWzAtOV0rKSpcXGIveTtcbmV4cG9ydCBmdW5jdGlvbiBpbnRlZ2VyKHNjYW5uZXI6IFNjYW5uZXIpOiBQYXJzZVJlc3VsdDxudW1iZXIgfCBzdHJpbmc+IHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcbiAgY29uc3QgbWF0Y2ggPSBzY2FubmVyLm1hdGNoKElOVEVHRVJfUkVHRVhQKT8uWzBdO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gZmFpbHVyZSgpO1xuICBzY2FubmVyLm5leHQobWF0Y2gubGVuZ3RoKTtcbiAgY29uc3QgdmFsdWUgPSBtYXRjaC5yZXBsYWNlQWxsKFwiX1wiLCBcIlwiKTtcbiAgY29uc3QgaW50ID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgcmV0dXJuIHN1Y2Nlc3MoaW50KTtcbn1cblxuY29uc3QgRkxPQVRfUkVHRVhQID1cbiAgL1srLV0/WzAtOV0rKD86X1swLTldKykqKD86XFwuWzAtOV0rKD86X1swLTldKykqKT8oPzplWystXT9bMC05XSsoPzpfWzAtOV0rKSopP1xcYi95aTtcbmV4cG9ydCBmdW5jdGlvbiBmbG9hdChzY2FubmVyOiBTY2FubmVyKTogUGFyc2VSZXN1bHQ8bnVtYmVyPiB7XG4gIHNjYW5uZXIuc2tpcFdoaXRlc3BhY2VzKCk7XG4gIGNvbnN0IG1hdGNoID0gc2Nhbm5lci5tYXRjaChGTE9BVF9SRUdFWFApPy5bMF07XG4gIGlmICghbWF0Y2gpIHJldHVybiBmYWlsdXJlKCk7XG4gIHNjYW5uZXIubmV4dChtYXRjaC5sZW5ndGgpO1xuICBjb25zdCB2YWx1ZSA9IG1hdGNoLnJlcGxhY2VBbGwoXCJfXCIsIFwiXCIpO1xuICBjb25zdCBmbG9hdCA9IHBhcnNlRmxvYXQodmFsdWUpO1xuICBpZiAoaXNOYU4oZmxvYXQpKSByZXR1cm4gZmFpbHVyZSgpO1xuICByZXR1cm4gc3VjY2VzcyhmbG9hdCk7XG59XG5cbmNvbnN0IERBVEVfVElNRV9SRUdFWFAgPSAvXFxkezR9LVxcZHsyfS1cXGR7Mn0oPzpbIDAtOVRaLjorLV0rKT9cXGIveTtcbmV4cG9ydCBmdW5jdGlvbiBkYXRlVGltZShzY2FubmVyOiBTY2FubmVyKTogUGFyc2VSZXN1bHQ8RGF0ZT4ge1xuICBzY2FubmVyLnNraXBXaGl0ZXNwYWNlcygpO1xuICAvLyBleGFtcGxlOiAxOTc5LTA1LTI3XG4gIGNvbnN0IG1hdGNoID0gc2Nhbm5lci5tYXRjaChEQVRFX1RJTUVfUkVHRVhQKT8uWzBdO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gZmFpbHVyZSgpO1xuICBzY2FubmVyLm5leHQobWF0Y2gubGVuZ3RoKTtcbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKG1hdGNoLnRyaW0oKSk7XG4gIC8vIGludmFsaWQgZGF0ZVxuICBpZiAoaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBJbnZhbGlkIGRhdGUgc3RyaW5nIFwiJHttYXRjaH1cImApO1xuICB9XG4gIHJldHVybiBzdWNjZXNzKGRhdGUpO1xufVxuXG5jb25zdCBMT0NBTF9USU1FX1JFR0VYUCA9IC8oXFxkezJ9KTooXFxkezJ9KTooXFxkezJ9KSg/OlxcLlswLTldKyk/XFxiL3k7XG5leHBvcnQgZnVuY3Rpb24gbG9jYWxUaW1lKHNjYW5uZXI6IFNjYW5uZXIpOiBQYXJzZVJlc3VsdDxzdHJpbmc+IHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcblxuICBjb25zdCBtYXRjaCA9IHNjYW5uZXIubWF0Y2goTE9DQUxfVElNRV9SRUdFWFApPy5bMF07XG4gIGlmICghbWF0Y2gpIHJldHVybiBmYWlsdXJlKCk7XG4gIHNjYW5uZXIubmV4dChtYXRjaC5sZW5ndGgpO1xuICByZXR1cm4gc3VjY2VzcyhtYXRjaCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheVZhbHVlKHNjYW5uZXI6IFNjYW5uZXIpOiBQYXJzZVJlc3VsdDx1bmtub3duW10+IHtcbiAgc2Nhbm5lci5za2lwV2hpdGVzcGFjZXMoKTtcblxuICBpZiAoc2Nhbm5lci5jaGFyKCkgIT09IFwiW1wiKSByZXR1cm4gZmFpbHVyZSgpO1xuICBzY2FubmVyLm5leHQoKTtcblxuICBjb25zdCBhcnJheTogdW5rbm93bltdID0gW107XG4gIHdoaWxlICghc2Nhbm5lci5lb2YoKSkge1xuICAgIHNjYW5uZXIubmV4dFVudGlsQ2hhcigpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHZhbHVlKHNjYW5uZXIpO1xuICAgIGlmICghcmVzdWx0Lm9rKSBicmVhaztcbiAgICBhcnJheS5wdXNoKHJlc3VsdC5ib2R5KTtcbiAgICBzY2FubmVyLnNraXBXaGl0ZXNwYWNlcygpO1xuICAgIC8vIG1heSBoYXZlIGEgbmV4dCBpdGVtLCBidXQgdHJhaWxpbmcgY29tbWEgaXMgYWxsb3dlZCBhdCBhcnJheVxuICAgIGlmIChzY2FubmVyLmNoYXIoKSAhPT0gXCIsXCIpIGJyZWFrO1xuICAgIHNjYW5uZXIubmV4dCgpO1xuICB9XG4gIHNjYW5uZXIubmV4dFVudGlsQ2hhcigpO1xuXG4gIGlmIChzY2FubmVyLmNoYXIoKSAhPT0gXCJdXCIpIHRocm93IG5ldyBTeW50YXhFcnJvcihcIkFycmF5IGlzIG5vdCBjbG9zZWRcIik7XG4gIHNjYW5uZXIubmV4dCgpO1xuXG4gIHJldHVybiBzdWNjZXNzKGFycmF5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlubGluZVRhYmxlKFxuICBzY2FubmVyOiBTY2FubmVyLFxuKTogUGFyc2VSZXN1bHQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgc2Nhbm5lci5uZXh0VW50aWxDaGFyKCk7XG4gIGlmIChzY2FubmVyLmNoYXIoMSkgPT09IFwifVwiKSB7XG4gICAgc2Nhbm5lci5uZXh0KDIpO1xuICAgIHJldHVybiBzdWNjZXNzKHt9KTtcbiAgfVxuICBjb25zdCBwYWlycyA9IHN1cnJvdW5kKFwie1wiLCBqb2luKHBhaXIsIFwiLFwiKSwgXCJ9XCIpKHNjYW5uZXIpO1xuICBpZiAoIXBhaXJzLm9rKSByZXR1cm4gZmFpbHVyZSgpO1xuICBsZXQgdGFibGUgPSB7fTtcbiAgZm9yIChjb25zdCBwYWlyIG9mIHBhaXJzLmJvZHkpIHtcbiAgICB0YWJsZSA9IGRlZXBNZXJnZSh0YWJsZSwgcGFpcik7XG4gIH1cbiAgcmV0dXJuIHN1Y2Nlc3ModGFibGUpO1xufVxuXG5leHBvcnQgY29uc3QgdmFsdWUgPSBvcihbXG4gIG11bHRpbGluZUJhc2ljU3RyaW5nLFxuICBtdWx0aWxpbmVMaXRlcmFsU3RyaW5nLFxuICBiYXNpY1N0cmluZyxcbiAgbGl0ZXJhbFN0cmluZyxcbiAgYm9vbGVhbixcbiAgaW5maW5pdHksXG4gIG5hbixcbiAgZGF0ZVRpbWUsXG4gIGxvY2FsVGltZSxcbiAgYmluYXJ5LFxuICBvY3RhbCxcbiAgaGV4LFxuICBmbG9hdCxcbiAgaW50ZWdlcixcbiAgYXJyYXlWYWx1ZSxcbiAgaW5saW5lVGFibGUsXG5dKTtcblxuZXhwb3J0IGNvbnN0IHBhaXIgPSBrdihkb3R0ZWRLZXksIFwiPVwiLCB2YWx1ZSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBibG9jayhcbiAgc2Nhbm5lcjogU2Nhbm5lcixcbik6IFBhcnNlUmVzdWx0PEJsb2NrUGFyc2VSZXN1bHRCb2R5PiB7XG4gIHNjYW5uZXIubmV4dFVudGlsQ2hhcigpO1xuICBjb25zdCByZXN1bHQgPSBtZXJnZShyZXBlYXQocGFpcikpKHNjYW5uZXIpO1xuICBpZiAocmVzdWx0Lm9rKSByZXR1cm4gc3VjY2Vzcyh7IHR5cGU6IFwiQmxvY2tcIiwgdmFsdWU6IHJlc3VsdC5ib2R5IH0pO1xuICByZXR1cm4gZmFpbHVyZSgpO1xufVxuXG5leHBvcnQgY29uc3QgdGFibGVIZWFkZXIgPSBzdXJyb3VuZChcIltcIiwgZG90dGVkS2V5LCBcIl1cIik7XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZShzY2FubmVyOiBTY2FubmVyKTogUGFyc2VSZXN1bHQ8QmxvY2tQYXJzZVJlc3VsdEJvZHk+IHtcbiAgc2Nhbm5lci5uZXh0VW50aWxDaGFyKCk7XG4gIGNvbnN0IGhlYWRlciA9IHRhYmxlSGVhZGVyKHNjYW5uZXIpO1xuICBpZiAoIWhlYWRlci5vaykgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0VW50aWxDaGFyKCk7XG4gIGNvbnN0IGIgPSBibG9jayhzY2FubmVyKTtcbiAgcmV0dXJuIHN1Y2Nlc3Moe1xuICAgIHR5cGU6IFwiVGFibGVcIixcbiAgICBrZXk6IGhlYWRlci5ib2R5LFxuICAgIHZhbHVlOiBiLm9rID8gYi5ib2R5LnZhbHVlIDoge30sXG4gIH0pO1xufVxuXG5leHBvcnQgY29uc3QgdGFibGVBcnJheUhlYWRlciA9IHN1cnJvdW5kKFwiW1tcIiwgZG90dGVkS2V5LCBcIl1dXCIpO1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGVBcnJheShcbiAgc2Nhbm5lcjogU2Nhbm5lcixcbik6IFBhcnNlUmVzdWx0PEJsb2NrUGFyc2VSZXN1bHRCb2R5PiB7XG4gIHNjYW5uZXIubmV4dFVudGlsQ2hhcigpO1xuICBjb25zdCBoZWFkZXIgPSB0YWJsZUFycmF5SGVhZGVyKHNjYW5uZXIpO1xuICBpZiAoIWhlYWRlci5vaykgcmV0dXJuIGZhaWx1cmUoKTtcbiAgc2Nhbm5lci5uZXh0VW50aWxDaGFyKCk7XG4gIGNvbnN0IGIgPSBibG9jayhzY2FubmVyKTtcbiAgcmV0dXJuIHN1Y2Nlc3Moe1xuICAgIHR5cGU6IFwiVGFibGVBcnJheVwiLFxuICAgIGtleTogaGVhZGVyLmJvZHksXG4gICAgdmFsdWU6IGIub2sgPyBiLmJvZHkudmFsdWUgOiB7fSxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b21sKFxuICBzY2FubmVyOiBTY2FubmVyLFxuKTogUGFyc2VSZXN1bHQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgY29uc3QgYmxvY2tzID0gcmVwZWF0KG9yKFtibG9jaywgdGFibGVBcnJheSwgdGFibGVdKSkoc2Nhbm5lcik7XG4gIGxldCBib2R5ID0ge307XG4gIGlmICghYmxvY2tzLm9rKSByZXR1cm4gc3VjY2Vzcyhib2R5KTtcbiAgZm9yIChjb25zdCBibG9jayBvZiBibG9ja3MuYm9keSkge1xuICAgIHN3aXRjaCAoYmxvY2sudHlwZSkge1xuICAgICAgY2FzZSBcIkJsb2NrXCI6IHtcbiAgICAgICAgYm9keSA9IGRlZXBNZXJnZShib2R5LCBibG9jay52YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBcIlRhYmxlXCI6IHtcbiAgICAgICAgZGVlcEFzc2lnbldpdGhUYWJsZShib2R5LCBibG9jayk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBcIlRhYmxlQXJyYXlcIjoge1xuICAgICAgICBkZWVwQXNzaWduV2l0aFRhYmxlKGJvZHksIGJsb2NrKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBzdWNjZXNzKGJvZHkpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVQYXJzZUVycm9yTWVzc2FnZShzY2FubmVyOiBTY2FubmVyLCBtZXNzYWdlOiBzdHJpbmcpIHtcbiAgY29uc3Qgc3RyaW5nID0gc2Nhbm5lci5zb3VyY2Uuc2xpY2UoMCwgc2Nhbm5lci5wb3NpdGlvbik7XG4gIGNvbnN0IGxpbmVzID0gc3RyaW5nLnNwbGl0KFwiXFxuXCIpO1xuICBjb25zdCByb3cgPSBsaW5lcy5sZW5ndGg7XG4gIGNvbnN0IGNvbHVtbiA9IGxpbmVzLmF0KC0xKT8ubGVuZ3RoID8/IDA7XG4gIHJldHVybiBgUGFyc2UgZXJyb3Igb24gbGluZSAke3Jvd30sIGNvbHVtbiAke2NvbHVtbn06ICR7bWVzc2FnZX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VyRmFjdG9yeTxUPihwYXJzZXI6IFBhcnNlckNvbXBvbmVudDxUPikge1xuICByZXR1cm4gKHRvbWxTdHJpbmc6IHN0cmluZyk6IFQgPT4ge1xuICAgIGNvbnN0IHNjYW5uZXIgPSBuZXcgU2Nhbm5lcih0b21sU3RyaW5nKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gcGFyc2VyKHNjYW5uZXIpO1xuICAgICAgaWYgKHJlc3VsdC5vayAmJiBzY2FubmVyLmVvZigpKSByZXR1cm4gcmVzdWx0LmJvZHk7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYFVuZXhwZWN0ZWQgY2hhcmFjdGVyOiBcIiR7c2Nhbm5lci5jaGFyKCl9XCJgO1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGNyZWF0ZVBhcnNlRXJyb3JNZXNzYWdlKHNjYW5uZXIsIG1lc3NhZ2UpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGNyZWF0ZVBhcnNlRXJyb3JNZXNzYWdlKHNjYW5uZXIsIGVycm9yLm1lc3NhZ2UpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBcIkludmFsaWQgZXJyb3IgdHlwZSBjYXVnaHRcIjtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihjcmVhdGVQYXJzZUVycm9yTWVzc2FnZShzY2FubmVyLCBtZXNzYWdlKSk7XG4gICAgfVxuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7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 +// denoCacheMetadata=2174145515825431452,13174816863807127724
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/a20a0a0104176c5284237e906fcc75e949c8c412c98ff9e2c27b71d6401bc18c.js b/vendor/gen/https/jsr.io/a20a0a0104176c5284237e906fcc75e949c8c412c98ff9e2c27b71d6401bc18c.js new file mode 100644 index 0000000..de4afe9 --- /dev/null +++ b/vendor/gen/https/jsr.io/a20a0a0104176c5284237e906fcc75e949c8c412c98ff9e2c27b71d6401bc18c.js @@ -0,0 +1,37 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * Returns `true` if the suffix array appears at the end of the source array, + * `false` otherwise. + * + * The complexity of this function is `O(suffix.length)`. + * + * @param source Source array to check. + * @param suffix Suffix array to check for. + * @returns `true` if the suffix array appears at the end of the source array, + * `false` otherwise. + * + * @example Basic usage + * ```ts + * import { endsWith } from "@std/bytes/ends-with"; + * import { assertEquals } from "@std/assert"; + * + * const source = new Uint8Array([0, 1, 2, 1, 2, 1, 2, 3]); + * const suffix = new Uint8Array([1, 2, 3]); + * + * assertEquals(endsWith(source, suffix), true); + * ``` + */ export function endsWith(source, suffix) { + const diff = source.length - suffix.length; + if (diff < 0) { + return false; + } + for(let i = suffix.length - 1; i >= 0; i--){ + if (source[diff + i] !== suffix[i]) { + return false; + } + } + return true; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvYnl0ZXMvMS4wLjYvZW5kc193aXRoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbi8qKlxuICogUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHN1ZmZpeCBhcnJheSBhcHBlYXJzIGF0IHRoZSBlbmQgb2YgdGhlIHNvdXJjZSBhcnJheSxcbiAqIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICpcbiAqIFRoZSBjb21wbGV4aXR5IG9mIHRoaXMgZnVuY3Rpb24gaXMgYE8oc3VmZml4Lmxlbmd0aClgLlxuICpcbiAqIEBwYXJhbSBzb3VyY2UgU291cmNlIGFycmF5IHRvIGNoZWNrLlxuICogQHBhcmFtIHN1ZmZpeCBTdWZmaXggYXJyYXkgdG8gY2hlY2sgZm9yLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBzdWZmaXggYXJyYXkgYXBwZWFycyBhdCB0aGUgZW5kIG9mIHRoZSBzb3VyY2UgYXJyYXksXG4gKiBgZmFsc2VgIG90aGVyd2lzZS5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGVuZHNXaXRoIH0gZnJvbSBcIkBzdGQvYnl0ZXMvZW5kcy13aXRoXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBzb3VyY2UgPSBuZXcgVWludDhBcnJheShbMCwgMSwgMiwgMSwgMiwgMSwgMiwgM10pO1xuICogY29uc3Qgc3VmZml4ID0gbmV3IFVpbnQ4QXJyYXkoWzEsIDIsIDNdKTtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoZW5kc1dpdGgoc291cmNlLCBzdWZmaXgpLCB0cnVlKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5kc1dpdGgoc291cmNlOiBVaW50OEFycmF5LCBzdWZmaXg6IFVpbnQ4QXJyYXkpOiBib29sZWFuIHtcbiAgY29uc3QgZGlmZiA9IHNvdXJjZS5sZW5ndGggLSBzdWZmaXgubGVuZ3RoO1xuICBpZiAoZGlmZiA8IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgZm9yIChsZXQgaSA9IHN1ZmZpeC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmIChzb3VyY2VbZGlmZiArIGldICE9PSBzdWZmaXhbaV0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBcUJDLEdBQ0QsT0FBTyxTQUFTLFNBQVMsTUFBa0IsRUFBRSxNQUFrQjtFQUM3RCxNQUFNLE9BQU8sT0FBTyxNQUFNLEdBQUcsT0FBTyxNQUFNO0VBQzFDLElBQUksT0FBTyxHQUFHO0lBQ1osT0FBTztFQUNUO0VBQ0EsSUFBSyxJQUFJLElBQUksT0FBTyxNQUFNLEdBQUcsR0FBRyxLQUFLLEdBQUcsSUFBSztJQUMzQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxNQUFNLENBQUMsRUFBRSxFQUFFO01BQ2xDLE9BQU87SUFDVDtFQUNGO0VBQ0EsT0FBTztBQUNUIn0= +// denoCacheMetadata=13836805235957356807,1940362264811181520
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/a274509fe14a74ce9d9ee5de63590df49825b9f75f011b3f6fbb8806ff0e8d84.js b/vendor/gen/https/jsr.io/a274509fe14a74ce9d9ee5de63590df49825b9f75f011b3f6fbb8806ff0e8d84.js new file mode 100644 index 0000000..186c154 --- /dev/null +++ b/vendor/gen/https/jsr.io/a274509fe14a74ce9d9ee5de63590df49825b9f75f011b3f6fbb8806ff0e8d84.js @@ -0,0 +1,40 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { parse as posixParse } from "./posix/parse.ts"; +import { parse as windowsParse } from "./windows/parse.ts"; +/** + * Return an object containing the parsed components of the path. + * + * Use {@linkcode https://jsr.io/@std/path/doc/~/format | format()} to reverse + * the result. + * + * @example Usage + * ```ts + * import { parse } from "@std/path/parse"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * const parsedPathObj = parse("C:\\path\\to\\script.ts"); + * assertEquals(parsedPathObj.root, "C:\\"); + * assertEquals(parsedPathObj.dir, "C:\\path\\to"); + * assertEquals(parsedPathObj.base, "script.ts"); + * assertEquals(parsedPathObj.ext, ".ts"); + * assertEquals(parsedPathObj.name, "script"); + * } else { + * const parsedPathObj = parse("/path/to/dir/script.ts"); + * parsedPathObj.root; // "/" + * parsedPathObj.dir; // "/path/to/dir" + * parsedPathObj.base; // "script.ts" + * parsedPathObj.ext; // ".ts" + * parsedPathObj.name; // "script" + * } + * ``` + * + * @param path Path to process + * @returns An object with the parsed path components. + */ export function parse(path) { + return isWindows ? windowsParse(path) : posixParse(path); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9wYXJzZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBpc1dpbmRvd3MgfSBmcm9tIFwiLi9fb3MudHNcIjtcbmltcG9ydCB0eXBlIHsgUGFyc2VkUGF0aCB9IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5pbXBvcnQgeyBwYXJzZSBhcyBwb3NpeFBhcnNlIH0gZnJvbSBcIi4vcG9zaXgvcGFyc2UudHNcIjtcbmltcG9ydCB7IHBhcnNlIGFzIHdpbmRvd3NQYXJzZSB9IGZyb20gXCIuL3dpbmRvd3MvcGFyc2UudHNcIjtcblxuZXhwb3J0IHR5cGUgeyBQYXJzZWRQYXRoIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcblxuLyoqXG4gKiBSZXR1cm4gYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHBhcnNlZCBjb21wb25lbnRzIG9mIHRoZSBwYXRoLlxuICpcbiAqIFVzZSB7QGxpbmtjb2RlIGh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC9kb2Mvfi9mb3JtYXQgfCBmb3JtYXQoKX0gdG8gcmV2ZXJzZVxuICogdGhlIHJlc3VsdC5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHBhcnNlIH0gZnJvbSBcIkBzdGQvcGF0aC9wYXJzZVwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogaWYgKERlbm8uYnVpbGQub3MgPT09IFwid2luZG93c1wiKSB7XG4gKiAgIGNvbnN0IHBhcnNlZFBhdGhPYmogPSBwYXJzZShcIkM6XFxcXHBhdGhcXFxcdG9cXFxcc2NyaXB0LnRzXCIpO1xuICogICBhc3NlcnRFcXVhbHMocGFyc2VkUGF0aE9iai5yb290LCBcIkM6XFxcXFwiKTtcbiAqICAgYXNzZXJ0RXF1YWxzKHBhcnNlZFBhdGhPYmouZGlyLCBcIkM6XFxcXHBhdGhcXFxcdG9cIik7XG4gKiAgIGFzc2VydEVxdWFscyhwYXJzZWRQYXRoT2JqLmJhc2UsIFwic2NyaXB0LnRzXCIpO1xuICogICBhc3NlcnRFcXVhbHMocGFyc2VkUGF0aE9iai5leHQsIFwiLnRzXCIpO1xuICogICBhc3NlcnRFcXVhbHMocGFyc2VkUGF0aE9iai5uYW1lLCBcInNjcmlwdFwiKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGNvbnN0IHBhcnNlZFBhdGhPYmogPSBwYXJzZShcIi9wYXRoL3RvL2Rpci9zY3JpcHQudHNcIik7XG4gKiAgIHBhcnNlZFBhdGhPYmoucm9vdDsgLy8gXCIvXCJcbiAqICAgcGFyc2VkUGF0aE9iai5kaXI7IC8vIFwiL3BhdGgvdG8vZGlyXCJcbiAqICAgcGFyc2VkUGF0aE9iai5iYXNlOyAvLyBcInNjcmlwdC50c1wiXG4gKiAgIHBhcnNlZFBhdGhPYmouZXh0OyAvLyBcIi50c1wiXG4gKiAgIHBhcnNlZFBhdGhPYmoubmFtZTsgLy8gXCJzY3JpcHRcIlxuICogfVxuICogYGBgXG4gKlxuICogQHBhcmFtIHBhdGggUGF0aCB0byBwcm9jZXNzXG4gKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCB0aGUgcGFyc2VkIHBhdGggY29tcG9uZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKHBhdGg6IHN0cmluZyk6IFBhcnNlZFBhdGgge1xuICByZXR1cm4gaXNXaW5kb3dzID8gd2luZG93c1BhcnNlKHBhdGgpIDogcG9zaXhQYXJzZShwYXRoKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDLFNBQVMsU0FBUyxRQUFRLFdBQVc7QUFFckMsU0FBUyxTQUFTLFVBQVUsUUFBUSxtQkFBbUI7QUFDdkQsU0FBUyxTQUFTLFlBQVksUUFBUSxxQkFBcUI7QUFJM0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQThCQyxHQUNELE9BQU8sU0FBUyxNQUFNLElBQVk7RUFDaEMsT0FBTyxZQUFZLGFBQWEsUUFBUSxXQUFXO0FBQ3JEIn0= +// denoCacheMetadata=2517273432130411094,13263517591213717060
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/a3264823d25646a082d91622329c08defbdd71814a7eaa3dc69f993b1b035d71.js b/vendor/gen/https/jsr.io/a3264823d25646a082d91622329c08defbdd71814a7eaa3dc69f993b1b035d71.js new file mode 100644 index 0000000..52b39b3 --- /dev/null +++ b/vendor/gen/https/jsr.io/a3264823d25646a082d91622329c08defbdd71814a7eaa3dc69f993b1b035d71.js @@ -0,0 +1,29 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { isAbsolute as posixIsAbsolute } from "./posix/is_absolute.ts"; +import { isAbsolute as windowsIsAbsolute } from "./windows/is_absolute.ts"; +/** + * Verifies whether provided path is absolute. + * + * @example Usage + * ```ts + * import { isAbsolute } from "@std/path/is-absolute"; + * import { assert, assertFalse } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assert(isAbsolute("C:\\home\\foo")); + * assertFalse(isAbsolute("home\\foo")); + * } else { + * assert(isAbsolute("/home/foo")); + * assertFalse(isAbsolute("home/foo")); + * } + * ``` + * + * @param path Path to be verified as absolute. + * @returns `true` if path is absolute, `false` otherwise + */ export function isAbsolute(path) { + return isWindows ? windowsIsAbsolute(path) : posixIsAbsolute(path); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9pc19hYnNvbHV0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBpc1dpbmRvd3MgfSBmcm9tIFwiLi9fb3MudHNcIjtcbmltcG9ydCB7IGlzQWJzb2x1dGUgYXMgcG9zaXhJc0Fic29sdXRlIH0gZnJvbSBcIi4vcG9zaXgvaXNfYWJzb2x1dGUudHNcIjtcbmltcG9ydCB7IGlzQWJzb2x1dGUgYXMgd2luZG93c0lzQWJzb2x1dGUgfSBmcm9tIFwiLi93aW5kb3dzL2lzX2Fic29sdXRlLnRzXCI7XG5cbi8qKlxuICogVmVyaWZpZXMgd2hldGhlciBwcm92aWRlZCBwYXRoIGlzIGFic29sdXRlLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgaXNBYnNvbHV0ZSB9IGZyb20gXCJAc3RkL3BhdGgvaXMtYWJzb2x1dGVcIjtcbiAqIGltcG9ydCB7IGFzc2VydCwgYXNzZXJ0RmFsc2UgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBpZiAoRGVuby5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCIpIHtcbiAqICAgYXNzZXJ0KGlzQWJzb2x1dGUoXCJDOlxcXFxob21lXFxcXGZvb1wiKSk7XG4gKiAgIGFzc2VydEZhbHNlKGlzQWJzb2x1dGUoXCJob21lXFxcXGZvb1wiKSk7XG4gKiB9IGVsc2Uge1xuICogICBhc3NlcnQoaXNBYnNvbHV0ZShcIi9ob21lL2Zvb1wiKSk7XG4gKiAgIGFzc2VydEZhbHNlKGlzQWJzb2x1dGUoXCJob21lL2Zvb1wiKSk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gcGF0aCBQYXRoIHRvIGJlIHZlcmlmaWVkIGFzIGFic29sdXRlLlxuICogQHJldHVybnMgYHRydWVgIGlmIHBhdGggaXMgYWJzb2x1dGUsIGBmYWxzZWAgb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fic29sdXRlKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNXaW5kb3dzID8gd2luZG93c0lzQWJzb2x1dGUocGF0aCkgOiBwb3NpeElzQWJzb2x1dGUocGF0aCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQyxTQUFTLFNBQVMsUUFBUSxXQUFXO0FBQ3JDLFNBQVMsY0FBYyxlQUFlLFFBQVEseUJBQXlCO0FBQ3ZFLFNBQVMsY0FBYyxpQkFBaUIsUUFBUSwyQkFBMkI7QUFFM0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FtQkMsR0FDRCxPQUFPLFNBQVMsV0FBVyxJQUFZO0VBQ3JDLE9BQU8sWUFBWSxrQkFBa0IsUUFBUSxnQkFBZ0I7QUFDL0QifQ== +// denoCacheMetadata=14283075286172203899,7705260698456797190
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/a7b60c5acd878057b22633c478f52903b96e57744ad9bf47df95bfd5d903b48d.js b/vendor/gen/https/jsr.io/a7b60c5acd878057b22633c478f52903b96e57744ad9bf47df95bfd5d903b48d.js new file mode 100644 index 0000000..2f84c0e --- /dev/null +++ b/vendor/gen/https/jsr.io/a7b60c5acd878057b22633c478f52903b96e57744ad9bf47df95bfd5d903b48d.js @@ -0,0 +1,9 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { assertPath } from "./assert_path.ts"; +export function assertArg(path) { + assertPath(path); + if (path.length === 0) return "."; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9fY29tbW9uL25vcm1hbGl6ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBhc3NlcnRQYXRoIH0gZnJvbSBcIi4vYXNzZXJ0X3BhdGgudHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEFyZyhwYXRoOiBzdHJpbmcpIHtcbiAgYXNzZXJ0UGF0aChwYXRoKTtcbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSByZXR1cm4gXCIuXCI7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQyxTQUFTLFVBQVUsUUFBUSxtQkFBbUI7QUFFOUMsT0FBTyxTQUFTLFVBQVUsSUFBWTtFQUNwQyxXQUFXO0VBQ1gsSUFBSSxLQUFLLE1BQU0sS0FBSyxHQUFHLE9BQU87QUFDaEMifQ== +// denoCacheMetadata=12071784527289267437,4199244228715950958
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/a80cf6c3276c9f87132aa5e59667bfd5967a37f532932f755b28cf29a9f9109b.js b/vendor/gen/https/jsr.io/a80cf6c3276c9f87132aa5e59667bfd5967a37f532932f755b28cf29a9f9109b.js new file mode 100644 index 0000000..6acd47b --- /dev/null +++ b/vendor/gen/https/jsr.io/a80cf6c3276c9f87132aa5e59667bfd5967a37f532932f755b28cf29a9f9109b.js @@ -0,0 +1,17 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +const WHITESPACE_ENCODINGS = { + "\u0009": "%09", + "\u000A": "%0A", + "\u000B": "%0B", + "\u000C": "%0C", + "\u000D": "%0D", + "\u0020": "%20" +}; +export function encodeWhitespace(string) { + return string.replaceAll(/[\s]/g, (c)=>{ + return WHITESPACE_ENCODINGS[c] ?? c; + }); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9fY29tbW9uL3RvX2ZpbGVfdXJsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmNvbnN0IFdISVRFU1BBQ0VfRU5DT0RJTkdTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBcIlxcdTAwMDlcIjogXCIlMDlcIixcbiAgXCJcXHUwMDBBXCI6IFwiJTBBXCIsXG4gIFwiXFx1MDAwQlwiOiBcIiUwQlwiLFxuICBcIlxcdTAwMENcIjogXCIlMENcIixcbiAgXCJcXHUwMDBEXCI6IFwiJTBEXCIsXG4gIFwiXFx1MDAyMFwiOiBcIiUyMFwiLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVdoaXRlc3BhY2Uoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2VBbGwoL1tcXHNdL2csIChjKSA9PiB7XG4gICAgcmV0dXJuIFdISVRFU1BBQ0VfRU5DT0RJTkdTW2NdID8/IGM7XG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxxQ0FBcUM7QUFFckMsTUFBTSx1QkFBK0M7RUFDbkQsVUFBVTtFQUNWLFVBQVU7RUFDVixVQUFVO0VBQ1YsVUFBVTtFQUNWLFVBQVU7RUFDVixVQUFVO0FBQ1o7QUFFQSxPQUFPLFNBQVMsaUJBQWlCLE1BQWM7RUFDN0MsT0FBTyxPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUM7SUFDakMsT0FBTyxvQkFBb0IsQ0FBQyxFQUFFLElBQUk7RUFDcEM7QUFDRiJ9 +// denoCacheMetadata=5674492193195111060,3697114697723333245
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/a8cee04f686812adf569c862c389ea4a108d63b6a64cf60216e8c7104bc659de.js b/vendor/gen/https/jsr.io/a8cee04f686812adf569c862c389ea4a108d63b6a64cf60216e8c7104bc659de.js new file mode 100644 index 0000000..6463075 --- /dev/null +++ b/vendor/gen/https/jsr.io/a8cee04f686812adf569c862c389ea4a108d63b6a64cf60216e8c7104bc659de.js @@ -0,0 +1,84 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { CHAR_DOT } from "../_common/constants.ts"; +import { assertPath } from "../_common/assert_path.ts"; +import { isPosixPathSeparator } from "./_util.ts"; +/** + * Return the extension of the `path` with leading period. + * + * @example Usage + * ```ts + * import { extname } from "@std/path/posix/extname"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(extname("/home/user/Documents/file.ts"), ".ts"); + * assertEquals(extname("/home/user/Documents/"), ""); + * assertEquals(extname("/home/user/Documents/image.png"), ".png"); + * ``` + * + * @example Working with URLs + * + * Note: This function doesn't automatically strip hash and query parts from + * URLs. If your URL contains a hash or query, remove them before passing the + * URL to the function. This can be done by passing the URL to `new URL(url)`, + * and setting the `hash` and `search` properties to empty strings. + * + * ```ts + * import { extname } from "@std/path/posix/extname"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(extname("https://deno.land/std/path/mod.ts"), ".ts"); + * assertEquals(extname("https://deno.land/std/path/mod.ts?a=b"), ".ts?a=b"); + * assertEquals(extname("https://deno.land/std/path/mod.ts#header"), ".ts#header"); + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `extname` from `@std/path/posix/unstable-extname`. + * + * @param path The path to get the extension from. + * @returns The extension (ex. for `file.ts` returns `.ts`). + */ export function extname(path) { + assertPath(path); + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + for(let i = path.length - 1; i >= 0; --i){ + const code = path.charCodeAt(i); + if (isPosixPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot + preDotState === 0 || // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + return ""; + } + return path.slice(startDot, end); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9wb3NpeC9leHRuYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IENIQVJfRE9UIH0gZnJvbSBcIi4uL19jb21tb24vY29uc3RhbnRzLnRzXCI7XG5pbXBvcnQgeyBhc3NlcnRQYXRoIH0gZnJvbSBcIi4uL19jb21tb24vYXNzZXJ0X3BhdGgudHNcIjtcbmltcG9ydCB7IGlzUG9zaXhQYXRoU2VwYXJhdG9yIH0gZnJvbSBcIi4vX3V0aWwudHNcIjtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIGV4dGVuc2lvbiBvZiB0aGUgYHBhdGhgIHdpdGggbGVhZGluZyBwZXJpb2QuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBleHRuYW1lIH0gZnJvbSBcIkBzdGQvcGF0aC9wb3NpeC9leHRuYW1lXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoZXh0bmFtZShcIi9ob21lL3VzZXIvRG9jdW1lbnRzL2ZpbGUudHNcIiksIFwiLnRzXCIpO1xuICogYXNzZXJ0RXF1YWxzKGV4dG5hbWUoXCIvaG9tZS91c2VyL0RvY3VtZW50cy9cIiksIFwiXCIpO1xuICogYXNzZXJ0RXF1YWxzKGV4dG5hbWUoXCIvaG9tZS91c2VyL0RvY3VtZW50cy9pbWFnZS5wbmdcIiksIFwiLnBuZ1wiKTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFdvcmtpbmcgd2l0aCBVUkxzXG4gKlxuICogTm90ZTogVGhpcyBmdW5jdGlvbiBkb2Vzbid0IGF1dG9tYXRpY2FsbHkgc3RyaXAgaGFzaCBhbmQgcXVlcnkgcGFydHMgZnJvbVxuICogVVJMcy4gSWYgeW91ciBVUkwgY29udGFpbnMgYSBoYXNoIG9yIHF1ZXJ5LCByZW1vdmUgdGhlbSBiZWZvcmUgcGFzc2luZyB0aGVcbiAqIFVSTCB0byB0aGUgZnVuY3Rpb24uIFRoaXMgY2FuIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgVVJMIHRvIGBuZXcgVVJMKHVybClgLFxuICogYW5kIHNldHRpbmcgdGhlIGBoYXNoYCBhbmQgYHNlYXJjaGAgcHJvcGVydGllcyB0byBlbXB0eSBzdHJpbmdzLlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBleHRuYW1lIH0gZnJvbSBcIkBzdGQvcGF0aC9wb3NpeC9leHRuYW1lXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoZXh0bmFtZShcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9wYXRoL21vZC50c1wiKSwgXCIudHNcIik7XG4gKiBhc3NlcnRFcXVhbHMoZXh0bmFtZShcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9wYXRoL21vZC50cz9hPWJcIiksIFwiLnRzP2E9YlwiKTtcbiAqIGFzc2VydEVxdWFscyhleHRuYW1lKFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkL3BhdGgvbW9kLnRzI2hlYWRlclwiKSwgXCIudHMjaGVhZGVyXCIpO1xuICogYGBgXG4gKlxuICogTm90ZTogSWYgeW91IGFyZSB3b3JraW5nIHdpdGggZmlsZSBVUkxzLFxuICogdXNlIHRoZSBuZXcgdmVyc2lvbiBvZiBgZXh0bmFtZWAgZnJvbSBgQHN0ZC9wYXRoL3Bvc2l4L3Vuc3RhYmxlLWV4dG5hbWVgLlxuICpcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIGdldCB0aGUgZXh0ZW5zaW9uIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgZXh0ZW5zaW9uIChleC4gZm9yIGBmaWxlLnRzYCByZXR1cm5zIGAudHNgKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dG5hbWUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICBsZXQgc3RhcnREb3QgPSAtMTtcbiAgbGV0IHN0YXJ0UGFydCA9IDA7XG4gIGxldCBlbmQgPSAtMTtcbiAgbGV0IG1hdGNoZWRTbGFzaCA9IHRydWU7XG4gIC8vIFRyYWNrIHRoZSBzdGF0ZSBvZiBjaGFyYWN0ZXJzIChpZiBhbnkpIHdlIHNlZSBiZWZvcmUgb3VyIGZpcnN0IGRvdCBhbmRcbiAgLy8gYWZ0ZXIgYW55IHBhdGggc2VwYXJhdG9yIHdlIGZpbmRcbiAgbGV0IHByZURvdFN0YXRlID0gMDtcbiAgZm9yIChsZXQgaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICBjb25zdCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChpc1Bvc2l4UGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgc3RhcnRQYXJ0ID0gaSArIDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAvLyBleHRlbnNpb25cbiAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgZW5kID0gaSArIDE7XG4gICAgfVxuICAgIGlmIChjb2RlID09PSBDSEFSX0RPVCkge1xuICAgICAgLy8gSWYgdGhpcyBpcyBvdXIgZmlyc3QgZG90LCBtYXJrIGl0IGFzIHRoZSBzdGFydCBvZiBvdXIgZXh0ZW5zaW9uXG4gICAgICBpZiAoc3RhcnREb3QgPT09IC0xKSBzdGFydERvdCA9IGk7XG4gICAgICBlbHNlIGlmIChwcmVEb3RTdGF0ZSAhPT0gMSkgcHJlRG90U3RhdGUgPSAxO1xuICAgIH0gZWxzZSBpZiAoc3RhcnREb3QgIT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgYSBub24tZG90IGFuZCBub24tcGF0aCBzZXBhcmF0b3IgYmVmb3JlIG91ciBkb3QsIHNvIHdlIHNob3VsZFxuICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb25cbiAgICAgIHByZURvdFN0YXRlID0gLTE7XG4gICAgfVxuICB9XG5cbiAgaWYgKFxuICAgIHN0YXJ0RG90ID09PSAtMSB8fFxuICAgIGVuZCA9PT0gLTEgfHxcbiAgICAvLyBXZSBzYXcgYSBub24tZG90IGNoYXJhY3RlciBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGRvdFxuICAgIHByZURvdFN0YXRlID09PSAwIHx8XG4gICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgJy4uJ1xuICAgIChwcmVEb3RTdGF0ZSA9PT0gMSAmJiBzdGFydERvdCA9PT0gZW5kIC0gMSAmJiBzdGFydERvdCA9PT0gc3RhcnRQYXJ0ICsgMSlcbiAgKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbiAgcmV0dXJuIHBhdGguc2xpY2Uoc3RhcnREb3QsIGVuZCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQyxTQUFTLFFBQVEsUUFBUSwwQkFBMEI7QUFDbkQsU0FBUyxVQUFVLFFBQVEsNEJBQTRCO0FBQ3ZELFNBQVMsb0JBQW9CLFFBQVEsYUFBYTtBQUVsRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWtDQyxHQUNELE9BQU8sU0FBUyxRQUFRLElBQVk7RUFDbEMsV0FBVztFQUVYLElBQUksV0FBVyxDQUFDO0VBQ2hCLElBQUksWUFBWTtFQUNoQixJQUFJLE1BQU0sQ0FBQztFQUNYLElBQUksZUFBZTtFQUNuQix5RUFBeUU7RUFDekUsbUNBQW1DO0VBQ25DLElBQUksY0FBYztFQUNsQixJQUFLLElBQUksSUFBSSxLQUFLLE1BQU0sR0FBRyxHQUFHLEtBQUssR0FBRyxFQUFFLEVBQUc7SUFDekMsTUFBTSxPQUFPLEtBQUssVUFBVSxDQUFDO0lBQzdCLElBQUkscUJBQXFCLE9BQU87TUFDOUIsb0VBQW9FO01BQ3BFLGdEQUFnRDtNQUNoRCxJQUFJLENBQUMsY0FBYztRQUNqQixZQUFZLElBQUk7UUFDaEI7TUFDRjtNQUNBO0lBQ0Y7SUFDQSxJQUFJLFFBQVEsQ0FBQyxHQUFHO01BQ2QsbUVBQW1FO01BQ25FLFlBQVk7TUFDWixlQUFlO01BQ2YsTUFBTSxJQUFJO0lBQ1o7SUFDQSxJQUFJLFNBQVMsVUFBVTtNQUNyQixrRUFBa0U7TUFDbEUsSUFBSSxhQUFhLENBQUMsR0FBRyxXQUFXO1dBQzNCLElBQUksZ0JBQWdCLEdBQUcsY0FBYztJQUM1QyxPQUFPLElBQUksYUFBYSxDQUFDLEdBQUc7TUFDMUIsdUVBQXVFO01BQ3ZFLHFEQUFxRDtNQUNyRCxjQUFjLENBQUM7SUFDakI7RUFDRjtFQUVBLElBQ0UsYUFBYSxDQUFDLEtBQ2QsUUFBUSxDQUFDLEtBQ1Qsd0RBQXdEO0VBQ3hELGdCQUFnQixLQUNoQiwwREFBMEQ7RUFDekQsZ0JBQWdCLEtBQUssYUFBYSxNQUFNLEtBQUssYUFBYSxZQUFZLEdBQ3ZFO0lBQ0EsT0FBTztFQUNUO0VBQ0EsT0FBTyxLQUFLLEtBQUssQ0FBQyxVQUFVO0FBQzlCIn0= +// denoCacheMetadata=4909561769633644580,14739786232708423379
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/ab3237661902e46b66589337c5a061918baf367104349b90dd7f910f683eba6b.js b/vendor/gen/https/jsr.io/ab3237661902e46b66589337c5a061918baf367104349b90dd7f910f683eba6b.js new file mode 100644 index 0000000..25c54a5 --- /dev/null +++ b/vendor/gen/https/jsr.io/ab3237661902e46b66589337c5a061918baf367104349b90dd7f910f683eba6b.js @@ -0,0 +1,12 @@ +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2025 the Deno authors. MIT license. +export const seq = { + tag: "tag:yaml.org,2002:seq", + kind: "sequence", + resolve: ()=>true, + construct: (data)=>data !== null ? data : [] +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQveWFtbC8xLjAuNi9fdHlwZS9zZXEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUG9ydGVkIGZyb20ganMteWFtbCB2My4xMy4xOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVjYS9qcy15YW1sL2NvbW1pdC82NjVhYWRkYTQyMzQ5ZGNhZTg2OWYxMjA0MGQ5YjEwZWYxOGQxMmRhXG4vLyBDb3B5cmlnaHQgMjAxMS0yMDE1IGJ5IFZpdGFseSBQdXpyaW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cblxuaW1wb3J0IHR5cGUgeyBUeXBlIH0gZnJvbSBcIi4uL190eXBlLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBzZXE6IFR5cGU8XCJzZXF1ZW5jZVwiLCB1bmtub3duW10+ID0ge1xuICB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6c2VxXCIsXG4gIGtpbmQ6IFwic2VxdWVuY2VcIixcbiAgcmVzb2x2ZTogKCk6IGJvb2xlYW4gPT4gdHJ1ZSxcbiAgY29uc3RydWN0OiAoZGF0YTogdW5rbm93bltdIHwgbnVsbCk6IHVua25vd25bXSA9PiBkYXRhICE9PSBudWxsID8gZGF0YSA6IFtdLFxufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0Isb0ZBQW9GO0FBQ3BGLDBFQUEwRTtBQUMxRSxxREFBcUQ7QUFJckQsT0FBTyxNQUFNLE1BQW1DO0VBQzlDLEtBQUs7RUFDTCxNQUFNO0VBQ04sU0FBUyxJQUFlO0VBQ3hCLFdBQVcsQ0FBQyxPQUFzQyxTQUFTLE9BQU8sT0FBTyxFQUFFO0FBQzdFLEVBQUUifQ== +// denoCacheMetadata=4698891668754298029,4361321976901046884
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/ab6c32e2d05c70692da93963f74d258531b9f3d9776bddc3afc7421a2d8ec309.js b/vendor/gen/https/jsr.io/ab6c32e2d05c70692da93963f74d258531b9f3d9776bddc3afc7421a2d8ec309.js new file mode 100644 index 0000000..7af243b --- /dev/null +++ b/vendor/gen/https/jsr.io/ab6c32e2d05c70692da93963f74d258531b9f3d9776bddc3afc7421a2d8ec309.js @@ -0,0 +1,29 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { _format, assertArg } from "../_common/format.ts"; +/** + * Generate a path from `ParsedPath` object. + * + * @example Usage + * ```ts + * import { format } from "@std/path/windows/format"; + * import { assertEquals } from "@std/assert"; + * + * const path = format({ + * root: "C:\\", + * dir: "C:\\path\\dir", + * base: "file.txt", + * ext: ".txt", + * name: "file" + * }); + * assertEquals(path, "C:\\path\\dir\\file.txt"); + * ``` + * + * @param pathObject The path object to format. + * @returns The formatted path. + */ export function format(pathObject) { + assertArg(pathObject); + return _format("\\", pathObject); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS93aW5kb3dzL2Zvcm1hdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBfZm9ybWF0LCBhc3NlcnRBcmcgfSBmcm9tIFwiLi4vX2NvbW1vbi9mb3JtYXQudHNcIjtcbmltcG9ydCB0eXBlIHsgUGFyc2VkUGF0aCB9IGZyb20gXCIuLi90eXBlcy50c1wiO1xuXG4vKipcbiAqIEdlbmVyYXRlIGEgcGF0aCBmcm9tIGBQYXJzZWRQYXRoYCBvYmplY3QuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBmb3JtYXQgfSBmcm9tIFwiQHN0ZC9wYXRoL3dpbmRvd3MvZm9ybWF0XCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBwYXRoID0gZm9ybWF0KHtcbiAqICAgcm9vdDogXCJDOlxcXFxcIixcbiAqICAgZGlyOiBcIkM6XFxcXHBhdGhcXFxcZGlyXCIsXG4gKiAgIGJhc2U6IFwiZmlsZS50eHRcIixcbiAqICAgZXh0OiBcIi50eHRcIixcbiAqICAgbmFtZTogXCJmaWxlXCJcbiAqIH0pO1xuICogYXNzZXJ0RXF1YWxzKHBhdGgsIFwiQzpcXFxccGF0aFxcXFxkaXJcXFxcZmlsZS50eHRcIik7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gcGF0aE9iamVjdCBUaGUgcGF0aCBvYmplY3QgdG8gZm9ybWF0LlxuICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0KHBhdGhPYmplY3Q6IFBhcnRpYWw8UGFyc2VkUGF0aD4pOiBzdHJpbmcge1xuICBhc3NlcnRBcmcocGF0aE9iamVjdCk7XG4gIHJldHVybiBfZm9ybWF0KFwiXFxcXFwiLCBwYXRoT2JqZWN0KTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDLFNBQVMsT0FBTyxFQUFFLFNBQVMsUUFBUSx1QkFBdUI7QUFHMUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBb0JDLEdBQ0QsT0FBTyxTQUFTLE9BQU8sVUFBK0I7RUFDcEQsVUFBVTtFQUNWLE9BQU8sUUFBUSxNQUFNO0FBQ3ZCIn0= +// denoCacheMetadata=325087174280104060,4857616609680617316
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/ac4da3110b73ce8297daa0a53bd9810ec5f816c9151e9ccbd645543af0af5936.js b/vendor/gen/https/jsr.io/ac4da3110b73ce8297daa0a53bd9810ec5f816c9151e9ccbd645543af0af5936.js new file mode 100644 index 0000000..86109cb --- /dev/null +++ b/vendor/gen/https/jsr.io/ac4da3110b73ce8297daa0a53bd9810ec5f816c9151e9ccbd645543af0af5936.js @@ -0,0 +1,18 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +export function detach(buffer, maxSize) { + const originalSize = buffer.length; + if (buffer.byteOffset) { + const b = new Uint8Array(buffer.buffer); + b.set(buffer); + buffer = b.subarray(0, originalSize); + } + // deno-lint-ignore no-explicit-any + buffer = new Uint8Array(buffer.buffer.transfer(maxSize)); + buffer.set(buffer.subarray(0, originalSize), maxSize - originalSize); + return [ + buffer, + maxSize - originalSize + ]; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZW5jb2RpbmcvMS4wLjEwL19jb21tb25fZGV0YWNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG5cbmltcG9ydCB0eXBlIHsgVWludDhBcnJheV8gfSBmcm9tIFwiLi9fdHlwZXMudHNcIjtcbmV4cG9ydCB0eXBlIHsgVWludDhBcnJheV8gfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRldGFjaChcbiAgYnVmZmVyOiBVaW50OEFycmF5XyxcbiAgbWF4U2l6ZTogbnVtYmVyLFxuKTogW1VpbnQ4QXJyYXlfLCBudW1iZXJdIHtcbiAgY29uc3Qgb3JpZ2luYWxTaXplID0gYnVmZmVyLmxlbmd0aDtcbiAgaWYgKGJ1ZmZlci5ieXRlT2Zmc2V0KSB7XG4gICAgY29uc3QgYiA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlci5idWZmZXIpO1xuICAgIGIuc2V0KGJ1ZmZlcik7XG4gICAgYnVmZmVyID0gYi5zdWJhcnJheSgwLCBvcmlnaW5hbFNpemUpO1xuICB9XG4gIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG4gIGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KChidWZmZXIuYnVmZmVyIGFzIGFueSkudHJhbnNmZXIobWF4U2l6ZSkpO1xuICBidWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheSgwLCBvcmlnaW5hbFNpemUpLCBtYXhTaXplIC0gb3JpZ2luYWxTaXplKTtcbiAgcmV0dXJuIFtidWZmZXIsIG1heFNpemUgLSBvcmlnaW5hbFNpemVdO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUtyRCxPQUFPLFNBQVMsT0FDZCxNQUFtQixFQUNuQixPQUFlO0VBRWYsTUFBTSxlQUFlLE9BQU8sTUFBTTtFQUNsQyxJQUFJLE9BQU8sVUFBVSxFQUFFO0lBQ3JCLE1BQU0sSUFBSSxJQUFJLFdBQVcsT0FBTyxNQUFNO0lBQ3RDLEVBQUUsR0FBRyxDQUFDO0lBQ04sU0FBUyxFQUFFLFFBQVEsQ0FBQyxHQUFHO0VBQ3pCO0VBQ0EsbUNBQW1DO0VBQ25DLFNBQVMsSUFBSSxXQUFXLEFBQUMsT0FBTyxNQUFNLENBQVMsUUFBUSxDQUFDO0VBQ3hELE9BQU8sR0FBRyxDQUFDLE9BQU8sUUFBUSxDQUFDLEdBQUcsZUFBZSxVQUFVO0VBQ3ZELE9BQU87SUFBQztJQUFRLFVBQVU7R0FBYTtBQUN6QyJ9 +// denoCacheMetadata=16969328755599606704,9226857896741293420
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/ace2f4cea3ca89beea78967ace279c6700de0309d3258a49191432b548ac22b2.js b/vendor/gen/https/jsr.io/ace2f4cea3ca89beea78967ace279c6700de0309d3258a49191432b548ac22b2.js new file mode 100644 index 0000000..861e278 --- /dev/null +++ b/vendor/gen/https/jsr.io/ace2f4cea3ca89beea78967ace279c6700de0309d3258a49191432b548ac22b2.js @@ -0,0 +1,29 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { _format, assertArg } from "../_common/format.ts"; +/** + * Generate a path from `ParsedPath` object. + * + * @example Usage + * ```ts + * import { format } from "@std/path/windows/format"; + * import { assertEquals } from "@std/assert"; + * + * const path = format({ + * root: "C:\\", + * dir: "C:\\path\\dir", + * base: "file.txt", + * ext: ".txt", + * name: "file" + * }); + * assertEquals(path, "C:\\path\\dir\\file.txt"); + * ``` + * + * @param pathObject The path object to format. + * @returns The formatted path. + */ export function format(pathObject) { + assertArg(pathObject); + return _format("\\", pathObject); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC93aW5kb3dzL2Zvcm1hdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBfZm9ybWF0LCBhc3NlcnRBcmcgfSBmcm9tIFwiLi4vX2NvbW1vbi9mb3JtYXQudHNcIjtcbmltcG9ydCB0eXBlIHsgUGFyc2VkUGF0aCB9IGZyb20gXCIuLi90eXBlcy50c1wiO1xuXG4vKipcbiAqIEdlbmVyYXRlIGEgcGF0aCBmcm9tIGBQYXJzZWRQYXRoYCBvYmplY3QuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBmb3JtYXQgfSBmcm9tIFwiQHN0ZC9wYXRoL3dpbmRvd3MvZm9ybWF0XCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBwYXRoID0gZm9ybWF0KHtcbiAqICAgcm9vdDogXCJDOlxcXFxcIixcbiAqICAgZGlyOiBcIkM6XFxcXHBhdGhcXFxcZGlyXCIsXG4gKiAgIGJhc2U6IFwiZmlsZS50eHRcIixcbiAqICAgZXh0OiBcIi50eHRcIixcbiAqICAgbmFtZTogXCJmaWxlXCJcbiAqIH0pO1xuICogYXNzZXJ0RXF1YWxzKHBhdGgsIFwiQzpcXFxccGF0aFxcXFxkaXJcXFxcZmlsZS50eHRcIik7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gcGF0aE9iamVjdCBUaGUgcGF0aCBvYmplY3QgdG8gZm9ybWF0LlxuICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0KHBhdGhPYmplY3Q6IFBhcnRpYWw8UGFyc2VkUGF0aD4pOiBzdHJpbmcge1xuICBhc3NlcnRBcmcocGF0aE9iamVjdCk7XG4gIHJldHVybiBfZm9ybWF0KFwiXFxcXFwiLCBwYXRoT2JqZWN0KTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBRXJDLFNBQVMsT0FBTyxFQUFFLFNBQVMsUUFBUSx1QkFBdUI7QUFHMUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBb0JDLEdBQ0QsT0FBTyxTQUFTLE9BQU8sVUFBK0I7RUFDcEQsVUFBVTtFQUNWLE9BQU8sUUFBUSxNQUFNO0FBQ3ZCIn0= +// denoCacheMetadata=8074912514892475318,11379597361437491070
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/ad40331effdde59acb79f761b463e2be34bd07e4d6320c9cc305fa0598df503c.js b/vendor/gen/https/jsr.io/ad40331effdde59acb79f761b463e2be34bd07e4d6320c9cc305fa0598df503c.js new file mode 100644 index 0000000..0008741 --- /dev/null +++ b/vendor/gen/https/jsr.io/ad40331effdde59acb79f761b463e2be34bd07e4d6320c9cc305fa0598df503c.js @@ -0,0 +1,30 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { dirname as posixDirname } from "./posix/dirname.ts"; +import { dirname as windowsDirname } from "./windows/dirname.ts"; +/** + * Return the directory path of a path. + * + * @example Usage + * ```ts + * import { dirname } from "@std/path/dirname"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(dirname("C:\\home\\user\\Documents\\image.png"), "C:\\home\\user\\Documents"); + * } else { + * assertEquals(dirname("/home/user/Documents/image.png"), "/home/user/Documents"); + * } + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `dirname` from `@std/path/unstable-dirname`. + * + * @param path Path to extract the directory from. + * @returns The directory path. + */ export function dirname(path) { + return isWindows ? windowsDirname(path) : posixDirname(path); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9kaXJuYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGlzV2luZG93cyB9IGZyb20gXCIuL19vcy50c1wiO1xuaW1wb3J0IHsgZGlybmFtZSBhcyBwb3NpeERpcm5hbWUgfSBmcm9tIFwiLi9wb3NpeC9kaXJuYW1lLnRzXCI7XG5pbXBvcnQgeyBkaXJuYW1lIGFzIHdpbmRvd3NEaXJuYW1lIH0gZnJvbSBcIi4vd2luZG93cy9kaXJuYW1lLnRzXCI7XG5cbi8qKlxuICogUmV0dXJuIHRoZSBkaXJlY3RvcnkgcGF0aCBvZiBhIHBhdGguXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSBcIkBzdGQvcGF0aC9kaXJuYW1lXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBpZiAoRGVuby5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCIpIHtcbiAqICAgYXNzZXJ0RXF1YWxzKGRpcm5hbWUoXCJDOlxcXFxob21lXFxcXHVzZXJcXFxcRG9jdW1lbnRzXFxcXGltYWdlLnBuZ1wiKSwgXCJDOlxcXFxob21lXFxcXHVzZXJcXFxcRG9jdW1lbnRzXCIpO1xuICogfSBlbHNlIHtcbiAqICAgYXNzZXJ0RXF1YWxzKGRpcm5hbWUoXCIvaG9tZS91c2VyL0RvY3VtZW50cy9pbWFnZS5wbmdcIiksIFwiL2hvbWUvdXNlci9Eb2N1bWVudHNcIik7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBOb3RlOiBJZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBmaWxlIFVSTHMsXG4gKiB1c2UgdGhlIG5ldyB2ZXJzaW9uIG9mIGBkaXJuYW1lYCBmcm9tIGBAc3RkL3BhdGgvdW5zdGFibGUtZGlybmFtZWAuXG4gKlxuICogQHBhcmFtIHBhdGggUGF0aCB0byBleHRyYWN0IHRoZSBkaXJlY3RvcnkgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBkaXJlY3RvcnkgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpcm5hbWUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlzV2luZG93cyA/IHdpbmRvd3NEaXJuYW1lKHBhdGgpIDogcG9zaXhEaXJuYW1lKHBhdGgpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxxQ0FBcUM7QUFFckMsU0FBUyxTQUFTLFFBQVEsV0FBVztBQUNyQyxTQUFTLFdBQVcsWUFBWSxRQUFRLHFCQUFxQjtBQUM3RCxTQUFTLFdBQVcsY0FBYyxRQUFRLHVCQUF1QjtBQUVqRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FvQkMsR0FDRCxPQUFPLFNBQVMsUUFBUSxJQUFZO0VBQ2xDLE9BQU8sWUFBWSxlQUFlLFFBQVEsYUFBYTtBQUN6RCJ9 +// denoCacheMetadata=15225118082755478057,1126276011200736964
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/adbe56f42ba4cca03a81cd613a1d391e8baab107c8ef28d55be2b0cf3522c7a1.js b/vendor/gen/https/jsr.io/adbe56f42ba4cca03a81cd613a1d391e8baab107c8ef28d55be2b0cf3522c7a1.js new file mode 100644 index 0000000..8969bfb --- /dev/null +++ b/vendor/gen/https/jsr.io/adbe56f42ba4cca03a81cd613a1d391e8baab107c8ef28d55be2b0cf3522c7a1.js @@ -0,0 +1,28 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { toNamespacedPath as posixToNamespacedPath } from "./posix/to_namespaced_path.ts"; +import { toNamespacedPath as windowsToNamespacedPath } from "./windows/to_namespaced_path.ts"; +/** + * Resolves path to a namespace path. This is a no-op on + * non-windows systems. + * + * @example Usage + * ```ts + * import { toNamespacedPath } from "@std/path/to-namespaced-path"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(toNamespacedPath("C:\\foo\\bar"), "\\\\?\\C:\\foo\\bar"); + * } else { + * assertEquals(toNamespacedPath("/foo/bar"), "/foo/bar"); + * } + * ``` + * + * @param path Path to resolve to namespace. + * @returns The resolved namespace path. + */ export function toNamespacedPath(path) { + return isWindows ? windowsToNamespacedPath(path) : posixToNamespacedPath(path); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC90b19uYW1lc3BhY2VkX3BhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgaXNXaW5kb3dzIH0gZnJvbSBcIi4vX29zLnRzXCI7XG5pbXBvcnQgeyB0b05hbWVzcGFjZWRQYXRoIGFzIHBvc2l4VG9OYW1lc3BhY2VkUGF0aCB9IGZyb20gXCIuL3Bvc2l4L3RvX25hbWVzcGFjZWRfcGF0aC50c1wiO1xuaW1wb3J0IHsgdG9OYW1lc3BhY2VkUGF0aCBhcyB3aW5kb3dzVG9OYW1lc3BhY2VkUGF0aCB9IGZyb20gXCIuL3dpbmRvd3MvdG9fbmFtZXNwYWNlZF9wYXRoLnRzXCI7XG5cbi8qKlxuICogUmVzb2x2ZXMgcGF0aCB0byBhIG5hbWVzcGFjZSBwYXRoLiAgVGhpcyBpcyBhIG5vLW9wIG9uXG4gKiBub24td2luZG93cyBzeXN0ZW1zLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgdG9OYW1lc3BhY2VkUGF0aCB9IGZyb20gXCJAc3RkL3BhdGgvdG8tbmFtZXNwYWNlZC1wYXRoXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBpZiAoRGVuby5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCIpIHtcbiAqICAgYXNzZXJ0RXF1YWxzKHRvTmFtZXNwYWNlZFBhdGgoXCJDOlxcXFxmb29cXFxcYmFyXCIpLCBcIlxcXFxcXFxcP1xcXFxDOlxcXFxmb29cXFxcYmFyXCIpO1xuICogfSBlbHNlIHtcbiAqICAgYXNzZXJ0RXF1YWxzKHRvTmFtZXNwYWNlZFBhdGgoXCIvZm9vL2JhclwiKSwgXCIvZm9vL2JhclwiKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBwYXRoIFBhdGggdG8gcmVzb2x2ZSB0byBuYW1lc3BhY2UuXG4gKiBAcmV0dXJucyBUaGUgcmVzb2x2ZWQgbmFtZXNwYWNlIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b05hbWVzcGFjZWRQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBpc1dpbmRvd3NcbiAgICA/IHdpbmRvd3NUb05hbWVzcGFjZWRQYXRoKHBhdGgpXG4gICAgOiBwb3NpeFRvTmFtZXNwYWNlZFBhdGgocGF0aCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQyxTQUFTLFNBQVMsUUFBUSxXQUFXO0FBQ3JDLFNBQVMsb0JBQW9CLHFCQUFxQixRQUFRLGdDQUFnQztBQUMxRixTQUFTLG9CQUFvQix1QkFBdUIsUUFBUSxrQ0FBa0M7QUFFOUY7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWtCQyxHQUNELE9BQU8sU0FBUyxpQkFBaUIsSUFBWTtFQUMzQyxPQUFPLFlBQ0gsd0JBQXdCLFFBQ3hCLHNCQUFzQjtBQUM1QiJ9 +// denoCacheMetadata=178040108035893669,3128329074107370035
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/adc27699f317593c105ce7d06e41bb85f370a37936d5b65a49d55363fb52a133.js b/vendor/gen/https/jsr.io/adc27699f317593c105ce7d06e41bb85f370a37936d5b65a49d55363fb52a133.js new file mode 100644 index 0000000..48b2d73 --- /dev/null +++ b/vendor/gen/https/jsr.io/adc27699f317593c105ce7d06e41bb85f370a37936d5b65a49d55363fb52a133.js @@ -0,0 +1,14 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// Copyright the Browserify authors. MIT License. +import { fromFileUrl } from "jsr:@std/path@^1.0.9/from-file-url"; +/** + * Convert a URL or string to a path. + * + * @param pathUrl A URL or string to be converted. + * + * @returns The path as a string. + */ export function toPathString(pathUrl) { + return pathUrl instanceof URL ? fromFileUrl(pathUrl) : pathUrl; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnMvMS4wLjE3L190b19wYXRoX3N0cmluZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IHRoZSBCcm93c2VyaWZ5IGF1dGhvcnMuIE1JVCBMaWNlbnNlLlxuXG5pbXBvcnQgeyBmcm9tRmlsZVVybCB9IGZyb20gXCJqc3I6QHN0ZC9wYXRoQF4xLjAuOS9mcm9tLWZpbGUtdXJsXCI7XG5cbi8qKlxuICogQ29udmVydCBhIFVSTCBvciBzdHJpbmcgdG8gYSBwYXRoLlxuICpcbiAqIEBwYXJhbSBwYXRoVXJsIEEgVVJMIG9yIHN0cmluZyB0byBiZSBjb252ZXJ0ZWQuXG4gKlxuICogQHJldHVybnMgVGhlIHBhdGggYXMgYSBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1BhdGhTdHJpbmcoXG4gIHBhdGhVcmw6IHN0cmluZyB8IFVSTCxcbik6IHN0cmluZyB7XG4gIHJldHVybiBwYXRoVXJsIGluc3RhbmNlb2YgVVJMID8gZnJvbUZpbGVVcmwocGF0aFVybCkgOiBwYXRoVXJsO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxpREFBaUQ7QUFFakQsU0FBUyxXQUFXLFFBQVEscUNBQXFDO0FBRWpFOzs7Ozs7Q0FNQyxHQUNELE9BQU8sU0FBUyxhQUNkLE9BQXFCO0VBRXJCLE9BQU8sbUJBQW1CLE1BQU0sWUFBWSxXQUFXO0FBQ3pEIn0= +// denoCacheMetadata=15691150200374183696,13481751721364558662
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/aec75bce0faff15bda446d4f6e5b7f6a678d38af88aa5c7d98969ce9fdcbf265.js b/vendor/gen/https/jsr.io/aec75bce0faff15bda446d4f6e5b7f6a678d38af88aa5c7d98969ce9fdcbf265.js new file mode 100644 index 0000000..54b7bf6 --- /dev/null +++ b/vendor/gen/https/jsr.io/aec75bce0faff15bda446d4f6e5b7f6a678d38af88aa5c7d98969ce9fdcbf265.js @@ -0,0 +1,19 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +/** + * Tools for creating interactive command line tools. + * + * ```ts + * import { parseArgs } from "@std/cli/parse-args"; + * import { assertEquals } from "@std/assert"; + * + * // Same as running `deno run example.ts --foo --bar=baz ./quux.txt` + * const args = parseArgs(["--foo", "--bar=baz", "./quux.txt"]); + * assertEquals(args, { foo: true, bar: "baz", _: ["./quux.txt"] }); + * ``` + * + * @module + */ export * from "./parse_args.ts"; +export * from "./prompt_secret.ts"; +export * from "./unicode_width.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvY2xpLzEuMC4xNy9tb2QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cblxuLyoqXG4gKiBUb29scyBmb3IgY3JlYXRpbmcgaW50ZXJhY3RpdmUgY29tbWFuZCBsaW5lIHRvb2xzLlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBwYXJzZUFyZ3MgfSBmcm9tIFwiQHN0ZC9jbGkvcGFyc2UtYXJnc1wiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogLy8gU2FtZSBhcyBydW5uaW5nIGBkZW5vIHJ1biBleGFtcGxlLnRzIC0tZm9vIC0tYmFyPWJheiAuL3F1dXgudHh0YFxuICogY29uc3QgYXJncyA9IHBhcnNlQXJncyhbXCItLWZvb1wiLCBcIi0tYmFyPWJhelwiLCBcIi4vcXV1eC50eHRcIl0pO1xuICogYXNzZXJ0RXF1YWxzKGFyZ3MsIHsgZm9vOiB0cnVlLCBiYXI6IFwiYmF6XCIsIF86IFtcIi4vcXV1eC50eHRcIl0gfSk7XG4gKiBgYGBcbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuZXhwb3J0ICogZnJvbSBcIi4vcGFyc2VfYXJncy50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHJvbXB0X3NlY3JldC50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdW5pY29kZV93aWR0aC50c1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUVyRDs7Ozs7Ozs7Ozs7OztDQWFDLEdBRUQsY0FBYyxrQkFBa0I7QUFDaEMsY0FBYyxxQkFBcUI7QUFDbkMsY0FBYyxxQkFBcUIifQ== +// denoCacheMetadata=9010700552710304313,18037737167321663845
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/afa9cfe71a94297bb0a232341d4d1993b5bf6eafdf88867dd1a5c0d45b7f535c.js b/vendor/gen/https/jsr.io/afa9cfe71a94297bb0a232341d4d1993b5bf6eafdf88867dd1a5c0d45b7f535c.js new file mode 100644 index 0000000..0364dae --- /dev/null +++ b/vendor/gen/https/jsr.io/afa9cfe71a94297bb0a232341d4d1993b5bf6eafdf88867dd1a5c0d45b7f535c.js @@ -0,0 +1,50 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { extract as extractToml } from "./toml.ts"; +import { extract as extractYaml } from "./yaml.ts"; +import { extract as extractJson } from "./json.ts"; +import { RECOGNIZE_REGEXP_MAP } from "./_formats.ts"; +/** + * Extracts and parses {@link https://yaml.org | YAML}, {@link https://toml.io | + * TOML}, or {@link https://www.json.org/ | JSON} from the metadata of front + * matter content, depending on the format. + * + * @example Usage + * ```ts + * import { extract } from "@std/front-matter/any"; + * import { assertEquals } from "@std/assert"; + * + * const output = `---json + * { + * "title": "Three dashes marks the spot" + * } + * --- + * Hello, world!`; + * const result = extract(output); + * assertEquals(result, { + * frontMatter: '{\n "title": "Three dashes marks the spot"\n}', + * body: "Hello, world!", + * attrs: { title: "Three dashes marks the spot" } + * }) + * ``` + * + * @typeParam T The type of the parsed front matter. + * @param text The text to extract front matter from. + * @returns The extracted front matter and body content. + */ export function extract(text) { + const format = [ + ...RECOGNIZE_REGEXP_MAP.entries() + ].find(([_, regexp])=>regexp.test(text))?.[0]; + switch(format){ + case "yaml": + return extractYaml(text); + case "toml": + return extractToml(text); + case "json": + return extractJson(text); + default: + throw new TypeError("Unsupported front matter format"); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnJvbnQtbWF0dGVyLzEuMC45L2FueS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBleHRyYWN0IGFzIGV4dHJhY3RUb21sIH0gZnJvbSBcIi4vdG9tbC50c1wiO1xuaW1wb3J0IHsgZXh0cmFjdCBhcyBleHRyYWN0WWFtbCB9IGZyb20gXCIuL3lhbWwudHNcIjtcbmltcG9ydCB7IGV4dHJhY3QgYXMgZXh0cmFjdEpzb24gfSBmcm9tIFwiLi9qc29uLnRzXCI7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3QgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuaW1wb3J0IHsgUkVDT0dOSVpFX1JFR0VYUF9NQVAgfSBmcm9tIFwiLi9fZm9ybWF0cy50c1wiO1xuXG5leHBvcnQgdHlwZSB7IEV4dHJhY3QgfTtcblxuLyoqXG4gKiBFeHRyYWN0cyBhbmQgcGFyc2VzIHtAbGluayBodHRwczovL3lhbWwub3JnIHwgWUFNTH0sIHtAbGluayBodHRwczovL3RvbWwuaW8gfFxuICogVE9NTH0sIG9yIHtAbGluayBodHRwczovL3d3dy5qc29uLm9yZy8gfCBKU09OfSBmcm9tIHRoZSBtZXRhZGF0YSBvZiBmcm9udFxuICogbWF0dGVyIGNvbnRlbnQsIGRlcGVuZGluZyBvbiB0aGUgZm9ybWF0LlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZXh0cmFjdCB9IGZyb20gXCJAc3RkL2Zyb250LW1hdHRlci9hbnlcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IG91dHB1dCA9IGAtLS1qc29uXG4gKiB7XG4gKiAgIFwidGl0bGVcIjogXCJUaHJlZSBkYXNoZXMgbWFya3MgdGhlIHNwb3RcIlxuICogfVxuICogLS0tXG4gKiBIZWxsbywgd29ybGQhYDtcbiAqIGNvbnN0IHJlc3VsdCA9IGV4dHJhY3Qob3V0cHV0KTtcbiAqIGFzc2VydEVxdWFscyhyZXN1bHQsIHtcbiAqICAgZnJvbnRNYXR0ZXI6ICd7XFxuICBcInRpdGxlXCI6IFwiVGhyZWUgZGFzaGVzIG1hcmtzIHRoZSBzcG90XCJcXG59JyxcbiAqICAgYm9keTogXCJIZWxsbywgd29ybGQhXCIsXG4gKiAgIGF0dHJzOiB7IHRpdGxlOiBcIlRocmVlIGRhc2hlcyBtYXJrcyB0aGUgc3BvdFwiIH1cbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBAdHlwZVBhcmFtIFQgVGhlIHR5cGUgb2YgdGhlIHBhcnNlZCBmcm9udCBtYXR0ZXIuXG4gKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBleHRyYWN0IGZyb250IG1hdHRlciBmcm9tLlxuICogQHJldHVybnMgVGhlIGV4dHJhY3RlZCBmcm9udCBtYXR0ZXIgYW5kIGJvZHkgY29udGVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3Q8VD4odGV4dDogc3RyaW5nKTogRXh0cmFjdDxUPiB7XG4gIGNvbnN0IGZvcm1hdCA9IFsuLi5SRUNPR05JWkVfUkVHRVhQX01BUC5lbnRyaWVzKCldXG4gICAgLmZpbmQoKFtfLCByZWdleHBdKSA9PiByZWdleHAudGVzdCh0ZXh0KSk/LlswXTtcbiAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICBjYXNlIFwieWFtbFwiOlxuICAgICAgcmV0dXJuIGV4dHJhY3RZYW1sPFQ+KHRleHQpO1xuICAgIGNhc2UgXCJ0b21sXCI6XG4gICAgICByZXR1cm4gZXh0cmFjdFRvbWw8VD4odGV4dCk7XG4gICAgY2FzZSBcImpzb25cIjpcbiAgICAgIHJldHVybiBleHRyYWN0SnNvbjxUPih0ZXh0KTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlVuc3VwcG9ydGVkIGZyb250IG1hdHRlciBmb3JtYXRcIik7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDLFNBQVMsV0FBVyxXQUFXLFFBQVEsWUFBWTtBQUNuRCxTQUFTLFdBQVcsV0FBVyxRQUFRLFlBQVk7QUFDbkQsU0FBUyxXQUFXLFdBQVcsUUFBUSxZQUFZO0FBRW5ELFNBQVMsb0JBQW9CLFFBQVEsZ0JBQWdCO0FBSXJEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0EyQkMsR0FDRCxPQUFPLFNBQVMsUUFBVyxJQUFZO0VBQ3JDLE1BQU0sU0FBUztPQUFJLHFCQUFxQixPQUFPO0dBQUcsQ0FDL0MsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sR0FBSyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtFQUNoRCxPQUFRO0lBQ04sS0FBSztNQUNILE9BQU8sWUFBZTtJQUN4QixLQUFLO01BQ0gsT0FBTyxZQUFlO0lBQ3hCLEtBQUs7TUFDSCxPQUFPLFlBQWU7SUFDeEI7TUFDRSxNQUFNLElBQUksVUFBVTtFQUN4QjtBQUNGIn0= +// denoCacheMetadata=11076029336203950732,17691004859422482645
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/afe469936d3857e381b7086a6ecb3f6a7b40a0400c10fa2827a1f0200de57a0f.js b/vendor/gen/https/jsr.io/afe469936d3857e381b7086a6ecb3f6a7b40a0400c10fa2827a1f0200de57a0f.js new file mode 100644 index 0000000..0424030 --- /dev/null +++ b/vendor/gen/https/jsr.io/afe469936d3857e381b7086a6ecb3f6a7b40a0400c10fa2827a1f0200de57a0f.js @@ -0,0 +1,77 @@ +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2025 the Deno authors. MIT license. +const YAML_DATE_REGEXP = new RegExp("^([0-9][0-9][0-9][0-9])" + // [1] year +"-([0-9][0-9])" + // [2] month +"-([0-9][0-9])$"); +const YAML_TIMESTAMP_REGEXP = new RegExp("^([0-9][0-9][0-9][0-9])" + // [1] year +"-([0-9][0-9]?)" + // [2] month +"-([0-9][0-9]?)" + // [3] day +"(?:[Tt]|[ \\t]+)" + // ... +"([0-9][0-9]?)" + // [4] hour +":([0-9][0-9])" + // [5] minute +":([0-9][0-9])" + // [6] second +"(?:\\.([0-9]*))?" + // [7] fraction +"(?:[ \\t]*(Z|([-+])([0-9][0-9]?)" + // [8] tz [9] tz_sign [10] tz_hour +"(?::([0-9][0-9]))?))?$"); +function resolveYamlTimestamp(data) { + if (data === null) return false; + if (YAML_DATE_REGEXP.exec(data) !== null) return true; + if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true; + return false; +} +function constructYamlTimestamp(data) { + let match = YAML_DATE_REGEXP.exec(data); + if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); + if (match === null) { + throw new Error("Cannot construct YAML timestamp: date resolve error"); + } + // match: [1] year [2] month [3] day + const year = +match[1]; + const month = +match[2] - 1; // JS month starts with 0 + const day = +match[3]; + if (!match[4]) { + // no hour + return new Date(Date.UTC(year, month, day)); + } + // match: [4] hour [5] minute [6] second [7] fraction + const hour = +match[4]; + const minute = +match[5]; + const second = +match[6]; + let fraction = 0; + if (match[7]) { + let partFraction = match[7].slice(0, 3); + while(partFraction.length < 3){ + // milli-seconds + partFraction += "0"; + } + fraction = +partFraction; + } + // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute + let delta = null; + if (match[9] && match[10]) { + const tzHour = +match[10]; + const tzMinute = +(match[11] || 0); + delta = (tzHour * 60 + tzMinute) * 60000; // delta in milli-seconds + if (match[9] === "-") delta = -delta; + } + const date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); + if (delta) date.setTime(date.getTime() - delta); + return date; +} +function representYamlTimestamp(date) { + return date.toISOString(); +} +export const timestamp = { + tag: "tag:yaml.org,2002:timestamp", + construct: constructYamlTimestamp, + predicate (object) { + return object instanceof Date; + }, + kind: "scalar", + represent: representYamlTimestamp, + resolve: resolveYamlTimestamp +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQveWFtbC8xLjAuNi9fdHlwZS90aW1lc3RhbXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUG9ydGVkIGZyb20ganMteWFtbCB2My4xMy4xOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVjYS9qcy15YW1sL2NvbW1pdC82NjVhYWRkYTQyMzQ5ZGNhZTg2OWYxMjA0MGQ5YjEwZWYxOGQxMmRhXG4vLyBDb3B5cmlnaHQgMjAxMS0yMDE1IGJ5IFZpdGFseSBQdXpyaW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cblxuaW1wb3J0IHR5cGUgeyBUeXBlIH0gZnJvbSBcIi4uL190eXBlLnRzXCI7XG5cbmNvbnN0IFlBTUxfREFURV9SRUdFWFAgPSBuZXcgUmVnRXhwKFxuICBcIl4oWzAtOV1bMC05XVswLTldWzAtOV0pXCIgKyAvLyBbMV0geWVhclxuICAgIFwiLShbMC05XVswLTldKVwiICsgLy8gWzJdIG1vbnRoXG4gICAgXCItKFswLTldWzAtOV0pJFwiLCAvLyBbM10gZGF5XG4pO1xuXG5jb25zdCBZQU1MX1RJTUVTVEFNUF9SRUdFWFAgPSBuZXcgUmVnRXhwKFxuICBcIl4oWzAtOV1bMC05XVswLTldWzAtOV0pXCIgKyAvLyBbMV0geWVhclxuICAgIFwiLShbMC05XVswLTldPylcIiArIC8vIFsyXSBtb250aFxuICAgIFwiLShbMC05XVswLTldPylcIiArIC8vIFszXSBkYXlcbiAgICBcIig/OltUdF18WyBcXFxcdF0rKVwiICsgLy8gLi4uXG4gICAgXCIoWzAtOV1bMC05XT8pXCIgKyAvLyBbNF0gaG91clxuICAgIFwiOihbMC05XVswLTldKVwiICsgLy8gWzVdIG1pbnV0ZVxuICAgIFwiOihbMC05XVswLTldKVwiICsgLy8gWzZdIHNlY29uZFxuICAgIFwiKD86XFxcXC4oWzAtOV0qKSk/XCIgKyAvLyBbN10gZnJhY3Rpb25cbiAgICBcIig/OlsgXFxcXHRdKihafChbLStdKShbMC05XVswLTldPylcIiArIC8vIFs4XSB0eiBbOV0gdHpfc2lnbiBbMTBdIHR6X2hvdXJcbiAgICBcIig/OjooWzAtOV1bMC05XSkpPykpPyRcIiwgLy8gWzExXSB0el9taW51dGVcbik7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sVGltZXN0YW1wKGRhdGE6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICBpZiAoWUFNTF9EQVRFX1JFR0VYUC5leGVjKGRhdGEpICE9PSBudWxsKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKFlBTUxfVElNRVNUQU1QX1JFR0VYUC5leGVjKGRhdGEpICE9PSBudWxsKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sVGltZXN0YW1wKGRhdGE6IHN0cmluZyk6IERhdGUge1xuICBsZXQgbWF0Y2ggPSBZQU1MX0RBVEVfUkVHRVhQLmV4ZWMoZGF0YSk7XG4gIGlmIChtYXRjaCA9PT0gbnVsbCkgbWF0Y2ggPSBZQU1MX1RJTUVTVEFNUF9SRUdFWFAuZXhlYyhkYXRhKTtcblxuICBpZiAobWF0Y2ggPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY29uc3RydWN0IFlBTUwgdGltZXN0YW1wOiBkYXRlIHJlc29sdmUgZXJyb3JcIik7XG4gIH1cblxuICAvLyBtYXRjaDogWzFdIHllYXIgWzJdIG1vbnRoIFszXSBkYXlcblxuICBjb25zdCB5ZWFyID0gK21hdGNoWzFdITtcbiAgY29uc3QgbW9udGggPSArbWF0Y2hbMl0hIC0gMTsgLy8gSlMgbW9udGggc3RhcnRzIHdpdGggMFxuICBjb25zdCBkYXkgPSArbWF0Y2hbM10hO1xuXG4gIGlmICghbWF0Y2hbNF0pIHtcbiAgICAvLyBubyBob3VyXG4gICAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHllYXIsIG1vbnRoLCBkYXkpKTtcbiAgfVxuXG4gIC8vIG1hdGNoOiBbNF0gaG91ciBbNV0gbWludXRlIFs2XSBzZWNvbmQgWzddIGZyYWN0aW9uXG5cbiAgY29uc3QgaG91ciA9ICttYXRjaFs0XTtcbiAgY29uc3QgbWludXRlID0gK21hdGNoWzVdITtcbiAgY29uc3Qgc2Vjb25kID0gK21hdGNoWzZdITtcblxuICBsZXQgZnJhY3Rpb24gPSAwO1xuICBpZiAobWF0Y2hbN10pIHtcbiAgICBsZXQgcGFydEZyYWN0aW9uID0gbWF0Y2hbN10uc2xpY2UoMCwgMyk7XG4gICAgd2hpbGUgKHBhcnRGcmFjdGlvbi5sZW5ndGggPCAzKSB7XG4gICAgICAvLyBtaWxsaS1zZWNvbmRzXG4gICAgICBwYXJ0RnJhY3Rpb24gKz0gXCIwXCI7XG4gICAgfVxuICAgIGZyYWN0aW9uID0gK3BhcnRGcmFjdGlvbjtcbiAgfVxuXG4gIC8vIG1hdGNoOiBbOF0gdHogWzldIHR6X3NpZ24gWzEwXSB0el9ob3VyIFsxMV0gdHpfbWludXRlXG5cbiAgbGV0IGRlbHRhID0gbnVsbDtcbiAgaWYgKG1hdGNoWzldICYmIG1hdGNoWzEwXSkge1xuICAgIGNvbnN0IHR6SG91ciA9ICttYXRjaFsxMF07XG4gICAgY29uc3QgdHpNaW51dGUgPSArKG1hdGNoWzExXSB8fCAwKTtcbiAgICBkZWx0YSA9ICh0ekhvdXIgKiA2MCArIHR6TWludXRlKSAqIDYwMDAwOyAvLyBkZWx0YSBpbiBtaWxsaS1zZWNvbmRzXG4gICAgaWYgKG1hdGNoWzldID09PSBcIi1cIikgZGVsdGEgPSAtZGVsdGE7XG4gIH1cblxuICBjb25zdCBkYXRlID0gbmV3IERhdGUoXG4gICAgRGF0ZS5VVEMoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIGZyYWN0aW9uKSxcbiAgKTtcblxuICBpZiAoZGVsdGEpIGRhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSAtIGRlbHRhKTtcblxuICByZXR1cm4gZGF0ZTtcbn1cblxuZnVuY3Rpb24gcmVwcmVzZW50WWFtbFRpbWVzdGFtcChkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgcmV0dXJuIGRhdGUudG9JU09TdHJpbmcoKTtcbn1cblxuZXhwb3J0IGNvbnN0IHRpbWVzdGFtcDogVHlwZTxcInNjYWxhclwiLCBEYXRlPiA9IHtcbiAgdGFnOiBcInRhZzp5YW1sLm9yZywyMDAyOnRpbWVzdGFtcFwiLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxUaW1lc3RhbXAsXG4gIHByZWRpY2F0ZShvYmplY3QpOiBvYmplY3QgaXMgRGF0ZSB7XG4gICAgcmV0dXJuIG9iamVjdCBpbnN0YW5jZW9mIERhdGU7XG4gIH0sXG4gIGtpbmQ6IFwic2NhbGFyXCIsXG4gIHJlcHJlc2VudDogcmVwcmVzZW50WWFtbFRpbWVzdGFtcCxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxUaW1lc3RhbXAsXG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixvRkFBb0Y7QUFDcEYsMEVBQTBFO0FBQzFFLHFEQUFxRDtBQUlyRCxNQUFNLG1CQUFtQixJQUFJLE9BQzNCLDRCQUE0QixXQUFXO0FBQ3JDLGtCQUFrQixZQUFZO0FBQzlCO0FBR0osTUFBTSx3QkFBd0IsSUFBSSxPQUNoQyw0QkFBNEIsV0FBVztBQUNyQyxtQkFBbUIsWUFBWTtBQUMvQixtQkFBbUIsVUFBVTtBQUM3QixxQkFBcUIsTUFBTTtBQUMzQixrQkFBa0IsV0FBVztBQUM3QixrQkFBa0IsYUFBYTtBQUMvQixrQkFBa0IsYUFBYTtBQUMvQixxQkFBcUIsZUFBZTtBQUNwQyxxQ0FBcUMsa0NBQWtDO0FBQ3ZFO0FBR0osU0FBUyxxQkFBcUIsSUFBWTtFQUN4QyxJQUFJLFNBQVMsTUFBTSxPQUFPO0VBQzFCLElBQUksaUJBQWlCLElBQUksQ0FBQyxVQUFVLE1BQU0sT0FBTztFQUNqRCxJQUFJLHNCQUFzQixJQUFJLENBQUMsVUFBVSxNQUFNLE9BQU87RUFDdEQsT0FBTztBQUNUO0FBRUEsU0FBUyx1QkFBdUIsSUFBWTtFQUMxQyxJQUFJLFFBQVEsaUJBQWlCLElBQUksQ0FBQztFQUNsQyxJQUFJLFVBQVUsTUFBTSxRQUFRLHNCQUFzQixJQUFJLENBQUM7RUFFdkQsSUFBSSxVQUFVLE1BQU07SUFDbEIsTUFBTSxJQUFJLE1BQU07RUFDbEI7RUFFQSxvQ0FBb0M7RUFFcEMsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7RUFDdEIsTUFBTSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBSSxHQUFHLHlCQUF5QjtFQUN2RCxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtFQUVyQixJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRTtJQUNiLFVBQVU7SUFDVixPQUFPLElBQUksS0FBSyxLQUFLLEdBQUcsQ0FBQyxNQUFNLE9BQU87RUFDeEM7RUFFQSxxREFBcUQ7RUFFckQsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7RUFDdEIsTUFBTSxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7RUFDeEIsTUFBTSxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7RUFFeEIsSUFBSSxXQUFXO0VBQ2YsSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFO0lBQ1osSUFBSSxlQUFlLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUc7SUFDckMsTUFBTyxhQUFhLE1BQU0sR0FBRyxFQUFHO01BQzlCLGdCQUFnQjtNQUNoQixnQkFBZ0I7SUFDbEI7SUFDQSxXQUFXLENBQUM7RUFDZDtFQUVBLHdEQUF3RDtFQUV4RCxJQUFJLFFBQVE7RUFDWixJQUFJLEtBQUssQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRTtJQUN6QixNQUFNLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRztJQUN6QixNQUFNLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNqQyxRQUFRLENBQUMsU0FBUyxLQUFLLFFBQVEsSUFBSSxPQUFPLHlCQUF5QjtJQUNuRSxJQUFJLEtBQUssQ0FBQyxFQUFFLEtBQUssS0FBSyxRQUFRLENBQUM7RUFDakM7RUFFQSxNQUFNLE9BQU8sSUFBSSxLQUNmLEtBQUssR0FBRyxDQUFDLE1BQU0sT0FBTyxLQUFLLE1BQU0sUUFBUSxRQUFRO0VBR25ELElBQUksT0FBTyxLQUFLLE9BQU8sQ0FBQyxLQUFLLE9BQU8sS0FBSztFQUV6QyxPQUFPO0FBQ1Q7QUFFQSxTQUFTLHVCQUF1QixJQUFVO0VBQ3hDLE9BQU8sS0FBSyxXQUFXO0FBQ3pCO0FBRUEsT0FBTyxNQUFNLFlBQWtDO0VBQzdDLEtBQUs7RUFDTCxXQUFXO0VBQ1gsV0FBVSxNQUFNO0lBQ2QsT0FBTyxrQkFBa0I7RUFDM0I7RUFDQSxNQUFNO0VBQ04sV0FBVztFQUNYLFNBQVM7QUFDWCxFQUFFIn0= +// denoCacheMetadata=4788307332203501573,17398744267596112357
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/b03f1a0b11c99f0a3aab83a25ae3daebe28abed9beafd56072596f8e80c6c58b.js b/vendor/gen/https/jsr.io/b03f1a0b11c99f0a3aab83a25ae3daebe28abed9beafd56072596f8e80c6c58b.js new file mode 100644 index 0000000..452359d --- /dev/null +++ b/vendor/gen/https/jsr.io/b03f1a0b11c99f0a3aab83a25ae3daebe28abed9beafd56072596f8e80c6c58b.js @@ -0,0 +1,48 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. +// Alphabet chars. +export const CHAR_UPPERCASE_A = 65; /* A */ +export const CHAR_LOWERCASE_A = 97; /* a */ +export const CHAR_UPPERCASE_Z = 90; /* Z */ +export const CHAR_LOWERCASE_Z = 122; /* z */ +// Non-alphabetic chars. +export const CHAR_DOT = 46; /* . */ +export const CHAR_FORWARD_SLASH = 47; /* / */ +export const CHAR_BACKWARD_SLASH = 92; /* \ */ +export const CHAR_VERTICAL_LINE = 124; /* | */ +export const CHAR_COLON = 58; /* : */ +export const CHAR_QUESTION_MARK = 63; /* ? */ +export const CHAR_UNDERSCORE = 95; /* _ */ +export const CHAR_LINE_FEED = 10; /* \n */ +export const CHAR_CARRIAGE_RETURN = 13; /* \r */ +export const CHAR_TAB = 9; /* \t */ +export const CHAR_FORM_FEED = 12; /* \f */ +export const CHAR_EXCLAMATION_MARK = 33; /* ! */ +export const CHAR_HASH = 35; /* # */ +export const CHAR_SPACE = 32; /* */ +export const CHAR_NO_BREAK_SPACE = 160; /* \u00A0 */ +export const CHAR_ZERO_WIDTH_NOBREAK_SPACE = 65279; /* \uFEFF */ +export const CHAR_LEFT_SQUARE_BRACKET = 91; /* [ */ +export const CHAR_RIGHT_SQUARE_BRACKET = 93; /* ] */ +export const CHAR_LEFT_ANGLE_BRACKET = 60; /* < */ +export const CHAR_RIGHT_ANGLE_BRACKET = 62; /* > */ +export const CHAR_LEFT_CURLY_BRACKET = 123; /* { */ +export const CHAR_RIGHT_CURLY_BRACKET = 125; /* } */ +export const CHAR_HYPHEN_MINUS = 45; /* - */ +export const CHAR_PLUS = 43; /* + */ +export const CHAR_DOUBLE_QUOTE = 34; /* " */ +export const CHAR_SINGLE_QUOTE = 39; /* ' */ +export const CHAR_PERCENT = 37; /* % */ +export const CHAR_SEMICOLON = 59; /* ; */ +export const CHAR_CIRCUMFLEX_ACCENT = 94; /* ^ */ +export const CHAR_GRAVE_ACCENT = 96; /* ` */ +export const CHAR_AT = 64; /* @ */ +export const CHAR_AMPERSAND = 38; /* & */ +export const CHAR_EQUAL = 61; /* = */ +// Digits +export const CHAR_0 = 48; /* 0 */ +export const CHAR_9 = 57; /* 9 */ +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9fY29tbW9uL2NvbnN0YW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IHRoZSBCcm93c2VyaWZ5IGF1dGhvcnMuIE1JVCBMaWNlbnNlLlxuLy8gUG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2Jyb3dzZXJpZnkvcGF0aC1icm93c2VyaWZ5L1xuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vLyBBbHBoYWJldCBjaGFycy5cbmV4cG9ydCBjb25zdCBDSEFSX1VQUEVSQ0FTRV9BID0gNjU7IC8qIEEgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0xPV0VSQ0FTRV9BID0gOTc7IC8qIGEgKi9cbmV4cG9ydCBjb25zdCBDSEFSX1VQUEVSQ0FTRV9aID0gOTA7IC8qIFogKi9cbmV4cG9ydCBjb25zdCBDSEFSX0xPV0VSQ0FTRV9aID0gMTIyOyAvKiB6ICovXG5cbi8vIE5vbi1hbHBoYWJldGljIGNoYXJzLlxuZXhwb3J0IGNvbnN0IENIQVJfRE9UID0gNDY7IC8qIC4gKi9cbmV4cG9ydCBjb25zdCBDSEFSX0ZPUldBUkRfU0xBU0ggPSA0NzsgLyogLyAqL1xuZXhwb3J0IGNvbnN0IENIQVJfQkFDS1dBUkRfU0xBU0ggPSA5MjsgLyogXFwgKi9cbmV4cG9ydCBjb25zdCBDSEFSX1ZFUlRJQ0FMX0xJTkUgPSAxMjQ7IC8qIHwgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0NPTE9OID0gNTg7IC8qIDogKi9cbmV4cG9ydCBjb25zdCBDSEFSX1FVRVNUSU9OX01BUksgPSA2MzsgLyogPyAqL1xuZXhwb3J0IGNvbnN0IENIQVJfVU5ERVJTQ09SRSA9IDk1OyAvKiBfICovXG5leHBvcnQgY29uc3QgQ0hBUl9MSU5FX0ZFRUQgPSAxMDsgLyogXFxuICovXG5leHBvcnQgY29uc3QgQ0hBUl9DQVJSSUFHRV9SRVRVUk4gPSAxMzsgLyogXFxyICovXG5leHBvcnQgY29uc3QgQ0hBUl9UQUIgPSA5OyAvKiBcXHQgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0ZPUk1fRkVFRCA9IDEyOyAvKiBcXGYgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0VYQ0xBTUFUSU9OX01BUksgPSAzMzsgLyogISAqL1xuZXhwb3J0IGNvbnN0IENIQVJfSEFTSCA9IDM1OyAvKiAjICovXG5leHBvcnQgY29uc3QgQ0hBUl9TUEFDRSA9IDMyOyAvKiAgICovXG5leHBvcnQgY29uc3QgQ0hBUl9OT19CUkVBS19TUEFDRSA9IDE2MDsgLyogXFx1MDBBMCAqL1xuZXhwb3J0IGNvbnN0IENIQVJfWkVST19XSURUSF9OT0JSRUFLX1NQQUNFID0gNjUyNzk7IC8qIFxcdUZFRkYgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVQgPSA5MTsgLyogWyAqL1xuZXhwb3J0IGNvbnN0IENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQgPSA5MzsgLyogXSAqL1xuZXhwb3J0IGNvbnN0IENIQVJfTEVGVF9BTkdMRV9CUkFDS0VUID0gNjA7IC8qIDwgKi9cbmV4cG9ydCBjb25zdCBDSEFSX1JJR0hUX0FOR0xFX0JSQUNLRVQgPSA2MjsgLyogPiAqL1xuZXhwb3J0IGNvbnN0IENIQVJfTEVGVF9DVVJMWV9CUkFDS0VUID0gMTIzOyAvKiB7ICovXG5leHBvcnQgY29uc3QgQ0hBUl9SSUdIVF9DVVJMWV9CUkFDS0VUID0gMTI1OyAvKiB9ICovXG5leHBvcnQgY29uc3QgQ0hBUl9IWVBIRU5fTUlOVVMgPSA0NTsgLyogLSAqL1xuZXhwb3J0IGNvbnN0IENIQVJfUExVUyA9IDQzOyAvKiArICovXG5leHBvcnQgY29uc3QgQ0hBUl9ET1VCTEVfUVVPVEUgPSAzNDsgLyogXCIgKi9cbmV4cG9ydCBjb25zdCBDSEFSX1NJTkdMRV9RVU9URSA9IDM5OyAvKiAnICovXG5leHBvcnQgY29uc3QgQ0hBUl9QRVJDRU5UID0gMzc7IC8qICUgKi9cbmV4cG9ydCBjb25zdCBDSEFSX1NFTUlDT0xPTiA9IDU5OyAvKiA7ICovXG5leHBvcnQgY29uc3QgQ0hBUl9DSVJDVU1GTEVYX0FDQ0VOVCA9IDk0OyAvKiBeICovXG5leHBvcnQgY29uc3QgQ0hBUl9HUkFWRV9BQ0NFTlQgPSA5NjsgLyogYCAqL1xuZXhwb3J0IGNvbnN0IENIQVJfQVQgPSA2NDsgLyogQCAqL1xuZXhwb3J0IGNvbnN0IENIQVJfQU1QRVJTQU5EID0gMzg7IC8qICYgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0VRVUFMID0gNjE7IC8qID0gKi9cblxuLy8gRGlnaXRzXG5leHBvcnQgY29uc3QgQ0hBUl8wID0gNDg7IC8qIDAgKi9cbmV4cG9ydCBjb25zdCBDSEFSXzkgPSA1NzsgLyogOSAqL1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxpREFBaUQ7QUFDakQsNkRBQTZEO0FBQzdELHFDQUFxQztBQUVyQyxrQkFBa0I7QUFDbEIsT0FBTyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBSztBQUN6QyxPQUFPLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFLO0FBQ3pDLE9BQU8sTUFBTSxtQkFBbUIsR0FBRyxDQUFDLEtBQUs7QUFDekMsT0FBTyxNQUFNLG1CQUFtQixJQUFJLENBQUMsS0FBSztBQUUxQyx3QkFBd0I7QUFDeEIsT0FBTyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUs7QUFDakMsT0FBTyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBSztBQUMzQyxPQUFPLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFLO0FBQzVDLE9BQU8sTUFBTSxxQkFBcUIsSUFBSSxDQUFDLEtBQUs7QUFDNUMsT0FBTyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQUs7QUFDbkMsT0FBTyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBSztBQUMzQyxPQUFPLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFLO0FBQ3hDLE9BQU8sTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE1BQU07QUFDeEMsT0FBTyxNQUFNLHVCQUF1QixHQUFHLENBQUMsTUFBTTtBQUM5QyxPQUFPLE1BQU0sV0FBVyxFQUFFLENBQUMsTUFBTTtBQUNqQyxPQUFPLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUFNO0FBQ3hDLE9BQU8sTUFBTSx3QkFBd0IsR0FBRyxDQUFDLEtBQUs7QUFDOUMsT0FBTyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQUs7QUFDbEMsT0FBTyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQUs7QUFDbkMsT0FBTyxNQUFNLHNCQUFzQixJQUFJLENBQUMsVUFBVTtBQUNsRCxPQUFPLE1BQU0sZ0NBQWdDLE1BQU0sQ0FBQyxVQUFVO0FBQzlELE9BQU8sTUFBTSwyQkFBMkIsR0FBRyxDQUFDLEtBQUs7QUFDakQsT0FBTyxNQUFNLDRCQUE0QixHQUFHLENBQUMsS0FBSztBQUNsRCxPQUFPLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxLQUFLO0FBQ2hELE9BQU8sTUFBTSwyQkFBMkIsR0FBRyxDQUFDLEtBQUs7QUFDakQsT0FBTyxNQUFNLDBCQUEwQixJQUFJLENBQUMsS0FBSztBQUNqRCxPQUFPLE1BQU0sMkJBQTJCLElBQUksQ0FBQyxLQUFLO0FBQ2xELE9BQU8sTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQUs7QUFDMUMsT0FBTyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQUs7QUFDbEMsT0FBTyxNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBSztBQUMxQyxPQUFPLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFLO0FBQzFDLE9BQU8sTUFBTSxlQUFlLEdBQUcsQ0FBQyxLQUFLO0FBQ3JDLE9BQU8sTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQUs7QUFDdkMsT0FBTyxNQUFNLHlCQUF5QixHQUFHLENBQUMsS0FBSztBQUMvQyxPQUFPLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFLO0FBQzFDLE9BQU8sTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFLO0FBQ2hDLE9BQU8sTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQUs7QUFDdkMsT0FBTyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQUs7QUFFbkMsU0FBUztBQUNULE9BQU8sTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFLO0FBQy9CLE9BQU8sTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFLIn0= +// denoCacheMetadata=13737898158504449411,8281666398380652731
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/b46e482efb61416b06d67206660efaa4111bfb752ff7950d2a7d29feccc31ed8.js b/vendor/gen/https/jsr.io/b46e482efb61416b06d67206660efaa4111bfb752ff7950d2a7d29feccc31ed8.js new file mode 100644 index 0000000..7c2bef6 --- /dev/null +++ b/vendor/gen/https/jsr.io/b46e482efb61416b06d67206660efaa4111bfb752ff7950d2a7d29feccc31ed8.js @@ -0,0 +1,34 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { normalize as posixNormalize } from "./posix/normalize.ts"; +import { normalize as windowsNormalize } from "./windows/normalize.ts"; +/** + * Normalize the path, resolving `'..'` and `'.'` segments. + * + * Note: Resolving these segments does not necessarily mean that all will be + * eliminated. A `'..'` at the top-level will be preserved, and an empty path is + * canonically `'.'`. + * + * @example Usage + * ```ts + * import { normalize } from "@std/path/normalize"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(normalize("C:\\foo\\bar\\..\\baz\\quux"), "C:\\foo\\baz\\quux"); + * } else { + * assertEquals(normalize("/foo/bar/../baz/quux"), "/foo/baz/quux"); + * } + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `normalize` from `@std/path/unstable-normalize`. + * + * @param path Path to be normalized + * @returns The normalized path. + */ export function normalize(path) { + return isWindows ? windowsNormalize(path) : posixNormalize(path); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9ub3JtYWxpemUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgaXNXaW5kb3dzIH0gZnJvbSBcIi4vX29zLnRzXCI7XG5pbXBvcnQgeyBub3JtYWxpemUgYXMgcG9zaXhOb3JtYWxpemUgfSBmcm9tIFwiLi9wb3NpeC9ub3JtYWxpemUudHNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZSBhcyB3aW5kb3dzTm9ybWFsaXplIH0gZnJvbSBcIi4vd2luZG93cy9ub3JtYWxpemUudHNcIjtcbi8qKlxuICogTm9ybWFsaXplIHRoZSBwYXRoLCByZXNvbHZpbmcgYCcuLidgIGFuZCBgJy4nYCBzZWdtZW50cy5cbiAqXG4gKiBOb3RlOiBSZXNvbHZpbmcgdGhlc2Ugc2VnbWVudHMgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGF0IGFsbCB3aWxsIGJlXG4gKiBlbGltaW5hdGVkLiBBIGAnLi4nYCBhdCB0aGUgdG9wLWxldmVsIHdpbGwgYmUgcHJlc2VydmVkLCBhbmQgYW4gZW1wdHkgcGF0aCBpc1xuICogY2Fub25pY2FsbHkgYCcuJ2AuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiQHN0ZC9wYXRoL25vcm1hbGl6ZVwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogaWYgKERlbm8uYnVpbGQub3MgPT09IFwid2luZG93c1wiKSB7XG4gKiAgIGFzc2VydEVxdWFscyhub3JtYWxpemUoXCJDOlxcXFxmb29cXFxcYmFyXFxcXC4uXFxcXGJhelxcXFxxdXV4XCIpLCBcIkM6XFxcXGZvb1xcXFxiYXpcXFxccXV1eFwiKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGFzc2VydEVxdWFscyhub3JtYWxpemUoXCIvZm9vL2Jhci8uLi9iYXovcXV1eFwiKSwgXCIvZm9vL2Jhei9xdXV4XCIpO1xuICogfVxuICogYGBgXG4gKlxuICogTm90ZTogSWYgeW91IGFyZSB3b3JraW5nIHdpdGggZmlsZSBVUkxzLFxuICogdXNlIHRoZSBuZXcgdmVyc2lvbiBvZiBgbm9ybWFsaXplYCBmcm9tIGBAc3RkL3BhdGgvdW5zdGFibGUtbm9ybWFsaXplYC5cbiAqXG4gKiBAcGFyYW0gcGF0aCBQYXRoIHRvIGJlIG5vcm1hbGl6ZWRcbiAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlzV2luZG93cyA/IHdpbmRvd3NOb3JtYWxpemUocGF0aCkgOiBwb3NpeE5vcm1hbGl6ZShwYXRoKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDLFNBQVMsU0FBUyxRQUFRLFdBQVc7QUFDckMsU0FBUyxhQUFhLGNBQWMsUUFBUSx1QkFBdUI7QUFDbkUsU0FBUyxhQUFhLGdCQUFnQixRQUFRLHlCQUF5QjtBQUN2RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBd0JDLEdBQ0QsT0FBTyxTQUFTLFVBQVUsSUFBWTtFQUNwQyxPQUFPLFlBQVksaUJBQWlCLFFBQVEsZUFBZTtBQUM3RCJ9 +// denoCacheMetadata=18066234337017903951,4848550183655508090
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/b519461d2f80078b67e67a141da6406675a9a13c5f618fa300ba29185b7785b0.js b/vendor/gen/https/jsr.io/b519461d2f80078b67e67a141da6406675a9a13c5f618fa300ba29185b7785b0.js new file mode 100644 index 0000000..9785d10 --- /dev/null +++ b/vendor/gen/https/jsr.io/b519461d2f80078b67e67a141da6406675a9a13c5f618fa300ba29185b7785b0.js @@ -0,0 +1,24 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { assertPath } from "../_common/assert_path.ts"; +import { isPosixPathSeparator } from "./_util.ts"; +/** + * Verifies whether provided path is absolute. + * + * @example Usage + * ```ts + * import { isAbsolute } from "@std/path/posix/is-absolute"; + * import { assert, assertFalse } from "@std/assert"; + * + * assert(isAbsolute("/home/user/Documents/")); + * assertFalse(isAbsolute("home/user/Documents/")); + * ``` + * + * @param path The path to verify. + * @returns Whether the path is absolute. + */ export function isAbsolute(path) { + assertPath(path); + return path.length > 0 && isPosixPathSeparator(path.charCodeAt(0)); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9wb3NpeC9pc19hYnNvbHV0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBhc3NlcnRQYXRoIH0gZnJvbSBcIi4uL19jb21tb24vYXNzZXJ0X3BhdGgudHNcIjtcbmltcG9ydCB7IGlzUG9zaXhQYXRoU2VwYXJhdG9yIH0gZnJvbSBcIi4vX3V0aWwudHNcIjtcblxuLyoqXG4gKiBWZXJpZmllcyB3aGV0aGVyIHByb3ZpZGVkIHBhdGggaXMgYWJzb2x1dGUuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBpc0Fic29sdXRlIH0gZnJvbSBcIkBzdGQvcGF0aC9wb3NpeC9pcy1hYnNvbHV0ZVwiO1xuICogaW1wb3J0IHsgYXNzZXJ0LCBhc3NlcnRGYWxzZSB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydChpc0Fic29sdXRlKFwiL2hvbWUvdXNlci9Eb2N1bWVudHMvXCIpKTtcbiAqIGFzc2VydEZhbHNlKGlzQWJzb2x1dGUoXCJob21lL3VzZXIvRG9jdW1lbnRzL1wiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byB2ZXJpZnkuXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBwYXRoIGlzIGFic29sdXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBYnNvbHV0ZShwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgYXNzZXJ0UGF0aChwYXRoKTtcbiAgcmV0dXJuIHBhdGgubGVuZ3RoID4gMCAmJiBpc1Bvc2l4UGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMCkpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckMsU0FBUyxVQUFVLFFBQVEsNEJBQTRCO0FBQ3ZELFNBQVMsb0JBQW9CLFFBQVEsYUFBYTtBQUVsRDs7Ozs7Ozs7Ozs7Ozs7Q0FjQyxHQUNELE9BQU8sU0FBUyxXQUFXLElBQVk7RUFDckMsV0FBVztFQUNYLE9BQU8sS0FBSyxNQUFNLEdBQUcsS0FBSyxxQkFBcUIsS0FBSyxVQUFVLENBQUM7QUFDakUifQ== +// denoCacheMetadata=9726472102554170415,3270382341425815551
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/b6032b1a54d54ddceef1977651fc7c93aa6aa011bf5e447d7e1ed36d51b9ebd9.js b/vendor/gen/https/jsr.io/b6032b1a54d54ddceef1977651fc7c93aa6aa011bf5e447d7e1ed36d51b9ebd9.js new file mode 100644 index 0000000..b106fc0 --- /dev/null +++ b/vendor/gen/https/jsr.io/b6032b1a54d54ddceef1977651fc7c93aa6aa011bf5e447d7e1ed36d51b9ebd9.js @@ -0,0 +1,75 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +// Ported from unicode_width rust crate, Copyright (c) 2015 The Rust Project Developers. MIT license. +import data from "./_data.json" with { + type: "json" +}; +import { runLengthDecode } from "./_run_length.ts"; +let tables = null; +function lookupWidth(cp) { + if (!tables) tables = data.tables.map(runLengthDecode); + const t1Offset = tables[0][cp >> 13 & 0xff]; + const t2Offset = tables[1][128 * t1Offset + (cp >> 6 & 0x7f)]; + const packedWidths = tables[2][16 * t2Offset + (cp >> 2 & 0xf)]; + const width = packedWidths >> 2 * (cp & 0b11) & 0b11; + return width === 3 ? 1 : width; +} +const cache = new Map(); +function charWidth(char) { + if (cache.has(char)) return cache.get(char); + const codePoint = char.codePointAt(0); + let width = null; + if (codePoint < 0x7f) { + width = codePoint >= 0x20 ? 1 : codePoint === 0 ? 0 : null; + } else if (codePoint >= 0xa0) { + width = lookupWidth(codePoint); + } else { + width = null; + } + cache.set(char, width); + return width; +} +/** + * Calculate the physical width of a string in a TTY-like environment. This is + * useful for cases such as calculating where a line-wrap will occur and + * underlining strings. + * + * The physical width is given by the number of columns required to display + * the string. The number of columns a given unicode character occupies can + * vary depending on the character itself. + * + * @param str The string to measure. + * @returns The unicode width of the string. + * + * @example Calculating the unicode width of a string + * ```ts + * import { unicodeWidth } from "@std/cli/unicode-width"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(unicodeWidth("hello world"), 11); + * assertEquals(unicodeWidth("天地玄黃宇宙洪荒"), 16); + * assertEquals(unicodeWidth("fullwidth"), 18); + * ``` + * + * @example Calculating the unicode width of a color-encoded string + * ```ts + * import { unicodeWidth } from "@std/cli/unicode-width"; + * import { stripAnsiCode } from "@std/fmt/colors"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(unicodeWidth(stripAnsiCode("\x1b[36mголубой\x1b[39m")), 7); + * assertEquals(unicodeWidth(stripAnsiCode("\x1b[31m紅色\x1b[39m")), 4); + * assertEquals(unicodeWidth(stripAnsiCode("\x1B]8;;https://deno.land\x07🦕\x1B]8;;\x07")), 2); + * ``` + * + * Use + * {@linkcode https://jsr.io/@std/fmt/doc/colors/~/stripAnsiCode | stripAnsiCode} + * to remove ANSI escape codes from a string before passing it to + * {@linkcode unicodeWidth}. + */ export function unicodeWidth(str) { + return [ + ...str + ].map((ch)=>charWidth(ch) ?? 0).reduce((a, b)=>a + b, 0); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvY2xpLzEuMC4xNy91bmljb2RlX3dpZHRoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG4vLyBQb3J0ZWQgZnJvbSB1bmljb2RlX3dpZHRoIHJ1c3QgY3JhdGUsIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUnVzdCBQcm9qZWN0IERldmVsb3BlcnMuIE1JVCBsaWNlbnNlLlxuXG5pbXBvcnQgZGF0YSBmcm9tIFwiLi9fZGF0YS5qc29uXCIgd2l0aCB7IHR5cGU6IFwianNvblwiIH07XG5pbXBvcnQgeyBydW5MZW5ndGhEZWNvZGUgfSBmcm9tIFwiLi9fcnVuX2xlbmd0aC50c1wiO1xuXG5sZXQgdGFibGVzOiBVaW50OEFycmF5W10gfCBudWxsID0gbnVsbDtcbmZ1bmN0aW9uIGxvb2t1cFdpZHRoKGNwOiBudW1iZXIpIHtcbiAgaWYgKCF0YWJsZXMpIHRhYmxlcyA9IGRhdGEudGFibGVzLm1hcChydW5MZW5ndGhEZWNvZGUpO1xuICBjb25zdCB0MU9mZnNldCA9IHRhYmxlc1swXSFbKGNwID4+IDEzKSAmIDB4ZmZdITtcbiAgY29uc3QgdDJPZmZzZXQgPSB0YWJsZXNbMV0hWzEyOCAqIHQxT2Zmc2V0ICsgKChjcCA+PiA2KSAmIDB4N2YpXSE7XG4gIGNvbnN0IHBhY2tlZFdpZHRocyA9IHRhYmxlc1syXSFbMTYgKiB0Mk9mZnNldCArICgoY3AgPj4gMikgJiAweGYpXSE7XG5cbiAgY29uc3Qgd2lkdGggPSAocGFja2VkV2lkdGhzID4+ICgyICogKGNwICYgMGIxMSkpKSAmIDBiMTE7XG5cbiAgcmV0dXJuIHdpZHRoID09PSAzID8gMSA6IHdpZHRoO1xufVxuXG5jb25zdCBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXIgfCBudWxsPigpO1xuZnVuY3Rpb24gY2hhcldpZHRoKGNoYXI6IHN0cmluZykge1xuICBpZiAoY2FjaGUuaGFzKGNoYXIpKSByZXR1cm4gY2FjaGUuZ2V0KGNoYXIpITtcblxuICBjb25zdCBjb2RlUG9pbnQgPSBjaGFyLmNvZGVQb2ludEF0KDApITtcbiAgbGV0IHdpZHRoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBpZiAoY29kZVBvaW50IDwgMHg3Zikge1xuICAgIHdpZHRoID0gY29kZVBvaW50ID49IDB4MjAgPyAxIDogY29kZVBvaW50ID09PSAwID8gMCA6IG51bGw7XG4gIH0gZWxzZSBpZiAoY29kZVBvaW50ID49IDB4YTApIHtcbiAgICB3aWR0aCA9IGxvb2t1cFdpZHRoKGNvZGVQb2ludCk7XG4gIH0gZWxzZSB7XG4gICAgd2lkdGggPSBudWxsO1xuICB9XG5cbiAgY2FjaGUuc2V0KGNoYXIsIHdpZHRoKTtcbiAgcmV0dXJuIHdpZHRoO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgcGh5c2ljYWwgd2lkdGggb2YgYSBzdHJpbmcgaW4gYSBUVFktbGlrZSBlbnZpcm9ubWVudC4gVGhpcyBpc1xuICogdXNlZnVsIGZvciBjYXNlcyBzdWNoIGFzIGNhbGN1bGF0aW5nIHdoZXJlIGEgbGluZS13cmFwIHdpbGwgb2NjdXIgYW5kXG4gKiB1bmRlcmxpbmluZyBzdHJpbmdzLlxuICpcbiAqIFRoZSBwaHlzaWNhbCB3aWR0aCBpcyBnaXZlbiBieSB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgcmVxdWlyZWQgdG8gZGlzcGxheVxuICogdGhlIHN0cmluZy4gVGhlIG51bWJlciBvZiBjb2x1bW5zIGEgZ2l2ZW4gdW5pY29kZSBjaGFyYWN0ZXIgb2NjdXBpZXMgY2FuXG4gKiB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgY2hhcmFjdGVyIGl0c2VsZi5cbiAqXG4gKiBAcGFyYW0gc3RyIFRoZSBzdHJpbmcgdG8gbWVhc3VyZS5cbiAqIEByZXR1cm5zIFRoZSB1bmljb2RlIHdpZHRoIG9mIHRoZSBzdHJpbmcuXG4gKlxuICogQGV4YW1wbGUgQ2FsY3VsYXRpbmcgdGhlIHVuaWNvZGUgd2lkdGggb2YgYSBzdHJpbmdcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyB1bmljb2RlV2lkdGggfSBmcm9tIFwiQHN0ZC9jbGkvdW5pY29kZS13aWR0aFwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogYXNzZXJ0RXF1YWxzKHVuaWNvZGVXaWR0aChcImhlbGxvIHdvcmxkXCIpLCAxMSk7XG4gKiBhc3NlcnRFcXVhbHModW5pY29kZVdpZHRoKFwi5aSp5Zyw546E6buD5a6H5a6Z5rSq6I2SXCIpLCAxNik7XG4gKiBhc3NlcnRFcXVhbHModW5pY29kZVdpZHRoKFwi772G772V772M772M772X772J772E772U772IXCIpLCAxOCk7XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBDYWxjdWxhdGluZyB0aGUgdW5pY29kZSB3aWR0aCBvZiBhIGNvbG9yLWVuY29kZWQgc3RyaW5nXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgdW5pY29kZVdpZHRoIH0gZnJvbSBcIkBzdGQvY2xpL3VuaWNvZGUtd2lkdGhcIjtcbiAqIGltcG9ydCB7IHN0cmlwQW5zaUNvZGUgfSBmcm9tIFwiQHN0ZC9mbXQvY29sb3JzXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHModW5pY29kZVdpZHRoKHN0cmlwQW5zaUNvZGUoXCJcXHgxYlszNm3Qs9C+0LvRg9Cx0L7QuVxceDFiWzM5bVwiKSksIDcpO1xuICogYXNzZXJ0RXF1YWxzKHVuaWNvZGVXaWR0aChzdHJpcEFuc2lDb2RlKFwiXFx4MWJbMzFt57SF6ImyXFx4MWJbMzltXCIpKSwgNCk7XG4gKiBhc3NlcnRFcXVhbHModW5pY29kZVdpZHRoKHN0cmlwQW5zaUNvZGUoXCJcXHgxQl04OztodHRwczovL2Rlbm8ubGFuZFxceDA38J+mlVxceDFCXTg7O1xceDA3XCIpKSwgMik7XG4gKiBgYGBcbiAqXG4gKiBVc2VcbiAqIHtAbGlua2NvZGUgaHR0cHM6Ly9qc3IuaW8vQHN0ZC9mbXQvZG9jL2NvbG9ycy9+L3N0cmlwQW5zaUNvZGUgfCBzdHJpcEFuc2lDb2RlfVxuICogdG8gcmVtb3ZlIEFOU0kgZXNjYXBlIGNvZGVzIGZyb20gYSBzdHJpbmcgYmVmb3JlIHBhc3NpbmcgaXQgdG9cbiAqIHtAbGlua2NvZGUgdW5pY29kZVdpZHRofS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuaWNvZGVXaWR0aChzdHI6IHN0cmluZyk6IG51bWJlciB7XG4gIHJldHVybiBbLi4uc3RyXS5tYXAoKGNoKSA9PiBjaGFyV2lkdGgoY2gpID8/IDApLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFDckMscUdBQXFHO0FBRXJHLE9BQU8sVUFBVSxvQkFBb0I7RUFBRSxNQUFNO0FBQU8sRUFBRTtBQUN0RCxTQUFTLGVBQWUsUUFBUSxtQkFBbUI7QUFFbkQsSUFBSSxTQUE4QjtBQUNsQyxTQUFTLFlBQVksRUFBVTtFQUM3QixJQUFJLENBQUMsUUFBUSxTQUFTLEtBQUssTUFBTSxDQUFDLEdBQUcsQ0FBQztFQUN0QyxNQUFNLFdBQVcsTUFBTSxDQUFDLEVBQUUsQUFBQyxDQUFDLEFBQUMsTUFBTSxLQUFNLEtBQUs7RUFDOUMsTUFBTSxXQUFXLE1BQU0sQ0FBQyxFQUFFLEFBQUMsQ0FBQyxNQUFNLFdBQVcsQ0FBQyxBQUFDLE1BQU0sSUFBSyxJQUFJLEVBQUU7RUFDaEUsTUFBTSxlQUFlLE1BQU0sQ0FBQyxFQUFFLEFBQUMsQ0FBQyxLQUFLLFdBQVcsQ0FBQyxBQUFDLE1BQU0sSUFBSyxHQUFHLEVBQUU7RUFFbEUsTUFBTSxRQUFRLEFBQUMsZ0JBQWlCLElBQUksQ0FBQyxLQUFLLElBQUksSUFBTTtFQUVwRCxPQUFPLFVBQVUsSUFBSSxJQUFJO0FBQzNCO0FBRUEsTUFBTSxRQUFRLElBQUk7QUFDbEIsU0FBUyxVQUFVLElBQVk7RUFDN0IsSUFBSSxNQUFNLEdBQUcsQ0FBQyxPQUFPLE9BQU8sTUFBTSxHQUFHLENBQUM7RUFFdEMsTUFBTSxZQUFZLEtBQUssV0FBVyxDQUFDO0VBQ25DLElBQUksUUFBdUI7RUFFM0IsSUFBSSxZQUFZLE1BQU07SUFDcEIsUUFBUSxhQUFhLE9BQU8sSUFBSSxjQUFjLElBQUksSUFBSTtFQUN4RCxPQUFPLElBQUksYUFBYSxNQUFNO0lBQzVCLFFBQVEsWUFBWTtFQUN0QixPQUFPO0lBQ0wsUUFBUTtFQUNWO0VBRUEsTUFBTSxHQUFHLENBQUMsTUFBTTtFQUNoQixPQUFPO0FBQ1Q7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXFDQyxHQUNELE9BQU8sU0FBUyxhQUFhLEdBQVc7RUFDdEMsT0FBTztPQUFJO0dBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFPLFVBQVUsT0FBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBTSxJQUFJLEdBQUc7QUFDMUUifQ== +// denoCacheMetadata=11356816073894109278,7553829658346204126
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/b6447565302b0926e9a9ee9be7baf6b6ee4377252ac301705c902d0bad0e2dca.js b/vendor/gen/https/jsr.io/b6447565302b0926e9a9ee9be7baf6b6ee4377252ac301705c902d0bad0e2dca.js new file mode 100644 index 0000000..a0dc2c5 --- /dev/null +++ b/vendor/gen/https/jsr.io/b6447565302b0926e9a9ee9be7baf6b6ee4377252ac301705c902d0bad0e2dca.js @@ -0,0 +1,33 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * Concatenate an array of byte slices into a single slice. + * + * @param buffers Array of byte slices to concatenate. + * @returns A new byte slice containing all the input slices concatenated. + * + * @example Basic usage + * ```ts + * import { concat } from "@std/bytes/concat"; + * import { assertEquals } from "@std/assert"; + * + * const a = new Uint8Array([0, 1, 2]); + * const b = new Uint8Array([3, 4, 5]); + * + * assertEquals(concat([a, b]), new Uint8Array([0, 1, 2, 3, 4, 5])); + * ``` + */ export function concat(buffers) { + let length = 0; + for (const buffer of buffers){ + length += buffer.length; + } + const output = new Uint8Array(length); + let index = 0; + for (const buffer of buffers){ + output.set(buffer, index); + index += buffer.length; + } + return output; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvYnl0ZXMvMS4wLjYvY29uY2F0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB0eXBlIHsgVWludDhBcnJheV8gfSBmcm9tIFwiLi9fdHlwZXMudHNcIjtcbmV4cG9ydCB0eXBlIHsgVWludDhBcnJheV8gfTtcblxuLyoqXG4gKiBDb25jYXRlbmF0ZSBhbiBhcnJheSBvZiBieXRlIHNsaWNlcyBpbnRvIGEgc2luZ2xlIHNsaWNlLlxuICpcbiAqIEBwYXJhbSBidWZmZXJzIEFycmF5IG9mIGJ5dGUgc2xpY2VzIHRvIGNvbmNhdGVuYXRlLlxuICogQHJldHVybnMgQSBuZXcgYnl0ZSBzbGljZSBjb250YWluaW5nIGFsbCB0aGUgaW5wdXQgc2xpY2VzIGNvbmNhdGVuYXRlZC5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGNvbmNhdCB9IGZyb20gXCJAc3RkL2J5dGVzL2NvbmNhdFwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3QgYSA9IG5ldyBVaW50OEFycmF5KFswLCAxLCAyXSk7XG4gKiBjb25zdCBiID0gbmV3IFVpbnQ4QXJyYXkoWzMsIDQsIDVdKTtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoY29uY2F0KFthLCBiXSksIG5ldyBVaW50OEFycmF5KFswLCAxLCAyLCAzLCA0LCA1XSkpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25jYXQoYnVmZmVyczogcmVhZG9ubHkgVWludDhBcnJheVtdKTogVWludDhBcnJheV8ge1xuICBsZXQgbGVuZ3RoID0gMDtcbiAgZm9yIChjb25zdCBidWZmZXIgb2YgYnVmZmVycykge1xuICAgIGxlbmd0aCArPSBidWZmZXIubGVuZ3RoO1xuICB9XG4gIGNvbnN0IG91dHB1dCA9IG5ldyBVaW50OEFycmF5KGxlbmd0aCk7XG4gIGxldCBpbmRleCA9IDA7XG4gIGZvciAoY29uc3QgYnVmZmVyIG9mIGJ1ZmZlcnMpIHtcbiAgICBvdXRwdXQuc2V0KGJ1ZmZlciwgaW5kZXgpO1xuICAgIGluZGV4ICs9IGJ1ZmZlci5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFLckM7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FnQkMsR0FDRCxPQUFPLFNBQVMsT0FBTyxPQUE4QjtFQUNuRCxJQUFJLFNBQVM7RUFDYixLQUFLLE1BQU0sVUFBVSxRQUFTO0lBQzVCLFVBQVUsT0FBTyxNQUFNO0VBQ3pCO0VBQ0EsTUFBTSxTQUFTLElBQUksV0FBVztFQUM5QixJQUFJLFFBQVE7RUFDWixLQUFLLE1BQU0sVUFBVSxRQUFTO0lBQzVCLE9BQU8sR0FBRyxDQUFDLFFBQVE7SUFDbkIsU0FBUyxPQUFPLE1BQU07RUFDeEI7RUFFQSxPQUFPO0FBQ1QifQ== +// denoCacheMetadata=8508854964595650416,8661059135749334705
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/b6c2a8bfeeb3680c0fa67ceee394b69e61c8679344242038a6bfb006ece7b5f7.js b/vendor/gen/https/jsr.io/b6c2a8bfeeb3680c0fa67ceee394b69e61c8679344242038a6bfb006ece7b5f7.js new file mode 100644 index 0000000..87ca740 --- /dev/null +++ b/vendor/gen/https/jsr.io/b6c2a8bfeeb3680c0fa67ceee394b69e61c8679344242038a6bfb006ece7b5f7.js @@ -0,0 +1,9 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { assertPath } from "./assert_path.ts"; +export function assertArg(path) { + assertPath(path); + if (path.length === 0) return "."; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9fY29tbW9uL2Rpcm5hbWUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgYXNzZXJ0UGF0aCB9IGZyb20gXCIuL2Fzc2VydF9wYXRoLnRzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRBcmcocGF0aDogc3RyaW5nKSB7XG4gIGFzc2VydFBhdGgocGF0aCk7XG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFwiLlwiO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckMsU0FBUyxVQUFVLFFBQVEsbUJBQW1CO0FBRTlDLE9BQU8sU0FBUyxVQUFVLElBQVk7RUFDcEMsV0FBVztFQUNYLElBQUksS0FBSyxNQUFNLEtBQUssR0FBRyxPQUFPO0FBQ2hDIn0= +// denoCacheMetadata=12071784527289267437,6913605088101689581
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/b6c9bf6950bf2470b05ff5d1536cb2bcc7ff6d2d90a030bd8144f0b0940ec257.js b/vendor/gen/https/jsr.io/b6c9bf6950bf2470b05ff5d1536cb2bcc7ff6d2d90a030bd8144f0b0940ec257.js new file mode 100644 index 0000000..af4d610 --- /dev/null +++ b/vendor/gen/https/jsr.io/b6c9bf6950bf2470b05ff5d1536cb2bcc7ff6d2d90a030bd8144f0b0940ec257.js @@ -0,0 +1,31 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { assertArg } from "../_common/from_file_url.ts"; +/** + * Converts a file URL to a path string. + * + * @example Usage + * ```ts + * import { fromFileUrl } from "@std/path/windows/from-file-url"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(fromFileUrl("file:///home/foo"), "\\home\\foo"); + * assertEquals(fromFileUrl("file:///C:/Users/foo"), "C:\\Users\\foo"); + * assertEquals(fromFileUrl("file://localhost/home/foo"), "\\home\\foo"); + * ``` + * + * @param url The file URL to convert. + * @returns The path string. + */ export function fromFileUrl(url) { + url = assertArg(url); + let path = decodeURIComponent(url.pathname.replace(/\//g, "\\").replace(/%(?![0-9A-Fa-f]{2})/g, "%25")).replace(/^\\*([A-Za-z]:)(\\|$)/, "$1\\"); + if (url.hostname !== "") { + // Note: The `URL` implementation guarantees that the drive letter and + // hostname are mutually exclusive. Otherwise it would not have been valid + // to append the hostname and path like this. + path = `\\\\${url.hostname}${path}`; + } + return path; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC93aW5kb3dzL2Zyb21fZmlsZV91cmwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgYXNzZXJ0QXJnIH0gZnJvbSBcIi4uL19jb21tb24vZnJvbV9maWxlX3VybC50c1wiO1xuXG4vKipcbiAqIENvbnZlcnRzIGEgZmlsZSBVUkwgdG8gYSBwYXRoIHN0cmluZy5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGZyb21GaWxlVXJsIH0gZnJvbSBcIkBzdGQvcGF0aC93aW5kb3dzL2Zyb20tZmlsZS11cmxcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydEVxdWFscyhmcm9tRmlsZVVybChcImZpbGU6Ly8vaG9tZS9mb29cIiksIFwiXFxcXGhvbWVcXFxcZm9vXCIpO1xuICogYXNzZXJ0RXF1YWxzKGZyb21GaWxlVXJsKFwiZmlsZTovLy9DOi9Vc2Vycy9mb29cIiksIFwiQzpcXFxcVXNlcnNcXFxcZm9vXCIpO1xuICogYXNzZXJ0RXF1YWxzKGZyb21GaWxlVXJsKFwiZmlsZTovL2xvY2FsaG9zdC9ob21lL2Zvb1wiKSwgXCJcXFxcaG9tZVxcXFxmb29cIik7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gdXJsIFRoZSBmaWxlIFVSTCB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIHBhdGggc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbUZpbGVVcmwodXJsOiBVUkwgfCBzdHJpbmcpOiBzdHJpbmcge1xuICB1cmwgPSBhc3NlcnRBcmcodXJsKTtcbiAgbGV0IHBhdGggPSBkZWNvZGVVUklDb21wb25lbnQoXG4gICAgdXJsLnBhdGhuYW1lLnJlcGxhY2UoL1xcLy9nLCBcIlxcXFxcIikucmVwbGFjZSgvJSg/IVswLTlBLUZhLWZdezJ9KS9nLCBcIiUyNVwiKSxcbiAgKS5yZXBsYWNlKC9eXFxcXCooW0EtWmEtel06KShcXFxcfCQpLywgXCIkMVxcXFxcIik7XG4gIGlmICh1cmwuaG9zdG5hbWUgIT09IFwiXCIpIHtcbiAgICAvLyBOb3RlOiBUaGUgYFVSTGAgaW1wbGVtZW50YXRpb24gZ3VhcmFudGVlcyB0aGF0IHRoZSBkcml2ZSBsZXR0ZXIgYW5kXG4gICAgLy8gaG9zdG5hbWUgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gT3RoZXJ3aXNlIGl0IHdvdWxkIG5vdCBoYXZlIGJlZW4gdmFsaWRcbiAgICAvLyB0byBhcHBlbmQgdGhlIGhvc3RuYW1lIGFuZCBwYXRoIGxpa2UgdGhpcy5cbiAgICBwYXRoID0gYFxcXFxcXFxcJHt1cmwuaG9zdG5hbWV9JHtwYXRofWA7XG4gIH1cbiAgcmV0dXJuIHBhdGg7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQyxTQUFTLFNBQVMsUUFBUSw4QkFBOEI7QUFFeEQ7Ozs7Ozs7Ozs7Ozs7OztDQWVDLEdBQ0QsT0FBTyxTQUFTLFlBQVksR0FBaUI7RUFDM0MsTUFBTSxVQUFVO0VBQ2hCLElBQUksT0FBTyxtQkFDVCxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxNQUFNLE9BQU8sQ0FBQyx3QkFBd0IsUUFDbEUsT0FBTyxDQUFDLHlCQUF5QjtFQUNuQyxJQUFJLElBQUksUUFBUSxLQUFLLElBQUk7SUFDdkIsc0VBQXNFO0lBQ3RFLDBFQUEwRTtJQUMxRSw2Q0FBNkM7SUFDN0MsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLFFBQVEsR0FBRyxNQUFNO0VBQ3JDO0VBQ0EsT0FBTztBQUNUIn0= +// denoCacheMetadata=17853832658272498677,12490616171629349588
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/b766ba6cc8f67eca6b69141d5b966816a727fec3d38098c6c5629f915d597a3b.js b/vendor/gen/https/jsr.io/b766ba6cc8f67eca6b69141d5b966816a727fec3d38098c6c5629f915d597a3b.js new file mode 100644 index 0000000..b497270 --- /dev/null +++ b/vendor/gen/https/jsr.io/b766ba6cc8f67eca6b69141d5b966816a727fec3d38098c6c5629f915d597a3b.js @@ -0,0 +1,62 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** End-of-line character for POSIX platforms such as macOS and Linux. */ export const LF = "\n"; +/** End-of-line character for Windows platforms. */ export const CRLF = "\r\n"; +/** + * End-of-line character evaluated for the current platform. + * + * @example Usage + * ```ts ignore + * import { EOL } from "@std/fs/eol"; + * + * EOL; // "\n" on POSIX platforms and "\r\n" on Windows + * ``` + */ export const EOL = // deno-lint-ignore no-explicit-any +globalThis.Deno?.build.os === "windows" ? CRLF : LF; +const regDetect = /(?:\r?\n)/g; +/** + * Returns the detected EOL character(s) detected in the input string. If no EOL + * character is detected, `null` is returned. + * + * @param content The input string to detect EOL characters. + * + * @returns The detected EOL character(s) or `null` if no EOL character is detected. + * + * @example Usage + * ```ts ignore + * import { detect } from "@std/fs/eol"; + * + * detect("deno\r\nis not\r\nnode"); // "\r\n" + * detect("deno\nis not\r\nnode"); // "\r\n" + * detect("deno\nis not\nnode"); // "\n" + * detect("deno is not node"); // null + * ``` + */ export function detect(content) { + const d = content.match(regDetect); + if (!d || d.length === 0) { + return null; + } + const hasCRLF = d.some((x)=>x === CRLF); + return hasCRLF ? CRLF : LF; +} +/** + * Normalize the input string to the targeted EOL. + * + * @param content The input string to normalize. + * @param eol The EOL character(s) to normalize the input string to. + * + * @returns The input string normalized to the targeted EOL. + * + * @example Usage + * ```ts ignore + * import { LF, format } from "@std/fs/eol"; + * + * const CRLFinput = "deno\r\nis not\r\nnode"; + * + * format(CRLFinput, LF); // "deno\nis not\nnode" + * ``` + */ export function format(content, eol) { + return content.replace(regDetect, eol); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnMvMS4wLjE3L2VvbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vKiogRW5kLW9mLWxpbmUgY2hhcmFjdGVyIGZvciBQT1NJWCBwbGF0Zm9ybXMgc3VjaCBhcyBtYWNPUyBhbmQgTGludXguICovXG5leHBvcnQgY29uc3QgTEYgPSBcIlxcblwiIGFzIGNvbnN0O1xuXG4vKiogRW5kLW9mLWxpbmUgY2hhcmFjdGVyIGZvciBXaW5kb3dzIHBsYXRmb3Jtcy4gKi9cbmV4cG9ydCBjb25zdCBDUkxGID0gXCJcXHJcXG5cIiBhcyBjb25zdDtcblxuLyoqXG4gKiBFbmQtb2YtbGluZSBjaGFyYWN0ZXIgZXZhbHVhdGVkIGZvciB0aGUgY3VycmVudCBwbGF0Zm9ybS5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHMgaWdub3JlXG4gKiBpbXBvcnQgeyBFT0wgfSBmcm9tIFwiQHN0ZC9mcy9lb2xcIjtcbiAqXG4gKiBFT0w7IC8vIFwiXFxuXCIgb24gUE9TSVggcGxhdGZvcm1zIGFuZCBcIlxcclxcblwiIG9uIFdpbmRvd3NcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgRU9MOiBcIlxcblwiIHwgXCJcXHJcXG5cIiA9XG4gIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG4gIChnbG9iYWxUaGlzIGFzIGFueSkuRGVubz8uYnVpbGQub3MgPT09IFwid2luZG93c1wiID8gQ1JMRiA6IExGO1xuXG5jb25zdCByZWdEZXRlY3QgPSAvKD86XFxyP1xcbikvZztcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBkZXRlY3RlZCBFT0wgY2hhcmFjdGVyKHMpIGRldGVjdGVkIGluIHRoZSBpbnB1dCBzdHJpbmcuIElmIG5vIEVPTFxuICogY2hhcmFjdGVyIGlzIGRldGVjdGVkLCBgbnVsbGAgaXMgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIGNvbnRlbnQgVGhlIGlucHV0IHN0cmluZyB0byBkZXRlY3QgRU9MIGNoYXJhY3RlcnMuXG4gKlxuICogQHJldHVybnMgVGhlIGRldGVjdGVkIEVPTCBjaGFyYWN0ZXIocykgb3IgYG51bGxgIGlmIG5vIEVPTCBjaGFyYWN0ZXIgaXMgZGV0ZWN0ZWQuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgZGV0ZWN0IH0gZnJvbSBcIkBzdGQvZnMvZW9sXCI7XG4gKlxuICogZGV0ZWN0KFwiZGVub1xcclxcbmlzIG5vdFxcclxcbm5vZGVcIik7IC8vIFwiXFxyXFxuXCJcbiAqIGRldGVjdChcImRlbm9cXG5pcyBub3RcXHJcXG5ub2RlXCIpOyAvLyBcIlxcclxcblwiXG4gKiBkZXRlY3QoXCJkZW5vXFxuaXMgbm90XFxubm9kZVwiKTsgLy8gXCJcXG5cIlxuICogZGV0ZWN0KFwiZGVubyBpcyBub3Qgbm9kZVwiKTsgLy8gbnVsbFxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3QoY29udGVudDogc3RyaW5nKTogdHlwZW9mIEVPTCB8IG51bGwge1xuICBjb25zdCBkID0gY29udGVudC5tYXRjaChyZWdEZXRlY3QpO1xuICBpZiAoIWQgfHwgZC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBoYXNDUkxGID0gZC5zb21lKCh4OiBzdHJpbmcpOiBib29sZWFuID0+IHggPT09IENSTEYpO1xuXG4gIHJldHVybiBoYXNDUkxGID8gQ1JMRiA6IExGO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSB0aGUgaW5wdXQgc3RyaW5nIHRvIHRoZSB0YXJnZXRlZCBFT0wuXG4gKlxuICogQHBhcmFtIGNvbnRlbnQgVGhlIGlucHV0IHN0cmluZyB0byBub3JtYWxpemUuXG4gKiBAcGFyYW0gZW9sIFRoZSBFT0wgY2hhcmFjdGVyKHMpIHRvIG5vcm1hbGl6ZSB0aGUgaW5wdXQgc3RyaW5nIHRvLlxuICpcbiAqIEByZXR1cm5zIFRoZSBpbnB1dCBzdHJpbmcgbm9ybWFsaXplZCB0byB0aGUgdGFyZ2V0ZWQgRU9MLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBpZ25vcmVcbiAqIGltcG9ydCB7IExGLCBmb3JtYXQgfSBmcm9tIFwiQHN0ZC9mcy9lb2xcIjtcbiAqXG4gKiBjb25zdCBDUkxGaW5wdXQgPSBcImRlbm9cXHJcXG5pcyBub3RcXHJcXG5ub2RlXCI7XG4gKlxuICogZm9ybWF0KENSTEZpbnB1dCwgTEYpOyAvLyBcImRlbm9cXG5pcyBub3RcXG5ub2RlXCJcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0KGNvbnRlbnQ6IHN0cmluZywgZW9sOiB0eXBlb2YgRU9MKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZShyZWdEZXRlY3QsIGVvbCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQyx1RUFBdUUsR0FDdkUsT0FBTyxNQUFNLEtBQUssS0FBYztBQUVoQyxpREFBaUQsR0FDakQsT0FBTyxNQUFNLE9BQU8sT0FBZ0I7QUFFcEM7Ozs7Ozs7OztDQVNDLEdBQ0QsT0FBTyxNQUFNLE1BRVgsQUFEQSxtQ0FBbUM7QUFDbEMsV0FBbUIsSUFBSSxFQUFFLE1BQU0sT0FBTyxZQUFZLE9BQU8sR0FBRztBQUUvRCxNQUFNLFlBQVk7QUFFbEI7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBaUJDLEdBQ0QsT0FBTyxTQUFTLE9BQU8sT0FBZTtFQUNwQyxNQUFNLElBQUksUUFBUSxLQUFLLENBQUM7RUFDeEIsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEtBQUssR0FBRztJQUN4QixPQUFPO0VBQ1Q7RUFDQSxNQUFNLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUF1QixNQUFNO0VBRXJELE9BQU8sVUFBVSxPQUFPO0FBQzFCO0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FnQkMsR0FDRCxPQUFPLFNBQVMsT0FBTyxPQUFlLEVBQUUsR0FBZTtFQUNyRCxPQUFPLFFBQVEsT0FBTyxDQUFDLFdBQVc7QUFDcEMifQ== +// denoCacheMetadata=3138628334740564728,10698801828556729024
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/b8c879dcf8a00694f2d60b43aff97c3c5b71a7c30b1e92e460b45d6e5eae4d5d.js b/vendor/gen/https/jsr.io/b8c879dcf8a00694f2d60b43aff97c3c5b71a7c30b1e92e460b45d6e5eae4d5d.js new file mode 100644 index 0000000..765b134 --- /dev/null +++ b/vendor/gen/https/jsr.io/b8c879dcf8a00694f2d60b43aff97c3c5b71a7c30b1e92e460b45d6e5eae4d5d.js @@ -0,0 +1,111 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * {@linkcode parse} and {@linkcode stringify} for handling + * {@link https://toml.io | TOML} encoded data. + * + * Be sure to read the supported types as not every spec is supported at the + * moment and the handling in TypeScript side is a bit different. + * + * ## Supported types and handling + * + * - [x] [Keys](https://toml.io/en/latest#keys) + * - [ ] [String](https://toml.io/en/latest#string) + * - [x] [Multiline String](https://toml.io/en/latest#string) + * - [x] [Literal String](https://toml.io/en/latest#string) + * - [ ] [Integer](https://toml.io/en/latest#integer) + * - [x] [Float](https://toml.io/en/latest#float) + * - [x] [Boolean](https://toml.io/en/latest#boolean) + * - [x] [Offset Date-time](https://toml.io/en/latest#offset-date-time) + * - [x] [Local Date-time](https://toml.io/en/latest#local-date-time) + * - [x] [Local Date](https://toml.io/en/latest#local-date) + * - [ ] [Local Time](https://toml.io/en/latest#local-time) + * - [x] [Table](https://toml.io/en/latest#table) + * - [x] [Inline Table](https://toml.io/en/latest#inline-table) + * - [ ] [Array of Tables](https://toml.io/en/latest#array-of-tables) + * + * _Supported with warnings see [Warning](#Warning)._ + * + * ### Warning + * + * #### String + * + * Due to the spec, there is no flag to detect regex properly in a TOML + * declaration. So the regex is stored as string. + * + * #### Integer + * + * For **Binary** / **Octal** / **Hexadecimal** numbers, they are stored as string + * to be not interpreted as Decimal. + * + * #### Local Time + * + * Because local time does not exist in JavaScript, the local time is stored as a + * string. + * + * #### Array of Tables + * + * At the moment only simple declarations like below are supported: + * + * ```toml + * [[bin]] + * name = "deno" + * path = "cli/main.rs" + * + * [[bin]] + * name = "deno_core" + * path = "src/foo.rs" + * + * [[nib]] + * name = "node" + * path = "not_found" + * ``` + * + * will output: + * + * ```json + * { + * "bin": [ + * { "name": "deno", "path": "cli/main.rs" }, + * { "name": "deno_core", "path": "src/foo.rs" } + * ], + * "nib": [{ "name": "node", "path": "not_found" }] + * } + * ``` + * + * ```ts + * import { parse, stringify } from "@std/toml"; + * import { assertEquals } from "@std/assert"; + * + * const obj = { + * bin: [ + * { name: "deno", path: "cli/main.rs" }, + * { name: "deno_core", path: "src/foo.rs" }, + * ], + * nib: [{ name: "node", path: "not_found" }], + * }; + * + * const tomlString = stringify(obj); + * assertEquals(tomlString, ` + * [[bin]] + * name = "deno" + * path = "cli/main.rs" + * + * [[bin]] + * name = "deno_core" + * path = "src/foo.rs" + * + * [[nib]] + * name = "node" + * path = "not_found" + * `); + * + * const tomlObject = parse(tomlString); + * assertEquals(tomlObject, obj); + * ``` + * + * @module + */ export * from "./stringify.ts"; +export * from "./parse.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvdG9tbC8xLjAuNi9tb2QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuLyoqXG4gKiB7QGxpbmtjb2RlIHBhcnNlfSBhbmQge0BsaW5rY29kZSBzdHJpbmdpZnl9IGZvciBoYW5kbGluZ1xuICoge0BsaW5rIGh0dHBzOi8vdG9tbC5pbyB8IFRPTUx9IGVuY29kZWQgZGF0YS5cbiAqXG4gKiBCZSBzdXJlIHRvIHJlYWQgdGhlIHN1cHBvcnRlZCB0eXBlcyBhcyBub3QgZXZlcnkgc3BlYyBpcyBzdXBwb3J0ZWQgYXQgdGhlXG4gKiBtb21lbnQgYW5kIHRoZSBoYW5kbGluZyBpbiBUeXBlU2NyaXB0IHNpZGUgaXMgYSBiaXQgZGlmZmVyZW50LlxuICpcbiAqICMjIFN1cHBvcnRlZCB0eXBlcyBhbmQgaGFuZGxpbmdcbiAqXG4gKiAtIFt4XSBbS2V5c10oaHR0cHM6Ly90b21sLmlvL2VuL2xhdGVzdCNrZXlzKVxuICogLSBbIF0gW1N0cmluZ10oaHR0cHM6Ly90b21sLmlvL2VuL2xhdGVzdCNzdHJpbmcpXG4gKiAtIFt4XSBbTXVsdGlsaW5lIFN0cmluZ10oaHR0cHM6Ly90b21sLmlvL2VuL2xhdGVzdCNzdHJpbmcpXG4gKiAtIFt4XSBbTGl0ZXJhbCBTdHJpbmddKGh0dHBzOi8vdG9tbC5pby9lbi9sYXRlc3Qjc3RyaW5nKVxuICogLSBbIF0gW0ludGVnZXJdKGh0dHBzOi8vdG9tbC5pby9lbi9sYXRlc3QjaW50ZWdlcilcbiAqIC0gW3hdIFtGbG9hdF0oaHR0cHM6Ly90b21sLmlvL2VuL2xhdGVzdCNmbG9hdClcbiAqIC0gW3hdIFtCb29sZWFuXShodHRwczovL3RvbWwuaW8vZW4vbGF0ZXN0I2Jvb2xlYW4pXG4gKiAtIFt4XSBbT2Zmc2V0IERhdGUtdGltZV0oaHR0cHM6Ly90b21sLmlvL2VuL2xhdGVzdCNvZmZzZXQtZGF0ZS10aW1lKVxuICogLSBbeF0gW0xvY2FsIERhdGUtdGltZV0oaHR0cHM6Ly90b21sLmlvL2VuL2xhdGVzdCNsb2NhbC1kYXRlLXRpbWUpXG4gKiAtIFt4XSBbTG9jYWwgRGF0ZV0oaHR0cHM6Ly90b21sLmlvL2VuL2xhdGVzdCNsb2NhbC1kYXRlKVxuICogLSBbIF0gW0xvY2FsIFRpbWVdKGh0dHBzOi8vdG9tbC5pby9lbi9sYXRlc3QjbG9jYWwtdGltZSlcbiAqIC0gW3hdIFtUYWJsZV0oaHR0cHM6Ly90b21sLmlvL2VuL2xhdGVzdCN0YWJsZSlcbiAqIC0gW3hdIFtJbmxpbmUgVGFibGVdKGh0dHBzOi8vdG9tbC5pby9lbi9sYXRlc3QjaW5saW5lLXRhYmxlKVxuICogLSBbIF0gW0FycmF5IG9mIFRhYmxlc10oaHR0cHM6Ly90b21sLmlvL2VuL2xhdGVzdCNhcnJheS1vZi10YWJsZXMpXG4gKlxuICogX1N1cHBvcnRlZCB3aXRoIHdhcm5pbmdzIHNlZSBbV2FybmluZ10oI1dhcm5pbmcpLl9cbiAqXG4gKiAjIyMgV2FybmluZ1xuICpcbiAqICMjIyMgU3RyaW5nXG4gKlxuICogRHVlIHRvIHRoZSBzcGVjLCB0aGVyZSBpcyBubyBmbGFnIHRvIGRldGVjdCByZWdleCBwcm9wZXJseSBpbiBhIFRPTUxcbiAqIGRlY2xhcmF0aW9uLiBTbyB0aGUgcmVnZXggaXMgc3RvcmVkIGFzIHN0cmluZy5cbiAqXG4gKiAjIyMjIEludGVnZXJcbiAqXG4gKiBGb3IgKipCaW5hcnkqKiAvICoqT2N0YWwqKiAvICoqSGV4YWRlY2ltYWwqKiBudW1iZXJzLCB0aGV5IGFyZSBzdG9yZWQgYXMgc3RyaW5nXG4gKiB0byBiZSBub3QgaW50ZXJwcmV0ZWQgYXMgRGVjaW1hbC5cbiAqXG4gKiAjIyMjIExvY2FsIFRpbWVcbiAqXG4gKiBCZWNhdXNlIGxvY2FsIHRpbWUgZG9lcyBub3QgZXhpc3QgaW4gSmF2YVNjcmlwdCwgdGhlIGxvY2FsIHRpbWUgaXMgc3RvcmVkIGFzIGFcbiAqIHN0cmluZy5cbiAqXG4gKiAjIyMjIEFycmF5IG9mIFRhYmxlc1xuICpcbiAqIEF0IHRoZSBtb21lbnQgb25seSBzaW1wbGUgZGVjbGFyYXRpb25zIGxpa2UgYmVsb3cgYXJlIHN1cHBvcnRlZDpcbiAqXG4gKiBgYGB0b21sXG4gKiBbW2Jpbl1dXG4gKiBuYW1lID0gXCJkZW5vXCJcbiAqIHBhdGggPSBcImNsaS9tYWluLnJzXCJcbiAqXG4gKiBbW2Jpbl1dXG4gKiBuYW1lID0gXCJkZW5vX2NvcmVcIlxuICogcGF0aCA9IFwic3JjL2Zvby5yc1wiXG4gKlxuICogW1tuaWJdXVxuICogbmFtZSA9IFwibm9kZVwiXG4gKiBwYXRoID0gXCJub3RfZm91bmRcIlxuICogYGBgXG4gKlxuICogd2lsbCBvdXRwdXQ6XG4gKlxuICogYGBganNvblxuICoge1xuICogICBcImJpblwiOiBbXG4gKiAgICAgeyBcIm5hbWVcIjogXCJkZW5vXCIsIFwicGF0aFwiOiBcImNsaS9tYWluLnJzXCIgfSxcbiAqICAgICB7IFwibmFtZVwiOiBcImRlbm9fY29yZVwiLCBcInBhdGhcIjogXCJzcmMvZm9vLnJzXCIgfVxuICogICBdLFxuICogICBcIm5pYlwiOiBbeyBcIm5hbWVcIjogXCJub2RlXCIsIFwicGF0aFwiOiBcIm5vdF9mb3VuZFwiIH1dXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgcGFyc2UsIHN0cmluZ2lmeSB9IGZyb20gXCJAc3RkL3RvbWxcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IG9iaiA9IHtcbiAqICAgYmluOiBbXG4gKiAgICAgeyBuYW1lOiBcImRlbm9cIiwgcGF0aDogXCJjbGkvbWFpbi5yc1wiIH0sXG4gKiAgICAgeyBuYW1lOiBcImRlbm9fY29yZVwiLCBwYXRoOiBcInNyYy9mb28ucnNcIiB9LFxuICogICBdLFxuICogICBuaWI6IFt7IG5hbWU6IFwibm9kZVwiLCBwYXRoOiBcIm5vdF9mb3VuZFwiIH1dLFxuICogfTtcbiAqXG4gKiBjb25zdCB0b21sU3RyaW5nID0gc3RyaW5naWZ5KG9iaik7XG4gKiBhc3NlcnRFcXVhbHModG9tbFN0cmluZywgYFxuICogW1tiaW5dXVxuICogbmFtZSA9IFwiZGVub1wiXG4gKiBwYXRoID0gXCJjbGkvbWFpbi5yc1wiXG4gKlxuICogW1tiaW5dXVxuICogbmFtZSA9IFwiZGVub19jb3JlXCJcbiAqIHBhdGggPSBcInNyYy9mb28ucnNcIlxuICpcbiAqIFtbbmliXV1cbiAqIG5hbWUgPSBcIm5vZGVcIlxuICogcGF0aCA9IFwibm90X2ZvdW5kXCJcbiAqIGApO1xuICpcbiAqIGNvbnN0IHRvbWxPYmplY3QgPSBwYXJzZSh0b21sU3RyaW5nKTtcbiAqIGFzc2VydEVxdWFscyh0b21sT2JqZWN0LCBvYmopO1xuICogYGBgXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmV4cG9ydCAqIGZyb20gXCIuL3N0cmluZ2lmeS50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGFyc2UudHNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0F5R0MsR0FFRCxjQUFjLGlCQUFpQjtBQUMvQixjQUFjLGFBQWEifQ== +// denoCacheMetadata=951080491767076911,7320486915200169876
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/b9859d0030b7e958ce09a6edca0994aab18997d0f063b955d380ea875852a919.js b/vendor/gen/https/jsr.io/b9859d0030b7e958ce09a6edca0994aab18997d0f063b955d380ea875852a919.js new file mode 100644 index 0000000..a84ca49 --- /dev/null +++ b/vendor/gen/https/jsr.io/b9859d0030b7e958ce09a6edca0994aab18997d0f063b955d380ea875852a919.js @@ -0,0 +1,751 @@ +#!/usr/bin/env -S deno run --allow-net --allow-read +// Copyright 2018-2025 the Deno authors. MIT license. +// This program serves files in the current directory over HTTP. +// TODO(bartlomieju): Add tests like these: +// https://github.com/indexzero/http-server/blob/master/test/http-server-test.js +/** + * Contains functions {@linkcode serveDir} and {@linkcode serveFile} for + * building a static file server. + * + * This module can also be used as a CLI. If you want to run it directly: + * + * ```shell + * > # start server + * > deno run --allow-net --allow-read --allow-sys jsr:@std/http/file-server + * > # show help + * > deno run jsr:@std/http/file-server --help + * ``` + * + * If you want to install and run: + * + * ```shell + * > # install + * > deno install --allow-net --allow-read --allow-sys --global jsr:@std/http/file-server + * > # start server + * > file-server + * > # show help + * > file-server --help + * ``` + * + * @module + */ import { normalize as posixNormalize } from "jsr:@std/path@^1.0.9/posix/normalize"; +import { extname } from "jsr:@std/path@^1.0.9/extname"; +import { join } from "jsr:@std/path@^1.0.9/join"; +import { relative } from "jsr:@std/path@^1.0.9/relative"; +import { resolve } from "jsr:@std/path@^1.0.9/resolve"; +import { SEPARATOR_PATTERN } from "jsr:@std/path@^1.0.9/constants"; +import { contentType } from "jsr:@std/media-types@^1.1.0/content-type"; +import { eTag, ifNoneMatch } from "./etag.ts"; +import { isRedirectStatus, STATUS_CODE, STATUS_TEXT } from "./status.ts"; +import { ByteSliceStream } from "jsr:@std/streams@^1.0.9/byte-slice-stream"; +import { parseArgs } from "jsr:@std/cli@^1.0.17/parse-args"; +import denoConfig from "./deno.json" with { + type: "json" +}; +import { format as formatBytes } from "jsr:@std/fmt@^1.0.8/bytes"; +import { getNetworkAddress } from "jsr:@std/net@^1.0.4/unstable-get-network-address"; +import { escape } from "jsr:@std/html@^1.0.4/entities"; +import { HEADER } from "./unstable_header.ts"; +import { METHOD } from "./unstable_method.ts"; +const ENV_PERM_STATUS = Deno.permissions.querySync?.({ + name: "env", + variable: "DENO_DEPLOYMENT_ID" +}).state ?? "granted"; // for deno deploy +const NET_PERM_STATUS = Deno.permissions.querySync?.({ + name: "sys", + kind: "networkInterfaces" +}).state ?? "granted"; // for deno deploy +const DENO_DEPLOYMENT_ID = ENV_PERM_STATUS === "granted" ? Deno.env.get("DENO_DEPLOYMENT_ID") : undefined; +const HASHED_DENO_DEPLOYMENT_ID = DENO_DEPLOYMENT_ID ? eTag(DENO_DEPLOYMENT_ID, { + weak: true +}) : undefined; +function modeToString(isDir, maybeMode) { + const modeMap = [ + "---", + "--x", + "-w-", + "-wx", + "r--", + "r-x", + "rw-", + "rwx" + ]; + if (maybeMode === null) { + return "(unknown mode)"; + } + const mode = maybeMode.toString(8).padStart(3, "0"); + let output = ""; + mode.split("").reverse().slice(0, 3).forEach((v)=>{ + output = `${modeMap[+v]} ${output}`; + }); + output = `${isDir ? "d" : "-"} ${output}`; + return output; +} +function createStandardResponse(status, init) { + const statusText = STATUS_TEXT[status]; + return new Response(statusText, { + status, + statusText, + ...init + }); +} +/** + * parse range header. + * + * ```ts ignore + * parseRangeHeader("bytes=0-100", 500); // => { start: 0, end: 100 } + * parseRangeHeader("bytes=0-", 500); // => { start: 0, end: 499 } + * parseRangeHeader("bytes=-100", 500); // => { start: 400, end: 499 } + * parseRangeHeader("bytes=invalid", 500); // => null + * ``` + * + * Note: Currently, no support for multiple Ranges (e.g. `bytes=0-10, 20-30`) + */ function parseRangeHeader(rangeValue, fileSize) { + const rangeRegex = /bytes=(?<start>\d+)?-(?<end>\d+)?$/u; + const parsed = rangeValue.match(rangeRegex); + if (!parsed || !parsed.groups) { + // failed to parse range header + return null; + } + const { start, end } = parsed.groups; + if (start !== undefined) { + if (end !== undefined) { + return { + start: +start, + end: +end + }; + } else { + return { + start: +start, + end: fileSize - 1 + }; + } + } else { + if (end !== undefined) { + // example: `bytes=-100` means the last 100 bytes. + return { + start: fileSize - +end, + end: fileSize - 1 + }; + } else { + // failed to parse range header + return null; + } + } +} +/** + * Resolves a {@linkcode Response} with the requested file as the body. + * + * @example Usage + * ```ts ignore + * import { serveFile } from "@std/http/file-server"; + * + * Deno.serve((req) => { + * return serveFile(req, "README.md"); + * }); + * ``` + * + * @param req The server request context used to cleanup the file handle. + * @param filePath Path of the file to serve. + * @param options Additional options. + * @returns A response for the request. + */ export async function serveFile(req, filePath, options) { + if (req.method !== METHOD.Get && req.method !== METHOD.Head) { + return createStandardResponse(STATUS_CODE.MethodNotAllowed); + } + let { etagAlgorithm: algorithm = "SHA-256", fileInfo } = options ?? {}; + try { + fileInfo ??= await Deno.stat(filePath); + } catch (error) { + if (error instanceof Deno.errors.NotFound) { + await req.body?.cancel(); + return createStandardResponse(STATUS_CODE.NotFound); + } else { + throw error; + } + } + if (fileInfo.isDirectory) { + await req.body?.cancel(); + return createStandardResponse(STATUS_CODE.NotFound); + } + const headers = createBaseHeaders(); + const etag = fileInfo.mtime ? await eTag(fileInfo, { + algorithm + }) : await HASHED_DENO_DEPLOYMENT_ID; + // Set last modified header if last modification timestamp is available + if (fileInfo.mtime) { + headers.set(HEADER.LastModified, fileInfo.mtime.toUTCString()); + } + if (etag) { + headers.set(HEADER.ETag, etag); + } + // Set mime-type using the file extension in filePath + const contentTypeValue = contentType(extname(filePath)); + if (contentTypeValue) { + headers.set(HEADER.ContentType, contentTypeValue); + } + const fileSize = fileInfo.size; + if (req.method === METHOD.Head) { + // Set content length + headers.set(HEADER.ContentLength, `${fileSize}`); + const status = STATUS_CODE.OK; + return new Response(null, { + status, + statusText: STATUS_TEXT[status], + headers + }); + } + if (etag || fileInfo.mtime) { + // If a `if-none-match` header is present and the value matches the tag or + // if a `if-modified-since` header is present and the value is bigger than + // the access timestamp value, then return 304 + const ifNoneMatchValue = req.headers.get(HEADER.IfNoneMatch); + const ifModifiedSinceValue = req.headers.get(HEADER.IfModifiedSince); + if (!ifNoneMatch(ifNoneMatchValue, etag) || ifNoneMatchValue === null && fileInfo.mtime && ifModifiedSinceValue && fileInfo.mtime.getTime() < new Date(ifModifiedSinceValue).getTime() + 1000) { + const status = STATUS_CODE.NotModified; + return new Response(null, { + status, + statusText: STATUS_TEXT[status], + headers + }); + } + } + const rangeValue = req.headers.get(HEADER.Range); + // handle range request + // Note: Some clients add a Range header to all requests to limit the size of the response. + // If the file is empty, ignore the range header and respond with a 200 rather than a 416. + // https://github.com/golang/go/blob/0d347544cbca0f42b160424f6bc2458ebcc7b3fc/src/net/http/fs.go#L273-L276 + if (rangeValue && 0 < fileSize) { + const parsed = parseRangeHeader(rangeValue, fileSize); + // Returns 200 OK if parsing the range header fails + if (!parsed) { + // Set content length + headers.set(HEADER.ContentLength, `${fileSize}`); + const file = await Deno.open(filePath); + const status = STATUS_CODE.OK; + return new Response(file.readable, { + status, + statusText: STATUS_TEXT[status], + headers + }); + } + // Return 416 Range Not Satisfiable if invalid range header value + if (parsed.end < 0 || parsed.end < parsed.start || fileSize <= parsed.start) { + // Set the "Content-range" header + headers.set(HEADER.ContentRange, `bytes */${fileSize}`); + return createStandardResponse(STATUS_CODE.RangeNotSatisfiable, { + headers + }); + } + // clamps the range header value + const start = Math.max(0, parsed.start); + const end = Math.min(parsed.end, fileSize - 1); + // Set the "Content-range" header + headers.set(HEADER.ContentRange, `bytes ${start}-${end}/${fileSize}`); + // Set content length + const contentLength = end - start + 1; + headers.set(HEADER.ContentLength, `${contentLength}`); + // Return 206 Partial Content + const file = await Deno.open(filePath); + await file.seek(start, Deno.SeekMode.Start); + const sliced = file.readable.pipeThrough(new ByteSliceStream(0, contentLength - 1)); + const status = STATUS_CODE.PartialContent; + return new Response(sliced, { + status, + statusText: STATUS_TEXT[status], + headers + }); + } + // Set content length + headers.set(HEADER.ContentLength, `${fileSize}`); + const file = await Deno.open(filePath); + const status = STATUS_CODE.OK; + return new Response(file.readable, { + status, + statusText: STATUS_TEXT[status], + headers + }); +} +async function serveDirIndex(dirPath, options) { + const { showDotfiles } = options; + const dirUrl = `/${relative(options.target, dirPath).replaceAll(new RegExp(SEPARATOR_PATTERN, "g"), "/")}`; + const listEntryPromise = []; + // if ".." makes sense + if (dirUrl !== "/") { + const prevPath = join(dirPath, ".."); + const entryInfo = Deno.stat(prevPath).then((fileInfo)=>({ + mode: modeToString(true, fileInfo.mode), + size: "", + name: "../", + url: ".." + })); + listEntryPromise.push(entryInfo); + } + // Read fileInfo in parallel + for await (const entry of Deno.readDir(dirPath)){ + if (!showDotfiles && entry.name[0] === ".") { + continue; + } + const filePath = join(dirPath, entry.name); + const fileUrl = encodeURIComponent(entry.name).replaceAll("%2F", "/"); + listEntryPromise.push((async ()=>{ + try { + const fileInfo = await Deno.stat(filePath); + return { + mode: modeToString(entry.isDirectory, fileInfo.mode), + size: entry.isFile ? formatBytes(fileInfo.size ?? 0) : "", + name: `${entry.name}${entry.isDirectory ? "/" : ""}`, + url: `./${fileUrl}${entry.isDirectory ? "/" : ""}` + }; + } catch (error) { + // Note: Deno.stat for windows system files may be rejected with os error 32. + if (!options.quiet) logError(error); + return { + mode: "(unknown mode)", + size: "", + name: `${entry.name}${entry.isDirectory ? "/" : ""}`, + url: `./${fileUrl}${entry.isDirectory ? "/" : ""}` + }; + } + })()); + } + const listEntry = await Promise.all(listEntryPromise); + listEntry.sort((a, b)=>// TODO(iuioiua): Add test to ensure list order is correct + a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1); + const formattedDirUrl = `${dirUrl.replace(/\/$/, "")}/`; + const page = dirViewerTemplate(formattedDirUrl, listEntry); + const headers = createBaseHeaders(); + headers.set(HEADER.ContentType, "text/html; charset=UTF-8"); + const status = STATUS_CODE.OK; + return new Response(page, { + status, + statusText: STATUS_TEXT[status], + headers + }); +} +function serverLog(req, status) { + const d = new Date().toISOString(); + const dateFmt = `[${d.slice(0, 10)} ${d.slice(11, 19)}]`; + const url = new URL(req.url); + const s = `${dateFmt} [${req.method}] ${url.pathname}${url.search} ${status}`; + // using console.debug instead of console.log so chrome inspect users can hide request logs + // deno-lint-ignore no-console + console.debug(s); +} +function createBaseHeaders() { + return new Headers({ + server: "deno", + // Set "accept-ranges" so that the client knows it can make range requests on future requests + [HEADER.AcceptRanges]: "bytes" + }); +} +function dirViewerTemplate(dirname, entries) { + const splitDirname = dirname.split("/").filter((path)=>Boolean(path)); + const headerPaths = [ + "home", + ...splitDirname + ]; + return ` + <!DOCTYPE html> + <html lang="en"> + <head> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta http-equiv="X-UA-Compatible" content="ie=edge" /> + <title>Deno File Server</title> + <style> + :root { + --background-color: #fafafa; + --color: rgba(0, 0, 0, 0.87); + } + @media (prefers-color-scheme: dark) { + :root { + --background-color: #292929; + --color: #fff; + } + thead { + color: #7f7f7f; + } + } + @media (min-width: 960px) { + main { + max-width: 960px; + } + body { + padding-left: 32px; + padding-right: 32px; + } + } + @media (min-width: 600px) { + main { + padding-left: 24px; + padding-right: 24px; + } + } + body { + background: var(--background-color); + color: var(--color); + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-weight: 400; + line-height: 1.43; + font-size: 0.875rem; + } + a { + color: #2196f3; + text-decoration: none; + } + a:hover { + text-decoration: underline; + } + thead { + text-align: left; + } + thead th { + padding-bottom: 12px; + } + table td { + padding: 6px 36px 6px 0px; + } + .size { + text-align: right; + padding: 6px 12px 6px 24px; + } + .mode { + font-family: monospace, monospace; + } + </style> + </head> + <body> + <main> + <h1>Index of + ${headerPaths.map((path, index)=>{ + if (path === "") return ""; + const depth = headerPaths.length - index - 1; + let link; + if (depth == 0) { + link = "."; + } else { + link = "../".repeat(depth); + } + return `<a href="${link}">${escape(path)}</a>`; + }).join("/")}/ + </h1> + <table> + <thead> + <tr> + <th>Mode</th> + <th>Size</th> + <th>Name</th> + </tr> + </thead> + ${entries.map((entry)=>` + <tr> + <td class="mode"> + ${entry.mode} + </td> + <td class="size"> + ${entry.size} + </td> + <td> + <a href="${escape(entry.url)}">${escape(entry.name)}</a> + </td> + </tr> + `).join("")} + </table> + </main> + </body> + </html> + `; +} +/** + * Serves the files under the given directory root (opts.fsRoot). + * + * @example Usage + * ```ts ignore + * import { serveDir } from "@std/http/file-server"; + * + * Deno.serve((req) => { + * const pathname = new URL(req.url).pathname; + * if (pathname.startsWith("/static")) { + * return serveDir(req, { + * fsRoot: "path/to/static/files/dir", + * }); + * } + * // Do dynamic responses + * return new Response(); + * }); + * ``` + * + * @example Changing the URL root + * + * Requests to `/static/path/to/file` will be served from `./public/path/to/file`. + * + * ```ts ignore + * import { serveDir } from "@std/http/file-server"; + * + * Deno.serve((req) => serveDir(req, { + * fsRoot: "public", + * urlRoot: "static", + * })); + * ``` + * + * @param req The request to handle + * @param opts Additional options. + * @returns A response for the request. + */ export async function serveDir(req, opts = {}) { + if (req.method !== METHOD.Get) { + return createStandardResponse(STATUS_CODE.MethodNotAllowed); + } + let response; + try { + response = await createServeDirResponse(req, opts); + } catch (error) { + if (!opts.quiet) logError(error); + response = error instanceof Deno.errors.NotFound ? createStandardResponse(STATUS_CODE.NotFound) : createStandardResponse(STATUS_CODE.InternalServerError); + } + // Do not update the header if the response is a 301 redirect. + const isRedirectResponse = isRedirectStatus(response.status); + if (opts.enableCors && !isRedirectResponse) { + response.headers.append(HEADER.AccessControlAllowOrigin, "*"); + response.headers.append(HEADER.AccessControlAllowHeaders, "Origin, X-Requested-With, Content-Type, Accept, Range"); + } + if (!opts.quiet) serverLog(req, response.status); + if (opts.headers && !isRedirectResponse) { + for (const header of opts.headers){ + const headerSplit = header.split(":"); + const name = headerSplit[0]; + const value = headerSplit.slice(1).join(":"); + response.headers.append(name, value); + } + } + return response; +} +async function createServeDirResponse(req, opts) { + const target = opts.fsRoot ?? "."; + const urlRoot = opts.urlRoot; + const showIndex = opts.showIndex ?? true; + const showDotfiles = opts.showDotfiles || false; + const { etagAlgorithm = "SHA-256", showDirListing = false, quiet = false } = opts; + const url = new URL(req.url); + const decodedUrl = decodeURIComponent(url.pathname); + let normalizedPath = posixNormalize(decodedUrl); + if (urlRoot && !normalizedPath.startsWith("/" + urlRoot)) { + return createStandardResponse(STATUS_CODE.NotFound); + } + // Redirect paths like `/foo////bar` and `/foo/bar/////` to normalized paths. + if (normalizedPath !== decodedUrl) { + url.pathname = normalizedPath; + return Response.redirect(url, 301); + } + if (urlRoot) { + normalizedPath = normalizedPath.replace(urlRoot, ""); + } + // Remove trailing slashes to avoid ENOENT errors + // when accessing a path to a file with a trailing slash. + if (normalizedPath.endsWith("/")) { + normalizedPath = normalizedPath.slice(0, -1); + } + // Exclude dotfiles if showDotfiles is false + if (!showDotfiles && /\/\./.test(normalizedPath)) { + return createStandardResponse(STATUS_CODE.NotFound); + } + const fsPath = join(target, normalizedPath); + const fileInfo = await Deno.stat(fsPath); + // For files, remove the trailing slash from the path. + if (fileInfo.isFile && url.pathname.endsWith("/")) { + url.pathname = url.pathname.slice(0, -1); + return Response.redirect(url, 301); + } + // For directories, the path must have a trailing slash. + if (fileInfo.isDirectory && !url.pathname.endsWith("/")) { + // On directory listing pages, + // if the current URL's pathname doesn't end with a slash, any + // relative URLs in the index file will resolve against the parent + // directory, rather than the current directory. To prevent that, we + // return a 301 redirect to the URL with a slash. + url.pathname += "/"; + return Response.redirect(url, 301); + } + // if target is file, serve file. + if (!fileInfo.isDirectory) { + return serveFile(req, fsPath, { + etagAlgorithm, + fileInfo + }); + } + // if target is directory, serve index or dir listing. + if (showIndex) { + const indexPath = join(fsPath, "index.html"); + let indexFileInfo; + try { + indexFileInfo = await Deno.lstat(indexPath); + } catch (error) { + if (!(error instanceof Deno.errors.NotFound)) { + throw error; + } + // skip Not Found error + } + if (indexFileInfo?.isFile) { + return serveFile(req, indexPath, { + etagAlgorithm, + fileInfo: indexFileInfo + }); + } + } + if (showDirListing) { + return serveDirIndex(fsPath, { + showDotfiles, + target, + quiet + }); + } + return createStandardResponse(STATUS_CODE.NotFound); +} +function logError(error) { + // deno-lint-ignore no-console + console.error(`%c${error.message}`, "color: red"); +} +function main() { + const serverArgs = parseArgs(Deno.args, { + string: [ + "port", + "host", + "cert", + "key", + "header" + ], + boolean: [ + "help", + "dir-listing", + "dotfiles", + "cors", + "verbose", + "version" + ], + negatable: [ + "dir-listing", + "dotfiles", + "cors" + ], + collect: [ + "header" + ], + default: { + "dir-listing": true, + dotfiles: true, + cors: true, + verbose: false, + version: false, + host: "0.0.0.0", + port: undefined, + cert: "", + key: "" + }, + alias: { + p: "port", + c: "cert", + k: "key", + h: "help", + v: "verbose", + V: "version", + H: "header" + } + }); + const port = serverArgs.port ? Number(serverArgs.port) : undefined; + const headers = serverArgs.header ?? []; + const host = serverArgs.host; + const certFile = serverArgs.cert; + const keyFile = serverArgs.key; + if (serverArgs.help) { + printUsage(); + Deno.exit(); + } + if (serverArgs.version) { + // deno-lint-ignore no-console + console.log(`Deno File Server ${denoConfig.version}`); + Deno.exit(); + } + if (keyFile || certFile) { + if (keyFile === "" || certFile === "") { + // deno-lint-ignore no-console + console.log("--key and --cert are required for TLS"); + printUsage(); + Deno.exit(1); + } + } + const wild = serverArgs._; + const target = resolve(wild[0] ?? ""); + const handler = (req)=>{ + return serveDir(req, { + fsRoot: target, + showDirListing: serverArgs["dir-listing"], + showDotfiles: serverArgs.dotfiles, + enableCors: serverArgs.cors, + quiet: !serverArgs.verbose, + headers + }); + }; + const useTls = !!(keyFile && certFile); + function onListen({ port, hostname }) { + let networkAddress = undefined; + if (NET_PERM_STATUS === "granted") { + networkAddress = getNetworkAddress(); + } + const protocol = useTls ? "https" : "http"; + const host = Deno.build.os === "windows" && hostname === "0.0.0.0" ? "localhost" : hostname; + const formattedHost = hostname.includes(":") ? `[${host}]` : host; + let message = `Listening on:\n- Local: ${protocol}://${formattedHost}:${port}`; + if (networkAddress && !DENO_DEPLOYMENT_ID) { + message += `\n- Network: ${protocol}://${networkAddress}:${port}`; + } + // deno-lint-ignore no-console + console.log(message); + } + // TODO(petamoriken): Migrate `Deno.ServeTcpOptions | (Deno.ServeTcpOptions & Deno.TlsCertifiedKeyOptions)` in v2 + const options = { + hostname: host, + onListen + }; + if (port !== undefined) { + options.port = port; + } + if (useTls) { + options.cert = Deno.readTextFileSync(certFile); + options.key = Deno.readTextFileSync(keyFile); + } + Deno.serve(options, handler); +} +function printUsage() { + // deno-lint-ignore no-console + console.log(`Deno File Server ${denoConfig.version} + Serves a local directory in HTTP. + +INSTALL: + deno install --allow-net --allow-read --allow-sys jsr:@std/http@${denoConfig.version}/file-server + +USAGE: + file_server [path] [options] + +OPTIONS: + -h, --help Prints help information + -p, --port <PORT> Set port (default is 8000) + --cors Enable CORS via the "Access-Control-Allow-Origin" header + --host <HOST> Hostname (default is 0.0.0.0) + -c, --cert <FILE> TLS certificate file (enables TLS) + -k, --key <FILE> TLS key file (enables TLS) + -H, --header <HEADER> Sets a header on every request. + (e.g. --header "Cache-Control: no-cache") + This option can be specified multiple times. + --no-dir-listing Disable directory listing + --no-dotfiles Do not show dotfiles + --no-cors Disable cross-origin resource sharing + -v, --verbose Print request level logs + -V, --version Print version information + + All TLS options are required when one is provided.`); +} +if (import.meta.main) { + main(); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvaHR0cC8xLjAuMTYvZmlsZV9zZXJ2ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgLVMgZGVubyBydW4gLS1hbGxvdy1uZXQgLS1hbGxvdy1yZWFkXG4vLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuXG4vLyBUaGlzIHByb2dyYW0gc2VydmVzIGZpbGVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBvdmVyIEhUVFAuXG4vLyBUT0RPKGJhcnRsb21pZWp1KTogQWRkIHRlc3RzIGxpa2UgdGhlc2U6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vaW5kZXh6ZXJvL2h0dHAtc2VydmVyL2Jsb2IvbWFzdGVyL3Rlc3QvaHR0cC1zZXJ2ZXItdGVzdC5qc1xuXG4vKipcbiAqIENvbnRhaW5zIGZ1bmN0aW9ucyB7QGxpbmtjb2RlIHNlcnZlRGlyfSBhbmQge0BsaW5rY29kZSBzZXJ2ZUZpbGV9IGZvclxuICogYnVpbGRpbmcgYSBzdGF0aWMgZmlsZSBzZXJ2ZXIuXG4gKlxuICogVGhpcyBtb2R1bGUgY2FuIGFsc28gYmUgdXNlZCBhcyBhIENMSS4gSWYgeW91IHdhbnQgdG8gcnVuIGl0IGRpcmVjdGx5OlxuICpcbiAqIGBgYHNoZWxsXG4gKiA+ICMgc3RhcnQgc2VydmVyXG4gKiA+IGRlbm8gcnVuIC0tYWxsb3ctbmV0IC0tYWxsb3ctcmVhZCAtLWFsbG93LXN5cyBqc3I6QHN0ZC9odHRwL2ZpbGUtc2VydmVyXG4gKiA+ICMgc2hvdyBoZWxwXG4gKiA+IGRlbm8gcnVuIGpzcjpAc3RkL2h0dHAvZmlsZS1zZXJ2ZXIgLS1oZWxwXG4gKiBgYGBcbiAqXG4gKiBJZiB5b3Ugd2FudCB0byBpbnN0YWxsIGFuZCBydW46XG4gKlxuICogYGBgc2hlbGxcbiAqID4gIyBpbnN0YWxsXG4gKiA+IGRlbm8gaW5zdGFsbCAtLWFsbG93LW5ldCAtLWFsbG93LXJlYWQgLS1hbGxvdy1zeXMgLS1nbG9iYWwganNyOkBzdGQvaHR0cC9maWxlLXNlcnZlclxuICogPiAjIHN0YXJ0IHNlcnZlclxuICogPiBmaWxlLXNlcnZlclxuICogPiAjIHNob3cgaGVscFxuICogPiBmaWxlLXNlcnZlciAtLWhlbHBcbiAqIGBgYFxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBub3JtYWxpemUgYXMgcG9zaXhOb3JtYWxpemUgfSBmcm9tIFwianNyOkBzdGQvcGF0aEBeMS4wLjkvcG9zaXgvbm9ybWFsaXplXCI7XG5pbXBvcnQgeyBleHRuYW1lIH0gZnJvbSBcImpzcjpAc3RkL3BhdGhAXjEuMC45L2V4dG5hbWVcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwianNyOkBzdGQvcGF0aEBeMS4wLjkvam9pblwiO1xuaW1wb3J0IHsgcmVsYXRpdmUgfSBmcm9tIFwianNyOkBzdGQvcGF0aEBeMS4wLjkvcmVsYXRpdmVcIjtcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tIFwianNyOkBzdGQvcGF0aEBeMS4wLjkvcmVzb2x2ZVwiO1xuaW1wb3J0IHsgU0VQQVJBVE9SX1BBVFRFUk4gfSBmcm9tIFwianNyOkBzdGQvcGF0aEBeMS4wLjkvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBjb250ZW50VHlwZSB9IGZyb20gXCJqc3I6QHN0ZC9tZWRpYS10eXBlc0BeMS4xLjAvY29udGVudC10eXBlXCI7XG5pbXBvcnQgeyBlVGFnLCBpZk5vbmVNYXRjaCB9IGZyb20gXCIuL2V0YWcudHNcIjtcbmltcG9ydCB7XG4gIGlzUmVkaXJlY3RTdGF0dXMsXG4gIFNUQVRVU19DT0RFLFxuICBTVEFUVVNfVEVYVCxcbiAgdHlwZSBTdGF0dXNDb2RlLFxufSBmcm9tIFwiLi9zdGF0dXMudHNcIjtcbmltcG9ydCB7IEJ5dGVTbGljZVN0cmVhbSB9IGZyb20gXCJqc3I6QHN0ZC9zdHJlYW1zQF4xLjAuOS9ieXRlLXNsaWNlLXN0cmVhbVwiO1xuaW1wb3J0IHsgcGFyc2VBcmdzIH0gZnJvbSBcImpzcjpAc3RkL2NsaUBeMS4wLjE3L3BhcnNlLWFyZ3NcIjtcbmltcG9ydCBkZW5vQ29uZmlnIGZyb20gXCIuL2Rlbm8uanNvblwiIHdpdGggeyB0eXBlOiBcImpzb25cIiB9O1xuaW1wb3J0IHsgZm9ybWF0IGFzIGZvcm1hdEJ5dGVzIH0gZnJvbSBcImpzcjpAc3RkL2ZtdEBeMS4wLjgvYnl0ZXNcIjtcbmltcG9ydCB7IGdldE5ldHdvcmtBZGRyZXNzIH0gZnJvbSBcImpzcjpAc3RkL25ldEBeMS4wLjQvdW5zdGFibGUtZ2V0LW5ldHdvcmstYWRkcmVzc1wiO1xuaW1wb3J0IHsgZXNjYXBlIH0gZnJvbSBcImpzcjpAc3RkL2h0bWxAXjEuMC40L2VudGl0aWVzXCI7XG5pbXBvcnQgeyBIRUFERVIgfSBmcm9tIFwiLi91bnN0YWJsZV9oZWFkZXIudHNcIjtcbmltcG9ydCB7IE1FVEhPRCB9IGZyb20gXCIuL3Vuc3RhYmxlX21ldGhvZC50c1wiO1xuXG5pbnRlcmZhY2UgRW50cnlJbmZvIHtcbiAgbW9kZTogc3RyaW5nO1xuICBzaXplOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbmNvbnN0IEVOVl9QRVJNX1NUQVRVUyA9XG4gIERlbm8ucGVybWlzc2lvbnMucXVlcnlTeW5jPy4oeyBuYW1lOiBcImVudlwiLCB2YXJpYWJsZTogXCJERU5PX0RFUExPWU1FTlRfSURcIiB9KVxuICAgIC5zdGF0ZSA/PyBcImdyYW50ZWRcIjsgLy8gZm9yIGRlbm8gZGVwbG95XG5jb25zdCBORVRfUEVSTV9TVEFUVVMgPVxuICBEZW5vLnBlcm1pc3Npb25zLnF1ZXJ5U3luYz8uKHsgbmFtZTogXCJzeXNcIiwga2luZDogXCJuZXR3b3JrSW50ZXJmYWNlc1wiIH0pXG4gICAgLnN0YXRlID8/IFwiZ3JhbnRlZFwiOyAvLyBmb3IgZGVubyBkZXBsb3lcbmNvbnN0IERFTk9fREVQTE9ZTUVOVF9JRCA9IEVOVl9QRVJNX1NUQVRVUyA9PT0gXCJncmFudGVkXCJcbiAgPyBEZW5vLmVudi5nZXQoXCJERU5PX0RFUExPWU1FTlRfSURcIilcbiAgOiB1bmRlZmluZWQ7XG5jb25zdCBIQVNIRURfREVOT19ERVBMT1lNRU5UX0lEID0gREVOT19ERVBMT1lNRU5UX0lEXG4gID8gZVRhZyhERU5PX0RFUExPWU1FTlRfSUQsIHsgd2VhazogdHJ1ZSB9KVxuICA6IHVuZGVmaW5lZDtcblxuZnVuY3Rpb24gbW9kZVRvU3RyaW5nKGlzRGlyOiBib29sZWFuLCBtYXliZU1vZGU6IG51bWJlciB8IG51bGwpOiBzdHJpbmcge1xuICBjb25zdCBtb2RlTWFwID0gW1wiLS0tXCIsIFwiLS14XCIsIFwiLXctXCIsIFwiLXd4XCIsIFwici0tXCIsIFwici14XCIsIFwicnctXCIsIFwicnd4XCJdO1xuXG4gIGlmIChtYXliZU1vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gXCIodW5rbm93biBtb2RlKVwiO1xuICB9XG4gIGNvbnN0IG1vZGUgPSBtYXliZU1vZGUudG9TdHJpbmcoOCkucGFkU3RhcnQoMywgXCIwXCIpO1xuICBsZXQgb3V0cHV0ID0gXCJcIjtcbiAgbW9kZVxuICAgIC5zcGxpdChcIlwiKVxuICAgIC5yZXZlcnNlKClcbiAgICAuc2xpY2UoMCwgMylcbiAgICAuZm9yRWFjaCgodikgPT4ge1xuICAgICAgb3V0cHV0ID0gYCR7bW9kZU1hcFsrdl19ICR7b3V0cHV0fWA7XG4gICAgfSk7XG4gIG91dHB1dCA9IGAke2lzRGlyID8gXCJkXCIgOiBcIi1cIn0gJHtvdXRwdXR9YDtcbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlU3RhbmRhcmRSZXNwb25zZShzdGF0dXM6IFN0YXR1c0NvZGUsIGluaXQ/OiBSZXNwb25zZUluaXQpIHtcbiAgY29uc3Qgc3RhdHVzVGV4dCA9IFNUQVRVU19URVhUW3N0YXR1c107XG4gIHJldHVybiBuZXcgUmVzcG9uc2Uoc3RhdHVzVGV4dCwgeyBzdGF0dXMsIHN0YXR1c1RleHQsIC4uLmluaXQgfSk7XG59XG5cbi8qKlxuICogcGFyc2UgcmFuZ2UgaGVhZGVyLlxuICpcbiAqIGBgYHRzIGlnbm9yZVxuICogcGFyc2VSYW5nZUhlYWRlcihcImJ5dGVzPTAtMTAwXCIsICAgNTAwKTsgLy8gPT4geyBzdGFydDogMCwgZW5kOiAxMDAgfVxuICogcGFyc2VSYW5nZUhlYWRlcihcImJ5dGVzPTAtXCIsICAgICAgNTAwKTsgLy8gPT4geyBzdGFydDogMCwgZW5kOiA0OTkgfVxuICogcGFyc2VSYW5nZUhlYWRlcihcImJ5dGVzPS0xMDBcIiwgICAgNTAwKTsgLy8gPT4geyBzdGFydDogNDAwLCBlbmQ6IDQ5OSB9XG4gKiBwYXJzZVJhbmdlSGVhZGVyKFwiYnl0ZXM9aW52YWxpZFwiLCA1MDApOyAvLyA9PiBudWxsXG4gKiBgYGBcbiAqXG4gKiBOb3RlOiBDdXJyZW50bHksIG5vIHN1cHBvcnQgZm9yIG11bHRpcGxlIFJhbmdlcyAoZS5nLiBgYnl0ZXM9MC0xMCwgMjAtMzBgKVxuICovXG5mdW5jdGlvbiBwYXJzZVJhbmdlSGVhZGVyKHJhbmdlVmFsdWU6IHN0cmluZywgZmlsZVNpemU6IG51bWJlcikge1xuICBjb25zdCByYW5nZVJlZ2V4ID0gL2J5dGVzPSg/PHN0YXJ0PlxcZCspPy0oPzxlbmQ+XFxkKyk/JC91O1xuICBjb25zdCBwYXJzZWQgPSByYW5nZVZhbHVlLm1hdGNoKHJhbmdlUmVnZXgpO1xuXG4gIGlmICghcGFyc2VkIHx8ICFwYXJzZWQuZ3JvdXBzKSB7XG4gICAgLy8gZmFpbGVkIHRvIHBhcnNlIHJhbmdlIGhlYWRlclxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgeyBzdGFydCwgZW5kIH0gPSBwYXJzZWQuZ3JvdXBzO1xuICBpZiAoc3RhcnQgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChlbmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHsgc3RhcnQ6ICtzdGFydCwgZW5kOiArZW5kIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7IHN0YXJ0OiArc3RhcnQsIGVuZDogZmlsZVNpemUgLSAxIH07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChlbmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gZXhhbXBsZTogYGJ5dGVzPS0xMDBgIG1lYW5zIHRoZSBsYXN0IDEwMCBieXRlcy5cbiAgICAgIHJldHVybiB7IHN0YXJ0OiBmaWxlU2l6ZSAtICtlbmQsIGVuZDogZmlsZVNpemUgLSAxIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGZhaWxlZCB0byBwYXJzZSByYW5nZSBoZWFkZXJcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuXG4vKiogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBzZXJ2ZUZpbGV9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZUZpbGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBhbGdvcml0aG0gdG8gdXNlIGZvciBnZW5lcmF0aW5nIHRoZSBFVGFnLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7XCJTSEEtMjU2XCJ9XG4gICAqL1xuICBldGFnQWxnb3JpdGhtPzogQWxnb3JpdGhtSWRlbnRpZmllcjtcbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIG9iamVjdCByZXR1cm5lZCBieSB7QGxpbmtjb2RlIERlbm8uc3RhdH0uIEl0IGlzIHVzZWQgZm9yXG4gICAqIG9wdGltaXphdGlvbiBwdXJwb3Nlcy5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHtAbGlua2NvZGUgRGVuby5zdGF0fSB3aXRoIHRoZSBwcm92aWRlZFxuICAgKiBgZmlsZVBhdGhgLlxuICAgKi9cbiAgZmlsZUluZm8/OiBEZW5vLkZpbGVJbmZvO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIGEge0BsaW5rY29kZSBSZXNwb25zZX0gd2l0aCB0aGUgcmVxdWVzdGVkIGZpbGUgYXMgdGhlIGJvZHkuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgc2VydmVGaWxlIH0gZnJvbSBcIkBzdGQvaHR0cC9maWxlLXNlcnZlclwiO1xuICpcbiAqIERlbm8uc2VydmUoKHJlcSkgPT4ge1xuICogICByZXR1cm4gc2VydmVGaWxlKHJlcSwgXCJSRUFETUUubWRcIik7XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSByZXEgVGhlIHNlcnZlciByZXF1ZXN0IGNvbnRleHQgdXNlZCB0byBjbGVhbnVwIHRoZSBmaWxlIGhhbmRsZS5cbiAqIEBwYXJhbSBmaWxlUGF0aCBQYXRoIG9mIHRoZSBmaWxlIHRvIHNlcnZlLlxuICogQHBhcmFtIG9wdGlvbnMgQWRkaXRpb25hbCBvcHRpb25zLlxuICogQHJldHVybnMgQSByZXNwb25zZSBmb3IgdGhlIHJlcXVlc3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXJ2ZUZpbGUoXG4gIHJlcTogUmVxdWVzdCxcbiAgZmlsZVBhdGg6IHN0cmluZyxcbiAgb3B0aW9ucz86IFNlcnZlRmlsZU9wdGlvbnMsXG4pOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gIGlmIChyZXEubWV0aG9kICE9PSBNRVRIT0QuR2V0ICYmIHJlcS5tZXRob2QgIT09IE1FVEhPRC5IZWFkKSB7XG4gICAgcmV0dXJuIGNyZWF0ZVN0YW5kYXJkUmVzcG9uc2UoU1RBVFVTX0NPREUuTWV0aG9kTm90QWxsb3dlZCk7XG4gIH1cblxuICBsZXQgeyBldGFnQWxnb3JpdGhtOiBhbGdvcml0aG0gPSBcIlNIQS0yNTZcIiwgZmlsZUluZm8gfSA9IG9wdGlvbnMgPz8ge307XG5cbiAgdHJ5IHtcbiAgICBmaWxlSW5mbyA/Pz0gYXdhaXQgRGVuby5zdGF0KGZpbGVQYXRoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBEZW5vLmVycm9ycy5Ob3RGb3VuZCkge1xuICAgICAgYXdhaXQgcmVxLmJvZHk/LmNhbmNlbCgpO1xuICAgICAgcmV0dXJuIGNyZWF0ZVN0YW5kYXJkUmVzcG9uc2UoU1RBVFVTX0NPREUuTm90Rm91bmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICBpZiAoZmlsZUluZm8uaXNEaXJlY3RvcnkpIHtcbiAgICBhd2FpdCByZXEuYm9keT8uY2FuY2VsKCk7XG4gICAgcmV0dXJuIGNyZWF0ZVN0YW5kYXJkUmVzcG9uc2UoU1RBVFVTX0NPREUuTm90Rm91bmQpO1xuICB9XG5cbiAgY29uc3QgaGVhZGVycyA9IGNyZWF0ZUJhc2VIZWFkZXJzKCk7XG5cbiAgY29uc3QgZXRhZyA9IGZpbGVJbmZvLm10aW1lXG4gICAgPyBhd2FpdCBlVGFnKGZpbGVJbmZvLCB7IGFsZ29yaXRobSB9KVxuICAgIDogYXdhaXQgSEFTSEVEX0RFTk9fREVQTE9ZTUVOVF9JRDtcblxuICAvLyBTZXQgbGFzdCBtb2RpZmllZCBoZWFkZXIgaWYgbGFzdCBtb2RpZmljYXRpb24gdGltZXN0YW1wIGlzIGF2YWlsYWJsZVxuICBpZiAoZmlsZUluZm8ubXRpbWUpIHtcbiAgICBoZWFkZXJzLnNldChIRUFERVIuTGFzdE1vZGlmaWVkLCBmaWxlSW5mby5tdGltZS50b1VUQ1N0cmluZygpKTtcbiAgfVxuICBpZiAoZXRhZykge1xuICAgIGhlYWRlcnMuc2V0KEhFQURFUi5FVGFnLCBldGFnKTtcbiAgfVxuXG4gIC8vIFNldCBtaW1lLXR5cGUgdXNpbmcgdGhlIGZpbGUgZXh0ZW5zaW9uIGluIGZpbGVQYXRoXG4gIGNvbnN0IGNvbnRlbnRUeXBlVmFsdWUgPSBjb250ZW50VHlwZShleHRuYW1lKGZpbGVQYXRoKSk7XG4gIGlmIChjb250ZW50VHlwZVZhbHVlKSB7XG4gICAgaGVhZGVycy5zZXQoSEVBREVSLkNvbnRlbnRUeXBlLCBjb250ZW50VHlwZVZhbHVlKTtcbiAgfVxuICBjb25zdCBmaWxlU2l6ZSA9IGZpbGVJbmZvLnNpemU7XG5cbiAgaWYgKHJlcS5tZXRob2QgPT09IE1FVEhPRC5IZWFkKSB7XG4gICAgLy8gU2V0IGNvbnRlbnQgbGVuZ3RoXG4gICAgaGVhZGVycy5zZXQoSEVBREVSLkNvbnRlbnRMZW5ndGgsIGAke2ZpbGVTaXplfWApO1xuXG4gICAgY29uc3Qgc3RhdHVzID0gU1RBVFVTX0NPREUuT0s7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7XG4gICAgICBzdGF0dXMsXG4gICAgICBzdGF0dXNUZXh0OiBTVEFUVVNfVEVYVFtzdGF0dXNdLFxuICAgICAgaGVhZGVycyxcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChldGFnIHx8IGZpbGVJbmZvLm10aW1lKSB7XG4gICAgLy8gSWYgYSBgaWYtbm9uZS1tYXRjaGAgaGVhZGVyIGlzIHByZXNlbnQgYW5kIHRoZSB2YWx1ZSBtYXRjaGVzIHRoZSB0YWcgb3JcbiAgICAvLyBpZiBhIGBpZi1tb2RpZmllZC1zaW5jZWAgaGVhZGVyIGlzIHByZXNlbnQgYW5kIHRoZSB2YWx1ZSBpcyBiaWdnZXIgdGhhblxuICAgIC8vIHRoZSBhY2Nlc3MgdGltZXN0YW1wIHZhbHVlLCB0aGVuIHJldHVybiAzMDRcbiAgICBjb25zdCBpZk5vbmVNYXRjaFZhbHVlID0gcmVxLmhlYWRlcnMuZ2V0KEhFQURFUi5JZk5vbmVNYXRjaCk7XG4gICAgY29uc3QgaWZNb2RpZmllZFNpbmNlVmFsdWUgPSByZXEuaGVhZGVycy5nZXQoSEVBREVSLklmTW9kaWZpZWRTaW5jZSk7XG4gICAgaWYgKFxuICAgICAgKCFpZk5vbmVNYXRjaChpZk5vbmVNYXRjaFZhbHVlLCBldGFnKSkgfHxcbiAgICAgIChpZk5vbmVNYXRjaFZhbHVlID09PSBudWxsICYmXG4gICAgICAgIGZpbGVJbmZvLm10aW1lICYmXG4gICAgICAgIGlmTW9kaWZpZWRTaW5jZVZhbHVlICYmXG4gICAgICAgIGZpbGVJbmZvLm10aW1lLmdldFRpbWUoKSA8XG4gICAgICAgICAgbmV3IERhdGUoaWZNb2RpZmllZFNpbmNlVmFsdWUpLmdldFRpbWUoKSArIDEwMDApXG4gICAgKSB7XG4gICAgICBjb25zdCBzdGF0dXMgPSBTVEFUVVNfQ09ERS5Ob3RNb2RpZmllZDtcbiAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UobnVsbCwge1xuICAgICAgICBzdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IFNUQVRVU19URVhUW3N0YXR1c10sXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjb25zdCByYW5nZVZhbHVlID0gcmVxLmhlYWRlcnMuZ2V0KEhFQURFUi5SYW5nZSk7XG5cbiAgLy8gaGFuZGxlIHJhbmdlIHJlcXVlc3RcbiAgLy8gTm90ZTogU29tZSBjbGllbnRzIGFkZCBhIFJhbmdlIGhlYWRlciB0byBhbGwgcmVxdWVzdHMgdG8gbGltaXQgdGhlIHNpemUgb2YgdGhlIHJlc3BvbnNlLlxuICAvLyBJZiB0aGUgZmlsZSBpcyBlbXB0eSwgaWdub3JlIHRoZSByYW5nZSBoZWFkZXIgYW5kIHJlc3BvbmQgd2l0aCBhIDIwMCByYXRoZXIgdGhhbiBhIDQxNi5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nby9ibG9iLzBkMzQ3NTQ0Y2JjYTBmNDJiMTYwNDI0ZjZiYzI0NThlYmNjN2IzZmMvc3JjL25ldC9odHRwL2ZzLmdvI0wyNzMtTDI3NlxuICBpZiAocmFuZ2VWYWx1ZSAmJiAwIDwgZmlsZVNpemUpIHtcbiAgICBjb25zdCBwYXJzZWQgPSBwYXJzZVJhbmdlSGVhZGVyKHJhbmdlVmFsdWUsIGZpbGVTaXplKTtcblxuICAgIC8vIFJldHVybnMgMjAwIE9LIGlmIHBhcnNpbmcgdGhlIHJhbmdlIGhlYWRlciBmYWlsc1xuICAgIGlmICghcGFyc2VkKSB7XG4gICAgICAvLyBTZXQgY29udGVudCBsZW5ndGhcbiAgICAgIGhlYWRlcnMuc2V0KEhFQURFUi5Db250ZW50TGVuZ3RoLCBgJHtmaWxlU2l6ZX1gKTtcblxuICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IERlbm8ub3BlbihmaWxlUGF0aCk7XG4gICAgICBjb25zdCBzdGF0dXMgPSBTVEFUVVNfQ09ERS5PSztcbiAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoZmlsZS5yZWFkYWJsZSwge1xuICAgICAgICBzdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IFNUQVRVU19URVhUW3N0YXR1c10sXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gNDE2IFJhbmdlIE5vdCBTYXRpc2ZpYWJsZSBpZiBpbnZhbGlkIHJhbmdlIGhlYWRlciB2YWx1ZVxuICAgIGlmIChcbiAgICAgIHBhcnNlZC5lbmQgPCAwIHx8XG4gICAgICBwYXJzZWQuZW5kIDwgcGFyc2VkLnN0YXJ0IHx8XG4gICAgICBmaWxlU2l6ZSA8PSBwYXJzZWQuc3RhcnRcbiAgICApIHtcbiAgICAgIC8vIFNldCB0aGUgXCJDb250ZW50LXJhbmdlXCIgaGVhZGVyXG4gICAgICBoZWFkZXJzLnNldChIRUFERVIuQ29udGVudFJhbmdlLCBgYnl0ZXMgKi8ke2ZpbGVTaXplfWApO1xuXG4gICAgICByZXR1cm4gY3JlYXRlU3RhbmRhcmRSZXNwb25zZShcbiAgICAgICAgU1RBVFVTX0NPREUuUmFuZ2VOb3RTYXRpc2ZpYWJsZSxcbiAgICAgICAgeyBoZWFkZXJzIH0sXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIGNsYW1wcyB0aGUgcmFuZ2UgaGVhZGVyIHZhbHVlXG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgwLCBwYXJzZWQuc3RhcnQpO1xuICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKHBhcnNlZC5lbmQsIGZpbGVTaXplIC0gMSk7XG5cbiAgICAvLyBTZXQgdGhlIFwiQ29udGVudC1yYW5nZVwiIGhlYWRlclxuICAgIGhlYWRlcnMuc2V0KEhFQURFUi5Db250ZW50UmFuZ2UsIGBieXRlcyAke3N0YXJ0fS0ke2VuZH0vJHtmaWxlU2l6ZX1gKTtcblxuICAgIC8vIFNldCBjb250ZW50IGxlbmd0aFxuICAgIGNvbnN0IGNvbnRlbnRMZW5ndGggPSBlbmQgLSBzdGFydCArIDE7XG4gICAgaGVhZGVycy5zZXQoSEVBREVSLkNvbnRlbnRMZW5ndGgsIGAke2NvbnRlbnRMZW5ndGh9YCk7XG5cbiAgICAvLyBSZXR1cm4gMjA2IFBhcnRpYWwgQ29udGVudFxuICAgIGNvbnN0IGZpbGUgPSBhd2FpdCBEZW5vLm9wZW4oZmlsZVBhdGgpO1xuICAgIGF3YWl0IGZpbGUuc2VlayhzdGFydCwgRGVuby5TZWVrTW9kZS5TdGFydCk7XG4gICAgY29uc3Qgc2xpY2VkID0gZmlsZS5yZWFkYWJsZVxuICAgICAgLnBpcGVUaHJvdWdoKG5ldyBCeXRlU2xpY2VTdHJlYW0oMCwgY29udGVudExlbmd0aCAtIDEpKTtcbiAgICBjb25zdCBzdGF0dXMgPSBTVEFUVVNfQ09ERS5QYXJ0aWFsQ29udGVudDtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKHNsaWNlZCwge1xuICAgICAgc3RhdHVzLFxuICAgICAgc3RhdHVzVGV4dDogU1RBVFVTX1RFWFRbc3RhdHVzXSxcbiAgICAgIGhlYWRlcnMsXG4gICAgfSk7XG4gIH1cblxuICAvLyBTZXQgY29udGVudCBsZW5ndGhcbiAgaGVhZGVycy5zZXQoSEVBREVSLkNvbnRlbnRMZW5ndGgsIGAke2ZpbGVTaXplfWApO1xuXG4gIGNvbnN0IGZpbGUgPSBhd2FpdCBEZW5vLm9wZW4oZmlsZVBhdGgpO1xuICBjb25zdCBzdGF0dXMgPSBTVEFUVVNfQ09ERS5PSztcbiAgcmV0dXJuIG5ldyBSZXNwb25zZShmaWxlLnJlYWRhYmxlLCB7XG4gICAgc3RhdHVzLFxuICAgIHN0YXR1c1RleHQ6IFNUQVRVU19URVhUW3N0YXR1c10sXG4gICAgaGVhZGVycyxcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNlcnZlRGlySW5kZXgoXG4gIGRpclBhdGg6IHN0cmluZyxcbiAgb3B0aW9uczoge1xuICAgIHNob3dEb3RmaWxlczogYm9vbGVhbjtcbiAgICB0YXJnZXQ6IHN0cmluZztcbiAgICBxdWlldDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgfSxcbik6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgY29uc3QgeyBzaG93RG90ZmlsZXMgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGRpclVybCA9IGAvJHtcbiAgICByZWxhdGl2ZShvcHRpb25zLnRhcmdldCwgZGlyUGF0aCkucmVwbGFjZUFsbChcbiAgICAgIG5ldyBSZWdFeHAoU0VQQVJBVE9SX1BBVFRFUk4sIFwiZ1wiKSxcbiAgICAgIFwiL1wiLFxuICAgIClcbiAgfWA7XG4gIGNvbnN0IGxpc3RFbnRyeVByb21pc2U6IFByb21pc2U8RW50cnlJbmZvPltdID0gW107XG5cbiAgLy8gaWYgXCIuLlwiIG1ha2VzIHNlbnNlXG4gIGlmIChkaXJVcmwgIT09IFwiL1wiKSB7XG4gICAgY29uc3QgcHJldlBhdGggPSBqb2luKGRpclBhdGgsIFwiLi5cIik7XG4gICAgY29uc3QgZW50cnlJbmZvID0gRGVuby5zdGF0KHByZXZQYXRoKS50aGVuKChmaWxlSW5mbyk6IEVudHJ5SW5mbyA9PiAoe1xuICAgICAgbW9kZTogbW9kZVRvU3RyaW5nKHRydWUsIGZpbGVJbmZvLm1vZGUpLFxuICAgICAgc2l6ZTogXCJcIixcbiAgICAgIG5hbWU6IFwiLi4vXCIsXG4gICAgICB1cmw6IFwiLi5cIixcbiAgICB9KSk7XG4gICAgbGlzdEVudHJ5UHJvbWlzZS5wdXNoKGVudHJ5SW5mbyk7XG4gIH1cblxuICAvLyBSZWFkIGZpbGVJbmZvIGluIHBhcmFsbGVsXG4gIGZvciBhd2FpdCAoY29uc3QgZW50cnkgb2YgRGVuby5yZWFkRGlyKGRpclBhdGgpKSB7XG4gICAgaWYgKCFzaG93RG90ZmlsZXMgJiYgZW50cnkubmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBmaWxlUGF0aCA9IGpvaW4oZGlyUGF0aCwgZW50cnkubmFtZSk7XG4gICAgY29uc3QgZmlsZVVybCA9IGVuY29kZVVSSUNvbXBvbmVudChlbnRyeS5uYW1lKVxuICAgICAgLnJlcGxhY2VBbGwoXCIlMkZcIiwgXCIvXCIpO1xuXG4gICAgbGlzdEVudHJ5UHJvbWlzZS5wdXNoKChhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBmaWxlSW5mbyA9IGF3YWl0IERlbm8uc3RhdChmaWxlUGF0aCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbW9kZTogbW9kZVRvU3RyaW5nKGVudHJ5LmlzRGlyZWN0b3J5LCBmaWxlSW5mby5tb2RlKSxcbiAgICAgICAgICBzaXplOiBlbnRyeS5pc0ZpbGUgPyBmb3JtYXRCeXRlcyhmaWxlSW5mby5zaXplID8/IDApIDogXCJcIixcbiAgICAgICAgICBuYW1lOiBgJHtlbnRyeS5uYW1lfSR7ZW50cnkuaXNEaXJlY3RvcnkgPyBcIi9cIiA6IFwiXCJ9YCxcbiAgICAgICAgICB1cmw6IGAuLyR7ZmlsZVVybH0ke2VudHJ5LmlzRGlyZWN0b3J5ID8gXCIvXCIgOiBcIlwifWAsXG4gICAgICAgIH07XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBOb3RlOiBEZW5vLnN0YXQgZm9yIHdpbmRvd3Mgc3lzdGVtIGZpbGVzIG1heSBiZSByZWplY3RlZCB3aXRoIG9zIGVycm9yIDMyLlxuICAgICAgICBpZiAoIW9wdGlvbnMucXVpZXQpIGxvZ0Vycm9yKGVycm9yIGFzIEVycm9yKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtb2RlOiBcIih1bmtub3duIG1vZGUpXCIsXG4gICAgICAgICAgc2l6ZTogXCJcIixcbiAgICAgICAgICBuYW1lOiBgJHtlbnRyeS5uYW1lfSR7ZW50cnkuaXNEaXJlY3RvcnkgPyBcIi9cIiA6IFwiXCJ9YCxcbiAgICAgICAgICB1cmw6IGAuLyR7ZmlsZVVybH0ke2VudHJ5LmlzRGlyZWN0b3J5ID8gXCIvXCIgOiBcIlwifWAsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSkoKSk7XG4gIH1cblxuICBjb25zdCBsaXN0RW50cnkgPSBhd2FpdCBQcm9taXNlLmFsbChsaXN0RW50cnlQcm9taXNlKTtcbiAgbGlzdEVudHJ5LnNvcnQoKGEsIGIpID0+XG4gICAgLy8gVE9ETyhpdWlvaXVhKTogQWRkIHRlc3QgdG8gZW5zdXJlIGxpc3Qgb3JkZXIgaXMgY29ycmVjdFxuICAgIGEubmFtZS50b0xvd2VyQ2FzZSgpID4gYi5uYW1lLnRvTG93ZXJDYXNlKCkgPyAxIDogLTFcbiAgKTtcbiAgY29uc3QgZm9ybWF0dGVkRGlyVXJsID0gYCR7ZGlyVXJsLnJlcGxhY2UoL1xcLyQvLCBcIlwiKX0vYDtcbiAgY29uc3QgcGFnZSA9IGRpclZpZXdlclRlbXBsYXRlKGZvcm1hdHRlZERpclVybCwgbGlzdEVudHJ5KTtcblxuICBjb25zdCBoZWFkZXJzID0gY3JlYXRlQmFzZUhlYWRlcnMoKTtcbiAgaGVhZGVycy5zZXQoSEVBREVSLkNvbnRlbnRUeXBlLCBcInRleHQvaHRtbDsgY2hhcnNldD1VVEYtOFwiKTtcblxuICBjb25zdCBzdGF0dXMgPSBTVEFUVVNfQ09ERS5PSztcbiAgcmV0dXJuIG5ldyBSZXNwb25zZShwYWdlLCB7XG4gICAgc3RhdHVzLFxuICAgIHN0YXR1c1RleHQ6IFNUQVRVU19URVhUW3N0YXR1c10sXG4gICAgaGVhZGVycyxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNlcnZlckxvZyhyZXE6IFJlcXVlc3QsIHN0YXR1czogbnVtYmVyKSB7XG4gIGNvbnN0IGQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gIGNvbnN0IGRhdGVGbXQgPSBgWyR7ZC5zbGljZSgwLCAxMCl9ICR7ZC5zbGljZSgxMSwgMTkpfV1gO1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKHJlcS51cmwpO1xuICBjb25zdCBzID0gYCR7ZGF0ZUZtdH0gWyR7cmVxLm1ldGhvZH1dICR7dXJsLnBhdGhuYW1lfSR7dXJsLnNlYXJjaH0gJHtzdGF0dXN9YDtcbiAgLy8gdXNpbmcgY29uc29sZS5kZWJ1ZyBpbnN0ZWFkIG9mIGNvbnNvbGUubG9nIHNvIGNocm9tZSBpbnNwZWN0IHVzZXJzIGNhbiBoaWRlIHJlcXVlc3QgbG9nc1xuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWNvbnNvbGVcbiAgY29uc29sZS5kZWJ1ZyhzKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQmFzZUhlYWRlcnMoKTogSGVhZGVycyB7XG4gIHJldHVybiBuZXcgSGVhZGVycyh7XG4gICAgc2VydmVyOiBcImRlbm9cIixcbiAgICAvLyBTZXQgXCJhY2NlcHQtcmFuZ2VzXCIgc28gdGhhdCB0aGUgY2xpZW50IGtub3dzIGl0IGNhbiBtYWtlIHJhbmdlIHJlcXVlc3RzIG9uIGZ1dHVyZSByZXF1ZXN0c1xuICAgIFtIRUFERVIuQWNjZXB0UmFuZ2VzXTogXCJieXRlc1wiLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gZGlyVmlld2VyVGVtcGxhdGUoZGlybmFtZTogc3RyaW5nLCBlbnRyaWVzOiBFbnRyeUluZm9bXSk6IHN0cmluZyB7XG4gIGNvbnN0IHNwbGl0RGlybmFtZSA9IGRpcm5hbWUuc3BsaXQoXCIvXCIpLmZpbHRlcigocGF0aCkgPT4gQm9vbGVhbihwYXRoKSk7XG4gIGNvbnN0IGhlYWRlclBhdGhzID0gW1wiaG9tZVwiLCAuLi5zcGxpdERpcm5hbWVdO1xuXG4gIHJldHVybiBgXG4gICAgPCFET0NUWVBFIGh0bWw+XG4gICAgPGh0bWwgbGFuZz1cImVuXCI+XG4gICAgICA8aGVhZD5cbiAgICAgICAgPG1ldGEgY2hhcnNldD1cIlVURi04XCIgLz5cbiAgICAgICAgPG1ldGEgbmFtZT1cInZpZXdwb3J0XCIgY29udGVudD1cIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjBcIiAvPlxuICAgICAgICA8bWV0YSBodHRwLWVxdWl2PVwiWC1VQS1Db21wYXRpYmxlXCIgY29udGVudD1cImllPWVkZ2VcIiAvPlxuICAgICAgICA8dGl0bGU+RGVubyBGaWxlIFNlcnZlcjwvdGl0bGU+XG4gICAgICAgIDxzdHlsZT5cbiAgICAgICAgICA6cm9vdCB7XG4gICAgICAgICAgICAtLWJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gICAgICAgICAgICAtLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuODcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gICAgICAgICAgICA6cm9vdCB7XG4gICAgICAgICAgICAgIC0tYmFja2dyb3VuZC1jb2xvcjogIzI5MjkyOTtcbiAgICAgICAgICAgICAgLS1jb2xvcjogI2ZmZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoZWFkIHtcbiAgICAgICAgICAgICAgY29sb3I6ICM3ZjdmN2Y7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA5NjBweCkge1xuICAgICAgICAgICAgbWFpbiB7XG4gICAgICAgICAgICAgIG1heC13aWR0aDogOTYwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBib2R5IHtcbiAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAzMnB4O1xuICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAzMnB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHtcbiAgICAgICAgICAgIG1haW4ge1xuICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7XG4gICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDI0cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJvZHkge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmFja2dyb3VuZC1jb2xvcik7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tY29sb3IpO1xuICAgICAgICAgICAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS40MztcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgICAgfVxuICAgICAgICAgIGEge1xuICAgICAgICAgICAgY29sb3I6ICMyMTk2ZjM7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGE6aG92ZXIge1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoZWFkIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoZWFkIHRoIHtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAxMnB4O1xuICAgICAgICAgIH1cbiAgICAgICAgICB0YWJsZSB0ZCB7XG4gICAgICAgICAgICBwYWRkaW5nOiA2cHggMzZweCA2cHggMHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAuc2l6ZSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDZweCAxMnB4IDZweCAyNHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAubW9kZSB7XG4gICAgICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7XG4gICAgICAgICAgfVxuICAgICAgICA8L3N0eWxlPlxuICAgICAgPC9oZWFkPlxuICAgICAgPGJvZHk+XG4gICAgICAgIDxtYWluPlxuICAgICAgICAgIDxoMT5JbmRleCBvZlxuICAgICAgICAgICR7XG4gICAgaGVhZGVyUGF0aHNcbiAgICAgIC5tYXAoKHBhdGgsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmIChwYXRoID09PSBcIlwiKSByZXR1cm4gXCJcIjtcbiAgICAgICAgY29uc3QgZGVwdGggPSBoZWFkZXJQYXRocy5sZW5ndGggLSBpbmRleCAtIDE7XG4gICAgICAgIGxldCBsaW5rO1xuICAgICAgICBpZiAoZGVwdGggPT0gMCkge1xuICAgICAgICAgIGxpbmsgPSBcIi5cIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsaW5rID0gXCIuLi9cIi5yZXBlYXQoZGVwdGgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgPGEgaHJlZj1cIiR7bGlua31cIj4ke2VzY2FwZShwYXRoKX08L2E+YDtcbiAgICAgIH0pXG4gICAgICAuam9pbihcIi9cIilcbiAgfS9cbiAgICAgICAgICA8L2gxPlxuICAgICAgICAgIDx0YWJsZT5cbiAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgIDx0aD5Nb2RlPC90aD5cbiAgICAgICAgICAgICAgICA8dGg+U2l6ZTwvdGg+XG4gICAgICAgICAgICAgICAgPHRoPk5hbWU8L3RoPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICR7XG4gICAgZW50cmllc1xuICAgICAgLm1hcChcbiAgICAgICAgKGVudHJ5KSA9PiBgXG4gICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm1vZGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAke2VudHJ5Lm1vZGV9XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInNpemVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAke2VudHJ5LnNpemV9XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiJHtlc2NhcGUoZW50cnkudXJsKX1cIj4ke2VzY2FwZShlbnRyeS5uYW1lKX08L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIGAsXG4gICAgICApXG4gICAgICAuam9pbihcIlwiKVxuICB9XG4gICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC9tYWluPlxuICAgICAgPC9ib2R5PlxuICAgIDwvaHRtbD5cbiAgYDtcbn1cblxuLyoqIEludGVyZmFjZSBmb3Igc2VydmVEaXIgb3B0aW9ucy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVEaXJPcHRpb25zIHtcbiAgLyoqIFNlcnZlcyB0aGUgZmlsZXMgdW5kZXIgdGhlIGdpdmVuIGRpcmVjdG9yeSByb290LiBEZWZhdWx0cyB0byB5b3VyIGN1cnJlbnQgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAZGVmYXVsdCB7XCIuXCJ9XG4gICAqL1xuICBmc1Jvb3Q/OiBzdHJpbmc7XG4gIC8qKiBTcGVjaWZpZWQgdGhhdCBwYXJ0IGlzIHN0cmlwcGVkIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgcmVxdWVzdGVkIHBhdGhuYW1lLlxuICAgKi9cbiAgdXJsUm9vdD86IHN0cmluZztcbiAgLyoqIEVuYWJsZSBkaXJlY3RvcnkgbGlzdGluZy5cbiAgICpcbiAgICogQGRlZmF1bHQge2ZhbHNlfVxuICAgKi9cbiAgc2hvd0Rpckxpc3Rpbmc/OiBib29sZWFuO1xuICAvKiogU2VydmVzIGRvdGZpbGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7ZmFsc2V9XG4gICAqL1xuICBzaG93RG90ZmlsZXM/OiBib29sZWFuO1xuICAvKiogU2VydmVzIGBpbmRleC5odG1sYCBhcyB0aGUgaW5kZXggZmlsZSBvZiB0aGUgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBAZGVmYXVsdCB7dHJ1ZX1cbiAgICovXG4gIHNob3dJbmRleD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBFbmFibGUgQ09SUyB2aWEgdGhlXG4gICAqIHtAbGlua2NvZGUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiB8IEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbn1cbiAgICogaGVhZGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7ZmFsc2V9XG4gICAqL1xuICBlbmFibGVDb3JzPzogYm9vbGVhbjtcbiAgLyoqIERvIG5vdCBwcmludCByZXF1ZXN0IGxldmVsIGxvZ3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtmYWxzZX1cbiAgICovXG4gIHF1aWV0PzogYm9vbGVhbjtcbiAgLyoqIFRoZSBhbGdvcml0aG0gdG8gdXNlIGZvciBnZW5lcmF0aW5nIHRoZSBFVGFnLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7XCJTSEEtMjU2XCJ9XG4gICAqL1xuICBldGFnQWxnb3JpdGhtPzogQWxnb3JpdGhtSWRlbnRpZmllcjtcbiAgLyoqIEhlYWRlcnMgdG8gYWRkIHRvIGVhY2ggcmVzcG9uc2VcbiAgICpcbiAgICogQGRlZmF1bHQge1tdfVxuICAgKi9cbiAgaGVhZGVycz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFNlcnZlcyB0aGUgZmlsZXMgdW5kZXIgdGhlIGdpdmVuIGRpcmVjdG9yeSByb290IChvcHRzLmZzUm9vdCkuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgc2VydmVEaXIgfSBmcm9tIFwiQHN0ZC9odHRwL2ZpbGUtc2VydmVyXCI7XG4gKlxuICogRGVuby5zZXJ2ZSgocmVxKSA9PiB7XG4gKiAgIGNvbnN0IHBhdGhuYW1lID0gbmV3IFVSTChyZXEudXJsKS5wYXRobmFtZTtcbiAqICAgaWYgKHBhdGhuYW1lLnN0YXJ0c1dpdGgoXCIvc3RhdGljXCIpKSB7XG4gKiAgICAgcmV0dXJuIHNlcnZlRGlyKHJlcSwge1xuICogICAgICAgZnNSb290OiBcInBhdGgvdG8vc3RhdGljL2ZpbGVzL2RpclwiLFxuICogICAgIH0pO1xuICogICB9XG4gKiAgIC8vIERvIGR5bmFtaWMgcmVzcG9uc2VzXG4gKiAgIHJldHVybiBuZXcgUmVzcG9uc2UoKTtcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQ2hhbmdpbmcgdGhlIFVSTCByb290XG4gKlxuICogUmVxdWVzdHMgdG8gYC9zdGF0aWMvcGF0aC90by9maWxlYCB3aWxsIGJlIHNlcnZlZCBmcm9tIGAuL3B1YmxpYy9wYXRoL3RvL2ZpbGVgLlxuICpcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgc2VydmVEaXIgfSBmcm9tIFwiQHN0ZC9odHRwL2ZpbGUtc2VydmVyXCI7XG4gKlxuICogRGVuby5zZXJ2ZSgocmVxKSA9PiBzZXJ2ZURpcihyZXEsIHtcbiAqICAgZnNSb290OiBcInB1YmxpY1wiLFxuICogICB1cmxSb290OiBcInN0YXRpY1wiLFxuICogfSkpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHJlcSBUaGUgcmVxdWVzdCB0byBoYW5kbGVcbiAqIEBwYXJhbSBvcHRzIEFkZGl0aW9uYWwgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgcmVzcG9uc2UgZm9yIHRoZSByZXF1ZXN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VydmVEaXIoXG4gIHJlcTogUmVxdWVzdCxcbiAgb3B0czogU2VydmVEaXJPcHRpb25zID0ge30sXG4pOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gIGlmIChyZXEubWV0aG9kICE9PSBNRVRIT0QuR2V0KSB7XG4gICAgcmV0dXJuIGNyZWF0ZVN0YW5kYXJkUmVzcG9uc2UoU1RBVFVTX0NPREUuTWV0aG9kTm90QWxsb3dlZCk7XG4gIH1cblxuICBsZXQgcmVzcG9uc2U6IFJlc3BvbnNlO1xuICB0cnkge1xuICAgIHJlc3BvbnNlID0gYXdhaXQgY3JlYXRlU2VydmVEaXJSZXNwb25zZShyZXEsIG9wdHMpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmICghb3B0cy5xdWlldCkgbG9nRXJyb3IoZXJyb3IgYXMgRXJyb3IpO1xuICAgIHJlc3BvbnNlID0gZXJyb3IgaW5zdGFuY2VvZiBEZW5vLmVycm9ycy5Ob3RGb3VuZFxuICAgICAgPyBjcmVhdGVTdGFuZGFyZFJlc3BvbnNlKFNUQVRVU19DT0RFLk5vdEZvdW5kKVxuICAgICAgOiBjcmVhdGVTdGFuZGFyZFJlc3BvbnNlKFNUQVRVU19DT0RFLkludGVybmFsU2VydmVyRXJyb3IpO1xuICB9XG5cbiAgLy8gRG8gbm90IHVwZGF0ZSB0aGUgaGVhZGVyIGlmIHRoZSByZXNwb25zZSBpcyBhIDMwMSByZWRpcmVjdC5cbiAgY29uc3QgaXNSZWRpcmVjdFJlc3BvbnNlID0gaXNSZWRpcmVjdFN0YXR1cyhyZXNwb25zZS5zdGF0dXMpO1xuXG4gIGlmIChvcHRzLmVuYWJsZUNvcnMgJiYgIWlzUmVkaXJlY3RSZXNwb25zZSkge1xuICAgIHJlc3BvbnNlLmhlYWRlcnMuYXBwZW5kKEhFQURFUi5BY2Nlc3NDb250cm9sQWxsb3dPcmlnaW4sIFwiKlwiKTtcbiAgICByZXNwb25zZS5oZWFkZXJzLmFwcGVuZChcbiAgICAgIEhFQURFUi5BY2Nlc3NDb250cm9sQWxsb3dIZWFkZXJzLFxuICAgICAgXCJPcmlnaW4sIFgtUmVxdWVzdGVkLVdpdGgsIENvbnRlbnQtVHlwZSwgQWNjZXB0LCBSYW5nZVwiLFxuICAgICk7XG4gIH1cblxuICBpZiAoIW9wdHMucXVpZXQpIHNlcnZlckxvZyhyZXEsIHJlc3BvbnNlLnN0YXR1cyk7XG5cbiAgaWYgKG9wdHMuaGVhZGVycyAmJiAhaXNSZWRpcmVjdFJlc3BvbnNlKSB7XG4gICAgZm9yIChjb25zdCBoZWFkZXIgb2Ygb3B0cy5oZWFkZXJzKSB7XG4gICAgICBjb25zdCBoZWFkZXJTcGxpdCA9IGhlYWRlci5zcGxpdChcIjpcIik7XG4gICAgICBjb25zdCBuYW1lID0gaGVhZGVyU3BsaXRbMF0hO1xuICAgICAgY29uc3QgdmFsdWUgPSBoZWFkZXJTcGxpdC5zbGljZSgxKS5qb2luKFwiOlwiKTtcbiAgICAgIHJlc3BvbnNlLmhlYWRlcnMuYXBwZW5kKG5hbWUsIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzcG9uc2U7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVNlcnZlRGlyUmVzcG9uc2UoXG4gIHJlcTogUmVxdWVzdCxcbiAgb3B0czogU2VydmVEaXJPcHRpb25zLFxuKSB7XG4gIGNvbnN0IHRhcmdldCA9IG9wdHMuZnNSb290ID8/IFwiLlwiO1xuICBjb25zdCB1cmxSb290ID0gb3B0cy51cmxSb290O1xuICBjb25zdCBzaG93SW5kZXggPSBvcHRzLnNob3dJbmRleCA/PyB0cnVlO1xuICBjb25zdCBzaG93RG90ZmlsZXMgPSBvcHRzLnNob3dEb3RmaWxlcyB8fCBmYWxzZTtcbiAgY29uc3QgeyBldGFnQWxnb3JpdGhtID0gXCJTSEEtMjU2XCIsIHNob3dEaXJMaXN0aW5nID0gZmFsc2UsIHF1aWV0ID0gZmFsc2UgfSA9XG4gICAgb3B0cztcblxuICBjb25zdCB1cmwgPSBuZXcgVVJMKHJlcS51cmwpO1xuICBjb25zdCBkZWNvZGVkVXJsID0gZGVjb2RlVVJJQ29tcG9uZW50KHVybC5wYXRobmFtZSk7XG4gIGxldCBub3JtYWxpemVkUGF0aCA9IHBvc2l4Tm9ybWFsaXplKGRlY29kZWRVcmwpO1xuXG4gIGlmICh1cmxSb290ICYmICFub3JtYWxpemVkUGF0aC5zdGFydHNXaXRoKFwiL1wiICsgdXJsUm9vdCkpIHtcbiAgICByZXR1cm4gY3JlYXRlU3RhbmRhcmRSZXNwb25zZShTVEFUVVNfQ09ERS5Ob3RGb3VuZCk7XG4gIH1cblxuICAvLyBSZWRpcmVjdCBwYXRocyBsaWtlIGAvZm9vLy8vL2JhcmAgYW5kIGAvZm9vL2Jhci8vLy8vYCB0byBub3JtYWxpemVkIHBhdGhzLlxuICBpZiAobm9ybWFsaXplZFBhdGggIT09IGRlY29kZWRVcmwpIHtcbiAgICB1cmwucGF0aG5hbWUgPSBub3JtYWxpemVkUGF0aDtcbiAgICByZXR1cm4gUmVzcG9uc2UucmVkaXJlY3QodXJsLCAzMDEpO1xuICB9XG5cbiAgaWYgKHVybFJvb3QpIHtcbiAgICBub3JtYWxpemVkUGF0aCA9IG5vcm1hbGl6ZWRQYXRoLnJlcGxhY2UodXJsUm9vdCwgXCJcIik7XG4gIH1cblxuICAvLyBSZW1vdmUgdHJhaWxpbmcgc2xhc2hlcyB0byBhdm9pZCBFTk9FTlQgZXJyb3JzXG4gIC8vIHdoZW4gYWNjZXNzaW5nIGEgcGF0aCB0byBhIGZpbGUgd2l0aCBhIHRyYWlsaW5nIHNsYXNoLlxuICBpZiAobm9ybWFsaXplZFBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG4gICAgbm9ybWFsaXplZFBhdGggPSBub3JtYWxpemVkUGF0aC5zbGljZSgwLCAtMSk7XG4gIH1cblxuICAvLyBFeGNsdWRlIGRvdGZpbGVzIGlmIHNob3dEb3RmaWxlcyBpcyBmYWxzZVxuICBpZiAoIXNob3dEb3RmaWxlcyAmJiAvXFwvXFwuLy50ZXN0KG5vcm1hbGl6ZWRQYXRoKSkge1xuICAgIHJldHVybiBjcmVhdGVTdGFuZGFyZFJlc3BvbnNlKFNUQVRVU19DT0RFLk5vdEZvdW5kKTtcbiAgfVxuXG4gIGNvbnN0IGZzUGF0aCA9IGpvaW4odGFyZ2V0LCBub3JtYWxpemVkUGF0aCk7XG4gIGNvbnN0IGZpbGVJbmZvID0gYXdhaXQgRGVuby5zdGF0KGZzUGF0aCk7XG5cbiAgLy8gRm9yIGZpbGVzLCByZW1vdmUgdGhlIHRyYWlsaW5nIHNsYXNoIGZyb20gdGhlIHBhdGguXG4gIGlmIChmaWxlSW5mby5pc0ZpbGUgJiYgdXJsLnBhdGhuYW1lLmVuZHNXaXRoKFwiL1wiKSkge1xuICAgIHVybC5wYXRobmFtZSA9IHVybC5wYXRobmFtZS5zbGljZSgwLCAtMSk7XG4gICAgcmV0dXJuIFJlc3BvbnNlLnJlZGlyZWN0KHVybCwgMzAxKTtcbiAgfVxuICAvLyBGb3IgZGlyZWN0b3JpZXMsIHRoZSBwYXRoIG11c3QgaGF2ZSBhIHRyYWlsaW5nIHNsYXNoLlxuICBpZiAoZmlsZUluZm8uaXNEaXJlY3RvcnkgJiYgIXVybC5wYXRobmFtZS5lbmRzV2l0aChcIi9cIikpIHtcbiAgICAvLyBPbiBkaXJlY3RvcnkgbGlzdGluZyBwYWdlcyxcbiAgICAvLyBpZiB0aGUgY3VycmVudCBVUkwncyBwYXRobmFtZSBkb2Vzbid0IGVuZCB3aXRoIGEgc2xhc2gsIGFueVxuICAgIC8vIHJlbGF0aXZlIFVSTHMgaW4gdGhlIGluZGV4IGZpbGUgd2lsbCByZXNvbHZlIGFnYWluc3QgdGhlIHBhcmVudFxuICAgIC8vIGRpcmVjdG9yeSwgcmF0aGVyIHRoYW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiBUbyBwcmV2ZW50IHRoYXQsIHdlXG4gICAgLy8gcmV0dXJuIGEgMzAxIHJlZGlyZWN0IHRvIHRoZSBVUkwgd2l0aCBhIHNsYXNoLlxuICAgIHVybC5wYXRobmFtZSArPSBcIi9cIjtcbiAgICByZXR1cm4gUmVzcG9uc2UucmVkaXJlY3QodXJsLCAzMDEpO1xuICB9XG5cbiAgLy8gaWYgdGFyZ2V0IGlzIGZpbGUsIHNlcnZlIGZpbGUuXG4gIGlmICghZmlsZUluZm8uaXNEaXJlY3RvcnkpIHtcbiAgICByZXR1cm4gc2VydmVGaWxlKHJlcSwgZnNQYXRoLCB7XG4gICAgICBldGFnQWxnb3JpdGhtLFxuICAgICAgZmlsZUluZm8sXG4gICAgfSk7XG4gIH1cblxuICAvLyBpZiB0YXJnZXQgaXMgZGlyZWN0b3J5LCBzZXJ2ZSBpbmRleCBvciBkaXIgbGlzdGluZy5cbiAgaWYgKHNob3dJbmRleCkgeyAvLyBzZXJ2ZSBpbmRleC5odG1sXG4gICAgY29uc3QgaW5kZXhQYXRoID0gam9pbihmc1BhdGgsIFwiaW5kZXguaHRtbFwiKTtcblxuICAgIGxldCBpbmRleEZpbGVJbmZvOiBEZW5vLkZpbGVJbmZvIHwgdW5kZWZpbmVkO1xuICAgIHRyeSB7XG4gICAgICBpbmRleEZpbGVJbmZvID0gYXdhaXQgRGVuby5sc3RhdChpbmRleFBhdGgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIERlbm8uZXJyb3JzLk5vdEZvdW5kKSkge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICAgIC8vIHNraXAgTm90IEZvdW5kIGVycm9yXG4gICAgfVxuXG4gICAgaWYgKGluZGV4RmlsZUluZm8/LmlzRmlsZSkge1xuICAgICAgcmV0dXJuIHNlcnZlRmlsZShyZXEsIGluZGV4UGF0aCwge1xuICAgICAgICBldGFnQWxnb3JpdGhtLFxuICAgICAgICBmaWxlSW5mbzogaW5kZXhGaWxlSW5mbyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzaG93RGlyTGlzdGluZykgeyAvLyBzZXJ2ZSBkaXJlY3RvcnkgbGlzdFxuICAgIHJldHVybiBzZXJ2ZURpckluZGV4KGZzUGF0aCwgeyBzaG93RG90ZmlsZXMsIHRhcmdldCwgcXVpZXQgfSk7XG4gIH1cblxuICByZXR1cm4gY3JlYXRlU3RhbmRhcmRSZXNwb25zZShTVEFUVVNfQ09ERS5Ob3RGb3VuZCk7XG59XG5cbmZ1bmN0aW9uIGxvZ0Vycm9yKGVycm9yOiBFcnJvcikge1xuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWNvbnNvbGVcbiAgY29uc29sZS5lcnJvcihgJWMke2Vycm9yLm1lc3NhZ2V9YCwgXCJjb2xvcjogcmVkXCIpO1xufVxuXG5mdW5jdGlvbiBtYWluKCkge1xuICBjb25zdCBzZXJ2ZXJBcmdzID0gcGFyc2VBcmdzKERlbm8uYXJncywge1xuICAgIHN0cmluZzogW1wicG9ydFwiLCBcImhvc3RcIiwgXCJjZXJ0XCIsIFwia2V5XCIsIFwiaGVhZGVyXCJdLFxuICAgIGJvb2xlYW46IFtcImhlbHBcIiwgXCJkaXItbGlzdGluZ1wiLCBcImRvdGZpbGVzXCIsIFwiY29yc1wiLCBcInZlcmJvc2VcIiwgXCJ2ZXJzaW9uXCJdLFxuICAgIG5lZ2F0YWJsZTogW1wiZGlyLWxpc3RpbmdcIiwgXCJkb3RmaWxlc1wiLCBcImNvcnNcIl0sXG4gICAgY29sbGVjdDogW1wiaGVhZGVyXCJdLFxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIFwiZGlyLWxpc3RpbmdcIjogdHJ1ZSxcbiAgICAgIGRvdGZpbGVzOiB0cnVlLFxuICAgICAgY29yczogdHJ1ZSxcbiAgICAgIHZlcmJvc2U6IGZhbHNlLFxuICAgICAgdmVyc2lvbjogZmFsc2UsXG4gICAgICBob3N0OiBcIjAuMC4wLjBcIixcbiAgICAgIHBvcnQ6IHVuZGVmaW5lZCxcbiAgICAgIGNlcnQ6IFwiXCIsXG4gICAgICBrZXk6IFwiXCIsXG4gICAgfSxcbiAgICBhbGlhczoge1xuICAgICAgcDogXCJwb3J0XCIsXG4gICAgICBjOiBcImNlcnRcIixcbiAgICAgIGs6IFwia2V5XCIsXG4gICAgICBoOiBcImhlbHBcIixcbiAgICAgIHY6IFwidmVyYm9zZVwiLFxuICAgICAgVjogXCJ2ZXJzaW9uXCIsXG4gICAgICBIOiBcImhlYWRlclwiLFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCBwb3J0ID0gc2VydmVyQXJncy5wb3J0ID8gTnVtYmVyKHNlcnZlckFyZ3MucG9ydCkgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGhlYWRlcnMgPSBzZXJ2ZXJBcmdzLmhlYWRlciA/PyBbXTtcbiAgY29uc3QgaG9zdCA9IHNlcnZlckFyZ3MuaG9zdDtcbiAgY29uc3QgY2VydEZpbGUgPSBzZXJ2ZXJBcmdzLmNlcnQ7XG4gIGNvbnN0IGtleUZpbGUgPSBzZXJ2ZXJBcmdzLmtleTtcblxuICBpZiAoc2VydmVyQXJncy5oZWxwKSB7XG4gICAgcHJpbnRVc2FnZSgpO1xuICAgIERlbm8uZXhpdCgpO1xuICB9XG5cbiAgaWYgKHNlcnZlckFyZ3MudmVyc2lvbikge1xuICAgIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tY29uc29sZVxuICAgIGNvbnNvbGUubG9nKGBEZW5vIEZpbGUgU2VydmVyICR7ZGVub0NvbmZpZy52ZXJzaW9ufWApO1xuICAgIERlbm8uZXhpdCgpO1xuICB9XG5cbiAgaWYgKGtleUZpbGUgfHwgY2VydEZpbGUpIHtcbiAgICBpZiAoa2V5RmlsZSA9PT0gXCJcIiB8fCBjZXJ0RmlsZSA9PT0gXCJcIikge1xuICAgICAgLy8gZGVuby1saW50LWlnbm9yZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmxvZyhcIi0ta2V5IGFuZCAtLWNlcnQgYXJlIHJlcXVpcmVkIGZvciBUTFNcIik7XG4gICAgICBwcmludFVzYWdlKCk7XG4gICAgICBEZW5vLmV4aXQoMSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgd2lsZCA9IHNlcnZlckFyZ3MuXyBhcyBzdHJpbmdbXTtcbiAgY29uc3QgdGFyZ2V0ID0gcmVzb2x2ZSh3aWxkWzBdID8/IFwiXCIpO1xuXG4gIGNvbnN0IGhhbmRsZXIgPSAocmVxOiBSZXF1ZXN0KTogUHJvbWlzZTxSZXNwb25zZT4gPT4ge1xuICAgIHJldHVybiBzZXJ2ZURpcihyZXEsIHtcbiAgICAgIGZzUm9vdDogdGFyZ2V0LFxuICAgICAgc2hvd0Rpckxpc3Rpbmc6IHNlcnZlckFyZ3NbXCJkaXItbGlzdGluZ1wiXSxcbiAgICAgIHNob3dEb3RmaWxlczogc2VydmVyQXJncy5kb3RmaWxlcyxcbiAgICAgIGVuYWJsZUNvcnM6IHNlcnZlckFyZ3MuY29ycyxcbiAgICAgIHF1aWV0OiAhc2VydmVyQXJncy52ZXJib3NlLFxuICAgICAgaGVhZGVycyxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCB1c2VUbHMgPSAhIShrZXlGaWxlICYmIGNlcnRGaWxlKTtcblxuICBmdW5jdGlvbiBvbkxpc3Rlbih7IHBvcnQsIGhvc3RuYW1lIH06IHsgcG9ydDogbnVtYmVyOyBob3N0bmFtZTogc3RyaW5nIH0pIHtcbiAgICBsZXQgbmV0d29ya0FkZHJlc3M6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAoTkVUX1BFUk1fU1RBVFVTID09PSBcImdyYW50ZWRcIikge1xuICAgICAgbmV0d29ya0FkZHJlc3MgPSBnZXROZXR3b3JrQWRkcmVzcygpO1xuICAgIH1cbiAgICBjb25zdCBwcm90b2NvbCA9IHVzZVRscyA/IFwiaHR0cHNcIiA6IFwiaHR0cFwiO1xuICAgIGNvbnN0IGhvc3QgPSAoRGVuby5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCIgJiYgaG9zdG5hbWUgPT09IFwiMC4wLjAuMFwiKVxuICAgICAgPyBcImxvY2FsaG9zdFwiXG4gICAgICA6IGhvc3RuYW1lO1xuXG4gICAgY29uc3QgZm9ybWF0dGVkSG9zdCA9IGhvc3RuYW1lLmluY2x1ZGVzKFwiOlwiKSA/IGBbJHtob3N0fV1gIDogaG9zdDtcbiAgICBsZXQgbWVzc2FnZSA9XG4gICAgICBgTGlzdGVuaW5nIG9uOlxcbi0gTG9jYWw6ICR7cHJvdG9jb2x9Oi8vJHtmb3JtYXR0ZWRIb3N0fToke3BvcnR9YDtcbiAgICBpZiAobmV0d29ya0FkZHJlc3MgJiYgIURFTk9fREVQTE9ZTUVOVF9JRCkge1xuICAgICAgbWVzc2FnZSArPSBgXFxuLSBOZXR3b3JrOiAke3Byb3RvY29sfTovLyR7bmV0d29ya0FkZHJlc3N9OiR7cG9ydH1gO1xuICAgIH1cbiAgICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmxvZyhtZXNzYWdlKTtcbiAgfVxuXG4gIC8vIFRPRE8ocGV0YW1vcmlrZW4pOiBNaWdyYXRlIGBEZW5vLlNlcnZlVGNwT3B0aW9ucyB8IChEZW5vLlNlcnZlVGNwT3B0aW9ucyAmIERlbm8uVGxzQ2VydGlmaWVkS2V5T3B0aW9ucylgIGluIHYyXG4gIGNvbnN0IG9wdGlvbnM6IHtcbiAgICBwb3J0PzogbnVtYmVyO1xuICAgIGhvc3RuYW1lPzogc3RyaW5nO1xuICAgIG9uTGlzdGVuPzogKGxvY2FsQWRkcjogRGVuby5OZXRBZGRyKSA9PiB2b2lkO1xuICAgIGNlcnQ/OiBzdHJpbmc7XG4gICAga2V5Pzogc3RyaW5nO1xuICB9ID0ge1xuICAgIGhvc3RuYW1lOiBob3N0LFxuICAgIG9uTGlzdGVuLFxuICB9O1xuICBpZiAocG9ydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgb3B0aW9ucy5wb3J0ID0gcG9ydDtcbiAgfVxuICBpZiAodXNlVGxzKSB7XG4gICAgb3B0aW9ucy5jZXJ0ID0gRGVuby5yZWFkVGV4dEZpbGVTeW5jKGNlcnRGaWxlKTtcbiAgICBvcHRpb25zLmtleSA9IERlbm8ucmVhZFRleHRGaWxlU3luYyhrZXlGaWxlKTtcbiAgfVxuICBEZW5vLnNlcnZlKG9wdGlvbnMsIGhhbmRsZXIpO1xufVxuXG5mdW5jdGlvbiBwcmludFVzYWdlKCkge1xuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWNvbnNvbGVcbiAgY29uc29sZS5sb2coYERlbm8gRmlsZSBTZXJ2ZXIgJHtkZW5vQ29uZmlnLnZlcnNpb259XG4gIFNlcnZlcyBhIGxvY2FsIGRpcmVjdG9yeSBpbiBIVFRQLlxuXG5JTlNUQUxMOlxuICBkZW5vIGluc3RhbGwgLS1hbGxvdy1uZXQgLS1hbGxvdy1yZWFkIC0tYWxsb3ctc3lzIGpzcjpAc3RkL2h0dHBAJHtkZW5vQ29uZmlnLnZlcnNpb259L2ZpbGUtc2VydmVyXG5cblVTQUdFOlxuICBmaWxlX3NlcnZlciBbcGF0aF0gW29wdGlvbnNdXG5cbk9QVElPTlM6XG4gIC1oLCAtLWhlbHAgICAgICAgICAgICBQcmludHMgaGVscCBpbmZvcm1hdGlvblxuICAtcCwgLS1wb3J0IDxQT1JUPiAgICAgU2V0IHBvcnQgKGRlZmF1bHQgaXMgODAwMClcbiAgLS1jb3JzICAgICAgICAgICAgICAgIEVuYWJsZSBDT1JTIHZpYSB0aGUgXCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW5cIiBoZWFkZXJcbiAgLS1ob3N0ICAgICA8SE9TVD4gICAgIEhvc3RuYW1lIChkZWZhdWx0IGlzIDAuMC4wLjApXG4gIC1jLCAtLWNlcnQgPEZJTEU+ICAgICBUTFMgY2VydGlmaWNhdGUgZmlsZSAoZW5hYmxlcyBUTFMpXG4gIC1rLCAtLWtleSAgPEZJTEU+ICAgICBUTFMga2V5IGZpbGUgKGVuYWJsZXMgVExTKVxuICAtSCwgLS1oZWFkZXIgPEhFQURFUj4gU2V0cyBhIGhlYWRlciBvbiBldmVyeSByZXF1ZXN0LlxuICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gLS1oZWFkZXIgXCJDYWNoZS1Db250cm9sOiBuby1jYWNoZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gY2FuIGJlIHNwZWNpZmllZCBtdWx0aXBsZSB0aW1lcy5cbiAgLS1uby1kaXItbGlzdGluZyAgICAgIERpc2FibGUgZGlyZWN0b3J5IGxpc3RpbmdcbiAgLS1uby1kb3RmaWxlcyAgICAgICAgIERvIG5vdCBzaG93IGRvdGZpbGVzXG4gIC0tbm8tY29ycyAgICAgICAgICAgICBEaXNhYmxlIGNyb3NzLW9yaWdpbiByZXNvdXJjZSBzaGFyaW5nXG4gIC12LCAtLXZlcmJvc2UgICAgICAgICBQcmludCByZXF1ZXN0IGxldmVsIGxvZ3NcbiAgLVYsIC0tdmVyc2lvbiAgICAgICAgIFByaW50IHZlcnNpb24gaW5mb3JtYXRpb25cblxuICBBbGwgVExTIG9wdGlvbnMgYXJlIHJlcXVpcmVkIHdoZW4gb25lIGlzIHByb3ZpZGVkLmApO1xufVxuXG5pZiAoaW1wb3J0Lm1ldGEubWFpbikge1xuICBtYWluKCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLHFEQUFxRDtBQUVyRCxnRUFBZ0U7QUFDaEUsMkNBQTJDO0FBQzNDLGdGQUFnRjtBQUVoRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXlCQyxHQUVELFNBQVMsYUFBYSxjQUFjLFFBQVEsdUNBQXVDO0FBQ25GLFNBQVMsT0FBTyxRQUFRLCtCQUErQjtBQUN2RCxTQUFTLElBQUksUUFBUSw0QkFBNEI7QUFDakQsU0FBUyxRQUFRLFFBQVEsZ0NBQWdDO0FBQ3pELFNBQVMsT0FBTyxRQUFRLCtCQUErQjtBQUN2RCxTQUFTLGlCQUFpQixRQUFRLGlDQUFpQztBQUNuRSxTQUFTLFdBQVcsUUFBUSwyQ0FBMkM7QUFDdkUsU0FBUyxJQUFJLEVBQUUsV0FBVyxRQUFRLFlBQVk7QUFDOUMsU0FDRSxnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLFdBQVcsUUFFTixjQUFjO0FBQ3JCLFNBQVMsZUFBZSxRQUFRLDRDQUE0QztBQUM1RSxTQUFTLFNBQVMsUUFBUSxrQ0FBa0M7QUFDNUQsT0FBTyxnQkFBZ0IsbUJBQW1CO0VBQUUsTUFBTTtBQUFPLEVBQUU7QUFDM0QsU0FBUyxVQUFVLFdBQVcsUUFBUSw0QkFBNEI7QUFDbEUsU0FBUyxpQkFBaUIsUUFBUSxtREFBbUQ7QUFDckYsU0FBUyxNQUFNLFFBQVEsZ0NBQWdDO0FBQ3ZELFNBQVMsTUFBTSxRQUFRLHVCQUF1QjtBQUM5QyxTQUFTLE1BQU0sUUFBUSx1QkFBdUI7QUFTOUMsTUFBTSxrQkFDSixLQUFLLFdBQVcsQ0FBQyxTQUFTLEdBQUc7RUFBRSxNQUFNO0VBQU8sVUFBVTtBQUFxQixHQUN4RSxTQUFTLFdB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 +// denoCacheMetadata=4609447523276394179,2530461268941085721
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/bb1e1102f0410b69a83b390e1ac8899b3368a13f93406c05ea529eee1d9f98f9.js b/vendor/gen/https/jsr.io/bb1e1102f0410b69a83b390e1ac8899b3368a13f93406c05ea529eee1d9f98f9.js new file mode 100644 index 0000000..33bee13 --- /dev/null +++ b/vendor/gen/https/jsr.io/bb1e1102f0410b69a83b390e1ac8899b3368a13f93406c05ea529eee1d9f98f9.js @@ -0,0 +1,274 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * Contains the {@linkcode STATUS_CODE} object which contains standard HTTP + * status codes and provides several type guards for handling status codes + * with type safety. + * + * @example The status code and status text + * ```ts + * import { + * STATUS_CODE, + * STATUS_TEXT, + * } from "@std/http/status"; + * + * console.log(STATUS_CODE.NotFound); // Returns 404 + * console.log(STATUS_TEXT[STATUS_CODE.NotFound]); // Returns "Not Found" + * ``` + * + * @example Checking the status code type + * ```ts ignore + * import { isErrorStatus } from "@std/http/status"; + * + * const res = await fetch("https://example.com/"); + * + * if (isErrorStatus(res.status)) { + * // error handling here... + * } + * + * await res.body?.cancel(); + * ``` + * + * @module + */ export const STATUS_CODE = { + /** RFC 7231, 6.2.1 */ Continue: 100, + /** RFC 7231, 6.2.2 */ SwitchingProtocols: 101, + /** RFC 2518, 10.1 */ Processing: 102, + /** RFC 8297 **/ EarlyHints: 103, + /** RFC 7231, 6.3.1 */ OK: 200, + /** RFC 7231, 6.3.2 */ Created: 201, + /** RFC 7231, 6.3.3 */ Accepted: 202, + /** RFC 7231, 6.3.4 */ NonAuthoritativeInfo: 203, + /** RFC 7231, 6.3.5 */ NoContent: 204, + /** RFC 7231, 6.3.6 */ ResetContent: 205, + /** RFC 7233, 4.1 */ PartialContent: 206, + /** RFC 4918, 11.1 */ MultiStatus: 207, + /** RFC 5842, 7.1 */ AlreadyReported: 208, + /** RFC 3229, 10.4.1 */ IMUsed: 226, + /** RFC 7231, 6.4.1 */ MultipleChoices: 300, + /** RFC 7231, 6.4.2 */ MovedPermanently: 301, + /** RFC 7231, 6.4.3 */ Found: 302, + /** RFC 7231, 6.4.4 */ SeeOther: 303, + /** RFC 7232, 4.1 */ NotModified: 304, + /** RFC 7231, 6.4.5 */ UseProxy: 305, + /** RFC 7231, 6.4.7 */ TemporaryRedirect: 307, + /** RFC 7538, 3 */ PermanentRedirect: 308, + /** RFC 7231, 6.5.1 */ BadRequest: 400, + /** RFC 7235, 3.1 */ Unauthorized: 401, + /** RFC 7231, 6.5.2 */ PaymentRequired: 402, + /** RFC 7231, 6.5.3 */ Forbidden: 403, + /** RFC 7231, 6.5.4 */ NotFound: 404, + /** RFC 7231, 6.5.5 */ MethodNotAllowed: 405, + /** RFC 7231, 6.5.6 */ NotAcceptable: 406, + /** RFC 7235, 3.2 */ ProxyAuthRequired: 407, + /** RFC 7231, 6.5.7 */ RequestTimeout: 408, + /** RFC 7231, 6.5.8 */ Conflict: 409, + /** RFC 7231, 6.5.9 */ Gone: 410, + /** RFC 7231, 6.5.10 */ LengthRequired: 411, + /** RFC 7232, 4.2 */ PreconditionFailed: 412, + /** RFC 7231, 6.5.11 */ ContentTooLarge: 413, + /** RFC 7231, 6.5.12 */ URITooLong: 414, + /** RFC 7231, 6.5.13 */ UnsupportedMediaType: 415, + /** RFC 7233, 4.4 */ RangeNotSatisfiable: 416, + /** RFC 7231, 6.5.14 */ ExpectationFailed: 417, + /** RFC 7168, 2.3.3 */ Teapot: 418, + /** RFC 7540, 9.1.2 */ MisdirectedRequest: 421, + /** RFC 4918, 11.2 */ UnprocessableEntity: 422, + /** RFC 4918, 11.3 */ Locked: 423, + /** RFC 4918, 11.4 */ FailedDependency: 424, + /** RFC 8470, 5.2 */ TooEarly: 425, + /** RFC 7231, 6.5.15 */ UpgradeRequired: 426, + /** RFC 6585, 3 */ PreconditionRequired: 428, + /** RFC 6585, 4 */ TooManyRequests: 429, + /** RFC 6585, 5 */ RequestHeaderFieldsTooLarge: 431, + /** RFC 7725, 3 */ UnavailableForLegalReasons: 451, + /** RFC 7231, 6.6.1 */ InternalServerError: 500, + /** RFC 7231, 6.6.2 */ NotImplemented: 501, + /** RFC 7231, 6.6.3 */ BadGateway: 502, + /** RFC 7231, 6.6.4 */ ServiceUnavailable: 503, + /** RFC 7231, 6.6.5 */ GatewayTimeout: 504, + /** RFC 7231, 6.6.6 */ HTTPVersionNotSupported: 505, + /** RFC 2295, 8.1 */ VariantAlsoNegotiates: 506, + /** RFC 4918, 11.5 */ InsufficientStorage: 507, + /** RFC 5842, 7.2 */ LoopDetected: 508, + /** RFC 2774, 7 */ NotExtended: 510, + /** RFC 6585, 6 */ NetworkAuthenticationRequired: 511 +}; +/** A record of all the status codes text. */ export const STATUS_TEXT = { + [STATUS_CODE.Accepted]: "Accepted", + [STATUS_CODE.AlreadyReported]: "Already Reported", + [STATUS_CODE.BadGateway]: "Bad Gateway", + [STATUS_CODE.BadRequest]: "Bad Request", + [STATUS_CODE.Conflict]: "Conflict", + [STATUS_CODE.Continue]: "Continue", + [STATUS_CODE.Created]: "Created", + [STATUS_CODE.EarlyHints]: "Early Hints", + [STATUS_CODE.ExpectationFailed]: "Expectation Failed", + [STATUS_CODE.FailedDependency]: "Failed Dependency", + [STATUS_CODE.Forbidden]: "Forbidden", + [STATUS_CODE.Found]: "Found", + [STATUS_CODE.GatewayTimeout]: "Gateway Timeout", + [STATUS_CODE.Gone]: "Gone", + [STATUS_CODE.HTTPVersionNotSupported]: "HTTP Version Not Supported", + [STATUS_CODE.IMUsed]: "IM Used", + [STATUS_CODE.InsufficientStorage]: "Insufficient Storage", + [STATUS_CODE.InternalServerError]: "Internal Server Error", + [STATUS_CODE.LengthRequired]: "Length Required", + [STATUS_CODE.Locked]: "Locked", + [STATUS_CODE.LoopDetected]: "Loop Detected", + [STATUS_CODE.MethodNotAllowed]: "Method Not Allowed", + [STATUS_CODE.MisdirectedRequest]: "Misdirected Request", + [STATUS_CODE.MovedPermanently]: "Moved Permanently", + [STATUS_CODE.MultiStatus]: "Multi Status", + [STATUS_CODE.MultipleChoices]: "Multiple Choices", + [STATUS_CODE.NetworkAuthenticationRequired]: "Network Authentication Required", + [STATUS_CODE.NoContent]: "No Content", + [STATUS_CODE.NonAuthoritativeInfo]: "Non Authoritative Info", + [STATUS_CODE.NotAcceptable]: "Not Acceptable", + [STATUS_CODE.NotExtended]: "Not Extended", + [STATUS_CODE.NotFound]: "Not Found", + [STATUS_CODE.NotImplemented]: "Not Implemented", + [STATUS_CODE.NotModified]: "Not Modified", + [STATUS_CODE.OK]: "OK", + [STATUS_CODE.PartialContent]: "Partial Content", + [STATUS_CODE.PaymentRequired]: "Payment Required", + [STATUS_CODE.PermanentRedirect]: "Permanent Redirect", + [STATUS_CODE.PreconditionFailed]: "Precondition Failed", + [STATUS_CODE.PreconditionRequired]: "Precondition Required", + [STATUS_CODE.Processing]: "Processing", + [STATUS_CODE.ProxyAuthRequired]: "Proxy Auth Required", + [STATUS_CODE.ContentTooLarge]: "Content Too Large", + [STATUS_CODE.RequestHeaderFieldsTooLarge]: "Request Header Fields Too Large", + [STATUS_CODE.RequestTimeout]: "Request Timeout", + [STATUS_CODE.URITooLong]: "URI Too Long", + [STATUS_CODE.RangeNotSatisfiable]: "Range Not Satisfiable", + [STATUS_CODE.ResetContent]: "Reset Content", + [STATUS_CODE.SeeOther]: "See Other", + [STATUS_CODE.ServiceUnavailable]: "Service Unavailable", + [STATUS_CODE.SwitchingProtocols]: "Switching Protocols", + [STATUS_CODE.Teapot]: "I'm a teapot", + [STATUS_CODE.TemporaryRedirect]: "Temporary Redirect", + [STATUS_CODE.TooEarly]: "Too Early", + [STATUS_CODE.TooManyRequests]: "Too Many Requests", + [STATUS_CODE.Unauthorized]: "Unauthorized", + [STATUS_CODE.UnavailableForLegalReasons]: "Unavailable For Legal Reasons", + [STATUS_CODE.UnprocessableEntity]: "Unprocessable Entity", + [STATUS_CODE.UnsupportedMediaType]: "Unsupported Media Type", + [STATUS_CODE.UpgradeRequired]: "Upgrade Required", + [STATUS_CODE.UseProxy]: "Use Proxy", + [STATUS_CODE.VariantAlsoNegotiates]: "Variant Also Negotiates" +}; +/** + * Returns whether the provided number is a valid HTTP status code. + * + * @example Usage + * ```ts + * import { isStatus } from "@std/http/status"; + * import { assert } from "@std/assert"; + * + * assert(isStatus(404)); + * ``` + * + * @param status The status to assert against. + * @returns Whether or not the provided status is a valid status code. + */ export function isStatus(status) { + return Object.values(STATUS_CODE).includes(status); +} +/** + * A type guard that determines if the status code is informational. + * + * @example Usage + * ```ts + * import { isInformationalStatus } from "@std/http/status"; + * import { assert } from "@std/assert"; + * + * assert(isInformationalStatus(100)); + * ``` + * + * @param status The status to assert against. + * @returns Whether or not the provided status is an informational status code. + */ export function isInformationalStatus(status) { + return isStatus(status) && status >= 100 && status < 200; +} +/** + * A type guard that determines if the status code is successful. + * + * @example Usage + * ```ts + * import { isSuccessfulStatus } from "@std/http/status"; + * import { assert } from "@std/assert"; + * + * assert(isSuccessfulStatus(200)); + * ``` + * + * @param status The status to assert against. + * @returns Whether or not the provided status is a successful status code. + */ export function isSuccessfulStatus(status) { + return isStatus(status) && status >= 200 && status < 300; +} +/** + * A type guard that determines if the status code is a redirection. + * + * @example Usage + * ```ts + * import { isRedirectStatus } from "@std/http/status"; + * import { assert } from "@std/assert"; + * + * assert(isRedirectStatus(302)); + * ``` + * + * @param status The status to assert against. + * @returns Whether or not the provided status is a redirect status code. + */ export function isRedirectStatus(status) { + return isStatus(status) && status >= 300 && status < 400; +} +/** + * A type guard that determines if the status code is a client error. + * + * @example Usage + * ```ts + * import { isClientErrorStatus } from "@std/http/status"; + * import { assert } from "@std/assert"; + * + * assert(isClientErrorStatus(404)); + * ``` + * + * @param status The status to assert against. + * @returns Whether or not the provided status is a client error status code. + */ export function isClientErrorStatus(status) { + return isStatus(status) && status >= 400 && status < 500; +} +/** + * A type guard that determines if the status code is a server error. + * + * @example Usage + * ```ts + * import { isServerErrorStatus } from "@std/http/status"; + * import { assert } from "@std/assert"; + * + * assert(isServerErrorStatus(502)); + * ``` + * + * @param status The status to assert against. + * @returns Whether or not the provided status is a server error status code. + */ export function isServerErrorStatus(status) { + return isStatus(status) && status >= 500 && status < 600; +} +/** + * A type guard that determines if the status code is an error. + * + * @example Usage + * ```ts + * import { isErrorStatus } from "@std/http/status"; + * import { assert } from "@std/assert"; + * + * assert(isErrorStatus(502)); + * ``` + * + * @param status The status to assert against. + * @returns Whether or not the provided status is an error status code. + */ export function isErrorStatus(status) { + return isStatus(status) && status >= 400 && status < 600; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvaHR0cC8xLjAuMTYvc3RhdHVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbi8qKlxuICogQ29udGFpbnMgdGhlIHtAbGlua2NvZGUgU1RBVFVTX0NPREV9IG9iamVjdCB3aGljaCBjb250YWlucyBzdGFuZGFyZCBIVFRQXG4gKiBzdGF0dXMgY29kZXMgYW5kIHByb3ZpZGVzIHNldmVyYWwgdHlwZSBndWFyZHMgZm9yIGhhbmRsaW5nIHN0YXR1cyBjb2Rlc1xuICogd2l0aCB0eXBlIHNhZmV0eS5cbiAqXG4gKiBAZXhhbXBsZSBUaGUgc3RhdHVzIGNvZGUgYW5kIHN0YXR1cyB0ZXh0XG4gKiBgYGB0c1xuICogaW1wb3J0IHtcbiAqICAgU1RBVFVTX0NPREUsXG4gKiAgIFNUQVRVU19URVhULFxuICogfSBmcm9tIFwiQHN0ZC9odHRwL3N0YXR1c1wiO1xuICpcbiAqIGNvbnNvbGUubG9nKFNUQVRVU19DT0RFLk5vdEZvdW5kKTsgLy8gUmV0dXJucyA0MDRcbiAqIGNvbnNvbGUubG9nKFNUQVRVU19URVhUW1NUQVRVU19DT0RFLk5vdEZvdW5kXSk7IC8vIFJldHVybnMgXCJOb3QgRm91bmRcIlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQ2hlY2tpbmcgdGhlIHN0YXR1cyBjb2RlIHR5cGVcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgaXNFcnJvclN0YXR1cyB9IGZyb20gXCJAc3RkL2h0dHAvc3RhdHVzXCI7XG4gKlxuICogY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goXCJodHRwczovL2V4YW1wbGUuY29tL1wiKTtcbiAqXG4gKiBpZiAoaXNFcnJvclN0YXR1cyhyZXMuc3RhdHVzKSkge1xuICogICAvLyBlcnJvciBoYW5kbGluZyBoZXJlLi4uXG4gKiB9XG4gKlxuICogYXdhaXQgcmVzLmJvZHk/LmNhbmNlbCgpO1xuICogYGBgXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfQ09ERSA9IHtcbiAgLyoqIFJGQyA3MjMxLCA2LjIuMSAqL1xuICBDb250aW51ZTogMTAwLFxuICAvKiogUkZDIDcyMzEsIDYuMi4yICovXG4gIFN3aXRjaGluZ1Byb3RvY29sczogMTAxLFxuICAvKiogUkZDIDI1MTgsIDEwLjEgKi9cbiAgUHJvY2Vzc2luZzogMTAyLFxuICAvKiogUkZDIDgyOTcgKiovXG4gIEVhcmx5SGludHM6IDEwMyxcblxuICAvKiogUkZDIDcyMzEsIDYuMy4xICovXG4gIE9LOiAyMDAsXG4gIC8qKiBSRkMgNzIzMSwgNi4zLjIgKi9cbiAgQ3JlYXRlZDogMjAxLFxuICAvKiogUkZDIDcyMzEsIDYuMy4zICovXG4gIEFjY2VwdGVkOiAyMDIsXG4gIC8qKiBSRkMgNzIzMSwgNi4zLjQgKi9cbiAgTm9uQXV0aG9yaXRhdGl2ZUluZm86IDIwMyxcbiAgLyoqIFJGQyA3MjMxLCA2LjMuNSAqL1xuICBOb0NvbnRlbnQ6IDIwNCxcbiAgLyoqIFJGQyA3MjMxLCA2LjMuNiAqL1xuICBSZXNldENvbnRlbnQ6IDIwNSxcbiAgLyoqIFJGQyA3MjMzLCA0LjEgKi9cbiAgUGFydGlhbENvbnRlbnQ6IDIwNixcbiAgLyoqIFJGQyA0OTE4LCAxMS4xICovXG4gIE11bHRpU3RhdHVzOiAyMDcsXG4gIC8qKiBSRkMgNTg0MiwgNy4xICovXG4gIEFscmVhZHlSZXBvcnRlZDogMjA4LFxuICAvKiogUkZDIDMyMjksIDEwLjQuMSAqL1xuICBJTVVzZWQ6IDIyNixcblxuICAvKiogUkZDIDcyMzEsIDYuNC4xICovXG4gIE11bHRpcGxlQ2hvaWNlczogMzAwLFxuICAvKiogUkZDIDcyMzEsIDYuNC4yICovXG4gIE1vdmVkUGVybWFuZW50bHk6IDMwMSxcbiAgLyoqIFJGQyA3MjMxLCA2LjQuMyAqL1xuICBGb3VuZDogMzAyLFxuICAvKiogUkZDIDcyMzEsIDYuNC40ICovXG4gIFNlZU90aGVyOiAzMDMsXG4gIC8qKiBSRkMgNzIzMiwgNC4xICovXG4gIE5vdE1vZGlmaWVkOiAzMDQsXG4gIC8qKiBSRkMgNzIzMSwgNi40LjUgKi9cbiAgVXNlUHJveHk6IDMwNSxcbiAgLyoqIFJGQyA3MjMxLCA2LjQuNyAqL1xuICBUZW1wb3JhcnlSZWRpcmVjdDogMzA3LFxuICAvKiogUkZDIDc1MzgsIDMgKi9cbiAgUGVybWFuZW50UmVkaXJlY3Q6IDMwOCxcblxuICAvKiogUkZDIDcyMzEsIDYuNS4xICovXG4gIEJhZFJlcXVlc3Q6IDQwMCxcbiAgLyoqIFJGQyA3MjM1LCAzLjEgKi9cbiAgVW5hdXRob3JpemVkOiA0MDEsXG4gIC8qKiBSRkMgNzIzMSwgNi41LjIgKi9cbiAgUGF5bWVudFJlcXVpcmVkOiA0MDIsXG4gIC8qKiBSRkMgNzIzMSwgNi41LjMgKi9cbiAgRm9yYmlkZGVuOiA0MDMsXG4gIC8qKiBSRkMgNzIzMSwgNi41LjQgKi9cbiAgTm90Rm91bmQ6IDQwNCxcbiAgLyoqIFJGQyA3MjMxLCA2LjUuNSAqL1xuICBNZXRob2ROb3RBbGxvd2VkOiA0MDUsXG4gIC8qKiBSRkMgNzIzMSwgNi41LjYgKi9cbiAgTm90QWNjZXB0YWJsZTogNDA2LFxuICAvKiogUkZDIDcyMzUsIDMuMiAqL1xuICBQcm94eUF1dGhSZXF1aXJlZDogNDA3LFxuICAvKiogUkZDIDcyMzEsIDYuNS43ICovXG4gIFJlcXVlc3RUaW1lb3V0OiA0MDgsXG4gIC8qKiBSRkMgNzIzMSwgNi41LjggKi9cbiAgQ29uZmxpY3Q6IDQwOSxcbiAgLyoqIFJGQyA3MjMxLCA2LjUuOSAqL1xuICBHb25lOiA0MTAsXG4gIC8qKiBSRkMgNzIzMSwgNi41LjEwICovXG4gIExlbmd0aFJlcXVpcmVkOiA0MTEsXG4gIC8qKiBSRkMgNzIzMiwgNC4yICovXG4gIFByZWNvbmRpdGlvbkZhaWxlZDogNDEyLFxuICAvKiogUkZDIDcyMzEsIDYuNS4xMSAqL1xuICBDb250ZW50VG9vTGFyZ2U6IDQxMyxcbiAgLyoqIFJGQyA3MjMxLCA2LjUuMTIgKi9cbiAgVVJJVG9vTG9uZzogNDE0LFxuICAvKiogUkZDIDcyMzEsIDYuNS4xMyAqL1xuICBVbnN1cHBvcnRlZE1lZGlhVHlwZTogNDE1LFxuICAvKiogUkZDIDcyMzMsIDQuNCAqL1xuICBSYW5nZU5vdFNhdGlzZmlhYmxlOiA0MTYsXG4gIC8qKiBSRkMgNzIzMSwgNi41LjE0ICovXG4gIEV4cGVjdGF0aW9uRmFpbGVkOiA0MTcsXG4gIC8qKiBSRkMgNzE2OCwgMi4zLjMgKi9cbiAgVGVhcG90OiA0MTgsXG4gIC8qKiBSRkMgNzU0MCwgOS4xLjIgKi9cbiAgTWlzZGlyZWN0ZWRSZXF1ZXN0OiA0MjEsXG4gIC8qKiBSRkMgNDkxOCwgMTEuMiAqL1xuICBVbnByb2Nlc3NhYmxlRW50aXR5OiA0MjIsXG4gIC8qKiBSRkMgNDkxOCwgMTEuMyAqL1xuICBMb2NrZWQ6IDQyMyxcbiAgLyoqIFJGQyA0OTE4LCAxMS40ICovXG4gIEZhaWxlZERlcGVuZGVuY3k6IDQyNCxcbiAgLyoqIFJGQyA4NDcwLCA1LjIgKi9cbiAgVG9vRWFybHk6IDQyNSxcbiAgLyoqIFJGQyA3MjMxLCA2LjUuMTUgKi9cbiAgVXBncmFkZVJlcXVpcmVkOiA0MjYsXG4gIC8qKiBSRkMgNjU4NSwgMyAqL1xuICBQcmVjb25kaXRpb25SZXF1aXJlZDogNDI4LFxuICAvKiogUkZDIDY1ODUsIDQgKi9cbiAgVG9vTWFueVJlcXVlc3RzOiA0MjksXG4gIC8qKiBSRkMgNjU4NSwgNSAqL1xuICBSZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2U6IDQzMSxcbiAgLyoqIFJGQyA3NzI1LCAzICovXG4gIFVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zOiA0NTEsXG5cbiAgLyoqIFJGQyA3MjMxLCA2LjYuMSAqL1xuICBJbnRlcm5hbFNlcnZlckVycm9yOiA1MDAsXG4gIC8qKiBSRkMgNzIzMSwgNi42LjIgKi9cbiAgTm90SW1wbGVtZW50ZWQ6IDUwMSxcbiAgLyoqIFJGQyA3MjMxLCA2LjYuMyAqL1xuICBCYWRHYXRld2F5OiA1MDIsXG4gIC8qKiBSRkMgNzIzMSwgNi42LjQgKi9cbiAgU2VydmljZVVuYXZhaWxhYmxlOiA1MDMsXG4gIC8qKiBSRkMgNzIzMSwgNi42LjUgKi9cbiAgR2F0ZXdheVRpbWVvdXQ6IDUwNCxcbiAgLyoqIFJGQyA3MjMxLCA2LjYuNiAqL1xuICBIVFRQVmVyc2lvbk5vdFN1cHBvcnRlZDogNTA1LFxuICAvKiogUkZDIDIyOTUsIDguMSAqL1xuICBWYXJpYW50QWxzb05lZ290aWF0ZXM6IDUwNixcbiAgLyoqIFJGQyA0OTE4LCAxMS41ICovXG4gIEluc3VmZmljaWVudFN0b3JhZ2U6IDUwNyxcbiAgLyoqIFJGQyA1ODQyLCA3LjIgKi9cbiAgTG9vcERldGVjdGVkOiA1MDgsXG4gIC8qKiBSRkMgMjc3NCwgNyAqL1xuICBOb3RFeHRlbmRlZDogNTEwLFxuICAvKiogUkZDIDY1ODUsIDYgKi9cbiAgTmV0d29ya0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQ6IDUxMSxcbn0gYXMgY29uc3Q7XG5cbi8qKiBBbiBIVFRQIHN0YXR1cyBjb2RlLiAqL1xuZXhwb3J0IHR5cGUgU3RhdHVzQ29kZSA9IHR5cGVvZiBTVEFUVVNfQ09ERVtrZXlvZiB0eXBlb2YgU1RBVFVTX0NPREVdO1xuXG4vKiogQSByZWNvcmQgb2YgYWxsIHRoZSBzdGF0dXMgY29kZXMgdGV4dC4gKi9cbmV4cG9ydCBjb25zdCBTVEFUVVNfVEVYVCA9IHtcbiAgW1NUQVRVU19DT0RFLkFjY2VwdGVkXTogXCJBY2NlcHRlZFwiLFxuICBbU1RBVFVTX0NPREUuQWxyZWFkeVJlcG9ydGVkXTogXCJBbHJlYWR5IFJlcG9ydGVkXCIsXG4gIFtTVEFUVVNfQ09ERS5CYWRHYXRld2F5XTogXCJCYWQgR2F0ZXdheVwiLFxuICBbU1RBVFVTX0NPREUuQmFkUmVxdWVzdF06IFwiQmFkIFJlcXVlc3RcIixcbiAgW1NUQVRVU19DT0RFLkNvbmZsaWN0XTogXCJDb25mbGljdFwiLFxuICBbU1RBVFVTX0NPREUuQ29udGludWVdOiBcIkNvbnRpbnVlXCIsXG4gIFtTVEFUVVNfQ09ERS5DcmVhdGVkXTogXCJDcmVhdGVkXCIsXG4gIFtTVEFUVVNfQ09ERS5FYXJseUhpbnRzXTogXCJFYXJseSBIaW50c1wiLFxuICBbU1RBVFVTX0NPREUuRXhwZWN0YXRpb25GYWlsZWRdOiBcIkV4cGVjdGF0aW9uIEZhaWxlZFwiLFxuICBbU1RBVFVTX0NPREUuRmFpbGVkRGVwZW5kZW5jeV06IFwiRmFpbGVkIERlcGVuZGVuY3lcIixcbiAgW1NUQVRVU19DT0RFLkZvcmJpZGRlbl06IFwiRm9yYmlkZGVuXCIsXG4gIFtTVEFUVVNfQ09ERS5Gb3VuZF06IFwiRm91bmRcIixcbiAgW1NUQVRVU19DT0RFLkdhdGV3YXlUaW1lb3V0XTogXCJHYXRld2F5IFRpbWVvdXRcIixcbiAgW1NUQVRVU19DT0RFLkdvbmVdOiBcIkdvbmVcIixcbiAgW1NUQVRVU19DT0RFLkhUVFBWZXJzaW9uTm90U3VwcG9ydGVkXTogXCJIVFRQIFZlcnNpb24gTm90IFN1cHBvcnRlZFwiLFxuICBbU1RBVFVTX0NPREUuSU1Vc2VkXTogXCJJTSBVc2VkXCIsXG4gIFtTVEFUVVNfQ09ERS5JbnN1ZmZpY2llbnRTdG9yYWdlXTogXCJJbnN1ZmZpY2llbnQgU3RvcmFnZVwiLFxuICBbU1RBVFVTX0NPREUuSW50ZXJuYWxTZXJ2ZXJFcnJvcl06IFwiSW50ZXJuYWwgU2VydmVyIEVycm9yXCIsXG4gIFtTVEFUVVNfQ09ERS5MZW5ndGhSZXF1aXJlZF06IFwiTGVuZ3RoIFJlcXVpcmVkXCIsXG4gIFtTVEFUVVNfQ09ERS5Mb2NrZWRdOiBcIkxvY2tlZFwiLFxuICBbU1RBVFVTX0NPREUuTG9vcERldGVjdGVkXTogXCJMb29wIERldGVjdGVkXCIsXG4gIFtTVEFUVVNfQ09ERS5NZXRob2ROb3RBbGxvd2VkXTogXCJNZXRob2QgTm90IEFsbG93ZWRcIixcbiAgW1NUQVRVU19DT0RFLk1pc2RpcmVjdGVkUmVxdWVzdF06IFwiTWlzZGlyZWN0ZWQgUmVxdWVzdFwiLFxuICBbU1RBVFVTX0NPREUuTW92ZWRQZXJtYW5lbnRseV06IFwiTW92ZWQgUGVybWFuZW50bHlcIixcbiAgW1NUQVRVU19DT0RFLk11bHRpU3RhdHVzXTogXCJNdWx0aSBTdGF0dXNcIixcbiAgW1NUQVRVU19DT0RFLk11bHRpcGxlQ2hvaWNlc106IFwiTXVsdGlwbGUgQ2hvaWNlc1wiLFxuICBbU1RBVFVTX0NPREUuTmV0d29ya0F1dGhlbnRpY2F0aW9uUmVxdWlyZWRdOlxuICAgIFwiTmV0d29yayBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZFwiLFxuICBbU1RBVFVTX0NPREUuTm9Db250ZW50XTogXCJObyBDb250ZW50XCIsXG4gIFtTVEFUVVNfQ09ERS5Ob25BdXRob3JpdGF0aXZlSW5mb106IFwiTm9uIEF1dGhvcml0YXRpdmUgSW5mb1wiLFxuICBbU1RBVFVTX0NPREUuTm90QWNjZXB0YWJsZV06IFwiTm90IEFjY2VwdGFibGVcIixcbiAgW1NUQVRVU19DT0RFLk5vdEV4dGVuZGVkXTogXCJOb3QgRXh0ZW5kZWRcIixcbiAgW1NUQVRVU19DT0RFLk5vdEZvdW5kXTogXCJOb3QgRm91bmRcIixcbiAgW1NUQVRVU19DT0RFLk5vdEltcGxlbWVudGVkXTogXCJOb3QgSW1wbGVtZW50ZWRcIixcbiAgW1NUQVRVU19DT0RFLk5vdE1vZGlmaWVkXTogXCJOb3QgTW9kaWZpZWRcIixcbiAgW1NUQVRVU19DT0RFLk9LXTogXCJPS1wiLFxuICBbU1RBVFVTX0NPREUuUGFydGlhbENvbnRlbnRdOiBcIlBhcnRpYWwgQ29udGVudFwiLFxuICBbU1RBVFVTX0NPREUuUGF5bWVudFJlcXVpcmVkXTogXCJQYXltZW50IFJlcXVpcmVkXCIsXG4gIFtTVEFUVVNfQ09ERS5QZXJtYW5lbnRSZWRpcmVjdF06IFwiUGVybWFuZW50IFJlZGlyZWN0XCIsXG4gIFtTVEFUVVNfQ09ERS5QcmVjb25kaXRpb25GYWlsZWRdOiBcIlByZWNvbmRpdGlvbiBGYWlsZWRcIixcbiAgW1NUQVRVU19DT0RFLlByZWNvbmRpdGlvblJlcXVpcmVkXTogXCJQcmVjb25kaXRpb24gUmVxdWlyZWRcIixcbiAgW1NUQVRVU19DT0RFLlByb2Nlc3NpbmddOiBcIlByb2Nlc3NpbmdcIixcbiAgW1NUQVRVU19DT0RFLlByb3h5QXV0aFJlcXVpcmVkXTogXCJQcm94eSBBdXRoIFJlcXVpcmVkXCIsXG4gIFtTVEFUVVNfQ09ERS5Db250ZW50VG9vTGFyZ2VdOiBcIkNvbnRlbnQgVG9vIExhcmdlXCIsXG4gIFtTVEFUVVNfQ09ERS5SZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2VdOiBcIlJlcXVlc3QgSGVhZGVyIEZpZWxkcyBUb28gTGFyZ2VcIixcbiAgW1NUQVRVU19DT0RFLlJlcXVlc3RUaW1lb3V0XTogXCJSZXF1ZXN0IFRpbWVvdXRcIixcbiAgW1NUQVRVU19DT0RFLlVSSVRvb0xvbmddOiBcIlVSSSBUb28gTG9uZ1wiLFxuICBbU1RBVFVTX0NPREUuUmFuZ2VOb3RTYXRpc2ZpYWJsZV06IFwiUmFuZ2UgTm90IFNhdGlzZmlhYmxlXCIsXG4gIFtTVEFUVVNfQ09ERS5SZXNldENvbnRlbnRdOiBcIlJlc2V0IENvbnRlbnRcIixcbiAgW1NUQVRVU19DT0RFLlNlZU90aGVyXTogXCJTZWUgT3RoZXJcIixcbiAgW1NUQVRVU19DT0RFLlNlcnZpY2VVbmF2YWlsYWJsZV06IFwiU2VydmljZSBVbmF2YWlsYWJsZVwiLFxuICBbU1RBVFVTX0NPREUuU3dpdGNoaW5nUHJvdG9jb2xzXTogXCJTd2l0Y2hpbmcgUHJvdG9jb2xzXCIsXG4gIFtTVEFUVVNfQ09ERS5UZWFwb3RdOiBcIkknbSBhIHRlYXBvdFwiLFxuICBbU1RBVFVTX0NPREUuVGVtcG9yYXJ5UmVkaXJlY3RdOiBcIlRlbXBvcmFyeSBSZWRpcmVjdFwiLFxuICBbU1RBVFVTX0NPREUuVG9vRWFybHldOiBcIlRvbyBFYXJseVwiLFxuICBbU1RBVFVTX0NPREUuVG9vTWFueVJlcXVlc3RzXTogXCJUb28gTWFueSBSZXF1ZXN0c1wiLFxuICBbU1RBVFVTX0NPREUuVW5hdXRob3JpemVkXTogXCJVbmF1dGhvcml6ZWRcIixcbiAgW1NUQVRVU19DT0RFLlVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zXTogXCJVbmF2YWlsYWJsZSBGb3IgTGVnYWwgUmVhc29uc1wiLFxuICBbU1RBVFVTX0NPREUuVW5wcm9jZXNzYWJsZUVudGl0eV06IFwiVW5wcm9jZXNzYWJsZSBFbnRpdHlcIixcbiAgW1NUQVRVU19DT0RFLlVuc3VwcG9ydGVkTWVkaWFUeXBlXTogXCJVbnN1cHBvcnRlZCBNZWRpYSBUeXBlXCIsXG4gIFtTVEFUVVNfQ09ERS5VcGdyYWRlUmVxdWlyZWRdOiBcIlVwZ3JhZGUgUmVxdWlyZWRcIixcbiAgW1NUQVRVU19DT0RFLlVzZVByb3h5XTogXCJVc2UgUHJveHlcIixcbiAgW1NUQVRVU19DT0RFLlZhcmlhbnRBbHNvTmVnb3RpYXRlc106IFwiVmFyaWFudCBBbHNvIE5lZ290aWF0ZXNcIixcbn0gYXMgY29uc3Q7XG5cbi8qKiBBbiBIVFRQIHN0YXR1cyB0ZXh0LiAqL1xuZXhwb3J0IHR5cGUgU3RhdHVzVGV4dCA9IHR5cGVvZiBTVEFUVVNfVEVYVFtrZXlvZiB0eXBlb2YgU1RBVFVTX1RFWFRdO1xuXG4vKiogQW4gSFRUUCBzdGF0dXMgdGhhdCBpcyBhIGluZm9ybWF0aW9uYWwgKDFYWCkuICovXG5leHBvcnQgdHlwZSBJbmZvcm1hdGlvbmFsU3RhdHVzID1cbiAgfCB0eXBlb2YgU1RBVFVTX0NPREUuQ29udGludWVcbiAgfCB0eXBlb2YgU1RBVFVTX0NPREUuU3dpdGNoaW5nUHJvdG9jb2xzXG4gIHwgdHlwZW9mIFNUQVRVU19DT0RFLlByb2Nlc3NpbmdcbiAgfCB0eXBlb2YgU1RBVFVTX0NPREUuRWFybHlIaW50cztcblxuLyoqIEFuIEhUVFAgc3RhdHVzIHRoYXQgaXMgYSBzdWNjZXNzICgyWFgpLiAqL1xuZXhwb3J0IHR5cGUgU3VjY2Vzc2Z1bFN0YXR1cyA9XG4gIHwgdHlwZW9mIFNUQVRVU19DT0RFLk9LXG4gIHwgdHlwZW9mIFNUQVRVU19DT0RFLkNyZWF0ZWRcbiAgfCB0eXBlb2YgU1RBVFVTX0NPREUuQWNjZXB0ZWRcbiAgfCB0eXBlb2YgU1RBVFVTX0NPREUuTm9uQXV0aG9yaXRhdGl2ZUluZm9cbiAgfCB0eXBlb2YgU1RBVFVTX0NPREUuTm9Db250ZW50XG4gIHwgdHlwZW9mIFNUQVRVU19DT0RFLlJlc2V0Q29udGVudFxuICB8IHR5cGVvZiBTVEFUVVNfQ09ERS5QYXJ0aWFsQ29udGVudFxuICB8IHR5cGVvZiBTVEFUVVNfQ09ERS5NdWx0aVN0YXR1c1xuICB8IHR5cGVvZiBTVEFUVVNfQ09ERS5BbHJlYWR5UmVwb3J0ZWRcbiAgfCB0eXBlb2YgU1RBVFVTX0NPREUuSU1Vc2VkO1xuXG4vKiogQW4gSFRUUCBzdGF0dXMgdGhhdCBpcyBhIHJlZGlyZWN0ICgzWFgpLiAqL1xuZXhwb3J0IHR5cGUgUmVkaXJlY3RTdGF0dXMgPVxuICB8IHR5cGVvZiBTVEFUVVNfQ09ERS5NdWx0aXBsZUNob2ljZXMgLy8gMzAwXG4gIHwgdHlwZW9mIFNUQVRVU19DT0RFLk1vdmVkUGVybWFuZW50bHkgLy8gMzAxXG4gIHwgdHlwZW9mIFNUQVRVU19DT0RFLkZvdW5kIC8vIDMwMlxuICB8IHR5cGVvZiBTVEFUVVNfQ09ERS5TZWVPdGhlciAvLyAzMDNcbiAgfCB0eXBlb2YgU1RBVFVTX0NPREUuVXNlUHJveHkgLy8gMzA1IC0gREVQUkVDQVRFRFxuICB8IHR5cGVvZiBTVEFUVVNfQ09ERS5UZW1wb3JhcnlSZWRpcmVjdCAvLyAzMDdcbiAgfCB0eXBlb2YgU1RBVFVTX0NPREUuUGVybWFuZW50UmVkaXJlY3Q7IC8vIDMwOFxuXG4vKiogQW4gSFRUUCBzdGF0dXMgdGhhdCBpcyBhIGNsaWVudCBlcnJvciAoNFhYKS4gKi9cbmV4cG9ydCB0eXBlIENsaWVudEVycm9yU3RhdHVzID1cbiAgfCB0eXBlb2YgU1RBVFVTX0NPREUuQmFkUmVxdWVzdFxuICB8IHR5cGVvZiBTVEFUVVNfQ09ERS5VbmF1dGhvcml6ZWRcbiAgfCB0eXBlb2YgU1RBVFVTX0NPREUuUGF5bWVudFJlcXVpcmVkXG4gIHwgdHlwZW9mIFNUQVRVU19DT0RFLkZvcmJpZGRlblxuICB8IHR5cGVvZiBTVEFUVVNfQ09ERS5Ob3RGb3VuZFxuICB8IHR5cGVvZiBTVEFUVVNfQ09ERS5NZXRob2ROb3RBbGxvd2VkXG4gIHwgdHlwZW9mIFNUQVRVU19DT0RFLk5vdEFjY2VwdGFibGVcbiAgfCB0eXBlb2YgU1RBVFVTX0NPREUuUHJveHlBdXRoUmVxdWlyZWRcbiAgfCB0eXBlb2YgU1RBVFVTX0NPREUuUmVxdWVzdFRpbWVvdXRcbiAgfCB0eXBlb2YgU1RBVFVTX0NPREUuQ29uZmxpY3RcbiAgfCB0eXBlb2YgU1RBVFVTX0NPREUuR29uZVxuICB8IHR5cGVvZiBTVEFUVVNfQ09ERS5MZW5ndGhSZXF1aXJlZFxuICB8IHR5cGVvZiBTVEFUVVNfQ09ERS5QcmVjb25kaXRpb25GYWlsZWRcbiAgfCB0eXBlb2YgU1RBVFVTX0NPREUuQ29udGVudFRvb0xhcmdlXG4gIHwgdHlwZW9mIFNUQVRVU19DT0RFLlVSSVRvb0xvbmdcbiAgfCB0eXBlb2YgU1RBVFVTX0NPREUuVW5zdXBwb3J0ZWRNZWRpYVR5cGVcbiAgfCB0eXBlb2YgU1RBVFVTX0NPREUuUmFuZ2VOb3RTYXRpc2ZpYWJsZVxuICB8IHR5cGVvZiBTVEFUVVNfQ09ERS5FeHBlY3RhdGlvbkZhaWxlZFxuICB8IHR5cGVvZiBTVEFUVVNfQ09ERS5UZWFwb3RcbiAgfCB0eXBlb2YgU1RBVFVTX0NPREUuTWlzZGlyZWN0ZWRSZXF1ZXN0XG4gIHwgdHlwZW9mIFNUQVRVU19DT0RFLlVucHJvY2Vzc2FibGVFbnRpdHlcbiAgfCB0eXBlb2YgU1RBVFVTX0NPREUuTG9ja2VkXG4gIHwgdHlwZW9mIFNUQVRVU19DT0RFLkZhaWxlZERlcGVuZGVuY3lcbiAgfCB0eXBlb2YgU1RBVFVTX0NPREUuVXBncmFkZVJlcXVpcmVkXG4gIHwgdHlwZW9mIFNUQVRVU19DT0RFLlByZWNvbmRpdGlvblJlcXVpcmVkXG4gIHwgdHlwZW9mIFNUQVRVU19DT0RFLlRvb01hbnlSZXF1ZXN0c1xuICB8IHR5cGVvZiBTVEFUVVNfQ09ERS5SZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2VcbiAgfCB0eXBlb2YgU1RBVFVTX0NPREUuVW5hdmFpbGFibGVGb3JMZWdhbFJlYXNvbnM7XG5cbi8qKiBBbiBIVFRQIHN0YXR1cyB0aGF0IGlzIGEgc2VydmVyIGVycm9yICg1WFgpLiAqL1xuZXhwb3J0IHR5cGUgU2VydmVyRXJyb3JTdGF0dXMgPVxuICB8IHR5cGVvZiBTVEFUVVNfQ09ERS5JbnRlcm5hbFNlcnZlckVycm9yXG4gIHwgdHlwZW9mIFNUQVRVU19DT0RFLk5vdEltcGxlbWVudGVkXG4gIHwgdHlwZW9mIFNUQVRVU19DT0RFLkJhZEdhdGV3YXlcbiAgfCB0eXBlb2YgU1RBVFVTX0NPREUuU2VydmljZVVuYXZhaWxhYmxlXG4gIHwgdHlwZW9mIFNUQVRVU19DT0RFLkdhdGV3YXlUaW1lb3V0XG4gIHwgdHlwZW9mIFNUQVRVU19DT0RFLkhUVFBWZXJzaW9uTm90U3VwcG9ydGVkXG4gIHwgdHlwZW9mIFNUQVRVU19DT0RFLlZhcmlhbnRBbHNvTmVnb3RpYXRlc1xuICB8IHR5cGVvZiBTVEFUVVNfQ09ERS5JbnN1ZmZpY2llbnRTdG9yYWdlXG4gIHwgdHlwZW9mIFNUQVRVU19DT0RFLkxvb3BEZXRlY3RlZFxuICB8IHR5cGVvZiBTVEFUVVNfQ09ERS5Ob3RFeHRlbmRlZFxuICB8IHR5cGVvZiBTVEFUVVNfQ09ERS5OZXR3b3JrQXV0aGVudGljYXRpb25SZXF1aXJlZDtcblxuLyoqIEFuIEhUVFAgc3RhdHVzIHRoYXQgaXMgYW4gZXJyb3IgKDRYWCBhbmQgNVhYKS4gKi9cbmV4cG9ydCB0eXBlIEVycm9yU3RhdHVzID0gQ2xpZW50RXJyb3JTdGF0dXMgfCBTZXJ2ZXJFcnJvclN0YXR1cztcblxuLyoqXG4gKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHByb3ZpZGVkIG51bWJlciBpcyBhIHZhbGlkIEhUVFAgc3RhdHVzIGNvZGUuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBpc1N0YXR1cyB9IGZyb20gXCJAc3RkL2h0dHAvc3RhdHVzXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnQoaXNTdGF0dXMoNDA0KSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RhdHVzIFRoZSBzdGF0dXMgdG8gYXNzZXJ0IGFnYWluc3QuXG4gKiBAcmV0dXJucyBXaGV0aGVyIG9yIG5vdCB0aGUgcHJvdmlkZWQgc3RhdHVzIGlzIGEgdmFsaWQgc3RhdHVzIGNvZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N0YXR1cyhzdGF0dXM6IG51bWJlcik6IHN0YXR1cyBpcyBTdGF0dXNDb2RlIHtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoU1RBVFVTX0NPREUpLmluY2x1ZGVzKHN0YXR1cyBhcyBTdGF0dXNDb2RlKTtcbn1cblxuLyoqXG4gKiBBIHR5cGUgZ3VhcmQgdGhhdCBkZXRlcm1pbmVzIGlmIHRoZSBzdGF0dXMgY29kZSBpcyBpbmZvcm1hdGlvbmFsLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgaXNJbmZvcm1hdGlvbmFsU3RhdHVzIH0gZnJvbSBcIkBzdGQvaHR0cC9zdGF0dXNcIjtcbiAqIGltcG9ydCB7IGFzc2VydCB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydChpc0luZm9ybWF0aW9uYWxTdGF0dXMoMTAwKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RhdHVzIFRoZSBzdGF0dXMgdG8gYXNzZXJ0IGFnYWluc3QuXG4gKiBAcmV0dXJucyBXaGV0aGVyIG9yIG5vdCB0aGUgcHJvdmlkZWQgc3RhdHVzIGlzIGFuIGluZm9ybWF0aW9uYWwgc3RhdHVzIGNvZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0luZm9ybWF0aW9uYWxTdGF0dXMoXG4gIHN0YXR1czogbnVtYmVyLFxuKTogc3RhdHVzIGlzIEluZm9ybWF0aW9uYWxTdGF0dXMge1xuICByZXR1cm4gaXNTdGF0dXMoc3RhdHVzKSAmJiBzdGF0dXMgPj0gMTAwICYmIHN0YXR1cyA8IDIwMDtcbn1cblxuLyoqXG4gKiBBIHR5cGUgZ3VhcmQgdGhhdCBkZXRlcm1pbmVzIGlmIHRoZSBzdGF0dXMgY29kZSBpcyBzdWNjZXNzZnVsLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgaXNTdWNjZXNzZnVsU3RhdHVzIH0gZnJvbSBcIkBzdGQvaHR0cC9zdGF0dXNcIjtcbiAqIGltcG9ydCB7IGFzc2VydCB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydChpc1N1Y2Nlc3NmdWxTdGF0dXMoMjAwKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RhdHVzIFRoZSBzdGF0dXMgdG8gYXNzZXJ0IGFnYWluc3QuXG4gKiBAcmV0dXJucyBXaGV0aGVyIG9yIG5vdCB0aGUgcHJvdmlkZWQgc3RhdHVzIGlzIGEgc3VjY2Vzc2Z1bCBzdGF0dXMgY29kZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3VjY2Vzc2Z1bFN0YXR1cyhcbiAgc3RhdHVzOiBudW1iZXIsXG4pOiBzdGF0dXMgaXMgU3VjY2Vzc2Z1bFN0YXR1cyB7XG4gIHJldHVybiBpc1N0YXR1cyhzdGF0dXMpICYmIHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwO1xufVxuXG4vKipcbiAqIEEgdHlwZSBndWFyZCB0aGF0IGRldGVybWluZXMgaWYgdGhlIHN0YXR1cyBjb2RlIGlzIGEgcmVkaXJlY3Rpb24uXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBpc1JlZGlyZWN0U3RhdHVzIH0gZnJvbSBcIkBzdGQvaHR0cC9zdGF0dXNcIjtcbiAqIGltcG9ydCB7IGFzc2VydCB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydChpc1JlZGlyZWN0U3RhdHVzKDMwMikpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHN0YXR1cyBUaGUgc3RhdHVzIHRvIGFzc2VydCBhZ2FpbnN0LlxuICogQHJldHVybnMgV2hldGhlciBvciBub3QgdGhlIHByb3ZpZGVkIHN0YXR1cyBpcyBhIHJlZGlyZWN0IHN0YXR1cyBjb2RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSZWRpcmVjdFN0YXR1cyhzdGF0dXM6IG51bWJlcik6IHN0YXR1cyBpcyBSZWRpcmVjdFN0YXR1cyB7XG4gIHJldHVybiBpc1N0YXR1cyhzdGF0dXMpICYmIHN0YXR1cyA+PSAzMDAgJiYgc3RhdHVzIDwgNDAwO1xufVxuXG4vKipcbiAqIEEgdHlwZSBndWFyZCB0aGF0IGRldGVybWluZXMgaWYgdGhlIHN0YXR1cyBjb2RlIGlzIGEgY2xpZW50IGVycm9yLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgaXNDbGllbnRFcnJvclN0YXR1cyB9IGZyb20gXCJAc3RkL2h0dHAvc3RhdHVzXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnQoaXNDbGllbnRFcnJvclN0YXR1cyg0MDQpKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzdGF0dXMgVGhlIHN0YXR1cyB0byBhc3NlcnQgYWdhaW5zdC5cbiAqIEByZXR1cm5zIFdoZXRoZXIgb3Igbm90IHRoZSBwcm92aWRlZCBzdGF0dXMgaXMgYSBjbGllbnQgZXJyb3Igc3RhdHVzIGNvZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NsaWVudEVycm9yU3RhdHVzKFxuICBzdGF0dXM6IG51bWJlcixcbik6IHN0YXR1cyBpcyBDbGllbnRFcnJvclN0YXR1cyB7XG4gIHJldHVybiBpc1N0YXR1cyhzdGF0dXMpICYmIHN0YXR1cyA+PSA0MDAgJiYgc3RhdHVzIDwgNTAwO1xufVxuXG4vKipcbiAqIEEgdHlwZSBndWFyZCB0aGF0IGRldGVybWluZXMgaWYgdGhlIHN0YXR1cyBjb2RlIGlzIGEgc2VydmVyIGVycm9yLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgaXNTZXJ2ZXJFcnJvclN0YXR1cyB9IGZyb20gXCJAc3RkL2h0dHAvc3RhdHVzXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnQoaXNTZXJ2ZXJFcnJvclN0YXR1cyg1MDIpKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzdGF0dXMgVGhlIHN0YXR1cyB0byBhc3NlcnQgYWdhaW5zdC5cbiAqIEByZXR1cm5zIFdoZXRoZXIgb3Igbm90IHRoZSBwcm92aWRlZCBzdGF0dXMgaXMgYSBzZXJ2ZXIgZXJyb3Igc3RhdHVzIGNvZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NlcnZlckVycm9yU3RhdHVzKFxuICBzdGF0dXM6IG51bWJlcixcbik6IHN0YXR1cyBpcyBTZXJ2ZXJFcnJvclN0YXR1cyB7XG4gIHJldHVybiBpc1N0YXR1cyhzdGF0dXMpICYmIHN0YXR1cyA+PSA1MDAgJiYgc3RhdHVzIDwgNjAwO1xufVxuXG4vKipcbiAqIEEgdHlwZSBndWFyZCB0aGF0IGRldGVybWluZXMgaWYgdGhlIHN0YXR1cyBjb2RlIGlzIGFuIGVycm9yLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgaXNFcnJvclN0YXR1cyB9IGZyb20gXCJAc3RkL2h0dHAvc3RhdHVzXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnQoaXNFcnJvclN0YXR1cyg1MDIpKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzdGF0dXMgVGhlIHN0YXR1cyB0byBhc3NlcnQgYWdhaW5zdC5cbiAqIEByZXR1cm5zIFdoZXRoZXIgb3Igbm90IHRoZSBwcm92aWRlZCBzdGF0dXMgaXMgYW4gZXJyb3Igc3RhdHVzIGNvZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Vycm9yU3RhdHVzKHN0YXR1czogbnVtYmVyKTogc3RhdHVzIGlzIEVycm9yU3RhdHVzIHtcbiAgcmV0dXJuIGlzU3RhdHVzKHN0YXR1cykgJiYgc3RhdHVz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 +// denoCacheMetadata=2161517556870421720,14842027141846010287
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/bb905bc2f8533ff77cd0689d547cd97ee453c168804747a23f3917c658337a63.js b/vendor/gen/https/jsr.io/bb905bc2f8533ff77cd0689d547cd97ee453c168804747a23f3917c658337a63.js new file mode 100644 index 0000000..8b956c0 --- /dev/null +++ b/vendor/gen/https/jsr.io/bb905bc2f8533ff77cd0689d547cd97ee453c168804747a23f3917c658337a63.js @@ -0,0 +1,86 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { _globToRegExp } from "../_common/glob_to_reg_exp.ts"; +const constants = { + sep: "(?:\\\\|/)+", + sepMaybe: "(?:\\\\|/)*", + seps: [ + "\\", + "/" + ], + globstar: "(?:[^\\\\/]*(?:\\\\|/|$)+)*", + wildcard: "[^\\\\/]*", + escapePrefix: "`" +}; +/** Convert a glob string to a regular expression. + * + * Tries to match bash glob expansion as closely as possible. + * + * Basic glob syntax: + * - `*` - Matches everything without leaving the path segment. + * - `?` - Matches any single character. + * - `{foo,bar}` - Matches `foo` or `bar`. + * - `[abcd]` - Matches `a`, `b`, `c` or `d`. + * - `[a-d]` - Matches `a`, `b`, `c` or `d`. + * - `[!abcd]` - Matches any single character besides `a`, `b`, `c` or `d`. + * - `[[:<class>:]]` - Matches any character belonging to `<class>`. + * - `[[:alnum:]]` - Matches any digit or letter. + * - `[[:digit:]abc]` - Matches any digit, `a`, `b` or `c`. + * - See https://facelessuser.github.io/wcmatch/glob/#posix-character-classes + * for a complete list of supported character classes. + * - `\` - Escapes the next character for an `os` other than `"windows"`. + * - \` - Escapes the next character for `os` set to `"windows"`. + * - `/` - Path separator. + * - `\` - Additional path separator only for `os` set to `"windows"`. + * + * Extended syntax: + * - Requires `{ extended: true }`. + * - `?(foo|bar)` - Matches 0 or 1 instance of `{foo,bar}`. + * - `@(foo|bar)` - Matches 1 instance of `{foo,bar}`. They behave the same. + * - `*(foo|bar)` - Matches _n_ instances of `{foo,bar}`. + * - `+(foo|bar)` - Matches _n > 0_ instances of `{foo,bar}`. + * - `!(foo|bar)` - Matches anything other than `{foo,bar}`. + * - See https://www.linuxjournal.com/content/bash-extended-globbing. + * + * Globstar syntax: + * - Requires `{ globstar: true }`. + * - `**` - Matches any number of any path segments. + * - Must comprise its entire path segment in the provided glob. + * - See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * + * Note the following properties: + * - The generated `RegExp` is anchored at both start and end. + * - Repeating and trailing separators are tolerated. Trailing separators in the + * provided glob have no meaning and are discarded. + * - Absolute globs will only match absolute paths, etc. + * - Empty globs will match nothing. + * - Any special glob syntax must be contained to one path segment. For example, + * `?(foo|bar/baz)` is invalid. The separator will take precedence and the + * first segment ends with an unclosed group. + * - If a path segment ends with unclosed groups or a dangling escape prefix, a + * parse error has occurred. Every character for that segment is taken + * literally in this event. + * + * Limitations: + * - A negative group like `!(foo|bar)` will wrongly be converted to a negative + * look-ahead followed by a wildcard. This means that `!(foo).js` will wrongly + * fail to match `foobar.js`, even though `foobar` is not `foo`. Effectively, + * `!(foo|bar)` is treated like `!(@(foo|bar)*)`. This will work correctly if + * the group occurs not nested at the end of the segment. + * + * @example Usage + * ```ts + * import { globToRegExp } from "@std/path/windows/glob-to-regexp"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(globToRegExp("*.js"), /^[^\\/]*\.js(?:\\|\/)*$/); + * ``` + * + * @param glob Glob string to convert. + * @param options Conversion options. + * @returns The regular expression equivalent to the glob. + */ export function globToRegExp(glob, options = {}) { + return _globToRegExp(constants, glob, options); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS93aW5kb3dzL2dsb2JfdG9fcmVnZXhwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7XG4gIF9nbG9iVG9SZWdFeHAsXG4gIHR5cGUgR2xvYkNvbnN0YW50cyxcbiAgdHlwZSBHbG9iT3B0aW9ucyxcbn0gZnJvbSBcIi4uL19jb21tb24vZ2xvYl90b19yZWdfZXhwLnRzXCI7XG5cbmNvbnN0IGNvbnN0YW50czogR2xvYkNvbnN0YW50cyA9IHtcbiAgc2VwOiBcIig/OlxcXFxcXFxcfC8pK1wiLFxuICBzZXBNYXliZTogXCIoPzpcXFxcXFxcXHwvKSpcIixcbiAgc2VwczogW1wiXFxcXFwiLCBcIi9cIl0sXG4gIGdsb2JzdGFyOiBcIig/OlteXFxcXFxcXFwvXSooPzpcXFxcXFxcXHwvfCQpKykqXCIsXG4gIHdpbGRjYXJkOiBcIlteXFxcXFxcXFwvXSpcIixcbiAgZXNjYXBlUHJlZml4OiBcImBcIixcbn07XG5cbi8qKiBDb252ZXJ0IGEgZ2xvYiBzdHJpbmcgdG8gYSByZWd1bGFyIGV4cHJlc3Npb24uXG4gKlxuICogVHJpZXMgdG8gbWF0Y2ggYmFzaCBnbG9iIGV4cGFuc2lvbiBhcyBjbG9zZWx5IGFzIHBvc3NpYmxlLlxuICpcbiAqIEJhc2ljIGdsb2Igc3ludGF4OlxuICogLSBgKmAgLSBNYXRjaGVzIGV2ZXJ5dGhpbmcgd2l0aG91dCBsZWF2aW5nIHRoZSBwYXRoIHNlZ21lbnQuXG4gKiAtIGA/YCAtIE1hdGNoZXMgYW55IHNpbmdsZSBjaGFyYWN0ZXIuXG4gKiAtIGB7Zm9vLGJhcn1gIC0gTWF0Y2hlcyBgZm9vYCBvciBgYmFyYC5cbiAqIC0gYFthYmNkXWAgLSBNYXRjaGVzIGBhYCwgYGJgLCBgY2Agb3IgYGRgLlxuICogLSBgW2EtZF1gIC0gTWF0Y2hlcyBgYWAsIGBiYCwgYGNgIG9yIGBkYC5cbiAqIC0gYFshYWJjZF1gIC0gTWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3RlciBiZXNpZGVzIGBhYCwgYGJgLCBgY2Agb3IgYGRgLlxuICogLSBgW1s6PGNsYXNzPjpdXWAgLSBNYXRjaGVzIGFueSBjaGFyYWN0ZXIgYmVsb25naW5nIHRvIGA8Y2xhc3M+YC5cbiAqICAgICAtIGBbWzphbG51bTpdXWAgLSBNYXRjaGVzIGFueSBkaWdpdCBvciBsZXR0ZXIuXG4gKiAgICAgLSBgW1s6ZGlnaXQ6XWFiY11gIC0gTWF0Y2hlcyBhbnkgZGlnaXQsIGBhYCwgYGJgIG9yIGBjYC5cbiAqICAgICAtIFNlZSBodHRwczovL2ZhY2VsZXNzdXNlci5naXRodWIuaW8vd2NtYXRjaC9nbG9iLyNwb3NpeC1jaGFyYWN0ZXItY2xhc3Nlc1xuICogICAgICAgZm9yIGEgY29tcGxldGUgbGlzdCBvZiBzdXBwb3J0ZWQgY2hhcmFjdGVyIGNsYXNzZXMuXG4gKiAtIGBcXGAgLSBFc2NhcGVzIHRoZSBuZXh0IGNoYXJhY3RlciBmb3IgYW4gYG9zYCBvdGhlciB0aGFuIGBcIndpbmRvd3NcImAuXG4gKiAtIFxcYCAtIEVzY2FwZXMgdGhlIG5leHQgY2hhcmFjdGVyIGZvciBgb3NgIHNldCB0byBgXCJ3aW5kb3dzXCJgLlxuICogLSBgL2AgLSBQYXRoIHNlcGFyYXRvci5cbiAqIC0gYFxcYCAtIEFkZGl0aW9uYWwgcGF0aCBzZXBhcmF0b3Igb25seSBmb3IgYG9zYCBzZXQgdG8gYFwid2luZG93c1wiYC5cbiAqXG4gKiBFeHRlbmRlZCBzeW50YXg6XG4gKiAtIFJlcXVpcmVzIGB7IGV4dGVuZGVkOiB0cnVlIH1gLlxuICogLSBgPyhmb298YmFyKWAgLSBNYXRjaGVzIDAgb3IgMSBpbnN0YW5jZSBvZiBge2ZvbyxiYXJ9YC5cbiAqIC0gYEAoZm9vfGJhcilgIC0gTWF0Y2hlcyAxIGluc3RhbmNlIG9mIGB7Zm9vLGJhcn1gLiBUaGV5IGJlaGF2ZSB0aGUgc2FtZS5cbiAqIC0gYCooZm9vfGJhcilgIC0gTWF0Y2hlcyBfbl8gaW5zdGFuY2VzIG9mIGB7Zm9vLGJhcn1gLlxuICogLSBgKyhmb298YmFyKWAgLSBNYXRjaGVzIF9uID4gMF8gaW5zdGFuY2VzIG9mIGB7Zm9vLGJhcn1gLlxuICogLSBgIShmb298YmFyKWAgLSBNYXRjaGVzIGFueXRoaW5nIG90aGVyIHRoYW4gYHtmb28sYmFyfWAuXG4gKiAtIFNlZSBodHRwczovL3d3dy5saW51eGpvdXJuYWwuY29tL2NvbnRlbnQvYmFzaC1leHRlbmRlZC1nbG9iYmluZy5cbiAqXG4gKiBHbG9ic3RhciBzeW50YXg6XG4gKiAtIFJlcXVpcmVzIGB7IGdsb2JzdGFyOiB0cnVlIH1gLlxuICogLSBgKipgIC0gTWF0Y2hlcyBhbnkgbnVtYmVyIG9mIGFueSBwYXRoIHNlZ21lbnRzLlxuICogICAgIC0gTXVzdCBjb21wcmlzZSBpdHMgZW50aXJlIHBhdGggc2VnbWVudCBpbiB0aGUgcHJvdmlkZWQgZ2xvYi5cbiAqIC0gU2VlIGh0dHBzOi8vd3d3LmxpbnV4am91cm5hbC5jb20vY29udGVudC9nbG9ic3Rhci1uZXctYmFzaC1nbG9iYmluZy1vcHRpb24uXG4gKlxuICogTm90ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKiAtIFRoZSBnZW5lcmF0ZWQgYFJlZ0V4cGAgaXMgYW5jaG9yZWQgYXQgYm90aCBzdGFydCBhbmQgZW5kLlxuICogLSBSZXBlYXRpbmcgYW5kIHRyYWlsaW5nIHNlcGFyYXRvcnMgYXJlIHRvbGVyYXRlZC4gVHJhaWxpbmcgc2VwYXJhdG9ycyBpbiB0aGVcbiAqICAgcHJvdmlkZWQgZ2xvYiBoYXZlIG5vIG1lYW5pbmcgYW5kIGFyZSBkaXNjYXJkZWQuXG4gKiAtIEFic29sdXRlIGdsb2JzIHdpbGwgb25seSBtYXRjaCBhYnNvbHV0ZSBwYXRocywgZXRjLlxuICogLSBFbXB0eSBnbG9icyB3aWxsIG1hdGNoIG5vdGhpbmcuXG4gKiAtIEFueSBzcGVjaWFsIGdsb2Igc3ludGF4IG11c3QgYmUgY29udGFpbmVkIHRvIG9uZSBwYXRoIHNlZ21lbnQuIEZvciBleGFtcGxlLFxuICogICBgPyhmb298YmFyL2JheilgIGlzIGludmFsaWQuIFRoZSBzZXBhcmF0b3Igd2lsbCB0YWtlIHByZWNlZGVuY2UgYW5kIHRoZVxuICogICBmaXJzdCBzZWdtZW50IGVuZHMgd2l0aCBhbiB1bmNsb3NlZCBncm91cC5cbiAqIC0gSWYgYSBwYXRoIHNlZ21lbnQgZW5kcyB3aXRoIHVuY2xvc2VkIGdyb3VwcyBvciBhIGRhbmdsaW5nIGVzY2FwZSBwcmVmaXgsIGFcbiAqICAgcGFyc2UgZXJyb3IgaGFzIG9jY3VycmVkLiBFdmVyeSBjaGFyYWN0ZXIgZm9yIHRoYXQgc2VnbWVudCBpcyB0YWtlblxuICogICBsaXRlcmFsbHkgaW4gdGhpcyBldmVudC5cbiAqXG4gKiBMaW1pdGF0aW9uczpcbiAqIC0gQSBuZWdhdGl2ZSBncm91cCBsaWtlIGAhKGZvb3xiYXIpYCB3aWxsIHdyb25nbHkgYmUgY29udmVydGVkIHRvIGEgbmVnYXRpdmVcbiAqICAgbG9vay1haGVhZCBmb2xsb3dlZCBieSBhIHdpbGRjYXJkLiBUaGlzIG1lYW5zIHRoYXQgYCEoZm9vKS5qc2Agd2lsbCB3cm9uZ2x5XG4gKiAgIGZhaWwgdG8gbWF0Y2ggYGZvb2Jhci5qc2AsIGV2ZW4gdGhvdWdoIGBmb29iYXJgIGlzIG5vdCBgZm9vYC4gRWZmZWN0aXZlbHksXG4gKiAgIGAhKGZvb3xiYXIpYCBpcyB0cmVhdGVkIGxpa2UgYCEoQChmb298YmFyKSopYC4gVGhpcyB3aWxsIHdvcmsgY29ycmVjdGx5IGlmXG4gKiAgIHRoZSBncm91cCBvY2N1cnMgbm90IG5lc3RlZCBhdCB0aGUgZW5kIG9mIHRoZSBzZWdtZW50LlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZ2xvYlRvUmVnRXhwIH0gZnJvbSBcIkBzdGQvcGF0aC93aW5kb3dzL2dsb2ItdG8tcmVnZXhwXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoZ2xvYlRvUmVnRXhwKFwiKi5qc1wiKSwgL15bXlxcXFwvXSpcXC5qcyg/OlxcXFx8XFwvKSokLyk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gZ2xvYiBHbG9iIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHBhcmFtIG9wdGlvbnMgQ29udmVyc2lvbiBvcHRpb25zLlxuICogQHJldHVybnMgVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBlcXVpdmFsZW50IHRvIHRoZSBnbG9iLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2xvYlRvUmVnRXhwKFxuICBnbG9iOiBzdHJpbmcsXG4gIG9wdGlvbnM6IEdsb2JPcHRpb25zID0ge30sXG4pOiBSZWdFeHAge1xuICByZXR1cm4gX2dsb2JUb1JlZ0V4cChjb25zdGFudHMsIGdsb2IsIG9wdGlvbnMpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckMsU0FDRSxhQUFhLFFBR1IsZ0NBQWdDO0FBRXZDLE1BQU0sWUFBMkI7RUFDL0IsS0FBSztFQUNMLFVBQVU7RUFDVixNQUFNO0lBQUM7SUFBTTtHQUFJO0VBQ2pCLFVBQVU7RUFDVixVQUFVO0VBQ1YsY0FBYztBQUNoQjtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBbUVDLEdBQ0QsT0FBTyxTQUFTLGFBQ2QsSUFBWSxFQUNaLFVBQXVCLENBQUMsQ0FBQztFQUV6QixPQUFPLGNBQWMsV0FBVyxNQUFNO0FBQ3hDIn0= +// denoCacheMetadata=5914738211100328384,2118686392906479722
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/bc4fb8b9edfcac38bb3444c2744233b88b823fef1cd9e6691d1e40e7cc02beec.js b/vendor/gen/https/jsr.io/bc4fb8b9edfcac38bb3444c2744233b88b823fef1cd9e6691d1e40e7cc02beec.js new file mode 100644 index 0000000..f02aade --- /dev/null +++ b/vendor/gen/https/jsr.io/bc4fb8b9edfcac38bb3444c2744233b88b823fef1cd9e6691d1e40e7cc02beec.js @@ -0,0 +1,331 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * Converts a JSON with Comments (JSONC) string into an object. + * + * @example Usage + * ```ts + * import { parse } from "@std/jsonc"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(parse('{"foo": "bar"}'), { foo: "bar" }); + * assertEquals(parse('{"foo": "bar", }'), { foo: "bar" }); + * assertEquals(parse('{"foo": "bar", } /* comment *\/'), { foo: "bar" }); + * ``` + * + * @throws {SyntaxError} If the JSONC string is invalid. + * @param text A valid JSONC string. + * @returns The parsed JsonValue from the JSONC string. + */ export function parse(text) { + if (new.target) { + throw new TypeError("Cannot create an instance: parse is not a constructor"); + } + return new JsoncParser(text).parse(); +} +// First tokenize and then parse the token. +class JsoncParser { + #whitespace = new Set(" \t\r\n"); + #numberEndToken = new Set([ + ..."[]{}:,/", + ...this.#whitespace + ]); + #text; + #length; + #tokenized; + constructor(text){ + this.#text = `${text}`; + this.#length = this.#text.length; + this.#tokenized = this.#tokenize(); + } + parse() { + const token = this.#getNext(); + const res = this.#parseJsonValue(token); + // make sure all characters have been read + const { done, value } = this.#tokenized.next(); + if (!done) { + throw new SyntaxError(buildErrorMessage(value)); + } + return res; + } + /** Read the next token. If the token is read to the end, it throws a SyntaxError. */ #getNext() { + const { done, value } = this.#tokenized.next(); + if (done) { + throw new SyntaxError("Cannot parse JSONC: unexpected end of JSONC input"); + } + return value; + } + /** Split the JSONC string into token units. Whitespace and comments are skipped. */ *#tokenize() { + for(let i = 0; i < this.#length; i++){ + // skip whitespace + if (this.#whitespace.has(this.#text[i])) { + continue; + } + // skip multi line comment (`/*...*/`) + if (this.#text[i] === "/" && this.#text[i + 1] === "*") { + i += 2; + let hasEndOfComment = false; + for(; i < this.#length; i++){ + if (this.#text[i] === "*" && this.#text[i + 1] === "/") { + hasEndOfComment = true; + break; + } + } + if (!hasEndOfComment) { + throw new SyntaxError("Cannot parse JSONC: unexpected end of JSONC input"); + } + i++; + continue; + } + // skip single line comment (`//...`) + if (this.#text[i] === "/" && this.#text[i + 1] === "/") { + i += 2; + for(; i < this.#length; i++){ + if (this.#text[i] === "\n" || this.#text[i] === "\r") { + break; + } + } + continue; + } + switch(this.#text[i]){ + case "{": + yield { + type: "BeginObject", + position: i + }; + break; + case "}": + yield { + type: "EndObject", + position: i + }; + break; + case "[": + yield { + type: "BeginArray", + position: i + }; + break; + case "]": + yield { + type: "EndArray", + position: i + }; + break; + case ":": + yield { + type: "NameSeparator", + position: i + }; + break; + case ",": + yield { + type: "ValueSeparator", + position: i + }; + break; + case '"': + { + const startIndex = i; + // Need to handle consecutive backslashes correctly + // '"\\""' => '"' + // '"\\\\"' => '\\' + // '"\\\\\\""' => '\\"' + // '"\\\\\\\\"' => '\\\\' + let shouldEscapeNext = false; + i++; + for(; i < this.#length; i++){ + if (this.#text[i] === '"' && !shouldEscapeNext) { + break; + } + shouldEscapeNext = this.#text[i] === "\\" && !shouldEscapeNext; + } + yield { + type: "String", + sourceText: this.#text.substring(startIndex, i + 1), + position: startIndex + }; + break; + } + default: + { + const startIndex = i; + for(; i < this.#length; i++){ + if (this.#numberEndToken.has(this.#text[i])) { + break; + } + } + i--; + yield { + type: "NullOrTrueOrFalseOrNumber", + sourceText: this.#text.substring(startIndex, i + 1), + position: startIndex + }; + } + } + } + } + #parseJsonValue(value) { + switch(value.type){ + case "BeginObject": + return this.#parseObject(); + case "BeginArray": + return this.#parseArray(); + case "NullOrTrueOrFalseOrNumber": + return this.#parseNullOrTrueOrFalseOrNumber(value); + case "String": + return this.#parseString(value); + default: + throw new SyntaxError(buildErrorMessage(value)); + } + } + #parseObject() { + const target = {}; + // ┌─token1 + // { } + // ┌─────────────token1 + // │ ┌─────────token2 + // │ │ ┌─────token3 + // │ │ │ ┌─token4 + // { "key" : value } + // ┌───────────────token1 + // │ ┌───────────token2 + // │ │ ┌───────token3 + // │ │ │ ┌───token4 + // │ │ │ │ ┌─token1 + // { "key" : value , } + // ┌─────────────────────────────token1 + // │ ┌─────────────────────────token2 + // │ │ ┌─────────────────────token3 + // │ │ │ ┌─────────────────token4 + // │ │ │ │ ┌─────────────token1 + // │ │ │ │ │ ┌─────────token2 + // │ │ │ │ │ │ ┌─────token3 + // │ │ │ │ │ │ │ ┌─token4 + // { "key" : value , "key" : value } + while(true){ + const token1 = this.#getNext(); + if (token1.type === "EndObject") { + return target; + } + if (token1.type !== "String") { + throw new SyntaxError(buildErrorMessage(token1)); + } + const key = this.#parseString(token1); + const token2 = this.#getNext(); + if (token2.type !== "NameSeparator") { + throw new SyntaxError(buildErrorMessage(token2)); + } + const token3 = this.#getNext(); + Object.defineProperty(target, key, { + value: this.#parseJsonValue(token3), + writable: true, + enumerable: true, + configurable: true + }); + const token4 = this.#getNext(); + if (token4.type === "EndObject") { + return target; + } + if (token4.type !== "ValueSeparator") { + throw new SyntaxError(buildErrorMessage(token4)); + } + } + } + #parseArray() { + const target = []; + // ┌─token1 + // [ ] + // ┌─────────────token1 + // │ ┌─────────token2 + // [ value ] + // ┌───────token1 + // │ ┌───token2 + // │ │ ┌─token1 + // [ value , ] + // ┌─────────────token1 + // │ ┌─────────token2 + // │ │ ┌─────token1 + // │ │ │ ┌─token2 + // [ value , value ] + while(true){ + const token1 = this.#getNext(); + if (token1.type === "EndArray") { + return target; + } + target.push(this.#parseJsonValue(token1)); + const token2 = this.#getNext(); + if (token2.type === "EndArray") { + return target; + } + if (token2.type !== "ValueSeparator") { + throw new SyntaxError(buildErrorMessage(token2)); + } + } + } + #parseString(value) { + let parsed; + try { + // Use JSON.parse to handle `\u0000` etc. correctly. + parsed = JSON.parse(value.sourceText); + } catch { + throw new SyntaxError(buildErrorMessage(value)); + } + if (typeof parsed !== "string") { + throw new TypeError(`Parsed value is not a string: ${parsed}`); + } + return parsed; + } + #parseNullOrTrueOrFalseOrNumber(value) { + if (value.sourceText === "null") { + return null; + } + if (value.sourceText === "true") { + return true; + } + if (value.sourceText === "false") { + return false; + } + let parsed; + try { + // Use JSON.parse to handle `+100`, `Infinity` etc. correctly. + parsed = JSON.parse(value.sourceText); + } catch { + throw new SyntaxError(buildErrorMessage(value)); + } + if (typeof parsed !== "number") { + throw new TypeError(`Parsed value is not a number: ${parsed}`); + } + return parsed; + } +} +function buildErrorMessage({ type, sourceText, position }) { + let token = ""; + switch(type){ + case "BeginObject": + token = "{"; + break; + case "EndObject": + token = "}"; + break; + case "BeginArray": + token = "["; + break; + case "EndArray": + token = "]"; + break; + case "NameSeparator": + token = ":"; + break; + case "ValueSeparator": + token = ","; + break; + case "NullOrTrueOrFalseOrNumber": + case "String": + // Truncate the string so that it is within 30 lengths. + token = 30 < sourceText.length ? `${sourceText.slice(0, 30)}...` : sourceText; + break; + } + return `Cannot parse JSONC: unexpected token "${token}" in JSONC at position ${position}`; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvanNvbmMvMS4wLjIvcGFyc2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHR5cGUgeyBKc29uVmFsdWUgfSBmcm9tIFwianNyOkBzdGQvanNvbkBeMS4wLjIvdHlwZXNcIjtcbmV4cG9ydCB0eXBlIHsgSnNvblZhbHVlIH07XG5cbi8qKlxuICogQ29udmVydHMgYSBKU09OIHdpdGggQ29tbWVudHMgKEpTT05DKSBzdHJpbmcgaW50byBhbiBvYmplY3QuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBwYXJzZSB9IGZyb20gXCJAc3RkL2pzb25jXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHMocGFyc2UoJ3tcImZvb1wiOiBcImJhclwifScpLCB7IGZvbzogXCJiYXJcIiB9KTtcbiAqIGFzc2VydEVxdWFscyhwYXJzZSgne1wiZm9vXCI6IFwiYmFyXCIsIH0nKSwgeyBmb286IFwiYmFyXCIgfSk7XG4gKiBhc3NlcnRFcXVhbHMocGFyc2UoJ3tcImZvb1wiOiBcImJhclwiLCB9IC8qIGNvbW1lbnQgKlxcLycpLCB7IGZvbzogXCJiYXJcIiB9KTtcbiAqIGBgYFxuICpcbiAqIEB0aHJvd3Mge1N5bnRheEVycm9yfSBJZiB0aGUgSlNPTkMgc3RyaW5nIGlzIGludmFsaWQuXG4gKiBAcGFyYW0gdGV4dCBBIHZhbGlkIEpTT05DIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgSnNvblZhbHVlIGZyb20gdGhlIEpTT05DIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKHRleHQ6IHN0cmluZyk6IEpzb25WYWx1ZSB7XG4gIGlmIChuZXcudGFyZ2V0KSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIFwiQ2Fubm90IGNyZWF0ZSBhbiBpbnN0YW5jZTogcGFyc2UgaXMgbm90IGEgY29uc3RydWN0b3JcIixcbiAgICApO1xuICB9XG4gIHJldHVybiBuZXcgSnNvbmNQYXJzZXIodGV4dCkucGFyc2UoKTtcbn1cblxudHlwZSBUb2tlblR5cGUgPVxuICB8IFwiQmVnaW5PYmplY3RcIlxuICB8IFwiRW5kT2JqZWN0XCJcbiAgfCBcIkJlZ2luQXJyYXlcIlxuICB8IFwiRW5kQXJyYXlcIlxuICB8IFwiTmFtZVNlcGFyYXRvclwiXG4gIHwgXCJWYWx1ZVNlcGFyYXRvclwiXG4gIHwgXCJOdWxsT3JUcnVlT3JGYWxzZU9yTnVtYmVyXCJcbiAgfCBcIlN0cmluZ1wiO1xuXG50eXBlIFRva2VuID0ge1xuICB0eXBlOiBFeGNsdWRlPFxuICAgIFRva2VuVHlwZSxcbiAgICBcIlN0cmluZ1wiIHwgXCJOdWxsT3JUcnVlT3JGYWxzZU9yTnVtYmVyXCJcbiAgPjtcbiAgc291cmNlVGV4dD86IHVuZGVmaW5lZDtcbiAgcG9zaXRpb246IG51bWJlcjtcbn0gfCB7XG4gIHR5cGU6IFwiU3RyaW5nXCI7XG4gIHNvdXJjZVRleHQ6IHN0cmluZztcbiAgcG9zaXRpb246IG51bWJlcjtcbn0gfCB7XG4gIHR5cGU6IFwiTnVsbE9yVHJ1ZU9yRmFsc2VPck51bWJlclwiO1xuICBzb3VyY2VUZXh0OiBzdHJpbmc7XG4gIHBvc2l0aW9uOiBudW1iZXI7XG59O1xuXG4vLyBGaXJzdCB0b2tlbml6ZSBhbmQgdGhlbiBwYXJzZSB0aGUgdG9rZW4uXG5jbGFzcyBKc29uY1BhcnNlciB7XG4gIHJlYWRvbmx5ICN3aGl0ZXNwYWNlID0gbmV3IFNldChcIiBcXHRcXHJcXG5cIik7XG4gIHJlYWRvbmx5ICNudW1iZXJFbmRUb2tlbiA9IG5ldyBTZXQoWy4uLlwiW117fTosL1wiLCAuLi50aGlzLiN3aGl0ZXNwYWNlXSk7XG4gICN0ZXh0OiBzdHJpbmc7XG4gICNsZW5ndGg6IG51bWJlcjtcbiAgI3Rva2VuaXplZDogR2VuZXJhdG9yPFRva2VuLCB2b2lkPjtcbiAgY29uc3RydWN0b3IodGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy4jdGV4dCA9IGAke3RleHR9YDtcbiAgICB0aGlzLiNsZW5ndGggPSB0aGlzLiN0ZXh0Lmxlbmd0aDtcbiAgICB0aGlzLiN0b2tlbml6ZWQgPSB0aGlzLiN0b2tlbml6ZSgpO1xuICB9XG4gIHBhcnNlKCk6IEpzb25WYWx1ZSB7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLiNnZXROZXh0KCk7XG4gICAgY29uc3QgcmVzID0gdGhpcy4jcGFyc2VKc29uVmFsdWUodG9rZW4pO1xuXG4gICAgLy8gbWFrZSBzdXJlIGFsbCBjaGFyYWN0ZXJzIGhhdmUgYmVlbiByZWFkXG4gICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gdGhpcy4jdG9rZW5pemVkLm5leHQoKTtcbiAgICBpZiAoIWRvbmUpIHtcbiAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihidWlsZEVycm9yTWVzc2FnZSh2YWx1ZSkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH1cbiAgLyoqIFJlYWQgdGhlIG5leHQgdG9rZW4uIElmIHRoZSB0b2tlbiBpcyByZWFkIHRvIHRoZSBlbmQsIGl0IHRocm93cyBhIFN5bnRheEVycm9yLiAqL1xuICAjZ2V0TmV4dCgpOiBUb2tlbiB7XG4gICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gdGhpcy4jdG9rZW5pemVkLm5leHQoKTtcbiAgICBpZiAoZG9uZSkge1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFxuICAgICAgICBcIkNhbm5vdCBwYXJzZSBKU09OQzogdW5leHBlY3RlZCBlbmQgb2YgSlNPTkMgaW5wdXRcIixcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICAvKiogU3BsaXQgdGhlIEpTT05DIHN0cmluZyBpbnRvIHRva2VuIHVuaXRzLiBXaGl0ZXNwYWNlIGFuZCBjb21tZW50cyBhcmUgc2tpcHBlZC4gKi9cbiAgKiN0b2tlbml6ZSgpOiBHZW5lcmF0b3I8VG9rZW4sIHZvaWQ+IHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuI2xlbmd0aDsgaSsrKSB7XG4gICAgICAvLyBza2lwIHdoaXRlc3BhY2VcbiAgICAgIGlmICh0aGlzLiN3aGl0ZXNwYWNlLmhhcyh0aGlzLiN0ZXh0W2ldISkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIHNraXAgbXVsdGkgbGluZSBjb21tZW50IChgLyouLi4qL2ApXG4gICAgICBpZiAodGhpcy4jdGV4dFtpXSA9PT0gXCIvXCIgJiYgdGhpcy4jdGV4dFtpICsgMV0gPT09IFwiKlwiKSB7XG4gICAgICAgIGkgKz0gMjtcbiAgICAgICAgbGV0IGhhc0VuZE9mQ29tbWVudCA9IGZhbHNlO1xuICAgICAgICBmb3IgKDsgaSA8IHRoaXMuI2xlbmd0aDsgaSsrKSB7IC8vIHJlYWQgdW50aWwgZmluZCBgKi9gXG4gICAgICAgICAgaWYgKHRoaXMuI3RleHRbaV0gPT09IFwiKlwiICYmIHRoaXMuI3RleHRbaSArIDFdID09PSBcIi9cIikge1xuICAgICAgICAgICAgaGFzRW5kT2ZDb21tZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWhhc0VuZE9mQ29tbWVudCkge1xuICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcbiAgICAgICAgICAgIFwiQ2Fubm90IHBhcnNlIEpTT05DOiB1bmV4cGVjdGVkIGVuZCBvZiBKU09OQyBpbnB1dFwiLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaSsrO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gc2tpcCBzaW5nbGUgbGluZSBjb21tZW50IChgLy8uLi5gKVxuICAgICAgaWYgKHRoaXMuI3RleHRbaV0gPT09IFwiL1wiICYmIHRoaXMuI3RleHRbaSArIDFdID09PSBcIi9cIikge1xuICAgICAgICBpICs9IDI7XG4gICAgICAgIGZvciAoOyBpIDwgdGhpcy4jbGVuZ3RoOyBpKyspIHsgLy8gcmVhZCB1bnRpbCBmaW5kIGBcXG5gIG9yIGBcXHJgXG4gICAgICAgICAgaWYgKHRoaXMuI3RleHRbaV0gPT09IFwiXFxuXCIgfHwgdGhpcy4jdGV4dFtpXSA9PT0gXCJcXHJcIikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKHRoaXMuI3RleHRbaV0pIHtcbiAgICAgICAgY2FzZSBcIntcIjpcbiAgICAgICAgICB5aWVsZCB7IHR5cGU6IFwiQmVnaW5PYmplY3RcIiwgcG9zaXRpb246IGkgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIn1cIjpcbiAgICAgICAgICB5aWVsZCB7IHR5cGU6IFwiRW5kT2JqZWN0XCIsIHBvc2l0aW9uOiBpIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJbXCI6XG4gICAgICAgICAgeWllbGQgeyB0eXBlOiBcIkJlZ2luQXJyYXlcIiwgcG9zaXRpb246IGkgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIl1cIjpcbiAgICAgICAgICB5aWVsZCB7IHR5cGU6IFwiRW5kQXJyYXlcIiwgcG9zaXRpb246IGkgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIjpcIjpcbiAgICAgICAgICB5aWVsZCB7IHR5cGU6IFwiTmFtZVNlcGFyYXRvclwiLCBwb3NpdGlvbjogaSB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiLFwiOlxuICAgICAgICAgIHlpZWxkIHsgdHlwZTogXCJWYWx1ZVNlcGFyYXRvclwiLCBwb3NpdGlvbjogaSB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdcIic6IHsgLy8gcGFyc2Ugc3RyaW5nIHRva2VuXG4gICAgICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IGk7XG4gICAgICAgICAgLy8gTmVlZCB0byBoYW5kbGUgY29uc2VjdXRpdmUgYmFja3NsYXNoZXMgY29ycmVjdGx5XG4gICAgICAgICAgLy8gJ1wiXFxcXFwiXCInID0+ICdcIidcbiAgICAgICAgICAvLyAnXCJcXFxcXFxcXFwiJyA9PiAnXFxcXCdcbiAgICAgICAgICAvLyAnXCJcXFxcXFxcXFxcXFxcIlwiJyA9PiAnXFxcXFwiJ1xuICAgICAgICAgIC8vICdcIlxcXFxcXFxcXFxcXFxcXFxcIicgPT4gJ1xcXFxcXFxcJ1xuICAgICAgICAgIGxldCBzaG91bGRFc2NhcGVOZXh0ID0gZmFsc2U7XG4gICAgICAgICAgaSsrO1xuICAgICAgICAgIGZvciAoOyBpIDwgdGhpcy4jbGVuZ3RoOyBpKyspIHsgLy8gcmVhZCB1bnRpbCBmaW5kIGBcImBcbiAgICAgICAgICAgIGlmICh0aGlzLiN0ZXh0W2ldID09PSAnXCInICYmICFzaG91bGRFc2NhcGVOZXh0KSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2hvdWxkRXNjYXBlTmV4dCA9IHRoaXMuI3RleHRbaV0gPT09IFwiXFxcXFwiICYmICFzaG91bGRFc2NhcGVOZXh0O1xuICAgICAgICAgIH1cbiAgICAgICAgICB5aWVsZCB7XG4gICAgICAgICAgICB0eXBlOiBcIlN0cmluZ1wiLFxuICAgICAgICAgICAgc291cmNlVGV4dDogdGhpcy4jdGV4dC5zdWJzdHJpbmcoc3RhcnRJbmRleCwgaSArIDEpLFxuICAgICAgICAgICAgcG9zaXRpb246IHN0YXJ0SW5kZXgsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7IC8vIHBhcnNlIG51bGwsIHRydWUsIGZhbHNlIG9yIG51bWJlciB0b2tlblxuICAgICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBpO1xuICAgICAgICAgIGZvciAoOyBpIDwgdGhpcy4jbGVuZ3RoOyBpKyspIHsgLy8gcmVhZCB1bnRpbCBmaW5kIG51bWJlckVuZFRva2VuXG4gICAgICAgICAgICBpZiAodGhpcy4jbnVtYmVyRW5kVG9rZW4uaGFzKHRoaXMuI3RleHRbaV0hKSkge1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaS0tO1xuICAgICAgICAgIHlpZWxkIHtcbiAgICAgICAgICAgIHR5cGU6IFwiTnVsbE9yVHJ1ZU9yRmFsc2VPck51bWJlclwiLFxuICAgICAgICAgICAgc291cmNlVGV4dDogdGhpcy4jdGV4dC5zdWJzdHJpbmcoc3RhcnRJbmRleCwgaSArIDEpLFxuICAgICAgICAgICAgcG9zaXRpb246IHN0YXJ0SW5kZXgsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICNwYXJzZUpzb25WYWx1ZSh2YWx1ZTogVG9rZW4pOiBKc29uVmFsdWUge1xuICAgIHN3aXRjaCAodmFsdWUudHlwZSkge1xuICAgICAgY2FzZSBcIkJlZ2luT2JqZWN0XCI6XG4gICAgICAgIHJldHVybiB0aGlzLiNwYXJzZU9iamVjdCgpO1xuICAgICAgY2FzZSBcIkJlZ2luQXJyYXlcIjpcbiAgICAgICAgcmV0dXJuIHRoaXMuI3BhcnNlQXJyYXkoKTtcbiAgICAgIGNhc2UgXCJOdWxsT3JUcnVlT3JGYWxzZU9yTnVtYmVyXCI6XG4gICAgICAgIHJldHVybiB0aGlzLiNwYXJzZU51bGxPclRydWVPckZhbHNlT3JOdW1iZXIodmFsdWUpO1xuICAgICAgY2FzZSBcIlN0cmluZ1wiOlxuICAgICAgICByZXR1cm4gdGhpcy4jcGFyc2VTdHJpbmcodmFsdWUpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGJ1aWxkRXJyb3JNZXNzYWdlKHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgI3BhcnNlT2JqZWN0KCk6IHsgW2tleTogc3RyaW5nXTogSnNvblZhbHVlIHwgdW5kZWZpbmVkIH0ge1xuICAgIGNvbnN0IHRhcmdldDogeyBba2V5OiBzdHJpbmddOiBKc29uVmFsdWUgfCB1bmRlZmluZWQgfSA9IHt9O1xuICAgIC8vICAg4pSM4pSAdG9rZW4xXG4gICAgLy8geyB9XG4gICAgLy8gICAgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIB0b2tlbjFcbiAgICAvLyAgICAgIOKUgiAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgHRva2VuMlxuICAgIC8vICAgICAg4pSCICAg4pSCICAg4pSM4pSA4pSA4pSA4pSA4pSAdG9rZW4zXG4gICAgLy8gICAgICDilIIgICDilIIgICDilIIgICDilIzilIB0b2tlbjRcbiAgICAvLyAgeyBcImtleVwiIDogdmFsdWUgfVxuICAgIC8vICAgICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAdG9rZW4xXG4gICAgLy8gICAgICDilIIgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIB0b2tlbjJcbiAgICAvLyAgICAgIOKUgiAgIOKUgiAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgHRva2VuM1xuICAgIC8vICAgICAg4pSCICAg4pSCICAg4pSCICAg4pSM4pSA4pSA4pSAdG9rZW40XG4gICAgLy8gICAgICDilIIgICDilIIgICDilIIgICDilIIg4pSM4pSAdG9rZW4xXG4gICAgLy8gIHsgXCJrZXlcIiA6IHZhbHVlICwgfVxuICAgIC8vICAgICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAdG9rZW4xXG4gICAgLy8gICAgICDilIIgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIB0b2tlbjJcbiAgICAvLyAgICAgIOKUgiAgIOKUgiAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgHRva2VuM1xuICAgIC8vICAgICAg4pSCICAg4pSCICAg4pSCICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAdG9rZW40XG4gICAgLy8gICAgICDilIIgICDilIIgICDilIIgICDilIIgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIB0b2tlbjFcbiAgICAvLyAgICAgIOKUgiAgIOKUgiAgIOKUgiAgIOKUgiAgIOKUgiAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgHRva2VuMlxuICAgIC8vICAgICAg4pSCICAg4pSCICAg4pSCICAg4pSCICAg4pSCICAg4pSCICAg4pSM4pSA4pSA4pSA4pSA4pSAdG9rZW4zXG4gICAgLy8gICAgICDilIIgICDilIIgICDilIIgICDilIIgICDilIIgICDilIIgICDilIIgICDilIzilIB0b2tlbjRcbiAgICAvLyAgeyBcImtleVwiIDogdmFsdWUgLCBcImtleVwiIDogdmFsdWUgfVxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBjb25zdCB0b2tlbjEgPSB0aGlzLiNnZXROZXh0KCk7XG4gICAgICBpZiAodG9rZW4xLnR5cGUgPT09IFwiRW5kT2JqZWN0XCIpIHtcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICAgIH1cbiAgICAgIGlmICh0b2tlbjEudHlwZSAhPT0gXCJTdHJpbmdcIikge1xuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYnVpbGRFcnJvck1lc3NhZ2UodG9rZW4xKSk7XG4gICAgICB9XG4gICAgICBjb25zdCBrZXkgPSB0aGlzLiNwYXJzZVN0cmluZyh0b2tlbjEpO1xuXG4gICAgICBjb25zdCB0b2tlbjIgPSB0aGlzLiNnZXROZXh0KCk7XG4gICAgICBpZiAodG9rZW4yLnR5cGUgIT09IFwiTmFtZVNlcGFyYXRvclwiKSB7XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihidWlsZEVycm9yTWVzc2FnZSh0b2tlbjIpKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdG9rZW4zID0gdGhpcy4jZ2V0TmV4dCgpO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICAgIHZhbHVlOiB0aGlzLiNwYXJzZUpzb25WYWx1ZSh0b2tlbjMpLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHRva2VuNCA9IHRoaXMuI2dldE5leHQoKTtcbiAgICAgIGlmICh0b2tlbjQudHlwZSA9PT0gXCJFbmRPYmplY3RcIikge1xuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgfVxuICAgICAgaWYgKHRva2VuNC50eXBlICE9PSBcIlZhbHVlU2VwYXJhdG9yXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGJ1aWxkRXJyb3JNZXNzYWdlKHRva2VuNCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICNwYXJzZUFycmF5KCk6IEpzb25WYWx1ZVtdIHtcbiAgICBjb25zdCB0YXJnZXQ6IEpzb25WYWx1ZVtdID0gW107XG4gICAgLy8gICDilIzilIB0b2tlbjFcbiAgICAvLyBbIF1cbiAgICAvLyAgICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgHRva2VuMVxuICAgIC8vICAgICAg4pSCICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAdG9rZW4yXG4gICAgLy8gIFsgdmFsdWUgXVxuICAgIC8vICAgICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSAdG9rZW4xXG4gICAgLy8gICAgICDilIIgICDilIzilIDilIDilIB0b2tlbjJcbiAgICAvLyAgICAgIOKUgiAgIOKUgiDilIzilIB0b2tlbjFcbiAgICAvLyAgWyB2YWx1ZSAsIF1cbiAgICAvLyAgICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgHRva2VuMVxuICAgIC8vICAgICAg4pSCICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAdG9rZW4yXG4gICAgLy8gICAgICDilIIgICDilIIgICDilIzilIDilIDilIDilIDilIB0b2tlbjFcbiAgICAvLyAgICAgIOKUgiAgIOKUgiAgIOKUgiAgIOKUjOKUgHRva2VuMlxuICAgIC8vICBbIHZhbHVlICwgdmFsdWUgXVxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBjb25zdCB0b2tlbjEgPSB0aGlzLiNnZXROZXh0KCk7XG4gICAgICBpZiAodG9rZW4xLnR5cGUgPT09IFwiRW5kQXJyYXlcIikge1xuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgfVxuICAgICAgdGFyZ2V0LnB1c2godGhpcy4jcGFyc2VKc29uVmFsdWUodG9rZW4xKSk7XG5cbiAgICAgIGNvbnN0IHRva2VuMiA9IHRoaXMuI2dldE5leHQoKTtcbiAgICAgIGlmICh0b2tlbjIudHlwZSA9PT0gXCJFbmRBcnJheVwiKSB7XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgICB9XG4gICAgICBpZiAodG9rZW4yLnR5cGUgIT09IFwiVmFsdWVTZXBhcmF0b3JcIikge1xuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYnVpbGRFcnJvck1lc3NhZ2UodG9rZW4yKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI3BhcnNlU3RyaW5nKHZhbHVlOiB7XG4gICAgdHlwZTogXCJTdHJpbmdcIjtcbiAgICBzb3VyY2VUZXh0OiBzdHJpbmc7XG4gICAgcG9zaXRpb246IG51bWJlcjtcbiAgfSk6IHN0cmluZyB7XG4gICAgbGV0IHBhcnNlZDtcbiAgICB0cnkge1xuICAgICAgLy8gVXNlIEpTT04ucGFyc2UgdG8gaGFuZGxlIGBcXHUwMDAwYCBldGMuIGNvcnJlY3RseS5cbiAgICAgIHBhcnNlZCA9IEpTT04ucGFyc2UodmFsdWUuc291cmNlVGV4dCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYnVpbGRFcnJvck1lc3NhZ2UodmFsdWUpKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBwYXJzZWQgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFBhcnNlZCB2YWx1ZSBpcyBub3QgYSBzdHJpbmc6ICR7cGFyc2VkfWApO1xuICAgIH1cbiAgICByZXR1cm4gcGFyc2VkO1xuICB9XG5cbiAgI3BhcnNlTnVsbE9yVHJ1ZU9yRmFsc2VPck51bWJlcih2YWx1ZToge1xuICAgIHR5cGU6IFwiTnVsbE9yVHJ1ZU9yRmFsc2VPck51bWJlclwiO1xuICAgIHNvdXJjZVRleHQ6IHN0cmluZztcbiAgICBwb3NpdGlvbjogbnVtYmVyO1xuICB9KTogbnVsbCB8IGJvb2xlYW4gfCBudW1iZXIge1xuICAgIGlmICh2YWx1ZS5zb3VyY2VUZXh0ID09PSBcIm51bGxcIikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5zb3VyY2VUZXh0ID09PSBcInRydWVcIikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5zb3VyY2VUZXh0ID09PSBcImZhbHNlXCIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbGV0IHBhcnNlZDtcbiAgICB0cnkge1xuICAgICAgLy8gVXNlIEpTT04ucGFyc2UgdG8gaGFuZGxlIGArMTAwYCwgYEluZmluaXR5YCBldGMuIGNvcnJlY3RseS5cbiAgICAgIHBhcnNlZCA9IEpTT04ucGFyc2UodmFsdWUuc291cmNlVGV4dCk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYnVpbGRFcnJvck1lc3NhZ2UodmFsdWUpKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBwYXJzZWQgIT09IFwibnVtYmVyXCIpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFBhcnNlZCB2YWx1ZSBpcyBub3QgYSBudW1iZXI6ICR7cGFyc2VkfWApO1xuICAgIH1cbiAgICByZXR1cm4gcGFyc2VkO1xuICB9XG59XG5cbmZ1bmN0aW9uIGJ1aWxkRXJyb3JNZXNzYWdlKHsgdHlwZSwgc291cmNlVGV4dCwgcG9zaXRpb24gfTogVG9rZW4pOiBzdHJpbmcge1xuICBsZXQgdG9rZW4gPSBcIlwiO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFwiQmVnaW5PYmplY3RcIjpcbiAgICAgIHRva2VuID0gXCJ7XCI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiRW5kT2JqZWN0XCI6XG4gICAgICB0b2tlbiA9IFwifVwiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcIkJlZ2luQXJyYXlcIjpcbiAgICAgIHRva2VuID0gXCJbXCI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiRW5kQXJyYXlcIjpcbiAgICAgIHRva2VuID0gXCJdXCI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiTmFtZVNlcGFyYXRvclwiOlxuICAgICAgdG9rZW4gPSBcIjpcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJWYWx1ZVNlcGFyYXRvclwiOlxuICAgICAgdG9rZW4gPSBcIixcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJOdWxsT3JUcnVlT3JGYWxzZU9yTnVtYmVyXCI6XG4gICAgY2FzZSBcIlN0cmluZ1wiOlxuICAgICAgLy8gVHJ1bmNhdGUgdGhlIHN0cmluZyBzbyB0aGF0IGl0IGlzIHdpdGhpbiAzMCBsZW5ndGhzLlxuICAgICAgdG9rZW4gPSAzMCA8IHNvdXJjZVRleHQubGVuZ3RoXG4gICAgICAgID8gYCR7c291cmNlVGV4dC5zbGljZSgwLCAzMCl9Li4uYFxuICAgICAgICA6IHNvdXJjZVRleHQ7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gYENhbm5vdCBwYXJzZSBKU09OQzogdW5leHBlY3RlZCB0b2tlbiBcIiR7dG9rZW59XCIgaW4gSlNPTkMgYXQgcG9zaXRpb24gJHtwb3NpdGlvbn1gO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFLckM7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FnQkMsR0FDRCxPQUFPLFNBQVMsTUFBTSxJQUFZO0VBQ2hDLElBQUksWUFBWTtJQUNkLE1BQU0sSUFBSSxVQUNSO0VBRUo7RUFDQSxPQUFPLElBQUksWUFBWSxNQUFNLEtBQUs7QUFDcEM7QUE2QkEsMkNBQTJDO0FBQzNDLE1BQU07RUFDSyxDQUFBLFVBQVcsR0FBRyxJQUFJLElBQUksV0FBVztFQUNqQyxDQUFBLGNBQWUsR0FBRyxJQUFJLElBQUk7T0FBSTtPQUFjLElBQUksQ0FBQyxDQUFBLFVBQVc7R0FBQyxFQUFFO0VBQ3hFLENBQUEsSUFBSyxDQUFTO0VBQ2QsQ0FBQSxNQUFPLENBQVM7RUFDaEIsQ0FBQSxTQUFVLENBQXlCO0VBQ25DLFlBQVksSUFBWSxDQUFFO0lBQ3hCLElBQUksQ0FBQyxDQUFBLElBQUssR0FBRyxHQUFHLE1BQU07SUFDdEIsSUFBSSxDQUFDLENBQUEsTUFBTyxHQUFHLElBQUksQ0FBQyxDQUFBLElBQUssQ0FBQyxNQUFNO0lBQ2hDLElBQUksQ0FBQyxDQUFBLFNBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQSxRQUFTO0VBQ2xDO0VBQ0EsUUFBbUI7SUFDakIsTUFBTSxRQUFRLElBQUksQ0FBQyxDQUFBLE9BQVE7SUFDM0IsTUFBTSxNQUFNLElBQUksQ0FBQyxDQUFBLGNBQWUsQ0FBQztJQUVqQywwQ0FBMEM7SUFDMUMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQSxTQUFVLENBQUMsSUFBSTtJQUM1QyxJQUFJLENBQUMsTUFBTTtNQUNULE1BQU0sSUFBSSxZQUFZLGtCQUFrQjtJQUMxQztJQUVBLE9BQU87RUFDVDtFQUNBLG1GQUFtRixHQUNuRixDQUFBLE9BQVE7SUFDTixNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFBLFNBQVUsQ0FBQyxJQUFJO0lBQzVDLElBQUksTUFBTTtNQUNSLE1BQU0sSUFBSSxZQUNSO0lBRUo7SUFDQSxPQUFPO0VBQ1Q7RUFDQSxrRkFBa0YsR0FDbEYsQ0FBQyxDQUFBLFFBQVM7SUFDUixJQUFLLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUEsTUFBTyxFQUFFLElBQUs7TUFDckMsa0JBQWtCO01BQ2xCLElBQUksSUFBSSxDQUFDLENBQUEsVUFBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQSxJQUFLLENBQUMsRUFBRSxHQUFJO1FBQ3hDO01BQ0Y7TUFFQSxzQ0FBc0M7TUFDdEMsSUFBSSxJQUFJLENBQUMsQ0FBQSxJQUFLLENBQUMsRUFBRSxLQUFLLE9BQU8sSUFBSSxDQUFDLENBQUEsSUFBSyxDQUFDLElBQUksRUFBRSxLQUFLLEtBQUs7UUFDdEQsS0FBSztRQUNMLElBQUksa0JBQWtCO1FBQ3RCLE1BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQSxNQUFPLEVBQUUsSUFBSztVQUM1QixJQUFJLElBQUksQ0FBQyxDQUFBLElBQUssQ0FBQyxFQUFFLEtBQUssT0FBTyxJQUFJLENBQUMsQ0FBQSxJQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssS0FBSztZQUN0RCxrQkFBa0I7WUFDbEI7VUFDRjtRQUNGO1FBQ0EsSUFBSSxDQUFDLGlCQUFpQjtVQUNwQixNQUFNLElBQUksWUFDUjtRQUVKO1FBQ0E7UUFDQTtNQUNGO01BRUEscUNBQXFDO01BQ3JDLElBQUksSUFBSSxDQUFDLENBQUEsSUFBSyxDQUFDLEVBQUUsS0FBSyxPQUFPLElBQUksQ0FBQyxDQUFBLElBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxLQUFLO1FBQ3RELEtBQUs7UUFDTCxNQUFPLElBQUksSUFBSSxDQUFDLENBQUEsTUFBTyxFQUFFLElBQUs7VUFDNUIsSUFBSSxJQUFJLENBQUMsQ0FBQSxJQUFLLENBQUMsRUFBRSxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUEsSUFBSyxDQUFDLEVBQUUsS0FBSyxNQUFNO1lBQ3BEO1VBQ0Y7UUFDRjtRQUNBO01BQ0Y7TUFFQSxPQUFRLElBQUksQ0FBQyxDQUFBLElBQUssQ0FBQyxFQUFFO1FBQ25CLEtBQUs7VUFDSCxNQUFNO1lBQUUsTUFBTTtZQUFlLFVBQVU7VUFBRTtVQUN6QztRQUNGLEtBQUs7VUFDSCxNQUFNO1lBQUUsTUFBTTtZQUFhLFVBQVU7VUFBRTtVQUN2QztRQUNGLEtBQUs7VUFDSCxNQUFNO1lBQUUsTUFBTTtZQUFjLFVBQVU7VUFBRTtVQUN4QztRQUNGLEtBQUs7VUFDSCxNQUFNO1lBQUUsTUFBTTtZQUFZLFVBQVU7VUFBRTtVQUN0QztRQUNGLEtBQUs7VUFDSCxNQUFNO1lBQUUsTUFBTTtZQUFpQixVQUFVO1VBQUU7VUFDM0M7UUFDRixLQUFLO1VBQ0gsTUFBTTtZQUFFLE1BQU07WUFBa0IsVUFBVTtVQUFFO1VBQzVDO1FBQ0YsS0FBSztVQUFLO1lBQ1IsTUFBTSxhQUFhO1lBQ25CLG1EQUFtRDtZQUNuRCxpQkFBaUI7WUFDakIsbUJBQW1CO1lBQ25CLHVCQUF1QjtZQUN2Qix5QkFBeUI7WUFDekIsSUFBSSxtQkFBbUI7WUFDdkI7WUFDQSxNQUFPLElBQUksSUFBSSxDQUFDLENBQUEsTUFBTyxFQUFFLElBQUs7Y0FDNUIsSUFBSSxJQUFJLENBQUMsQ0FBQSxJQUFLLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxrQkFBa0I7Z0JBQzlDO2NBQ0Y7Y0FDQSxtQkFBbUIsSUFBSSxDQUFDLENBQUEsSUFBSyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUM7WUFDaEQ7WUFDQSxNQUFNO2NBQ0osTUFBTTtjQUNOLFlBQVksSUFBSSxDQUFDLENBQUEsSUFBSyxDQUFDLFNBQVMsQ0FBQyxZQUFZLElBQUk7Y0FDakQsVUFBVTtZQUNaO1lBQ0E7VUFDRjtRQUNBO1VBQVM7WUFDUCxNQUFNLGFBQWE7WUFDbkIsTUFBTyxJQUFJLElBQUksQ0FBQyxDQUFBLE1BQU8sRUFBRSxJQUFLO2NBQzVCLElBQUksSUFBSSxDQUFDLENBQUEsY0FBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQSxJQUFLLENBQUMsRUFBRSxHQUFJO2dCQUM1QztjQUNGO1lBQ0Y7WUFDQTtZQUNBLE1BQU07Y0FDSixNQUFNO2NBQ04sWUFBWSxJQUFJLENBQUMsQ0FBQSxJQUFLLENBQUMsU0FBUyxDQUFDLFlBQVksSUFBSTtjQUNqRCxVQUFVO1lBQ1o7VUFDRjtNQUNGO0lBQ0Y7RUFDRjtFQUVBLENBQUEsY0FBZSxDQUFDLEtBQVk7SUFDMUIsT0FBUSxNQUFNLElBQUk7TUFDaEIsS0FBSztRQUNILE9BQU8sSUFBSSxDQUFDLENBQUEsV0FBWTtNQUMxQixLQUFLO1FBQ0gsT0FBTyxJQUFJLENBQUMsQ0FBQSxVQUFXO01BQ3pCLEtBQUs7UUFDSCxPQUFPLElBQUksQ0FBQyxDQUFBLDhCQUErQixDQUFDO01BQzlDLEtBQUs7UUFDSCxPQUFPLElBQUksQ0FBQyxDQUFBLFdBQVksQ0FBQztNQUMzQjtRQUNFLE1BQU0sSUFBSSxZQUFZLGtCQUFrQjtJQUM1QztFQUNGO0VBRUEsQ0FBQSxXQUFZO0lBQ1YsTUFBTSxTQUFtRCxDQUFDO0lBQzFELGFBQWE7SUFDYixNQUFNO0lBQ04sNEJBQTRCO0lBQzVCLDRCQUE0QjtJQUM1Qiw0QkFBNEI7SUFDNUIsNEJBQTRCO0lBQzVCLHFCQUFxQjtJQUNyQiw4QkFBOEI7SUFDOUIsOEJBQThCO0lBQzlCLDhCQUE4QjtJQUM5Qiw4QkFBOEI7SUFDOUIsOEJBQThCO0lBQzlCLHVCQUF1QjtJQUN2Qiw0Q0FBNEM7SUFDNUMsNENBQTRDO0lBQzVDLDRDQUE0QztJQUM1Qyw0Q0FBNEM7SUFDNUMsNENBQTRDO0lBQzVDLDRDQUE0QztJQUM1Qyw0Q0FBNEM7SUFDNUMsNENBQTRDO0lBQzVDLHFDQUFxQztJQUNyQyxNQUFPLEtBQU07TUFDWCxNQUFNLFNBQVMsSUFBSSxDQUFDLENBQUEsT0FBUTtNQUM1QixJQUFJLE9BQU8sSUFBSSxLQUFLLGFBQWE7UUFDL0IsT0FBTztNQUNUO01BQ0EsSUFBSSxPQUFPLElBQUksS0FBSyxVQUFVO1FBQzVCLE1BQU0sSUFBSSxZQUFZLGtCQUFrQjtNQUMxQztNQUNBLE1BQU0sTUFBTSxJQUFJLENBQUMsQ0FBQSxXQUFZLENBQUM7TUFFOUIsTUFBTSxTQUFTLElBQUksQ0FBQyxDQUFBLE9BQVE7TUFDNUIsSUFBSSxPQUFPLElBQUksS0FBSyxpQkFBaUI7UUFDbkMsTUFBTSxJQUFJLFlBQVksa0JBQWtCO01BQzFDO01BRUEsTUFBTSxTQUFTLElBQUksQ0FBQyxDQUFBLE9BQVE7TUFDNUIsT0FBTyxjQUFjLENBQUMsUUFBUSxLQUFLO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLENBQUEsY0FBZSxDQUFDO1FBQzVCLFVBQVU7UUFDVixZQUFZO1FBQ1osY0FBYztNQUNoQjtNQUVBLE1BQU0sU0FBUyxJQUFJLENBQUMsQ0FBQSxPQUFRO01BQzVCLElBQUksT0FBTyxJQUFJLEtBQUssYUFBYTtRQUMvQixPQUFPO01BQ1Q7TUFDQSxJQUFJLE9BQU8sSUFBSSxLQUFLLGtCQUFrQjtRQUNwQyxNQUFNLElBQUksWUFBWSxrQkFBa0I7TUFDMUM7SUFDRjtFQUNGO0VBRUEsQ0FBQSxVQUFXO0lBQ1QsTUFBTSxTQUFzQixFQUFFO0lBQzlCLGFBQWE7SUFDYixNQUFNO0lBQ04sNEJBQTRCO0lBQzVCLDRCQUE0QjtJQUM1QixhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCLHNCQUFzQjtJQUN0QixzQkFBc0I7SUFDdEIsZUFBZTtJQUNmLDRCQUE0QjtJQUM1Qiw0QkFBNEI7SUFDNUIsNEJBQTRCO0lBQzVCLDRCQUE0QjtJQUM1QixxQkFBcUI7SUFDckIsTUFBTyxLQUFNO01BQ1gsTUFBTSxTQUFTLElBQUksQ0FBQyxDQUFBLE9BQVE7TUFDNUIsSUFBSSxPQUFPLElBQUksS0FBSyxZQUFZO1FBQzlCLE9BQU87TUFDVDtNQUNBLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBLGNBQWUsQ0FBQztNQUVqQyxNQUFNLFNBQVMsSUFBSSxDQUFDLENBQUEsT0FBUTtNQUM1QixJQUFJLE9BQU8sSUFBSSxLQUFLLFlBQVk7UUFDOUIsT0FBTztNQUNUO01BQ0EsSUFBSSxPQUFPLElBQUksS0FBSyxrQkFBa0I7UUFDcEMsTUFBTSxJQUFJLFlBQVksa0JBQWtCO01BQzFDO0lBQ0Y7RUFDRjtFQUVBLENBQUEsV0FBWSxDQUFDLEtBSVo7SUFDQyxJQUFJO0lBQ0osSUFBSTtNQUNGLG9EQUFvRDtNQUNwRCxTQUFTLEtBQUssS0FBSyxDQUFDLE1BQU0sVUFBVTtJQUN0QyxFQUFFLE9BQU07TUFDTixNQUFNLElBQUksWUFBWSxrQkFBa0I7SUFDMUM7SUFDQSxJQUFJLE9BQU8sV0FBVyxVQUFVO01BQzlCLE1BQU0sSUFBSSxVQUFVLENBQUMsOEJBQThCLEVBQUUsUUFBUTtJQUMvRDtJQUNBLE9BQU87RUFDVDtFQUVBLENBQUEsOEJBQStCLENBQUMsS0FJL0I7SUFDQyxJQUFJLE1BQU0sVUFBVSxLQUFLLFFBQVE7TUFDL0IsT0FBTztJQUNUO0lBQ0EsSUFBSSxNQUFNLFVBQVUsS0FBSyxRQUFRO01BQy9CLE9BQU87SUFDVDtJQUNBLElBQUksTUFBTSxVQUFVLEtBQUssU0FBUztNQUNoQyxPQUFPO0lBQ1Q7SUFDQSxJQUFJO0lBQ0osSUFBSTtNQUNGLDhEQUE4RDtNQUM5RCxTQUFTLEtBQUssS0FBSyxDQUFDLE1BQU0sVUFBVTtJQUN0QyxFQUFFLE9BQU07TUFDTixNQUFNLElBQUksWUFBWSxrQkFBa0I7SUFDMUM7SUFDQSxJQUFJLE9BQU8sV0FBVyxVQUFVO01BQzlCLE1BQU0sSUFBSSxVQUFVLENBQUMsOEJBQThCLEVBQUUsUUFBUTtJQUMvRDtJQUNBLE9BQU87RUFDVDtBQUNGO0FBRUEsU0FBUyxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBUztFQUM5RCxJQUFJLFFBQVE7RUFDWixPQUFRO0lBQ04sS0FBSztNQUNILFFBQVE7TUFDUjtJQUNGLEtBQUs7TUFDSCxRQUFRO01BQ1I7SUFDRixLQUFLO01BQ0gsUUFBUTtNQUNSO0lBQ0YsS0FBSztNQUNILFFBQVE7TUFDUjtJQUNGLEtBQUs7TUFDSCxRQUFRO01BQ1I7SUFDRixLQUFLO01BQ0gsUUFBUTtNQUNSO0lBQ0YsS0FBSztJQUNMLEtBQUs7TUFDSCx1REFBdUQ7TUFDdkQsUUFBUSxLQUFLLFdBQVcsTUFBTSxHQUMxQixHQUFHLFdBQVcsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FDL0I7TUFDSjtFQUNKO0VBQ0EsT0FBTyxDQUFDLHNDQUFzQyxFQUFFLE1BQU0sdUJBQXVCLEVBQUUsVUFBVTtBQUMzRiJ9 +// denoCacheMetadata=2275276431085541839,6896860856939913524
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/c4dab3e93e863ba69bb87220ccdf01bedbe71f1db791125469f780ab2a8b939e.js b/vendor/gen/https/jsr.io/c4dab3e93e863ba69bb87220ccdf01bedbe71f1db791125469f780ab2a8b939e.js new file mode 100644 index 0000000..0e29c2a --- /dev/null +++ b/vendor/gen/https/jsr.io/c4dab3e93e863ba69bb87220ccdf01bedbe71f1db791125469f780ab2a8b939e.js @@ -0,0 +1,85 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { _globToRegExp } from "../_common/glob_to_reg_exp.ts"; +const constants = { + sep: "/+", + sepMaybe: "/*", + seps: [ + "/" + ], + globstar: "(?:[^/]*(?:/|$)+)*", + wildcard: "[^/]*", + escapePrefix: "\\" +}; +/** Convert a glob string to a regular expression. + * + * Tries to match bash glob expansion as closely as possible. + * + * Basic glob syntax: + * - `*` - Matches everything without leaving the path segment. + * - `?` - Matches any single character. + * - `{foo,bar}` - Matches `foo` or `bar`. + * - `[abcd]` - Matches `a`, `b`, `c` or `d`. + * - `[a-d]` - Matches `a`, `b`, `c` or `d`. + * - `[!abcd]` - Matches any single character besides `a`, `b`, `c` or `d`. + * - `[[:<class>:]]` - Matches any character belonging to `<class>`. + * - `[[:alnum:]]` - Matches any digit or letter. + * - `[[:digit:]abc]` - Matches any digit, `a`, `b` or `c`. + * - See https://facelessuser.github.io/wcmatch/glob/#posix-character-classes + * for a complete list of supported character classes. + * - `\` - Escapes the next character for an `os` other than `"windows"`. + * - \` - Escapes the next character for `os` set to `"windows"`. + * - `/` - Path separator. + * - `\` - Additional path separator only for `os` set to `"windows"`. + * + * Extended syntax: + * - Requires `{ extended: true }`. + * - `?(foo|bar)` - Matches 0 or 1 instance of `{foo,bar}`. + * - `@(foo|bar)` - Matches 1 instance of `{foo,bar}`. They behave the same. + * - `*(foo|bar)` - Matches _n_ instances of `{foo,bar}`. + * - `+(foo|bar)` - Matches _n > 0_ instances of `{foo,bar}`. + * - `!(foo|bar)` - Matches anything other than `{foo,bar}`. + * - See https://www.linuxjournal.com/content/bash-extended-globbing. + * + * Globstar syntax: + * - Requires `{ globstar: true }`. + * - `**` - Matches any number of any path segments. + * - Must comprise its entire path segment in the provided glob. + * - See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * + * Note the following properties: + * - The generated `RegExp` is anchored at both start and end. + * - Repeating and trailing separators are tolerated. Trailing separators in the + * provided glob have no meaning and are discarded. + * - Absolute globs will only match absolute paths, etc. + * - Empty globs will match nothing. + * - Any special glob syntax must be contained to one path segment. For example, + * `?(foo|bar/baz)` is invalid. The separator will take precedence and the + * first segment ends with an unclosed group. + * - If a path segment ends with unclosed groups or a dangling escape prefix, a + * parse error has occurred. Every character for that segment is taken + * literally in this event. + * + * Limitations: + * - A negative group like `!(foo|bar)` will wrongly be converted to a negative + * look-ahead followed by a wildcard. This means that `!(foo).js` will wrongly + * fail to match `foobar.js`, even though `foobar` is not `foo`. Effectively, + * `!(foo|bar)` is treated like `!(@(foo|bar)*)`. This will work correctly if + * the group occurs not nested at the end of the segment. + * + * @example Usage + * ```ts + * import { globToRegExp } from "@std/path/posix/glob-to-regexp"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(globToRegExp("*.js"), /^[^/]*\.js\/*$/); + * ``` + * + * @param glob Glob string to convert. + * @param options Conversion options. + * @returns The regular expression equivalent to the glob. + */ export function globToRegExp(glob, options = {}) { + return _globToRegExp(constants, glob, options); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9wb3NpeC9nbG9iX3RvX3JlZ2V4cC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQge1xuICBfZ2xvYlRvUmVnRXhwLFxuICB0eXBlIEdsb2JDb25zdGFudHMsXG4gIHR5cGUgR2xvYk9wdGlvbnMsXG59IGZyb20gXCIuLi9fY29tbW9uL2dsb2JfdG9fcmVnX2V4cC50c1wiO1xuXG5leHBvcnQgdHlwZSB7IEdsb2JPcHRpb25zIH07XG5cbmNvbnN0IGNvbnN0YW50czogR2xvYkNvbnN0YW50cyA9IHtcbiAgc2VwOiBcIi8rXCIsXG4gIHNlcE1heWJlOiBcIi8qXCIsXG4gIHNlcHM6IFtcIi9cIl0sXG4gIGdsb2JzdGFyOiBcIig/OlteL10qKD86L3wkKSspKlwiLFxuICB3aWxkY2FyZDogXCJbXi9dKlwiLFxuICBlc2NhcGVQcmVmaXg6IFwiXFxcXFwiLFxufTtcblxuLyoqIENvbnZlcnQgYSBnbG9iIHN0cmluZyB0byBhIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAqXG4gKiBUcmllcyB0byBtYXRjaCBiYXNoIGdsb2IgZXhwYW5zaW9uIGFzIGNsb3NlbHkgYXMgcG9zc2libGUuXG4gKlxuICogQmFzaWMgZ2xvYiBzeW50YXg6XG4gKiAtIGAqYCAtIE1hdGNoZXMgZXZlcnl0aGluZyB3aXRob3V0IGxlYXZpbmcgdGhlIHBhdGggc2VnbWVudC5cbiAqIC0gYD9gIC0gTWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3Rlci5cbiAqIC0gYHtmb28sYmFyfWAgLSBNYXRjaGVzIGBmb29gIG9yIGBiYXJgLlxuICogLSBgW2FiY2RdYCAtIE1hdGNoZXMgYGFgLCBgYmAsIGBjYCBvciBgZGAuXG4gKiAtIGBbYS1kXWAgLSBNYXRjaGVzIGBhYCwgYGJgLCBgY2Agb3IgYGRgLlxuICogLSBgWyFhYmNkXWAgLSBNYXRjaGVzIGFueSBzaW5nbGUgY2hhcmFjdGVyIGJlc2lkZXMgYGFgLCBgYmAsIGBjYCBvciBgZGAuXG4gKiAtIGBbWzo8Y2xhc3M+Ol1dYCAtIE1hdGNoZXMgYW55IGNoYXJhY3RlciBiZWxvbmdpbmcgdG8gYDxjbGFzcz5gLlxuICogICAgIC0gYFtbOmFsbnVtOl1dYCAtIE1hdGNoZXMgYW55IGRpZ2l0IG9yIGxldHRlci5cbiAqICAgICAtIGBbWzpkaWdpdDpdYWJjXWAgLSBNYXRjaGVzIGFueSBkaWdpdCwgYGFgLCBgYmAgb3IgYGNgLlxuICogICAgIC0gU2VlIGh0dHBzOi8vZmFjZWxlc3N1c2VyLmdpdGh1Yi5pby93Y21hdGNoL2dsb2IvI3Bvc2l4LWNoYXJhY3Rlci1jbGFzc2VzXG4gKiAgICAgICBmb3IgYSBjb21wbGV0ZSBsaXN0IG9mIHN1cHBvcnRlZCBjaGFyYWN0ZXIgY2xhc3Nlcy5cbiAqIC0gYFxcYCAtIEVzY2FwZXMgdGhlIG5leHQgY2hhcmFjdGVyIGZvciBhbiBgb3NgIG90aGVyIHRoYW4gYFwid2luZG93c1wiYC5cbiAqIC0gXFxgIC0gRXNjYXBlcyB0aGUgbmV4dCBjaGFyYWN0ZXIgZm9yIGBvc2Agc2V0IHRvIGBcIndpbmRvd3NcImAuXG4gKiAtIGAvYCAtIFBhdGggc2VwYXJhdG9yLlxuICogLSBgXFxgIC0gQWRkaXRpb25hbCBwYXRoIHNlcGFyYXRvciBvbmx5IGZvciBgb3NgIHNldCB0byBgXCJ3aW5kb3dzXCJgLlxuICpcbiAqIEV4dGVuZGVkIHN5bnRheDpcbiAqIC0gUmVxdWlyZXMgYHsgZXh0ZW5kZWQ6IHRydWUgfWAuXG4gKiAtIGA/KGZvb3xiYXIpYCAtIE1hdGNoZXMgMCBvciAxIGluc3RhbmNlIG9mIGB7Zm9vLGJhcn1gLlxuICogLSBgQChmb298YmFyKWAgLSBNYXRjaGVzIDEgaW5zdGFuY2Ugb2YgYHtmb28sYmFyfWAuIFRoZXkgYmVoYXZlIHRoZSBzYW1lLlxuICogLSBgKihmb298YmFyKWAgLSBNYXRjaGVzIF9uXyBpbnN0YW5jZXMgb2YgYHtmb28sYmFyfWAuXG4gKiAtIGArKGZvb3xiYXIpYCAtIE1hdGNoZXMgX24gPiAwXyBpbnN0YW5jZXMgb2YgYHtmb28sYmFyfWAuXG4gKiAtIGAhKGZvb3xiYXIpYCAtIE1hdGNoZXMgYW55dGhpbmcgb3RoZXIgdGhhbiBge2ZvbyxiYXJ9YC5cbiAqIC0gU2VlIGh0dHBzOi8vd3d3LmxpbnV4am91cm5hbC5jb20vY29udGVudC9iYXNoLWV4dGVuZGVkLWdsb2JiaW5nLlxuICpcbiAqIEdsb2JzdGFyIHN5bnRheDpcbiAqIC0gUmVxdWlyZXMgYHsgZ2xvYnN0YXI6IHRydWUgfWAuXG4gKiAtIGAqKmAgLSBNYXRjaGVzIGFueSBudW1iZXIgb2YgYW55IHBhdGggc2VnbWVudHMuXG4gKiAgICAgLSBNdXN0IGNvbXByaXNlIGl0cyBlbnRpcmUgcGF0aCBzZWdtZW50IGluIHRoZSBwcm92aWRlZCBnbG9iLlxuICogLSBTZWUgaHR0cHM6Ly93d3cubGludXhqb3VybmFsLmNvbS9jb250ZW50L2dsb2JzdGFyLW5ldy1iYXNoLWdsb2JiaW5nLW9wdGlvbi5cbiAqXG4gKiBOb3RlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqIC0gVGhlIGdlbmVyYXRlZCBgUmVnRXhwYCBpcyBhbmNob3JlZCBhdCBib3RoIHN0YXJ0IGFuZCBlbmQuXG4gKiAtIFJlcGVhdGluZyBhbmQgdHJhaWxpbmcgc2VwYXJhdG9ycyBhcmUgdG9sZXJhdGVkLiBUcmFpbGluZyBzZXBhcmF0b3JzIGluIHRoZVxuICogICBwcm92aWRlZCBnbG9iIGhhdmUgbm8gbWVhbmluZyBhbmQgYXJlIGRpc2NhcmRlZC5cbiAqIC0gQWJzb2x1dGUgZ2xvYnMgd2lsbCBvbmx5IG1hdGNoIGFic29sdXRlIHBhdGhzLCBldGMuXG4gKiAtIEVtcHR5IGdsb2JzIHdpbGwgbWF0Y2ggbm90aGluZy5cbiAqIC0gQW55IHNwZWNpYWwgZ2xvYiBzeW50YXggbXVzdCBiZSBjb250YWluZWQgdG8gb25lIHBhdGggc2VnbWVudC4gRm9yIGV4YW1wbGUsXG4gKiAgIGA/KGZvb3xiYXIvYmF6KWAgaXMgaW52YWxpZC4gVGhlIHNlcGFyYXRvciB3aWxsIHRha2UgcHJlY2VkZW5jZSBhbmQgdGhlXG4gKiAgIGZpcnN0IHNlZ21lbnQgZW5kcyB3aXRoIGFuIHVuY2xvc2VkIGdyb3VwLlxuICogLSBJZiBhIHBhdGggc2VnbWVudCBlbmRzIHdpdGggdW5jbG9zZWQgZ3JvdXBzIG9yIGEgZGFuZ2xpbmcgZXNjYXBlIHByZWZpeCwgYVxuICogICBwYXJzZSBlcnJvciBoYXMgb2NjdXJyZWQuIEV2ZXJ5IGNoYXJhY3RlciBmb3IgdGhhdCBzZWdtZW50IGlzIHRha2VuXG4gKiAgIGxpdGVyYWxseSBpbiB0aGlzIGV2ZW50LlxuICpcbiAqIExpbWl0YXRpb25zOlxuICogLSBBIG5lZ2F0aXZlIGdyb3VwIGxpa2UgYCEoZm9vfGJhcilgIHdpbGwgd3JvbmdseSBiZSBjb252ZXJ0ZWQgdG8gYSBuZWdhdGl2ZVxuICogICBsb29rLWFoZWFkIGZvbGxvd2VkIGJ5IGEgd2lsZGNhcmQuIFRoaXMgbWVhbnMgdGhhdCBgIShmb28pLmpzYCB3aWxsIHdyb25nbHlcbiAqICAgZmFpbCB0byBtYXRjaCBgZm9vYmFyLmpzYCwgZXZlbiB0aG91Z2ggYGZvb2JhcmAgaXMgbm90IGBmb29gLiBFZmZlY3RpdmVseSxcbiAqICAgYCEoZm9vfGJhcilgIGlzIHRyZWF0ZWQgbGlrZSBgIShAKGZvb3xiYXIpKilgLiBUaGlzIHdpbGwgd29yayBjb3JyZWN0bHkgaWZcbiAqICAgdGhlIGdyb3VwIG9jY3VycyBub3QgbmVzdGVkIGF0IHRoZSBlbmQgb2YgdGhlIHNlZ21lbnQuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBnbG9iVG9SZWdFeHAgfSBmcm9tIFwiQHN0ZC9wYXRoL3Bvc2l4L2dsb2ItdG8tcmVnZXhwXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoZ2xvYlRvUmVnRXhwKFwiKi5qc1wiKSwgL15bXi9dKlxcLmpzXFwvKiQvKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBnbG9iIEdsb2Igc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcGFyYW0gb3B0aW9ucyBDb252ZXJzaW9uIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgcmVndWxhciBleHByZXNzaW9uIGVxdWl2YWxlbnQgdG8gdGhlIGdsb2IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnbG9iVG9SZWdFeHAoXG4gIGdsb2I6IHN0cmluZyxcbiAgb3B0aW9uczogR2xvYk9wdGlvbnMgPSB7fSxcbik6IFJlZ0V4cCB7XG4gIHJldHVybiBfZ2xvYlRvUmVnRXhwKGNvbnN0YW50cywgZ2xvYiwgb3B0aW9ucyk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQyxTQUNFLGFBQWEsUUFHUixnQ0FBZ0M7QUFJdkMsTUFBTSxZQUEyQjtFQUMvQixLQUFLO0VBQ0wsVUFBVTtFQUNWLE1BQU07SUFBQztHQUFJO0VBQ1gsVUFBVTtFQUNWLFVBQVU7RUFDVixjQUFjO0FBQ2hCO0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FtRUMsR0FDRCxPQUFPLFNBQVMsYUFDZCxJQUFZLEVBQ1osVUFBdUIsQ0FBQyxDQUFDO0VBRXpCLE9BQU8sY0FBYyxXQUFXLE1BQU07QUFDeEMifQ== +// denoCacheMetadata=9086989031102252531,3430792538847865662
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/c503ebed74a8963596fcf649c89c8b399e81df46df930177056c5968545b18f8.js b/vendor/gen/https/jsr.io/c503ebed74a8963596fcf649c89c8b399e81df46df930177056c5968545b18f8.js new file mode 100644 index 0000000..6eb213f --- /dev/null +++ b/vendor/gen/https/jsr.io/c503ebed74a8963596fcf649c89c8b399e81df46df930177056c5968545b18f8.js @@ -0,0 +1,947 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +// A module to print ANSI terminal colors. Inspired by chalk, kleur, and colors +// on npm. +/** + * String formatters and utilities for dealing with ANSI color codes. + * + * > [!IMPORTANT] + * > If printing directly to the console, it's recommended to style console + * > output using CSS (guide + * > {@linkcode https://developer.mozilla.org/en-US/docs/Web/API/console#styling_console_output | here}). + * + * This module supports `NO_COLOR` environmental variable disabling any coloring + * if `NO_COLOR` is set. + * + * ```ts no-assert + * import { + * bgBlue, + * bgRgb24, + * bgRgb8, + * bold, + * italic, + * red, + * rgb24, + * rgb8, + * } from "@std/fmt/colors"; + * + * console.log(bgBlue(italic(red(bold("Hello, World!"))))); + * + * // also supports 8bit colors + * + * console.log(rgb8("Hello, World!", 42)); + * + * console.log(bgRgb8("Hello, World!", 42)); + * + * // and 24bit rgb + * + * console.log(rgb24("Hello, World!", { + * r: 41, + * g: 42, + * b: 43, + * })); + * + * console.log(bgRgb24("Hello, World!", { + * r: 41, + * g: 42, + * b: 43, + * })); + * ``` + * + * @module + */ // deno-lint-ignore no-explicit-any +const { Deno } = globalThis; +const noColor = typeof Deno?.noColor === "boolean" ? Deno.noColor : false; +let enabled = !noColor; +/** + * Enable or disable text color when styling. + * + * `@std/fmt/colors` automatically detects NO_COLOR environmental variable + * and disables text color. Use this API only when the automatic detection + * doesn't work. + * + * @example Usage + * ```ts no-assert + * import { setColorEnabled } from "@std/fmt/colors"; + * + * // Disable text color + * setColorEnabled(false); + * + * // Enable text color + * setColorEnabled(true); + * ``` + * + * @param value The boolean value to enable or disable text color + */ export function setColorEnabled(value) { + if (Deno?.noColor) { + return; + } + enabled = value; +} +/** + * Get whether text color change is enabled or disabled. + * + * @example Usage + * ```ts no-assert + * import { getColorEnabled } from "@std/fmt/colors"; + * + * console.log(getColorEnabled()); // true if enabled, false if disabled + * ``` + * @returns `true` if text color is enabled, `false` otherwise + */ export function getColorEnabled() { + return enabled; +} +/** + * Builds color code + * @param open + * @param close + */ function code(open, close) { + return { + open: `\x1b[${open.join(";")}m`, + close: `\x1b[${close}m`, + regexp: new RegExp(`\\x1b\\[${close}m`, "g") + }; +} +/** + * Applies color and background based on color code and its associated text + * @param str The text to apply color settings to + * @param code The color code to apply + */ function run(str, code) { + return enabled ? `${code.open}${str.replace(code.regexp, code.open)}${code.close}` : str; +} +/** + * Reset the text modified. + * + * @example Usage + * ```ts no-assert + * import { reset } from "@std/fmt/colors"; + * + * console.log(reset("Hello, world!")); + * ``` + * + * @param str The text to reset + * @returns The text with reset color + */ export function reset(str) { + return run(str, code([ + 0 + ], 0)); +} +/** + * Make the text bold. + * + * @example Usage + * ```ts no-assert + * import { bold } from "@std/fmt/colors"; + * + * console.log(bold("Hello, world!")); + * ``` + * + * @param str The text to make bold + * @returns The bold text + */ export function bold(str) { + return run(str, code([ + 1 + ], 22)); +} +/** + * The text emits only a small amount of light. + * + * @example Usage + * ```ts no-assert + * import { dim } from "@std/fmt/colors"; + * + * console.log(dim("Hello, world!")); + * ``` + * + * @param str The text to dim + * @returns The dimmed text + * + * Warning: Not all terminal emulators support `dim`. + * For compatibility across all terminals, use {@linkcode gray} or {@linkcode brightBlack} instead. + */ export function dim(str) { + return run(str, code([ + 2 + ], 22)); +} +/** + * Make the text italic. + * + * @example Usage + * ```ts no-assert + * import { italic } from "@std/fmt/colors"; + * + * console.log(italic("Hello, world!")); + * ``` + * + * @param str The text to make italic + * @returns The italic text + */ export function italic(str) { + return run(str, code([ + 3 + ], 23)); +} +/** + * Make the text underline. + * + * @example Usage + * ```ts no-assert + * import { underline } from "@std/fmt/colors"; + * + * console.log(underline("Hello, world!")); + * ``` + * + * @param str The text to underline + * @returns The underlined text + */ export function underline(str) { + return run(str, code([ + 4 + ], 24)); +} +/** + * Invert background color and text color. + * + * @example Usage + * ```ts no-assert + * import { inverse } from "@std/fmt/colors"; + * + * console.log(inverse("Hello, world!")); + * ``` + * + * @param str The text to invert its color + * @returns The inverted text + */ export function inverse(str) { + return run(str, code([ + 7 + ], 27)); +} +/** + * Make the text hidden. + * + * @example Usage + * ```ts no-assert + * import { hidden } from "@std/fmt/colors"; + * + * console.log(hidden("Hello, world!")); + * ``` + * + * @param str The text to hide + * @returns The hidden text + */ export function hidden(str) { + return run(str, code([ + 8 + ], 28)); +} +/** + * Put horizontal line through the center of the text. + * + * @example Usage + * ```ts no-assert + * import { strikethrough } from "@std/fmt/colors"; + * + * console.log(strikethrough("Hello, world!")); + * ``` + * + * @param str The text to strike through + * @returns The text with horizontal line through the center + */ export function strikethrough(str) { + return run(str, code([ + 9 + ], 29)); +} +/** + * Set text color to black. + * + * @example Usage + * ```ts no-assert + * import { black } from "@std/fmt/colors"; + * + * console.log(black("Hello, world!")); + * ``` + * + * @param str The text to make black + * @returns The black text + */ export function black(str) { + return run(str, code([ + 30 + ], 39)); +} +/** + * Set text color to red. + * + * @example Usage + * ```ts no-assert + * import { red } from "@std/fmt/colors"; + * + * console.log(red("Hello, world!")); + * ``` + * + * @param str The text to make red + * @returns The red text + */ export function red(str) { + return run(str, code([ + 31 + ], 39)); +} +/** + * Set text color to green. + * + * @example Usage + * ```ts no-assert + * import { green } from "@std/fmt/colors"; + * + * console.log(green("Hello, world!")); + * ``` + * + * @param str The text to make green + * @returns The green text + */ export function green(str) { + return run(str, code([ + 32 + ], 39)); +} +/** + * Set text color to yellow. + * + * @example Usage + * ```ts no-assert + * import { yellow } from "@std/fmt/colors"; + * + * console.log(yellow("Hello, world!")); + * ``` + * + * @param str The text to make yellow + * @returns The yellow text + */ export function yellow(str) { + return run(str, code([ + 33 + ], 39)); +} +/** + * Set text color to blue. + * + * @example Usage + * ```ts no-assert + * import { blue } from "@std/fmt/colors"; + * + * console.log(blue("Hello, world!")); + * ``` + * + * @param str The text to make blue + * @returns The blue text + */ export function blue(str) { + return run(str, code([ + 34 + ], 39)); +} +/** + * Set text color to magenta. + * + * @example Usage + * ```ts no-assert + * import { magenta } from "@std/fmt/colors"; + * + * console.log(magenta("Hello, world!")); + * ``` + * + * @param str The text to make magenta + * @returns The magenta text + */ export function magenta(str) { + return run(str, code([ + 35 + ], 39)); +} +/** + * Set text color to cyan. + * + * @example Usage + * ```ts no-assert + * import { cyan } from "@std/fmt/colors"; + * + * console.log(cyan("Hello, world!")); + * ``` + * + * @param str The text to make cyan + * @returns The cyan text + */ export function cyan(str) { + return run(str, code([ + 36 + ], 39)); +} +/** + * Set text color to white. + * + * @example Usage + * ```ts no-assert + * import { white } from "@std/fmt/colors"; + * + * console.log(white("Hello, world!")); + * ``` + * + * @param str The text to make white + * @returns The white text + */ export function white(str) { + return run(str, code([ + 37 + ], 39)); +} +/** + * Set text color to gray. + * + * @example Usage + * ```ts no-assert + * import { gray } from "@std/fmt/colors"; + * + * console.log(gray("Hello, world!")); + * ``` + * + * @param str The text to make gray + * @returns The gray text + */ export function gray(str) { + return brightBlack(str); +} +/** + * Set text color to bright black. + * + * @example Usage + * ```ts no-assert + * import { brightBlack } from "@std/fmt/colors"; + * + * console.log(brightBlack("Hello, world!")); + * ``` + * + * @param str The text to make bright black + * @returns The bright black text + */ export function brightBlack(str) { + return run(str, code([ + 90 + ], 39)); +} +/** + * Set text color to bright red. + * + * @example Usage + * ```ts no-assert + * import { brightRed } from "@std/fmt/colors"; + * + * console.log(brightRed("Hello, world!")); + * ``` + * + * @param str The text to make bright red + * @returns The bright red text + */ export function brightRed(str) { + return run(str, code([ + 91 + ], 39)); +} +/** + * Set text color to bright green. + * + * @example Usage + * ```ts no-assert + * import { brightGreen } from "@std/fmt/colors"; + * + * console.log(brightGreen("Hello, world!")); + * ``` + * + * @param str The text to make bright green + * @returns The bright green text + */ export function brightGreen(str) { + return run(str, code([ + 92 + ], 39)); +} +/** + * Set text color to bright yellow. + * + * @example Usage + * ```ts no-assert + * import { brightYellow } from "@std/fmt/colors"; + * + * console.log(brightYellow("Hello, world!")); + * ``` + * + * @param str The text to make bright yellow + * @returns The bright yellow text + */ export function brightYellow(str) { + return run(str, code([ + 93 + ], 39)); +} +/** + * Set text color to bright blue. + * + * @example Usage + * ```ts no-assert + * import { brightBlue } from "@std/fmt/colors"; + * + * console.log(brightBlue("Hello, world!")); + * ``` + * + * @param str The text to make bright blue + * @returns The bright blue text + */ export function brightBlue(str) { + return run(str, code([ + 94 + ], 39)); +} +/** + * Set text color to bright magenta. + * + * @example Usage + * ```ts no-assert + * import { brightMagenta } from "@std/fmt/colors"; + * + * console.log(brightMagenta("Hello, world!")); + * ``` + * + * @param str The text to make bright magenta + * @returns The bright magenta text + */ export function brightMagenta(str) { + return run(str, code([ + 95 + ], 39)); +} +/** + * Set text color to bright cyan. + * + * @example Usage + * ```ts no-assert + * import { brightCyan } from "@std/fmt/colors"; + * + * console.log(brightCyan("Hello, world!")); + * ``` + * + * @param str The text to make bright cyan + * @returns The bright cyan text + */ export function brightCyan(str) { + return run(str, code([ + 96 + ], 39)); +} +/** + * Set text color to bright white. + * + * @example Usage + * ```ts no-assert + * import { brightWhite } from "@std/fmt/colors"; + * + * console.log(brightWhite("Hello, world!")); + * ``` + * + * @param str The text to make bright white + * @returns The bright white text + */ export function brightWhite(str) { + return run(str, code([ + 97 + ], 39)); +} +/** + * Set background color to black. + * + * @example Usage + * ```ts no-assert + * import { bgBlack } from "@std/fmt/colors"; + * + * console.log(bgBlack("Hello, world!")); + * ``` + * + * @param str The text to make its background black + * @returns The text with black background + */ export function bgBlack(str) { + return run(str, code([ + 40 + ], 49)); +} +/** + * Set background color to red. + * + * @example Usage + * ```ts no-assert + * import { bgRed } from "@std/fmt/colors"; + * + * console.log(bgRed("Hello, world!")); + * ``` + * + * @param str The text to make its background red + * @returns The text with red background + */ export function bgRed(str) { + return run(str, code([ + 41 + ], 49)); +} +/** + * Set background color to green. + * + * @example Usage + * ```ts no-assert + * import { bgGreen } from "@std/fmt/colors"; + * + * console.log(bgGreen("Hello, world!")); + * ``` + * + * @param str The text to make its background green + * @returns The text with green background + */ export function bgGreen(str) { + return run(str, code([ + 42 + ], 49)); +} +/** + * Set background color to yellow. + * + * @example Usage + * ```ts no-assert + * import { bgYellow } from "@std/fmt/colors"; + * + * console.log(bgYellow("Hello, world!")); + * ``` + * + * @param str The text to make its background yellow + * @returns The text with yellow background + */ export function bgYellow(str) { + return run(str, code([ + 43 + ], 49)); +} +/** + * Set background color to blue. + * + * @example Usage + * ```ts no-assert + * import { bgBlue } from "@std/fmt/colors"; + * + * console.log(bgBlue("Hello, world!")); + * ``` + * + * @param str The text to make its background blue + * @returns The text with blue background + */ export function bgBlue(str) { + return run(str, code([ + 44 + ], 49)); +} +/** + * Set background color to magenta. + * + * @example Usage + * ```ts no-assert + * import { bgMagenta } from "@std/fmt/colors"; + * + * console.log(bgMagenta("Hello, world!")); + * ``` + * + * @param str The text to make its background magenta + * @returns The text with magenta background + */ export function bgMagenta(str) { + return run(str, code([ + 45 + ], 49)); +} +/** + * Set background color to cyan. + * + * @example Usage + * ```ts no-assert + * import { bgCyan } from "@std/fmt/colors"; + * + * console.log(bgCyan("Hello, world!")); + * ``` + * + * @param str The text to make its background cyan + * @returns The text with cyan background + */ export function bgCyan(str) { + return run(str, code([ + 46 + ], 49)); +} +/** + * Set background color to white. + * + * @example Usage + * ```ts no-assert + * import { bgWhite } from "@std/fmt/colors"; + * + * console.log(bgWhite("Hello, world!")); + * ``` + * + * @param str The text to make its background white + * @returns The text with white background + */ export function bgWhite(str) { + return run(str, code([ + 47 + ], 49)); +} +/** + * Set background color to bright black. + * + * @example Usage + * ```ts no-assert + * import { bgBrightBlack } from "@std/fmt/colors"; + * + * console.log(bgBrightBlack("Hello, world!")); + * ``` + * + * @param str The text to make its background bright black + * @returns The text with bright black background + */ export function bgBrightBlack(str) { + return run(str, code([ + 100 + ], 49)); +} +/** + * Set background color to bright red. + * + * @example Usage + * ```ts no-assert + * import { bgBrightRed } from "@std/fmt/colors"; + * + * console.log(bgBrightRed("Hello, world!")); + * ``` + * + * @param str The text to make its background bright red + * @returns The text with bright red background + */ export function bgBrightRed(str) { + return run(str, code([ + 101 + ], 49)); +} +/** + * Set background color to bright green. + * + * @example Usage + * ```ts no-assert + * import { bgBrightGreen } from "@std/fmt/colors"; + * + * console.log(bgBrightGreen("Hello, world!")); + * ``` + * + * @param str The text to make its background bright green + * @returns The text with bright green background + */ export function bgBrightGreen(str) { + return run(str, code([ + 102 + ], 49)); +} +/** + * Set background color to bright yellow. + * + * @example Usage + * ```ts no-assert + * import { bgBrightYellow } from "@std/fmt/colors"; + * + * console.log(bgBrightYellow("Hello, world!")); + * ``` + * + * @param str The text to make its background bright yellow + * @returns The text with bright yellow background + */ export function bgBrightYellow(str) { + return run(str, code([ + 103 + ], 49)); +} +/** + * Set background color to bright blue. + * + * @example Usage + * ```ts no-assert + * import { bgBrightBlue } from "@std/fmt/colors"; + * + * console.log(bgBrightBlue("Hello, world!")); + * ``` + * + * @param str The text to make its background bright blue + * @returns The text with bright blue background + */ export function bgBrightBlue(str) { + return run(str, code([ + 104 + ], 49)); +} +/** + * Set background color to bright magenta. + * + * @example Usage + * ```ts no-assert + * import { bgBrightMagenta } from "@std/fmt/colors"; + * + * console.log(bgBrightMagenta("Hello, world!")); + * ``` + * + * @param str The text to make its background bright magenta + * @returns The text with bright magenta background + */ export function bgBrightMagenta(str) { + return run(str, code([ + 105 + ], 49)); +} +/** + * Set background color to bright cyan. + * + * @example Usage + * ```ts no-assert + * import { bgBrightCyan } from "@std/fmt/colors"; + * + * console.log(bgBrightCyan("Hello, world!")); + * ``` + * + * @param str The text to make its background bright cyan + * @returns The text with bright cyan background + */ export function bgBrightCyan(str) { + return run(str, code([ + 106 + ], 49)); +} +/** + * Set background color to bright white. + * + * @example Usage + * ```ts no-assert + * import { bgBrightWhite } from "@std/fmt/colors"; + * + * console.log(bgBrightWhite("Hello, world!")); + * ``` + * + * @param str The text to make its background bright white + * @returns The text with bright white background + */ export function bgBrightWhite(str) { + return run(str, code([ + 107 + ], 49)); +} +/* Special Color Sequences */ /** + * Clam and truncate color codes + * @param n The input number + * @param max The number to truncate to + * @param min The number to truncate from + */ function clampAndTruncate(n, max = 255, min = 0) { + return Math.trunc(Math.max(Math.min(n, max), min)); +} +/** + * Set text color using paletted 8bit colors. + * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit + * + * @example Usage + * ```ts no-assert + * import { rgb8 } from "@std/fmt/colors"; + * + * console.log(rgb8("Hello, world!", 42)); + * ``` + * + * @param str The text color to apply paletted 8bit colors to + * @param color The color code + * @returns The text with paletted 8bit color + */ export function rgb8(str, color) { + return run(str, code([ + 38, + 5, + clampAndTruncate(color) + ], 39)); +} +/** + * Set background color using paletted 8bit colors. + * https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit + * + * @example Usage + * ```ts no-assert + * import { bgRgb8 } from "@std/fmt/colors"; + * + * console.log(bgRgb8("Hello, world!", 42)); + * ``` + * + * @param str The text color to apply paletted 8bit background colors to + * @param color code + * @returns The text with paletted 8bit background color + */ export function bgRgb8(str, color) { + return run(str, code([ + 48, + 5, + clampAndTruncate(color) + ], 49)); +} +/** + * Set text color using 24bit rgb. + * `color` can be a number in range `0x000000` to `0xffffff` or + * an `Rgb`. + * + * @example To produce the color magenta: + * ```ts no-assert + * import { rgb24 } from "@std/fmt/colors"; + * + * rgb24("foo", 0xff00ff); + * rgb24("foo", {r: 255, g: 0, b: 255}); + * ``` + * @param str The text color to apply 24bit rgb to + * @param color The color code + * @returns The text with 24bit rgb color + */ export function rgb24(str, color) { + if (typeof color === "number") { + return run(str, code([ + 38, + 2, + color >> 16 & 0xff, + color >> 8 & 0xff, + color & 0xff + ], 39)); + } + return run(str, code([ + 38, + 2, + clampAndTruncate(color.r), + clampAndTruncate(color.g), + clampAndTruncate(color.b) + ], 39)); +} +/** + * Set background color using 24bit rgb. + * `color` can be a number in range `0x000000` to `0xffffff` or + * an `Rgb`. + * + * @example To produce the color magenta: + * ```ts no-assert + * import { bgRgb24 } from "@std/fmt/colors"; + * + * bgRgb24("foo", 0xff00ff); + * bgRgb24("foo", {r: 255, g: 0, b: 255}); + * ``` + * @param str The text color to apply 24bit rgb to + * @param color The color code + * @returns The text with 24bit rgb color + */ export function bgRgb24(str, color) { + if (typeof color === "number") { + return run(str, code([ + 48, + 2, + color >> 16 & 0xff, + color >> 8 & 0xff, + color & 0xff + ], 49)); + } + return run(str, code([ + 48, + 2, + clampAndTruncate(color.r), + clampAndTruncate(color.g), + clampAndTruncate(color.b) + ], 49)); +} +// https://github.com/chalk/ansi-regex/blob/02fa893d619d3da85411acc8fd4e2eea0e95a9d9/index.js +const ANSI_PATTERN = new RegExp([ + "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", + "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TXZcf-nq-uy=><~]))" +].join("|"), "g"); +/** + * Remove ANSI escape codes from the string. + * + * @example Usage + * ```ts no-assert + * import { stripAnsiCode, red } from "@std/fmt/colors"; + * + * console.log(stripAnsiCode(red("Hello, world!"))); + * ``` + * + * @param string The text to remove ANSI escape codes from + * @returns The text without ANSI escape codes + */ export function stripAnsiCode(string) { + return string.replace(ANSI_PATTERN, ""); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZm10LzEuMC44L2NvbG9ycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuLy8gQSBtb2R1bGUgdG8gcHJpbnQgQU5TSSB0ZXJtaW5hbCBjb2xvcnMuIEluc3BpcmVkIGJ5IGNoYWxrLCBrbGV1ciwgYW5kIGNvbG9yc1xuLy8gb24gbnBtLlxuXG4vKipcbiAqIFN0cmluZyBmb3JtYXR0ZXJzIGFuZCB1dGlsaXRpZXMgZm9yIGRlYWxpbmcgd2l0aCBBTlNJIGNvbG9yIGNvZGVzLlxuICpcbiAqID4gWyFJTVBPUlRBTlRdXG4gKiA+IElmIHByaW50aW5nIGRpcmVjdGx5IHRvIHRoZSBjb25zb2xlLCBpdCdzIHJlY29tbWVuZGVkIHRvIHN0eWxlIGNvbnNvbGVcbiAqID4gb3V0cHV0IHVzaW5nIENTUyAoZ3VpZGVcbiAqID4ge0BsaW5rY29kZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvY29uc29sZSNzdHlsaW5nX2NvbnNvbGVfb3V0cHV0IHwgaGVyZX0pLlxuICpcbiAqIFRoaXMgbW9kdWxlIHN1cHBvcnRzIGBOT19DT0xPUmAgZW52aXJvbm1lbnRhbCB2YXJpYWJsZSBkaXNhYmxpbmcgYW55IGNvbG9yaW5nXG4gKiBpZiBgTk9fQ09MT1JgIGlzIHNldC5cbiAqXG4gKiBgYGB0cyBuby1hc3NlcnRcbiAqIGltcG9ydCB7XG4gKiAgIGJnQmx1ZSxcbiAqICAgYmdSZ2IyNCxcbiAqICAgYmdSZ2I4LFxuICogICBib2xkLFxuICogICBpdGFsaWMsXG4gKiAgIHJlZCxcbiAqICAgcmdiMjQsXG4gKiAgIHJnYjgsXG4gKiB9IGZyb20gXCJAc3RkL2ZtdC9jb2xvcnNcIjtcbiAqXG4gKiBjb25zb2xlLmxvZyhiZ0JsdWUoaXRhbGljKHJlZChib2xkKFwiSGVsbG8sIFdvcmxkIVwiKSkpKSk7XG4gKlxuICogLy8gYWxzbyBzdXBwb3J0cyA4Yml0IGNvbG9yc1xuICpcbiAqIGNvbnNvbGUubG9nKHJnYjgoXCJIZWxsbywgV29ybGQhXCIsIDQyKSk7XG4gKlxuICogY29uc29sZS5sb2coYmdSZ2I4KFwiSGVsbG8sIFdvcmxkIVwiLCA0MikpO1xuICpcbiAqIC8vIGFuZCAyNGJpdCByZ2JcbiAqXG4gKiBjb25zb2xlLmxvZyhyZ2IyNChcIkhlbGxvLCBXb3JsZCFcIiwge1xuICogICByOiA0MSxcbiAqICAgZzogNDIsXG4gKiAgIGI6IDQzLFxuICogfSkpO1xuICpcbiAqIGNvbnNvbGUubG9nKGJnUmdiMjQoXCJIZWxsbywgV29ybGQhXCIsIHtcbiAqICAgcjogNDEsXG4gKiAgIGc6IDQyLFxuICogICBiOiA0MyxcbiAqIH0pKTtcbiAqIGBgYFxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG4vLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuY29uc3QgeyBEZW5vIH0gPSBnbG9iYWxUaGlzIGFzIGFueTtcbmNvbnN0IG5vQ29sb3IgPSB0eXBlb2YgRGVubz8ubm9Db2xvciA9PT0gXCJib29sZWFuXCJcbiAgPyBEZW5vLm5vQ29sb3IgYXMgYm9vbGVhblxuICA6IGZhbHNlO1xuXG5pbnRlcmZhY2UgQ29kZSB7XG4gIG9wZW46IHN0cmluZztcbiAgY2xvc2U6IHN0cmluZztcbiAgcmVnZXhwOiBSZWdFeHA7XG59XG5cbi8qKiBSR0IgOC1iaXRzIHBlciBjaGFubmVsLiBFYWNoIGluIHJhbmdlIGAwLT4yNTVgIG9yIGAweDAwLT4weGZmYCAqL1xuZXhwb3J0IGludGVyZmFjZSBSZ2Ige1xuICAvKiogUmVkIGNvbXBvbmVudCB2YWx1ZSAqL1xuICByOiBudW1iZXI7XG4gIC8qKiBHcmVlbiBjb21wb25lbnQgdmFsdWUgKi9cbiAgZzogbnVtYmVyO1xuICAvKiogQmx1ZSBjb21wb25lbnQgdmFsdWUgKi9cbiAgYjogbnVtYmVyO1xufVxuXG5sZXQgZW5hYmxlZCA9ICFub0NvbG9yO1xuXG4vKipcbiAqIEVuYWJsZSBvciBkaXNhYmxlIHRleHQgY29sb3Igd2hlbiBzdHlsaW5nLlxuICpcbiAqIGBAc3RkL2ZtdC9jb2xvcnNgIGF1dG9tYXRpY2FsbHkgZGV0ZWN0cyBOT19DT0xPUiBlbnZpcm9ubWVudGFsIHZhcmlhYmxlXG4gKiBhbmQgZGlzYWJsZXMgdGV4dCBjb2xvci4gVXNlIHRoaXMgQVBJIG9ubHkgd2hlbiB0aGUgYXV0b21hdGljIGRldGVjdGlvblxuICogZG9lc24ndCB3b3JrLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBuby1hc3NlcnRcbiAqIGltcG9ydCB7IHNldENvbG9yRW5hYmxlZCB9IGZyb20gXCJAc3RkL2ZtdC9jb2xvcnNcIjtcbiAqXG4gKiAvLyBEaXNhYmxlIHRleHQgY29sb3JcbiAqIHNldENvbG9yRW5hYmxlZChmYWxzZSk7XG4gKlxuICogLy8gRW5hYmxlIHRleHQgY29sb3JcbiAqIHNldENvbG9yRW5hYmxlZCh0cnVlKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB2YWx1ZSBUaGUgYm9vbGVhbiB2YWx1ZSB0byBlbmFibGUgb3IgZGlzYWJsZSB0ZXh0IGNvbG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRDb2xvckVuYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgaWYgKERlbm8/Lm5vQ29sb3IpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBlbmFibGVkID0gdmFsdWU7XG59XG5cbi8qKlxuICogR2V0IHdoZXRoZXIgdGV4dCBjb2xvciBjaGFuZ2UgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHMgbm8tYXNzZXJ0XG4gKiBpbXBvcnQgeyBnZXRDb2xvckVuYWJsZWQgfSBmcm9tIFwiQHN0ZC9mbXQvY29sb3JzXCI7XG4gKlxuICogY29uc29sZS5sb2coZ2V0Q29sb3JFbmFibGVkKCkpOyAvLyB0cnVlIGlmIGVuYWJsZWQsIGZhbHNlIGlmIGRpc2FibGVkXG4gKiBgYGBcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0ZXh0IGNvbG9yIGlzIGVuYWJsZWQsIGBmYWxzZWAgb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xvckVuYWJsZWQoKTogYm9vbGVhbiB7XG4gIHJldHVybiBlbmFibGVkO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBjb2xvciBjb2RlXG4gKiBAcGFyYW0gb3BlblxuICogQHBhcmFtIGNsb3NlXG4gKi9cbmZ1bmN0aW9uIGNvZGUob3BlbjogbnVtYmVyW10sIGNsb3NlOiBudW1iZXIpOiBDb2RlIHtcbiAgcmV0dXJuIHtcbiAgICBvcGVuOiBgXFx4MWJbJHtvcGVuLmpvaW4oXCI7XCIpfW1gLFxuICAgIGNsb3NlOiBgXFx4MWJbJHtjbG9zZX1tYCxcbiAgICByZWdleHA6IG5ldyBSZWdFeHAoYFxcXFx4MWJcXFxcWyR7Y2xvc2V9bWAsIFwiZ1wiKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIGNvbG9yIGFuZCBiYWNrZ3JvdW5kIGJhc2VkIG9uIGNvbG9yIGNvZGUgYW5kIGl0cyBhc3NvY2lhdGVkIHRleHRcbiAqIEBwYXJhbSBzdHIgVGhlIHRleHQgdG8gYXBwbHkgY29sb3Igc2V0dGluZ3MgdG9cbiAqIEBwYXJhbSBjb2RlIFRoZSBjb2xvciBjb2RlIHRvIGFwcGx5XG4gKi9cbmZ1bmN0aW9uIHJ1bihzdHI6IHN0cmluZywgY29kZTogQ29kZSk6IHN0cmluZyB7XG4gIHJldHVybiBlbmFibGVkXG4gICAgPyBgJHtjb2RlLm9wZW59JHtzdHIucmVwbGFjZShjb2RlLnJlZ2V4cCwgY29kZS5vcGVuKX0ke2NvZGUuY2xvc2V9YFxuICAgIDogc3RyO1xufVxuXG4vKipcbiAqIFJlc2V0IHRoZSB0ZXh0IG1vZGlmaWVkLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBuby1hc3NlcnRcbiAqIGltcG9ydCB7IHJlc2V0IH0gZnJvbSBcIkBzdGQvZm10L2NvbG9yc1wiO1xuICpcbiAqIGNvbnNvbGUubG9nKHJlc2V0KFwiSGVsbG8sIHdvcmxkIVwiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIFRoZSB0ZXh0IHRvIHJlc2V0XG4gKiBAcmV0dXJucyBUaGUgdGV4dCB3aXRoIHJlc2V0IGNvbG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNldChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFswXSwgMCkpO1xufVxuXG4vKipcbiAqIE1ha2UgdGhlIHRleHQgYm9sZC5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHMgbm8tYXNzZXJ0XG4gKiBpbXBvcnQgeyBib2xkIH0gZnJvbSBcIkBzdGQvZm10L2NvbG9yc1wiO1xuICpcbiAqIGNvbnNvbGUubG9nKGJvbGQoXCJIZWxsbywgd29ybGQhXCIpKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzdHIgVGhlIHRleHQgdG8gbWFrZSBib2xkXG4gKiBAcmV0dXJucyBUaGUgYm9sZCB0ZXh0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBib2xkKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzFdLCAyMikpO1xufVxuXG4vKipcbiAqIFRoZSB0ZXh0IGVtaXRzIG9ubHkgYSBzbWFsbCBhbW91bnQgb2YgbGlnaHQuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzIG5vLWFzc2VydFxuICogaW1wb3J0IHsgZGltIH0gZnJvbSBcIkBzdGQvZm10L2NvbG9yc1wiO1xuICpcbiAqIGNvbnNvbGUubG9nKGRpbShcIkhlbGxvLCB3b3JsZCFcIikpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHN0ciBUaGUgdGV4dCB0byBkaW1cbiAqIEByZXR1cm5zIFRoZSBkaW1tZWQgdGV4dFxuICpcbiAqIFdhcm5pbmc6IE5vdCBhbGwgdGVybWluYWwgZW11bGF0b3JzIHN1cHBvcnQgYGRpbWAuXG4gKiBGb3IgY29tcGF0aWJpbGl0eSBhY3Jvc3MgYWxsIHRlcm1pbmFscywgdXNlIHtAbGlua2NvZGUgZ3JheX0gb3Ige0BsaW5rY29kZSBicmlnaHRCbGFja30gaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpbShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFsyXSwgMjIpKTtcbn1cblxuLyoqXG4gKiBNYWtlIHRoZSB0ZXh0IGl0YWxpYy5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHMgbm8tYXNzZXJ0XG4gKiBpbXBvcnQgeyBpdGFsaWMgfSBmcm9tIFwiQHN0ZC9mbXQvY29sb3JzXCI7XG4gKlxuICogY29uc29sZS5sb2coaXRhbGljKFwiSGVsbG8sIHdvcmxkIVwiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIFRoZSB0ZXh0IHRvIG1ha2UgaXRhbGljXG4gKiBAcmV0dXJucyBUaGUgaXRhbGljIHRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGl0YWxpYyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFszXSwgMjMpKTtcbn1cblxuLyoqXG4gKiBNYWtlIHRoZSB0ZXh0IHVuZGVybGluZS5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHMgbm8tYXNzZXJ0XG4gKiBpbXBvcnQgeyB1bmRlcmxpbmUgfSBmcm9tIFwiQHN0ZC9mbXQvY29sb3JzXCI7XG4gKlxuICogY29uc29sZS5sb2codW5kZXJsaW5lKFwiSGVsbG8sIHdvcmxkIVwiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIFRoZSB0ZXh0IHRvIHVuZGVybGluZVxuICogQHJldHVybnMgVGhlIHVuZGVybGluZWQgdGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5kZXJsaW5lKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzRdLCAyNCkpO1xufVxuXG4vKipcbiAqIEludmVydCBiYWNrZ3JvdW5kIGNvbG9yIGFuZCB0ZXh0IGNvbG9yLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBuby1hc3NlcnRcbiAqIGltcG9ydCB7IGludmVyc2UgfSBmcm9tIFwiQHN0ZC9mbXQvY29sb3JzXCI7XG4gKlxuICogY29uc29sZS5sb2coaW52ZXJzZShcIkhlbGxvLCB3b3JsZCFcIikpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHN0ciBUaGUgdGV4dCB0byBpbnZlcnQgaXRzIGNvbG9yXG4gKiBAcmV0dXJucyBUaGUgaW52ZXJ0ZWQgdGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gaW52ZXJzZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs3XSwgMjcpKTtcbn1cblxuLyoqXG4gKiBNYWtlIHRoZSB0ZXh0IGhpZGRlbi5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHMgbm8tYXNzZXJ0XG4gKiBpbXBvcnQgeyBoaWRkZW4gfSBmcm9tIFwiQHN0ZC9mbXQvY29sb3JzXCI7XG4gKlxuICogY29uc29sZS5sb2coaGlkZGVuKFwiSGVsbG8sIHdvcmxkIVwiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIFRoZSB0ZXh0IHRvIGhpZGVcbiAqIEByZXR1cm5zIFRoZSBoaWRkZW4gdGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gaGlkZGVuKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzhdLCAyOCkpO1xufVxuXG4vKipcbiAqIFB1dCBob3Jpem9udGFsIGxpbmUgdGhyb3VnaCB0aGUgY2VudGVyIG9mIHRoZSB0ZXh0LlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBuby1hc3NlcnRcbiAqIGltcG9ydCB7IHN0cmlrZXRocm91Z2ggfSBmcm9tIFwiQHN0ZC9mbXQvY29sb3JzXCI7XG4gKlxuICogY29uc29sZS5sb2coc3RyaWtldGhyb3VnaChcIkhlbGxvLCB3b3JsZCFcIikpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHN0ciBUaGUgdGV4dCB0byBzdHJpa2UgdGhyb3VnaFxuICogQHJldHVybnMgVGhlIHRleHQgd2l0aCBob3Jpem9udGFsIGxpbmUgdGhyb3VnaCB0aGUgY2VudGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpa2V0aHJvdWdoKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzldLCAyOSkpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHRvIGJsYWNrLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBuby1hc3NlcnRcbiAqIGltcG9ydCB7IGJsYWNrIH0gZnJvbSBcIkBzdGQvZm10L2NvbG9yc1wiO1xuICpcbiAqIGNvbnNvbGUubG9nKGJsYWNrKFwiSGVsbG8sIHdvcmxkIVwiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIFRoZSB0ZXh0IHRvIG1ha2UgYmxhY2tcbiAqIEByZXR1cm5zIFRoZSBibGFjayB0ZXh0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBibGFjayhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFszMF0sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gcmVkLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBuby1hc3NlcnRcbiAqIGltcG9ydCB7IHJlZCB9IGZyb20gXCJAc3RkL2ZtdC9jb2xvcnNcIjtcbiAqXG4gKiBjb25zb2xlLmxvZyhyZWQoXCJIZWxsbywgd29ybGQhXCIpKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzdHIgVGhlIHRleHQgdG8gbWFrZSByZWRcbiAqIEByZXR1cm5zIFRoZSByZWQgdGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVkKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzMxXSwgMzkpKTtcbn1cblxuLyoqXG4gKiBTZXQgdGV4dCBjb2xvciB0byBncmVlbi5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHMgbm8tYXNzZXJ0XG4gKiBpbXBvcnQgeyBncmVlbiB9IGZyb20gXCJAc3RkL2ZtdC9jb2xvcnNcIjtcbiAqXG4gKiBjb25zb2xlLmxvZyhncmVlbihcIkhlbGxvLCB3b3JsZCFcIikpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHN0ciBUaGUgdGV4dCB0byBtYWtlIGdyZWVuXG4gKiBAcmV0dXJucyBUaGUgZ3JlZW4gdGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3JlZW4oc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMzJdLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHRvIHllbGxvdy5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHMgbm8tYXNzZXJ0XG4gKiBpbXBvcnQgeyB5ZWxsb3cgfSBmcm9tIFwiQHN0ZC9mbXQvY29sb3JzXCI7XG4gKlxuICogY29uc29sZS5sb2coeWVsbG93KFwiSGVsbG8sIHdvcmxkIVwiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIFRoZSB0ZXh0IHRvIG1ha2UgeWVsbG93XG4gKiBAcmV0dXJucyBUaGUgeWVsbG93IHRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHllbGxvdyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFszM10sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gYmx1ZS5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHMgbm8tYXNzZXJ0XG4gKiBpbXBvcnQgeyBibHVlIH0gZnJvbSBcIkBzdGQvZm10L2NvbG9yc1wiO1xuICpcbiAqIGNvbnNvbGUubG9nKGJsdWUoXCJIZWxsbywgd29ybGQhXCIpKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzdHIgVGhlIHRleHQgdG8gbWFrZSBibHVlXG4gKiBAcmV0dXJucyBUaGUgYmx1ZSB0ZXh0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBibHVlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzM0XSwgMzkpKTtcbn1cblxuLyoqXG4gKiBTZXQgdGV4dCBjb2xvciB0byBtYWdlbnRhLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBuby1hc3NlcnRcbiAqIGltcG9ydCB7IG1hZ2VudGEgfSBmcm9tIFwiQHN0ZC9mbXQvY29sb3JzXCI7XG4gKlxuICogY29uc29sZS5sb2cobWFnZW50YShcIkhlbGxvLCB3b3JsZCFcIikpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHN0ciBUaGUgdGV4dCB0byBtYWtlIG1hZ2VudGFcbiAqIEByZXR1cm5zIFRoZSBtYWdlbnRhIHRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hZ2VudGEoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMzVdLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHRvIGN5YW4uXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzIG5vLWFzc2VydFxuICogaW1wb3J0IHsgY3lhbiB9IGZyb20gXCJAc3RkL2ZtdC9jb2xvcnNcIjtcbiAqXG4gKiBjb25zb2xlLmxvZyhjeWFuKFwiSGVsbG8sIHdvcmxkIVwiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIFRoZSB0ZXh0IHRvIG1ha2UgY3lhblxuICogQHJldHVybnMgVGhlIGN5YW4gdGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3lhbihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFszNl0sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gd2hpdGUuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzIG5vLWFzc2VydFxuICogaW1wb3J0IHsgd2hpdGUgfSBmcm9tIFwiQHN0ZC9mbXQvY29sb3JzXCI7XG4gKlxuICogY29uc29sZS5sb2cod2hpdGUoXCJIZWxsbywgd29ybGQhXCIpKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzdHIgVGhlIHRleHQgdG8gbWFrZSB3aGl0ZVxuICogQHJldHVybnMgVGhlIHdoaXRlIHRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdoaXRlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzM3XSwgMzkpKTtcbn1cblxuLyoqXG4gKiBTZXQgdGV4dCBjb2xvciB0byBncmF5LlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBuby1hc3NlcnRcbiAqIGltcG9ydCB7IGdyYXkgfSBmcm9tIFwiQHN0ZC9mbXQvY29sb3JzXCI7XG4gKlxuICogY29uc29sZS5sb2coZ3JheShcIkhlbGxvLCB3b3JsZCFcIikpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHN0ciBUaGUgdGV4dCB0byBtYWtlIGdyYXlcbiAqIEByZXR1cm5zIFRoZSBncmF5IHRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdyYXkoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYnJpZ2h0QmxhY2soc3RyKTtcbn1cblxuLyoqXG4gKiBTZXQgdGV4dCBjb2xvciB0byBicmlnaHQgYmxhY2suXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzIG5vLWFzc2VydFxuICogaW1wb3J0IHsgYnJpZ2h0QmxhY2sgfSBmcm9tIFwiQHN0ZC9mbXQvY29sb3JzXCI7XG4gKlxuICogY29uc29sZS5sb2coYnJpZ2h0QmxhY2soXCJIZWxsbywgd29ybGQhXCIpKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzdHIgVGhlIHRleHQgdG8gbWFrZSBicmlnaHQgYmxhY2tcbiAqIEByZXR1cm5zIFRoZSBicmlnaHQgYmxhY2sgdGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gYnJpZ2h0QmxhY2soc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbOTBdLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHRvIGJyaWdodCByZWQuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzIG5vLWFzc2VydFxuICogaW1wb3J0IHsgYnJpZ2h0UmVkIH0gZnJvbSBcIkBzdGQvZm10L2NvbG9yc1wiO1xuICpcbiAqIGNvbnNvbGUubG9nKGJyaWdodFJlZChcIkhlbGxvLCB3b3JsZCFcIikpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHN0ciBUaGUgdGV4dCB0byBtYWtlIGJyaWdodCByZWRcbiAqIEByZXR1cm5zIFRoZSBicmlnaHQgcmVkIHRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyaWdodFJlZChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs5MV0sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gYnJpZ2h0IGdyZWVuLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBuby1hc3NlcnRcbiAqIGltcG9ydCB7IGJyaWdodEdyZWVuIH0gZnJvbSBcIkBzdGQvZm10L2NvbG9yc1wiO1xuICpcbiAqIGNvbnNvbGUubG9nKGJyaWdodEdyZWVuKFwiSGVsbG8sIHdvcmxkIVwiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIFRoZSB0ZXh0IHRvIG1ha2UgYnJpZ2h0IGdyZWVuXG4gKiBAcmV0dXJucyBUaGUgYnJpZ2h0IGdyZWVuIHRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyaWdodEdyZWVuKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzkyXSwgMzkpKTtcbn1cblxuLyoqXG4gKiBTZXQgdGV4dCBjb2xvciB0byBicmlnaHQgeWVsbG93LlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBuby1hc3NlcnRcbiAqIGltcG9ydCB7IGJyaWdodFllbGxvdyB9IGZyb20gXCJAc3RkL2ZtdC9jb2xvcnNcIjtcbiAqXG4gKiBjb25zb2xlLmxvZyhicmlnaHRZZWxsb3coXCJIZWxsbywgd29ybGQhXCIpKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzdHIgVGhlIHRleHQgdG8gbWFrZSBicmlnaHQgeWVsbG93XG4gKiBAcmV0dXJucyBUaGUgYnJpZ2h0IHllbGxvdyB0ZXh0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBicmlnaHRZZWxsb3coc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbOTNdLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHRvIGJyaWdodCBibHVlLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBuby1hc3NlcnRcbiAqIGltcG9ydCB7IGJyaWdodEJsdWUgfSBmcm9tIFwiQHN0ZC9mbXQvY29sb3JzXCI7XG4gKlxuICogY29uc29sZS5sb2coYnJpZ2h0Qmx1ZShcIkhlbGxvLCB3b3JsZCFcIikpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHN0ciBUaGUgdGV4dCB0byBtYWtlIGJyaWdodCBibHVlXG4gKiBAcmV0dXJucyBUaGUgYnJpZ2h0IGJsdWUgdGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gYnJpZ2h0Qmx1ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs5NF0sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IHRleHQgY29sb3IgdG8gYnJpZ2h0IG1hZ2VudGEuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzIG5vLWFzc2VydFxuICogaW1wb3J0IHsgYnJpZ2h0TWFnZW50YSB9IGZyb20gXCJAc3RkL2ZtdC9jb2xvcnNcIjtcbiAqXG4gKiBjb25zb2xlLmxvZyhicmlnaHRNYWdlbnRhKFwiSGVsbG8sIHdvcmxkIVwiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIFRoZSB0ZXh0IHRvIG1ha2UgYnJpZ2h0IG1hZ2VudGFcbiAqIEByZXR1cm5zIFRoZSBicmlnaHQgbWFnZW50YSB0ZXh0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBicmlnaHRNYWdlbnRhKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzk1XSwgMzkpKTtcbn1cblxuLyoqXG4gKiBTZXQgdGV4dCBjb2xvciB0byBicmlnaHQgY3lhbi5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHMgbm8tYXNzZXJ0XG4gKiBpbXBvcnQgeyBicmlnaHRDeWFuIH0gZnJvbSBcIkBzdGQvZm10L2NvbG9yc1wiO1xuICpcbiAqIGNvbnNvbGUubG9nKGJyaWdodEN5YW4oXCJIZWxsbywgd29ybGQhXCIpKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzdHIgVGhlIHRleHQgdG8gbWFrZSBicmlnaHQgY3lhblxuICogQHJldHVybnMgVGhlIGJyaWdodCBjeWFuIHRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyaWdodEN5YW4oc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbOTZdLCAzOSkpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHRvIGJyaWdodCB3aGl0ZS5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHMgbm8tYXNzZXJ0XG4gKiBpbXBvcnQgeyBicmlnaHRXaGl0ZSB9IGZyb20gXCJAc3RkL2ZtdC9jb2xvcnNcIjtcbiAqXG4gKiBjb25zb2xlLmxvZyhicmlnaHRXaGl0ZShcIkhlbGxvLCB3b3JsZCFcIikpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHN0ciBUaGUgdGV4dCB0byBtYWtlIGJyaWdodCB3aGl0ZVxuICogQHJldHVybnMgVGhlIGJyaWdodCB3aGl0ZSB0ZXh0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBicmlnaHRXaGl0ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs5N10sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IGJhY2tncm91bmQgY29sb3IgdG8gYmxhY2suXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzIG5vLWFzc2VydFxuICogaW1wb3J0IHsgYmdCbGFjayB9IGZyb20gXCJAc3RkL2ZtdC9jb2xvcnNcIjtcbiAqXG4gKiBjb25zb2xlLmxvZyhiZ0JsYWNrKFwiSGVsbG8sIHdvcmxkIVwiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIFRoZSB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgYmxhY2tcbiAqIEByZXR1cm5zIFRoZSB0ZXh0IHdpdGggYmxhY2sgYmFja2dyb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gYmdCbGFjayhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs0MF0sIDQ5KSk7XG59XG5cbi8qKlxuICogU2V0IGJhY2tncm91bmQgY29sb3IgdG8gcmVkLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBuby1hc3NlcnRcbiAqIGltcG9ydCB7IGJnUmVkIH0gZnJvbSBcIkBzdGQvZm10L2NvbG9yc1wiO1xuICpcbiAqIGNvbnNvbGUubG9nKGJnUmVkKFwiSGVsbG8sIHdvcmxkIVwiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIFRoZSB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgcmVkXG4gKiBAcmV0dXJucyBUaGUgdGV4dCB3aXRoIHJlZCBiYWNrZ3JvdW5kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ1JlZChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs0MV0sIDQ5KSk7XG59XG5cbi8qKlxuICogU2V0IGJhY2tncm91bmQgY29sb3IgdG8gZ3JlZW4uXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzIG5vLWFzc2VydFxuICogaW1wb3J0IHsgYmdHcmVlbiB9IGZyb20gXCJAc3RkL2ZtdC9jb2xvcnNcIjtcbiAqXG4gKiBjb25zb2xlLmxvZyhiZ0dyZWVuKFwiSGVsbG8sIHdvcmxkIVwiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIFRoZSB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgZ3JlZW5cbiAqIEByZXR1cm5zIFRoZSB0ZXh0IHdpdGggZ3JlZW4gYmFja2dyb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gYmdHcmVlbihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs0Ml0sIDQ5KSk7XG59XG5cbi8qKlxuICogU2V0IGJhY2tncm91bmQgY29sb3IgdG8geWVsbG93LlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBuby1hc3NlcnRcbiAqIGltcG9ydCB7IGJnWWVsbG93IH0gZnJvbSBcIkBzdGQvZm10L2NvbG9yc1wiO1xuICpcbiAqIGNvbnNvbGUubG9nKGJnWWVsbG93KFwiSGVsbG8sIHdvcmxkIVwiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIFRoZSB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgeWVsbG93XG4gKiBAcmV0dXJucyBUaGUgdGV4dCB3aXRoIHllbGxvdyBiYWNrZ3JvdW5kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ1llbGxvdyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs0M10sIDQ5KSk7XG59XG5cbi8qKlxuICogU2V0IGJhY2tncm91bmQgY29sb3IgdG8gYmx1ZS5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHMgbm8tYXNzZXJ0XG4gKiBpbXBvcnQgeyBiZ0JsdWUgfSBmcm9tIFwiQHN0ZC9mbXQvY29sb3JzXCI7XG4gKlxuICogY29uc29sZS5sb2coYmdCbHVlKFwiSGVsbG8sIHdvcmxkIVwiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIFRoZSB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgYmx1ZVxuICogQHJldHVybnMgVGhlIHRleHQgd2l0aCBibHVlIGJhY2tncm91bmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJnQmx1ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFs0NF0sIDQ5KSk7XG59XG5cbi8qKlxuICogIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIG1hZ2VudGEuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzIG5vLWFzc2VydFxuICogaW1wb3J0IHsgYmdNYWdlbnRhIH0gZnJvbSBcIkBzdGQvZm10L2NvbG9yc1wiO1xuICpcbiAqIGNvbnNvbGUubG9nKGJnTWFnZW50YShcIkhlbGxvLCB3b3JsZCFcIikpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHN0ciBUaGUgdGV4dCB0byBtYWtlIGl0cyBiYWNrZ3JvdW5kIG1hZ2VudGFcbiAqIEByZXR1cm5zIFRoZSB0ZXh0IHdpdGggbWFnZW50YSBiYWNrZ3JvdW5kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ01hZ2VudGEoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbNDVdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGN5YW4uXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzIG5vLWFzc2VydFxuICogaW1wb3J0IHsgYmdDeWFuIH0gZnJvbSBcIkBzdGQvZm10L2NvbG9yc1wiO1xuICpcbiAqIGNvbnNvbGUubG9nKGJnQ3lhbihcIkhlbGxvLCB3b3JsZCFcIikpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHN0ciBUaGUgdGV4dCB0byBtYWtlIGl0cyBiYWNrZ3JvdW5kIGN5YW5cbiAqIEByZXR1cm5zIFRoZSB0ZXh0IHdpdGggY3lhbiBiYWNrZ3JvdW5kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ0N5YW4oc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbNDZdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIHdoaXRlLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBuby1hc3NlcnRcbiAqIGltcG9ydCB7IGJnV2hpdGUgfSBmcm9tIFwiQHN0ZC9mbXQvY29sb3JzXCI7XG4gKlxuICogY29uc29sZS5sb2coYmdXaGl0ZShcIkhlbGxvLCB3b3JsZCFcIikpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHN0ciBUaGUgdGV4dCB0byBtYWtlIGl0cyBiYWNrZ3JvdW5kIHdoaXRlXG4gKiBAcmV0dXJucyBUaGUgdGV4dCB3aXRoIHdoaXRlIGJhY2tncm91bmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJnV2hpdGUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbNDddLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJyaWdodCBibGFjay5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHMgbm8tYXNzZXJ0XG4gKiBpbXBvcnQgeyBiZ0JyaWdodEJsYWNrIH0gZnJvbSBcIkBzdGQvZm10L2NvbG9yc1wiO1xuICpcbiAqIGNvbnNvbGUubG9nKGJnQnJpZ2h0QmxhY2soXCJIZWxsbywgd29ybGQhXCIpKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzdHIgVGhlIHRleHQgdG8gbWFrZSBpdHMgYmFja2dyb3VuZCBicmlnaHQgYmxhY2tcbiAqIEByZXR1cm5zIFRoZSB0ZXh0IHdpdGggYnJpZ2h0IGJsYWNrIGJhY2tncm91bmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJnQnJpZ2h0QmxhY2soc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMTAwXSwgNDkpKTtcbn1cblxuLyoqXG4gKiBTZXQgYmFja2dyb3VuZCBjb2xvciB0byBicmlnaHQgcmVkLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBuby1hc3NlcnRcbiAqIGltcG9ydCB7IGJnQnJpZ2h0UmVkIH0gZnJvbSBcIkBzdGQvZm10L2NvbG9yc1wiO1xuICpcbiAqIGNvbnNvbGUubG9nKGJnQnJpZ2h0UmVkKFwiSGVsbG8sIHdvcmxkIVwiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIFRoZSB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgYnJpZ2h0IHJlZFxuICogQHJldHVybnMgVGhlIHRleHQgd2l0aCBicmlnaHQgcmVkIGJhY2tncm91bmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJnQnJpZ2h0UmVkKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzEwMV0sIDQ5KSk7XG59XG5cbi8qKlxuICogU2V0IGJhY2tncm91bmQgY29sb3IgdG8gYnJpZ2h0IGdyZWVuLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBuby1hc3NlcnRcbiAqIGltcG9ydCB7IGJnQnJpZ2h0R3JlZW4gfSBmcm9tIFwiQHN0ZC9mbXQvY29sb3JzXCI7XG4gKlxuICogY29uc29sZS5sb2coYmdCcmlnaHRHcmVlbihcIkhlbGxvLCB3b3JsZCFcIikpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHN0ciBUaGUgdGV4dCB0byBtYWtlIGl0cyBiYWNrZ3JvdW5kIGJyaWdodCBncmVlblxuICogQHJldHVybnMgVGhlIHRleHQgd2l0aCBicmlnaHQgZ3JlZW4gYmFja2dyb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gYmdCcmlnaHRHcmVlbihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFsxMDJdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJyaWdodCB5ZWxsb3cuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzIG5vLWFzc2VydFxuICogaW1wb3J0IHsgYmdCcmlnaHRZZWxsb3cgfSBmcm9tIFwiQHN0ZC9mbXQvY29sb3JzXCI7XG4gKlxuICogY29uc29sZS5sb2coYmdCcmlnaHRZZWxsb3coXCJIZWxsbywgd29ybGQhXCIpKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzdHIgVGhlIHRleHQgdG8gbWFrZSBpdHMgYmFja2dyb3VuZCBicmlnaHQgeWVsbG93XG4gKiBAcmV0dXJucyBUaGUgdGV4dCB3aXRoIGJyaWdodCB5ZWxsb3cgYmFja2dyb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gYmdCcmlnaHRZZWxsb3coc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMTAzXSwgNDkpKTtcbn1cblxuLyoqXG4gKiBTZXQgYmFja2dyb3VuZCBjb2xvciB0byBicmlnaHQgYmx1ZS5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHMgbm8tYXNzZXJ0XG4gKiBpbXBvcnQgeyBiZ0JyaWdodEJsdWUgfSBmcm9tIFwiQHN0ZC9mbXQvY29sb3JzXCI7XG4gKlxuICogY29uc29sZS5sb2coYmdCcmlnaHRCbHVlKFwiSGVsbG8sIHdvcmxkIVwiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIFRoZSB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgYnJpZ2h0IGJsdWVcbiAqIEByZXR1cm5zIFRoZSB0ZXh0IHdpdGggYnJpZ2h0IGJsdWUgYmFja2dyb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gYmdCcmlnaHRCbHVlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzEwNF0sIDQ5KSk7XG59XG5cbi8qKlxuICogU2V0IGJhY2tncm91bmQgY29sb3IgdG8gYnJpZ2h0IG1hZ2VudGEuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzIG5vLWFzc2VydFxuICogaW1wb3J0IHsgYmdCcmlnaHRNYWdlbnRhIH0gZnJvbSBcIkBzdGQvZm10L2NvbG9yc1wiO1xuICpcbiAqIGNvbnNvbGUubG9nKGJnQnJpZ2h0TWFnZW50YShcIkhlbGxvLCB3b3JsZCFcIikpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHN0ciBUaGUgdGV4dCB0byBtYWtlIGl0cyBiYWNrZ3JvdW5kIGJyaWdodCBtYWdlbnRhXG4gKiBAcmV0dXJucyBUaGUgdGV4dCB3aXRoIGJyaWdodCBtYWdlbnRhIGJhY2tncm91bmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJnQnJpZ2h0TWFnZW50YShzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBydW4oc3RyLCBjb2RlKFsxMDVdLCA0OSkpO1xufVxuXG4vKipcbiAqIFNldCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJyaWdodCBjeWFuLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBuby1hc3NlcnRcbiAqIGltcG9ydCB7IGJnQnJpZ2h0Q3lhbiB9IGZyb20gXCJAc3RkL2ZtdC9jb2xvcnNcIjtcbiAqXG4gKiBjb25zb2xlLmxvZyhiZ0JyaWdodEN5YW4oXCJIZWxsbywgd29ybGQhXCIpKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzdHIgVGhlIHRleHQgdG8gbWFrZSBpdHMgYmFja2dyb3VuZCBicmlnaHQgY3lhblxuICogQHJldHVybnMgVGhlIHRleHQgd2l0aCBicmlnaHQgY3lhbiBiYWNrZ3JvdW5kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ0JyaWdodEN5YW4oc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbMTA2XSwgNDkpKTtcbn1cblxuLyoqXG4gKiBTZXQgYmFja2dyb3VuZCBjb2xvciB0byBicmlnaHQgd2hpdGUuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzIG5vLWFzc2VydFxuICogaW1wb3J0IHsgYmdCcmlnaHRXaGl0ZSB9IGZyb20gXCJAc3RkL2ZtdC9jb2xvcnNcIjtcbiAqXG4gKiBjb25zb2xlLmxvZyhiZ0JyaWdodFdoaXRlKFwiSGVsbG8sIHdvcmxkIVwiKSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIFRoZSB0ZXh0IHRvIG1ha2UgaXRzIGJhY2tncm91bmQgYnJpZ2h0IHdoaXRlXG4gKiBAcmV0dXJucyBUaGUgdGV4dCB3aXRoIGJyaWdodCB3aGl0ZSBiYWNrZ3JvdW5kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ0JyaWdodFdoaXRlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzEwN10sIDQ5KSk7XG59XG5cbi8qIFNwZWNpYWwgQ29sb3IgU2VxdWVuY2VzICovXG5cbi8qKlxuICogQ2xhbSBhbmQgdHJ1bmNhdGUgY29sb3IgY29kZXNcbiAqIEBwYXJhbSBuIFRoZSBpbnB1dCBudW1iZXJcbiAqIEBwYXJhbSBtYXggVGhlIG51bWJlciB0byB0cnVuY2F0ZSB0b1xuICogQHBhcmFtIG1pbiBUaGUgbnVtYmVyIHRvIHRydW5jYXRlIGZyb21cbiAqL1xuZnVuY3Rpb24gY2xhbXBBbmRUcnVuY2F0ZShuOiBudW1iZXIsIG1heCA9IDI1NSwgbWluID0gMCk6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLnRydW5jKE1hdGgubWF4KE1hdGgubWluKG4sIG1heCksIG1pbikpO1xufVxuXG4vKipcbiAqIFNldCB0ZXh0IGNvbG9yIHVzaW5nIHBhbGV0dGVkIDhiaXQgY29sb3JzLlxuICogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQU5TSV9lc2NhcGVfY29kZSM4LWJpdFxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBuby1hc3NlcnRcbiAqIGltcG9ydCB7IHJnYjggfSBmcm9tIFwiQHN0ZC9mbXQvY29sb3JzXCI7XG4gKlxuICogY29uc29sZS5sb2cocmdiOChcIkhlbGxvLCB3b3JsZCFcIiwgNDIpKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzdHIgVGhlIHRleHQgY29sb3IgdG8gYXBwbHkgcGFsZXR0ZWQgOGJpdCBjb2xvcnMgdG9cbiAqIEBwYXJhbSBjb2xvciBUaGUgY29sb3IgY29kZVxuICogQHJldHVybnMgVGhlIHRleHQgd2l0aCBwYWxldHRlZCA4Yml0IGNvbG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZ2I4KHN0cjogc3RyaW5nLCBjb2xvcjogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJ1bihzdHIsIGNvZGUoWzM4LCA1LCBjbGFtcEFuZFRydW5jYXRlKGNvbG9yKV0sIDM5KSk7XG59XG5cbi8qKlxuICogU2V0IGJhY2tncm91bmQgY29sb3IgdXNpbmcgcGFsZXR0ZWQgOGJpdCBjb2xvcnMuXG4gKiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BTlNJX2VzY2FwZV9jb2RlIzgtYml0XG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzIG5vLWFzc2VydFxuICogaW1wb3J0IHsgYmdSZ2I4IH0gZnJvbSBcIkBzdGQvZm10L2NvbG9yc1wiO1xuICpcbiAqIGNvbnNvbGUubG9nKGJnUmdiOChcIkhlbGxvLCB3b3JsZCFcIiwgNDIpKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzdHIgVGhlIHRleHQgY29sb3IgdG8gYXBwbHkgcGFsZXR0ZWQgOGJpdCBiYWNrZ3JvdW5kIGNvbG9ycyB0b1xuICogQHBhcmFtIGNvbG9yIGNvZGVcbiAqIEByZXR1cm5zIFRoZSB0ZXh0IHdpdGggcGFsZXR0ZWQgOGJpdCBiYWNrZ3JvdW5kIGNvbG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiZ1JnYjgoc3RyOiBzdHJpbmcsIGNvbG9yOiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gcnVuKHN0ciwgY29kZShbNDgsIDUsIGNsYW1wQW5kVHJ1bmNhdGUoY29sb3IpXSwgNDkpKTtcbn1cblxuLyoqXG4gKiBTZXQgdGV4dCBjb2xvciB1c2luZyAyNGJpdCByZ2IuXG4gKiBgY29sb3JgIGNhbiBiZSBhIG51bWJlciBpbiByYW5nZSBgMHgwMDAwMDBgIHRvIGAweGZmZmZmZmAgb3JcbiAqIGFuIGBSZ2JgLlxuICpcbiAqIEBleGFtcGxlIFRvIHByb2R1Y2UgdGhlIGNvbG9yIG1hZ2VudGE6XG4gKiBgYGB0cyBuby1hc3NlcnRcbiAqIGltcG9ydCB7IHJnYjI0IH0gZnJvbSBcIkBzdGQvZm10L2NvbG9yc1wiO1xuICpcbiAqIHJnYjI0KFwiZm9vXCIsIDB4ZmYwMGZmKTtcbiAqIHJnYjI0KFwiZm9vXCIsIHtyOiAyNTUsIGc6IDAsIGI6IDI1NX0pO1xuICogYGBgXG4gKiBAcGFyYW0gc3RyIFRoZSB0ZXh0IGNvbG9yIHRvIGFwcGx5IDI0Yml0IHJnYiB0b1xuICogQHBhcmFtIGNvbG9yIFRoZSBjb2xvciBjb2RlXG4gKiBAcmV0dXJucyBUaGUgdGV4dCB3aXRoIDI0Yml0IHJnYiBjb2xvclxuICovXG5leHBvcnQgZnVuY3Rpb24gcmdiMjQoc3RyOiBzdHJpbmcsIGNvbG9yOiBudW1iZXIgfCBSZ2IpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIGNvbG9yID09PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIHJ1bihcbiAgICAgIHN0cixcbiAgICAgIGNvZGUoXG4gICAgICAgIFszOCwgMiwgKGNvbG9yID4+IDE2KSAmIDB4ZmYsIChjb2xvciA+PiA4KSAmIDB4ZmYsIGNvbG9yICYgMHhmZl0sXG4gICAgICAgIDM5LFxuICAgICAgKSxcbiAgICApO1xuICB9XG4gIHJldHVybiBydW4oXG4gICAgc3RyLFxuICAgIGNvZGUoXG4gICAgICBbXG4gICAgICAgIDM4LFxuICAgICAgICAyLFxuICAgICAgICBjbGFtcEFuZFRydW5jYXRlKGNvbG9yLnIpLFxuICAgICAgICBjbGFtcEFuZFRydW5jYXRlKGNvbG9yLmcpLFxuICAgICAgICBjbGFtcEFuZFRydW5jYXRlKGNvbG9yLmIpLFxuICAgICAgXSxcbiAgICAgIDM5LFxuICAgICksXG4gICk7XG59XG5cbi8qKlxuICogU2V0IGJhY2tncm91bmQgY29sb3IgdXNpbmcgMjRiaXQgcmdiLlxuICogYGNvbG9yYCBjYW4gYmUgYSBudW1iZXIgaW4gcmFuZ2UgYDB4MDAwMDAwYCB0byBgMHhmZmZmZmZgIG9yXG4gKiBhbiBgUmdiYC5cbiAqXG4gKiBAZXhhbXBsZSBUbyBwcm9kdWNlIHRoZSBjb2xvciBtYWdlbnRhOlxuICogYGBgdHMgbm8tYXNzZXJ0XG4gKiBpbXBvcnQgeyBiZ1JnYjI0IH0gZnJvbSBcIkBzdGQvZm10L2NvbG9yc1wiO1xuICpcbiAqIGJnUmdiMjQoXCJmb29cIiwgMHhmZjAwZmYpO1xuICogYmdSZ2IyNChcImZvb1wiLCB7cjogMjU1LCBnOiAwLCBiOiAyNTV9KTtcbiAqIGBgYFxuICogQHBhcmFtIHN0ciBUaGUgdGV4dCBjb2xvciB0byBhcHBseSAyNGJpdCByZ2IgdG9cbiAqIEBwYXJhbSBjb2xvciBUaGUgY29sb3IgY29kZVxuICogQHJldHVybnMgVGhlIHRleHQgd2l0aCAyNGJpdCByZ2IgY29sb3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJnUmdiMjQoc3RyOiBzdHJpbmcsIGNvbG9yOiBudW1iZXIgfCBSZ2IpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIGNvbG9yID09PSBcIm51bWJlclwiKSB7XG4gICAgcmV0dXJuIHJ1bihcbiAgICAgIHN0cixcbiAgICAgIGNvZGUoXG4gICAgICAgIFs0OCwgMiwgKGNvbG9yID4+IDE2KSAmIDB4ZmYsIChjb2xvciA+PiA4KSAmIDB4ZmYsIGNvbG9yICYgMHhmZl0sXG4gICAgICAgIDQ5LFxuICAgICAgKSxcbiAgICApO1xuICB9XG4gIHJldHVybiBydW4oXG4gICAgc3RyLFxuICAgIGNvZGUoXG4gICAgICBbXG4gICAgICAgIDQ4LFxuICAgICAgICAyLFxuICAgICAgICBjbGFtcEFuZFRydW5jYXRlKGNvbG9yLnIpLFxuICAgICAgICBjbGFtcEFuZFRydW5jYXRlKGNvbG9yLmcpLFxuICAgICAgICBjbGFtcEFuZFRydW5jYXRlKGNvbG9yLmIpLFxuICAgICAgXSxcbiAgICAgIDQ5LFxuICAgICksXG4gICk7XG59XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9jaGFsay9hbnNpLXJlZ2V4L2Jsb2IvMDJmYTg5M2Q2MTlkM2RhODU0MTFhY2M4ZmQ0ZTJlZWEwZTk1YTlkOS9pbmRleC5qc1xuY29uc3QgQU5TSV9QQVRURVJOID0gbmV3IFJlZ0V4cChcbiAgW1xuICAgIFwiW1xcXFx1MDAxQlxcXFx1MDA5Ql1bW1xcXFxdKCkjOz9dKig/Oig/Oig/Oig/OjtbLWEtekEtWlxcXFxkXFxcXC8jJi46PT8lQH5fXSspKnxbYS16QS1aXFxcXGRdKyg/OjtbLWEtekEtWlxcXFxkXFxcXC8jJi46PT8lQH5fXSopKik/XFxcXHUwMDA3KVwiLFxuICAgIFwiKD86KD86XFxcXGR7MSw0fSg/OjtcXFxcZHswLDR9KSopP1tcXFxcZEEtUFItVFhaY2YtbnEtdXk9Pjx+XSkpXCIsXG4gIF0uam9pbihcInxcIiksXG4gIFwiZ1wiLFxuKTtcblxuLyoqXG4gKiBSZW1vdmUgQU5TSSBlc2NhcGUgY29kZXMgZnJvbSB0aGUgc3RyaW5nLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBuby1hc3NlcnRcbiAqIGltcG9ydCB7IHN0cmlwQW5zaUNvZGUsIHJlZCB9IGZyb20gXCJAc3RkL2ZtdC9jb2xvcnNcIjtcbiAqXG4gKiBjb25zb2xlLmxvZyhzdHJpcEFuc2lDb2RlKHJlZChcIkhlbGxvLCB3b3JsZCFcIikpKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzdHJpbmcgVGhlIHRleHQgdG8gcmVtb3ZlIEFOU0kgZXNjYXBlIGNvZGVzIGZyb21cbiAqIEByZXR1cm5zIFRoZSB0ZXh0IHdpdGhvdXQgQU5TSSBlc2NhcGUgY29kZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwQW5zaUNvZGUoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoQU5TSV9QQVRURVJOLCBcIlwiKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBQ3JDLCtFQUErRTtBQUMvRSxVQUFVO0FBRVY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBK0NDLEdBRUQsbUNBQW1DO0FBQ25DLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRztBQUNqQixNQUFNLFVBQVUsT0FBTyxNQUFNLFlBQVksWUFDckMsS0FBSyxPQUFPLEdBQ1o7QUFrQkosSUFBSSxVQUFVLENBQUM7QUFFZjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW1CQyxHQUNELE9BQU8sU0FBUyxnQkFBZ0IsS0FBYztFQUM1QyxJQUFJLE1BQU0sU0FBUztJQUNqQjtFQUNGO0VBRUEsVUFBVTtBQUNaO0FBRUE7Ozs7Ozs7Ozs7Q0FVQyxHQUNELE9BQU8sU0FBUztFQUNkLE9BQU87QUFDVDtBQUVBOzs7O0NBSUMsR0FDRCxTQUFTLEtBQUssSUFBYyxFQUFFLEtBQWE7RUFDekMsT0FBTztJQUNMLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2QixRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFO0VBQzFDO0FBQ0Y7QUFFQTs7OztDQUlDLEdBQ0QsU0FBUyxJQUFJLEdBQVcsRUFBRSxJQUFVO0VBQ2xDLE9BQU8sVUFDSCxHQUFHLEtBQUssSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLEtBQUssTUFBTSxFQUFFLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLEdBQ2pFO0FBQ047QUFFQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FDRCxPQUFPLFNBQVMsTUFBTSxHQUFXO0VBQy9CLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFFLEVBQUU7QUFDNUI7QUFFQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FDRCxPQUFPLFNBQVMsS0FBSyxHQUFXO0VBQzlCLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFFLEVBQUU7QUFDNUI7QUFFQTs7Ozs7Ozs7Ozs7Ozs7O0NBZUMsR0FDRCxPQUFPLFNBQVMsSUFBSSxHQUFXO0VBQzdCLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFFLEVBQUU7QUFDNUI7QUFFQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FDRCxPQUFPLFNBQVMsT0FBTyxHQUFXO0VBQ2hDLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFFLEVBQUU7QUFDNUI7QUFFQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FDRCxPQUFPLFNBQVMsVUFBVSxHQUFXO0VBQ25DLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFFLEVBQUU7QUFDNUI7QUFFQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FDRCxPQUFPLFNBQVMsUUFBUSxHQUFXO0VBQ2pDLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFFLEVBQUU7QUFDNUI7QUFFQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FDRCxPQUFPLFNBQVMsT0FBTyxHQUFXO0VBQ2hDLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFFLEVBQUU7QUFDNUI7QUFFQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FDRCxPQUFPLFNBQVMsY0FBYyxHQUFXO0VBQ3ZDLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFFLEVBQUU7QUFDNUI7QUFFQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FDRCxPQUFPLFNBQVMsTUFBTSxHQUFXO0VBQy9CLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFHLEVBQUU7QUFDN0I7QUFFQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FDRCxPQUFPLFNBQVMsSUFBSSxHQUFXO0VBQzdCLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFHLEVBQUU7QUFDN0I7QUFFQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FDRCxPQUFPLFNBQVMsTUFBTSxHQUFXO0VBQy9CLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFHLEVBQUU7QUFDN0I7QUFFQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FDRCxPQUFPLFNBQVMsT0FBTyxHQUFXO0VBQ2hDLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFHLEVBQUU7QUFDN0I7QUFFQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FDRCxPQUFPLFNBQVMsS0FBSyxHQUFXO0VBQzlCLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFHLEVBQUU7QUFDN0I7QUFFQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FDRCxPQUFPLFNBQVMsUUFBUSxHQUFXO0VBQ2pDLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFHLEVBQUU7QUFDN0I7QUFFQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FDRCxPQUFPLFNBQVMsS0FBSyxHQUFXO0VBQzlCLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFHLEVBQUU7QUFDN0I7QUFFQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FDRCxPQUFPLFNBQVMsTUFBTSxHQUFXO0VBQy9CLE9BQU8sSUFBSSxLQUFLLEtBQUs7SUFBQztHQUFHLEVBQUU7QUFDN0I7QUFFQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FDRCxPQUFPLFNBQVMsS0FBSyxHQUFXO0VBQzlCLE9BQU8sWUFBWTtBQUNyQjtBQUVBOzs7Ozs7Ozs7Ozs7Q0FZQyxHQUNELE9BQU8sU0FBUyxZQUFZLEdBQVc7RUFDckMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Ozs7Ozs7Ozs7Q0FZQyxHQUNELE9BQU8sU0FBUyxVQUFVLEdBQVc7RUFDbkMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Ozs7Ozs7Ozs7Q0FZQyxHQUNELE9BQU8sU0FBUyxZQUFZLEdBQVc7RUFDckMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Ozs7Ozs7Ozs7Q0FZQyxHQUNELE9BQU8sU0FBUyxhQUFhLEdBQVc7RUFDdEMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Ozs7Ozs7Ozs7Q0FZQyxHQUNELE9BQU8sU0FBUyxXQUFXLEdBQVc7RUFDcEMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Ozs7Ozs7Ozs7Q0FZQyxHQUNELE9BQU8sU0FBUyxjQUFjLEdBQVc7RUFDdkMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Ozs7Ozs7Ozs7Q0FZQyxHQUNELE9BQU8sU0FBUyxXQUFXLEdBQVc7RUFDcEMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Ozs7Ozs7Ozs7Q0FZQyxHQUNELE9BQU8sU0FBUyxZQUFZLEdBQVc7RUFDckMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Ozs7Ozs7Ozs7Q0FZQyxHQUNELE9BQU8sU0FBUyxRQUFRLEdBQVc7RUFDakMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Ozs7Ozs7Ozs7Q0FZQyxHQUNELE9BQU8sU0FBUyxNQUFNLEdBQVc7RUFDL0IsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Ozs7Ozs7Ozs7Q0FZQyxHQUNELE9BQU8sU0FBUyxRQUFRLEdBQVc7RUFDakMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Ozs7Ozs7Ozs7Q0FZQyxHQUNELE9BQU8sU0FBUyxTQUFTLEdBQVc7RUFDbEMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Ozs7Ozs7Ozs7Q0FZQyxHQUNELE9BQU8sU0FBUyxPQUFPLEdBQVc7RUFDaEMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Ozs7Ozs7Ozs7Q0FZQyxHQUNELE9BQU8sU0FBUyxVQUFVLEdBQVc7RUFDbkMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Ozs7Ozs7Ozs7Q0FZQyxHQUNELE9BQU8sU0FBUyxPQUFPLEdBQVc7RUFDaEMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Ozs7Ozs7Ozs7Q0FZQyxHQUNELE9BQU8sU0FBUyxRQUFRLEdBQVc7RUFDakMsT0FBTyxJQUFJLEtBQUssS0FBSztJQUFDO0dBQUcsRUFBRTtBQUM3QjtBQUVBOzs7Ozs7Ozs7Ozs7Q0FZQyxHQUNELE9BQU8sU0FB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 +// denoCacheMetadata=11683421588818424058,11980953391411266504
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/c5a9c53010e29942c373acf9060630c1aa073f501d5e59b0c412901c445b0f2a.js b/vendor/gen/https/jsr.io/c5a9c53010e29942c373acf9060630c1aa073f501d5e59b0c412901c445b0f2a.js new file mode 100644 index 0000000..f20bb5a --- /dev/null +++ b/vendor/gen/https/jsr.io/c5a9c53010e29942c373acf9060630c1aa073f501d5e59b0c412901c445b0f2a.js @@ -0,0 +1,121 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { assertArg } from "../_common/normalize.ts"; +import { CHAR_COLON } from "../_common/constants.ts"; +import { normalizeString } from "../_common/normalize_string.ts"; +import { isPathSeparator, isWindowsDeviceRoot } from "./_util.ts"; +/** + * Normalize the `path`, resolving `'..'` and `'.'` segments. + * Note that resolving these segments does not necessarily mean that all will be eliminated. + * A `'..'` at the top-level will be preserved, and an empty path is canonically `'.'`. + * + * @example Usage + * ```ts + * import { normalize } from "@std/path/windows/normalize"; + * import { assertEquals } from "@std/assert"; + * + * const normalized = normalize("C:\\foo\\..\\bar"); + * assertEquals(normalized, "C:\\bar"); + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `normalize` from `@std/path/windows/unstable-normalize`. + * + * @param path The path to normalize + * @returns The normalized path + */ export function normalize(path) { + assertArg(path); + const len = path.length; + let rootEnd = 0; + let device; + let isAbsolute = false; + const code = path.charCodeAt(0); + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + // If we started with a separator, we know we at least have an absolute + // path of some kind (UNC or otherwise) + isAbsolute = true; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for(; j < len; ++j){ + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + // Return the normalized version of the UNC root since there + // is nothing left to process + return `\\\\${firstPart}\\${path.slice(last)}\\`; + } else if (j !== last) { + // We matched a UNC root with leftovers + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid unnecessary + // work + return "\\"; + } + let tail; + if (rootEnd < len) { + tail = normalizeString(path.slice(rootEnd), !isAbsolute, "\\", isPathSeparator); + } else { + tail = ""; + } + if (tail.length === 0 && !isAbsolute) tail = "."; + if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) { + tail += "\\"; + } + if (device === undefined) { + if (isAbsolute) { + if (tail.length > 0) return `\\${tail}`; + else return "\\"; + } + return tail; + } else if (isAbsolute) { + if (tail.length > 0) return `${device}\\${tail}`; + else return `${device}\\`; + } + return device + tail; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS93aW5kb3dzL25vcm1hbGl6ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBhc3NlcnRBcmcgfSBmcm9tIFwiLi4vX2NvbW1vbi9ub3JtYWxpemUudHNcIjtcbmltcG9ydCB7IENIQVJfQ09MT04gfSBmcm9tIFwiLi4vX2NvbW1vbi9jb25zdGFudHMudHNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZVN0cmluZyB9IGZyb20gXCIuLi9fY29tbW9uL25vcm1hbGl6ZV9zdHJpbmcudHNcIjtcbmltcG9ydCB7IGlzUGF0aFNlcGFyYXRvciwgaXNXaW5kb3dzRGV2aWNlUm9vdCB9IGZyb20gXCIuL191dGlsLnRzXCI7XG5cbi8qKlxuICogTm9ybWFsaXplIHRoZSBgcGF0aGAsIHJlc29sdmluZyBgJy4uJ2AgYW5kIGAnLidgIHNlZ21lbnRzLlxuICogTm90ZSB0aGF0IHJlc29sdmluZyB0aGVzZSBzZWdtZW50cyBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIHRoYXQgYWxsIHdpbGwgYmUgZWxpbWluYXRlZC5cbiAqIEEgYCcuLidgIGF0IHRoZSB0b3AtbGV2ZWwgd2lsbCBiZSBwcmVzZXJ2ZWQsIGFuZCBhbiBlbXB0eSBwYXRoIGlzIGNhbm9uaWNhbGx5IGAnLidgLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIkBzdGQvcGF0aC93aW5kb3dzL25vcm1hbGl6ZVwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZShcIkM6XFxcXGZvb1xcXFwuLlxcXFxiYXJcIik7XG4gKiBhc3NlcnRFcXVhbHMobm9ybWFsaXplZCwgXCJDOlxcXFxiYXJcIik7XG4gKiBgYGBcbiAqXG4gKiBOb3RlOiBJZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBmaWxlIFVSTHMsXG4gKiB1c2UgdGhlIG5ldyB2ZXJzaW9uIG9mIGBub3JtYWxpemVgIGZyb20gYEBzdGQvcGF0aC93aW5kb3dzL3Vuc3RhYmxlLW5vcm1hbGl6ZWAuXG4gKlxuICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gbm9ybWFsaXplXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgYXNzZXJ0QXJnKHBhdGgpO1xuXG4gIGNvbnN0IGxlbiA9IHBhdGgubGVuZ3RoO1xuICBsZXQgcm9vdEVuZCA9IDA7XG4gIGxldCBkZXZpY2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgbGV0IGlzQWJzb2x1dGUgPSBmYWxzZTtcbiAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdCgwKTtcblxuICAvLyBUcnkgdG8gbWF0Y2ggYSByb290XG4gIGlmIChsZW4gPiAxKSB7XG4gICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgLy8gUG9zc2libGUgVU5DIHJvb3RcblxuICAgICAgLy8gSWYgd2Ugc3RhcnRlZCB3aXRoIGEgc2VwYXJhdG9yLCB3ZSBrbm93IHdlIGF0IGxlYXN0IGhhdmUgYW4gYWJzb2x1dGVcbiAgICAgIC8vIHBhdGggb2Ygc29tZSBraW5kIChVTkMgb3Igb3RoZXJ3aXNlKVxuICAgICAgaXNBYnNvbHV0ZSA9IHRydWU7XG5cbiAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDEpKSkge1xuICAgICAgICAvLyBNYXRjaGVkIGRvdWJsZSBwYXRoIHNlcGFyYXRvciBhdCBiZWdpbm5pbmdcbiAgICAgICAgbGV0IGogPSAyO1xuICAgICAgICBsZXQgbGFzdCA9IGo7XG4gICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBub24tcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChqIDwgbGVuICYmIGogIT09IGxhc3QpIHtcbiAgICAgICAgICBjb25zdCBmaXJzdFBhcnQgPSBwYXRoLnNsaWNlKGxhc3QsIGopO1xuICAgICAgICAgIC8vIE1hdGNoZWQhXG4gICAgICAgICAgbGFzdCA9IGo7XG4gICAgICAgICAgLy8gTWF0Y2ggMSBvciBtb3JlIHBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICAgIGlmICghaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaiA8IGxlbiAmJiBqICE9PSBsYXN0KSB7XG4gICAgICAgICAgICAvLyBNYXRjaGVkIVxuICAgICAgICAgICAgbGFzdCA9IGo7XG4gICAgICAgICAgICAvLyBNYXRjaCAxIG9yIG1vcmUgbm9uLXBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGogPT09IGxlbikge1xuICAgICAgICAgICAgICAvLyBXZSBtYXRjaGVkIGEgVU5DIHJvb3Qgb25seVxuICAgICAgICAgICAgICAvLyBSZXR1cm4gdGhlIG5vcm1hbGl6ZWQgdmVyc2lvbiBvZiB0aGUgVU5DIHJvb3Qgc2luY2UgdGhlcmVcbiAgICAgICAgICAgICAgLy8gaXMgbm90aGluZyBsZWZ0IHRvIHByb2Nlc3NcblxuICAgICAgICAgICAgICByZXR1cm4gYFxcXFxcXFxcJHtmaXJzdFBhcnR9XFxcXCR7cGF0aC5zbGljZShsYXN0KX1cXFxcYDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgICAvLyBXZSBtYXRjaGVkIGEgVU5DIHJvb3Qgd2l0aCBsZWZ0b3ZlcnNcblxuICAgICAgICAgICAgICBkZXZpY2UgPSBgXFxcXFxcXFwke2ZpcnN0UGFydH1cXFxcJHtwYXRoLnNsaWNlKGxhc3QsIGopfWA7XG4gICAgICAgICAgICAgIHJvb3RFbmQgPSBqO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm9vdEVuZCA9IDE7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KGNvZGUpKSB7XG4gICAgICAvLyBQb3NzaWJsZSBkZXZpY2Ugcm9vdFxuXG4gICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OKSB7XG4gICAgICAgIGRldmljZSA9IHBhdGguc2xpY2UoMCwgMik7XG4gICAgICAgIHJvb3RFbmQgPSAyO1xuICAgICAgICBpZiAobGVuID4gMikge1xuICAgICAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDIpKSkge1xuICAgICAgICAgICAgLy8gVHJlYXQgc2VwYXJhdG9yIGZvbGxvd2luZyBkcml2ZSBuYW1lIGFzIGFuIGFic29sdXRlIHBhdGhcbiAgICAgICAgICAgIC8vIGluZGljYXRvclxuICAgICAgICAgICAgaXNBYnNvbHV0ZSA9IHRydWU7XG4gICAgICAgICAgICByb290RW5kID0gMztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgLy8gYHBhdGhgIGNvbnRhaW5zIGp1c3QgYSBwYXRoIHNlcGFyYXRvciwgZXhpdCBlYXJseSB0byBhdm9pZCB1bm5lY2Vzc2FyeVxuICAgIC8vIHdvcmtcbiAgICByZXR1cm4gXCJcXFxcXCI7XG4gIH1cblxuICBsZXQgdGFpbDogc3RyaW5nO1xuICBpZiAocm9vdEVuZCA8IGxlbikge1xuICAgIHRhaWwgPSBub3JtYWxpemVTdHJpbmcoXG4gICAgICBwYXRoLnNsaWNlKHJvb3RFbmQpLFxuICAgICAgIWlzQWJzb2x1dGUsXG4gICAgICBcIlxcXFxcIixcbiAgICAgIGlzUGF0aFNlcGFyYXRvcixcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIHRhaWwgPSBcIlwiO1xuICB9XG4gIGlmICh0YWlsLmxlbmd0aCA9PT0gMCAmJiAhaXNBYnNvbHV0ZSkgdGFpbCA9IFwiLlwiO1xuICBpZiAodGFpbC5sZW5ndGggPiAwICYmIGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQobGVuIC0gMSkpKSB7XG4gICAgdGFpbCArPSBcIlxcXFxcIjtcbiAgfVxuICBpZiAoZGV2aWNlID09PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoaXNBYnNvbHV0ZSkge1xuICAgICAgaWYgKHRhaWwubGVuZ3RoID4gMCkgcmV0dXJuIGBcXFxcJHt0YWlsfWA7XG4gICAgICBlbHNlIHJldHVybiBcIlxcXFxcIjtcbiAgICB9XG4gICAgcmV0dXJuIHRhaWw7XG4gIH0gZWxzZSBpZiAoaXNBYnNvbHV0ZSkge1xuICAgIGlmICh0YWlsLmxlbmd0aCA+IDApIHJldHVybiBgJHtkZXZpY2V9XFxcXCR7dGFpbH1gO1xuICAgIGVsc2UgcmV0dXJuIGAke2RldmljZX1cXFxcYDtcbiAgfVxuICByZXR1cm4gZGV2aWNlICsgdGFpbDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDLFNBQVMsU0FBUyxRQUFRLDBCQUEwQjtBQUNwRCxTQUFTLFVBQVUsUUFBUSwwQkFBMEI7QUFDckQsU0FBUyxlQUFlLFFBQVEsaUNBQWlDO0FBQ2pFLFNBQVMsZUFBZSxFQUFFLG1C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 +// denoCacheMetadata=15467683293632384173,12610656767582473609
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/c5f0f2266368c0c131094c035b462a4e5aa9ecb04434dcfebf483e2e1e3533a1.js b/vendor/gen/https/jsr.io/c5f0f2266368c0c131094c035b462a4e5aa9ecb04434dcfebf483e2e1e3533a1.js new file mode 100644 index 0000000..2fac9c0 --- /dev/null +++ b/vendor/gen/https/jsr.io/c5f0f2266368c0c131094c035b462a4e5aa9ecb04434dcfebf483e2e1e3533a1.js @@ -0,0 +1,94 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +import { join } from "jsr:@std/path@^1.0.9/join"; +import { toPathString } from "./_to_path_string.ts"; +/** + * Asynchronously ensures that a directory is empty. + * + * If the directory does not exist, it is created. The directory itself is not + * deleted. + * + * Requires `--allow-read` and `--allow-write` permissions. + * + * @see {@link https://docs.deno.com/runtime/manual/basics/permissions#file-system-access} + * for more information on Deno's permissions system. + * + * @param dir The path of the directory to empty, as a string or URL. + * + * @returns A void promise that resolves once the directory is empty. + * + * @example Usage + * ```ts ignore + * import { emptyDir } from "@std/fs/empty-dir"; + * + * await emptyDir("./foo"); + * ``` + */ export async function emptyDir(dir) { + try { + const items = await Array.fromAsync(Deno.readDir(dir)); + await Promise.all(items.map((item)=>{ + if (item && item.name) { + const filepath = join(toPathString(dir), item.name); + return Deno.remove(filepath, { + recursive: true + }); + } + })); + } catch (err) { + if (!(err instanceof Deno.errors.NotFound)) { + throw err; + } + // if not exist. then create it + await Deno.mkdir(dir, { + recursive: true + }); + } +} +/** + * Synchronously ensures that a directory is empty deletes the directory + * contents it is not empty. + * + * If the directory does not exist, it is created. The directory itself is not + * deleted. + * + * Requires `--allow-read` and `--allow-write` permissions. + * + * @see {@link https://docs.deno.com/runtime/manual/basics/permissions#file-system-access} + * for more information on Deno's permissions system. + * + * @param dir The path of the directory to empty, as a string or URL. + * + * @returns A void value that returns once the directory is empty. + * + * @example Usage + * ```ts ignore + * import { emptyDirSync } from "@std/fs/empty-dir"; + * + * emptyDirSync("./foo"); + * ``` + */ export function emptyDirSync(dir) { + try { + const items = [ + ...Deno.readDirSync(dir) + ]; + // If the directory exists, remove all entries inside it. + while(items.length){ + const item = items.shift(); + if (item && item.name) { + const filepath = join(toPathString(dir), item.name); + Deno.removeSync(filepath, { + recursive: true + }); + } + } + } catch (err) { + if (!(err instanceof Deno.errors.NotFound)) { + throw err; + } + // if not exist. then create it + Deno.mkdirSync(dir, { + recursive: true + }); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnMvMS4wLjE3L2VtcHR5X2Rpci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJqc3I6QHN0ZC9wYXRoQF4xLjAuOS9qb2luXCI7XG5pbXBvcnQgeyB0b1BhdGhTdHJpbmcgfSBmcm9tIFwiLi9fdG9fcGF0aF9zdHJpbmcudHNcIjtcblxuLyoqXG4gKiBBc3luY2hyb25vdXNseSBlbnN1cmVzIHRoYXQgYSBkaXJlY3RvcnkgaXMgZW1wdHkuXG4gKlxuICogSWYgdGhlIGRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdCwgaXQgaXMgY3JlYXRlZC4gVGhlIGRpcmVjdG9yeSBpdHNlbGYgaXMgbm90XG4gKiBkZWxldGVkLlxuICpcbiAqIFJlcXVpcmVzIGAtLWFsbG93LXJlYWRgIGFuZCBgLS1hbGxvdy13cml0ZWAgcGVybWlzc2lvbnMuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmRlbm8uY29tL3J1bnRpbWUvbWFudWFsL2Jhc2ljcy9wZXJtaXNzaW9ucyNmaWxlLXN5c3RlbS1hY2Nlc3N9XG4gKiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBEZW5vJ3MgcGVybWlzc2lvbnMgc3lzdGVtLlxuICpcbiAqIEBwYXJhbSBkaXIgVGhlIHBhdGggb2YgdGhlIGRpcmVjdG9yeSB0byBlbXB0eSwgYXMgYSBzdHJpbmcgb3IgVVJMLlxuICpcbiAqIEByZXR1cm5zIEEgdm9pZCBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgZGlyZWN0b3J5IGlzIGVtcHR5LlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBpZ25vcmVcbiAqIGltcG9ydCB7IGVtcHR5RGlyIH0gZnJvbSBcIkBzdGQvZnMvZW1wdHktZGlyXCI7XG4gKlxuICogYXdhaXQgZW1wdHlEaXIoXCIuL2Zvb1wiKTtcbiAqIGBgYFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW1wdHlEaXIoZGlyOiBzdHJpbmcgfCBVUkwpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBpdGVtcyA9IGF3YWl0IEFycmF5LmZyb21Bc3luYyhEZW5vLnJlYWREaXIoZGlyKSk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChpdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIGlmIChpdGVtICYmIGl0ZW0ubmFtZSkge1xuICAgICAgICBjb25zdCBmaWxlcGF0aCA9IGpvaW4odG9QYXRoU3RyaW5nKGRpciksIGl0ZW0ubmFtZSk7XG4gICAgICAgIHJldHVybiBEZW5vLnJlbW92ZShmaWxlcGF0aCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICB9XG4gICAgfSkpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoIShlcnIgaW5zdGFuY2VvZiBEZW5vLmVycm9ycy5Ob3RGb3VuZCkpIHtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG5cbiAgICAvLyBpZiBub3QgZXhpc3QuIHRoZW4gY3JlYXRlIGl0XG4gICAgYXdhaXQgRGVuby5ta2RpcihkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICB9XG59XG5cbi8qKlxuICogU3luY2hyb25vdXNseSBlbnN1cmVzIHRoYXQgYSBkaXJlY3RvcnkgaXMgZW1wdHkgZGVsZXRlcyB0aGUgZGlyZWN0b3J5XG4gKiBjb250ZW50cyBpdCBpcyBub3QgZW1wdHkuXG4gKlxuICogSWYgdGhlIGRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdCwgaXQgaXMgY3JlYXRlZC4gVGhlIGRpcmVjdG9yeSBpdHNlbGYgaXMgbm90XG4gKiBkZWxldGVkLlxuICpcbiAqIFJlcXVpcmVzIGAtLWFsbG93LXJlYWRgIGFuZCBgLS1hbGxvdy13cml0ZWAgcGVybWlzc2lvbnMuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmRlbm8uY29tL3J1bnRpbWUvbWFudWFsL2Jhc2ljcy9wZXJtaXNzaW9ucyNmaWxlLXN5c3RlbS1hY2Nlc3N9XG4gKiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBEZW5vJ3MgcGVybWlzc2lvbnMgc3lzdGVtLlxuICpcbiAqIEBwYXJhbSBkaXIgVGhlIHBhdGggb2YgdGhlIGRpcmVjdG9yeSB0byBlbXB0eSwgYXMgYSBzdHJpbmcgb3IgVVJMLlxuICpcbiAqIEByZXR1cm5zIEEgdm9pZCB2YWx1ZSB0aGF0IHJldHVybnMgb25jZSB0aGUgZGlyZWN0b3J5IGlzIGVtcHR5LlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0cyBpZ25vcmVcbiAqIGltcG9ydCB7IGVtcHR5RGlyU3luYyB9IGZyb20gXCJAc3RkL2ZzL2VtcHR5LWRpclwiO1xuICpcbiAqIGVtcHR5RGlyU3luYyhcIi4vZm9vXCIpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbXB0eURpclN5bmMoZGlyOiBzdHJpbmcgfCBVUkwpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBpdGVtcyA9IFsuLi5EZW5vLnJlYWREaXJTeW5jKGRpcildO1xuXG4gICAgLy8gSWYgdGhlIGRpcmVjdG9yeSBleGlzdHMsIHJlbW92ZSBhbGwgZW50cmllcyBpbnNpZGUgaXQuXG4gICAgd2hpbGUgKGl0ZW1zLmxlbmd0aCkge1xuICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zLnNoaWZ0KCk7XG4gICAgICBpZiAoaXRlbSAmJiBpdGVtLm5hbWUpIHtcbiAgICAgICAgY29uc3QgZmlsZXBhdGggPSBqb2luKHRvUGF0aFN0cmluZyhkaXIpLCBpdGVtLm5hbWUpO1xuICAgICAgICBEZW5vLnJlbW92ZVN5bmMoZmlsZXBhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKCEoZXJyIGluc3RhbmNlb2YgRGVuby5lcnJvcnMuTm90Rm91bmQpKSB7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICAgIC8vIGlmIG5vdCBleGlzdC4gdGhlbiBjcmVhdGUgaXRcbiAgICBEZW5vLm1rZGlyU3luYyhkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELFNBQVMsSUFBSSxRQUFRLDRCQUE0QjtBQUNqRCxTQUFTLFlBQVksUUFBUSx1QkFBdUI7QUFFcEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXFCQyxHQUNELE9BQU8sZUFBZSxTQUFTLEdBQWlCO0VBQzlDLElBQUk7SUFDRixNQUFNLFFBQVEsTUFBTSxNQUFNLFNBQVMsQ0FBQyxLQUFLLE9BQU8sQ0FBQztJQUVqRCxNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7TUFDM0IsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO1FBQ3JCLE1BQU0sV0FBVyxLQUFLLGFBQWEsTUFBTSxLQUFLLElBQUk7UUFDbEQsT0FBTyxLQUFLLE1BQU0sQ0FBQyxVQUFVO1VBQUUsV0FBVztRQUFLO01BQ2pEO0lBQ0Y7RUFDRixFQUFFLE9BQU8sS0FBSztJQUNaLElBQUksQ0FBQyxDQUFDLGVBQWUsS0FBSyxNQUFNLENBQUMsUUFBUSxHQUFHO01BQzFDLE1BQU07SUFDUjtJQUVBLCtCQUErQjtJQUMvQixNQUFNLEtBQUssS0FBSyxDQUFDLEtBQUs7TUFBRSxXQUFXO0lBQUs7RUFDMUM7QUFDRjtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBc0JDLEdBQ0QsT0FBTyxTQUFTLGFBQWEsR0FBaUI7RUFDNUMsSUFBSTtJQUNGLE1BQU0sUUFBUTtTQUFJLEtBQUssV0FBVyxDQUFDO0tBQUs7SUFFeEMseURBQXlEO0lBQ3pELE1BQU8sTUFBTSxNQUFNLENBQUU7TUFDbkIsTUFBTSxPQUFPLE1BQU0sS0FBSztNQUN4QixJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUU7UUFDckIsTUFBTSxXQUFXLEtBQUssYUFBYSxNQUFNLEtBQUssSUFBSTtRQUNsRCxLQUFLLFVBQVUsQ0FBQyxVQUFVO1VBQUUsV0FBVztRQUFLO01BQzlDO0lBQ0Y7RUFDRixFQUFFLE9BQU8sS0FBSztJQUNaLElBQUksQ0FBQyxDQUFDLGVBQWUsS0FBSyxNQUFNLENBQUMsUUFBUSxHQUFHO01BQzFDLE1BQU07SUFDUjtJQUNBLCtCQUErQjtJQUMvQixLQUFLLFNBQVMsQ0FBQyxLQUFLO01BQUUsV0FBVztJQUFLO0VBQ3hDO0FBQ0YifQ== +// denoCacheMetadata=3546192096263073851,17095290498113129028
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/c7b43dd6851d84d742dcf098b509ce07b71a7f617222f2b719745d65d5c8f6f9.js b/vendor/gen/https/jsr.io/c7b43dd6851d84d742dcf098b509ce07b71a7f617222f2b719745d65d5c8f6f9.js new file mode 100644 index 0000000..8d4bcc3 --- /dev/null +++ b/vendor/gen/https/jsr.io/c7b43dd6851d84d742dcf098b509ce07b71a7f617222f2b719745d65d5c8f6f9.js @@ -0,0 +1,109 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { CHAR_DOT } from "../_common/constants.ts"; +import { stripTrailingSeparators } from "../_common/strip_trailing_separators.ts"; +import { assertPath } from "../_common/assert_path.ts"; +import { isPosixPathSeparator } from "./_util.ts"; +/** + * Return a `ParsedPath` object of the `path`. + * + * @example Usage + * ```ts + * import { parse } from "@std/path/posix/parse"; + * import { assertEquals } from "@std/assert"; + * + * const path = parse("/home/user/file.txt"); + * assertEquals(path, { + * root: "/", + * dir: "/home/user", + * base: "file.txt", + * ext: ".txt", + * name: "file" + * }); + * ``` + * + * @param path The path to parse. + * @returns The parsed path object. + */ export function parse(path) { + assertPath(path); + const ret = { + root: "", + dir: "", + base: "", + ext: "", + name: "" + }; + if (path.length === 0) return ret; + const isAbsolute = isPosixPathSeparator(path.charCodeAt(0)); + let start; + if (isAbsolute) { + ret.root = "/"; + start = 1; + } else { + start = 0; + } + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + // Get non-dir info + for(; i >= start; --i){ + const code = path.charCodeAt(i); + if (isPosixPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot + preDotState === 0 || // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + if (end !== -1) { + if (startPart === 0 && isAbsolute) { + ret.base = ret.name = path.slice(1, end); + } else { + ret.base = ret.name = path.slice(startPart, end); + } + } + // Fallback to '/' in case there is no basename + ret.base = ret.base || "/"; + } else { + if (startPart === 0 && isAbsolute) { + ret.name = path.slice(1, startDot); + ret.base = path.slice(1, end); + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + } + ret.ext = path.slice(startDot, end); + } + if (startPart > 0) { + ret.dir = stripTrailingSeparators(path.slice(0, startPart - 1), isPosixPathSeparator); + } else if (isAbsolute) ret.dir = "/"; + return ret; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9wb3NpeC9wYXJzZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBDSEFSX0RPVCB9IGZyb20gXCIuLi9fY29tbW9uL2NvbnN0YW50cy50c1wiO1xuaW1wb3J0IHR5cGUgeyBQYXJzZWRQYXRoIH0gZnJvbSBcIi4uL3R5cGVzLnRzXCI7XG5pbXBvcnQgeyBzdHJpcFRyYWlsaW5nU2VwYXJhdG9ycyB9IGZyb20gXCIuLi9fY29tbW9uL3N0cmlwX3RyYWlsaW5nX3NlcGFyYXRvcnMudHNcIjtcbmltcG9ydCB7IGFzc2VydFBhdGggfSBmcm9tIFwiLi4vX2NvbW1vbi9hc3NlcnRfcGF0aC50c1wiO1xuaW1wb3J0IHsgaXNQb3NpeFBhdGhTZXBhcmF0b3IgfSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuXG5leHBvcnQgdHlwZSB7IFBhcnNlZFBhdGggfSBmcm9tIFwiLi4vdHlwZXMudHNcIjtcblxuLyoqXG4gKiBSZXR1cm4gYSBgUGFyc2VkUGF0aGAgb2JqZWN0IG9mIHRoZSBgcGF0aGAuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBwYXJzZSB9IGZyb20gXCJAc3RkL3BhdGgvcG9zaXgvcGFyc2VcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IHBhdGggPSBwYXJzZShcIi9ob21lL3VzZXIvZmlsZS50eHRcIik7XG4gKiBhc3NlcnRFcXVhbHMocGF0aCwge1xuICogICByb290OiBcIi9cIixcbiAqICAgZGlyOiBcIi9ob21lL3VzZXJcIixcbiAqICAgYmFzZTogXCJmaWxlLnR4dFwiLFxuICogICBleHQ6IFwiLnR4dFwiLFxuICogICBuYW1lOiBcImZpbGVcIlxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byBwYXJzZS5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgcGF0aCBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZShwYXRoOiBzdHJpbmcpOiBQYXJzZWRQYXRoIHtcbiAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICBjb25zdCByZXQ6IFBhcnNlZFBhdGggPSB7IHJvb3Q6IFwiXCIsIGRpcjogXCJcIiwgYmFzZTogXCJcIiwgZXh0OiBcIlwiLCBuYW1lOiBcIlwiIH07XG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHJldDtcbiAgY29uc3QgaXNBYnNvbHV0ZSA9IGlzUG9zaXhQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdCgwKSk7XG4gIGxldCBzdGFydDogbnVtYmVyO1xuICBpZiAoaXNBYnNvbHV0ZSkge1xuICAgIHJldC5yb290ID0gXCIvXCI7XG4gICAgc3RhcnQgPSAxO1xuICB9IGVsc2Uge1xuICAgIHN0YXJ0ID0gMDtcbiAgfVxuICBsZXQgc3RhcnREb3QgPSAtMTtcbiAgbGV0IHN0YXJ0UGFydCA9IDA7XG4gIGxldCBlbmQgPSAtMTtcbiAgbGV0IG1hdGNoZWRTbGFzaCA9IHRydWU7XG4gIGxldCBpID0gcGF0aC5sZW5ndGggLSAxO1xuXG4gIC8vIFRyYWNrIHRoZSBzdGF0ZSBvZiBjaGFyYWN0ZXJzIChpZiBhbnkpIHdlIHNlZSBiZWZvcmUgb3VyIGZpcnN0IGRvdCBhbmRcbiAgLy8gYWZ0ZXIgYW55IHBhdGggc2VwYXJhdG9yIHdlIGZpbmRcbiAgbGV0IHByZURvdFN0YXRlID0gMDtcblxuICAvLyBHZXQgbm9uLWRpciBpbmZvXG4gIGZvciAoOyBpID49IHN0YXJ0OyAtLWkpIHtcbiAgICBjb25zdCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChpc1Bvc2l4UGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgc3RhcnRQYXJ0ID0gaSArIDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAvLyBleHRlbnNpb25cbiAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgZW5kID0gaSArIDE7XG4gICAgfVxuICAgIGlmIChjb2RlID09PSBDSEFSX0RPVCkge1xuICAgICAgLy8gSWYgdGhpcyBpcyBvdXIgZmlyc3QgZG90LCBtYXJrIGl0IGFzIHRoZSBzdGFydCBvZiBvdXIgZXh0ZW5zaW9uXG4gICAgICBpZiAoc3RhcnREb3QgPT09IC0xKSBzdGFydERvdCA9IGk7XG4gICAgICBlbHNlIGlmIChwcmVEb3RTdGF0ZSAhPT0gMSkgcHJlRG90U3RhdGUgPSAxO1xuICAgIH0gZWxzZSBpZiAoc3RhcnREb3QgIT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgYSBub24tZG90IGFuZCBub24tcGF0aCBzZXBhcmF0b3IgYmVmb3JlIG91ciBkb3QsIHNvIHdlIHNob3VsZFxuICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb25cbiAgICAgIHByZURvdFN0YXRlID0gLTE7XG4gICAgfVxuICB9XG5cbiAgaWYgKFxuICAgIHN0YXJ0RG90ID09PSAtMSB8fFxuICAgIGVuZCA9PT0gLTEgfHxcbiAgICAvLyBXZSBzYXcgYSBub24tZG90IGNoYXJhY3RlciBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGRvdFxuICAgIHByZURvdFN0YXRlID09PSAwIHx8XG4gICAgLy8gVGhlIChyaWdodC1tb3N0KSB0cmltbWVkIHBhdGggY29tcG9uZW50IGlzIGV4YWN0bHkgJy4uJ1xuICAgIChwcmVEb3RTdGF0ZSA9PT0gMSAmJiBzdGFydERvdCA9PT0gZW5kIC0gMSAmJiBzdGFydERvdCA9PT0gc3RhcnRQYXJ0ICsgMSlcbiAgKSB7XG4gICAgaWYgKGVuZCAhPT0gLTEpIHtcbiAgICAgIGlmIChzdGFydFBhcnQgPT09IDAgJiYgaXNBYnNvbHV0ZSkge1xuICAgICAgICByZXQuYmFzZSA9IHJldC5uYW1lID0gcGF0aC5zbGljZSgxLCBlbmQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0LmJhc2UgPSByZXQubmFtZSA9IHBhdGguc2xpY2Uoc3RhcnRQYXJ0LCBlbmQpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBGYWxsYmFjayB0byAnLycgaW4gY2FzZSB0aGVyZSBpcyBubyBiYXNlbmFtZVxuICAgIHJldC5iYXNlID0gcmV0LmJhc2UgfHwgXCIvXCI7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHN0YXJ0UGFydCA9PT0gMCAmJiBpc0Fic29sdXRlKSB7XG4gICAgICByZXQubmFtZSA9IHBhdGguc2xpY2UoMSwgc3RhcnREb3QpO1xuICAgICAgcmV0LmJhc2UgPSBwYXRoLnNsaWNlKDEsIGVuZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldC5uYW1lID0gcGF0aC5zbGljZShzdGFydFBhcnQsIHN0YXJ0RG90KTtcbiAgICAgIHJldC5iYXNlID0gcGF0aC5zbGljZShzdGFydFBhcnQsIGVuZCk7XG4gICAgfVxuICAgIHJldC5leHQgPSBwYXRoLnNsaWNlKHN0YXJ0RG90LCBlbmQpO1xuICB9XG5cbiAgaWYgKHN0YXJ0UGFydCA+IDApIHtcbiAgICByZXQuZGlyID0gc3RyaXBUcmFpbGluZ1NlcGFyYXRvcnMoXG4gICAgICBwYXRoLnNsaWNlKDAsIHN0YXJ0UGFydCAtIDEpLFxuICAgICAgaXNQb3NpeFBhdGhTZXBhcmF0b3IsXG4gICAgKTtcbiAgfSBlbHNlIGlmIChpc0Fic29sdXRlKSByZXQuZGlyID0gXCIvXCI7XG5cbiAgcmV0dXJuIHJldDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDLFNBQVMsUUFBUSxRQUFRLDBCQUEwQjtBQUVuRCxTQUFTLHVCQUF1QixRQUFRLDBDQUEwQztBQUNsRixTQUFTLFVBQVUsUUFBUSw0QkFBNEI7QUFDdkQsU0FBUyxvQkFBb0IsUUFBUSxhQUFhO0FBSWxEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW9CQyxHQUNELE9BQU8sU0FBUyxNQUFNLElBQVk7RUFDaEMsV0FBVztFQUVYLE1BQU0sTUFBa0I7SUFBRSxNQUFNO0lBQUksS0FBSztJQUFJLE1BQU07SUFBSSxLQUFLO0lBQUksTUFBTTtFQUFHO0VBQ3pFLElBQUksS0FBSyxNQUFNLEtBQUssR0FBRyxPQUFPO0VBQzlCLE1BQU0sYUFBYSxxQkFBcUIsS0FBSyxVQUFVLENBQUM7RUFDeEQsSUFBSTtFQUNKLElBQUksWUFBWTtJQUNkLElBQUksSUFBSSxHQUFHO0lBQ1gsUUFBUTtFQUNWLE9BQU87SUFDTCxRQUFRO0VBQ1Y7RUFDQSxJQUFJLFdBQVcsQ0FBQztFQUNoQixJQUFJLFlBQVk7RUFDaEIsSUFBSSxNQUFNLENBQUM7RUFDWCxJQUFJLGVBQWU7RUFDbkIsSUFBSSxJQUFJLEtBQUssTUFBTSxHQUFHO0VBRXRCLHlFQUF5RTtFQUN6RSxtQ0FBbUM7RUFDbkMsSUFBSSxjQUFjO0VBRWxCLG1CQUFtQjtFQUNuQixNQUFPLEtBQUssT0FBTyxFQUFFLEVBQUc7SUFDdEIsTUFBTSxPQUFPLEtBQUssVUFBVSxDQUFDO0lBQzdCLElBQUkscUJBQXFCLE9BQU87TUFDOUIsb0VBQW9FO01BQ3BFLGdEQUFnRDtNQUNoRCxJQUFJLENBQUMsY0FBYztRQUNqQixZQUFZLElBQUk7UUFDaEI7TUFDRjtNQUNBO0lBQ0Y7SUFDQSxJQUFJLFFBQVEsQ0FBQyxHQUFHO01BQ2QsbUVBQW1FO01BQ25FLFlBQVk7TUFDWixlQUFlO01BQ2YsTUFBTSxJQUFJO0lBQ1o7SUFDQSxJQUFJLFNBQVMsVUFBVTtNQUNyQixrRUFBa0U7TUFDbEUsSUFBSSxhQUFhLENBQUMsR0FBRyxXQUFXO1dBQzNCLElBQUksZ0JBQWdCLEdBQUcsY0FBYztJQUM1QyxPQUFPLElBQUksYUFBYSxDQUFDLEdBQUc7TUFDMUIsdUVBQXVFO01BQ3ZFLHFEQUFxRDtNQUNyRCxjQUFjLENBQUM7SUFDakI7RUFDRjtFQUVBLElBQ0UsYUFBYSxDQUFDLEtBQ2QsUUFBUSxDQUFDLEtBQ1Qsd0RBQXdEO0VBQ3hELGdCQUFnQixLQUNoQiwwREFBMEQ7RUFDekQsZ0JBQWdCLEtBQUssYUFBYSxNQUFNLEtBQUssYUFBYSxZQUFZLEdBQ3ZFO0lBQ0EsSUFBSSxRQUFRLENBQUMsR0FBRztNQUNkLElBQUksY0FBYyxLQUFLLFlBQVk7UUFDakMsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsS0FBSyxLQUFLLENBQUMsR0FBRztNQUN0QyxPQUFPO1FBQ0wsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsS0FBSyxLQUFLLENBQUMsV0FBVztNQUM5QztJQUNGO0lBQ0EsK0NBQStDO0lBQy9DLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJO0VBQ3pCLE9BQU87SUFDTCxJQUFJLGNBQWMsS0FBSyxZQUFZO01BQ2pDLElBQUksSUFBSSxHQUFHLEtBQUssS0FBSyxDQUFDLEdBQUc7TUFDekIsSUFBSSxJQUFJLEdBQUcsS0FBSyxLQUFLLENBQUMsR0FBRztJQUMzQixPQUFPO01BQ0wsSUFBSSxJQUFJLEdBQUcsS0FBSyxLQUFLLENBQUMsV0FBVztNQUNqQyxJQUFJLElBQUksR0FBRyxLQUFLLEtBQUssQ0FBQyxXQUFXO0lBQ25DO0lBQ0EsSUFBSSxHQUFHLEdBQUcsS0FBSyxLQUFLLENBQUMsVUFBVTtFQUNqQztFQUVBLElBQUksWUFBWSxHQUFHO0lBQ2pCLElBQUksR0FBRyxHQUFHLHdCQUNSLEtBQUssS0FBSyxDQUFDLEdBQUcsWUFBWSxJQUMxQjtFQUVKLE9BQU8sSUFBSSxZQUFZLElBQUksR0FBRyxHQUFHO0VBRWpDLE9BQU87QUFDVCJ9 +// denoCacheMetadata=18290735263433514791,14253643832242925544
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/c913ceb3f6a5cf75818eb291e60821c1913312480db1afa9743a41de0181636f.js b/vendor/gen/https/jsr.io/c913ceb3f6a5cf75818eb291e60821c1913312480db1afa9743a41de0181636f.js new file mode 100644 index 0000000..46058d8 --- /dev/null +++ b/vendor/gen/https/jsr.io/c913ceb3f6a5cf75818eb291e60821c1913312480db1afa9743a41de0181636f.js @@ -0,0 +1,53 @@ +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * {@linkcode parse} and {@linkcode stringify} for handling + * {@link https://yaml.org/ | YAML} encoded data. + * + * Ported from + * {@link https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da | js-yaml v3.13.1}. + * + * Use {@linkcode parseAll} for parsing multiple documents in a single YAML + * string. + * + * This package generally supports + * {@link https://yaml.org/spec/1.2.2/ | YAML 1.2.x} (latest) and some + * {@link https://yaml.org/spec/1.1/current.html | YAML 1.1} features that are + * commonly used in the wild. + * + * Supported YAML 1.1 features include: + * - {@link https://yaml.org/type/merge.html | Merge} type (`<<` symbol) + * + * Unsupported YAML 1.1 features include: + * - Yes, No, On, Off literals for bool type + * - Sexagesimal numbers (e.g. `3:25:45`) + * + * ```ts + * import { parse, stringify } from "@std/yaml"; + * import { assertEquals } from "@std/assert"; + * + * const data = parse(` + * foo: bar + * baz: + * - qux + * - quux + * `); + * assertEquals(data, { foo: "bar", baz: [ "qux", "quux" ] }); + * + * const yaml = stringify({ foo: "bar", baz: ["qux", "quux"] }); + * assertEquals(yaml, `foo: bar + * baz: + * - qux + * - quux + * `); + * ``` + * + * ## Limitations + * - `binary` type is currently not stable. + * + * @module + */ export * from "./parse.ts"; +export * from "./stringify.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQveWFtbC8xLjAuNi9tb2QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTEtMjAxNSBieSBWaXRhbHkgUHV6cmluLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbi8qKlxuICoge0BsaW5rY29kZSBwYXJzZX0gYW5kIHtAbGlua2NvZGUgc3RyaW5naWZ5fSBmb3IgaGFuZGxpbmdcbiAqIHtAbGluayBodHRwczovL3lhbWwub3JnLyB8IFlBTUx9IGVuY29kZWQgZGF0YS5cbiAqXG4gKiBQb3J0ZWQgZnJvbVxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvanMteWFtbC9jb21taXQvNjY1YWFkZGE0MjM0OWRjYWU4NjlmMTIwNDBkOWIxMGVmMThkMTJkYSB8IGpzLXlhbWwgdjMuMTMuMX0uXG4gKlxuICogVXNlIHtAbGlua2NvZGUgcGFyc2VBbGx9IGZvciBwYXJzaW5nIG11bHRpcGxlIGRvY3VtZW50cyBpbiBhIHNpbmdsZSBZQU1MXG4gKiBzdHJpbmcuXG4gKlxuICogVGhpcyBwYWNrYWdlIGdlbmVyYWxseSBzdXBwb3J0c1xuICoge0BsaW5rIGh0dHBzOi8veWFtbC5vcmcvc3BlYy8xLjIuMi8gfCBZQU1MIDEuMi54fSAobGF0ZXN0KSBhbmQgc29tZVxuICoge0BsaW5rIGh0dHBzOi8veWFtbC5vcmcvc3BlYy8xLjEvY3VycmVudC5odG1sIHwgWUFNTCAxLjF9IGZlYXR1cmVzIHRoYXQgYXJlXG4gKiBjb21tb25seSB1c2VkIGluIHRoZSB3aWxkLlxuICpcbiAqIFN1cHBvcnRlZCBZQU1MIDEuMSBmZWF0dXJlcyBpbmNsdWRlOlxuICogLSB7QGxpbmsgaHR0cHM6Ly95YW1sLm9yZy90eXBlL21lcmdlLmh0bWwgfCBNZXJnZX0gdHlwZSAoYDw8YCBzeW1ib2wpXG4gKlxuICogVW5zdXBwb3J0ZWQgWUFNTCAxLjEgZmVhdHVyZXMgaW5jbHVkZTpcbiAqIC0gWWVzLCBObywgT24sIE9mZiBsaXRlcmFscyBmb3IgYm9vbCB0eXBlXG4gKiAtIFNleGFnZXNpbWFsIG51bWJlcnMgKGUuZy4gYDM6MjU6NDVgKVxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBwYXJzZSwgc3RyaW5naWZ5IH0gZnJvbSBcIkBzdGQveWFtbFwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3QgZGF0YSA9IHBhcnNlKGBcbiAqIGZvbzogYmFyXG4gKiBiYXo6XG4gKiAgIC0gcXV4XG4gKiAgIC0gcXV1eFxuICogYCk7XG4gKiBhc3NlcnRFcXVhbHMoZGF0YSwgeyBmb286IFwiYmFyXCIsIGJhejogWyBcInF1eFwiLCBcInF1dXhcIiBdIH0pO1xuICpcbiAqIGNvbnN0IHlhbWwgPSBzdHJpbmdpZnkoeyBmb286IFwiYmFyXCIsIGJhejogW1wicXV4XCIsIFwicXV1eFwiXSB9KTtcbiAqIGFzc2VydEVxdWFscyh5YW1sLCBgZm9vOiBiYXJcbiAqIGJhejpcbiAqICAgLSBxdXhcbiAqICAgLSBxdXV4XG4gKiBgKTtcbiAqIGBgYFxuICpcbiAqICMjIExpbWl0YXRpb25zXG4gKiAtIGBiaW5hcnlgIHR5cGUgaXMgY3VycmVudGx5IG5vdCBzdGFibGUuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmV4cG9ydCAqIGZyb20gXCIuL3BhcnNlLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdHJpbmdpZnkudHNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQThDQyxHQUVELGNBQWMsYUFBYTtBQUMzQixjQUFjLGlCQUFpQiJ9 +// denoCacheMetadata=15891147873618292317,8972921377856590254
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/ca0f20d4b84d6ae651de68bd07becc010bdedb6be433f7d841129070f16166c8.js b/vendor/gen/https/jsr.io/ca0f20d4b84d6ae651de68bd07becc010bdedb6be433f7d841129070f16166c8.js new file mode 100644 index 0000000..0484ca2 --- /dev/null +++ b/vendor/gen/https/jsr.io/ca0f20d4b84d6ae651de68bd07becc010bdedb6be433f7d841129070f16166c8.js @@ -0,0 +1,21 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +/** + * Converts a path to a namespaced path. This function returns the path as is on posix. + * + * @example Usage + * ```ts + * import { toNamespacedPath } from "@std/path/posix/to-namespaced-path"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(toNamespacedPath("/home/foo"), "/home/foo"); + * ``` + * + * @param path The path. + * @returns The namespaced path. + */ export function toNamespacedPath(path) { + // Non-op on posix systems + return path; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9wb3NpeC90b19uYW1lc3BhY2VkX3BhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHBhdGggdG8gYSBuYW1lc3BhY2VkIHBhdGguIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcGF0aCBhcyBpcyBvbiBwb3NpeC5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHRvTmFtZXNwYWNlZFBhdGggfSBmcm9tIFwiQHN0ZC9wYXRoL3Bvc2l4L3RvLW5hbWVzcGFjZWQtcGF0aFwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogYXNzZXJ0RXF1YWxzKHRvTmFtZXNwYWNlZFBhdGgoXCIvaG9tZS9mb29cIiksIFwiL2hvbWUvZm9vXCIpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHBhdGggVGhlIHBhdGguXG4gKiBAcmV0dXJucyBUaGUgbmFtZXNwYWNlZCBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9OYW1lc3BhY2VkUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBOb24tb3Agb24gcG9zaXggc3lzdGVtc1xuICByZXR1cm4gcGF0aDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBRXJDOzs7Ozs7Ozs7Ozs7O0NBYUMsR0FDRCxPQUFPLFNBQVMsaUJBQWlCLElBQVk7RUFDM0MsMEJBQTBCO0VBQzFCLE9BQU87QUFDVCJ9 +// denoCacheMetadata=14212196544956254176,16995230182257545306
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/cb315c9c97ffdce335482e9fa441d05411ea3b89d8f3058e4777516917187a8e.js b/vendor/gen/https/jsr.io/cb315c9c97ffdce335482e9fa441d05411ea3b89d8f3058e4777516917187a8e.js new file mode 100644 index 0000000..3cef34a --- /dev/null +++ b/vendor/gen/https/jsr.io/cb315c9c97ffdce335482e9fa441d05411ea3b89d8f3058e4777516917187a8e.js @@ -0,0 +1,35 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * Helper functions for working with + * {@linkcode https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array | Uint8Array} + * byte slices. + * + * ```ts + * import { concat, indexOfNeedle, endsWith } from "@std/bytes"; + * import { assertEquals } from "@std/assert"; + * + * const a = new Uint8Array([0, 1, 2]); + * const b = new Uint8Array([3, 4, 5]); + * + * const c = concat([a, b]); + * + * assertEquals(c, new Uint8Array([0, 1, 2, 3, 4, 5])); + * + * assertEquals(indexOfNeedle(c, new Uint8Array([2, 3])), 2); + * + * assertEquals(endsWith(c, b), true); + * ``` + * + * @module + */ export * from "./concat.ts"; +export * from "./copy.ts"; +export * from "./ends_with.ts"; +export * from "./equals.ts"; +export * from "./includes_needle.ts"; +export * from "./index_of_needle.ts"; +export * from "./last_index_of_needle.ts"; +export * from "./repeat.ts"; +export * from "./starts_with.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvYnl0ZXMvMS4wLjYvbW9kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9ucyBmb3Igd29ya2luZyB3aXRoXG4gKiB7QGxpbmtjb2RlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1VpbnQ4QXJyYXkgfCBVaW50OEFycmF5fVxuICogYnl0ZSBzbGljZXMuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGNvbmNhdCwgaW5kZXhPZk5lZWRsZSwgZW5kc1dpdGggfSBmcm9tIFwiQHN0ZC9ieXRlc1wiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3QgYSA9IG5ldyBVaW50OEFycmF5KFswLCAxLCAyXSk7XG4gKiBjb25zdCBiID0gbmV3IFVpbnQ4QXJyYXkoWzMsIDQsIDVdKTtcbiAqXG4gKiBjb25zdCBjID0gY29uY2F0KFthLCBiXSk7XG4gKlxuICogYXNzZXJ0RXF1YWxzKGMsIG5ldyBVaW50OEFycmF5KFswLCAxLCAyLCAzLCA0LCA1XSkpO1xuICpcbiAqIGFzc2VydEVxdWFscyhpbmRleE9mTmVlZGxlKGMsIG5ldyBVaW50OEFycmF5KFsyLCAzXSkpLCAyKTtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoZW5kc1dpdGgoYywgYiksIHRydWUpO1xuICogYGBgXG4gKlxuICogQG1vZHVsZVxuICovXG5leHBvcnQgKiBmcm9tIFwiLi9jb25jYXQudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvcHkudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2VuZHNfd2l0aC50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXF1YWxzLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pbmNsdWRlc19uZWVkbGUudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2luZGV4X29mX25lZWRsZS50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGFzdF9pbmRleF9vZl9uZWVkbGUudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JlcGVhdC50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3RhcnRzX3dpdGgudHNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBc0JDLEdBQ0QsY0FBYyxjQUFjO0FBQzVCLGNBQWMsWUFBWTtBQUMxQixjQUFjLGlCQUFpQjtBQUMvQixjQUFjLGNBQWM7QUFDNUIsY0FBYyx1QkFBdUI7QUFDckMsY0FBYyx1QkFBdUI7QUFDckMsY0FBYyw0QkFBNEI7QUFDMUMsY0FBYyxjQUFjO0FBQzVCLGNBQWMsbUJBQW1CIn0= +// denoCacheMetadata=5541560902761538946,8550250106762646797
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/ce27067ea7c10f0cde68eeb1b15fbf030e7260a319a44a394093aa2d91db5f53.js b/vendor/gen/https/jsr.io/ce27067ea7c10f0cde68eeb1b15fbf030e7260a319a44a394093aa2d91db5f53.js new file mode 100644 index 0000000..c9c1025 --- /dev/null +++ b/vendor/gen/https/jsr.io/ce27067ea7c10f0cde68eeb1b15fbf030e7260a319a44a394093aa2d91db5f53.js @@ -0,0 +1,22 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { assertArg } from "../_common/from_file_url.ts"; +/** + * Converts a file URL to a path string. + * + * @example Usage + * ```ts + * import { fromFileUrl } from "@std/path/posix/from-file-url"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(fromFileUrl(new URL("file:///home/foo")), "/home/foo"); + * ``` + * + * @param url The file URL to convert. + * @returns The path string. + */ export function fromFileUrl(url) { + url = assertArg(url); + return decodeURIComponent(url.pathname.replace(/%(?![0-9A-Fa-f]{2})/g, "%25")); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9wb3NpeC9mcm9tX2ZpbGVfdXJsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGFzc2VydEFyZyB9IGZyb20gXCIuLi9fY29tbW9uL2Zyb21fZmlsZV91cmwudHNcIjtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZpbGUgVVJMIHRvIGEgcGF0aCBzdHJpbmcuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBmcm9tRmlsZVVybCB9IGZyb20gXCJAc3RkL3BhdGgvcG9zaXgvZnJvbS1maWxlLXVybFwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogYXNzZXJ0RXF1YWxzKGZyb21GaWxlVXJsKG5ldyBVUkwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpKSwgXCIvaG9tZS9mb29cIik7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gdXJsIFRoZSBmaWxlIFVSTCB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIHBhdGggc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbUZpbGVVcmwodXJsOiBVUkwgfCBzdHJpbmcpOiBzdHJpbmcge1xuICB1cmwgPSBhc3NlcnRBcmcodXJsKTtcbiAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChcbiAgICB1cmwucGF0aG5hbWUucmVwbGFjZSgvJSg/IVswLTlBLUZhLWZdezJ9KS9nLCBcIiUyNVwiKSxcbiAgKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDLFNBQVMsU0FBUyxRQUFRLDhCQUE4QjtBQUV4RDs7Ozs7Ozs7Ozs7OztDQWFDLEdBQ0QsT0FBTyxTQUFTLFlBQVksR0FBaUI7RUFDM0MsTUFBTSxVQUFVO0VBQ2hCLE9BQU8sbUJBQ0wsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLHdCQUF3QjtBQUVqRCJ9 +// denoCacheMetadata=12995210725555087204,17824235322591116648
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/cf0e6de6d6b02318bf9ee1b292abc26f5646b5de42190b80c825effe19007796.js b/vendor/gen/https/jsr.io/cf0e6de6d6b02318bf9ee1b292abc26f5646b5de42190b80c825effe19007796.js new file mode 100644 index 0000000..99dad0c --- /dev/null +++ b/vendor/gen/https/jsr.io/cf0e6de6d6b02318bf9ee1b292abc26f5646b5de42190b80c825effe19007796.js @@ -0,0 +1,29 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { toFileUrl as posixToFileUrl } from "./posix/to_file_url.ts"; +import { toFileUrl as windowsToFileUrl } from "./windows/to_file_url.ts"; +/** + * Converts a path string to a file URL. + * + * @example Usage + * ```ts + * import { toFileUrl } from "@std/path/to-file-url"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(toFileUrl("\\home\\foo"), new URL("file:///home/foo")); + * assertEquals(toFileUrl("C:\\Users\\foo"), new URL("file:///C:/Users/foo")); + * assertEquals(toFileUrl("\\\\127.0.0.1\\home\\foo"), new URL("file://127.0.0.1/home/foo")); + * } else { + * assertEquals(toFileUrl("/home/foo"), new URL("file:///home/foo")); + * } + * ``` + * + * @param path Path to convert to file URL. + * @returns The file URL equivalent to the path. + */ export function toFileUrl(path) { + return isWindows ? windowsToFileUrl(path) : posixToFileUrl(path); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS90b19maWxlX3VybC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBpc1dpbmRvd3MgfSBmcm9tIFwiLi9fb3MudHNcIjtcbmltcG9ydCB7IHRvRmlsZVVybCBhcyBwb3NpeFRvRmlsZVVybCB9IGZyb20gXCIuL3Bvc2l4L3RvX2ZpbGVfdXJsLnRzXCI7XG5pbXBvcnQgeyB0b0ZpbGVVcmwgYXMgd2luZG93c1RvRmlsZVVybCB9IGZyb20gXCIuL3dpbmRvd3MvdG9fZmlsZV91cmwudHNcIjtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIHBhdGggc3RyaW5nIHRvIGEgZmlsZSBVUkwuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyB0b0ZpbGVVcmwgfSBmcm9tIFwiQHN0ZC9wYXRoL3RvLWZpbGUtdXJsXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBpZiAoRGVuby5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCIpIHtcbiAqICAgYXNzZXJ0RXF1YWxzKHRvRmlsZVVybChcIlxcXFxob21lXFxcXGZvb1wiKSwgbmV3IFVSTChcImZpbGU6Ly8vaG9tZS9mb29cIikpO1xuICogICBhc3NlcnRFcXVhbHModG9GaWxlVXJsKFwiQzpcXFxcVXNlcnNcXFxcZm9vXCIpLCBuZXcgVVJMKFwiZmlsZTovLy9DOi9Vc2Vycy9mb29cIikpO1xuICogICBhc3NlcnRFcXVhbHModG9GaWxlVXJsKFwiXFxcXFxcXFwxMjcuMC4wLjFcXFxcaG9tZVxcXFxmb29cIiksIG5ldyBVUkwoXCJmaWxlOi8vMTI3LjAuMC4xL2hvbWUvZm9vXCIpKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGFzc2VydEVxdWFscyh0b0ZpbGVVcmwoXCIvaG9tZS9mb29cIiksIG5ldyBVUkwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBwYXRoIFBhdGggdG8gY29udmVydCB0byBmaWxlIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBmaWxlIFVSTCBlcXVpdmFsZW50IHRvIHRoZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9GaWxlVXJsKHBhdGg6IHN0cmluZyk6IFVSTCB7XG4gIHJldHVybiBpc1dpbmRvd3MgPyB3aW5kb3dzVG9GaWxlVXJsKHBhdGgpIDogcG9zaXhUb0ZpbGVVcmwocGF0aCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQyxTQUFTLFNBQVMsUUFBUSxXQUFXO0FBQ3JDLFNBQVMsYUFBYSxjQUFjLFFBQVEseUJBQXlCO0FBQ3JFLFNBQVMsYUFBYSxnQkFBZ0IsUUFBUSwyQkFBMkI7QUFFekU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FtQkMsR0FDRCxPQUFPLFNBQVMsVUFBVSxJQUFZO0VBQ3BDLE9BQU8sWUFBWSxpQkFBaUIsUUFBUSxlQUFlO0FBQzdEIn0= +// denoCacheMetadata=17444697340405645388,12321269542767879158
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/d06808fe6097adace2ddf2186702ab3d63d1bd46e4f59748e6bfe886c3871fd5.js b/vendor/gen/https/jsr.io/d06808fe6097adace2ddf2186702ab3d63d1bd46e4f59748e6bfe886c3871fd5.js new file mode 100644 index 0000000..9a55a7e --- /dev/null +++ b/vendor/gen/https/jsr.io/d06808fe6097adace2ddf2186702ab3d63d1bd46e4f59748e6bfe886c3871fd5.js @@ -0,0 +1,36 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { CHAR_COLON } from "../_common/constants.ts"; +import { assertPath } from "../_common/assert_path.ts"; +import { isPathSeparator, isWindowsDeviceRoot } from "./_util.ts"; +/** + * Verifies whether provided path is absolute. + * + * @example Usage + * ```ts + * import { isAbsolute } from "@std/path/windows/is-absolute"; + * import { assert, assertFalse } from "@std/assert"; + * + * assert(isAbsolute("C:\\foo\\bar")); + * assertFalse(isAbsolute("..\\baz")); + * ``` + * + * @param path The path to verify. + * @returns `true` if the path is absolute, `false` otherwise. + */ export function isAbsolute(path) { + assertPath(path); + const len = path.length; + if (len === 0) return false; + const code = path.charCodeAt(0); + if (isPathSeparator(code)) { + return true; + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + if (len > 2 && path.charCodeAt(1) === CHAR_COLON) { + if (isPathSeparator(path.charCodeAt(2))) return true; + } + } + return false; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC93aW5kb3dzL2lzX2Fic29sdXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IENIQVJfQ09MT04gfSBmcm9tIFwiLi4vX2NvbW1vbi9jb25zdGFudHMudHNcIjtcbmltcG9ydCB7IGFzc2VydFBhdGggfSBmcm9tIFwiLi4vX2NvbW1vbi9hc3NlcnRfcGF0aC50c1wiO1xuaW1wb3J0IHsgaXNQYXRoU2VwYXJhdG9yLCBpc1dpbmRvd3NEZXZpY2VSb290IH0gZnJvbSBcIi4vX3V0aWwudHNcIjtcblxuLyoqXG4gKiBWZXJpZmllcyB3aGV0aGVyIHByb3ZpZGVkIHBhdGggaXMgYWJzb2x1dGUuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBpc0Fic29sdXRlIH0gZnJvbSBcIkBzdGQvcGF0aC93aW5kb3dzL2lzLWFic29sdXRlXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnQsIGFzc2VydEZhbHNlIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogYXNzZXJ0KGlzQWJzb2x1dGUoXCJDOlxcXFxmb29cXFxcYmFyXCIpKTtcbiAqIGFzc2VydEZhbHNlKGlzQWJzb2x1dGUoXCIuLlxcXFxiYXpcIikpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gdmVyaWZ5LlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBwYXRoIGlzIGFic29sdXRlLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQWJzb2x1dGUocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgY29uc3QgbGVuID0gcGF0aC5sZW5ndGg7XG4gIGlmIChsZW4gPT09IDApIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KDApO1xuICBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoaXNXaW5kb3dzRGV2aWNlUm9vdChjb2RlKSkge1xuICAgIC8vIFBvc3NpYmxlIGRldmljZSByb290XG5cbiAgICBpZiAobGVuID4gMiAmJiBwYXRoLmNoYXJDb2RlQXQoMSkgPT09IENIQVJfQ09MT04pIHtcbiAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDIpKSkgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBRXJDLFNBQVMsVUFBVSxRQUFRLDBCQUEwQjtBQUNyRCxTQUFTLFVBQVUsUUFBUSw0QkFBNEI7QUFDdkQsU0FBUyxlQUFlLEVBQUUsbUJBQW1CLFFBQVEsYUFBYTtBQUVsRTs7Ozs7Ozs7Ozs7Ozs7Q0FjQyxHQUNELE9BQU8sU0FBUyxXQUFXLElBQVk7RUFDckMsV0FBVztFQUVYLE1BQU0sTUFBTSxLQUFLLE1BQU07RUFDdkIsSUFBSSxRQUFRLEdBQUcsT0FBTztFQUV0QixNQUFNLE9BQU8sS0FBSyxVQUFVLENBQUM7RUFDN0IsSUFBSSxnQkFBZ0IsT0FBTztJQUN6QixPQUFPO0VBQ1QsT0FBTyxJQUFJLG9CQUFvQixPQUFPO0lBQ3BDLHVCQUF1QjtJQUV2QixJQUFJLE1BQU0sS0FBSyxLQUFLLFVBQVUsQ0FBQyxPQUFPLFlBQVk7TUFDaEQsSUFBSSxnQkFBZ0IsS0FBSyxVQUFVLENBQUMsS0FBSyxPQUFPO0lBQ2xEO0VBQ0Y7RUFDQSxPQUFPO0FBQ1QifQ== +// denoCacheMetadata=710331920401935489,17293135830649487563
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/d16c9512c025de36eaf781853df942212b9dba9e62b4e0b8f622367783646eeb.js b/vendor/gen/https/jsr.io/d16c9512c025de36eaf781853df942212b9dba9e62b4e0b8f622367783646eeb.js new file mode 100644 index 0000000..987f197 --- /dev/null +++ b/vendor/gen/https/jsr.io/d16c9512c025de36eaf781853df942212b9dba9e62b4e0b8f622367783646eeb.js @@ -0,0 +1,116 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** Object structure for a list of HTML entities. */ const rawToEntityEntries = [ + [ + "&", + "&" + ], + [ + "<", + "<" + ], + [ + ">", + ">" + ], + [ + '"', + """ + ], + [ + "'", + "'" + ] +]; +const defaultEntityList = Object.fromEntries([ + ...rawToEntityEntries.map(([raw, entity])=>[ + entity, + raw + ]), + [ + "'", + "'" + ], + [ + " ", + "\xa0" + ] +]); +const rawToEntity = new Map(rawToEntityEntries); +const rawRe = new RegExp(`[${[ + ...rawToEntity.keys() +].join("")}]`, "g"); +/** + * Escapes text for safe interpolation into HTML text content and quoted attributes. + * + * @example Usage + * ```ts + * import { escape } from "@std/html/entities"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(escape("<>'&AA"), "<>'&AA"); + * + * // Characters that don't need to be escaped will be left alone, + * // even if named HTML entities exist for them. + * assertEquals(escape("þð"), "þð"); + * ``` + * + * @param str The string to escape. + * @returns The escaped string. + */ export function escape(str) { + return str.replaceAll(rawRe, (m)=>rawToEntity.get(m)); +} +const defaultUnescapeOptions = { + entityList: defaultEntityList +}; +const MAX_CODE_POINT = 0x10ffff; +const RX_DEC_ENTITY = /&#([0-9]+);/g; +const RX_HEX_ENTITY = /&#x(\p{AHex}+);/gu; +const entityListRegexCache = new WeakMap(); +/** + * Unescapes HTML entities in text. + * + * Default options only handle `&<>'"` and numeric entities. + * + * @example Basic usage + * ```ts + * import { unescape } from "@std/html/entities"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(unescape("<>'&AA"), "<>'&AA"); + * assertEquals(unescape("þð"), "þð"); + * ``` + * + * @example Using a custom entity list + * + * This uses the full named entity list from the HTML spec (~47K un-minified) + * + * ```ts + * import { unescape } from "@std/html/entities"; + * import entityList from "@std/html/named-entity-list.json" with { type: "json" }; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(unescape("<>'&AA", { entityList }), "<>'&AA"); + * ``` + * + * @param str The string to unescape. + * @param options Options for unescaping. + * @returns The unescaped string. + */ export function unescape(str, options = {}) { + const { entityList } = { + ...defaultUnescapeOptions, + ...options + }; + let entityRe = entityListRegexCache.get(entityList); + if (!entityRe) { + entityRe = new RegExp(`(${Object.keys(entityList).sort((a, b)=>b.length - a.length).join("|")})`, "g"); + entityListRegexCache.set(entityList, entityRe); + } + return str.replaceAll(entityRe, (m)=>entityList[m]).replaceAll(RX_DEC_ENTITY, (_, dec)=>codePointStrToChar(dec, 10)).replaceAll(RX_HEX_ENTITY, (_, hex)=>codePointStrToChar(hex, 16)); +} +function codePointStrToChar(codePointStr, radix) { + const codePoint = parseInt(codePointStr, radix); + return codePoint > MAX_CODE_POINT ? "�" : String.fromCodePoint(codePoint); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvaHRtbC8xLjAuNC9lbnRpdGllcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vKiogT2JqZWN0IHN0cnVjdHVyZSBmb3IgYSBsaXN0IG9mIEhUTUwgZW50aXRpZXMuICovXG5leHBvcnQgdHlwZSBFbnRpdHlMaXN0ID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuY29uc3QgcmF3VG9FbnRpdHlFbnRyaWVzID0gW1xuICBbXCImXCIsIFwiJmFtcDtcIl0sXG4gIFtcIjxcIiwgXCImbHQ7XCJdLFxuICBbXCI+XCIsIFwiJmd0O1wiXSxcbiAgWydcIicsIFwiJnF1b3Q7XCJdLFxuICBbXCInXCIsIFwiJiMzOTtcIl0sXG5dIGFzIGNvbnN0O1xuXG5jb25zdCBkZWZhdWx0RW50aXR5TGlzdDogRW50aXR5TGlzdCA9IE9iamVjdC5mcm9tRW50cmllcyhbXG4gIC4uLnJhd1RvRW50aXR5RW50cmllcy5tYXAoKFtyYXcsIGVudGl0eV0pID0+IFtlbnRpdHksIHJhd10pLFxuICBbXCImYXBvcztcIiwgXCInXCJdLFxuICBbXCImbmJzcDtcIiwgXCJcXHhhMFwiXSxcbl0pO1xuXG5jb25zdCByYXdUb0VudGl0eSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KHJhd1RvRW50aXR5RW50cmllcyk7XG5cbmNvbnN0IHJhd1JlID0gbmV3IFJlZ0V4cChgWyR7Wy4uLnJhd1RvRW50aXR5LmtleXMoKV0uam9pbihcIlwiKX1dYCwgXCJnXCIpO1xuXG4vKipcbiAqIEVzY2FwZXMgdGV4dCBmb3Igc2FmZSBpbnRlcnBvbGF0aW9uIGludG8gSFRNTCB0ZXh0IGNvbnRlbnQgYW5kIHF1b3RlZCBhdHRyaWJ1dGVzLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZXNjYXBlIH0gZnJvbSBcIkBzdGQvaHRtbC9lbnRpdGllc1wiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogYXNzZXJ0RXF1YWxzKGVzY2FwZShcIjw+JyZBQVwiKSwgXCImbHQ7Jmd0OyYjMzk7JmFtcDtBQVwiKTtcbiAqXG4gKiAvLyBDaGFyYWN0ZXJzIHRoYXQgZG9uJ3QgbmVlZCB0byBiZSBlc2NhcGVkIHdpbGwgYmUgbGVmdCBhbG9uZSxcbiAqIC8vIGV2ZW4gaWYgbmFtZWQgSFRNTCBlbnRpdGllcyBleGlzdCBmb3IgdGhlbS5cbiAqIGFzc2VydEVxdWFscyhlc2NhcGUoXCLDvsOwXCIpLCBcIsO+w7BcIik7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIFRoZSBzdHJpbmcgdG8gZXNjYXBlLlxuICogQHJldHVybnMgVGhlIGVzY2FwZWQgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlQWxsKHJhd1JlLCAobSkgPT4gcmF3VG9FbnRpdHkuZ2V0KG0pISk7XG59XG5cbi8qKiBPcHRpb25zIGZvciB7QGxpbmtjb2RlIHVuZXNjYXBlfS4gKi9cbmV4cG9ydCB0eXBlIFVuZXNjYXBlT3B0aW9ucyA9IHsgZW50aXR5TGlzdDogRW50aXR5TGlzdCB9O1xuXG5jb25zdCBkZWZhdWx0VW5lc2NhcGVPcHRpb25zOiBVbmVzY2FwZU9wdGlvbnMgPSB7XG4gIGVudGl0eUxpc3Q6IGRlZmF1bHRFbnRpdHlMaXN0LFxufTtcblxuY29uc3QgTUFYX0NPREVfUE9JTlQgPSAweDEwZmZmZjtcblxuY29uc3QgUlhfREVDX0VOVElUWSA9IC8mIyhbMC05XSspOy9nO1xuY29uc3QgUlhfSEVYX0VOVElUWSA9IC8mI3goXFxwe0FIZXh9Kyk7L2d1O1xuXG5jb25zdCBlbnRpdHlMaXN0UmVnZXhDYWNoZSA9IG5ldyBXZWFrTWFwPEVudGl0eUxpc3QsIFJlZ0V4cD4oKTtcblxuLyoqXG4gKiBVbmVzY2FwZXMgSFRNTCBlbnRpdGllcyBpbiB0ZXh0LlxuICpcbiAqIERlZmF1bHQgb3B0aW9ucyBvbmx5IGhhbmRsZSBgJjw+J1wiYCBhbmQgbnVtZXJpYyBlbnRpdGllcy5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHVuZXNjYXBlIH0gZnJvbSBcIkBzdGQvaHRtbC9lbnRpdGllc1wiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogYXNzZXJ0RXF1YWxzKHVuZXNjYXBlKFwiJmx0OyZndDsmIzM5OyZhbXA7QUFcIiksIFwiPD4nJkFBXCIpO1xuICogYXNzZXJ0RXF1YWxzKHVuZXNjYXBlKFwiJnRob3JuOyZldGg7XCIpLCBcIiZ0aG9ybjsmZXRoO1wiKTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFVzaW5nIGEgY3VzdG9tIGVudGl0eSBsaXN0XG4gKlxuICogVGhpcyB1c2VzIHRoZSBmdWxsIG5hbWVkIGVudGl0eSBsaXN0IGZyb20gdGhlIEhUTUwgc3BlYyAofjQ3SyB1bi1taW5pZmllZClcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgdW5lc2NhcGUgfSBmcm9tIFwiQHN0ZC9odG1sL2VudGl0aWVzXCI7XG4gKiBpbXBvcnQgZW50aXR5TGlzdCBmcm9tIFwiQHN0ZC9odG1sL25hbWVkLWVudGl0eS1saXN0Lmpzb25cIiB3aXRoIHsgdHlwZTogXCJqc29uXCIgfTtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydEVxdWFscyh1bmVzY2FwZShcIiZsdDsmZ3Q7JiMzOTsmYW1wO0FBXCIsIHsgZW50aXR5TGlzdCB9KSwgXCI8PicmQUFcIik7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIFRoZSBzdHJpbmcgdG8gdW5lc2NhcGUuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciB1bmVzY2FwaW5nLlxuICogQHJldHVybnMgVGhlIHVuZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmVzY2FwZShcbiAgc3RyOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFBhcnRpYWw8VW5lc2NhcGVPcHRpb25zPiA9IHt9LFxuKTogc3RyaW5nIHtcbiAgY29uc3QgeyBlbnRpdHlMaXN0IH0gPSB7IC4uLmRlZmF1bHRVbmVzY2FwZU9wdGlvbnMsIC4uLm9wdGlvbnMgfTtcblxuICBsZXQgZW50aXR5UmUgPSBlbnRpdHlMaXN0UmVnZXhDYWNoZS5nZXQoZW50aXR5TGlzdCk7XG5cbiAgaWYgKCFlbnRpdHlSZSkge1xuICAgIGVudGl0eVJlID0gbmV3IFJlZ0V4cChcbiAgICAgIGAoJHtcbiAgICAgICAgT2JqZWN0LmtleXMoZW50aXR5TGlzdClcbiAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aClcbiAgICAgICAgICAuam9pbihcInxcIilcbiAgICAgIH0pYCxcbiAgICAgIFwiZ1wiLFxuICAgICk7XG5cbiAgICBlbnRpdHlMaXN0UmVnZXhDYWNoZS5zZXQoZW50aXR5TGlzdCwgZW50aXR5UmUpO1xuICB9XG5cbiAgcmV0dXJuIHN0clxuICAgIC5yZXBsYWNlQWxsKGVudGl0eVJlLCAobSkgPT4gZW50aXR5TGlzdFttXSEpXG4gICAgLnJlcGxhY2VBbGwoUlhfREVDX0VOVElUWSwgKF8sIGRlYykgPT4gY29kZVBvaW50U3RyVG9DaGFyKGRlYywgMTApKVxuICAgIC5yZXBsYWNlQWxsKFJYX0hFWF9FTlRJVFksIChfLCBoZXgpID0+IGNvZGVQb2ludFN0clRvQ2hhcihoZXgsIDE2KSk7XG59XG5cbmZ1bmN0aW9uIGNvZGVQb2ludFN0clRvQ2hhcihjb2RlUG9pbnRTdHI6IHN0cmluZywgcmFkaXg6IG51bWJlcikge1xuICBjb25zdCBjb2RlUG9pbnQgPSBwYXJzZUludChjb2RlUG9pbnRTdHIsIHJhZGl4KTtcblxuICByZXR1cm4gY29kZVBvaW50ID4gTUFYX0NPREVfUE9JTlQgPyBcIu+/vVwiIDogU3RyaW5nLmZyb21Db2RlUG9pbnQoY29kZVBvaW50KTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDLGtEQUFrRCxHQUdsRCxNQUFNLHFCQUFxQjtFQUN6QjtJQUFDO0lBQUs7R0FBUTtFQUNkO0lBQUM7SUFBSztHQUFPO0VBQ2I7SUFBQztJQUFLO0dBQU87RUFDYjtJQUFDO0lBQUs7R0FBUztFQUNmO0lBQUM7SUFBSztHQUFRO0NBQ2Y7QUFFRCxNQUFNLG9CQUFnQyxPQUFPLFdBQVcsQ0FBQztLQUNwRCxtQkFBbUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sR0FBSztNQUFDO01BQVE7S0FBSTtFQUMxRDtJQUFDO0lBQVU7R0FBSTtFQUNmO0lBQUM7SUFBVTtHQUFPO0NBQ25CO0FBRUQsTUFBTSxjQUFjLElBQUksSUFBb0I7QUFFNUMsTUFBTSxRQUFRLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRTtLQUFJLFlBQVksSUFBSTtDQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFFbEU7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBaUJDLEdBQ0QsT0FBTyxTQUFTLE9BQU8sR0FBVztFQUNoQyxPQUFPLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFNLFlBQVksR0FBRyxDQUFDO0FBQ3REO0FBS0EsTUFBTSx5QkFBMEM7RUFDOUMsWUFBWTtBQUNkO0FBRUEsTUFBTSxpQkFBaUI7QUFFdkIsTUFBTSxnQkFBZ0I7QUFDdEIsTUFBTSxnQkFBZ0I7QUFFdEIsTUFBTSx1QkFBdUIsSUFBSTtBQUVqQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E2QkMsR0FDRCxPQUFPLFNBQVMsU0FDZCxHQUFXLEVBQ1gsVUFBb0MsQ0FBQyxDQUFDO0VBRXRDLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRztJQUFFLEdBQUcsc0JBQXNCO0lBQUUsR0FBRyxPQUFPO0VBQUM7RUFFL0QsSUFBSSxXQUFXLHFCQUFxQixHQUFHLENBQUM7RUFFeEMsSUFBSSxDQUFDLFVBQVU7SUFDYixXQUFXLElBQUksT0FDYixDQUFDLENBQUMsRUFDQSxPQUFPLElBQUksQ0FBQyxZQUNULElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFDbEMsSUFBSSxDQUFDLEtBQ1QsQ0FBQyxDQUFDLEVBQ0g7SUFHRixxQkFBcUIsR0FBRyxDQUFDLFlBQVk7RUFDdkM7RUFFQSxPQUFPLElBQ0osVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFNLFVBQVUsQ0FBQyxFQUFFLEVBQ3pDLFVBQVUsQ0FBQyxlQUFlLENBQUMsR0FBRyxNQUFRLG1CQUFtQixLQUFLLEtBQzlELFVBQVUsQ0FBQyxlQUFlLENBQUMsR0FBRyxNQUFRLG1CQUFtQixLQUFLO0FBQ25FO0FBRUEsU0FBUyxtQkFBbUIsWUFBb0IsRUFBRSxLQUFhO0VBQzdELE1BQU0sWUFBWSxTQUFTLGNBQWM7RUFFekMsT0FBTyxZQUFZLGlCQUFpQixNQUFNLE9BQU8sYUFBYSxDQUFDO0FBQ2pFIn0= +// denoCacheMetadata=9910753934585003460,7211462811621688976
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/d1a28cffd932ac7e2195b10c3497bf832935d5d3a7dde0770ae98a9728fada08.js b/vendor/gen/https/jsr.io/d1a28cffd932ac7e2195b10c3497bf832935d5d3a7dde0770ae98a9728fada08.js new file mode 100644 index 0000000..361bbe1 --- /dev/null +++ b/vendor/gen/https/jsr.io/d1a28cffd932ac7e2195b10c3497bf832935d5d3a7dde0770ae98a9728fada08.js @@ -0,0 +1,63 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. +import { CHAR_DOT, CHAR_FORWARD_SLASH } from "./constants.ts"; +// Resolves . and .. elements in a path with directory names +export function normalizeString(path, allowAboveRoot, separator, isPathSeparator) { + let res = ""; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code; + for(let i = 0; i <= path.length; ++i){ + if (i < path.length) code = path.charCodeAt(i); + else if (isPathSeparator(code)) break; + else code = CHAR_FORWARD_SLASH; + if (isPathSeparator(code)) { + if (lastSlash === i - 1 || dots === 1) { + // NOOP + } else if (lastSlash !== i - 1 && dots === 2) { + if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== CHAR_DOT || res.charCodeAt(res.length - 2) !== CHAR_DOT) { + if (res.length > 2) { + const lastSlashIndex = res.lastIndexOf(separator); + if (lastSlashIndex === -1) { + res = ""; + lastSegmentLength = 0; + } else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf(separator); + } + lastSlash = i; + dots = 0; + continue; + } else if (res.length === 2 || res.length === 1) { + res = ""; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + if (res.length > 0) res += `${separator}..`; + else res = ".."; + lastSegmentLength = 2; + } + } else { + if (res.length > 0) res += separator + path.slice(lastSlash + 1, i); + else res = path.slice(lastSlash + 1, i); + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } else if (code === CHAR_DOT && dots !== -1) { + ++dots; + } else { + dots = -1; + } + } + return res; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9fY29tbW9uL25vcm1hbGl6ZV9zdHJpbmcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cbi8vIFBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9icm93c2VyaWZ5L3BhdGgtYnJvd3NlcmlmeS9cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgQ0hBUl9ET1QsIENIQVJfRk9SV0FSRF9TTEFTSCB9IGZyb20gXCIuL2NvbnN0YW50cy50c1wiO1xuXG4vLyBSZXNvbHZlcyAuIGFuZCAuLiBlbGVtZW50cyBpbiBhIHBhdGggd2l0aCBkaXJlY3RvcnkgbmFtZXNcbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTdHJpbmcoXG4gIHBhdGg6IHN0cmluZyxcbiAgYWxsb3dBYm92ZVJvb3Q6IGJvb2xlYW4sXG4gIHNlcGFyYXRvcjogc3RyaW5nLFxuICBpc1BhdGhTZXBhcmF0b3I6IChjb2RlOiBudW1iZXIpID0+IGJvb2xlYW4sXG4pOiBzdHJpbmcge1xuICBsZXQgcmVzID0gXCJcIjtcbiAgbGV0IGxhc3RTZWdtZW50TGVuZ3RoID0gMDtcbiAgbGV0IGxhc3RTbGFzaCA9IC0xO1xuICBsZXQgZG90cyA9IDA7XG4gIGxldCBjb2RlOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIGZvciAobGV0IGkgPSAwOyBpIDw9IHBhdGgubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoaSA8IHBhdGgubGVuZ3RoKSBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgIGVsc2UgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlISkpIGJyZWFrO1xuICAgIGVsc2UgY29kZSA9IENIQVJfRk9SV0FSRF9TTEFTSDtcblxuICAgIGlmIChpc1BhdGhTZXBhcmF0b3IoY29kZSEpKSB7XG4gICAgICBpZiAobGFzdFNsYXNoID09PSBpIC0gMSB8fCBkb3RzID09PSAxKSB7XG4gICAgICAgIC8vIE5PT1BcbiAgICAgIH0gZWxzZSBpZiAobGFzdFNsYXNoICE9PSBpIC0gMSAmJiBkb3RzID09PSAyKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXMubGVuZ3RoIDwgMiB8fFxuICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoICE9PSAyIHx8XG4gICAgICAgICAgcmVzLmNoYXJDb2RlQXQocmVzLmxlbmd0aCAtIDEpICE9PSBDSEFSX0RPVCB8fFxuICAgICAgICAgIHJlcy5jaGFyQ29kZUF0KHJlcy5sZW5ndGggLSAyKSAhPT0gQ0hBUl9ET1RcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICBjb25zdCBsYXN0U2xhc2hJbmRleCA9IHJlcy5sYXN0SW5kZXhPZihzZXBhcmF0b3IpO1xuICAgICAgICAgICAgaWYgKGxhc3RTbGFzaEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICByZXMgPSBcIlwiO1xuICAgICAgICAgICAgICBsYXN0U2VnbWVudExlbmd0aCA9IDA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXMgPSByZXMuc2xpY2UoMCwgbGFzdFNsYXNoSW5kZXgpO1xuICAgICAgICAgICAgICBsYXN0U2VnbWVudExlbmd0aCA9IHJlcy5sZW5ndGggLSAxIC0gcmVzLmxhc3RJbmRleE9mKHNlcGFyYXRvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYXN0U2xhc2ggPSBpO1xuICAgICAgICAgICAgZG90cyA9IDA7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5sZW5ndGggPT09IDIgfHwgcmVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcmVzID0gXCJcIjtcbiAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMDtcbiAgICAgICAgICAgIGxhc3RTbGFzaCA9IGk7XG4gICAgICAgICAgICBkb3RzID0gMDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoYWxsb3dBYm92ZVJvb3QpIHtcbiAgICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHJlcyArPSBgJHtzZXBhcmF0b3J9Li5gO1xuICAgICAgICAgIGVsc2UgcmVzID0gXCIuLlwiO1xuICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAwKSByZXMgKz0gc2VwYXJhdG9yICsgcGF0aC5zbGljZShsYXN0U2xhc2ggKyAxLCBpKTtcbiAgICAgICAgZWxzZSByZXMgPSBwYXRoLnNsaWNlKGxhc3RTbGFzaCArIDEsIGkpO1xuICAgICAgICBsYXN0U2VnbWVudExlbmd0aCA9IGkgLSBsYXN0U2xhc2ggLSAxO1xuICAgICAgfVxuICAgICAgbGFzdFNsYXNoID0gaTtcbiAgICAgIGRvdHMgPSAwO1xuICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gQ0hBUl9ET1QgJiYgZG90cyAhPT0gLTEpIHtcbiAgICAgICsrZG90cztcbiAgICB9IGVsc2Uge1xuICAgICAgZG90cyA9IC0xO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxpREFBaUQ7QUFDakQsNkRBQTZEO0FBQzdELHFDQUFxQztBQUVyQyxTQUFTLFFBQVEsRUFBRSxrQkFBa0IsUUFBUSxpQkFBaUI7QUFFOUQsNERBQTREO0FBQzVELE9BQU8sU0FBUyxnQkFDZCxJQUFZLEVBQ1osY0FBdUIsRUFDdkIsU0FBaUIsRUFDakIsZUFBMEM7RUFFMUMsSUFBSSxNQUFNO0VBQ1YsSUFBSSxvQkFBb0I7RUFDeEIsSUFBSSxZQUFZLENBQUM7RUFDakIsSUFBSSxPQUFPO0VBQ1gsSUFBSTtFQUNKLElBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxLQUFLLE1BQU0sRUFBRSxFQUFFLEVBQUc7SUFDckMsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFLE9BQU8sS0FBSyxVQUFVLENBQUM7U0FDdkMsSUFBSSxnQkFBZ0IsT0FBUTtTQUM1QixPQUFPO0lBRVosSUFBSSxnQkFBZ0IsT0FBUTtNQUMxQixJQUFJLGNBQWMsSUFBSSxLQUFLLFNBQVMsR0FBRztNQUNyQyxPQUFPO01BQ1QsT0FBTyxJQUFJLGNBQWMsSUFBSSxLQUFLLFNBQVMsR0FBRztRQUM1QyxJQUNFLElBQUksTUFBTSxHQUFHLEtBQ2Isc0JBQXNCLEtBQ3RCLElBQUksVUFBVSxDQUFDLElBQUksTUFBTSxHQUFHLE9BQU8sWUFDbkMsSUFBSSxVQUFVLENBQUMsSUFBSSxNQUFNLEdBQUcsT0FBTyxVQUNuQztVQUNBLElBQUksSUFBSSxNQUFNLEdBQUcsR0FBRztZQUNsQixNQUFNLGlCQUFpQixJQUFJLFdBQVcsQ0FBQztZQUN2QyxJQUFJLG1CQUFtQixDQUFDLEdBQUc7Y0FDekIsTUFBTTtjQUNOLG9CQUFvQjtZQUN0QixPQUFPO2NBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHO2NBQ25CLG9CQUFvQixJQUFJLE1BQU0sR0FBRyxJQUFJLElBQUksV0FBVyxDQUFDO1lBQ3ZEO1lBQ0EsWUFBWTtZQUNaLE9BQU87WUFDUDtVQUNGLE9BQU8sSUFBSSxJQUFJLE1BQU0sS0FBSyxLQUFLLElBQUksTUFBTSxLQUFLLEdBQUc7WUFDL0MsTUFBTTtZQUNOLG9CQUFvQjtZQUNwQixZQUFZO1lBQ1osT0FBTztZQUNQO1VBQ0Y7UUFDRjtRQUNBLElBQUksZ0JBQWdCO1VBQ2xCLElBQUksSUFBSSxNQUFNLEdBQUcsR0FBRyxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7ZUFDdEMsTUFBTTtVQUNYLG9CQUFvQjtRQUN0QjtNQUNGLE9BQU87UUFDTCxJQUFJLElBQUksTUFBTSxHQUFHLEdBQUcsT0FBTyxZQUFZLEtBQUssS0FBSyxDQUFDLFlBQVksR0FBRzthQUM1RCxNQUFNLEtBQUssS0FBSyxDQUFDLFlBQVksR0FBRztRQUNyQyxvQkFBb0IsSUFBSSxZQUFZO01BQ3RDO01BQ0EsWUFBWTtNQUNaLE9BQU87SUFDVCxPQUFPLElBQUksU0FBUyxZQUFZLFNBQVMsQ0FBQyxHQUFHO01BQzNDLEVBQUU7SUFDSixPQUFPO01BQ0wsT0FBTyxDQUFDO0lBQ1Y7RUFDRjtFQUNBLE9BQU87QUFDVCJ9 +// denoCacheMetadata=9501868522652898936,11766380831951928653
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/d20b5f91a0f87c99ad77b39a05130c575462a7d0c85cdc29f3994df327f1f683.js b/vendor/gen/https/jsr.io/d20b5f91a0f87c99ad77b39a05130c575462a7d0c85cdc29f3994df327f1f683.js new file mode 100644 index 0000000..815eaa3 --- /dev/null +++ b/vendor/gen/https/jsr.io/d20b5f91a0f87c99ad77b39a05130c575462a7d0c85cdc29f3994df327f1f683.js @@ -0,0 +1,22 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * Provides tools for working with + * {@link https://code.visualstudio.com/docs/languages/json#_json-with-comments | JSONC} + * (JSON with comments). + * + * Currently, this module only provides a means of parsing JSONC. JSONC + * serialization is not yet supported. + * + * ```ts + * import { parse } from "@std/jsonc"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(parse('{"foo": "bar", } // comment'), { foo: "bar" }); + * assertEquals(parse('{"foo": "bar", } /* comment *\/'), { foo: "bar" }); + * ``` + * + * @module + */ export * from "./parse.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvanNvbmMvMS4wLjIvbW9kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbi8qKlxuICogUHJvdmlkZXMgdG9vbHMgZm9yIHdvcmtpbmcgd2l0aFxuICoge0BsaW5rIGh0dHBzOi8vY29kZS52aXN1YWxzdHVkaW8uY29tL2RvY3MvbGFuZ3VhZ2VzL2pzb24jX2pzb24td2l0aC1jb21tZW50cyB8IEpTT05DfVxuICogKEpTT04gd2l0aCBjb21tZW50cykuXG4gKlxuICogQ3VycmVudGx5LCB0aGlzIG1vZHVsZSBvbmx5IHByb3ZpZGVzIGEgbWVhbnMgb2YgcGFyc2luZyBKU09OQy4gSlNPTkNcbiAqIHNlcmlhbGl6YXRpb24gaXMgbm90IHlldCBzdXBwb3J0ZWQuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHBhcnNlIH0gZnJvbSBcIkBzdGQvanNvbmNcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydEVxdWFscyhwYXJzZSgne1wiZm9vXCI6IFwiYmFyXCIsIH0gLy8gY29tbWVudCcpLCB7IGZvbzogXCJiYXJcIiB9KTtcbiAqIGFzc2VydEVxdWFscyhwYXJzZSgne1wiZm9vXCI6IFwiYmFyXCIsIH0gLyogY29tbWVudCAqXFwvJyksIHsgZm9vOiBcImJhclwiIH0pO1xuICogYGBgXG4gKlxuICogQG1vZHVsZVxuICovXG5leHBvcnQgKiBmcm9tIFwiLi9wYXJzZS50c1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckM7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBaUJDLEdBQ0QsY0FBYyxhQUFhIn0= +// denoCacheMetadata=2644297559304325782,10846175827182115339
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/d284c0b38d5698704caef2b0deb1a25ef5082748b28a14bd398e4b12ff038284.js b/vendor/gen/https/jsr.io/d284c0b38d5698704caef2b0deb1a25ef5082748b28a14bd398e4b12ff038284.js new file mode 100644 index 0000000..d37e23b --- /dev/null +++ b/vendor/gen/https/jsr.io/d284c0b38d5698704caef2b0deb1a25ef5082748b28a14bd398e4b12ff038284.js @@ -0,0 +1,214 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +// This module is generated from {@link https://www.iana.org/assignments/http-methods/http-methods.xhtml#methods | IANA Hypertext Transfer Protocol (HTTP) Method Registry} +/** + * HTTP Methods derived from IANA Hypertext Transfer Protocol (HTTP) Method Registry + * + * @experimental **UNSTABLE**: New API, yet to be vetted. + * + * @see {@link https://www.iana.org/assignments/http-methods/http-methods.xhtml#methods | IANA Hypertext Transfer Protocol (HTTP) Method Registry} + */ export const METHOD = { + /** + * ACL (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc3744 | RFC3744, Section 8.1} + */ Acl: "ACL", + /** + * BASELINE-CONTROL (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc3253 | RFC3253, Section 12.6} + */ BaselineControl: "BASELINE-CONTROL", + /** + * BIND (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc5842 | RFC5842, Section 4} + */ Bind: "BIND", + /** + * CHECKIN (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc3253 | RFC3253, Section 4.4, Section 9.4} + */ Checkin: "CHECKIN", + /** + * CHECKOUT (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc3253 | RFC3253, Section 4.3, Section 8.8} + */ Checkout: "CHECKOUT", + /** + * CONNECT (Safe: no; Idempotent: no) + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 9.3.6} + */ Connect: "CONNECT", + /** + * COPY (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc4918 | RFC4918, Section 9.8} + */ Copy: "COPY", + /** + * DELETE (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 9.3.5} + */ Delete: "DELETE", + /** + * GET (Safe: yes; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 9.3.1} + */ Get: "GET", + /** + * HEAD (Safe: yes; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 9.3.2} + */ Head: "HEAD", + /** + * LABEL (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc3253 | RFC3253, Section 8.2} + */ Label: "LABEL", + /** + * LINK (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc2068 | RFC2068, Section 19.6.1.2} + */ Link: "LINK", + /** + * LOCK (Safe: no; Idempotent: no) + * + * @see {@link https://www.iana.org/go/rfc4918 | RFC4918, Section 9.10} + */ Lock: "LOCK", + /** + * MERGE (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc3253 | RFC3253, Section 11.2} + */ Merge: "MERGE", + /** + * MKACTIVITY (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc3253 | RFC3253, Section 13.5} + */ Mkactivity: "MKACTIVITY", + /** + * MKCALENDAR (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc4791 | RFC4791, Section 5.3.1} + * @see {@link https://www.iana.org/go/rfc8144 | RFC8144, Section 2.3} + */ Mkcalendar: "MKCALENDAR", + /** + * MKCOL (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc4918 | RFC4918, Section 9.3} + * @see {@link https://www.iana.org/go/rfc5689 | RFC5689, Section 3} + * @see {@link https://www.iana.org/go/rfc8144 | RFC8144, Section 2.3} + */ Mkcol: "MKCOL", + /** + * MKREDIRECTREF (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc4437 | RFC4437, Section 6} + */ Mkredirectref: "MKREDIRECTREF", + /** + * MKWORKSPACE (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc3253 | RFC3253, Section 6.3} + */ Mkworkspace: "MKWORKSPACE", + /** + * MOVE (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc4918 | RFC4918, Section 9.9} + */ Move: "MOVE", + /** + * OPTIONS (Safe: yes; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 9.3.7} + */ Options: "OPTIONS", + /** + * ORDERPATCH (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc3648 | RFC3648, Section 7} + */ Orderpatch: "ORDERPATCH", + /** + * PATCH (Safe: no; Idempotent: no) + * + * @see {@link https://www.iana.org/go/rfc5789 | RFC5789, Section 2} + */ Patch: "PATCH", + /** + * POST (Safe: no; Idempotent: no) + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 9.3.3} + */ Post: "POST", + /** + * PRI (Safe: yes; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc9113 | RFC9113, Section 3.4} + */ Pri: "PRI", + /** + * PROPFIND (Safe: yes; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc4918 | RFC4918, Section 9.1} + * @see {@link https://www.iana.org/go/rfc8144 | RFC8144, Section 2.1} + */ Propfind: "PROPFIND", + /** + * PROPPATCH (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc4918 | RFC4918, Section 9.2} + * @see {@link https://www.iana.org/go/rfc8144 | RFC8144, Section 2.2} + */ Proppatch: "PROPPATCH", + /** + * PUT (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 9.3.4} + */ Put: "PUT", + /** + * REBIND (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc5842 | RFC5842, Section 6} + */ Rebind: "REBIND", + /** + * REPORT (Safe: yes; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc3253 | RFC3253, Section 3.6} + * @see {@link https://www.iana.org/go/rfc8144 | RFC8144, Section 2.1} + */ Report: "REPORT", + /** + * SEARCH (Safe: yes; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc5323 | RFC5323, Section 2} + */ Search: "SEARCH", + /** + * TRACE (Safe: yes; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc9110 | RFC9110, Section 9.3.8} + */ Trace: "TRACE", + /** + * UNBIND (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc5842 | RFC5842, Section 5} + */ Unbind: "UNBIND", + /** + * UNCHECKOUT (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc3253 | RFC3253, Section 4.5} + */ Uncheckout: "UNCHECKOUT", + /** + * UNLINK (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc2068 | RFC2068, Section 19.6.1.3} + */ Unlink: "UNLINK", + /** + * UNLOCK (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc4918 | RFC4918, Section 9.11} + */ Unlock: "UNLOCK", + /** + * UPDATE (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc3253 | RFC3253, Section 7.1} + */ Update: "UPDATE", + /** + * UPDATEREDIRECTREF (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc4437 | RFC4437, Section 7} + */ Updateredirectref: "UPDATEREDIRECTREF", + /** + * VERSION-CONTROL (Safe: no; Idempotent: yes) + * + * @see {@link https://www.iana.org/go/rfc3253 | RFC3253, Section 3.5} + */ VersionControl: "VERSION-CONTROL" +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvaHR0cC8xLjAuMTYvdW5zdGFibGVfbWV0aG9kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG4vLyBUaGlzIG1vZHVsZSBpcyBnZW5lcmF0ZWQgZnJvbSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvaHR0cC1tZXRob2RzL2h0dHAtbWV0aG9kcy54aHRtbCNtZXRob2RzIHwgSUFOQSBIeXBlcnRleHQgVHJhbnNmZXIgUHJvdG9jb2wgKEhUVFApIE1ldGhvZCBSZWdpc3RyeX1cblxuLyoqXG4gKiBIVFRQIE1ldGhvZHMgZGVyaXZlZCBmcm9tIElBTkEgSHlwZXJ0ZXh0IFRyYW5zZmVyIFByb3RvY29sIChIVFRQKSBNZXRob2QgUmVnaXN0cnlcbiAqXG4gKiBAZXhwZXJpbWVudGFsICoqVU5TVEFCTEUqKjogTmV3IEFQSSwgeWV0IHRvIGJlIHZldHRlZC5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9odHRwLW1ldGhvZHMvaHR0cC1tZXRob2RzLnhodG1sI21ldGhvZHMgfCBJQU5BIEh5cGVydGV4dCBUcmFuc2ZlciBQcm90b2NvbCAoSFRUUCkgTWV0aG9kIFJlZ2lzdHJ5fVxuICovXG5leHBvcnQgY29uc3QgTUVUSE9EID0ge1xuICAvKipcbiAgICogQUNMIChTYWZlOiBubzsgSWRlbXBvdGVudDogeWVzKVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmMzNzQ0IHwgUkZDMzc0NCwgU2VjdGlvbiA4LjF9XG4gICAqL1xuICBBY2w6IFwiQUNMXCIsXG5cbiAgLyoqXG4gICAqIEJBU0VMSU5FLUNPTlRST0wgKFNhZmU6IG5vOyBJZGVtcG90ZW50OiB5ZXMpXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzMyNTMgfCBSRkMzMjUzLCBTZWN0aW9uIDEyLjZ9XG4gICAqL1xuICBCYXNlbGluZUNvbnRyb2w6IFwiQkFTRUxJTkUtQ09OVFJPTFwiLFxuXG4gIC8qKlxuICAgKiBCSU5EIChTYWZlOiBubzsgSWRlbXBvdGVudDogeWVzKVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM1ODQyIHwgUkZDNTg0MiwgU2VjdGlvbiA0fVxuICAgKi9cbiAgQmluZDogXCJCSU5EXCIsXG5cbiAgLyoqXG4gICAqIENIRUNLSU4gKFNhZmU6IG5vOyBJZGVtcG90ZW50OiB5ZXMpXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzMyNTMgfCBSRkMzMjUzLCBTZWN0aW9uIDQuNCwgU2VjdGlvbiA5LjR9XG4gICAqL1xuICBDaGVja2luOiBcIkNIRUNLSU5cIixcblxuICAvKipcbiAgICogQ0hFQ0tPVVQgKFNhZmU6IG5vOyBJZGVtcG90ZW50OiB5ZXMpXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzMyNTMgfCBSRkMzMjUzLCBTZWN0aW9uIDQuMywgU2VjdGlvbiA4Ljh9XG4gICAqL1xuICBDaGVja291dDogXCJDSEVDS09VVFwiLFxuXG4gIC8qKlxuICAgKiBDT05ORUNUIChTYWZlOiBubzsgSWRlbXBvdGVudDogbm8pXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzkxMTAgfCBSRkM5MTEwLCBTZWN0aW9uIDkuMy42fVxuICAgKi9cbiAgQ29ubmVjdDogXCJDT05ORUNUXCIsXG5cbiAgLyoqXG4gICAqIENPUFkgKFNhZmU6IG5vOyBJZGVtcG90ZW50OiB5ZXMpXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzQ5MTggfCBSRkM0OTE4LCBTZWN0aW9uIDkuOH1cbiAgICovXG4gIENvcHk6IFwiQ09QWVwiLFxuXG4gIC8qKlxuICAgKiBERUxFVEUgKFNhZmU6IG5vOyBJZGVtcG90ZW50OiB5ZXMpXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzkxMTAgfCBSRkM5MTEwLCBTZWN0aW9uIDkuMy41fVxuICAgKi9cbiAgRGVsZXRlOiBcIkRFTEVURVwiLFxuXG4gIC8qKlxuICAgKiBHRVQgKFNhZmU6IHllczsgSWRlbXBvdGVudDogeWVzKVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM5MTEwIHwgUkZDOTExMCwgU2VjdGlvbiA5LjMuMX1cbiAgICovXG4gIEdldDogXCJHRVRcIixcblxuICAvKipcbiAgICogSEVBRCAoU2FmZTogeWVzOyBJZGVtcG90ZW50OiB5ZXMpXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzkxMTAgfCBSRkM5MTEwLCBTZWN0aW9uIDkuMy4yfVxuICAgKi9cbiAgSGVhZDogXCJIRUFEXCIsXG5cbiAgLyoqXG4gICAqIExBQkVMIChTYWZlOiBubzsgSWRlbXBvdGVudDogeWVzKVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmMzMjUzIHwgUkZDMzI1MywgU2VjdGlvbiA4LjJ9XG4gICAqL1xuICBMYWJlbDogXCJMQUJFTFwiLFxuXG4gIC8qKlxuICAgKiBMSU5LIChTYWZlOiBubzsgSWRlbXBvdGVudDogeWVzKVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmMyMDY4IHwgUkZDMjA2OCwgU2VjdGlvbiAxOS42LjEuMn1cbiAgICovXG4gIExpbms6IFwiTElOS1wiLFxuXG4gIC8qKlxuICAgKiBMT0NLIChTYWZlOiBubzsgSWRlbXBvdGVudDogbm8pXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzQ5MTggfCBSRkM0OTE4LCBTZWN0aW9uIDkuMTB9XG4gICAqL1xuICBMb2NrOiBcIkxPQ0tcIixcblxuICAvKipcbiAgICogTUVSR0UgKFNhZmU6IG5vOyBJZGVtcG90ZW50OiB5ZXMpXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzMyNTMgfCBSRkMzMjUzLCBTZWN0aW9uIDExLjJ9XG4gICAqL1xuICBNZXJnZTogXCJNRVJHRVwiLFxuXG4gIC8qKlxuICAgKiBNS0FDVElWSVRZIChTYWZlOiBubzsgSWRlbXBvdGVudDogeWVzKVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmMzMjUzIHwgUkZDMzI1MywgU2VjdGlvbiAxMy41fVxuICAgKi9cbiAgTWthY3Rpdml0eTogXCJNS0FDVElWSVRZXCIsXG5cbiAgLyoqXG4gICAqIE1LQ0FMRU5EQVIgKFNhZmU6IG5vOyBJZGVtcG90ZW50OiB5ZXMpXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzQ3OTEgfCBSRkM0NzkxLCBTZWN0aW9uIDUuMy4xfVxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM4MTQ0IHwgUkZDODE0NCwgU2VjdGlvbiAyLjN9XG4gICAqL1xuICBNa2NhbGVuZGFyOiBcIk1LQ0FMRU5EQVJcIixcblxuICAvKipcbiAgICogTUtDT0wgKFNhZmU6IG5vOyBJZGVtcG90ZW50OiB5ZXMpXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzQ5MTggfCBSRkM0OTE4LCBTZWN0aW9uIDkuM31cbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjNTY4OSB8IFJGQzU2ODksIFNlY3Rpb24gM31cbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjODE0NCB8IFJGQzgxNDQsIFNlY3Rpb24gMi4zfVxuICAgKi9cbiAgTWtjb2w6IFwiTUtDT0xcIixcblxuICAvKipcbiAgICogTUtSRURJUkVDVFJFRiAoU2FmZTogbm87IElkZW1wb3RlbnQ6IHllcylcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjNDQzNyB8IFJGQzQ0MzcsIFNlY3Rpb24gNn1cbiAgICovXG4gIE1rcmVkaXJlY3RyZWY6IFwiTUtSRURJUkVDVFJFRlwiLFxuXG4gIC8qKlxuICAgKiBNS1dPUktTUEFDRSAoU2FmZTogbm87IElkZW1wb3RlbnQ6IHllcylcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjMzI1MyB8IFJGQzMyNTMsIFNlY3Rpb24gNi4zfVxuICAgKi9cbiAgTWt3b3Jrc3BhY2U6IFwiTUtXT1JLU1BBQ0VcIixcblxuICAvKipcbiAgICogTU9WRSAoU2FmZTogbm87IElkZW1wb3RlbnQ6IHllcylcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjNDkxOCB8IFJGQzQ5MTgsIFNlY3Rpb24gOS45fVxuICAgKi9cbiAgTW92ZTogXCJNT1ZFXCIsXG5cbiAgLyoqXG4gICAqIE9QVElPTlMgKFNhZmU6IHllczsgSWRlbXBvdGVudDogeWVzKVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM5MTEwIHwgUkZDOTExMCwgU2VjdGlvbiA5LjMuN31cbiAgICovXG4gIE9wdGlvbnM6IFwiT1BUSU9OU1wiLFxuXG4gIC8qKlxuICAgKiBPUkRFUlBBVENIIChTYWZlOiBubzsgSWRlbXBvdGVudDogeWVzKVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmMzNjQ4IHwgUkZDMzY0OCwgU2VjdGlvbiA3fVxuICAgKi9cbiAgT3JkZXJwYXRjaDogXCJPUkRFUlBBVENIXCIsXG5cbiAgLyoqXG4gICAqIFBBVENIIChTYWZlOiBubzsgSWRlbXBvdGVudDogbm8pXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzU3ODkgfCBSRkM1Nzg5LCBTZWN0aW9uIDJ9XG4gICAqL1xuICBQYXRjaDogXCJQQVRDSFwiLFxuXG4gIC8qKlxuICAgKiBQT1NUIChTYWZlOiBubzsgSWRlbXBvdGVudDogbm8pXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzkxMTAgfCBSRkM5MTEwLCBTZWN0aW9uIDkuMy4zfVxuICAgKi9cbiAgUG9zdDogXCJQT1NUXCIsXG5cbiAgLyoqXG4gICAqIFBSSSAoU2FmZTogeWVzOyBJZGVtcG90ZW50OiB5ZXMpXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzkxMTMgfCBSRkM5MTEzLCBTZWN0aW9uIDMuNH1cbiAgICovXG4gIFByaTogXCJQUklcIixcblxuICAvKipcbiAgICogUFJPUEZJTkQgKFNhZmU6IHllczsgSWRlbXBvdGVudDogeWVzKVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM0OTE4IHwgUkZDNDkxOCwgU2VjdGlvbiA5LjF9XG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzgxNDQgfCBSRkM4MTQ0LCBTZWN0aW9uIDIuMX1cbiAgICovXG4gIFByb3BmaW5kOiBcIlBST1BGSU5EXCIsXG5cbiAgLyoqXG4gICAqIFBST1BQQVRDSCAoU2FmZTogbm87IElkZW1wb3RlbnQ6IHllcylcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjNDkxOCB8IFJGQzQ5MTgsIFNlY3Rpb24gOS4yfVxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM4MTQ0IHwgUkZDODE0NCwgU2VjdGlvbiAyLjJ9XG4gICAqL1xuICBQcm9wcGF0Y2g6IFwiUFJPUFBBVENIXCIsXG5cbiAgLyoqXG4gICAqIFBVVCAoU2FmZTogbm87IElkZW1wb3RlbnQ6IHllcylcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjOTExMCB8IFJGQzkxMTAsIFNlY3Rpb24gOS4zLjR9XG4gICAqL1xuICBQdXQ6IFwiUFVUXCIsXG5cbiAgLyoqXG4gICAqIFJFQklORCAoU2FmZTogbm87IElkZW1wb3RlbnQ6IHllcylcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjNTg0MiB8IFJGQzU4NDIsIFNlY3Rpb24gNn1cbiAgICovXG4gIFJlYmluZDogXCJSRUJJTkRcIixcblxuICAvKipcbiAgICogUkVQT1JUIChTYWZlOiB5ZXM7IElkZW1wb3RlbnQ6IHllcylcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjMzI1MyB8IFJGQzMyNTMsIFNlY3Rpb24gMy42fVxuICAgKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9nby9yZmM4MTQ0IHwgUkZDODE0NCwgU2VjdGlvbiAyLjF9XG4gICAqL1xuICBSZXBvcnQ6IFwiUkVQT1JUXCIsXG5cbiAgLyoqXG4gICAqIFNFQVJDSCAoU2FmZTogeWVzOyBJZGVtcG90ZW50OiB5ZXMpXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzUzMjMgfCBSRkM1MzIzLCBTZWN0aW9uIDJ9XG4gICAqL1xuICBTZWFyY2g6IFwiU0VBUkNIXCIsXG5cbiAgLyoqXG4gICAqIFRSQUNFIChTYWZlOiB5ZXM7IElkZW1wb3RlbnQ6IHllcylcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjOTExMCB8IFJGQzkxMTAsIFNlY3Rpb24gOS4zLjh9XG4gICAqL1xuICBUcmFjZTogXCJUUkFDRVwiLFxuXG4gIC8qKlxuICAgKiBVTkJJTkQgKFNhZmU6IG5vOyBJZGVtcG90ZW50OiB5ZXMpXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzU4NDIgfCBSRkM1ODQyLCBTZWN0aW9uIDV9XG4gICAqL1xuICBVbmJpbmQ6IFwiVU5CSU5EXCIsXG5cbiAgLyoqXG4gICAqIFVOQ0hFQ0tPVVQgKFNhZmU6IG5vOyBJZGVtcG90ZW50OiB5ZXMpXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzMyNTMgfCBSRkMzMjUzLCBTZWN0aW9uIDQuNX1cbiAgICovXG4gIFVuY2hlY2tvdXQ6IFwiVU5DSEVDS09VVFwiLFxuXG4gIC8qKlxuICAgKiBVTkxJTksgKFNhZmU6IG5vOyBJZGVtcG90ZW50OiB5ZXMpXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzIwNjggfCBSRkMyMDY4LCBTZWN0aW9uIDE5LjYuMS4zfVxuICAgKi9cbiAgVW5saW5rOiBcIlVOTElOS1wiLFxuXG4gIC8qKlxuICAgKiBVTkxPQ0sgKFNhZmU6IG5vOyBJZGVtcG90ZW50OiB5ZXMpXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2dvL3JmYzQ5MTggfCBSRkM0OTE4LCBTZWN0aW9uIDkuMTF9XG4gICAqL1xuICBVbmxvY2s6IFwiVU5MT0NLXCIsXG5cbiAgLyoqXG4gICAqIFVQREFURSAoU2FmZTogbm87IElkZW1wb3RlbnQ6IHllcylcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjMzI1MyB8IFJGQzMyNTMsIFNlY3Rpb24gNy4xfVxuICAgKi9cbiAgVXBkYXRlOiBcIlVQREFURVwiLFxuXG4gIC8qKlxuICAgKiBVUERBVEVSRURJUkVDVFJFRiAoU2FmZTogbm87IElkZW1wb3RlbnQ6IHllcylcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjNDQzNyB8IFJGQzQ0MzcsIFNlY3Rpb24gN31cbiAgICovXG4gIFVwZGF0ZXJlZGlyZWN0cmVmOiBcIlVQREFURVJFRElSRUNUUkVGXCIsXG5cbiAgLyoqXG4gICAqIFZFUlNJT04tQ09OVFJPTCAoU2FmZTogbm87IElkZW1wb3RlbnQ6IHllcylcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvZ28vcmZjMzI1MyB8IFJGQzMyNTMsIFNlY3Rpb24gMy41fVxuICAgKi9cbiAgVmVyc2lvbkNvbnRyb2w6IFwiVkVSU0lPTi1DT05UUk9MXCIsXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIEEgSFRUUCBNZXRob2RcbiAqXG4gKiBAZXhwZXJpbWVudGFsICoqVU5TVEFCTEUqKjogTmV3IEFQSSwgeWV0IHRvIGJlIHZldHRlZC5cbiAqL1xuZXhwb3J0IHR5cGUgTWV0aG9kID0gdHlwZW9mIE1FVEhPRFtrZXlvZiB0eXBlb2YgTUVUSE9EXTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBQ3JDLDJLQUEySztBQUUzSzs7Ozs7O0NBTUMsR0FDRCxPQUFPLE1BQU0sU0FBUztFQUNwQjs7OztHQUlDLEdBQ0QsS0FBSztFQUVMOzs7O0dBSUMsR0FDRCxpQkFBaUI7RUFFakI7Ozs7R0FJQyxHQUNELE1BQU07RUFFTjs7OztHQUlDLEdBQ0QsU0FBUztFQUVUOzs7O0dBSUMsR0FDRCxVQUFVO0VBRVY7Ozs7R0FJQyxHQUNELFNBQVM7RUFFVDs7OztHQUlDLEdBQ0QsTUFBTTtFQUVOOzs7O0dBSUMsR0FDRCxRQUFRO0VBRVI7Ozs7R0FJQyxHQUNELEtBQUs7RUFFTDs7OztHQUlDLEdBQ0QsTUFBTTtFQUVOOzs7O0dBSUMsR0FDRCxPQUFPO0VBRVA7Ozs7R0FJQyxHQUNELE1BQU07RUFFTjs7OztHQUlDLEdBQ0QsTUFBTTtFQUVOOzs7O0dBSUMsR0FDRCxPQUFPO0VBRVA7Ozs7R0FJQyxHQUNELFlBQVk7RUFFWjs7Ozs7R0FLQyxHQUNELFlBQVk7RUFFWjs7Ozs7O0dBTUMsR0FDRCxPQUFPO0VBRVA7Ozs7R0FJQyxHQUNELGVBQWU7RUFFZjs7OztHQUlDLEdBQ0QsYUFBYTtFQUViOzs7O0dBSUMsR0FDRCxNQUFNO0VBRU47Ozs7R0FJQyxHQUNELFNBQVM7RUFFVDs7OztHQUlDLEdBQ0QsWUFBWTtFQUVaOzs7O0dBSUMsR0FDRCxPQUFPO0VBRVA7Ozs7R0FJQyxHQUNELE1BQU07RUFFTjs7OztHQUlDLEdBQ0QsS0FBSztFQUVMOzs7OztHQUtDLEdBQ0QsVUFBVTtFQUVWOzs7OztHQUtDLEdBQ0QsV0FBVztFQUVYOzs7O0dBSUMsR0FDRCxLQUFLO0VBRUw7Ozs7R0FJQyxHQUNELFFBQVE7RUFFUjs7Ozs7R0FLQyxHQUNELFFBQVE7RUFFUjs7OztHQUlDLEdBQ0QsUUFBUTtFQUVSOzs7O0dBSUMsR0FDRCxPQUFPO0VBRVA7Ozs7R0FJQyxHQUNELFFBQVE7RUFFUjs7OztHQUlDLEdBQ0QsWUFBWTtFQUVaOzs7O0dBSUMsR0FDRCxRQUFRO0VBRVI7Ozs7R0FJQyxHQUNELFFBQVE7RUFFUjs7OztHQUlDLEdBQ0QsUUFBUTtFQUVSOzs7O0dBSUMsR0FDRCxtQkFBbUI7RUFFbkI7Ozs7R0FJQyxHQUNELGdCQUFnQjtBQUNsQixFQUFXIn0= +// denoCacheMetadata=18034263677883797545,7191391916459398733
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/d31abe7d26b93fcfed50f679445732e9683ba27d600a0859738e51a99175ed8f.js b/vendor/gen/https/jsr.io/d31abe7d26b93fcfed50f679445732e9683ba27d600a0859738e51a99175ed8f.js new file mode 100644 index 0000000..840f4c5 --- /dev/null +++ b/vendor/gen/https/jsr.io/d31abe7d26b93fcfed50f679445732e9683ba27d600a0859738e51a99175ed8f.js @@ -0,0 +1,20 @@ +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2025 the Deno authors. MIT license. +import { isPlainObject } from "../_utils.ts"; +function resolveYamlPairs(data) { + if (data === null) return true; + return data.every((it)=>isPlainObject(it) && Object.keys(it).length === 1); +} +export const pairs = { + tag: "tag:yaml.org,2002:pairs", + construct (data) { + // Converts an array of objects into an array of key-value pairs. + return data?.flatMap(Object.entries) ?? []; + }, + kind: "sequence", + resolve: resolveYamlPairs +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQveWFtbC8xLjAuNi9fdHlwZS9wYWlycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQb3J0ZWQgZnJvbSBqcy15YW1sIHYzLjEzLjE6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWNhL2pzLXlhbWwvY29tbWl0LzY2NWFhZGRhNDIzNDlkY2FlODY5ZjEyMDQwZDliMTBlZjE4ZDEyZGFcbi8vIENvcHlyaWdodCAyMDExLTIwMTUgYnkgVml0YWx5IFB1enJpbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuXG5pbXBvcnQgdHlwZSB7IFR5cGUgfSBmcm9tIFwiLi4vX3R5cGUudHNcIjtcbmltcG9ydCB7IGlzUGxhaW5PYmplY3QgfSBmcm9tIFwiLi4vX3V0aWxzLnRzXCI7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sUGFpcnMoZGF0YTogdW5rbm93bltdW10pOiBib29sZWFuIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiB0cnVlO1xuICByZXR1cm4gZGF0YS5ldmVyeSgoaXQpID0+IGlzUGxhaW5PYmplY3QoaXQpICYmIE9iamVjdC5rZXlzKGl0KS5sZW5ndGggPT09IDEpO1xufVxuXG5leHBvcnQgY29uc3QgcGFpcnM6IFR5cGU8XCJzZXF1ZW5jZVwiPiA9IHtcbiAgdGFnOiBcInRhZzp5YW1sLm9yZywyMDAyOnBhaXJzXCIsXG4gIGNvbnN0cnVjdChkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdIHwgbnVsbCk6IFtzdHJpbmcsIHVua25vd25dW10ge1xuICAgIC8vIENvbnZlcnRzIGFuIGFycmF5IG9mIG9iamVjdHMgaW50byBhbiBhcnJheSBvZiBrZXktdmFsdWUgcGFpcnMuXG4gICAgcmV0dXJuIGRhdGE/LmZsYXRNYXAoT2JqZWN0LmVudHJpZXMpID8/IFtdO1xuICB9LFxuICBraW5kOiBcInNlcXVlbmNlXCIsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sUGFpcnMsXG59O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixvRkFBb0Y7QUFDcEYsMEVBQTBFO0FBQzFFLHFEQUFxRDtBQUdyRCxTQUFTLGFBQWEsUUFBUSxlQUFlO0FBRTdDLFNBQVMsaUJBQWlCLElBQWlCO0VBQ3pDLElBQUksU0FBUyxNQUFNLE9BQU87RUFDMUIsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUFDLEtBQU8sY0FBYyxPQUFPLE9BQU8sSUFBSSxDQUFDLElBQUksTUFBTSxLQUFLO0FBQzVFO0FBRUEsT0FBTyxNQUFNLFFBQTBCO0VBQ3JDLEtBQUs7RUFDTCxXQUFVLElBQXNDO0lBQzlDLGlFQUFpRTtJQUNqRSxPQUFPLE1BQU0sUUFBUSxPQUFPLE9BQU8sS0FBSyxFQUFFO0VBQzVDO0VBQ0EsTUFBTTtFQUNOLFNBQVM7QUFDWCxFQUFFIn0= +// denoCacheMetadata=10057837188069262499,17023145598712586771
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/d3219b96fafc0b02f7f7775c919795c35e5f6e9119b484954ac57e3df1248f59.js b/vendor/gen/https/jsr.io/d3219b96fafc0b02f7f7775c919795c35e5f6e9119b484954ac57e3df1248f59.js new file mode 100644 index 0000000..4cb6601 --- /dev/null +++ b/vendor/gen/https/jsr.io/d3219b96fafc0b02f7f7775c919795c35e5f6e9119b484954ac57e3df1248f59.js @@ -0,0 +1,40 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { assertPath } from "./assert_path.ts"; +export function stripSuffix(name, suffix) { + if (suffix.length >= name.length) { + return name; + } + const lenDiff = name.length - suffix.length; + for(let i = suffix.length - 1; i >= 0; --i){ + if (name.charCodeAt(lenDiff + i) !== suffix.charCodeAt(i)) { + return name; + } + } + return name.slice(0, -suffix.length); +} +export function lastPathSegment(path, isSep, start = 0) { + let matchedNonSeparator = false; + let end = path.length; + for(let i = path.length - 1; i >= start; --i){ + if (isSep(path.charCodeAt(i))) { + if (matchedNonSeparator) { + start = i + 1; + break; + } + } else if (!matchedNonSeparator) { + matchedNonSeparator = true; + end = i + 1; + } + } + return path.slice(start, end); +} +export function assertArgs(path, suffix) { + assertPath(path); + if (path.length === 0) return path; + if (typeof suffix !== "string") { + throw new TypeError(`Suffix must be a string, received "${JSON.stringify(suffix)}"`); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9fY29tbW9uL2Jhc2VuYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGFzc2VydFBhdGggfSBmcm9tIFwiLi9hc3NlcnRfcGF0aC50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gc3RyaXBTdWZmaXgobmFtZTogc3RyaW5nLCBzdWZmaXg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChzdWZmaXgubGVuZ3RoID49IG5hbWUubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG5hbWU7XG4gIH1cblxuICBjb25zdCBsZW5EaWZmID0gbmFtZS5sZW5ndGggLSBzdWZmaXgubGVuZ3RoO1xuXG4gIGZvciAobGV0IGkgPSBzdWZmaXgubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICBpZiAobmFtZS5jaGFyQ29kZUF0KGxlbkRpZmYgKyBpKSAhPT0gc3VmZml4LmNoYXJDb2RlQXQoaSkpIHtcbiAgICAgIHJldHVybiBuYW1lO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuYW1lLnNsaWNlKDAsIC1zdWZmaXgubGVuZ3RoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhc3RQYXRoU2VnbWVudChcbiAgcGF0aDogc3RyaW5nLFxuICBpc1NlcDogKGNoYXI6IG51bWJlcikgPT4gYm9vbGVhbixcbiAgc3RhcnQgPSAwLFxuKTogc3RyaW5nIHtcbiAgbGV0IG1hdGNoZWROb25TZXBhcmF0b3IgPSBmYWxzZTtcbiAgbGV0IGVuZCA9IHBhdGgubGVuZ3RoO1xuXG4gIGZvciAobGV0IGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gc3RhcnQ7IC0taSkge1xuICAgIGlmIChpc1NlcChwYXRoLmNoYXJDb2RlQXQoaSkpKSB7XG4gICAgICBpZiAobWF0Y2hlZE5vblNlcGFyYXRvcikge1xuICAgICAgICBzdGFydCA9IGkgKyAxO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFtYXRjaGVkTm9uU2VwYXJhdG9yKSB7XG4gICAgICBtYXRjaGVkTm9uU2VwYXJhdG9yID0gdHJ1ZTtcbiAgICAgIGVuZCA9IGkgKyAxO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0LCBlbmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0QXJncyhwYXRoOiBzdHJpbmcsIHN1ZmZpeDogc3RyaW5nKSB7XG4gIGFzc2VydFBhdGgocGF0aCk7XG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHBhdGg7XG4gIGlmICh0eXBlb2Ygc3VmZml4ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIGBTdWZmaXggbXVzdCBiZSBhIHN0cmluZywgcmVjZWl2ZWQgXCIke0pTT04uc3RyaW5naWZ5KHN1ZmZpeCl9XCJgLFxuICAgICk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDLFNBQVMsVUFBVSxRQUFRLG1CQUFtQjtBQUU5QyxPQUFPLFNBQVMsWUFBWSxJQUFZLEVBQUUsTUFBYztFQUN0RCxJQUFJLE9BQU8sTUFBTSxJQUFJLEtBQUssTUFBTSxFQUFFO0lBQ2hDLE9BQU87RUFDVDtFQUVBLE1BQU0sVUFBVSxLQUFLLE1BQU0sR0FBRyxPQUFPLE1BQU07RUFFM0MsSUFBSyxJQUFJLElBQUksT0FBTyxNQUFNLEdBQUcsR0FBRyxLQUFLLEdBQUcsRUFBRSxFQUFHO0lBQzNDLElBQUksS0FBSyxVQUFVLENBQUMsVUFBVSxPQUFPLE9BQU8sVUFBVSxDQUFDLElBQUk7TUFDekQsT0FBTztJQUNUO0VBQ0Y7RUFFQSxPQUFPLEtBQUssS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLE1BQU07QUFDckM7QUFFQSxPQUFPLFNBQVMsZ0JBQ2QsSUFBWSxFQUNaLEtBQWdDLEVBQ2hDLFFBQVEsQ0FBQztFQUVULElBQUksc0JBQXNCO0VBQzFCLElBQUksTUFBTSxLQUFLLE1BQU07RUFFckIsSUFBSyxJQUFJLElBQUksS0FBSyxNQUFNLEdBQUcsR0FBRyxLQUFLLE9BQU8sRUFBRSxFQUFHO0lBQzdDLElBQUksTUFBTSxLQUFLLFVBQVUsQ0FBQyxLQUFLO01BQzdCLElBQUkscUJBQXFCO1FBQ3ZCLFFBQVEsSUFBSTtRQUNaO01BQ0Y7SUFDRixPQUFPLElBQUksQ0FBQyxxQkFBcUI7TUFDL0Isc0JBQXNCO01BQ3RCLE1BQU0sSUFBSTtJQUNaO0VBQ0Y7RUFFQSxPQUFPLEtBQUssS0FBSyxDQUFDLE9BQU87QUFDM0I7QUFFQSxPQUFPLFNBQVMsV0FBVyxJQUFZLEVBQUUsTUFBYztFQUNyRCxXQUFXO0VBQ1gsSUFBSSxLQUFLLE1BQU0sS0FBSyxHQUFHLE9BQU87RUFDOUIsSUFBSSxPQUFPLFdBQVcsVUFBVTtJQUM5QixNQUFNLElBQUksVUFDUixDQUFDLG1DQUFtQyxFQUFFLEtBQUssU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0VBRW5FO0FBQ0YifQ== +// denoCacheMetadata=11810669894591115474,15625054205076490655
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/d3745929d47019970406c35c201d22c399e2f5293d7a7cb59b8813dfda1bb82d.js b/vendor/gen/https/jsr.io/d3745929d47019970406c35c201d22c399e2f5293d7a7cb59b8813dfda1bb82d.js new file mode 100644 index 0000000..b6cedd9 --- /dev/null +++ b/vendor/gen/https/jsr.io/d3745929d47019970406c35c201d22c399e2f5293d7a7cb59b8813dfda1bb82d.js @@ -0,0 +1,311 @@ +import { dirname, join } from "jsr:@std/path@^1.0.6"; +import { NativeLoader } from "./loader_native.ts"; +import { PortableLoader } from "./loader_portable.ts"; +import { findWorkspace, isInNodeModules } from "./shared.ts"; +import { esbuildResolutionToURL, isNodeModulesResolution, urlToEsbuildResolution } from "./shared.ts"; +const LOADERS = [ + "native", + "portable" +]; +/** The default loader to use. */ export const DEFAULT_LOADER = await Deno.permissions.query({ + name: "run" +}).then((res)=>res.state !== "granted") ? "portable" : "native"; +const BUILTIN_NODE_MODULES = new Set([ + "assert", + "assert/strict", + "async_hooks", + "buffer", + "child_process", + "cluster", + "console", + "constants", + "crypto", + "dgram", + "diagnostics_channel", + "dns", + "dns/promises", + "domain", + "events", + "fs", + "fs/promises", + "http", + "http2", + "https", + "module", + "net", + "os", + "path", + "path/posix", + "path/win32", + "perf_hooks", + "process", + "punycode", + "querystring", + "repl", + "readline", + "stream", + "stream/consumers", + "stream/promises", + "stream/web", + "string_decoder", + "sys", + "test", + "timers", + "timers/promises", + "tls", + "tty", + "url", + "util", + "util/types", + "v8", + "vm", + "worker_threads", + "zlib" +]); +/** + * The Deno loader plugin for esbuild. This plugin will load fully qualified + * `file`, `http`, `https`, and `data` URLs. + * + * **Note** that this plugin does not do relative->absolute specifier + * resolution, or import map resolution. You must use the `denoResolverPlugin` + * _before_ the `denoLoaderPlugin` to do that. + * + * This plugin can be backed by two different loaders, the `native` loader and + * the `portable` loader. + * + * ### Native Loader + * + * The native loader shells out to the Deno executable under the hood to load + * files. Requires `--allow-read` and `--allow-run`. In this mode the download + * cache is shared with the Deno executable. This mode respects deno.lock, + * DENO_DIR, DENO_AUTH_TOKENS, and all similar loading configuration. Files are + * cached on disk in the same Deno cache as the Deno executable, and will not be + * re-downloaded on subsequent builds. + * + * NPM specifiers can be used in the native loader without requiring a local + * `node_modules` directory. NPM packages are resolved, downloaded, cached, and + * loaded in the same way as the Deno executable does. + * + * JSR specifiers can be used without restrictions in the native loader. To + * ensure dependencies are de-duplicated correctly, it is recommended to use a + * lockfile. + * + * ### Portable Loader + * + * The portable loader does module downloading and caching with only Web APIs. + * Requires `--allow-read` and/or `--allow-net`. This mode does not respect + * deno.lock, DENO_DIR, DENO_AUTH_TOKENS, or any other loading configuration. It + * does not cache downloaded files. It will re-download files on every build. + * + * NPM specifiers can be used in the portable loader, but require a local + * `node_modules` directory. The `node_modules` directory must be created prior + * using Deno's `--node-modules-dir` flag. + * + * JSR specifiers require a lockfile to be present to resolve. + */ export function denoLoaderPlugin(options = {}) { + const loader = options.loader ?? DEFAULT_LOADER; + if (LOADERS.indexOf(loader) === -1) { + throw new Error(`Invalid loader: ${loader}`); + } + return { + name: "deno-loader", + setup (build) { + const cwd = build.initialOptions.absWorkingDir ?? Deno.cwd(); + let nodeModulesDir = null; + let loaderImpl; + const packageIdByNodeModules = new Map(); + build.onStart(function onStart() { + loaderImpl?.[Symbol.dispose]?.(); + loaderImpl = undefined; + packageIdByNodeModules.clear(); + let nodeModulesDirOpt = options.nodeModulesDir; + let lockPath = options.lockPath; + if (nodeModulesDirOpt === undefined || loader === "portable" && lockPath === undefined) { + const workspace = findWorkspace(cwd, build.initialOptions.entryPoints, options.configPath); + try { + if (nodeModulesDirOpt === undefined) { + nodeModulesDirOpt = workspace.node_modules_dir(); + } + if (loader === "portable" && lockPath === undefined) { + lockPath = workspace.lock_path(); + } + } finally{ + workspace.free(); + } + } + if (nodeModulesDirOpt === "auto" || nodeModulesDirOpt === "manual") { + nodeModulesDir = join(cwd, "node_modules"); + } + switch(loader){ + case "native": + loaderImpl = new NativeLoader({ + infoOptions: { + cwd, + config: options.configPath, + importMap: options.importMapURL, + lock: options.lockPath, + nodeModulesDir: nodeModulesDirOpt + } + }); + break; + case "portable": + { + loaderImpl = new PortableLoader({ + lock: lockPath + }); + } + } + }); + async function onResolve(args) { + if (isNodeModulesResolution(args)) { + if (BUILTIN_NODE_MODULES.has(args.path) || BUILTIN_NODE_MODULES.has("node:" + args.path)) { + return { + path: args.path, + external: true + }; + } + if (nodeModulesDir !== null) { + return undefined; + } else if (loaderImpl.nodeModulesDirForPackage && loaderImpl.packageIdFromNameInPackage) { + let parentPackageId; + let path = args.importer; + while(true){ + const packageId = packageIdByNodeModules.get(path); + if (packageId) { + parentPackageId = packageId; + break; + } + const pathBefore = path; + path = dirname(path); + if (path === pathBefore) break; + } + if (!parentPackageId) { + throw new Error(`Could not find package ID for importer: ${args.importer}`); + } + if (args.path.startsWith(".")) { + return undefined; + } else { + let packageName; + let pathParts; + if (args.path.startsWith("@")) { + const [scope, name, ...rest] = args.path.split("/"); + packageName = `${scope}/${name}`; + pathParts = rest; + } else { + const [name, ...rest] = args.path.split("/"); + packageName = name; + pathParts = rest; + } + const packageId = loaderImpl.packageIdFromNameInPackage(packageName, parentPackageId); + const id = packageId ?? parentPackageId; + const resolveDir = await loaderImpl.nodeModulesDirForPackage(id); + packageIdByNodeModules.set(resolveDir, id); + const path = [ + packageName, + ...pathParts + ].join("/"); + return await build.resolve(path, { + kind: args.kind, + resolveDir, + importer: args.importer + }); + } + } else { + throw new Error(`To use "npm:" specifiers, you must specify 'nodeModulesDir: "manual"', or use 'loader: "native"'.`); + } + } + const specifier = esbuildResolutionToURL(args); + // Once we have an absolute path, let the loader resolver figure out + // what to do with it. + const res = await loaderImpl.resolve(specifier); + switch(res.kind){ + case "esm": + { + const { specifier } = res; + return urlToEsbuildResolution(specifier); + } + case "npm": + { + let resolveDir; + if (nodeModulesDir !== null) { + resolveDir = nodeModulesDir; + } else if (loaderImpl.nodeModulesDirForPackage) { + resolveDir = await loaderImpl.nodeModulesDirForPackage(res.packageId); + packageIdByNodeModules.set(resolveDir, res.packageId); + } else { + throw new Error(`To use "npm:" specifiers, you must specify 'nodeModulesDir: "manual"', or use 'loader: "native"'.`); + } + const path = `${res.packageName}${res.path ?? ""}`; + return await build.resolve(path, { + kind: args.kind, + resolveDir, + importer: args.importer + }); + } + case "node": + { + return { + path: res.path, + external: true + }; + } + } + } + build.onResolve({ + filter: /.*/, + namespace: "file" + }, onResolve); + build.onResolve({ + filter: /.*/, + namespace: "http" + }, onResolve); + build.onResolve({ + filter: /.*/, + namespace: "https" + }, onResolve); + build.onResolve({ + filter: /.*/, + namespace: "data" + }, onResolve); + build.onResolve({ + filter: /.*/, + namespace: "npm" + }, onResolve); + build.onResolve({ + filter: /.*/, + namespace: "jsr" + }, onResolve); + build.onResolve({ + filter: /.*/, + namespace: "node" + }, onResolve); + function onLoad(args) { + if (args.namespace === "file" && isInNodeModules(args.path)) { + // inside node_modules, just let esbuild do it's thing + return undefined; + } + const specifier = esbuildResolutionToURL(args); + return loaderImpl.loadEsm(specifier); + } + // TODO(lucacasonato): once https://github.com/evanw/esbuild/pull/2968 is fixed, remove the catch all "file" handler + build.onLoad({ + filter: /.*/, + namespace: "file" + }, onLoad); + build.onLoad({ + filter: /.*/, + namespace: "http" + }, onLoad); + build.onLoad({ + filter: /.*/, + namespace: "https" + }, onLoad); + build.onLoad({ + filter: /.*/, + namespace: "data" + }, onLoad); + } + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BsdWNhL2VzYnVpbGQtZGVuby1sb2FkZXIvMC4xMS4xL3NyYy9wbHVnaW5fZGVub19sb2FkZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBlc2J1aWxkIGZyb20gXCIuL2VzYnVpbGRfdHlwZXMudHNcIjtcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tIFwianNyOkBzdGQvcGF0aEBeMS4wLjZcIjtcbmltcG9ydCB7IE5hdGl2ZUxvYWRlciB9IGZyb20gXCIuL2xvYWRlcl9uYXRpdmUudHNcIjtcbmltcG9ydCB7IFBvcnRhYmxlTG9hZGVyIH0gZnJvbSBcIi4vbG9hZGVyX3BvcnRhYmxlLnRzXCI7XG5pbXBvcnQgeyBmaW5kV29ya3NwYWNlLCBpc0luTm9kZU1vZHVsZXMgfSBmcm9tIFwiLi9zaGFyZWQudHNcIjtcbmltcG9ydCB7XG4gIGVzYnVpbGRSZXNvbHV0aW9uVG9VUkwsXG4gIGlzTm9kZU1vZHVsZXNSZXNvbHV0aW9uLFxuICB0eXBlIExvYWRlcixcbiAgdXJsVG9Fc2J1aWxkUmVzb2x1dGlvbixcbn0gZnJvbSBcIi4vc2hhcmVkLnRzXCI7XG5cbi8qKiBPcHRpb25zIGZvciB0aGUge0BsaW5rIGRlbm9Mb2FkZXJQbHVnaW59LiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZW5vTG9hZGVyUGx1Z2luT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTcGVjaWZ5IHdoaWNoIGxvYWRlciB0byB1c2UuIEJ5IGRlZmF1bHQgdGhpcyB3aWxsIHVzZSB0aGUgYG5hdGl2ZWAgbG9hZGVyLFxuICAgKiB1bmxlc3MgdGhlIGAtLWFsbG93LXJ1bmAgcGVybWlzc2lvbiBoYXMgbm90IGJlZW4gZ2l2ZW4uXG4gICAqXG4gICAqIFNlZSB7QGxpbmsgZGVub0xvYWRlclBsdWdpbn0gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGRpZmZlcmVudCBsb2FkZXJzLlxuICAgKi9cbiAgbG9hZGVyPzogXCJuYXRpdmVcIiB8IFwicG9ydGFibGVcIjtcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgcGF0aCB0byBhIGRlbm8uanNvbiBjb25maWcgZmlsZSB0byB1c2UuIFRoaXMgaXMgZXF1aXZhbGVudCB0b1xuICAgKiB0aGUgYC0tY29uZmlnYCBmbGFnIHRvIHRoZSBEZW5vIGV4ZWN1dGFibGUuIFRoaXMgcGF0aCBtdXN0IGJlIGFic29sdXRlLlxuICAgKlxuICAgKiBOT1RFOiBJbXBvcnQgbWFwcyBpbiB0aGUgY29uZmlnIGZpbGUgYXJlIG5vdCB1c2VkIHRvIGluZm9ybSByZXNvbHV0aW9uLCBhc1xuICAgKiB0aGlzIGhhcyBhbHJlYWR5IGJlZW4gZG9uZSBieSB0aGUgYGRlbm9SZXNvbHZlclBsdWdpbmAuIFRoaXMgb3B0aW9uIGlzIG9ubHlcbiAgICogdXNlZCB3aGVuIHNwZWNpZnlpbmcgYGxvYWRlcjogXCJuYXRpdmVcImAgdG8gbW9yZSBlZmZpY2llbnRseSBsb2FkIG1vZHVsZXNcbiAgICogZnJvbSB0aGUgY2FjaGUuIFdoZW4gc3BlY2lmeWluZyBgbG9hZGVyOiBcIm5hdGl2ZVwiYCwgdGhpcyBvcHRpb24gbXVzdCBiZSBpblxuICAgKiBzeW5jIHdpdGggdGhlIGBjb25maWdQYXRoYCBvcHRpb24gZm9yIGBkZW5vUmVzb2x2ZXJQbHVnaW5gLlxuICAgKlxuICAgKiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgcGx1Z2luIHdpbGwgYXR0ZW1wdCB0byBmaW5kIHRoZSBuZWFyZXN0IGRlbm8uanNvbiBhbmRcbiAgICogdXNlIHRoYXQuIElmIHRoZSBkZW5vLmpzb24gaXMgcGFydCBvZiBhIHdvcmtzcGFjZSwgdGhlIHBsdWdpbiB3aWxsXG4gICAqIGF1dG9tYXRpY2FsbHkgZmluZCB0aGUgd29ya3NwYWNlIHJvb3QuXG4gICAqL1xuICBjb25maWdQYXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogU3BlY2lmeSBhIFVSTCB0byBhbiBpbXBvcnQgbWFwIGZpbGUgdG8gdXNlIHdoZW4gcmVzb2x2aW5nIGltcG9ydFxuICAgKiBzcGVjaWZpZXJzLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGAtLWltcG9ydC1tYXBgIGZsYWcgdG8gdGhlIERlbm9cbiAgICogZXhlY3V0YWJsZS4gVGhpcyBVUkwgbWF5IGJlIHJlbW90ZSBvciBhIGxvY2FsIGZpbGUgVVJMLlxuICAgKlxuICAgKiBJZiB0aGlzIG9wdGlvbiBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZGVuby5qc29uIGNvbmZpZyBmaWxlIGlzIGNvbnN1bHRlZCB0b1xuICAgKiBkZXRlcm1pbmUgd2hhdCBpbXBvcnQgbWFwIHRvIHVzZSwgaWYgYW55LlxuICAgKlxuICAgKiBOT1RFOiBJbXBvcnQgbWFwcyBpbiB0aGUgY29uZmlnIGZpbGUgYXJlIG5vdCB1c2VkIHRvIGluZm9ybSByZXNvbHV0aW9uLCBhc1xuICAgKiB0aGlzIGhhcyBhbHJlYWR5IGJlZW4gZG9uZSBieSB0aGUgYGRlbm9SZXNvbHZlclBsdWdpbmAuIFRoaXMgb3B0aW9uIGlzIG9ubHlcbiAgICogdXNlZCB3aGVuIHNwZWNpZnlpbmcgYGxvYWRlcjogXCJuYXRpdmVcImAgdG8gbW9yZSBlZmZpY2llbnRseSBsb2FkIG1vZHVsZXNcbiAgICogZnJvbSB0aGUgY2FjaGUuIFdoZW4gc3BlY2lmeWluZyBgbG9hZGVyOiBcIm5hdGl2ZVwiYCwgdGhpcyBvcHRpb24gbXVzdCBiZSBpblxuICAgKiBzeW5jIHdpdGggdGhlIGBpbXBvcnRNYXBVUkxgIG9wdGlvbiBmb3IgYGRlbm9SZXNvbHZlclBsdWdpbmAuXG4gICAqL1xuICBpbXBvcnRNYXBVUkw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBwYXRoIHRvIGEgbG9jayBmaWxlIHRvIHVzZS4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBgLS1sb2NrYFxuICAgKiBmbGFnIHRvIHRoZSBEZW5vIGV4ZWN1dGFibGUuIFRoaXMgcGF0aCBtdXN0IGJlIGFic29sdXRlLlxuICAgKlxuICAgKiBJZiB0aGlzIG9wdGlvbiBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZGVuby5qc29uIGNvbmZpZyBmaWxlIGlzIGNvbnN1bHRlZCB0b1xuICAgKiBkZXRlcm1pbmUgd2hhdCBpbXBvcnQgbWFwIHRvIHVzZSwgaWYgYW55LlxuICAgKlxuICAgKiBBIGxvY2tmaWxlIG11c3QgYmUgcHJlc2VudCB0byByZXNvbHZlIGBqc3I6YCBzcGVjaWZpZXJzIHdpdGggdGhlIGBwb3J0YWJsZWBcbiAgICogbG9hZGVyLiBXaGVuIHVzaW5nIHRoZSBgbmF0aXZlYCBsb2FkZXIsIGEgbG9ja2ZpbGUgaXMgbm90IHJlcXVpcmVkLCBidXQgdG9cbiAgICogZW5zdXJlIGRlcGVuZGVuY2llcyBhcmUgZGUtZHVwbGljYXRlZCBjb3JyZWN0bHksIGl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSBhXG4gICAqIGxvY2tmaWxlLlxuICAgKlxuICAgKiBOT1RFOiB3aGVuIHVzaW5nIGBsb2FkZXI6IFwicG9ydGFibGVcImAsIGludGVncml0eSBjaGVja3MgYXJlIG5vdCBwZXJmb3JtZWRcbiAgICogZm9yIEVTTSBtb2R1bGVzLlxuICAgKi9cbiAgbG9ja1BhdGg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTcGVjaWZ5IGhvdyB0aGUgbG9hZGVyIHNob3VsZCBoYW5kbGUgTlBNIHBhY2thZ2VzLiBCeSBkZWZhdWx0IGFuZCBpZiB0aGlzXG4gICAqIG9wdGlvbiBpcyBzZXQgdG8gYG5vbmVgLCB0aGUgbG9hZGVyIHdpbGwgdXNlIHRoZSBnbG9iYWwgY2FjaGUgdG8gcmVzb2x2ZVxuICAgKiBOUE0gcGFja2FnZXMuIElmIHRoaXMgb3B0aW9uIGlzIHNldCB0byBgbWFudWFsYCwgdGhlIGxvYWRlciB3aWxsIHVzZSBhXG4gICAqIG1hbnVhbGx5IG1hbmFnZWQgYG5vZGVfbW9kdWxlc2AgZGlyZWN0b3J5LiBJZiB0aGlzIG9wdGlvbiBpcyBzZXQgdG8gYGF1dG9gLFxuICAgKiB0aGUgbG9hZGVyIHdpbGwgdXNlIGEgbG9jYWwgYG5vZGVfbW9kdWxlc2AgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBJZiB0aGlzIG9wdGlvbiBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZGVuby5qc29uIGNvbmZpZyBmaWxlIGlzIGNvbnN1bHRlZCB0b1xuICAgKiBkZXRlcm1pbmUgd2hpY2ggbW9kZSB0byB1c2UuIElmIG5vIGNvbmZpZyBmaWxlIGlzIHByZXNlbnQsIG9yIHRoZSBjb25maWdcbiAgICogZmlsZSBkb2VzIG5vdCBzcGVjaWZ5IHRoaXMgb3B0aW9uLCB0aGUgZGVmYXVsdCBpcyBgbm9uZWAgaWYgbm8gcGFja2FnZS5qc29uXG4gICAqIGlzIHByZXNlbnQsIGFuZCBgYXV0b2AgaWYgYSBwYWNrYWdlLmpzb24gaXMgcHJlc2VudC5cbiAgICpcbiAgICogVGhpcyBvcHRpb24gaXMgaWdub3JlZCB3aGVuIHVzaW5nIHRoZSBgcG9ydGFibGVgIGxvYWRlciwgYXMgdGhlIHBvcnRhYmxlXG4gICAqIGxvYWRlciBhbHdheXMgdXNlcyBhIG1hbnVhbCBgbm9kZV9tb2R1bGVzYCBkaXJlY3RvcnkgKGVxdWl2YWxlbnQgb2ZcbiAgICogYG5vZGVNb2R1bGVzRGlyOiBcIm1hbnVhbFwiYCkuXG4gICAqL1xuICBub2RlTW9kdWxlc0Rpcj86IFwiYXV0b1wiIHwgXCJtYW51YWxcIiB8IFwibm9uZVwiO1xufVxuXG5jb25zdCBMT0FERVJTID0gW1wibmF0aXZlXCIsIFwicG9ydGFibGVcIl0gYXMgY29uc3Q7XG5cbi8qKiBUaGUgZGVmYXVsdCBsb2FkZXIgdG8gdXNlLiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTE9BREVSOiBcIm5hdGl2ZVwiIHwgXCJwb3J0YWJsZVwiID1cbiAgYXdhaXQgRGVuby5wZXJtaXNzaW9ucy5xdWVyeSh7IG5hbWU6IFwicnVuXCIgfSlcbiAgICAgIC50aGVuKChyZXMpID0+IHJlcy5zdGF0ZSAhPT0gXCJncmFudGVkXCIpXG4gICAgPyBcInBvcnRhYmxlXCJcbiAgICA6IFwibmF0aXZlXCI7XG5cbmNvbnN0IEJVSUxUSU5fTk9ERV9NT0RVTEVTID0gbmV3IFNldChbXG4gIFwiYXNzZXJ0XCIsXG4gIFwiYXNzZXJ0L3N0cmljdFwiLFxuICBcImFzeW5jX2hvb2tzXCIsXG4gIFwiYnVmZmVyXCIsXG4gIFwiY2hpbGRfcHJvY2Vzc1wiLFxuICBcImNsdXN0ZXJcIixcbiAgXCJjb25zb2xlXCIsXG4gIFwiY29uc3RhbnRzXCIsXG4gIFwiY3J5cHRvXCIsXG4gIFwiZGdyYW1cIixcbiAgXCJkaWFnbm9zdGljc19jaGFubmVsXCIsXG4gIFwiZG5zXCIsXG4gIFwiZG5zL3Byb21pc2VzXCIsXG4gIFwiZG9tYWluXCIsXG4gIFwiZXZlbnRzXCIsXG4gIFwiZnNcIixcbiAgXCJmcy9wcm9taXNlc1wiLFxuICBcImh0dHBcIixcbiAgXCJodHRwMlwiLFxuICBcImh0dHBzXCIsXG4gIFwibW9kdWxlXCIsXG4gIFwibmV0XCIsXG4gIFwib3NcIixcbiAgXCJwYXRoXCIsXG4gIFwicGF0aC9wb3NpeFwiLFxuICBcInBhdGgvd2luMzJcIixcbiAgXCJwZXJmX2hvb2tzXCIsXG4gIFwicHJvY2Vzc1wiLFxuICBcInB1bnljb2RlXCIsXG4gIFwicXVlcnlzdHJpbmdcIixcbiAgXCJyZXBsXCIsXG4gIFwicmVhZGxpbmVcIixcbiAgXCJzdHJlYW1cIixcbiAgXCJzdHJlYW0vY29uc3VtZXJzXCIsXG4gIFwic3RyZWFtL3Byb21pc2VzXCIsXG4gIFwic3RyZWFtL3dlYlwiLFxuICBcInN0cmluZ19kZWNvZGVyXCIsXG4gIFwic3lzXCIsXG4gIFwidGVzdFwiLFxuICBcInRpbWVyc1wiLFxuICBcInRpbWVycy9wcm9taXNlc1wiLFxuICBcInRsc1wiLFxuICBcInR0eVwiLFxuICBcInVybFwiLFxuICBcInV0aWxcIixcbiAgXCJ1dGlsL3R5cGVzXCIsXG4gIFwidjhcIixcbiAgXCJ2bVwiLFxuICBcIndvcmtlcl90aHJlYWRzXCIsXG4gIFwiemxpYlwiLFxuXSk7XG5cbi8qKlxuICogVGhlIERlbm8gbG9hZGVyIHBsdWdpbiBmb3IgZXNidWlsZC4gVGhpcyBwbHVnaW4gd2lsbCBsb2FkIGZ1bGx5IHF1YWxpZmllZFxuICogYGZpbGVgLCBgaHR0cGAsIGBodHRwc2AsIGFuZCBgZGF0YWAgVVJMcy5cbiAqXG4gKiAqKk5vdGUqKiB0aGF0IHRoaXMgcGx1Z2luIGRvZXMgbm90IGRvIHJlbGF0aXZlLT5hYnNvbHV0ZSBzcGVjaWZpZXJcbiAqIHJlc29sdXRpb24sIG9yIGltcG9ydCBtYXAgcmVzb2x1dGlvbi4gWW91IG11c3QgdXNlIHRoZSBgZGVub1Jlc29sdmVyUGx1Z2luYFxuICogX2JlZm9yZV8gdGhlIGBkZW5vTG9hZGVyUGx1Z2luYCB0byBkbyB0aGF0LlxuICpcbiAqIFRoaXMgcGx1Z2luIGNhbiBiZSBiYWNrZWQgYnkgdHdvIGRpZmZlcmVudCBsb2FkZXJzLCB0aGUgYG5hdGl2ZWAgbG9hZGVyIGFuZFxuICogdGhlIGBwb3J0YWJsZWAgbG9hZGVyLlxuICpcbiAqICMjIyBOYXRpdmUgTG9hZGVyXG4gKlxuICogVGhlIG5hdGl2ZSBsb2FkZXIgc2hlbGxzIG91dCB0byB0aGUgRGVubyBleGVjdXRhYmxlIHVuZGVyIHRoZSBob29kIHRvIGxvYWRcbiAqIGZpbGVzLiBSZXF1aXJlcyBgLS1hbGxvdy1yZWFkYCBhbmQgYC0tYWxsb3ctcnVuYC4gSW4gdGhpcyBtb2RlIHRoZSBkb3dubG9hZFxuICogY2FjaGUgaXMgc2hhcmVkIHdpdGggdGhlIERlbm8gZXhlY3V0YWJsZS4gVGhpcyBtb2RlIHJlc3BlY3RzIGRlbm8ubG9jayxcbiAqIERFTk9fRElSLCBERU5PX0FVVEhfVE9LRU5TLCBhbmQgYWxsIHNpbWlsYXIgbG9hZGluZyBjb25maWd1cmF0aW9uLiBGaWxlcyBhcmVcbiAqIGNhY2hlZCBvbiBkaXNrIGluIHRoZSBzYW1lIERlbm8gY2FjaGUgYXMgdGhlIERlbm8gZXhlY3V0YWJsZSwgYW5kIHdpbGwgbm90IGJlXG4gKiByZS1kb3dubG9hZGVkIG9uIHN1YnNlcXVlbnQgYnVpbGRzLlxuICpcbiAqIE5QTSBzcGVjaWZpZXJzIGNhbiBiZSB1c2VkIGluIHRoZSBuYXRpdmUgbG9hZGVyIHdpdGhvdXQgcmVxdWlyaW5nIGEgbG9jYWxcbiAqIGBub2RlX21vZHVsZXNgIGRpcmVjdG9yeS4gTlBNIHBhY2thZ2VzIGFyZSByZXNvbHZlZCwgZG93bmxvYWRlZCwgY2FjaGVkLCBhbmRcbiAqIGxvYWRlZCBpbiB0aGUgc2FtZSB3YXkgYXMgdGhlIERlbm8gZXhlY3V0YWJsZSBkb2VzLlxuICpcbiAqIEpTUiBzcGVjaWZpZXJzIGNhbiBiZSB1c2VkIHdpdGhvdXQgcmVzdHJpY3Rpb25zIGluIHRoZSBuYXRpdmUgbG9hZGVyLiBUb1xuICogZW5zdXJlIGRlcGVuZGVuY2llcyBhcmUgZGUtZHVwbGljYXRlZCBjb3JyZWN0bHksIGl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSBhXG4gKiBsb2NrZmlsZS5cbiAqXG4gKiAjIyMgUG9ydGFibGUgTG9hZGVyXG4gKlxuICogVGhlIHBvcnRhYmxlIGxvYWRlciBkb2VzIG1vZHVsZSBkb3dubG9hZGluZyBhbmQgY2FjaGluZyB3aXRoIG9ubHkgV2ViIEFQSXMuXG4gKiBSZXF1aXJlcyBgLS1hbGxvdy1yZWFkYCBhbmQvb3IgYC0tYWxsb3ctbmV0YC4gVGhpcyBtb2RlIGRvZXMgbm90IHJlc3BlY3RcbiAqIGRlbm8ubG9jaywgREVOT19ESVIsIERFTk9fQVVUSF9UT0tFTlMsIG9yIGFueSBvdGhlciBsb2FkaW5nIGNvbmZpZ3VyYXRpb24uIEl0XG4gKiBkb2VzIG5vdCBjYWNoZSBkb3dubG9hZGVkIGZpbGVzLiBJdCB3aWxsIHJlLWRvd25sb2FkIGZpbGVzIG9uIGV2ZXJ5IGJ1aWxkLlxuICpcbiAqIE5QTSBzcGVjaWZpZXJzIGNhbiBiZSB1c2VkIGluIHRoZSBwb3J0YWJsZSBsb2FkZXIsIGJ1dCByZXF1aXJlIGEgbG9jYWxcbiAqIGBub2RlX21vZHVsZXNgIGRpcmVjdG9yeS4gVGhlIGBub2RlX21vZHVsZXNgIGRpcmVjdG9yeSBtdXN0IGJlIGNyZWF0ZWQgcHJpb3JcbiAqIHVzaW5nIERlbm8ncyBgLS1ub2RlLW1vZHVsZXMtZGlyYCBmbGFnLlxuICpcbiAqIEpTUiBzcGVjaWZpZXJzIHJlcXVpcmUgYSBsb2NrZmlsZSB0byBiZSBwcmVzZW50IHRvIHJlc29sdmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZW5vTG9hZGVyUGx1Z2luKFxuICBvcHRpb25zOiBEZW5vTG9hZGVyUGx1Z2luT3B0aW9ucyA9IHt9LFxuKTogZXNidWlsZC5QbHVnaW4ge1xuICBjb25zdCBsb2FkZXIgPSBvcHRpb25zLmxvYWRlciA/PyBERUZBVUxUX0xPQURFUjtcbiAgaWYgKExPQURFUlMuaW5kZXhPZihsb2FkZXIpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBsb2FkZXI6ICR7bG9hZGVyfWApO1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJkZW5vLWxvYWRlclwiLFxuICAgIHNldHVwKGJ1aWxkKSB7XG4gICAgICBjb25zdCBjd2QgPSBidWlsZC5pbml0aWFsT3B0aW9ucy5hYnNXb3JraW5nRGlyID8/IERlbm8uY3dkKCk7XG5cbiAgICAgIGxldCBub2RlTW9kdWxlc0Rpcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgICBsZXQgbG9hZGVySW1wbDogTG9hZGVyIHwgdW5kZWZpbmVkO1xuXG4gICAgICBjb25zdCBwYWNrYWdlSWRCeU5vZGVNb2R1bGVzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuICAgICAgYnVpbGQub25TdGFydChmdW5jdGlvbiBvblN0YXJ0KCkge1xuICAgICAgICBsb2FkZXJJbXBsPy5bU3ltYm9sLmRpc3Bvc2VdPy4oKTtcbiAgICAgICAgbG9hZGVySW1wbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgcGFja2FnZUlkQnlOb2RlTW9kdWxlcy5jbGVhcigpO1xuXG4gICAgICAgIGxldCBub2RlTW9kdWxlc0Rpck9wdDogXCJhdXRvXCIgfCBcIm1hbnVhbFwiIHwgXCJub25lXCIgfCB1bmRlZmluZWQgPVxuICAgICAgICAgIG9wdGlvbnMubm9kZU1vZHVsZXNEaXI7XG4gICAgICAgIGxldCBsb2NrUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkID0gb3B0aW9ucy5sb2NrUGF0aDtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChub2RlTW9kdWxlc0Rpck9wdCA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAobG9hZGVyID09PSBcInBvcnRhYmxlXCIgJiYgbG9ja1BhdGggPT09IHVuZGVmaW5lZCkpXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IHdvcmtzcGFjZSA9IGZpbmRXb3Jrc3BhY2UoXG4gICAgICAgICAgICBjd2QsXG4gICAgICAgICAgICBidWlsZC5pbml0aWFsT3B0aW9ucy5lbnRyeVBvaW50cyxcbiAgICAgICAgICAgIG9wdGlvbnMuY29uZmlnUGF0aCxcbiAgICAgICAgICApO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAobm9kZU1vZHVsZXNEaXJPcHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBub2RlTW9kdWxlc0Rpck9wdCA9IHdvcmtzcGFjZS5ub2RlX21vZHVsZXNfZGlyKCkgYXNcbiAgICAgICAgICAgICAgICB8IFwiYXV0b1wiXG4gICAgICAgICAgICAgICAgfCBcIm1hbnVhbFwiXG4gICAgICAgICAgICAgICAgfCBcIm5vbmVcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsb2FkZXIgPT09IFwicG9ydGFibGVcIiAmJiBsb2NrUGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGxvY2tQYXRoID0gd29ya3NwYWNlLmxvY2tfcGF0aCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB3b3Jrc3BhY2UuZnJlZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgbm9kZU1vZHVsZXNEaXJPcHQgPT09IFwiYXV0b1wiIHx8XG4gICAgICAgICAgbm9kZU1vZHVsZXNEaXJPcHQgPT09IFwibWFudWFsXCJcbiAgICAgICAgKSB7XG4gICAgICAgICAgbm9kZU1vZHVsZXNEaXIgPSBqb2luKGN3ZCwgXCJub2RlX21vZHVsZXNcIik7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKGxvYWRlcikge1xuICAgICAgICAgIGNhc2UgXCJuYXRpdmVcIjpcbiAgICAgICAgICAgIGxvYWRlckltcGwgPSBuZXcgTmF0aXZlTG9hZGVyKHtcbiAgICAgICAgICAgICAgaW5mb09wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBjd2QsXG4gICAgICAgICAgICAgICAgY29uZmlnOiBvcHRpb25zLmNvbmZpZ1BhdGgsXG4gICAgICAgICAgICAgICAgaW1wb3J0TWFwOiBvcHRpb25zLmltcG9ydE1hcFVSTCxcbiAgICAgICAgICAgICAgICBsb2NrOiBvcHRpb25zLmxvY2tQYXRoLFxuICAgICAgICAgICAgICAgIG5vZGVNb2R1bGVzRGlyOiBub2RlTW9kdWxlc0Rpck9wdCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcInBvcnRhYmxlXCI6IHtcbiAgICAgICAgICAgIGxvYWRlckltcGwgPSBuZXcgUG9ydGFibGVMb2FkZXIoe1xuICAgICAgICAgICAgICBsb2NrOiBsb2NrUGF0aCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGFzeW5jIGZ1bmN0aW9uIG9uUmVzb2x2ZShcbiAgICAgICAgYXJnczogZXNidWlsZC5PblJlc29sdmVBcmdzLFxuICAgICAgKTogUHJvbWlzZTxlc2J1aWxkLk9uUmVzb2x2ZVJlc3VsdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAoaXNOb2RlTW9kdWxlc1Jlc29sdXRpb24oYXJncykpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBCVUlMVElOX05PREVfTU9EVUxFUy5oYXMoYXJncy5wYXRoKSB8fFxuICAgICAgICAgICAgQlVJTFRJTl9OT0RFX01PRFVMRVMuaGFzKFwibm9kZTpcIiArIGFyZ3MucGF0aClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHBhdGg6IGFyZ3MucGF0aCxcbiAgICAgICAgICAgICAgZXh0ZXJuYWw6IHRydWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobm9kZU1vZHVsZXNEaXIgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGxvYWRlckltcGwhLm5vZGVNb2R1bGVzRGlyRm9yUGFja2FnZSAmJlxuICAgICAgICAgICAgbG9hZGVySW1wbCEucGFja2FnZUlkRnJvbU5hbWVJblBhY2thZ2VcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGxldCBwYXJlbnRQYWNrYWdlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGxldCBwYXRoID0gYXJncy5pbXBvcnRlcjtcbiAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBhY2thZ2VJZCA9IHBhY2thZ2VJZEJ5Tm9kZU1vZHVsZXMuZ2V0KHBhdGgpO1xuICAgICAgICAgICAgICBpZiAocGFja2FnZUlkKSB7XG4gICAgICAgICAgICAgICAgcGFyZW50UGFja2FnZUlkID0gcGFja2FnZUlkO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHBhdGhCZWZvcmUgPSBwYXRoO1xuICAgICAgICAgICAgICBwYXRoID0gZGlybmFtZShwYXRoKTtcbiAgICAgICAgICAgICAgaWYgKHBhdGggPT09IHBhdGhCZWZvcmUpIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFwYXJlbnRQYWNrYWdlSWQpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBDb3VsZCBub3QgZmluZCBwYWNrYWdlIElEIGZvciBpbXBvcnRlcjogJHthcmdzLmltcG9ydGVyfWAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYXJncy5wYXRoLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBsZXQgcGFja2FnZU5hbWU6IHN0cmluZztcbiAgICAgICAgICAgICAgbGV0IHBhdGhQYXJ0czogc3RyaW5nW107XG4gICAgICAgICAgICAgIGlmIChhcmdzLnBhdGguc3RhcnRzV2l0aChcIkBcIikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbc2NvcGUsIG5hbWUsIC4uLnJlc3RdID0gYXJncy5wYXRoLnNwbGl0KFwiL1wiKTtcbiAgICAgICAgICAgICAgICBwYWNrYWdlTmFtZSA9IGAke3Njb3BlfS8ke25hbWV9YDtcbiAgICAgICAgICAgICAgICBwYXRoUGFydHMgPSByZXN0O1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IFtuYW1lLCAuLi5yZXN0XSA9IGFyZ3MucGF0aC5zcGxpdChcIi9cIik7XG4gICAgICAgICAgICAgICAgcGFja2FnZU5hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHBhdGhQYXJ0cyA9IHJlc3Q7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgcGFja2FnZUlkID0gbG9hZGVySW1wbCEucGFja2FnZUlkRnJvbU5hbWVJblBhY2thZ2UoXG4gICAgICAgICAgICAgICAgcGFja2FnZU5hbWUsXG4gICAgICAgICAgICAgICAgcGFyZW50UGFja2FnZUlkLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBjb25zdCBpZCA9IHBhY2thZ2VJZCA/PyBwYXJlbnRQYWNrYWdlSWQ7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVEaXIgPSBhd2FpdCBsb2FkZXJJbXBsIS5ub2RlTW9kdWxlc0RpckZvclBhY2thZ2UoaWQpO1xuICAgICAgICAgICAgICBwYWNrYWdlSWRCeU5vZGVNb2R1bGVzLnNldChyZXNvbHZlRGlyLCBpZCk7XG4gICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBbcGFja2FnZU5hbWUsIC4uLnBhdGhQYXJ0c10uam9pbihcIi9cIik7XG4gICAgICAgICAgICAgIHJldHVybiBhd2FpdCBidWlsZC5yZXNvbHZlKHBhdGgsIHtcbiAgICAgICAgICAgICAgICBraW5kOiBhcmdzLmtpbmQsXG4gICAgICAgICAgICAgICAgcmVzb2x2ZURpcixcbiAgICAgICAgICAgICAgICBpbXBvcnRlcjogYXJncy5pbXBvcnRlcixcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgYFRvIHVzZSBcIm5wbTpcIiBzcGVjaWZpZXJzLCB5b3UgbXVzdCBzcGVjaWZ5ICdub2RlTW9kdWxlc0RpcjogXCJtYW51YWxcIicsIG9yIHVzZSAnbG9hZGVyOiBcIm5hdGl2ZVwiJy5gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3BlY2lmaWVyID0gZXNidWlsZFJlc29sdXRpb25Ub1VSTChhcmdzKTtcblxuICAgICAgICAvLyBPbmNlIHdlIGhhdmUgYW4gYWJzb2x1dGUgcGF0aCwgbGV0IHRoZSBsb2FkZXIgcmVzb2x2ZXIgZmlndXJlIG91dFxuICAgICAgICAvLyB3aGF0IHRvIGRvIHdpdGggaXQuXG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGxvYWRlckltcGwhLnJlc29sdmUoc3BlY2lmaWVyKTtcblxuICAgICAgICBzd2l0Y2ggKHJlcy5raW5kKSB7XG4gICAgICAgICAgY2FzZSBcImVzbVwiOiB7XG4gICAgICAgICAgICBjb25zdCB7IHNwZWNpZmllciB9ID0gcmVzO1xuICAgICAgICAgICAgcmV0dXJuIHVybFRvRXNidWlsZFJlc29sdXRpb24oc3BlY2lmaWVyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBcIm5wbVwiOiB7XG4gICAgICAgICAgICBsZXQgcmVzb2x2ZURpcjogc3RyaW5nO1xuICAgICAgICAgICAgaWYgKG5vZGVNb2R1bGVzRGlyICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIHJlc29sdmVEaXIgPSBub2RlTW9kdWxlc0RpcjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobG9hZGVySW1wbCEubm9kZU1vZHVsZXNEaXJGb3JQYWNrYWdlKSB7XG4gICAgICAgICAgICAgIHJlc29sdmVEaXIgPSBhd2FpdCBsb2FkZXJJbXBsIS5ub2RlTW9kdWxlc0RpckZvclBhY2thZ2UoXG4gICAgICAgICAgICAgICAgcmVzLnBhY2thZ2VJZCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcGFja2FnZUlkQnlOb2RlTW9kdWxlcy5zZXQocmVzb2x2ZURpciwgcmVzLnBhY2thZ2VJZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYFRvIHVzZSBcIm5wbTpcIiBzcGVjaWZpZXJzLCB5b3UgbXVzdCBzcGVjaWZ5ICdub2RlTW9kdWxlc0RpcjogXCJtYW51YWxcIicsIG9yIHVzZSAnbG9hZGVyOiBcIm5hdGl2ZVwiJy5gLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcGF0aCA9IGAke3Jlcy5wYWNrYWdlTmFtZX0ke3Jlcy5wYXRoID8/IFwiXCJ9YDtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBidWlsZC5yZXNvbHZlKHBhdGgsIHtcbiAgICAgICAgICAgICAga2luZDogYXJncy5raW5kLFxuICAgICAgICAgICAgICByZXNvbHZlRGlyLFxuICAgICAgICAgICAgICBpbXBvcnRlcjogYXJncy5pbXBvcnRlcixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIFwibm9kZVwiOiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBwYXRoOiByZXMucGF0aCxcbiAgICAgICAgICAgICAgZXh0ZXJuYWw6IHRydWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnVpbGQub25SZXNvbHZlKHsgZmlsdGVyOiAvLiovLCBuYW1lc3BhY2U6IFwiZmlsZVwiIH0sIG9uUmVzb2x2ZSk7XG4gICAgICBidWlsZC5vblJlc29sdmUoeyBmaWx0ZXI6IC8uKi8sIG5hbWVzcGFjZTogXCJodHRwXCIgfSwgb25SZXNvbHZlKTtcbiAgICAgIGJ1aWxkLm9uUmVzb2x2ZSh7IGZpbHRlcjogLy4qLywgbmFtZXNwYWNlOiBcImh0dHBzXCIgfSwgb25SZXNvbHZlKTtcbiAgICAgIGJ1aWxkLm9uUmVzb2x2ZSh7IGZpbHRlcjogLy4qLywgbmFtZXNwYWNlOiBcImRhdGFcIiB9LCBvblJlc29sdmUpO1xuICAgICAgYnVpbGQub25SZXNvbHZlKHsgZmlsdGVyOiAvLiovLCBuYW1lc3BhY2U6IFwibnBtXCIgfSwgb25SZXNvbHZlKTtcbiAgICAgIGJ1aWxkLm9uUmVzb2x2ZSh7IGZpbHRlcjogLy4qLywgbmFtZXNwYWNlOiBcImpzclwiIH0sIG9uUmVzb2x2ZSk7XG4gICAgICBidWlsZC5vblJlc29sdmUoeyBmaWx0ZXI6IC8uKi8sIG5hbWVzcGFjZTogXCJub2RlXCIgfSwgb25SZXNvbHZlKTtcblxuICAgICAgZnVuY3Rpb24gb25Mb2FkKFxuICAgICAgICBhcmdzOiBlc2J1aWxkLk9uTG9hZEFyZ3MsXG4gICAgICApOiBQcm9taXNlPGVzYnVpbGQuT25Mb2FkUmVzdWx0IHwgbnVsbCB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoYXJncy5uYW1lc3BhY2UgPT09IFwiZmlsZVwiICYmIGlzSW5Ob2RlTW9kdWxlcyhhcmdzLnBhdGgpKSB7XG4gICAgICAgICAgLy8gaW5zaWRlIG5vZGVfbW9kdWxlcywganVzdCBsZXQgZXNidWlsZCBkbyBpdCdzIHRoaW5nXG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzcGVjaWZpZXIgPSBlc2J1aWxkUmVzb2x1dGlvblRvVVJMKGFyZ3MpO1xuICAgICAgICByZXR1cm4gbG9hZGVySW1wbCEubG9hZEVzbShzcGVjaWZpZXIpO1xuICAgICAgfVxuICAgICAgLy8gVE9ETyhsdWNhY2Fzb25hdG8pOiBvbmNlIGh0dHBzOi8vZ2l0aHViLmNvbS9ldmFudy9lc2J1aWxkL3B1bGwvMjk2OCBpcyBmaXhlZCwgcmVtb3ZlIHRoZSBjYXRjaCBhbGwgXCJmaWxlXCIgaGFuZGxlclxuICAgICAgYnVpbGQub25Mb2FkKHsgZmlsdGVyOiAvLiovLCBuYW1lc3BhY2U6IFwiZmlsZVwiIH0sIG9uTG9hZCk7XG4gICAgICBidWlsZC5vbkxvYWQoeyBmaWx0ZXI6IC8uKi8sIG5hbWVzcGFjZTogXCJodHRwXCIgfSwgb25Mb2FkKTtcbiAgICAgIGJ1aWxkLm9uTG9hZCh7IGZpbHRlcjogLy4qLywgbmFtZXNwYWNlOiBcImh0dHBzXCIgfSwgb25Mb2FkKTtcbiAgICAgIGJ1aWxkLm9uTG9hZCh7IGZpbHRlcjogLy4qLywgbmFtZXNwYWNlOiBcImRhdGFcIiB9LCBvbkxvYWQpO1xuICAgIH0sXG4gIH07XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBUyxPQUFPLEVBQUUsSUFBSSxRQUFRLHVCQUF1QjtBQUNyRCxTQUFTLFlBQVksUUFBUSxxQkFBcUI7QUFDbEQsU0FBUyxjQUFjLFFBQVEsdUJBQXVCO0FBQ3RELFNBQVMsYUFBYSxFQUFFLGVBQWUsUUFBUSxjQUFjO0FBQzdELFNBQ0Usc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUV2QixzQkFBc0IsUUFDakIsY0FBYztBQTZFckIsTUFBTSxVQUFVO0VBQUM7RUFBVTtDQUFX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 +// denoCacheMetadata=11400073764165193245,2091627671307936359
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/d4462d78a8e03200bae927934258fa95e966d8c682c893e2c630ffb61628ccfe.js b/vendor/gen/https/jsr.io/d4462d78a8e03200bae927934258fa95e966d8c682c893e2c630ffb61628ccfe.js new file mode 100644 index 0000000..326eb8e --- /dev/null +++ b/vendor/gen/https/jsr.io/d4462d78a8e03200bae927934258fa95e966d8c682c893e2c630ffb61628ccfe.js @@ -0,0 +1,104 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { assertArg } from "../_common/dirname.ts"; +import { CHAR_COLON } from "../_common/constants.ts"; +import { stripTrailingSeparators } from "../_common/strip_trailing_separators.ts"; +import { isPathSeparator, isPosixPathSeparator, isWindowsDeviceRoot } from "./_util.ts"; +/** + * Return the directory path of a `path`. + * + * @example Usage + * ```ts + * import { dirname } from "@std/path/windows/dirname"; + * import { assertEquals } from "@std/assert"; + * + * const dir = dirname("C:\\foo\\bar\\baz.ext"); + * assertEquals(dir, "C:\\foo\\bar"); + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `dirname` from `@std/path/windows/unstable-dirname`. + * + * @param path The path to get the directory from. + * @returns The directory path. + */ export function dirname(path) { + assertArg(path); + const len = path.length; + let rootEnd = -1; + let end = -1; + let matchedSlash = true; + let offset = 0; + const code = path.charCodeAt(0); + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + rootEnd = offset = 1; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for(; j < len; ++j){ + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + return path; + } + if (j !== last) { + // We matched a UNC root with leftovers + // Offset by 1 to include the separator after the UNC root to + // treat it as a "normal root" on top of a (UNC) root + rootEnd = offset = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = offset = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) rootEnd = offset = 3; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + return path; + } + for(let i = len - 1; i >= offset; --i){ + if (isPathSeparator(path.charCodeAt(i))) { + if (!matchedSlash) { + end = i; + break; + } + } else { + // We saw the first non-path separator + matchedSlash = false; + } + } + if (end === -1) { + if (rootEnd === -1) return "."; + else end = rootEnd; + } + return stripTrailingSeparators(path.slice(0, end), isPosixPathSeparator); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC93aW5kb3dzL2Rpcm5hbWUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgYXNzZXJ0QXJnIH0gZnJvbSBcIi4uL19jb21tb24vZGlybmFtZS50c1wiO1xuaW1wb3J0IHsgQ0hBUl9DT0xPTiB9IGZyb20gXCIuLi9fY29tbW9uL2NvbnN0YW50cy50c1wiO1xuaW1wb3J0IHsgc3RyaXBUcmFpbGluZ1NlcGFyYXRvcnMgfSBmcm9tIFwiLi4vX2NvbW1vbi9zdHJpcF90cmFpbGluZ19zZXBhcmF0b3JzLnRzXCI7XG5pbXBvcnQge1xuICBpc1BhdGhTZXBhcmF0b3IsXG4gIGlzUG9zaXhQYXRoU2VwYXJhdG9yLFxuICBpc1dpbmRvd3NEZXZpY2VSb290LFxufSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuXG4vKipcbiAqIFJldHVybiB0aGUgZGlyZWN0b3J5IHBhdGggb2YgYSBgcGF0aGAuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSBcIkBzdGQvcGF0aC93aW5kb3dzL2Rpcm5hbWVcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IGRpciA9IGRpcm5hbWUoXCJDOlxcXFxmb29cXFxcYmFyXFxcXGJhei5leHRcIik7XG4gKiBhc3NlcnRFcXVhbHMoZGlyLCBcIkM6XFxcXGZvb1xcXFxiYXJcIik7XG4gKiBgYGBcbiAqXG4gKiBOb3RlOiBJZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBmaWxlIFVSTHMsXG4gKiB1c2UgdGhlIG5ldyB2ZXJzaW9uIG9mIGBkaXJuYW1lYCBmcm9tIGBAc3RkL3BhdGgvd2luZG93cy91bnN0YWJsZS1kaXJuYW1lYC5cbiAqXG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCB0byBnZXQgdGhlIGRpcmVjdG9yeSBmcm9tLlxuICogQHJldHVybnMgVGhlIGRpcmVjdG9yeSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlybmFtZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBhc3NlcnRBcmcocGF0aCk7XG5cbiAgY29uc3QgbGVuID0gcGF0aC5sZW5ndGg7XG4gIGxldCByb290RW5kID0gLTE7XG4gIGxldCBlbmQgPSAtMTtcbiAgbGV0IG1hdGNoZWRTbGFzaCA9IHRydWU7XG4gIGxldCBvZmZzZXQgPSAwO1xuICBjb25zdCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KDApO1xuXG4gIC8vIFRyeSB0byBtYXRjaCBhIHJvb3RcbiAgaWYgKGxlbiA+IDEpIHtcbiAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgICAvLyBQb3NzaWJsZSBVTkMgcm9vdFxuXG4gICAgICByb290RW5kID0gb2Zmc2V0ID0gMTtcblxuICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMSkpKSB7XG4gICAgICAgIC8vIE1hdGNoZWQgZG91YmxlIHBhdGggc2VwYXJhdG9yIGF0IGJlZ2lubmluZ1xuICAgICAgICBsZXQgaiA9IDI7XG4gICAgICAgIGxldCBsYXN0ID0gajtcbiAgICAgICAgLy8gTWF0Y2ggMSBvciBtb3JlIG5vbi1wYXRoIHNlcGFyYXRvcnNcbiAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGopKSkgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGogPCBsZW4gJiYgaiAhPT0gbGFzdCkge1xuICAgICAgICAgIC8vIE1hdGNoZWQhXG4gICAgICAgICAgbGFzdCA9IGo7XG4gICAgICAgICAgLy8gTWF0Y2ggMSBvciBtb3JlIHBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICAgIGlmICghaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaiA8IGxlbiAmJiBqICE9PSBsYXN0KSB7XG4gICAgICAgICAgICAvLyBNYXRjaGVkIVxuICAgICAgICAgICAgbGFzdCA9IGo7XG4gICAgICAgICAgICAvLyBNYXRjaCAxIG9yIG1vcmUgbm9uLXBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGogPT09IGxlbikge1xuICAgICAgICAgICAgICAvLyBXZSBtYXRjaGVkIGEgVU5DIHJvb3Qgb25seVxuICAgICAgICAgICAgICByZXR1cm4gcGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChqICE9PSBsYXN0KSB7XG4gICAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgYSBVTkMgcm9vdCB3aXRoIGxlZnRvdmVyc1xuXG4gICAgICAgICAgICAgIC8vIE9mZnNldCBieSAxIHRvIGluY2x1ZGUgdGhlIHNlcGFyYXRvciBhZnRlciB0aGUgVU5DIHJvb3QgdG9cbiAgICAgICAgICAgICAgLy8gdHJlYXQgaXQgYXMgYSBcIm5vcm1hbCByb290XCIgb24gdG9wIG9mIGEgKFVOQykgcm9vdFxuICAgICAgICAgICAgICByb290RW5kID0gb2Zmc2V0ID0gaiArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KGNvZGUpKSB7XG4gICAgICAvLyBQb3NzaWJsZSBkZXZpY2Ugcm9vdFxuXG4gICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OKSB7XG4gICAgICAgIHJvb3RFbmQgPSBvZmZzZXQgPSAyO1xuICAgICAgICBpZiAobGVuID4gMikge1xuICAgICAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDIpKSkgcm9vdEVuZCA9IG9mZnNldCA9IDM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgLy8gYHBhdGhgIGNvbnRhaW5zIGp1c3QgYSBwYXRoIHNlcGFyYXRvciwgZXhpdCBlYXJseSB0byBhdm9pZFxuICAgIC8vIHVubmVjZXNzYXJ5IHdvcmtcbiAgICByZXR1cm4gcGF0aDtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSBsZW4gLSAxOyBpID49IG9mZnNldDsgLS1pKSB7XG4gICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaSkpKSB7XG4gICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICBlbmQgPSBpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3JcbiAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChlbmQgPT09IC0xKSB7XG4gICAgaWYgKHJvb3RFbmQgPT09IC0xKSByZXR1cm4gXCIuXCI7XG4gICAgZWxzZSBlbmQgPSByb290RW5kO1xuICB9XG4gIHJldHVybiBzdHJpcFRyYWlsaW5nU2VwYXJhdG9ycyhwYXRoLnNsaWNlKDAsIGVuZCksIGlzUG9zaXhQYXRoU2VwYXJhdG9yKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBRXJDLFNBQVMsU0FBUyxRQUFRLHdCQUF3QjtBQUNsRCxTQUFT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 +// denoCacheMetadata=6555987361175469730,625806111020819002
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/d4b76e8922cdf2472e27b2787ab6d9f85911f093958dfe3bc27dde1bac6168ad.js b/vendor/gen/https/jsr.io/d4b76e8922cdf2472e27b2787ab6d9f85911f093958dfe3bc27dde1bac6168ad.js new file mode 100644 index 0000000..ae5ea1e --- /dev/null +++ b/vendor/gen/https/jsr.io/d4b76e8922cdf2472e27b2787ab6d9f85911f093958dfe3bc27dde1bac6168ad.js @@ -0,0 +1,51 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * Copy bytes from the source array to the destination array and returns the + * number of bytes copied. + * + * If the source array is larger than what the `dst` array can hold, only the + * amount of bytes that fit in the `dst` array are copied. + * + * @param src Source array to copy from. + * @param dst Destination array to copy to. + * @param offset Offset in the destination array to start copying to. Defaults + * to 0. + * @returns Number of bytes copied. + * + * @example Basic usage + * ```ts + * import { copy } from "@std/bytes/copy"; + * import { assertEquals } from "@std/assert"; + * + * const src = new Uint8Array([9, 8, 7]); + * const dst = new Uint8Array([0, 1, 2, 3, 4, 5]); + * + * assertEquals(copy(src, dst), 3); + * assertEquals(dst, new Uint8Array([9, 8, 7, 3, 4, 5])); + * ``` + * + * @example Copy with offset + * ```ts + * import { copy } from "@std/bytes/copy"; + * import { assertEquals } from "@std/assert"; + * + * const src = new Uint8Array([1, 1, 1, 1]); + * const dst = new Uint8Array([0, 0, 0, 0]); + * + * assertEquals(copy(src, dst, 1), 3); + * assertEquals(dst, new Uint8Array([0, 1, 1, 1])); + * ``` + * Defining an offset will start copying at the specified index in the + * destination array. + */ export function copy(src, dst, offset = 0) { + offset = Math.max(0, Math.min(offset, dst.byteLength)); + const dstBytesAvailable = dst.byteLength - offset; + if (src.byteLength > dstBytesAvailable) { + src = src.subarray(0, dstBytesAvailable); + } + dst.set(src, offset); + return src.byteLength; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvYnl0ZXMvMS4wLjYvY29weS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vKipcbiAqIENvcHkgYnl0ZXMgZnJvbSB0aGUgc291cmNlIGFycmF5IHRvIHRoZSBkZXN0aW5hdGlvbiBhcnJheSBhbmQgcmV0dXJucyB0aGVcbiAqIG51bWJlciBvZiBieXRlcyBjb3BpZWQuXG4gKlxuICogSWYgdGhlIHNvdXJjZSBhcnJheSBpcyBsYXJnZXIgdGhhbiB3aGF0IHRoZSBgZHN0YCBhcnJheSBjYW4gaG9sZCwgb25seSB0aGVcbiAqIGFtb3VudCBvZiBieXRlcyB0aGF0IGZpdCBpbiB0aGUgYGRzdGAgYXJyYXkgYXJlIGNvcGllZC5cbiAqXG4gKiBAcGFyYW0gc3JjIFNvdXJjZSBhcnJheSB0byBjb3B5IGZyb20uXG4gKiBAcGFyYW0gZHN0IERlc3RpbmF0aW9uIGFycmF5IHRvIGNvcHkgdG8uXG4gKiBAcGFyYW0gb2Zmc2V0IE9mZnNldCBpbiB0aGUgZGVzdGluYXRpb24gYXJyYXkgdG8gc3RhcnQgY29weWluZyB0by4gRGVmYXVsdHNcbiAqIHRvIDAuXG4gKiBAcmV0dXJucyBOdW1iZXIgb2YgYnl0ZXMgY29waWVkLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgY29weSB9IGZyb20gXCJAc3RkL2J5dGVzL2NvcHlcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IHNyYyA9IG5ldyBVaW50OEFycmF5KFs5LCA4LCA3XSk7XG4gKiBjb25zdCBkc3QgPSBuZXcgVWludDhBcnJheShbMCwgMSwgMiwgMywgNCwgNV0pO1xuICpcbiAqIGFzc2VydEVxdWFscyhjb3B5KHNyYywgZHN0KSwgMyk7XG4gKiBhc3NlcnRFcXVhbHMoZHN0LCBuZXcgVWludDhBcnJheShbOSwgOCwgNywgMywgNCwgNV0pKTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIENvcHkgd2l0aCBvZmZzZXRcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBjb3B5IH0gZnJvbSBcIkBzdGQvYnl0ZXMvY29weVwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3Qgc3JjID0gbmV3IFVpbnQ4QXJyYXkoWzEsIDEsIDEsIDFdKTtcbiAqIGNvbnN0IGRzdCA9IG5ldyBVaW50OEFycmF5KFswLCAwLCAwLCAwXSk7XG4gKlxuICogYXNzZXJ0RXF1YWxzKGNvcHkoc3JjLCBkc3QsIDEpLCAzKTtcbiAqIGFzc2VydEVxdWFscyhkc3QsIG5ldyBVaW50OEFycmF5KFswLCAxLCAxLCAxXSkpO1xuICogYGBgXG4gKiBEZWZpbmluZyBhbiBvZmZzZXQgd2lsbCBzdGFydCBjb3B5aW5nIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXggaW4gdGhlXG4gKiBkZXN0aW5hdGlvbiBhcnJheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHkoc3JjOiBVaW50OEFycmF5LCBkc3Q6IFVpbnQ4QXJyYXksIG9mZnNldCA9IDApOiBudW1iZXIge1xuICBvZmZzZXQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihvZmZzZXQsIGRzdC5ieXRlTGVuZ3RoKSk7XG4gIGNvbnN0IGRzdEJ5dGVzQXZhaWxhYmxlID0gZHN0LmJ5dGVMZW5ndGggLSBvZmZzZXQ7XG4gIGlmIChzcmMuYnl0ZUxlbmd0aCA+IGRzdEJ5dGVzQXZhaWxhYmxlKSB7XG4gICAgc3JjID0gc3JjLnN1YmFycmF5KDAsIGRzdEJ5dGVzQXZhaWxhYmxlKTtcbiAgfVxuICBkc3Quc2V0KHNyYywgb2Zmc2V0KTtcbiAgcmV0dXJuIHNyYy5ieXRlTGVuZ3RoO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBc0NDLEdBQ0QsT0FBTyxTQUFTLEtBQUssR0FBZSxFQUFFLEdBQWUsRUFBRSxTQUFTLENBQUM7RUFDL0QsU0FBUyxLQUFLLEdBQUcsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLFFBQVEsSUFBSSxVQUFVO0VBQ3BELE1BQU0sb0JBQW9CLElBQUksVUFBVSxHQUFHO0VBQzNDLElBQUksSUFBSSxVQUFVLEdBQUcsbUJBQW1CO0lBQ3RDLE1BQU0sSUFBSSxRQUFRLENBQUMsR0FBRztFQUN4QjtFQUNBLElBQUksR0FBRyxDQUFDLEtBQUs7RUFDYixPQUFPLElBQUksVUFBVTtBQUN2QiJ9 +// denoCacheMetadata=16159230279178325535,17931808895107412719
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/d66d545141b19d2745c8934c4ea43789bcc5d2db57aeaf5b133ce50847a520ad.js b/vendor/gen/https/jsr.io/d66d545141b19d2745c8934c4ea43789bcc5d2db57aeaf5b133ce50847a520ad.js new file mode 100644 index 0000000..785d0f0 --- /dev/null +++ b/vendor/gen/https/jsr.io/d66d545141b19d2745c8934c4ea43789bcc5d2db57aeaf5b133ce50847a520ad.js @@ -0,0 +1,31 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { relative as posixRelative } from "./posix/relative.ts"; +import { relative as windowsRelative } from "./windows/relative.ts"; +/** + * Return the relative path from `from` to `to` based on current working + * directory. + * + * @example Usage + * ```ts + * import { relative } from "@std/path/relative"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * const path = relative("C:\\foobar\\test\\aaa", "C:\\foobar\\impl\\bbb"); + * assertEquals(path, "..\\..\\impl\\bbb"); + * } else { + * const path = relative("/data/foobar/test/aaa", "/data/foobar/impl/bbb"); + * assertEquals(path, "../../impl/bbb"); + * } + * ``` + * + * @param from Path in current working directory. + * @param to Path in current working directory. + * @returns The relative path from `from` to `to`. + */ export function relative(from, to) { + return isWindows ? windowsRelative(from, to) : posixRelative(from, to); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9yZWxhdGl2ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBpc1dpbmRvd3MgfSBmcm9tIFwiLi9fb3MudHNcIjtcbmltcG9ydCB7IHJlbGF0aXZlIGFzIHBvc2l4UmVsYXRpdmUgfSBmcm9tIFwiLi9wb3NpeC9yZWxhdGl2ZS50c1wiO1xuaW1wb3J0IHsgcmVsYXRpdmUgYXMgd2luZG93c1JlbGF0aXZlIH0gZnJvbSBcIi4vd2luZG93cy9yZWxhdGl2ZS50c1wiO1xuXG4vKipcbiAqIFJldHVybiB0aGUgcmVsYXRpdmUgcGF0aCBmcm9tIGBmcm9tYCB0byBgdG9gIGJhc2VkIG9uIGN1cnJlbnQgd29ya2luZ1xuICogZGlyZWN0b3J5LlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgcmVsYXRpdmUgfSBmcm9tIFwiQHN0ZC9wYXRoL3JlbGF0aXZlXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBpZiAoRGVuby5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCIpIHtcbiAqICAgY29uc3QgcGF0aCA9IHJlbGF0aXZlKFwiQzpcXFxcZm9vYmFyXFxcXHRlc3RcXFxcYWFhXCIsIFwiQzpcXFxcZm9vYmFyXFxcXGltcGxcXFxcYmJiXCIpO1xuICogICBhc3NlcnRFcXVhbHMocGF0aCwgXCIuLlxcXFwuLlxcXFxpbXBsXFxcXGJiYlwiKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGNvbnN0IHBhdGggPSByZWxhdGl2ZShcIi9kYXRhL2Zvb2Jhci90ZXN0L2FhYVwiLCBcIi9kYXRhL2Zvb2Jhci9pbXBsL2JiYlwiKTtcbiAqICAgYXNzZXJ0RXF1YWxzKHBhdGgsIFwiLi4vLi4vaW1wbC9iYmJcIik7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gZnJvbSBQYXRoIGluIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuXG4gKiBAcGFyYW0gdG8gUGF0aCBpbiBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LlxuICogQHJldHVybnMgVGhlIHJlbGF0aXZlIHBhdGggZnJvbSBgZnJvbWAgdG8gYHRvYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbGF0aXZlKGZyb206IHN0cmluZywgdG86IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBpc1dpbmRvd3MgPyB3aW5kb3dzUmVsYXRpdmUoZnJvbSwgdG8pIDogcG9zaXhSZWxhdGl2ZShmcm9tLCB0byk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQyxTQUFTLFNBQVMsUUFBUSxXQUFXO0FBQ3JDLFNBQVMsWUFBWSxhQUFhLFFBQVEsc0JBQXNCO0FBQ2hFLFNBQVMsWUFBWSxlQUFlLFFBQVEsd0JBQXdCO0FBRXBFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FxQkMsR0FDRCxPQUFPLFNBQVMsU0FBUyxJQUFZLEVBQUUsRUFBVTtFQUMvQyxPQUFPLFlBQVksZ0JBQWdCLE1BQU0sTUFBTSxjQUFjLE1BQU07QUFDckUifQ== +// denoCacheMetadata=3970865628188685982,13342588272175175639
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/d7701d0e3d46aa0a2f44434d9ecb33d4a0624b75f54da0d6ea5daa2454cab1d2.js b/vendor/gen/https/jsr.io/d7701d0e3d46aa0a2f44434d9ecb33d4a0624b75f54da0d6ea5daa2454cab1d2.js new file mode 100644 index 0000000..56bb615 --- /dev/null +++ b/vendor/gen/https/jsr.io/d7701d0e3d46aa0a2f44434d9ecb33d4a0624b75f54da0d6ea5daa2454cab1d2.js @@ -0,0 +1,19 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * A parsed path object generated by path.parse() or consumed by path.format(). + * + * @example + * ```ts + * import { parse } from "@std/path"; + * + * const parsedPathObj = parse("c:\\path\\dir\\index.html"); + * parsedPathObj.root; // "c:\\" + * parsedPathObj.dir; // "c:\\path\\dir" + * parsedPathObj.base; // "index.html" + * parsedPathObj.ext; // ".html" + * parsedPathObj.name; // "index" + * ``` + */ +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vKipcbiAqIEEgcGFyc2VkIHBhdGggb2JqZWN0IGdlbmVyYXRlZCBieSBwYXRoLnBhcnNlKCkgb3IgY29uc3VtZWQgYnkgcGF0aC5mb3JtYXQoKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHBhcnNlIH0gZnJvbSBcIkBzdGQvcGF0aFwiO1xuICpcbiAqIGNvbnN0IHBhcnNlZFBhdGhPYmogPSBwYXJzZShcImM6XFxcXHBhdGhcXFxcZGlyXFxcXGluZGV4Lmh0bWxcIik7XG4gKiBwYXJzZWRQYXRoT2JqLnJvb3Q7IC8vIFwiYzpcXFxcXCJcbiAqIHBhcnNlZFBhdGhPYmouZGlyOyAvLyBcImM6XFxcXHBhdGhcXFxcZGlyXCJcbiAqIHBhcnNlZFBhdGhPYmouYmFzZTsgLy8gXCJpbmRleC5odG1sXCJcbiAqIHBhcnNlZFBhdGhPYmouZXh0OyAvLyBcIi5odG1sXCJcbiAqIHBhcnNlZFBhdGhPYmoubmFtZTsgLy8gXCJpbmRleFwiXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJzZWRQYXRoIHtcbiAgLyoqXG4gICAqIFRoZSByb290IG9mIHRoZSBwYXRoIHN1Y2ggYXMgJy8nIG9yICdjOlxcJ1xuICAgKi9cbiAgcm9vdDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGZ1bGwgZGlyZWN0b3J5IHBhdGggb2YgdGhlIHBhcmVudCBzdWNoIGFzICcvaG9tZS91c2VyL2Rpcicgb3IgJ2M6XFxwYXRoXFxkaXInXG4gICAqL1xuICBkaXI6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBmaWxlIG5hbWUgaW5jbHVkaW5nIGV4dGVuc2lvbiAoaWYgYW55KSBzdWNoIGFzICdpbmRleC5odG1sJ1xuICAgKi9cbiAgYmFzZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGZpbGUgZXh0ZW5zaW9uIChpZiBhbnkpIHN1Y2ggYXMgJy5odG1sJ1xuICAgKi9cbiAgZXh0OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZmlsZSBuYW1lIHdpdGhvdXQgZXh0ZW5zaW9uIChpZiBhbnkpIHN1Y2ggYXMgJ2luZGV4J1xuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckM7Ozs7Ozs7Ozs7Ozs7O0NBY0MsR0FDRCJ9 +// denoCacheMetadata=5175465915552760208,17579665747998969026
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/d77d190843438d9f873bc4d830989e945a260d8789624ebbc6bfc13df1be4367.js b/vendor/gen/https/jsr.io/d77d190843438d9f873bc4d830989e945a260d8789624ebbc6bfc13df1be4367.js new file mode 100644 index 0000000..7272135 --- /dev/null +++ b/vendor/gen/https/jsr.io/d77d190843438d9f873bc4d830989e945a260d8789624ebbc6bfc13df1be4367.js @@ -0,0 +1,29 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { fromFileUrl as posixFromFileUrl } from "./posix/from_file_url.ts"; +import { fromFileUrl as windowsFromFileUrl } from "./windows/from_file_url.ts"; +/** + * Converts a file URL to a path string. + * + * @example Usage + * ```ts + * import { fromFileUrl } from "@std/path/from-file-url"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(fromFileUrl("file:///home/foo"), "\\home\\foo"); + * assertEquals(fromFileUrl("file:///C:/Users/foo"), "C:\\Users\\foo"); + * assertEquals(fromFileUrl("file://localhost/home/foo"), "\\home\\foo"); + * } else { + * assertEquals(fromFileUrl("file:///home/foo"), "/home/foo"); + * } + * ``` + * + * @param url The file URL to convert to a path. + * @returns The path string. + */ export function fromFileUrl(url) { + return isWindows ? windowsFromFileUrl(url) : posixFromFileUrl(url); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9mcm9tX2ZpbGVfdXJsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGlzV2luZG93cyB9IGZyb20gXCIuL19vcy50c1wiO1xuaW1wb3J0IHsgZnJvbUZpbGVVcmwgYXMgcG9zaXhGcm9tRmlsZVVybCB9IGZyb20gXCIuL3Bvc2l4L2Zyb21fZmlsZV91cmwudHNcIjtcbmltcG9ydCB7IGZyb21GaWxlVXJsIGFzIHdpbmRvd3NGcm9tRmlsZVVybCB9IGZyb20gXCIuL3dpbmRvd3MvZnJvbV9maWxlX3VybC50c1wiO1xuXG4vKipcbiAqIENvbnZlcnRzIGEgZmlsZSBVUkwgdG8gYSBwYXRoIHN0cmluZy5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGZyb21GaWxlVXJsIH0gZnJvbSBcIkBzdGQvcGF0aC9mcm9tLWZpbGUtdXJsXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBpZiAoRGVuby5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCIpIHtcbiAqICAgYXNzZXJ0RXF1YWxzKGZyb21GaWxlVXJsKFwiZmlsZTovLy9ob21lL2Zvb1wiKSwgXCJcXFxcaG9tZVxcXFxmb29cIik7XG4gKiAgIGFzc2VydEVxdWFscyhmcm9tRmlsZVVybChcImZpbGU6Ly8vQzovVXNlcnMvZm9vXCIpLCBcIkM6XFxcXFVzZXJzXFxcXGZvb1wiKTtcbiAqICAgYXNzZXJ0RXF1YWxzKGZyb21GaWxlVXJsKFwiZmlsZTovL2xvY2FsaG9zdC9ob21lL2Zvb1wiKSwgXCJcXFxcaG9tZVxcXFxmb29cIik7XG4gKiB9IGVsc2Uge1xuICogICBhc3NlcnRFcXVhbHMoZnJvbUZpbGVVcmwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpLCBcIi9ob21lL2Zvb1wiKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB1cmwgVGhlIGZpbGUgVVJMIHRvIGNvbnZlcnQgdG8gYSBwYXRoLlxuICogQHJldHVybnMgVGhlIHBhdGggc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbUZpbGVVcmwodXJsOiBzdHJpbmcgfCBVUkwpOiBzdHJpbmcge1xuICByZXR1cm4gaXNXaW5kb3dzID8gd2luZG93c0Zyb21GaWxlVXJsKHVybCkgOiBwb3NpeEZyb21GaWxlVXJsKHVybCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQyxTQUFTLFNBQVMsUUFBUSxXQUFXO0FBQ3JDLFNBQVMsZUFBZSxnQkFBZ0IsUUFBUSwyQkFBMkI7QUFDM0UsU0FBUyxlQUFlLGtCQUFrQixRQUFRLDZCQUE2QjtBQUUvRTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW1CQyxHQUNELE9BQU8sU0FBUyxZQUFZLEdBQWlCO0VBQzNDLE9BQU8sWUFBWSxtQkFBbUIsT0FBTyxpQkFBaUI7QUFDaEUifQ== +// denoCacheMetadata=18324079392581752174,17254104756215203181
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/d789b6dce9dc3e5e94bd66aaf8fe68410725f1da2d406a26067ad8603e73ab08.js b/vendor/gen/https/jsr.io/d789b6dce9dc3e5e94bd66aaf8fe68410725f1da2d406a26067ad8603e73ab08.js new file mode 100644 index 0000000..385dce7 --- /dev/null +++ b/vendor/gen/https/jsr.io/d789b6dce9dc3e5e94bd66aaf8fe68410725f1da2d406a26067ad8603e73ab08.js @@ -0,0 +1,44 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { assertArgs, lastPathSegment, stripSuffix } from "../_common/basename.ts"; +import { CHAR_COLON } from "../_common/constants.ts"; +import { stripTrailingSeparators } from "../_common/strip_trailing_separators.ts"; +import { isPathSeparator, isWindowsDeviceRoot } from "./_util.ts"; +/** + * Return the last portion of a `path`. + * Trailing directory separators are ignored, and optional suffix is removed. + * + * @example Usage + * ```ts + * import { basename } from "@std/path/windows/basename"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(basename("C:\\user\\Documents\\"), "Documents"); + * assertEquals(basename("C:\\user\\Documents\\image.png"), "image.png"); + * assertEquals(basename("C:\\user\\Documents\\image.png", ".png"), "image"); + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `basename` from `@std/path/windows/unstable-basename`. + * + * @param path The path to extract the name from. + * @param suffix The suffix to remove from extracted name. + * @returns The extracted name. + */ export function basename(path, suffix = "") { + assertArgs(path, suffix); + // Check for a drive letter prefix so as not to mistake the following + // path separator as an extra separator at the end of the path that can be + // disregarded + let start = 0; + if (path.length >= 2) { + const drive = path.charCodeAt(0); + if (isWindowsDeviceRoot(drive)) { + if (path.charCodeAt(1) === CHAR_COLON) start = 2; + } + } + const lastSegment = lastPathSegment(path, isPathSeparator, start); + const strippedSegment = stripTrailingSeparators(lastSegment, isPathSeparator); + return suffix ? stripSuffix(strippedSegment, suffix) : strippedSegment; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS93aW5kb3dzL2Jhc2VuYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7XG4gIGFzc2VydEFyZ3MsXG4gIGxhc3RQYXRoU2VnbWVudCxcbiAgc3RyaXBTdWZmaXgsXG59IGZyb20gXCIuLi9fY29tbW9uL2Jhc2VuYW1lLnRzXCI7XG5pbXBvcnQgeyBDSEFSX0NPTE9OIH0gZnJvbSBcIi4uL19jb21tb24vY29uc3RhbnRzLnRzXCI7XG5pbXBvcnQgeyBzdHJpcFRyYWlsaW5nU2VwYXJhdG9ycyB9IGZyb20gXCIuLi9fY29tbW9uL3N0cmlwX3RyYWlsaW5nX3NlcGFyYXRvcnMudHNcIjtcbmltcG9ydCB7IGlzUGF0aFNlcGFyYXRvciwgaXNXaW5kb3dzRGV2aWNlUm9vdCB9IGZyb20gXCIuL191dGlsLnRzXCI7XG5cbi8qKlxuICogUmV0dXJuIHRoZSBsYXN0IHBvcnRpb24gb2YgYSBgcGF0aGAuXG4gKiBUcmFpbGluZyBkaXJlY3Rvcnkgc2VwYXJhdG9ycyBhcmUgaWdub3JlZCwgYW5kIG9wdGlvbmFsIHN1ZmZpeCBpcyByZW1vdmVkLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgYmFzZW5hbWUgfSBmcm9tIFwiQHN0ZC9wYXRoL3dpbmRvd3MvYmFzZW5hbWVcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydEVxdWFscyhiYXNlbmFtZShcIkM6XFxcXHVzZXJcXFxcRG9jdW1lbnRzXFxcXFwiKSwgXCJEb2N1bWVudHNcIik7XG4gKiBhc3NlcnRFcXVhbHMoYmFzZW5hbWUoXCJDOlxcXFx1c2VyXFxcXERvY3VtZW50c1xcXFxpbWFnZS5wbmdcIiksIFwiaW1hZ2UucG5nXCIpO1xuICogYXNzZXJ0RXF1YWxzKGJhc2VuYW1lKFwiQzpcXFxcdXNlclxcXFxEb2N1bWVudHNcXFxcaW1hZ2UucG5nXCIsIFwiLnBuZ1wiKSwgXCJpbWFnZVwiKTtcbiAqIGBgYFxuICpcbiAqIE5vdGU6IElmIHlvdSBhcmUgd29ya2luZyB3aXRoIGZpbGUgVVJMcyxcbiAqIHVzZSB0aGUgbmV3IHZlcnNpb24gb2YgYGJhc2VuYW1lYCBmcm9tIGBAc3RkL3BhdGgvd2luZG93cy91bnN0YWJsZS1iYXNlbmFtZWAuXG4gKlxuICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gZXh0cmFjdCB0aGUgbmFtZSBmcm9tLlxuICogQHBhcmFtIHN1ZmZpeCBUaGUgc3VmZml4IHRvIHJlbW92ZSBmcm9tIGV4dHJhY3RlZCBuYW1lLlxuICogQHJldHVybnMgVGhlIGV4dHJhY3RlZCBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYmFzZW5hbWUocGF0aDogc3RyaW5nLCBzdWZmaXggPSBcIlwiKTogc3RyaW5nIHtcbiAgYXNzZXJ0QXJncyhwYXRoLCBzdWZmaXgpO1xuXG4gIC8vIENoZWNrIGZvciBhIGRyaXZlIGxldHRlciBwcmVmaXggc28gYXMgbm90IHRvIG1pc3Rha2UgdGhlIGZvbGxvd2luZ1xuICAvLyBwYXRoIHNlcGFyYXRvciBhcyBhbiBleHRyYSBzZXBhcmF0b3IgYXQgdGhlIGVuZCBvZiB0aGUgcGF0aCB0aGF0IGNhbiBiZVxuICAvLyBkaXNyZWdhcmRlZFxuICBsZXQgc3RhcnQgPSAwO1xuICBpZiAocGF0aC5sZW5ndGggPj0gMikge1xuICAgIGNvbnN0IGRyaXZlID0gcGF0aC5jaGFyQ29kZUF0KDApO1xuICAgIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KGRyaXZlKSkge1xuICAgICAgaWYgKHBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9DT0xPTikgc3RhcnQgPSAyO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGxhc3RTZWdtZW50ID0gbGFzdFBhdGhTZWdtZW50KHBhdGgsIGlzUGF0aFNlcGFyYXRvciwgc3RhcnQpO1xuICBjb25zdCBzdHJpcHBlZFNlZ21lbnQgPSBzdHJpcFRyYWlsaW5nU2VwYXJhdG9ycyhsYXN0U2VnbWVudCwgaXNQYXRoU2VwYXJhdG9yKTtcbiAgcmV0dXJuIHN1ZmZpeCA/IHN0cmlwU3VmZml4KHN0cmlwcGVkU2VnbWVudCwgc3VmZml4KSA6IHN0cmlwcGVkU2VnbWVudDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDLFNBQ0UsVUFBVSxFQUNWLGVBQWUsRUFDZixXQUFXLFFBQ04seUJBQXlCO0FBQ2hDLFNBQVMsVUFBVSxRQUFRLDBCQUEwQjtBQUNyRCxTQUFTLHVCQUF1QixRQUFRLDBDQUEwQztBQUNsRixTQUFTLGVBQWUsRUFBRSxtQkFBbUIsUUFBUSxhQUFhO0FBRWxFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW9CQyxHQUNELE9BQU8sU0FBUyxTQUFTLElBQVksRUFBRSxTQUFTLEVBQUU7RUFDaEQsV0FBVyxNQUFNO0VBRWpCLHFFQUFxRTtFQUNyRSwwRUFBMEU7RUFDMUUsY0FBYztFQUNkLElBQUksUUFBUTtFQUNaLElBQUksS0FBSyxNQUFNLElBQUksR0FBRztJQUNwQixNQUFNLFFBQVEsS0FBSyxVQUFVLENBQUM7SUFDOUIsSUFBSSxvQkFBb0IsUUFBUTtNQUM5QixJQUFJLEtBQUssVUFBVSxDQUFDLE9BQU8sWUFBWSxRQUFRO0lBQ2pEO0VBQ0Y7RUFFQSxNQUFNLGNBQWMsZ0JBQWdCLE1BQU0saUJBQWlCO0VBQzNELE1BQU0sa0JBQWtCLHdCQUF3QixhQUFhO0VBQzdELE9BQU8sU0FBUyxZQUFZLGlCQUFpQixVQUFVO0FBQ3pEIn0= +// denoCacheMetadata=12931844423976950166,3487146104282885864
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/d79a58233f7495a8b07c0419ec5e64b6353ca3979abed89b309abc2f76e4e2fc.js b/vendor/gen/https/jsr.io/d79a58233f7495a8b07c0419ec5e64b6353ca3979abed89b309abc2f76e4e2fc.js new file mode 100644 index 0000000..d5307a1 --- /dev/null +++ b/vendor/gen/https/jsr.io/d79a58233f7495a8b07c0419ec5e64b6353ca3979abed89b309abc2f76e4e2fc.js @@ -0,0 +1,96 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { filterInPlace } from "./_utils.ts"; +export function deepMerge(record, other, options) { + return deepMergeInternal(record, other, new Set(), options); +} +function deepMergeInternal(record, other, seen, options) { + const result = {}; + const keys = new Set([ + ...getKeys(record), + ...getKeys(other) + ]); + // Iterate through each key of other object and use correct merging strategy + for (const key of keys){ + // Skip to prevent Object.prototype.__proto__ accessor property calls on non-Deno platforms + if (key === "__proto__") { + continue; + } + const a = record[key]; + if (!Object.hasOwn(other, key)) { + result[key] = a; + continue; + } + const b = other[key]; + if (isNonNullObject(a) && isNonNullObject(b) && !seen.has(a) && !seen.has(b)) { + seen.add(a); + seen.add(b); + result[key] = mergeObjects(a, b, seen, options); + continue; + } + // Override value + result[key] = b; + } + return result; +} +function mergeObjects(left, right, seen, options = { + arrays: "merge", + sets: "merge", + maps: "merge" +}) { + // Recursively merge mergeable objects + if (isMergeable(left) && isMergeable(right)) { + return deepMergeInternal(left, right, seen, options); + } + if (isIterable(left) && isIterable(right)) { + // Handle arrays + if (Array.isArray(left) && Array.isArray(right)) { + if (options.arrays === "merge") { + return left.concat(right); + } + return right; + } + // Handle maps + if (left instanceof Map && right instanceof Map) { + if (options.maps === "merge") { + return new Map([ + ...left, + ...right + ]); + } + return right; + } + // Handle sets + if (left instanceof Set && right instanceof Set) { + if (options.sets === "merge") { + return new Set([ + ...left, + ...right + ]); + } + return right; + } + } + return right; +} +/** + * Test whether a value is mergeable or not + * Builtins that look like objects, null and user defined classes + * are not considered mergeable (it means that reference will be copied) + */ function isMergeable(value) { + return Object.getPrototypeOf(value) === Object.prototype; +} +function isIterable(value) { + return typeof value[Symbol.iterator] === "function"; +} +function isNonNullObject(value) { + return value !== null && typeof value === "object"; +} +function getKeys(record) { + const result = Object.getOwnPropertySymbols(record); + filterInPlace(result, (key)=>Object.prototype.propertyIsEnumerable.call(record, key)); + result.push(...Object.keys(record)); + return result; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvY29sbGVjdGlvbnMvMS4xLjEvZGVlcF9tZXJnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBmaWx0ZXJJblBsYWNlIH0gZnJvbSBcIi4vX3V0aWxzLnRzXCI7XG5cbi8qKlxuICogTWVyZ2VzIHRoZSB0d28gZ2l2ZW4gcmVjb3JkcywgcmVjdXJzaXZlbHkgbWVyZ2luZyBhbnkgbmVzdGVkIHJlY29yZHMgd2l0aCB0aGVcbiAqIHNlY29uZCBjb2xsZWN0aW9uIG92ZXJyaWRpbmcgdGhlIGZpcnN0IGluIGNhc2Ugb2YgY29uZmxpY3QuXG4gKlxuICogRm9yIGFycmF5cywgbWFwcyBhbmQgc2V0cywgYSBtZXJnaW5nIHN0cmF0ZWd5IGNhbiBiZSBzcGVjaWZpZWQgdG8gZWl0aGVyXG4gKiBgcmVwbGFjZWAgdmFsdWVzLCBvciBgbWVyZ2VgIHRoZW0gaW5zdGVhZC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgVHlwZSBvZiB0aGUgZmlyc3QgcmVjb3JkXG4gKlxuICogQHBhcmFtIHJlY29yZCBGaXJzdCByZWNvcmQgdG8gbWVyZ2UuXG4gKiBAcGFyYW0gb3RoZXIgU2Vjb25kIHJlY29yZCB0byBtZXJnZS5cbiAqIEBwYXJhbSBvcHRpb25zIE1lcmdpbmcgb3B0aW9ucy5cbiAqXG4gKiBAcmV0dXJucyBBIG5ldyByZWNvcmQgd2l0aCB0aGUgbWVyZ2VkIHZhbHVlcy5cbiAqXG4gKiBAZXhhbXBsZSBNZXJnZSBvYmplY3RzXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSBcIkBzdGQvY29sbGVjdGlvbnMvZGVlcC1tZXJnZVwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3QgYSA9IHsgZm9vOiB0cnVlIH07XG4gKiBjb25zdCBiID0geyBmb286IHsgYmFyOiB0cnVlIH0gfTtcbiAqXG4gKiBjb25zdCByZXN1bHQgPSBkZWVwTWVyZ2UoYSwgYik7XG4gKlxuICogY29uc3QgZXhwZWN0ZWQgPSB7IGZvbzogeyBiYXI6IHRydWUgfSB9O1xuICpcbiAqIGFzc2VydEVxdWFscyhyZXN1bHQsIGV4cGVjdGVkKTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIE1lcmdlIGFycmF5c1xuICogYGBgdHNcbiAqIGltcG9ydCB7IGRlZXBNZXJnZSB9IGZyb20gXCJAc3RkL2NvbGxlY3Rpb25zL2RlZXAtbWVyZ2VcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IGEgPSB7IGZvbzogWzEsIDJdIH07XG4gKiBjb25zdCBiID0geyBmb286IFszLCA0XSB9O1xuICpcbiAqIGNvbnN0IHJlc3VsdCA9IGRlZXBNZXJnZShhLCBiKTtcbiAqXG4gKiBjb25zdCBleHBlY3RlZCA9IHsgZm9vOiBbMSwgMiwgMywgNF0gfTtcbiAqXG4gKiBhc3NlcnRFcXVhbHMocmVzdWx0LCBleHBlY3RlZCk7XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBNZXJnZSBtYXBzXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSBcIkBzdGQvY29sbGVjdGlvbnMvZGVlcC1tZXJnZVwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3QgYSA9IHsgZm9vOiBuZXcgTWFwKFtbXCJhXCIsIDFdXSkgfTtcbiAqIGNvbnN0IGIgPSB7IGZvbzogbmV3IE1hcChbW1wiYlwiLCAyXV0pIH07XG4gKlxuICogY29uc3QgcmVzdWx0ID0gZGVlcE1lcmdlKGEsIGIpO1xuICpcbiAqIGNvbnN0IGV4cGVjdGVkID0geyBmb286IG5ldyBNYXAoW1tcImFcIiwgMV0sIFtcImJcIiwgMl1dKSB9O1xuICpcbiAqIGFzc2VydEVxdWFscyhyZXN1bHQsIGV4cGVjdGVkKTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIE1lcmdlIHNldHNcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBkZWVwTWVyZ2UgfSBmcm9tIFwiQHN0ZC9jb2xsZWN0aW9ucy9kZWVwLW1lcmdlXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBhID0geyBmb286IG5ldyBTZXQoWzFdKSB9O1xuICogY29uc3QgYiA9IHsgZm9vOiBuZXcgU2V0KFsyXSkgfTtcbiAqXG4gKiBjb25zdCByZXN1bHQgPSBkZWVwTWVyZ2UoYSwgYik7XG4gKlxuICogY29uc3QgZXhwZWN0ZWQgPSB7IGZvbzogbmV3IFNldChbMSwgMl0pIH07XG4gKlxuICogYXNzZXJ0RXF1YWxzKHJlc3VsdCwgZXhwZWN0ZWQpO1xuICogYGBgXG4gKlxuICogQGV4YW1wbGUgTWVyZ2Ugd2l0aCBjdXN0b20gb3B0aW9uc1xuICogYGBgdHNcbiAqIGltcG9ydCB7IGRlZXBNZXJnZSB9IGZyb20gXCJAc3RkL2NvbGxlY3Rpb25zL2RlZXAtbWVyZ2VcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IGEgPSB7IGZvbzogWzEsIDJdIH07XG4gKiBjb25zdCBiID0geyBmb286IFszLCA0XSB9O1xuICpcbiAqIGNvbnN0IHJlc3VsdCA9IGRlZXBNZXJnZShhLCBiLCB7IGFycmF5czogXCJyZXBsYWNlXCIgfSk7XG4gKlxuICogY29uc3QgZXhwZWN0ZWQgPSB7IGZvbzogWzMsIDRdIH07XG4gKlxuICogYXNzZXJ0RXF1YWxzKHJlc3VsdCwgZXhwZWN0ZWQpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWVwTWVyZ2U8XG4gIFQgZXh0ZW5kcyBSZWNvcmQ8UHJvcGVydHlLZXksIHVua25vd24+LFxuPihcbiAgcmVjb3JkOiBQYXJ0aWFsPFJlYWRvbmx5PFQ+PixcbiAgb3RoZXI6IFBhcnRpYWw8UmVhZG9ubHk8VD4+LFxuICBvcHRpb25zPzogUmVhZG9ubHk8RGVlcE1lcmdlT3B0aW9ucz4sXG4pOiBUO1xuLyoqXG4gKiBNZXJnZXMgdGhlIHR3byBnaXZlbiByZWNvcmRzLCByZWN1cnNpdmVseSBtZXJnaW5nIGFueSBuZXN0ZWQgcmVjb3JkcyB3aXRoIHRoZVxuICogc2Vjb25kIGNvbGxlY3Rpb24gb3ZlcnJpZGluZyB0aGUgZmlyc3QgaW4gY2FzZSBvZiBjb25mbGljdC5cbiAqXG4gKiBGb3IgYXJyYXlzLCBtYXBzIGFuZCBzZXRzLCBhIG1lcmdpbmcgc3RyYXRlZ3kgY2FuIGJlIHNwZWNpZmllZCB0byBlaXRoZXJcbiAqIGByZXBsYWNlYCB2YWx1ZXMsIG9yIGBtZXJnZWAgdGhlbSBpbnN0ZWFkLlxuICpcbiAqIEB0eXBlUGFyYW0gVCBUeXBlIG9mIHRoZSBmaXJzdCByZWNvcmRcbiAqIEB0eXBlUGFyYW0gVSBUeXBlIG9mIHRoZSBzZWNvbmQgcmVjb3JkXG4gKiBAdHlwZVBhcmFtIE9wdGlvbnMgTWVyZ2luZyBvcHRpb25zXG4gKlxuICogQHBhcmFtIHJlY29yZCBGaXJzdCByZWNvcmQgdG8gbWVyZ2UuXG4gKiBAcGFyYW0gb3RoZXIgU2Vjb25kIHJlY29yZCB0byBtZXJnZS5cbiAqIEBwYXJhbSBvcHRpb25zIE1lcmdpbmcgb3B0aW9ucy5cbiAqXG4gKiBAcmV0dXJucyBBIG5ldyByZWNvcmQgd2l0aCB0aGUgbWVyZ2VkIHZhbHVlcy5cbiAqXG4gKiBAZXhhbXBsZSBNZXJnZSBvYmplY3RzXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSBcIkBzdGQvY29sbGVjdGlvbnMvZGVlcC1tZXJnZVwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3QgYSA9IHsgZm9vOiB0cnVlIH07XG4gKiBjb25zdCBiID0geyBmb286IHsgYmFyOiB0cnVlIH0gfTtcbiAqXG4gKiBjb25zdCByZXN1bHQgPSBkZWVwTWVyZ2UoYSwgYik7XG4gKlxuICogY29uc3QgZXhwZWN0ZWQgPSB7IGZvbzogeyBiYXI6IHRydWUgfSB9O1xuICpcbiAqIGFzc2VydEVxdWFscyhyZXN1bHQsIGV4cGVjdGVkKTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIE1lcmdlIGFycmF5c1xuICogYGBgdHNcbiAqIGltcG9ydCB7IGRlZXBNZXJnZSB9IGZyb20gXCJAc3RkL2NvbGxlY3Rpb25zL2RlZXAtbWVyZ2VcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IGEgPSB7IGZvbzogWzEsIDJdIH07XG4gKiBjb25zdCBiID0geyBmb286IFszLCA0XSB9O1xuICpcbiAqIGNvbnN0IHJlc3VsdCA9IGRlZXBNZXJnZShhLCBiKTtcbiAqXG4gKiBjb25zdCBleHBlY3RlZCA9IHsgZm9vOiBbMSwgMiwgMywgNF0gfTtcbiAqXG4gKiBhc3NlcnRFcXVhbHMocmVzdWx0LCBleHBlY3RlZCk7XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBNZXJnZSBtYXBzXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSBcIkBzdGQvY29sbGVjdGlvbnMvZGVlcC1tZXJnZVwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3QgYSA9IHsgZm9vOiBuZXcgTWFwKFtbXCJhXCIsIDFdXSkgfTtcbiAqIGNvbnN0IGIgPSB7IGZvbzogbmV3IE1hcChbW1wiYlwiLCAyXV0pIH07XG4gKlxuICogY29uc3QgcmVzdWx0ID0gZGVlcE1lcmdlKGEsIGIpO1xuICpcbiAqIGNvbnN0IGV4cGVjdGVkID0geyBmb286IG5ldyBNYXAoW1tcImFcIiwgMV0sIFtcImJcIiwgMl1dKSB9O1xuICpcbiAqIGFzc2VydEVxdWFscyhyZXN1bHQsIGV4cGVjdGVkKTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIE1lcmdlIHNldHNcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBkZWVwTWVyZ2UgfSBmcm9tIFwiQHN0ZC9jb2xsZWN0aW9ucy9kZWVwLW1lcmdlXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBhID0geyBmb286IG5ldyBTZXQoWzFdKSB9O1xuICogY29uc3QgYiA9IHsgZm9vOiBuZXcgU2V0KFsyXSkgfTtcbiAqXG4gKiBjb25zdCByZXN1bHQgPSBkZWVwTWVyZ2UoYSwgYik7XG4gKlxuICogY29uc3QgZXhwZWN0ZWQgPSB7IGZvbzogbmV3IFNldChbMSwgMl0pIH07XG4gKlxuICogYXNzZXJ0RXF1YWxzKHJlc3VsdCwgZXhwZWN0ZWQpO1xuICogYGBgXG4gKlxuICogQGV4YW1wbGUgTWVyZ2Ugd2l0aCBjdXN0b20gb3B0aW9uc1xuICogYGBgdHNcbiAqIGltcG9ydCB7IGRlZXBNZXJnZSB9IGZyb20gXCJAc3RkL2NvbGxlY3Rpb25zL2RlZXAtbWVyZ2VcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IGEgPSB7IGZvbzogWzEsIDJdIH07XG4gKiBjb25zdCBiID0geyBmb286IFszLCA0XSB9O1xuICpcbiAqIGNvbnN0IHJlc3VsdCA9IGRlZXBNZXJnZShhLCBiLCB7IGFycmF5czogXCJyZXBsYWNlXCIgfSk7XG4gKlxuICogY29uc3QgZXhwZWN0ZWQgPSB7IGZvbzogWzMsIDRdIH07XG4gKlxuICogYXNzZXJ0RXF1YWxzKHJlc3VsdCwgZXhwZWN0ZWQpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWVwTWVyZ2U8XG4gIFQgZXh0ZW5kcyBSZWNvcmQ8UHJvcGVydHlLZXksIHVua25vd24+LFxuICBVIGV4dGVuZHMgUmVjb3JkPFByb3BlcnR5S2V5LCB1bmtub3duPixcbiAgT3B0aW9ucyBleHRlbmRzIERlZXBNZXJnZU9wdGlvbnMsXG4+KFxuICByZWNvcmQ6IFJlYWRvbmx5PFQ+LFxuICBvdGhlcjogUmVhZG9ubHk8VT4sXG4gIG9wdGlvbnM/OiBSZWFkb25seTxPcHRpb25zPixcbik6IERlZXBNZXJnZTxULCBVLCBPcHRpb25zPjtcbmV4cG9ydCBmdW5jdGlvbiBkZWVwTWVyZ2U8XG4gIFQgZXh0ZW5kcyBSZWNvcmQ8UHJvcGVydHlLZXksIHVua25vd24+LFxuICBVIGV4dGVuZHMgUmVjb3JkPFByb3BlcnR5S2V5LCB1bmtub3duPixcbiAgT3B0aW9ucyBleHRlbmRzIERlZXBNZXJnZU9wdGlvbnMgPSB7XG4gICAgYXJyYXlzOiBcIm1lcmdlXCI7XG4gICAgc2V0czogXCJtZXJnZVwiO1xuICAgIG1hcHM6IFwibWVyZ2VcIjtcbiAgfSxcbj4oXG4gIHJlY29yZDogUmVhZG9ubHk8VD4sXG4gIG90aGVyOiBSZWFkb25seTxVPixcbiAgb3B0aW9ucz86IFJlYWRvbmx5PE9wdGlvbnM+LFxuKTogRGVlcE1lcmdlPFQsIFUsIE9wdGlvbnM+IHtcbiAgcmV0dXJuIGRlZXBNZXJnZUludGVybmFsKHJlY29yZCwgb3RoZXIsIG5ldyBTZXQoKSwgb3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIGRlZXBNZXJnZUludGVybmFsPFxuICBUIGV4dGVuZHMgUmVjb3JkPFByb3BlcnR5S2V5LCB1bmtub3duPixcbiAgVSBleHRlbmRzIFJlY29yZDxQcm9wZXJ0eUtleSwgdW5rbm93bj4sXG4gIE9wdGlvbnMgZXh0ZW5kcyBEZWVwTWVyZ2VPcHRpb25zID0ge1xuICAgIGFycmF5czogXCJtZXJnZVwiO1xuICAgIHNldHM6IFwibWVyZ2VcIjtcbiAgICBtYXBzOiBcIm1lcmdlXCI7XG4gIH0sXG4+KFxuICByZWNvcmQ6IFJlYWRvbmx5PFQ+LFxuICBvdGhlcjogUmVhZG9ubHk8VT4sXG4gIHNlZW46IFNldDxOb25OdWxsYWJsZTx1bmtub3duPj4sXG4gIG9wdGlvbnM/OiBSZWFkb25seTxPcHRpb25zPixcbikge1xuICAvLyBFeHRyYWN0IG9wdGlvbnNcbiAgLy8gQ2xvbmUgbGVmdCBvcGVyYW5kIHRvIGF2b2lkIHBlcmZvcm1pbmcgbXV0YXRpb25zIGluLXBsYWNlXG4gIHR5cGUgUmVzdWx0ID0gRGVlcE1lcmdlPFQsIFUsIE9wdGlvbnM+O1xuICBjb25zdCByZXN1bHQ6IFBhcnRpYWw8UmVzdWx0PiA9IHt9O1xuXG4gIGNvbnN0IGtleXMgPSBuZXcgU2V0KFtcbiAgICAuLi5nZXRLZXlzKHJlY29yZCksXG4gICAgLi4uZ2V0S2V5cyhvdGhlciksXG4gIF0pIGFzIFNldDxrZXlvZiBSZXN1bHQ+O1xuXG4gIC8vIEl0ZXJhdGUgdGhyb3VnaCBlYWNoIGtleSBvZiBvdGhlciBvYmplY3QgYW5kIHVzZSBjb3JyZWN0IG1lcmdpbmcgc3RyYXRlZ3lcbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgIC8vIFNraXAgdG8gcHJldmVudCBPYmplY3QucHJvdG90eXBlLl9fcHJvdG9fXyBhY2Nlc3NvciBwcm9wZXJ0eSBjYWxscyBvbiBub24tRGVubyBwbGF0Zm9ybXNcbiAgICBpZiAoa2V5ID09PSBcIl9fcHJvdG9fX1wiKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB0eXBlIFJlc3VsdE1lbWJlciA9IFJlc3VsdFt0eXBlb2Yga2V5XTtcblxuICAgIGNvbnN0IGEgPSByZWNvcmRba2V5XSBhcyBSZXN1bHRNZW1iZXI7XG5cbiAgICBpZiAoIU9iamVjdC5oYXNPd24ob3RoZXIsIGtleSkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gYTtcblxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgYiA9IG90aGVyW2tleV0gYXMgUmVzdWx0TWVtYmVyO1xuXG4gICAgaWYgKFxuICAgICAgaXNOb25OdWxsT2JqZWN0KGEpICYmIGlzTm9uTnVsbE9iamVjdChiKSAmJiAhc2Vlbi5oYXMoYSkgJiYgIXNlZW4uaGFzKGIpXG4gICAgKSB7XG4gICAgICBzZWVuLmFkZChhKTtcbiAgICAgIHNlZW4uYWRkKGIpO1xuICAgICAgcmVzdWx0W2tleV0gPSBtZXJnZU9iamVjdHMoYSwgYiwgc2Vlbiwgb3B0aW9ucykgYXMgUmVzdWx0TWVtYmVyO1xuXG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBPdmVycmlkZSB2YWx1ZVxuICAgIHJlc3VsdFtrZXldID0gYjtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQgYXMgUmVzdWx0O1xufVxuXG5mdW5jdGlvbiBtZXJnZU9iamVjdHMoXG4gIGxlZnQ6IFJlYWRvbmx5PE5vbk51bGxhYmxlPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pj4sXG4gIHJpZ2h0OiBSZWFkb25seTxOb25OdWxsYWJsZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4+LFxuICBzZWVuOiBTZXQ8Tm9uTnVsbGFibGU8dW5rbm93bj4+LFxuICBvcHRpb25zOiBSZWFkb25seTxEZWVwTWVyZ2VPcHRpb25zPiA9IHtcbiAgICBhcnJheXM6IFwibWVyZ2VcIixcbiAgICBzZXRzOiBcIm1lcmdlXCIsXG4gICAgbWFwczogXCJtZXJnZVwiLFxuICB9LFxuKTogUmVhZG9ubHk8Tm9uTnVsbGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBJdGVyYWJsZTx1bmtub3duPj4+IHtcbiAgLy8gUmVjdXJzaXZlbHkgbWVyZ2UgbWVyZ2VhYmxlIG9iamVjdHNcbiAgaWYgKGlzTWVyZ2VhYmxlKGxlZnQpICYmIGlzTWVyZ2VhYmxlKHJpZ2h0KSkge1xuICAgIHJldHVybiBkZWVwTWVyZ2VJbnRlcm5hbChsZWZ0LCByaWdodCwgc2Vlbiwgb3B0aW9ucyk7XG4gIH1cblxuICBpZiAoaXNJdGVyYWJsZShsZWZ0KSAmJiBpc0l0ZXJhYmxlKHJpZ2h0KSkge1xuICAgIC8vIEhhbmRsZSBhcnJheXNcbiAgICBpZiAoKEFycmF5LmlzQXJyYXkobGVmdCkpICYmIChBcnJheS5pc0FycmF5KHJpZ2h0KSkpIHtcbiAgICAgIGlmIChvcHRpb25zLmFycmF5cyA9PT0gXCJtZXJnZVwiKSB7XG4gICAgICAgIHJldHVybiBsZWZ0LmNvbmNhdChyaWdodCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByaWdodDtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgbWFwc1xuICAgIGlmICgobGVmdCBpbnN0YW5jZW9mIE1hcCkgJiYgKHJpZ2h0IGluc3RhbmNlb2YgTWFwKSkge1xuICAgICAgaWYgKG9wdGlvbnMubWFwcyA9PT0gXCJtZXJnZVwiKSB7XG4gICAgICAgIHJldHVybiBuZXcgTWFwKFtcbiAgICAgICAgICAuLi5sZWZ0LFxuICAgICAgICAgIC4uLnJpZ2h0LFxuICAgICAgICBdKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJpZ2h0O1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBzZXRzXG4gICAgaWYgKChsZWZ0IGluc3RhbmNlb2YgU2V0KSAmJiAocmlnaHQgaW5zdGFuY2VvZiBTZXQpKSB7XG4gICAgICBpZiAob3B0aW9ucy5zZXRzID09PSBcIm1lcmdlXCIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQoW1xuICAgICAgICAgIC4uLmxlZnQsXG4gICAgICAgICAgLi4ucmlnaHQsXG4gICAgICAgIF0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmlnaHQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJpZ2h0O1xufVxuXG4vKipcbiAqIFRlc3Qgd2hldGhlciBhIHZhbHVlIGlzIG1lcmdlYWJsZSBvciBub3RcbiAqIEJ1aWx0aW5zIHRoYXQgbG9vayBsaWtlIG9iamVjdHMsIG51bGwgYW5kIHVzZXIgZGVmaW5lZCBjbGFzc2VzXG4gKiBhcmUgbm90IGNvbnNpZGVyZWQgbWVyZ2VhYmxlIChpdCBtZWFucyB0aGF0IHJlZmVyZW5jZSB3aWxsIGJlIGNvcGllZClcbiAqL1xuZnVuY3Rpb24gaXNNZXJnZWFibGUoXG4gIHZhbHVlOiBOb25OdWxsYWJsZTx1bmtub3duPixcbik6IHZhbHVlIGlzIFJlY29yZDxQcm9wZXJ0eUtleSwgdW5rbm93bj4ge1xuICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKSA9PT0gT2JqZWN0LnByb3RvdHlwZTtcbn1cblxuZnVuY3Rpb24gaXNJdGVyYWJsZShcbiAgdmFsdWU6IE5vbk51bGxhYmxlPHVua25vd24+LFxuKTogdmFsdWUgaXMgSXRlcmFibGU8dW5rbm93bj4ge1xuICByZXR1cm4gdHlwZW9mICh2YWx1ZSBhcyBJdGVyYWJsZTx1bmtub3duPilbU3ltYm9sLml0ZXJhdG9yXSA9PT0gXCJmdW5jdGlvblwiO1xufVxuXG5mdW5jdGlvbiBpc05vbk51bGxPYmplY3QoXG4gIHZhbHVlOiB1bmtub3duLFxuKTogdmFsdWUgaXMgTm9uTnVsbGFibGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIjtcbn1cblxuZnVuY3Rpb24gZ2V0S2V5czxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KHJlY29yZDogVCk6IEFycmF5PGtleW9mIFQ+IHtcbiAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhyZWNvcmQpIGFzIEFycmF5PGtleW9mIFQ+O1xuICBmaWx0ZXJJblBsYWNlKFxuICAgIHJlc3VsdCxcbiAgICAoa2V5KSA9PiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocmVjb3JkLCBrZXkpLFxuICApO1xuICByZXN1bHQucHVzaCguLi4oT2JqZWN0LmtleXMocmVjb3JkKSBhcyBBcnJheTxrZXlvZiBUPikpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKiBNZXJnaW5nIHN0cmF0ZWd5ICovXG5leHBvcnQgdHlwZSBNZXJnaW5nU3RyYXRlZ3kgPSBcInJlcGxhY2VcIiB8IFwibWVyZ2VcIjtcblxuLyoqIE9wdGlvbnMgZm9yIHtAbGlua2NvZGUgZGVlcE1lcmdlfS4gKi9cbmV4cG9ydCB0eXBlIERlZXBNZXJnZU9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBNZXJnaW5nIHN0cmF0ZWd5IGZvciBhcnJheXNcbiAgICpcbiAgICogQGRlZmF1bHQge1wibWVyZ2VcIn1cbiAgICovXG4gIGFycmF5cz86IE1lcmdpbmdTdHJhdGVneTtcbiAgLyoqXG4gICAqIE1lcmdpbmcgc3RyYXRlZ3kgZm9yIG1hcHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtcIm1lcmdlXCJ9XG4gICAqL1xuICBtYXBzPzogTWVyZ2luZ1N0cmF0ZWd5O1xuICAvKipcbiAgICogTWVyZ2luZyBzdHJhdGVneSBmb3Igc2V0cy5cbiAgICpcbiAgICogQGRlZmF1bHQge1wibWVyZ2VcIn1cbiAgICovXG4gIHNldHM/OiBNZXJnaW5nU3RyYXRlZ3k7XG59O1xuXG4vKipcbiAqIEhvdyBkb2VzIHJlY3Vyc2l2ZSB0eXBpbmcgd29ya3MgP1xuICpcbiAqIERlZXAgbWVyZ2luZyBwcm9jZXNzIGlzIGhhbmRsZWQgdGhyb3VnaCBgRGVlcE1lcmdlPFQsIFUsIE9wdGlvbnM+YCB0eXBlLlxuICogSWYgYm90aCBUIGFuZCBVIGFyZSBSZWNvcmRzLCB3ZSByZWN1cnNpdmVseSBtZXJnZSB0aGVtLFxuICogZWxzZSB3ZSB0cmVhdCB0aGVtIGFzIHByaW1pdGl2ZXMuXG4gKlxuICogTWVyZ2luZyBwcm9jZXNzIGlzIGhhbmRsZWQgdGhyb3VnaCBgTWVyZ2U8VCwgVT5gIHR5cGUsIGluIHdoaWNoXG4gKiB3ZSByZW1vdmUgYWxsIG1hcHMsIHNldHMsIGFycmF5cyBhbmQgcmVjb3JkcyBzbyB3ZSBjYW4gaGFuZGxlIHRoZW1cbiAqIHNlcGFyYXRlbHkgZGVwZW5kaW5nIG9uIG1lcmdpbmcgc3RyYXRlZ3k6XG4gKlxuICogICAgTWVyZ2U8XG4gKiAgICAgIHtmb286IHN0cmluZ30sXG4gKiAgICAgIHtiYXI6IHN0cmluZywgYmF6OiBTZXQ8dW5rbm93bj59LFxuICogICAgPiAvLyBcImZvb1wiIGFuZCBcImJhclwiIHdpbGwgYmUgaGFuZGxlZCB3aXRoIGBNZXJnZVJpZ2h0T21pdENvbXBsZXhlc2BcbiAqICAgICAgLy8gXCJiYXpcIiB3aWxsIGJlIGhhbmRsZWQgd2l0aCBgTWVyZ2VBbGwqYCB0eXBlXG4gKlxuICogYE1lcmdlUmlnaHRPbWl0Q29tcGxleGVzPFQsIFU+YCB3aWxsIGRvIHRoZSBhYm92ZTogYWxsIFQnc1xuICogZXhjbHVzaXZlIGtleXMgd2lsbCBiZSBrZXB0LCB0aG91Z2ggY29tbW9uIG9uZXMgd2l0aCBVIHdpbGwgaGF2ZSB0aGVpclxuICogdHlwaW5nIG92ZXJyaWRkZW4gaW5zdGVhZDpcbiAqXG4gKiAgICBNZXJnZVJpZ2h0T21pdENvbXBsZXhlczxcbiAqICAgICAge2Zvbzogc3RyaW5nLCBiYXo6IG51bWJlcn0sXG4gKiAgICAgIHtmb286IGJvb2xlYW4sIGJhcjogc3RyaW5nfVxuICogICAgPiAvLyB7YmF6OiBudW1iZXIsIGZvbzogYm9vbGVhbiwgYmFyOiBzdHJpbmd9XG4gKiAgICAgIC8vIFwiYmF6XCIgd2FzIGtlcHQgZnJvbSBUXG4gKiAgICAgIC8vIFwiZm9vXCIgd2FzIG92ZXJyaWRkZW4gYnkgVSdzIHR5cGluZ1xuICogICAgICAvLyBcImJhclwiIHdhcyBhZGRlZCBmcm9tIFVcbiAqXG4gKiBGb3IgTWFwcywgQXJyYXlzLCBTZXRzIGFuZCBSZWNvcmRzLCB3ZSB1c2UgYE1lcmdlQWxsKjxULCBVPmAgdXRpbGl0eVxuICogdHlwZXMuIFRoZXkgd2lsbCBleHRyYWN0IHJlbGV2YW50IGRhdGEgc3RydWN0dXJlIGZyb20gYm90aCBUIGFuZCBVXG4gKiAocHJvdmlkaW5nIHRoYXQgYm90aCBoYXZlIHNhbWUgZGF0YSBkYXRhIHN0cnVjdHVyZSwgZXhjZXB0IGZvciB0eXBpbmcpLlxuICpcbiAqIEZyb20gdGhlc2UsIGAqVmFsdWVUeXBlPFQ+YCB3aWxsIGV4dHJhY3QgdmFsdWVzIChhbmQga2V5cykgdHlwZXMgdG8gYmVcbiAqIGFibGUgdG8gY3JlYXRlIGEgbmV3IGRhdGEgc3RydWN0dXJlIHdpdGggYW4gdW5pb24gdHlwaW5nIGZyb20gYm90aFxuICogZGF0YSBzdHJ1Y3R1cmUgb2YgVCBhbmQgVTpcbiAqXG4gKiAgICBNZXJnZUFsbFNldHM8XG4gKiAgICAgIHtmb286IFNldDxudW1iZXI+fSxcbiAqICAgICAge2ZvbzogU2V0PHN0cmluZz59XG4gKiAgICA+IC8vIGBTZXRWYWx1ZVR5cGVgIHdpbGwgZXh0cmFjdCBcIm51bWJlclwiIGZvciBUXG4gKiAgICAgIC8vIGBTZXRWYWx1ZVR5cGVgIHdpbGwgZXh0cmFjdCBcInN0cmluZ1wiIGZvciBVXG4gKiAgICAgIC8vIGBNZXJnZUFsbFNldHNgIHdpbGwgaW5mZXIgdHlwZSBhcyBTZXQ8bnVtYmVyfHN0cmluZz5cbiAqICAgICAgLy8gUHJvY2VzcyBpcyBzaW1pbGFyIGZvciBNYXBzLCBBcnJheXMsIGFuZCBTZXRzXG4gKlxuICogYERlZXBNZXJnZTxULCBVLCBPcHRpb25zPmAgaXMgdGFraW5nIGEgdGhpcmQgYXJndW1lbnQgdG8gYmUgaGFuZGxlIHRvXG4gKiBpbmZlciBmaW5hbCB0eXBpbmcgZGVwZW5kaW5nIG9uIG1lcmdpbmcgc3RyYXRlZ3k6XG4gKlxuICogICAgJiAoT3B0aW9ucyBleHRlbmRzIHsgc2V0czogXCJyZXBsYWNlXCIgfSA/IFBhcnRpYWxCeVR5cGU8VSwgU2V0PHVua25vd24+PlxuICogICAgICA6IE1lcmdlQWxsU2V0czxULCBVPilcbiAqXG4gKiBJbiB0aGUgYWJvdmUgbGluZSwgaWYgXCJPcHRpb25zXCIgaGF2ZSBpdHMgbWVyZ2luZyBzdHJhdGVneSBmb3IgU2V0cyBzZXQgdG9cbiAqIFwicmVwbGFjZVwiLCBpbnN0ZWFkIG9mIHBlcmZvcm1pbmcgbWVyZ2luZyBvZiBTZXRzIHR5cGUsIGl0IHdpbGwgdGFrZSB0aGVcbiAqIHR5cGluZyBmcm9tIHJpZ2h0IG9wZXJhbmQgKFUpIGluc3RlYWQsIGVmZmVjdGl2ZWx5IHJlcGxhY2luZyB0aGUgdHlwaW5nLlxuICpcbiAqIEFuIGFkZGl0aW9uYWwgbm90ZSwgd2UgdXNlIGBFeHBhbmRSZWN1cnNpdmVseTxUPmAgdXRpbGl0eSB0eXBlIHRvIGV4cGFuZFxuICogdGhlIHJlc3VsdGluZyB0eXBpbmcgYW5kIGhpZGUgYWxsIHRoZSB0eXBpbmcgbG9naWMgb2YgZGVlcCBtZXJnaW5nIHNvIGl0IGlzXG4gKiBtb3JlIHVzZXIgZnJpZW5kbHkuXG4gKi9cblxuLyoqIEZvcmNlIGludGVsbGlzZW5zZSB0byBleHBhbmQgdGhlIHR5cGluZyB0byBoaWRlIG1lcmdpbmcgdHlwaW5ncyAqL1xuZXhwb3J0IHR5cGUgRXhwYW5kUmVjdXJzaXZlbHk8VD4gPSBUIGV4dGVuZHMgUmVjb3JkPFByb3BlcnR5S2V5LCB1bmtub3duPlxuICA/IFQgZXh0ZW5kcyBpbmZlciBPID8geyBbSyBpbiBrZXlvZiBPXTogRXhwYW5kUmVjdXJzaXZlbHk8T1tLXT4gfSA6IG5ldmVyXG4gIDogVDtcblxuLyoqIEZpbHRlciBvZiBrZXlzIG1hdGNoaW5nIGEgZ2l2ZW4gdHlwZSAqL1xuZXhwb3J0IHR5cGUgUGFydGlhbEJ5VHlwZTxULCBVPiA9IHtcbiAgW0sgaW4ga2V5b2YgVCBhcyBUW0tdIGV4dGVuZHMgVSA/IEsgOiBuZXZlcl06IFRbS107XG59O1xuXG4vKiogR2V0IHNldCB2YWx1ZXMgdHlwZSAqL1xuZXhwb3J0IHR5cGUgU2V0VmFsdWVUeXBlPFQ+ID0gVCBleHRlbmRzIFNldDxpbmZlciBWPiA/IFYgOiBuZXZlcjtcblxuLyoqIE1lcmdlIGFsbCBzZXRzIHR5cGVzIGRlZmluaXRpb25zIGZyb20ga2V5cyBwcmVzZW50IGluIGJvdGggb2JqZWN0cyAqL1xuZXhwb3J0IHR5cGUgTWVyZ2VBbGxTZXRzPFxuICBULFxuICBVLFxuICBYID0gUGFydGlhbEJ5VHlwZTxULCBTZXQ8dW5rbm93bj4+LFxuICBZID0gUGFydGlhbEJ5VHlwZTxVLCBTZXQ8dW5rbm93bj4+LFxuICBaID0ge1xuICAgIFtLIGluIGtleW9mIFggJiBrZXlvZiBZXTogU2V0PFNldFZhbHVlVHlwZTxYW0tdPiB8IFNldFZhbHVlVHlwZTxZW0tdPj47XG4gIH0sXG4+ID0gWjtcblxuLyoqIEdldCBhcnJheSB2YWx1ZXMgdHlwZSAqL1xuZXhwb3J0IHR5cGUgQXJyYXlWYWx1ZVR5cGU8VD4gPSBUIGV4dGVuZHMgQXJyYXk8aW5mZXIgVj4gPyBWIDogbmV2ZXI7XG5cbi8qKiBNZXJnZSBhbGwgc2V0cyB0eXBlcyBkZWZpbml0aW9ucyBmcm9tIGtleXMgcHJlc2VudCBpbiBib3RoIG9iamVjdHMgKi9cbmV4cG9ydCB0eXBlIE1lcmdlQWxsQXJyYXlzPFxuICBULFxuICBVLFxuICBYID0gUGFydGlhbEJ5VHlwZTxULCBBcnJheTx1bmtub3duPj4sXG4gIFkgPSBQYXJ0aWFsQnlUeXBlPFUsIEFycmF5PHVua25vd24+PixcbiAgWiA9IHtcbiAgICBbSyBpbiBrZXlvZiBYICYga2V5b2YgWV06IEFycmF5PFxuICAgICAgQXJyYXlWYWx1ZVR5cGU8WFtLXT4gfCBBcnJheVZhbHVlVHlwZTxZW0tdPlxuICAgID47XG4gIH0sXG4+ID0gWjtcblxuLyoqIEdldCBtYXAgdmFsdWVzIHR5cGVzICovXG5leHBvcnQgdHlwZSBNYXBLZXlUeXBlPFQ+ID0gVCBleHRlbmRzIE1hcDxpbmZlciBLLCB1bmtub3duPiA/IEsgOiBuZXZlcjtcblxuLyoqIEdldCBtYXAgdmFsdWVzIHR5cGVzICovXG5leHBvcnQgdHlwZSBNYXBWYWx1ZVR5cGU8VD4gPSBUIGV4dGVuZHMgTWFwPHVua25vd24sIGluZmVyIFY+ID8gViA6IG5ldmVyO1xuXG4vKiogTWVyZ2UgYWxsIHNldHMgdHlwZXMgZGVmaW5pdGlvbnMgZnJvbSBrZXlzIHByZXNlbnQgaW4gYm90aCBvYmplY3RzICovXG5leHBvcnQgdHlwZSBNZXJnZUFsbE1hcHM8XG4gIFQsXG4gIFUsXG4gIFggPSBQYXJ0aWFsQnlUeXBlPFQsIE1hcDx1bmtub3duLCB1bmtub3duPj4sXG4gIFkgPSBQYXJ0aWFsQnlUeXBlPFUsIE1hcDx1bmtub3duLCB1bmtub3duPj4sXG4gIFogPSB7XG4gICAgW0sgaW4ga2V5b2YgWCAmIGtleW9mIFldOiBNYXA8XG4gICAgICBNYXBLZXlUeXBlPFhbS10+IHwgTWFwS2V5VHlwZTxZW0tdPixcbiAgICAgIE1hcFZhbHVlVHlwZTxYW0tdPiB8IE1hcFZhbHVlVHlwZTxZW0tdPlxuICAgID47XG4gIH0sXG4+ID0gWjtcblxuLyoqIE1lcmdlIGFsbCByZWNvcmRzIHR5cGVzIGRlZmluaXRpb25zIGZyb20ga2V5cyBwcmVzZW50IGluIGJvdGggb2JqZWN0cyAqL1xuZXhwb3J0IHR5cGUgTWVyZ2VBbGxSZWNvcmRzPFxuICBULFxuICBVLFxuICBPcHRpb25zLFxuICBYID0gUGFydGlhbEJ5VHlwZTxULCBSZWNvcmQ8UHJvcGVydHlLZXksIHVua25vd24+PixcbiAgWSA9IFBhcnRpYWxCeVR5cGU8VSwgUmVjb3JkPFByb3BlcnR5S2V5LCB1bmtub3duPj4sXG4gIFogPSB7XG4gICAgW0sgaW4ga2V5b2YgWCAmIGtleW9mIFldOiBEZWVwTWVyZ2U8WFtLXSwgWVtLXSwgT3B0aW9ucz47XG4gIH0sXG4+ID0gWjtcblxuLyoqIEV4Y2x1ZGUgbWFwLCBzZXRzIGFuZCBhcnJheSBmcm9tIHR5cGUgKi9cbmV4cG9ydCB0eXBlIE9taXRDb21wbGV4ZXM8VD4gPSBPbWl0PFxuICBULFxuICBrZXlvZiBQYXJ0aWFsQnlUeXBlPFxuICAgIFQsXG4gICAgfCBNYXA8dW5rbm93biwgdW5rbm93bj5cbiAgICB8IFNldDx1bmtub3duPlxuICAgIHwgQXJyYXk8dW5rbm93bj5cbiAgICB8IFJlY29yZDxQcm9wZXJ0eUtleSwgdW5rbm93bj5cbiAgPlxuPjtcblxuLyoqIE9iamVjdCB3aXRoIGtleXMgaW4gZWl0aGVyIFQgb3IgVSBidXQgbm90IGluIGJvdGggKi9cbmV4cG9ydCB0eXBlIE9iamVjdFhvcktleXM8XG4gIFQsXG4gIFUsXG4gIFggPSBPbWl0PFQsIGtleW9mIFU+ICYgT21pdDxVLCBrZXlvZiBUPixcbiAgWSA9IHsgW0sgaW4ga2V5b2YgWF06IFhbS10gfSxcbj4gPSBZO1xuXG4vKiogTWVyZ2UgdHdvIG9iamVjdHMsIHdpdGggbGVmdCBwcmVjZWRlbmNlICovXG5leHBvcnQgdHlwZSBNZXJnZVJpZ2h0T21pdENvbXBsZXhlczxcbiAgVCxcbiAgVSxcbiAgWCA9IE9iamVjdFhvcktleXM8VCwgVT4gJiBPbWl0Q29tcGxleGVzPHsgW0sgaW4ga2V5b2YgVV06IFVbS10gfT4sXG4+ID0gWDtcblxuLyoqIE1lcmdlIHR3byBvYmplY3RzICovXG5leHBvcnQgdHlwZSBNZXJnZTxcbiAgVCxcbiAgVSxcbiAgT3B0aW9ucyxcbiAgWCA9XG4gICAgJiBNZXJnZVJpZ2h0T21pdENvbXBsZXhlczxULCBVPlxuICAgICYgTWVyZ2VBbGxSZWNvcmRzPFQsIFUsIE9wdGlvbnM+XG4gICAgJiAoT3B0aW9ucyBleHRlbmRzIHsgc2V0czogXCJyZXBsYWNlXCIgfSA/IFBhcnRpYWxCeVR5cGU8VSwgU2V0PHVua25vd24+PlxuICAgICAgOiBNZXJnZUFsbFNldHM8VCwgVT4pXG4gICAgJiAoT3B0aW9ucyBleHRlbmRzIHsgYXJyYXlzOiBcInJlcGxhY2VcIiB9ID8gUGFydGlhbEJ5VHlwZTxVLCBBcnJheTx1bmtub3duPj5cbiAgICAgIDogTWVyZ2VBbGxBcnJheXM8VCwgVT4pXG4gICAgJiAoT3B0aW9ucyBleHRlbmRzIHsgbWFwczogXCJyZXBsYWNlXCIgfVxuICAgICAgPyBQYXJ0aWFsQnlUeXBlPFUsIE1hcDx1bmtub3duLCB1bmtub3duPj5cbiAgICAgIDogTWVyZ2VBbGxNYXBzPFQsIFU+KSxcbj4gPSBFeHBhbmRSZWN1cnNpdmVseTxYPjtcblxuLyoqIE1lcmdlIGRlZXBseSB0d28gb2JqZWN0cyAqL1xuZXhwb3J0IHR5cGUgRGVlcE1lcmdlPFxuICBULFxuICBVLFxuICBPcHRpb25zID0gUmVjb3JkPHN0cmluZywgTWVyZ2luZ1N0cmF0ZWd5Pixcbj4gPVxuICAvLyBIYW5kbGUgb2JqZWN0c1xuICBbVCwgVV0gZXh0ZW5kcyBbUmVjb3JkPFByb3BlcnR5S2V5LCB1bmtub3duPiwgUmVjb3JkPFByb3BlcnR5S2V5LCB1bmtub3duPl1cbiAgICA/IE1lcmdlPFQsIFUsIE9wdGlvbnM+XG4gICAgLy8g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 +// denoCacheMetadata=1449628480511107264,5044048087061807371
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/d826eac8b20d62e1cc01c34af2b1fb798b488876ac93e0c0f1abeb74c01ccbaf.js b/vendor/gen/https/jsr.io/d826eac8b20d62e1cc01c34af2b1fb798b488876ac93e0c0f1abeb74c01ccbaf.js new file mode 100644 index 0000000..d30436f --- /dev/null +++ b/vendor/gen/https/jsr.io/d826eac8b20d62e1cc01c34af2b1fb798b488876ac93e0c0f1abeb74c01ccbaf.js @@ -0,0 +1,17 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +/** + * Functions for HTML tasks such as escaping or unescaping HTML entities. + * + * ```ts + * import { unescape } from "@std/html/entities"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(unescape("<>'&AA"), "<>'&AA"); + * assertEquals(unescape("þð"), "þð"); + * ``` + * + * @module + */ export * from "./entities.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvaHRtbC8xLjAuMy9tb2QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuLyoqXG4gKiBGdW5jdGlvbnMgZm9yIEhUTUwgdGFza3Mgc3VjaCBhcyBlc2NhcGluZyBvciB1bmVzY2FwaW5nIEhUTUwgZW50aXRpZXMuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHVuZXNjYXBlIH0gZnJvbSBcIkBzdGQvaHRtbC9lbnRpdGllc1wiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogYXNzZXJ0RXF1YWxzKHVuZXNjYXBlKFwiJmx0OyZndDsmIzM5OyZhbXA7QUFcIiksIFwiPD4nJkFBXCIpO1xuICogYXNzZXJ0RXF1YWxzKHVuZXNjYXBlKFwiJnRob3JuOyZldGg7XCIpLCBcIiZ0aG9ybjsmZXRoO1wiKTtcbiAqIGBgYFxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9lbnRpdGllcy50c1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxxQ0FBcUM7QUFFckM7Ozs7Ozs7Ozs7OztDQVlDLEdBRUQsY0FBYyxnQkFBZ0IifQ== +// denoCacheMetadata=16469796219065267884,5433153822716800836
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/d915d765b92a466f7464571e00e4eae01a1b8626275715170befd60e8667063f.js b/vendor/gen/https/jsr.io/d915d765b92a466f7464571e00e4eae01a1b8626275715170befd60e8667063f.js new file mode 100644 index 0000000..8ece9ce --- /dev/null +++ b/vendor/gen/https/jsr.io/d915d765b92a466f7464571e00e4eae01a1b8626275715170befd60e8667063f.js @@ -0,0 +1,55 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { assertArg } from "../_common/normalize.ts"; +import { normalizeString } from "../_common/normalize_string.ts"; +import { isPosixPathSeparator } from "./_util.ts"; +/** + * Normalize the `path`, resolving `'..'` and `'.'` segments. + * Note that resolving these segments does not necessarily mean that all will be eliminated. + * A `'..'` at the top-level will be preserved, and an empty path is canonically `'.'`. + * + * @example Usage + * ```ts + * import { normalize } from "@std/path/posix/normalize"; + * import { assertEquals } from "@std/assert"; + * + * const path = normalize("/foo/bar//baz/asdf/quux/.."); + * assertEquals(path, "/foo/bar/baz/asdf"); + * ``` + * + * @example Working with URLs + * + * Note: This function will remove the double slashes from a URL's scheme. + * Hence, do not pass a full URL to this function. Instead, pass the pathname of + * the URL. + * + * ```ts + * import { normalize } from "@std/path/posix/normalize"; + * import { assertEquals } from "@std/assert"; + * + * const url = new URL("https://deno.land"); + * url.pathname = normalize("//std//assert//.//mod.ts"); + * assertEquals(url.href, "https://deno.land/std/assert/mod.ts"); + * + * url.pathname = normalize("std/assert/../async/retry.ts"); + * assertEquals(url.href, "https://deno.land/std/async/retry.ts"); + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `normalize` from `@std/path/posix/unstable-normalize`. + * + * @param path The path to normalize. + * @returns The normalized path. + */ export function normalize(path) { + assertArg(path); + const isAbsolute = isPosixPathSeparator(path.charCodeAt(0)); + const trailingSeparator = isPosixPathSeparator(path.charCodeAt(path.length - 1)); + // Normalize the path + path = normalizeString(path, !isAbsolute, "/", isPosixPathSeparator); + if (path.length === 0 && !isAbsolute) path = "."; + if (path.length > 0 && trailingSeparator) path += "/"; + if (isAbsolute) return `/${path}`; + return path; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9wb3NpeC9ub3JtYWxpemUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgYXNzZXJ0QXJnIH0gZnJvbSBcIi4uL19jb21tb24vbm9ybWFsaXplLnRzXCI7XG5pbXBvcnQgeyBub3JtYWxpemVTdHJpbmcgfSBmcm9tIFwiLi4vX2NvbW1vbi9ub3JtYWxpemVfc3RyaW5nLnRzXCI7XG5pbXBvcnQgeyBpc1Bvc2l4UGF0aFNlcGFyYXRvciB9IGZyb20gXCIuL191dGlsLnRzXCI7XG5cbi8qKlxuICogTm9ybWFsaXplIHRoZSBgcGF0aGAsIHJlc29sdmluZyBgJy4uJ2AgYW5kIGAnLidgIHNlZ21lbnRzLlxuICogTm90ZSB0aGF0IHJlc29sdmluZyB0aGVzZSBzZWdtZW50cyBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIHRoYXQgYWxsIHdpbGwgYmUgZWxpbWluYXRlZC5cbiAqIEEgYCcuLidgIGF0IHRoZSB0b3AtbGV2ZWwgd2lsbCBiZSBwcmVzZXJ2ZWQsIGFuZCBhbiBlbXB0eSBwYXRoIGlzIGNhbm9uaWNhbGx5IGAnLidgLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIkBzdGQvcGF0aC9wb3NpeC9ub3JtYWxpemVcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IHBhdGggPSBub3JtYWxpemUoXCIvZm9vL2Jhci8vYmF6L2FzZGYvcXV1eC8uLlwiKTtcbiAqIGFzc2VydEVxdWFscyhwYXRoLCBcIi9mb28vYmFyL2Jhei9hc2RmXCIpO1xuICogYGBgXG4gKlxuICogQGV4YW1wbGUgV29ya2luZyB3aXRoIFVSTHNcbiAqXG4gKiBOb3RlOiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVtb3ZlIHRoZSBkb3VibGUgc2xhc2hlcyBmcm9tIGEgVVJMJ3Mgc2NoZW1lLlxuICogSGVuY2UsIGRvIG5vdCBwYXNzIGEgZnVsbCBVUkwgdG8gdGhpcyBmdW5jdGlvbi4gSW5zdGVhZCwgcGFzcyB0aGUgcGF0aG5hbWUgb2ZcbiAqIHRoZSBVUkwuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCJAc3RkL3BhdGgvcG9zaXgvbm9ybWFsaXplXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCB1cmwgPSBuZXcgVVJMKFwiaHR0cHM6Ly9kZW5vLmxhbmRcIik7XG4gKiB1cmwucGF0aG5hbWUgPSBub3JtYWxpemUoXCIvL3N0ZC8vYXNzZXJ0Ly8uLy9tb2QudHNcIik7XG4gKiBhc3NlcnRFcXVhbHModXJsLmhyZWYsIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkL2Fzc2VydC9tb2QudHNcIik7XG4gKlxuICogdXJsLnBhdGhuYW1lID0gbm9ybWFsaXplKFwic3RkL2Fzc2VydC8uLi9hc3luYy9yZXRyeS50c1wiKTtcbiAqIGFzc2VydEVxdWFscyh1cmwuaHJlZiwgXCJodHRwczovL2Rlbm8ubGFuZC9zdGQvYXN5bmMvcmV0cnkudHNcIik7XG4gKiBgYGBcbiAqXG4gKiBOb3RlOiBJZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBmaWxlIFVSTHMsXG4gKiB1c2UgdGhlIG5ldyB2ZXJzaW9uIG9mIGBub3JtYWxpemVgIGZyb20gYEBzdGQvcGF0aC9wb3NpeC91bnN0YWJsZS1ub3JtYWxpemVgLlxuICpcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIG5vcm1hbGl6ZS5cbiAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgYXNzZXJ0QXJnKHBhdGgpO1xuXG4gIGNvbnN0IGlzQWJzb2x1dGUgPSBpc1Bvc2l4UGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMCkpO1xuICBjb25zdCB0cmFpbGluZ1NlcGFyYXRvciA9IGlzUG9zaXhQYXRoU2VwYXJhdG9yKFxuICAgIHBhdGguY2hhckNvZGVBdChwYXRoLmxlbmd0aCAtIDEpLFxuICApO1xuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgcGF0aFxuICBwYXRoID0gbm9ybWFsaXplU3RyaW5nKHBhdGgsICFpc0Fic29sdXRlLCBcIi9cIiwgaXNQb3NpeFBhdGhTZXBhcmF0b3IpO1xuXG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMCAmJiAhaXNBYnNvbHV0ZSkgcGF0aCA9IFwiLlwiO1xuICBpZiAocGF0aC5sZW5ndGggPiAwICYmIHRyYWlsaW5nU2VwYXJhdG9yKSBwYXRoICs9IFwiL1wiO1xuXG4gIGlmIChpc0Fic29sdXRlKSByZXR1cm4gYC8ke3BhdGh9YDtcbiAgcmV0dXJuIHBhdGg7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQyxTQUFTLFNBQVMsUUFBUSwwQkFBMEI7QUFDcEQsU0FBUyxlQUFlLFFBQVEsaUNBQWlDO0FBQ2pFLFNBQVMsb0JBQW9CLFFBQVEsYUFBYTtBQUVsRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXFDQyxHQUNELE9BQU8sU0FBUyxVQUFVLElBQVk7RUFDcEMsVUFBVTtFQUVWLE1BQU0sYUFBYSxxQkFBcUIsS0FBSyxVQUFVLENBQUM7RUFDeEQsTUFBTSxvQkFBb0IscUJBQ3hCLEtBQUssVUFBVSxDQUFDLEtBQUssTUFBTSxHQUFHO0VBR2hDLHFCQUFxQjtFQUNyQixPQUFPLGdCQUFnQixNQUFNLENBQUMsWUFBWSxLQUFLO0VBRS9DLElBQUksS0FBSyxNQUFNLEtBQUssS0FBSyxDQUFDLFlBQVksT0FBTztFQUM3QyxJQUFJLEtBQUssTUFBTSxHQUFHLEtBQUssbUJBQW1CLFFBQVE7RUFFbEQsSUFBSSxZQUFZLE9BQU8sQ0FBQyxDQUFDLEVBQUUsTUFBTTtFQUNqQyxPQUFPO0FBQ1QifQ== +// denoCacheMetadata=839743149299590351,14537137207803432441
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/d95b6b47a3752a1955eee0ea328ed5d221fac6faf441d37c634703d8ce779998.js b/vendor/gen/https/jsr.io/d95b6b47a3752a1955eee0ea328ed5d221fac6faf441d37c634703d8ce779998.js new file mode 100644 index 0000000..21e692a --- /dev/null +++ b/vendor/gen/https/jsr.io/d95b6b47a3752a1955eee0ea328ed5d221fac6faf441d37c634703d8ce779998.js @@ -0,0 +1,30 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { extname as posixExtname } from "./posix/extname.ts"; +import { extname as windowsExtname } from "./windows/extname.ts"; +/** + * Return the extension of the path with leading period ("."). + * + * @example Usage + * ```ts + * import { extname } from "@std/path/extname"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(extname("C:\\home\\user\\Documents\\image.png"), ".png"); + * } else { + * assertEquals(extname("/home/user/Documents/image.png"), ".png"); + * } + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `extname` from `@std/path/unstable-extname`. + * + * @param path Path with extension. + * @returns The file extension. E.g. returns `.ts` for `file.ts`. + */ export function extname(path) { + return isWindows ? windowsExtname(path) : posixExtname(path); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9leHRuYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGlzV2luZG93cyB9IGZyb20gXCIuL19vcy50c1wiO1xuaW1wb3J0IHsgZXh0bmFtZSBhcyBwb3NpeEV4dG5hbWUgfSBmcm9tIFwiLi9wb3NpeC9leHRuYW1lLnRzXCI7XG5pbXBvcnQgeyBleHRuYW1lIGFzIHdpbmRvd3NFeHRuYW1lIH0gZnJvbSBcIi4vd2luZG93cy9leHRuYW1lLnRzXCI7XG4vKipcbiAqIFJldHVybiB0aGUgZXh0ZW5zaW9uIG9mIHRoZSBwYXRoIHdpdGggbGVhZGluZyBwZXJpb2QgKFwiLlwiKS5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGV4dG5hbWUgfSBmcm9tIFwiQHN0ZC9wYXRoL2V4dG5hbWVcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGlmIChEZW5vLmJ1aWxkLm9zID09PSBcIndpbmRvd3NcIikge1xuICogICBhc3NlcnRFcXVhbHMoZXh0bmFtZShcIkM6XFxcXGhvbWVcXFxcdXNlclxcXFxEb2N1bWVudHNcXFxcaW1hZ2UucG5nXCIpLCBcIi5wbmdcIik7XG4gKiB9IGVsc2Uge1xuICogICBhc3NlcnRFcXVhbHMoZXh0bmFtZShcIi9ob21lL3VzZXIvRG9jdW1lbnRzL2ltYWdlLnBuZ1wiKSwgXCIucG5nXCIpO1xuICogfVxuICogYGBgXG4gKlxuICogTm90ZTogSWYgeW91IGFyZSB3b3JraW5nIHdpdGggZmlsZSBVUkxzLFxuICogdXNlIHRoZSBuZXcgdmVyc2lvbiBvZiBgZXh0bmFtZWAgZnJvbSBgQHN0ZC9wYXRoL3Vuc3RhYmxlLWV4dG5hbWVgLlxuICpcbiAqIEBwYXJhbSBwYXRoIFBhdGggd2l0aCBleHRlbnNpb24uXG4gKiBAcmV0dXJucyBUaGUgZmlsZSBleHRlbnNpb24uIEUuZy4gcmV0dXJucyBgLnRzYCBmb3IgYGZpbGUudHNgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0bmFtZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gaXNXaW5kb3dzID8gd2luZG93c0V4dG5hbWUocGF0aCkgOiBwb3NpeEV4dG5hbWUocGF0aCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQyxTQUFTLFNBQVMsUUFBUSxXQUFXO0FBQ3JDLFNBQVMsV0FBVyxZQUFZLFFBQVEscUJBQXFCO0FBQzdELFNBQVMsV0FBVyxjQUFjLFFBQVEsdUJBQXVCO0FBQ2pFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW9CQyxHQUNELE9BQU8sU0FBUyxRQUFRLElBQVk7RUFDbEMsT0FBTyxZQUFZLGVBQWUsUUFBUSxhQUFhO0FBQ3pEIn0= +// denoCacheMetadata=2707232839414526861,12701073956733924605
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/d9a020f9d7834a4e0ea6eda653acc8ffa08e7fe1c83d3c24e266c5ad5207a15e.js b/vendor/gen/https/jsr.io/d9a020f9d7834a4e0ea6eda653acc8ffa08e7fe1c83d3c24e266c5ad5207a15e.js new file mode 100644 index 0000000..f486480 --- /dev/null +++ b/vendor/gen/https/jsr.io/d9a020f9d7834a4e0ea6eda653acc8ffa08e7fe1c83d3c24e266c5ad5207a15e.js @@ -0,0 +1,86 @@ +import { toFileUrl } from "jsr:@std/path@^1.0.6"; +import { findWorkspace, isNodeModulesResolution, urlToEsbuildResolution } from "./shared.ts"; +/** + * The Deno resolver plugin performs relative->absolute specifier resolution + * and import map resolution. + * + * If using the {@link denoLoaderPlugin}, this plugin must be used before the + * loader plugin. + */ export function denoResolverPlugin(options = {}) { + return { + name: "deno-resolver", + setup (build) { + let resolver = null; + const externalRegexps = (build.initialOptions.external ?? []).map((external)=>{ + const regexp = new RegExp("^" + external.replace(/[-/\\^$+?.()|[\]{}]/g, "\\$&").replace(/\*/g, ".*") + "$"); + return regexp; + }); + build.onStart(async function onStart() { + const cwd = build.initialOptions.absWorkingDir ?? Deno.cwd(); + const workspace = findWorkspace(cwd, build.initialOptions.entryPoints, options.configPath); + try { + const importMapURL = options.importMapURL; + let importMapValue; + if (importMapURL !== undefined) { + // If we have an import map URL, fetch it and parse it. + const resp = await fetch(importMapURL); + importMapValue = await resp.json(); + } + resolver?.free(); + resolver = null; + resolver = workspace.resolver(importMapURL, importMapValue); + } finally{ + workspace.free(); + } + }); + build.onResolve({ + filter: /.*/ + }, async function onResolve(args) { + // Pass through any node_modules internal resolution. + if (isNodeModulesResolution(args)) { + return undefined; + } + // The first pass resolver performs synchronous resolution. This + // includes relative to absolute specifier resolution and import map + // resolution. + // We have to first determine the referrer URL to use when resolving + // the specifier. This is either the importer URL, or the resolveDir + // URL if the importer is not specified (ie if the specifier is at the + // root). + let referrer; + if (args.importer !== "") { + if (args.namespace === "") { + throw new Error("[assert] namespace is empty"); + } + referrer = new URL(`${args.namespace}:${args.importer}`); + } else if (args.resolveDir !== "") { + referrer = new URL(`${toFileUrl(args.resolveDir).href}/`); + } else { + return undefined; + } + for (const externalRegexp of externalRegexps){ + if (externalRegexp.test(args.path)) { + return { + path: args.path, + external: true + }; + } + } + // We can then resolve the specifier relative to the referrer URL, using + // the workspace resolver. + const resolved = new URL(resolver.resolve(args.path, referrer.href)); + // Now pass the resolved specifier back into the resolver, for a second + // pass. Now plugins can perform any resolution they want on the fully + // resolved specifier. + const { path, namespace } = urlToEsbuildResolution(resolved); + const res = await build.resolve(path, { + namespace, + kind: args.kind + }); + return res; + }); + } + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BsdWNhL2VzYnVpbGQtZGVuby1sb2FkZXIvMC4xMS4xL3NyYy9wbHVnaW5fZGVub19yZXNvbHZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIGVzYnVpbGQgZnJvbSBcIi4vZXNidWlsZF90eXBlcy50c1wiO1xuaW1wb3J0IHsgdG9GaWxlVXJsIH0gZnJvbSBcImpzcjpAc3RkL3BhdGhAXjEuMC42XCI7XG5pbXBvcnQge1xuICBmaW5kV29ya3NwYWNlLFxuICBpc05vZGVNb2R1bGVzUmVzb2x1dGlvbixcbiAgdXJsVG9Fc2J1aWxkUmVzb2x1dGlvbixcbn0gZnJvbSBcIi4vc2hhcmVkLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFdhc21Xb3Jrc3BhY2VSZXNvbHZlciB9IGZyb20gXCIuL3dhc20vbG9hZGVyLmdlbmVyYXRlZC5qc1wiO1xuXG4vKiogT3B0aW9ucyBmb3IgdGhlIHtAbGluayBkZW5vUmVzb2x2ZXJQbHVnaW59LiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZW5vUmVzb2x2ZXJQbHVnaW5PcHRpb25zIHtcbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIHBhdGggdG8gYSBkZW5vLmpzb24gY29uZmlnIGZpbGUgdG8gdXNlLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG9cbiAgICogdGhlIGAtLWNvbmZpZ2AgZmxhZyB0byB0aGUgRGVubyBleGVjdXRhYmxlLiBUaGlzIHBhdGggbXVzdCBiZSBhYnNvbHV0ZS5cbiAgICpcbiAgICogSWYgbm90IHNwZWNpZmllZCwgdGhlIHBsdWdpbiB3aWxsIGF0dGVtcHQgdG8gZmluZCB0aGUgbmVhcmVzdCBkZW5vLmpzb24gYW5kXG4gICAqIHVzZSB0aGF0LiBJZiB0aGUgZGVuby5qc29uIGlzIHBhcnQgb2YgYSB3b3Jrc3BhY2UsIHRoZSBwbHVnaW4gd2lsbFxuICAgKiBhdXRvbWF0aWNhbGx5IGZpbmQgdGhlIHdvcmtzcGFjZSByb290LlxuICAgKi9cbiAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIFNwZWNpZnkgYSBVUkwgdG8gYW4gaW1wb3J0IG1hcCBmaWxlIHRvIHVzZSB3aGVuIHJlc29sdmluZyBpbXBvcnRcbiAgICogc3BlY2lmaWVycy4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBgLS1pbXBvcnQtbWFwYCBmbGFnIHRvIHRoZSBEZW5vXG4gICAqIGV4ZWN1dGFibGUuIFRoaXMgVVJMIG1heSBiZSByZW1vdGUgb3IgYSBsb2NhbCBmaWxlIFVSTC5cbiAgICpcbiAgICogSWYgdGhpcyBvcHRpb24gaXMgbm90IHNwZWNpZmllZCwgdGhlIGRlbm8uanNvbiBjb25maWcgZmlsZSBpcyBjb25zdWx0ZWQgdG9cbiAgICogZGV0ZXJtaW5lIHdoYXQgaW1wb3J0IG1hcCB0byB1c2UsIGlmIGFueS5cbiAgICovXG4gIGltcG9ydE1hcFVSTD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgRGVubyByZXNvbHZlciBwbHVnaW4gcGVyZm9ybXMgcmVsYXRpdmUtPmFic29sdXRlIHNwZWNpZmllciByZXNvbHV0aW9uXG4gKiBhbmQgaW1wb3J0IG1hcCByZXNvbHV0aW9uLlxuICpcbiAqIElmIHVzaW5nIHRoZSB7QGxpbmsgZGVub0xvYWRlclBsdWdpbn0sIHRoaXMgcGx1Z2luIG11c3QgYmUgdXNlZCBiZWZvcmUgdGhlXG4gKiBsb2FkZXIgcGx1Z2luLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVub1Jlc29sdmVyUGx1Z2luKFxuICBvcHRpb25zOiBEZW5vUmVzb2x2ZXJQbHVnaW5PcHRpb25zID0ge30sXG4pOiBlc2J1aWxkLlBsdWdpbiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJkZW5vLXJlc29sdmVyXCIsXG4gICAgc2V0dXAoYnVpbGQpIHtcbiAgICAgIGxldCByZXNvbHZlcjogV2FzbVdvcmtzcGFjZVJlc29sdmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIGNvbnN0IGV4dGVybmFsUmVnZXhwczogUmVnRXhwW10gPSAoYnVpbGQuaW5pdGlhbE9wdGlvbnMuZXh0ZXJuYWwgPz8gW10pXG4gICAgICAgIC5tYXAoKGV4dGVybmFsKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVnZXhwID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgIFwiXlwiICsgZXh0ZXJuYWwucmVwbGFjZSgvWy0vXFxcXF4kKz8uKCl8W1xcXXt9XS9nLCBcIlxcXFwkJlwiKS5yZXBsYWNlKFxuICAgICAgICAgICAgICAvXFwqL2csXG4gICAgICAgICAgICAgIFwiLipcIixcbiAgICAgICAgICAgICkgKyBcIiRcIixcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiByZWdleHA7XG4gICAgICAgIH0pO1xuXG4gICAgICBidWlsZC5vblN0YXJ0KGFzeW5jIGZ1bmN0aW9uIG9uU3RhcnQoKSB7XG4gICAgICAgIGNvbnN0IGN3ZCA9IGJ1aWxkLmluaXRpYWxPcHRpb25zLmFic1dvcmtpbmdEaXIgPz8gRGVuby5jd2QoKTtcblxuICAgICAgICBjb25zdCB3b3Jrc3BhY2UgPSBmaW5kV29ya3NwYWNlKFxuICAgICAgICAgIGN3ZCxcbiAgICAgICAgICBidWlsZC5pbml0aWFsT3B0aW9ucy5lbnRyeVBvaW50cyxcbiAgICAgICAgICBvcHRpb25zLmNvbmZpZ1BhdGgsXG4gICAgICAgICk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgaW1wb3J0TWFwVVJMOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBvcHRpb25zLmltcG9ydE1hcFVSTDtcbiAgICAgICAgICBsZXQgaW1wb3J0TWFwVmFsdWU6IHVua25vd24gfCB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKGltcG9ydE1hcFVSTCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGFuIGltcG9ydCBtYXAgVVJMLCBmZXRjaCBpdCBhbmQgcGFyc2UgaXQuXG4gICAgICAgICAgICBjb25zdCByZXNwID0gYXdhaXQgZmV0Y2goaW1wb3J0TWFwVVJMKTtcbiAgICAgICAgICAgIGltcG9ydE1hcFZhbHVlID0gYXdhaXQgcmVzcC5qc29uKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzb2x2ZXI/LmZyZWUoKTtcbiAgICAgICAgICByZXNvbHZlciA9IG51bGw7XG4gICAgICAgICAgcmVzb2x2ZXIgPSB3b3Jrc3BhY2UucmVzb2x2ZXIoaW1wb3J0TWFwVVJMLCBpbXBvcnRNYXBWYWx1ZSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgd29ya3NwYWNlLmZyZWUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGJ1aWxkLm9uUmVzb2x2ZSh7IGZpbHRlcjogLy4qLyB9LCBhc3luYyBmdW5jdGlvbiBvblJlc29sdmUoYXJncykge1xuICAgICAgICAvLyBQYXNzIHRocm91Z2ggYW55IG5vZGVfbW9kdWxlcyBpbnRlcm5hbCByZXNvbHV0aW9uLlxuICAgICAgICBpZiAoaXNOb2RlTW9kdWxlc1Jlc29sdXRpb24oYXJncykpIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIGZpcnN0IHBhc3MgcmVzb2x2ZXIgcGVyZm9ybXMgc3luY2hyb25vdXMgcmVzb2x1dGlvbi4gVGhpc1xuICAgICAgICAvLyBpbmNsdWRlcyByZWxhdGl2ZSB0byBhYnNvbHV0ZSBzcGVjaWZpZXIgcmVzb2x1dGlvbiBhbmQgaW1wb3J0IG1hcFxuICAgICAgICAvLyByZXNvbHV0aW9uLlxuXG4gICAgICAgIC8vIFdlIGhhdmUgdG8gZmlyc3QgZGV0ZXJtaW5lIHRoZSByZWZlcnJlciBVUkwgdG8gdXNlIHdoZW4gcmVzb2x2aW5nXG4gICAgICAgIC8vIHRoZSBzcGVjaWZpZXIuIFRoaXMgaXMgZWl0aGVyIHRoZSBpbXBvcnRlciBVUkwsIG9yIHRoZSByZXNvbHZlRGlyXG4gICAgICAgIC8vIFVSTCBpZiB0aGUgaW1wb3J0ZXIgaXMgbm90IHNwZWNpZmllZCAoaWUgaWYgdGhlIHNwZWNpZmllciBpcyBhdCB0aGVcbiAgICAgICAgLy8gcm9vdCkuXG4gICAgICAgIGxldCByZWZlcnJlcjogVVJMO1xuICAgICAgICBpZiAoYXJncy5pbXBvcnRlciAhPT0gXCJcIikge1xuICAgICAgICAgIGlmIChhcmdzLm5hbWVzcGFjZSA9PT0gXCJcIikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiW2Fzc2VydF0gbmFtZXNwYWNlIGlzIGVtcHR5XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZWZlcnJlciA9IG5ldyBVUkwoYCR7YXJncy5uYW1lc3BhY2V9OiR7YXJncy5pbXBvcnRlcn1gKTtcbiAgICAgICAgfSBlbHNlIGlmIChhcmdzLnJlc29sdmVEaXIgIT09IFwiXCIpIHtcbiAgICAgICAgICByZWZlcnJlciA9IG5ldyBVUkwoYCR7dG9GaWxlVXJsKGFyZ3MucmVzb2x2ZURpcikuaHJlZn0vYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgZXh0ZXJuYWxSZWdleHAgb2YgZXh0ZXJuYWxSZWdleHBzKSB7XG4gICAgICAgICAgaWYgKGV4dGVybmFsUmVnZXhwLnRlc3QoYXJncy5wYXRoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgcGF0aDogYXJncy5wYXRoLFxuICAgICAgICAgICAgICBleHRlcm5hbDogdHJ1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2UgY2FuIHRoZW4gcmVzb2x2ZSB0aGUgc3BlY2lmaWVyIHJlbGF0aXZlIHRvIHRoZSByZWZlcnJlciBVUkwsIHVzaW5nXG4gICAgICAgIC8vIHRoZSB3b3Jrc3BhY2UgcmVzb2x2ZXIuXG4gICAgICAgIGNvbnN0IHJlc29sdmVkID0gbmV3IFVSTChcbiAgICAgICAgICByZXNvbHZlciEucmVzb2x2ZShhcmdzLnBhdGgsIHJlZmVycmVyLmhyZWYpLFxuICAgICAgICApO1xuXG4gICAgICAgIC8vIE5vdyBwYXNzIHRoZSByZXNvbHZlZCBzcGVjaWZpZXIgYmFjayBpbnRvIHRoZSByZXNvbHZlciwgZm9yIGEgc2Vjb25kXG4gICAgICAgIC8vIHBhc3MuIE5vdyBwbHVnaW5zIGNhbiBwZXJmb3JtIGFueSByZXNvbHV0aW9uIHRoZXkgd2FudCBvbiB0aGUgZnVsbHlcbiAgICAgICAgLy8gcmVzb2x2ZWQgc3BlY2lmaWVyLlxuICAgICAgICBjb25zdCB7IHBhdGgsIG5hbWVzcGFjZSB9ID0gdXJsVG9Fc2J1aWxkUmVzb2x1dGlvbihyZXNvbHZlZCk7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGJ1aWxkLnJlc29sdmUocGF0aCwge1xuICAgICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgICBraW5kOiBhcmdzLmtpbmQsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxTQUFTLFNBQVMsUUFBUSx1QkFBdUI7QUFDakQsU0FDRSxhQUFhLEVBQ2IsdUJBQXVCLEVBQ3ZCLHNCQUFzQixRQUNqQixjQUFjO0FBeUJyQjs7Ozs7O0NBTUMsR0FDRCxPQUFPLFNBQVMsbUJBQ2QsVUFBcUMsQ0FBQyxDQUFDO0VBRXZDLE9BQU87SUFDTCxNQUFNO0lBQ04sT0FBTSxLQUFLO01BQ1QsSUFBSSxXQUF5QztNQUU3QyxNQUFNLGtCQUE0QixDQUFDLE1BQU0sY0FBYyxDQUFDLFFBQVEsSUFBSSxFQUFFLEVBQ25FLEdBQUcsQ0FBQyxDQUFDO1FBQ0osTUFBTSxTQUFTLElBQUksT0FDakIsTUFBTSxTQUFTLE9BQU8sQ0FBQyx3QkFBd0IsUUFBUSxPQUFPLENBQzVELE9BQ0EsUUFDRTtRQUVOLE9BQU87TUFDVDtNQUVGLE1BQU0sT0FBTyxDQUFDLGVBQWU7UUFDM0IsTUFBTSxNQUFNLE1BQU0sY0FBYyxDQUFDLGFBQWEsSUFBSSxLQUFLLEdBQUc7UUFFMUQsTUFBTSxZQUFZLGNBQ2hCLEtBQ0EsTUFBTSxjQUFjLENBQUMsV0FBVyxFQUNoQyxRQUFRLFVBQVU7UUFFcEIsSUFBSTtVQUNGLE1BQU0sZUFBbUMsUUFBUSxZQUFZO1VBQzdELElBQUk7VUFDSixJQUFJLGlCQUFpQixXQUFXO1lBQzlCLHVEQUF1RDtZQUN2RCxNQUFNLE9BQU8sTUFBTSxNQUFNO1lBQ3pCLGlCQUFpQixNQUFNLEtBQUssSUFBSTtVQUNsQztVQUVBLFVBQVU7VUFDVixXQUFXO1VBQ1gsV0FBVyxVQUFVLFFBQVEsQ0FBQyxjQUFjO1FBQzlDLFNBQVU7VUFDUixVQUFVLElBQUk7UUFDaEI7TUFDRjtNQUVBLE1BQU0sU0FBUyxDQUFDO1FBQUUsUUFBUTtNQUFLLEdBQUcsZUFBZSxVQUFVLElBQUk7UUFDN0QscURBQXFEO1FBQ3JELElBQUksd0JBQXdCLE9BQU87VUFDakMsT0FBTztRQUNUO1FBRUEsZ0VBQWdFO1FBQ2hFLG9FQUFvRTtRQUNwRSxjQUFjO1FBRWQsb0VBQW9FO1FBQ3BFLG9FQUFvRTtRQUNwRSxzRUFBc0U7UUFDdEUsU0FBUztRQUNULElBQUk7UUFDSixJQUFJLEtBQUssUUFBUSxLQUFLLElBQUk7VUFDeEIsSUFBSSxLQUFLLFNBQVMsS0FBSyxJQUFJO1lBQ3pCLE1BQU0sSUFBSSxNQUFNO1VBQ2xCO1VBQ0EsV0FBVyxJQUFJLElBQUksR0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxRQUFRLEVBQUU7UUFDekQsT0FBTyxJQUFJLEtBQUssVUFBVSxLQUFLLElBQUk7VUFDakMsV0FBVyxJQUFJLElBQUksR0FBRyxVQUFVLEtBQUssVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUQsT0FBTztVQUNMLE9BQU87UUFDVDtRQUVBLEtBQUssTUFBTSxrQkFBa0IsZ0JBQWlCO1VBQzVDLElBQUksZUFBZSxJQUFJLENBQUMsS0FBSyxJQUFJLEdBQUc7WUFDbEMsT0FBTztjQUNMLE1BQU0sS0FBSyxJQUFJO2NBQ2YsVUFBVTtZQUNaO1VBQ0Y7UUFDRjtRQUVBLHdFQUF3RTtRQUN4RSwwQkFBMEI7UUFDMUIsTUFBTSxXQUFXLElBQUksSUFDbkIsU0FBVSxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUUsU0FBUyxJQUFJO1FBRzVDLHVFQUF1RTtRQUN2RSxzRUFBc0U7UUFDdEUsc0JBQXNCO1FBQ3RCLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsdUJBQXVCO1FBQ25ELE1BQU0sTUFBTSxNQUFNLE1BQU0sT0FBTyxDQUFDLE1BQU07VUFDcEM7VUFDQSxNQUFNLEtBQUssSUFBSTtRQUNqQjtRQUNBLE9BQU87TUFDVDtJQUNGO0VBQ0Y7QUFDRiJ9 +// denoCacheMetadata=17622085895891387705,10455244205326249210
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/dc8d9f13513537a6923ece69c506c812192aefcddbda4947eaf1754852b8666e.js b/vendor/gen/https/jsr.io/dc8d9f13513537a6923ece69c506c812192aefcddbda4947eaf1754852b8666e.js new file mode 100644 index 0000000..f73284d --- /dev/null +++ b/vendor/gen/https/jsr.io/dc8d9f13513537a6923ece69c506c812192aefcddbda4947eaf1754852b8666e.js @@ -0,0 +1,34 @@ +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { DumperState } from "./_dumper_state.ts"; +import { SCHEMA_MAP } from "./_schema.ts"; +/** + * Converts a JavaScript object or value to a YAML document string. + * + * @example Usage + * ```ts + * import { stringify } from "@std/yaml/stringify"; + * import { assertEquals } from "@std/assert"; + * + * const data = { id: 1, name: "Alice" }; + * const yaml = stringify(data); + * + * assertEquals(yaml, "id: 1\nname: Alice\n"); + * ``` + * + * @throws {TypeError} If `data` contains invalid types. + * @param data The data to serialize. + * @param options The options for serialization. + * @returns A YAML string. + */ export function stringify(data, options = {}) { + const state = new DumperState({ + ...options, + schema: SCHEMA_MAP.get(options.schema) + }); + return state.stringify(data); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQveWFtbC8xLjAuNi9zdHJpbmdpZnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUG9ydGVkIGZyb20ganMteWFtbCB2My4xMy4xOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVjYS9qcy15YW1sL2NvbW1pdC82NjVhYWRkYTQyMzQ5ZGNhZTg2OWYxMjA0MGQ5YjEwZWYxOGQxMmRhXG4vLyBDb3B5cmlnaHQgMjAxMS0yMDE1IGJ5IFZpdGFseSBQdXpyaW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgRHVtcGVyU3RhdGUgfSBmcm9tIFwiLi9fZHVtcGVyX3N0YXRlLnRzXCI7XG5pbXBvcnQgeyBTQ0hFTUFfTUFQLCB0eXBlIFNjaGVtYVR5cGUgfSBmcm9tIFwiLi9fc2NoZW1hLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFN0eWxlVmFyaWFudCB9IGZyb20gXCIuL190eXBlLnRzXCI7XG5cbmV4cG9ydCB0eXBlIHsgU2NoZW1hVHlwZSwgU3R5bGVWYXJpYW50IH07XG5cbi8qKiBPcHRpb25zIGZvciB7QGxpbmtjb2RlIHN0cmluZ2lmeX0uICovXG5leHBvcnQgdHlwZSBTdHJpbmdpZnlPcHRpb25zID0ge1xuICAvKipcbiAgICogSW5kZW50YXRpb24gd2lkdGggdG8gdXNlIChpbiBzcGFjZXMpLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7Mn1cbiAgICovXG4gIGluZGVudD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFdoZW4gdHJ1ZSwgYWRkcyBhbiBpbmRlbnRhdGlvbiBsZXZlbCB0byBhcnJheSBlbGVtZW50cy5cbiAgICpcbiAgICogQGRlZmF1bHQge3RydWV9XG4gICAqL1xuICBhcnJheUluZGVudD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEbyBub3QgdGhyb3cgb24gaW52YWxpZCB0eXBlcyAobGlrZSBmdW5jdGlvbiBpbiB0aGUgc2FmZSBzY2hlbWEpIGFuZCBza2lwXG4gICAqIHBhaXJzIGFuZCBzaW5nbGUgdmFsdWVzIHdpdGggc3VjaCB0eXBlcy5cbiAgICpcbiAgICogQGRlZmF1bHQge2ZhbHNlfVxuICAgKi9cbiAgc2tpcEludmFsaWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogU3BlY2lmaWVzIGxldmVsIG9mIG5lc3RpbmcsIHdoZW4gdG8gc3dpdGNoIGZyb20gYmxvY2sgdG8gZmxvdyBzdHlsZSBmb3JcbiAgICogY29sbGVjdGlvbnMuIGAtMWAgbWVhbnMgYmxvY2sgc3R5bGUgZXZlcnl3aGVyZS5cbiAgICpcbiAgICogQGRlZmF1bHQgey0xfVxuICAgKi9cbiAgZmxvd0xldmVsPzogbnVtYmVyO1xuICAvKiogRWFjaCB0YWcgbWF5IGhhdmUgb3duIHNldCBvZiBzdHlsZXMuXHQtIFwidGFnXCIgPT4gXCJzdHlsZVwiIG1hcC4gKi9cbiAgc3R5bGVzPzogUmVjb3JkPHN0cmluZywgU3R5bGVWYXJpYW50PjtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHNjaGVtYSB0byB1c2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtcImRlZmF1bHRcIn1cbiAgICovXG4gIHNjaGVtYT86IFNjaGVtYVR5cGU7XG4gIC8qKlxuICAgKiBJZiB0cnVlLCBzb3J0IGtleXMgd2hlbiBkdW1waW5nIFlBTUwgaW4gYXNjZW5kaW5nLCBBU0NJSSBjaGFyYWN0ZXIgb3JkZXIuXG4gICAqIElmIGEgZnVuY3Rpb24sIHVzZSB0aGUgZnVuY3Rpb24gdG8gc29ydCB0aGUga2V5cy5cbiAgICogSWYgYSBmdW5jdGlvbiBpcyBzcGVjaWZpZWQsIHRoZSBmdW5jdGlvbiBtdXN0IHJldHVybiBhIG5lZ2F0aXZlIHZhbHVlXG4gICAqIGlmIGZpcnN0IGFyZ3VtZW50IGlzIGxlc3MgdGhhbiBzZWNvbmQgYXJndW1lbnQsIHplcm8gaWYgdGhleSdyZSBlcXVhbFxuICAgKiBhbmQgYSBwb3NpdGl2ZSB2YWx1ZSBvdGhlcndpc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtmYWxzZX1cbiAgICovXG4gIHNvcnRLZXlzPzogYm9vbGVhbiB8ICgoYTogc3RyaW5nLCBiOiBzdHJpbmcpID0+IG51bWJlcik7XG4gIC8qKlxuICAgKiBTZXQgbWF4IGxpbmUgd2lkdGguXG4gICAqXG4gICAqIEBkZWZhdWx0IHs4MH1cbiAgICovXG4gIGxpbmVXaWR0aD86IG51bWJlcjtcbiAgLyoqXG4gICAqIElmIGZhbHNlLCBkb24ndCBjb252ZXJ0IGR1cGxpY2F0ZSBvYmplY3RzIGludG8gcmVmZXJlbmNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQge3RydWV9XG4gICAqL1xuICB1c2VBbmNob3JzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIElmIGZhbHNlIGRvbid0IHRyeSB0byBiZSBjb21wYXRpYmxlIHdpdGggb2xkZXIgeWFtbCB2ZXJzaW9ucy5cbiAgICogQ3VycmVudGx5OiBkb24ndCBxdW90ZSBcInllc1wiLCBcIm5vXCIgYW5kIHNvIG9uLFxuICAgKiBhcyByZXF1aXJlZCBmb3IgWUFNTCAxLjEuXG4gICAqXG4gICAqIEBkZWZhdWx0IHt0cnVlfVxuICAgKi9cbiAgY29tcGF0TW9kZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJZiB0cnVlIGZsb3cgc2VxdWVuY2VzIHdpbGwgYmUgY29uZGVuc2VkLCBvbWl0dGluZyB0aGVcbiAgICogc3BhY2UgYmV0d2VlbiBga2V5OiB2YWx1ZWAgb3IgYGEsIGJgLiBFZy4gYCdbYSxiXSdgIG9yIGB7YTp7YjpjfX1gLlxuICAgKiBDYW4gYmUgdXNlZnVsIHdoZW4gdXNpbmcgeWFtbCBmb3IgcHJldHR5IFVSTCBxdWVyeSBwYXJhbXNcbiAgICogYXMgc3BhY2VzIGFyZSAlLWVuY29kZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtmYWxzZX1cbiAgICovXG4gIGNvbmRlbnNlRmxvdz86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgSmF2YVNjcmlwdCBvYmplY3Qgb3IgdmFsdWUgdG8gYSBZQU1MIGRvY3VtZW50IHN0cmluZy5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHN0cmluZ2lmeSB9IGZyb20gXCJAc3RkL3lhbWwvc3RyaW5naWZ5XCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBkYXRhID0geyBpZDogMSwgbmFtZTogXCJBbGljZVwiIH07XG4gKiBjb25zdCB5YW1sID0gc3RyaW5naWZ5KGRhdGEpO1xuICpcbiAqIGFzc2VydEVxdWFscyh5YW1sLCBcImlkOiAxXFxubmFtZTogQWxpY2VcXG5cIik7XG4gKiBgYGBcbiAqXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IElmIGBkYXRhYCBjb250YWlucyBpbnZhbGlkIHR5cGVzLlxuICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgdG8gc2VyaWFsaXplLlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHNlcmlhbGl6YXRpb24uXG4gKiBAcmV0dXJucyBBIFlBTUwgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5KFxuICBkYXRhOiB1bmtub3duLFxuICBvcHRpb25zOiBTdHJpbmdpZnlPcHRpb25zID0ge30sXG4pOiBzdHJpbmcge1xuICBjb25zdCBzdGF0ZSA9IG5ldyBEdW1wZXJTdGF0ZSh7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBzY2hlbWE6IFNDSEVNQV9NQVAuZ2V0KG9wdGlvbnMuc2NoZW1hISkhLFxuICB9KTtcbiAgcmV0dXJuIHN0YXRlLnN0cmluZ2lmeShkYXRhKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0Isb0ZBQW9GO0FBQ3BGLDBFQUEwRTtBQUMxRSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDLFNBQVMsV0FBVyxRQUFRLHFCQUFxQjtBQUNqRCxTQUFTLFVBQVUsUUFBeUIsZUFBZTtBQWtGM0Q7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWtCQyxHQUNELE9BQU8sU0FBUyxVQUNkLElBQWEsRUFDYixVQUE0QixDQUFDLENBQUM7RUFFOUIsTUFBTSxRQUFRLElBQUksWUFBWTtJQUM1QixHQUFHLE9BQU87SUFDVixRQUFRLFdBQVcsR0FBRyxDQUFDLFFBQVEsTUFBTTtFQUN2QztFQUNBLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFDekIifQ== +// denoCacheMetadata=11444281082282167122,1626304546232760790
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/ddc13a2e19371c728b8ce06c328e06608ae89b4d59bdc83bcc7fb83795b6a7b3.js b/vendor/gen/https/jsr.io/ddc13a2e19371c728b8ce06c328e06608ae89b4d59bdc83bcc7fb83795b6a7b3.js new file mode 100644 index 0000000..dd540c7 --- /dev/null +++ b/vendor/gen/https/jsr.io/ddc13a2e19371c728b8ce06c328e06608ae89b4d59bdc83bcc7fb83795b6a7b3.js @@ -0,0 +1,29 @@ +// Ported and adapted from js-yaml-js-types v1.0.0: +// https://github.com/nodeca/js-yaml-js-types/tree/ac537e7bbdd3c2cbbd9882ca3919c520c2dc022b +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2025 the Deno authors. MIT license. +const REGEXP = /^\/(?<regexp>[\s\S]+)\/(?<modifiers>[gismuy]*)$/; +export const regexp = { + tag: "tag:yaml.org,2002:js/regexp", + kind: "scalar", + resolve (data) { + if (data === null || !data.length) return false; + if (data.charAt(0) === "/") { + // Ensure regex is properly terminated + const groups = data.match(REGEXP)?.groups; + if (!groups) return false; + // Check no duplicate modifiers + const modifiers = groups.modifiers ?? ""; + if (new Set(modifiers).size < modifiers.length) return false; + } + return true; + }, + construct (data) { + const { regexp = data, modifiers = "" } = data.match(REGEXP)?.groups ?? {}; + return new RegExp(regexp, modifiers); + }, + predicate: (object)=>object instanceof RegExp, + represent: (object)=>object.toString() +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQveWFtbC8xLjAuNi9fdHlwZS9yZWdleHAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUG9ydGVkIGFuZCBhZGFwdGVkIGZyb20ganMteWFtbC1qcy10eXBlcyB2MS4wLjA6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWNhL2pzLXlhbWwtanMtdHlwZXMvdHJlZS9hYzUzN2U3YmJkZDNjMmNiYmQ5ODgyY2EzOTE5YzUyMGMyZGMwMjJiXG4vLyBDb3B5cmlnaHQgMjAxMS0yMDE1IGJ5IFZpdGFseSBQdXpyaW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cblxuaW1wb3J0IHR5cGUgeyBUeXBlIH0gZnJvbSBcIi4uL190eXBlLnRzXCI7XG5cbmNvbnN0IFJFR0VYUCA9IC9eXFwvKD88cmVnZXhwPltcXHNcXFNdKylcXC8oPzxtb2RpZmllcnM+W2dpc211eV0qKSQvO1xuXG5leHBvcnQgY29uc3QgcmVnZXhwOiBUeXBlPFwic2NhbGFyXCIsIFJlZ0V4cD4gPSB7XG4gIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjpqcy9yZWdleHBcIixcbiAga2luZDogXCJzY2FsYXJcIixcbiAgcmVzb2x2ZShkYXRhOiBzdHJpbmcgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKGRhdGEgPT09IG51bGwgfHwgIWRhdGEubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAoZGF0YS5jaGFyQXQoMCkgPT09IFwiL1wiKSB7XG4gICAgICAvLyBFbnN1cmUgcmVnZXggaXMgcHJvcGVybHkgdGVybWluYXRlZFxuICAgICAgY29uc3QgZ3JvdXBzID0gZGF0YS5tYXRjaChSRUdFWFApPy5ncm91cHM7XG4gICAgICBpZiAoIWdyb3VwcykgcmV0dXJuIGZhbHNlO1xuICAgICAgLy8gQ2hlY2sgbm8gZHVwbGljYXRlIG1vZGlmaWVyc1xuICAgICAgY29uc3QgbW9kaWZpZXJzID0gZ3JvdXBzLm1vZGlmaWVycyA/PyBcIlwiO1xuICAgICAgaWYgKG5ldyBTZXQobW9kaWZpZXJzKS5zaXplIDwgbW9kaWZpZXJzLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICBjb25zdHJ1Y3QoZGF0YTogc3RyaW5nKTogUmVnRXhwIHtcbiAgICBjb25zdCB7IHJlZ2V4cCA9IGRhdGEsIG1vZGlmaWVycyA9IFwiXCIgfSA9IGRhdGEubWF0Y2goUkVHRVhQKT8uZ3JvdXBzID8/IHt9O1xuICAgIHJldHVybiBuZXcgUmVnRXhwKHJlZ2V4cCwgbW9kaWZpZXJzKTtcbiAgfSxcbiAgcHJlZGljYXRlOiAob2JqZWN0OiB1bmtub3duKTogb2JqZWN0IGlzIFJlZ0V4cCA9PiBvYmplY3QgaW5zdGFuY2VvZiBSZWdFeHAsXG4gIHJlcHJlc2VudDogKG9iamVjdDogUmVnRXhwKTogc3RyaW5nID0+IG9iamVjdC50b1N0cmluZygpLFxufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtREFBbUQ7QUFDbkQsMkZBQTJGO0FBQzNGLDBFQUEwRTtBQUMxRSxxREFBcUQ7QUFJckQsTUFBTSxTQUFTO0FBRWYsT0FBTyxNQUFNLFNBQWlDO0VBQzVDLEtBQUs7RUFDTCxNQUFNO0VBQ04sU0FBUSxJQUFtQjtJQUN6QixJQUFJLFNBQVMsUUFBUSxDQUFDLEtBQUssTUFBTSxFQUFFLE9BQU87SUFFMUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxPQUFPLEtBQUs7TUFDMUIsc0NBQXNDO01BQ3RDLE1BQU0sU0FBUyxLQUFLLEtBQUssQ0FBQyxTQUFTO01BQ25DLElBQUksQ0FBQyxRQUFRLE9BQU87TUFDcEIsK0JBQStCO01BQy9CLE1BQU0sWUFBWSxPQUFPLFNBQVMsSUFBSTtNQUN0QyxJQUFJLElBQUksSUFBSSxXQUFXLElBQUksR0FBRyxVQUFVLE1BQU0sRUFBRSxPQUFPO0lBQ3pEO0lBRUEsT0FBTztFQUNUO0VBQ0EsV0FBVSxJQUFZO0lBQ3BCLE1BQU0sRUFBRSxTQUFTLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxHQUFHLEtBQUssS0FBSyxDQUFDLFNBQVMsVUFBVSxDQUFDO0lBQ3pFLE9BQU8sSUFBSSxPQUFPLFFBQVE7RUFDNUI7RUFDQSxXQUFXLENBQUMsU0FBc0Msa0JBQWtCO0VBQ3BFLFdBQVcsQ0FBQyxTQUEyQixPQUFPLFFBQVE7QUFDeEQsRUFBRSJ9 +// denoCacheMetadata=589118959081939963,17277926661039424991
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/dece048b74f5163eff86ab8d1a24466930b258604919dd7c5df7375baa85f2a1.js b/vendor/gen/https/jsr.io/dece048b74f5163eff86ab8d1a24466930b258604919dd7c5df7375baa85f2a1.js new file mode 100644 index 0000000..76dd290 --- /dev/null +++ b/vendor/gen/https/jsr.io/dece048b74f5163eff86ab8d1a24466930b258604919dd7c5df7375baa85f2a1.js @@ -0,0 +1,105 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +const input = Deno.stdin; +const output = Deno.stdout; +const encoder = new TextEncoder(); +const decoder = new TextDecoder(); +const LF = "\n".charCodeAt(0); // ^J - Enter on Linux +const CR = "\r".charCodeAt(0); // ^M - Enter on macOS and Windows (CRLF) +const BS = "\b".charCodeAt(0); // ^H - Backspace on Linux and Windows +const DEL = 0x7f; // ^? - Backspace on macOS +const CLR = encoder.encode("\r\u001b[K"); // Clear the current line +const MOVE_LINE_UP = encoder.encode("\r\u001b[1F"); // Move to previous line +// The `cbreak` option is not supported on Windows +const setRawOptions = Deno.build.os === "windows" ? undefined : { + cbreak: true +}; +/** + * Shows the given message and waits for the user's input. Returns the user's input as string. + * This is similar to `prompt()` but it print user's input as `*` to prevent password from being shown. + * Use an empty `mask` if you don't want to show any character. + * + * @param message The prompt message to show to the user. + * @param options The options for the prompt. + * @returns The string that was entered or `null` if stdin is not a TTY. + * + * @example Usage + * ```ts ignore + * import { promptSecret } from "@std/cli/prompt-secret"; + * + * const password = promptSecret("Please provide the password:"); + * if (password !== "some-password") { + * throw new Error("Access denied"); + * } + * ``` + */ export function promptSecret(message = "Secret", options) { + const { mask = "*", clear } = options ?? {}; + if (!input.isTerminal()) { + return null; + } + const { columns } = Deno.consoleSize(); + let previousLength = 0; + // Make the output consistent with the built-in prompt() + message += " "; + const callback = !mask ? undefined : (n)=>{ + let line = `${message}${mask.repeat(n)}`; + const currentLength = line.length; + const charsPastLineLength = line.length % columns; + if (line.length > columns) { + line = line.slice(-1 * (charsPastLineLength === 0 ? columns : charsPastLineLength)); + } + // If the user has deleted a character + if (currentLength < previousLength) { + // Then clear the current line. + output.writeSync(CLR); + if (charsPastLineLength === 0) { + // And if there's no characters on the current line, return to previous line. + output.writeSync(MOVE_LINE_UP); + } + } else { + // Always jump the cursor back to the beginning of the line unless it's the first character. + if (charsPastLineLength !== 1) { + output.writeSync(CLR); + } + } + output.writeSync(encoder.encode(line)); + previousLength = currentLength; + }; + output.writeSync(encoder.encode(message)); + Deno.stdin.setRaw(true, setRawOptions); + try { + return readLineFromStdinSync(callback); + } finally{ + if (clear) { + output.writeSync(CLR); + } else { + output.writeSync(encoder.encode("\n")); + } + Deno.stdin.setRaw(false); + } +} +// Slightly modified from Deno's runtime/js/41_prompt.js +// This implementation immediately break on CR or LF and accept callback. +// The original version waits LF when CR is received. +// https://github.com/denoland/deno/blob/e4593873a9c791238685dfbb45e64b4485884174/runtime/js/41_prompt.js#L52-L77 +function readLineFromStdinSync(callback) { + const c = new Uint8Array(1); + const buf = []; + while(true){ + const n = input.readSync(c); + if (n === null || n === 0) { + break; + } + if (c[0] === CR || c[0] === LF) { + break; + } + if (c[0] === BS || c[0] === DEL) { + buf.pop(); + } else { + buf.push(c[0]); + } + if (callback) callback(buf.length); + } + return decoder.decode(new Uint8Array(buf)); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvY2xpLzEuMC4xNy9wcm9tcHRfc2VjcmV0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG5cbmNvbnN0IGlucHV0ID0gRGVuby5zdGRpbjtcbmNvbnN0IG91dHB1dCA9IERlbm8uc3Rkb3V0O1xuY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpO1xuY29uc3QgTEYgPSBcIlxcblwiLmNoYXJDb2RlQXQoMCk7IC8vIF5KIC0gRW50ZXIgb24gTGludXhcbmNvbnN0IENSID0gXCJcXHJcIi5jaGFyQ29kZUF0KDApOyAvLyBeTSAtIEVudGVyIG9uIG1hY09TIGFuZCBXaW5kb3dzIChDUkxGKVxuY29uc3QgQlMgPSBcIlxcYlwiLmNoYXJDb2RlQXQoMCk7IC8vIF5IIC0gQmFja3NwYWNlIG9uIExpbnV4IGFuZCBXaW5kb3dzXG5jb25zdCBERUwgPSAweDdmOyAvLyBePyAtIEJhY2tzcGFjZSBvbiBtYWNPU1xuY29uc3QgQ0xSID0gZW5jb2Rlci5lbmNvZGUoXCJcXHJcXHUwMDFiW0tcIik7IC8vIENsZWFyIHRoZSBjdXJyZW50IGxpbmVcbmNvbnN0IE1PVkVfTElORV9VUCA9IGVuY29kZXIuZW5jb2RlKFwiXFxyXFx1MDAxYlsxRlwiKTsgLy8gTW92ZSB0byBwcmV2aW91cyBsaW5lXG5cbi8vIFRoZSBgY2JyZWFrYCBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzXG5jb25zdCBzZXRSYXdPcHRpb25zID0gRGVuby5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCJcbiAgPyB1bmRlZmluZWRcbiAgOiB7IGNicmVhazogdHJ1ZSB9O1xuXG4vKiogT3B0aW9ucyBmb3Ige0BsaW5rY29kZSBwcm9tcHRTZWNyZXR9LiAqL1xuZXhwb3J0IHR5cGUgUHJvbXB0U2VjcmV0T3B0aW9ucyA9IHtcbiAgLyoqIEEgY2hhcmFjdGVyIHRvIHByaW50IGluc3RlYWQgb2YgdGhlIHVzZXIncyBpbnB1dC4gKi9cbiAgbWFzaz86IHN0cmluZztcbiAgLyoqIENsZWFyIHRoZSBjdXJyZW50IGxpbmUgYWZ0ZXIgdGhlIHVzZXIncyBpbnB1dC4gKi9cbiAgY2xlYXI/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBTaG93cyB0aGUgZ2l2ZW4gbWVzc2FnZSBhbmQgd2FpdHMgZm9yIHRoZSB1c2VyJ3MgaW5wdXQuIFJldHVybnMgdGhlIHVzZXIncyBpbnB1dCBhcyBzdHJpbmcuXG4gKiBUaGlzIGlzIHNpbWlsYXIgdG8gYHByb21wdCgpYCBidXQgaXQgcHJpbnQgdXNlcidzIGlucHV0IGFzIGAqYCB0byBwcmV2ZW50IHBhc3N3b3JkIGZyb20gYmVpbmcgc2hvd24uXG4gKiBVc2UgYW4gZW1wdHkgYG1hc2tgIGlmIHlvdSBkb24ndCB3YW50IHRvIHNob3cgYW55IGNoYXJhY3Rlci5cbiAqXG4gKiBAcGFyYW0gbWVzc2FnZSBUaGUgcHJvbXB0IG1lc3NhZ2UgdG8gc2hvdyB0byB0aGUgdXNlci5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgcHJvbXB0LlxuICogQHJldHVybnMgVGhlIHN0cmluZyB0aGF0IHdhcyBlbnRlcmVkIG9yIGBudWxsYCBpZiBzdGRpbiBpcyBub3QgYSBUVFkuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzIGlnbm9yZVxuICogaW1wb3J0IHsgcHJvbXB0U2VjcmV0IH0gZnJvbSBcIkBzdGQvY2xpL3Byb21wdC1zZWNyZXRcIjtcbiAqXG4gKiBjb25zdCBwYXNzd29yZCA9IHByb21wdFNlY3JldChcIlBsZWFzZSBwcm92aWRlIHRoZSBwYXNzd29yZDpcIik7XG4gKiBpZiAocGFzc3dvcmQgIT09IFwic29tZS1wYXNzd29yZFwiKSB7XG4gKiAgIHRocm93IG5ldyBFcnJvcihcIkFjY2VzcyBkZW5pZWRcIik7XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb21wdFNlY3JldChcbiAgbWVzc2FnZSA9IFwiU2VjcmV0XCIsXG4gIG9wdGlvbnM/OiBQcm9tcHRTZWNyZXRPcHRpb25zLFxuKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IHsgbWFzayA9IFwiKlwiLCBjbGVhciB9ID0gb3B0aW9ucyA/PyB7fTtcblxuICBpZiAoIWlucHV0LmlzVGVybWluYWwoKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgeyBjb2x1bW5zIH0gPSBEZW5vLmNvbnNvbGVTaXplKCk7XG4gIGxldCBwcmV2aW91c0xlbmd0aCA9IDA7XG4gIC8vIE1ha2UgdGhlIG91dHB1dCBjb25zaXN0ZW50IHdpdGggdGhlIGJ1aWx0LWluIHByb21wdCgpXG4gIG1lc3NhZ2UgKz0gXCIgXCI7XG4gIGNvbnN0IGNhbGxiYWNrID0gIW1hc2sgPyB1bmRlZmluZWQgOiAobjogbnVtYmVyKSA9PiB7XG4gICAgbGV0IGxpbmUgPSBgJHttZXNzYWdlfSR7bWFzay5yZXBlYXQobil9YDtcbiAgICBjb25zdCBjdXJyZW50TGVuZ3RoID0gbGluZS5sZW5ndGg7XG4gICAgY29uc3QgY2hhcnNQYXN0TGluZUxlbmd0aCA9IGxpbmUubGVuZ3RoICUgY29sdW1ucztcblxuICAgIGlmIChsaW5lLmxlbmd0aCA+IGNvbHVtbnMpIHtcbiAgICAgIGxpbmUgPSBsaW5lLnNsaWNlKFxuICAgICAgICAtMSAqIChjaGFyc1Bhc3RMaW5lTGVuZ3RoID09PSAwID8gY29sdW1ucyA6IGNoYXJzUGFzdExpbmVMZW5ndGgpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgdXNlciBoYXMgZGVsZXRlZCBhIGNoYXJhY3RlclxuICAgIGlmIChjdXJyZW50TGVuZ3RoIDwgcHJldmlvdXNMZW5ndGgpIHtcbiAgICAgIC8vIFRoZW4gY2xlYXIgdGhlIGN1cnJlbnQgbGluZS5cbiAgICAgIG91dHB1dC53cml0ZVN5bmMoQ0xSKTtcbiAgICAgIGlmIChjaGFyc1Bhc3RMaW5lTGVuZ3RoID09PSAwKSB7XG4gICAgICAgIC8vIEFuZCBpZiB0aGVyZSdzIG5vIGNoYXJhY3RlcnMgb24gdGhlIGN1cnJlbnQgbGluZSwgcmV0dXJuIHRvIHByZXZpb3VzIGxpbmUuXG4gICAgICAgIG91dHB1dC53cml0ZVN5bmMoTU9WRV9MSU5FX1VQKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQWx3YXlzIGp1bXAgdGhlIGN1cnNvciBiYWNrIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUgdW5sZXNzIGl0J3MgdGhlIGZpcnN0IGNoYXJhY3Rlci5cbiAgICAgIGlmIChjaGFyc1Bhc3RMaW5lTGVuZ3RoICE9PSAxKSB7XG4gICAgICAgIG91dHB1dC53cml0ZVN5bmMoQ0xSKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBvdXRwdXQud3JpdGVTeW5jKGVuY29kZXIuZW5jb2RlKGxpbmUpKTtcblxuICAgIHByZXZpb3VzTGVuZ3RoID0gY3VycmVudExlbmd0aDtcbiAgfTtcblxuICBvdXRwdXQud3JpdGVTeW5jKGVuY29kZXIuZW5jb2RlKG1lc3NhZ2UpKTtcblxuICBEZW5vLnN0ZGluLnNldFJhdyh0cnVlLCBzZXRSYXdPcHRpb25zKTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gcmVhZExpbmVGcm9tU3RkaW5TeW5jKGNhbGxiYWNrKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAoY2xlYXIpIHtcbiAgICAgIG91dHB1dC53cml0ZVN5bmMoQ0xSKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LndyaXRlU3luYyhlbmNvZGVyLmVuY29kZShcIlxcblwiKSk7XG4gICAgfVxuICAgIERlbm8uc3RkaW4uc2V0UmF3KGZhbHNlKTtcbiAgfVxufVxuXG4vLyBTbGlnaHRseSBtb2RpZmllZCBmcm9tIERlbm8ncyBydW50aW1lL2pzLzQxX3Byb21wdC5qc1xuLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiBpbW1lZGlhdGVseSBicmVhayBvbiBDUiBvciBMRiBhbmQgYWNjZXB0IGNhbGxiYWNrLlxuLy8gVGhlIG9yaWdpbmFsIHZlcnNpb24gd2FpdHMgTEYgd2hlbiBDUiBpcyByZWNlaXZlZC5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9kZW5vbGFuZC9kZW5vL2Jsb2IvZTQ1OTM4NzNhOWM3OTEyMzg2ODVkZmJiNDVlNjRiNDQ4NTg4NDE3NC9ydW50aW1lL2pzLzQxX3Byb21wdC5qcyNMNTItTDc3XG5mdW5jdGlvbiByZWFkTGluZUZyb21TdGRpblN5bmMoY2FsbGJhY2s/OiAobjogbnVtYmVyKSA9PiB2b2lkKTogc3RyaW5nIHtcbiAgY29uc3QgYyA9IG5ldyBVaW50OEFycmF5KDEpO1xuICBjb25zdCBidWYgPSBbXTtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNvbnN0IG4gPSBpbnB1dC5yZWFkU3luYyhjKTtcbiAgICBpZiAobiA9PT0gbnVsbCB8fCBuID09PSAwKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKGNbMF0gPT09IENSIHx8IGNbMF0gPT09IExGKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKGNbMF0gPT09IEJTIHx8IGNbMF0gPT09IERFTCkge1xuICAgICAgYnVmLnBvcCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBidWYucHVzaChjWzBdISk7XG4gICAgfVxuICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soYnVmLmxlbmd0aCk7XG4gIH1cbiAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKG5ldyBVaW50OEFycmF5KGJ1ZikpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUVyRCxNQUFNLFFBQVEsS0FBSyxLQUFLO0FBQ3hCLE1BQU0sU0FBUyxLQUFLLE1BQU07QUFDMUIsTUFBTSxVQUFVLElBQUk7QUFDcEIsTUFBTSxVQUFVLElBQUk7QUFDcEIsTUFBTSxLQUFLLEtBQUssVUFBVSxDQUFDLElBQUksc0JBQXNCO0FBQ3JELE1BQU0sS0FBSyxLQUFLLFVBQVUsQ0FBQyxJQUFJLHlDQUF5QztB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 +// denoCacheMetadata=5992280026112844233,9312155248044626449
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/df1dc1df6123e8cb6e627eb6154bf1b50a90c94393ac6f4e9294177c4e289922.js b/vendor/gen/https/jsr.io/df1dc1df6123e8cb6e627eb6154bf1b50a90c94393ac6f4e9294177c4e289922.js new file mode 100644 index 0000000..2dbcb67 --- /dev/null +++ b/vendor/gen/https/jsr.io/df1dc1df6123e8cb6e627eb6154bf1b50a90c94393ac6f4e9294177c4e289922.js @@ -0,0 +1,44 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// Copyright the Browserify authors. MIT License. +// Ported mostly from https://github.com/browserify/path-browserify/ +// This module is browser compatible. +/** + * Utilities for working with POSIX-formatted paths. + * + * This module also provides some functions that help when working with URLs. + * See the documentation for examples. + * + * Codes in the examples uses POSIX path but it automatically use Windows path + * on Windows. Use methods under `posix` or `win32` object instead to handle non + * platform specific path like: + * + * ```ts + * import { fromFileUrl } from "@std/path/posix/from-file-url"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(fromFileUrl("file:///home/foo"), "/home/foo"); + * ``` + * + * @module + */ export * from "./basename.ts"; +export * from "./constants.ts"; +export * from "./dirname.ts"; +export * from "./extname.ts"; +export * from "./format.ts"; +export * from "./from_file_url.ts"; +export * from "./is_absolute.ts"; +export * from "./join.ts"; +export * from "./normalize.ts"; +export * from "./parse.ts"; +export * from "./relative.ts"; +export * from "./resolve.ts"; +export * from "./to_file_url.ts"; +export * from "./to_namespaced_path.ts"; +export * from "./common.ts"; +export * from "../types.ts"; +export * from "./glob_to_regexp.ts"; +export * from "./is_glob.ts"; +export * from "./join_globs.ts"; +export * from "./normalize_glob.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9wb3NpeC9tb2QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cbi8vIFBvcnRlZCBtb3N0bHkgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYnJvd3NlcmlmeS9wYXRoLWJyb3dzZXJpZnkvXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbi8qKlxuICogVXRpbGl0aWVzIGZvciB3b3JraW5nIHdpdGggUE9TSVgtZm9ybWF0dGVkIHBhdGhzLlxuICpcbiAqIFRoaXMgbW9kdWxlIGFsc28gcHJvdmlkZXMgc29tZSBmdW5jdGlvbnMgdGhhdCBoZWxwIHdoZW4gd29ya2luZyB3aXRoIFVSTHMuXG4gKiBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGV4YW1wbGVzLlxuICpcbiAqIENvZGVzIGluIHRoZSBleGFtcGxlcyB1c2VzIFBPU0lYIHBhdGggYnV0IGl0IGF1dG9tYXRpY2FsbHkgdXNlIFdpbmRvd3MgcGF0aFxuICogb24gV2luZG93cy4gVXNlIG1ldGhvZHMgdW5kZXIgYHBvc2l4YCBvciBgd2luMzJgIG9iamVjdCBpbnN0ZWFkIHRvIGhhbmRsZSBub25cbiAqIHBsYXRmb3JtIHNwZWNpZmljIHBhdGggbGlrZTpcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZnJvbUZpbGVVcmwgfSBmcm9tIFwiQHN0ZC9wYXRoL3Bvc2l4L2Zyb20tZmlsZS11cmxcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydEVxdWFscyhmcm9tRmlsZVVybChcImZpbGU6Ly8vaG9tZS9mb29cIiksIFwiL2hvbWUvZm9vXCIpO1xuICogYGBgXG4gKlxuICogQG1vZHVsZVxuICovXG5leHBvcnQgKiBmcm9tIFwiLi9iYXNlbmFtZS50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kaXJuYW1lLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9leHRuYW1lLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mb3JtYXQudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Zyb21fZmlsZV91cmwudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2lzX2Fic29sdXRlLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9qb2luLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ub3JtYWxpemUudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BhcnNlLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZWxhdGl2ZS50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVzb2x2ZS50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdG9fZmlsZV91cmwudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RvX25hbWVzcGFjZWRfcGF0aC50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tbW9uLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi4vdHlwZXMudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2dsb2JfdG9fcmVnZXhwLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pc19nbG9iLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9qb2luX2dsb2JzLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ub3JtYWxpemVfZ2xvYi50c1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxpREFBaUQ7QUFDakQsb0VBQW9FO0FBQ3BFLHFDQUFxQztBQUVyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBa0JDLEdBQ0QsY0FBYyxnQkFBZ0I7QUFDOUIsY0FBYyxpQkFBaUI7QUFDL0IsY0FBYyxlQUFlO0FBQzdCLGNBQWMsZUFBZTtBQUM3QixjQUFjLGNBQWM7QUFDNUIsY0FBYyxxQkFBcUI7QUFDbkMsY0FBYyxtQkFBbUI7QUFDakMsY0FBYyxZQUFZO0FBQzFCLGNBQWMsaUJBQWlCO0FBQy9CLGNBQWMsYUFBYTtBQUMzQixjQUFjLGdCQUFnQjtBQUM5QixjQUFjLGVBQWU7QUFDN0IsY0FBYyxtQkFBbUI7QUFDakMsY0FBYywwQkFBMEI7QUFDeEMsY0FBYyxjQUFjO0FBQzVCLGNBQWMsY0FBYztBQUM1QixjQUFjLHNCQUFzQjtBQUNwQyxjQUFjLGVBQWU7QUFDN0IsY0FBYyxrQkFBa0I7QUFDaEMsY0FBYyxzQkFBc0IifQ== +// denoCacheMetadata=11813043102218358025,7141832191107523264
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/e0252c2df52f0833903b247c8ad2fce6c8994514d1bebdd7030dd15b4cb1287c.js b/vendor/gen/https/jsr.io/e0252c2df52f0833903b247c8ad2fce6c8994514d1bebdd7030dd15b4cb1287c.js new file mode 100644 index 0000000..6535f69 --- /dev/null +++ b/vendor/gen/https/jsr.io/e0252c2df52f0833903b247c8ad2fce6c8994514d1bebdd7030dd15b4cb1287c.js @@ -0,0 +1,62 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { assertArg } from "../_common/dirname.ts"; +import { stripTrailingSeparators } from "../_common/strip_trailing_separators.ts"; +import { isPosixPathSeparator } from "./_util.ts"; +/** + * Return the directory path of a `path`. + * + * @example Usage + * ```ts + * import { dirname } from "@std/path/posix/dirname"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(dirname("/home/user/Documents/"), "/home/user"); + * assertEquals(dirname("/home/user/Documents/image.png"), "/home/user/Documents"); + * assertEquals(dirname("https://deno.land/std/path/mod.ts"), "https://deno.land/std/path"); + * ``` + * + * @example Working with URLs + * + * ```ts + * import { dirname } from "@std/path/posix/dirname"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(dirname("https://deno.land/std/path/mod.ts"), "https://deno.land/std/path"); + * assertEquals(dirname("https://deno.land/std/path/mod.ts?a=b"), "https://deno.land/std/path"); + * assertEquals(dirname("https://deno.land/std/path/mod.ts#header"), "https://deno.land/std/path"); + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `dirname` from `@std/path/posix/unstable-dirname`. + * + * @param path The path to get the directory from. + * @returns The directory path. + */ export function dirname(path) { + assertArg(path); + let end = -1; + let matchedNonSeparator = false; + for(let i = path.length - 1; i >= 1; --i){ + if (isPosixPathSeparator(path.charCodeAt(i))) { + if (matchedNonSeparator) { + end = i; + break; + } + } else { + matchedNonSeparator = true; + } + } + // No matches. Fallback based on provided path: + // + // - leading slashes paths + // "/foo" => "/" + // "///foo" => "/" + // - no slash path + // "foo" => "." + if (end === -1) { + return isPosixPathSeparator(path.charCodeAt(0)) ? "/" : "."; + } + return stripTrailingSeparators(path.slice(0, end), isPosixPathSeparator); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9wb3NpeC9kaXJuYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGFzc2VydEFyZyB9IGZyb20gXCIuLi9fY29tbW9uL2Rpcm5hbWUudHNcIjtcbmltcG9ydCB7IHN0cmlwVHJhaWxpbmdTZXBhcmF0b3JzIH0gZnJvbSBcIi4uL19jb21tb24vc3RyaXBfdHJhaWxpbmdfc2VwYXJhdG9ycy50c1wiO1xuaW1wb3J0IHsgaXNQb3NpeFBhdGhTZXBhcmF0b3IgfSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuXG4vKipcbiAqIFJldHVybiB0aGUgZGlyZWN0b3J5IHBhdGggb2YgYSBgcGF0aGAuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSBcIkBzdGQvcGF0aC9wb3NpeC9kaXJuYW1lXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoZGlybmFtZShcIi9ob21lL3VzZXIvRG9jdW1lbnRzL1wiKSwgXCIvaG9tZS91c2VyXCIpO1xuICogYXNzZXJ0RXF1YWxzKGRpcm5hbWUoXCIvaG9tZS91c2VyL0RvY3VtZW50cy9pbWFnZS5wbmdcIiksIFwiL2hvbWUvdXNlci9Eb2N1bWVudHNcIik7XG4gKiBhc3NlcnRFcXVhbHMoZGlybmFtZShcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9wYXRoL21vZC50c1wiKSwgXCJodHRwczovL2Rlbm8ubGFuZC9zdGQvcGF0aFwiKTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFdvcmtpbmcgd2l0aCBVUkxzXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGRpcm5hbWUgfSBmcm9tIFwiQHN0ZC9wYXRoL3Bvc2l4L2Rpcm5hbWVcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydEVxdWFscyhkaXJuYW1lKFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkL3BhdGgvbW9kLnRzXCIpLCBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9wYXRoXCIpO1xuICogYXNzZXJ0RXF1YWxzKGRpcm5hbWUoXCJodHRwczovL2Rlbm8ubGFuZC9zdGQvcGF0aC9tb2QudHM/YT1iXCIpLCBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9wYXRoXCIpO1xuICogYXNzZXJ0RXF1YWxzKGRpcm5hbWUoXCJodHRwczovL2Rlbm8ubGFuZC9zdGQvcGF0aC9tb2QudHMjaGVhZGVyXCIpLCBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZC9wYXRoXCIpO1xuICogYGBgXG4gKlxuICogTm90ZTogSWYgeW91IGFyZSB3b3JraW5nIHdpdGggZmlsZSBVUkxzLFxuICogdXNlIHRoZSBuZXcgdmVyc2lvbiBvZiBgZGlybmFtZWAgZnJvbSBgQHN0ZC9wYXRoL3Bvc2l4L3Vuc3RhYmxlLWRpcm5hbWVgLlxuICpcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIGdldCB0aGUgZGlyZWN0b3J5IGZyb20uXG4gKiBAcmV0dXJucyBUaGUgZGlyZWN0b3J5IHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXJuYW1lKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGFzc2VydEFyZyhwYXRoKTtcblxuICBsZXQgZW5kID0gLTE7XG4gIGxldCBtYXRjaGVkTm9uU2VwYXJhdG9yID0gZmFsc2U7XG5cbiAgZm9yIChsZXQgaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSAxOyAtLWkpIHtcbiAgICBpZiAoaXNQb3NpeFBhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGkpKSkge1xuICAgICAgaWYgKG1hdGNoZWROb25TZXBhcmF0b3IpIHtcbiAgICAgICAgZW5kID0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG1hdGNoZWROb25TZXBhcmF0b3IgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vIE5vIG1hdGNoZXMuIEZhbGxiYWNrIGJhc2VkIG9uIHByb3ZpZGVkIHBhdGg6XG4gIC8vXG4gIC8vIC0gbGVhZGluZyBzbGFzaGVzIHBhdGhzXG4gIC8vICAgICBcIi9mb29cIiA9PiBcIi9cIlxuICAvLyAgICAgXCIvLy9mb29cIiA9PiBcIi9cIlxuICAvLyAtIG5vIHNsYXNoIHBhdGhcbiAgLy8gICAgIFwiZm9vXCIgPT4gXCIuXCJcbiAgaWYgKGVuZCA9PT0gLTEpIHtcbiAgICByZXR1cm4gaXNQb3NpeFBhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDApKSA/IFwiL1wiIDogXCIuXCI7XG4gIH1cblxuICByZXR1cm4gc3RyaXBUcmFpbGluZ1NlcGFyYXRvcnMoXG4gICAgcGF0aC5zbGljZSgwLCBlbmQpLFxuICAgIGlzUG9zaXhQYXRoU2VwYXJhdG9yLFxuICApO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxxQ0FBcUM7QUFFckMsU0FBUyxTQUFTLFFBQVEsd0JBQXdCO0FBQ2xELFNBQVMsdUJBQXVCLFFBQVEsMENBQTBDO0FBQ2xGLFNBQVMsb0JBQW9CLFFBQVEsYUFBYTtBQUVsRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E2QkMsR0FDRCxPQUFPLFNBQVMsUUFBUSxJQUFZO0VBQ2xDLFVBQVU7RUFFVixJQUFJLE1BQU0sQ0FBQztFQUNYLElBQUksc0JBQXNCO0VBRTFCLElBQUssSUFBSSxJQUFJLEtBQUssTUFBTSxHQUFHLEdBQUcsS0FBSyxHQUFHLEVBQUUsRUFBRztJQUN6QyxJQUFJLHFCQUFxQixLQUFLLFVBQVUsQ0FBQyxLQUFLO01BQzVDLElBQUkscUJBQXFCO1FBQ3ZCLE1BQU07UUFDTjtNQUNGO0lBQ0YsT0FBTztNQUNMLHNCQUFzQjtJQUN4QjtFQUNGO0VBRUEsK0NBQStDO0VBQy9DLEVBQUU7RUFDRiwwQkFBMEI7RUFDMUIsb0JBQW9CO0VBQ3BCLHNCQUFzQjtFQUN0QixrQkFBa0I7RUFDbEIsbUJBQW1CO0VBQ25CLElBQUksUUFBUSxDQUFDLEdBQUc7SUFDZCxPQUFPLHFCQUFxQixLQUFLLFVBQVUsQ0FBQyxNQUFNLE1BQU07RUFDMUQ7RUFFQSxPQUFPLHdCQUNMLEtBQUssS0FBSyxDQUFDLEdBQUcsTUFDZDtBQUVKIn0= +// denoCacheMetadata=10439583689480123028,11985401308306844000
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/e19b3fafe881837081484810056013761fba67a9a3332254076e53ca3661e2ea.js b/vendor/gen/https/jsr.io/e19b3fafe881837081484810056013761fba67a9a3332254076e53ca3661e2ea.js new file mode 100644 index 0000000..4559219 --- /dev/null +++ b/vendor/gen/https/jsr.io/e19b3fafe881837081484810056013761fba67a9a3332254076e53ca3661e2ea.js @@ -0,0 +1,34 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { normalizeGlob as posixNormalizeGlob } from "./posix/normalize_glob.ts"; +import { normalizeGlob as windowsNormalizeGlob } from "./windows/normalize_glob.ts"; +/** + * Normalizes a glob string. + * + * Behaves like + * {@linkcode https://jsr.io/@std/path/doc/~/normalize | normalize()}, but + * doesn't collapse "**\/.." when `globstar` is true. + * + * @example Usage + * ```ts + * import { normalizeGlob } from "@std/path/normalize-glob"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(normalizeGlob("foo\\bar\\..\\baz"), "foo\\baz"); + * assertEquals(normalizeGlob("foo\\**\\..\\bar\\..\\baz", { globstar: true }), "foo\\**\\..\\baz"); + * } else { + * assertEquals(normalizeGlob("foo/bar/../baz"), "foo/baz"); + * assertEquals(normalizeGlob("foo/**\/../bar/../baz", { globstar: true }), "foo/**\/../baz"); + * } + * ``` + * + * @param glob Glob string to normalize. + * @param options Glob options. + * @returns The normalized glob string. + */ export function normalizeGlob(glob, options = {}) { + return isWindows ? windowsNormalizeGlob(glob, options) : posixNormalizeGlob(glob, options); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9ub3JtYWxpemVfZ2xvYi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgdHlwZSB7IEdsb2JPcHRpb25zIH0gZnJvbSBcIi4vX2NvbW1vbi9nbG9iX3RvX3JlZ19leHAudHNcIjtcbmltcG9ydCB7IGlzV2luZG93cyB9IGZyb20gXCIuL19vcy50c1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplR2xvYiBhcyBwb3NpeE5vcm1hbGl6ZUdsb2IgfSBmcm9tIFwiLi9wb3NpeC9ub3JtYWxpemVfZ2xvYi50c1wiO1xuaW1wb3J0IHtcbiAgbm9ybWFsaXplR2xvYiBhcyB3aW5kb3dzTm9ybWFsaXplR2xvYixcbn0gZnJvbSBcIi4vd2luZG93cy9ub3JtYWxpemVfZ2xvYi50c1wiO1xuXG5leHBvcnQgdHlwZSB7IEdsb2JPcHRpb25zIH07XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIGdsb2Igc3RyaW5nLlxuICpcbiAqIEJlaGF2ZXMgbGlrZVxuICoge0BsaW5rY29kZSBodHRwczovL2pzci5pby9Ac3RkL3BhdGgvZG9jL34vbm9ybWFsaXplIHwgbm9ybWFsaXplKCl9LCBidXRcbiAqIGRvZXNuJ3QgY29sbGFwc2UgXCIqKlxcLy4uXCIgd2hlbiBgZ2xvYnN0YXJgIGlzIHRydWUuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBub3JtYWxpemVHbG9iIH0gZnJvbSBcIkBzdGQvcGF0aC9ub3JtYWxpemUtZ2xvYlwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogaWYgKERlbm8uYnVpbGQub3MgPT09IFwid2luZG93c1wiKSB7XG4gKiAgIGFzc2VydEVxdWFscyhub3JtYWxpemVHbG9iKFwiZm9vXFxcXGJhclxcXFwuLlxcXFxiYXpcIiksIFwiZm9vXFxcXGJhelwiKTtcbiAqICAgYXNzZXJ0RXF1YWxzKG5vcm1hbGl6ZUdsb2IoXCJmb29cXFxcKipcXFxcLi5cXFxcYmFyXFxcXC4uXFxcXGJhelwiLCB7IGdsb2JzdGFyOiB0cnVlIH0pLCBcImZvb1xcXFwqKlxcXFwuLlxcXFxiYXpcIik7XG4gKiB9IGVsc2Uge1xuICogICBhc3NlcnRFcXVhbHMobm9ybWFsaXplR2xvYihcImZvby9iYXIvLi4vYmF6XCIpLCBcImZvby9iYXpcIik7XG4gKiAgIGFzc2VydEVxdWFscyhub3JtYWxpemVHbG9iKFwiZm9vLyoqXFwvLi4vYmFyLy4uL2JhelwiLCB7IGdsb2JzdGFyOiB0cnVlIH0pLCBcImZvby8qKlxcLy4uL2JhelwiKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBnbG9iIEdsb2Igc3RyaW5nIHRvIG5vcm1hbGl6ZS5cbiAqIEBwYXJhbSBvcHRpb25zIEdsb2Igb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIGdsb2Igc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplR2xvYihcbiAgZ2xvYjogc3RyaW5nLFxuICBvcHRpb25zOiBHbG9iT3B0aW9ucyA9IHt9LFxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlzV2luZG93c1xuICAgID8gd2luZG93c05vcm1hbGl6ZUdsb2IoZ2xvYiwgb3B0aW9ucylcbiAgICA6IHBvc2l4Tm9ybWFsaXplR2xvYihnbG9iLCBvcHRpb25zKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBR3JDLFNBQVMsU0FBUyxRQUFRLFdBQVc7QUFDckMsU0FBUyxpQkFBaUIsa0JBQWtCLFFBQVEsNEJBQTRCO0FBQ2hGLFNBQ0UsaUJBQWlCLG9CQUFvQixRQUNoQyw4QkFBOEI7QUFJckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXdCQyxHQUNELE9BQU8sU0FBUyxjQUNkLElBQVksRUFDWixVQUF1QixDQUFDLENBQUM7RUFFekIsT0FBTyxZQUNILHFCQUFxQixNQUFNLFdBQzNCLG1CQUFtQixNQUFNO0FBQy9CIn0= +// denoCacheMetadata=9148218092158488818,18133106659937006865
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/e2d8f9557914ded459628fbb10e89444786db537d31ed2835aabde59c3672c00.js b/vendor/gen/https/jsr.io/e2d8f9557914ded459628fbb10e89444786db537d31ed2835aabde59c3672c00.js new file mode 100644 index 0000000..35ceb80 --- /dev/null +++ b/vendor/gen/https/jsr.io/e2d8f9557914ded459628fbb10e89444786db537d31ed2835aabde59c3672c00.js @@ -0,0 +1,28 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { format as posixFormat } from "./posix/format.ts"; +import { format as windowsFormat } from "./windows/format.ts"; +/** + * Generate a path from a {@linkcode ParsedPath} object. It does the + * opposite of {@linkcode https://jsr.io/@std/path/doc/~/parse | parse()}. + * + * @example Usage + * ```ts + * import { format } from "@std/path/format"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(format({ dir: "C:\\path\\to", base: "script.ts" }), "C:\\path\\to\\script.ts"); + * } else { + * assertEquals(format({ dir: "/path/to/dir", base: "script.ts" }), "/path/to/dir/script.ts"); + * } + * ``` + * + * @param pathObject Object with path components. + * @returns The formatted path. + */ export function format(pathObject) { + return isWindows ? windowsFormat(pathObject) : posixFormat(pathObject); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9mb3JtYXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgaXNXaW5kb3dzIH0gZnJvbSBcIi4vX29zLnRzXCI7XG5pbXBvcnQgeyBmb3JtYXQgYXMgcG9zaXhGb3JtYXQgfSBmcm9tIFwiLi9wb3NpeC9mb3JtYXQudHNcIjtcbmltcG9ydCB7IGZvcm1hdCBhcyB3aW5kb3dzRm9ybWF0IH0gZnJvbSBcIi4vd2luZG93cy9mb3JtYXQudHNcIjtcbmltcG9ydCB0eXBlIHsgUGFyc2VkUGF0aCB9IGZyb20gXCIuL3R5cGVzLnRzXCI7XG5cbi8qKlxuICogR2VuZXJhdGUgYSBwYXRoIGZyb20gYSB7QGxpbmtjb2RlIFBhcnNlZFBhdGh9IG9iamVjdC4gSXQgZG9lcyB0aGVcbiAqIG9wcG9zaXRlIG9mIHtAbGlua2NvZGUgaHR0cHM6Ly9qc3IuaW8vQHN0ZC9wYXRoL2RvYy9+L3BhcnNlIHwgcGFyc2UoKX0uXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBmb3JtYXQgfSBmcm9tIFwiQHN0ZC9wYXRoL2Zvcm1hdFwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogaWYgKERlbm8uYnVpbGQub3MgPT09IFwid2luZG93c1wiKSB7XG4gKiAgIGFzc2VydEVxdWFscyhmb3JtYXQoeyBkaXI6IFwiQzpcXFxccGF0aFxcXFx0b1wiLCBiYXNlOiBcInNjcmlwdC50c1wiIH0pLCBcIkM6XFxcXHBhdGhcXFxcdG9cXFxcc2NyaXB0LnRzXCIpO1xuICogfSBlbHNlIHtcbiAqICAgYXNzZXJ0RXF1YWxzKGZvcm1hdCh7IGRpcjogXCIvcGF0aC90by9kaXJcIiwgYmFzZTogXCJzY3JpcHQudHNcIiB9KSwgXCIvcGF0aC90by9kaXIvc2NyaXB0LnRzXCIpO1xuICogfVxuICogYGBgXG4gKlxuICogQHBhcmFtIHBhdGhPYmplY3QgT2JqZWN0IHdpdGggcGF0aCBjb21wb25lbnRzLlxuICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0KHBhdGhPYmplY3Q6IFBhcnRpYWw8UGFyc2VkUGF0aD4pOiBzdHJpbmcge1xuICByZXR1cm4gaXNXaW5kb3dzID8gd2luZG93c0Zvcm1hdChwYXRoT2JqZWN0KSA6IHBvc2l4Rm9ybWF0KHBhdGhPYmplY3QpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxxQ0FBcUM7QUFFckMsU0FBUyxTQUFTLFFBQVEsV0FBVztBQUNyQyxTQUFTLFVBQVUsV0FBVyxRQUFRLG9CQUFvQjtBQUMxRCxTQUFTLFVBQVUsYUFBYSxRQUFRLHNCQUFzQjtBQUc5RDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBa0JDLEdBQ0QsT0FBTyxTQUFTLE9BQU8sVUFBK0I7RUFDcEQsT0FBTyxZQUFZLGNBQWMsY0FBYyxZQUFZO0FBQzdEIn0= +// denoCacheMetadata=3063384447962844659,4791598660734348917
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/e37ee0ef03712b5cd7f4b603b710e772efe0a22f0531ae7488706cfa7f41a468.js b/vendor/gen/https/jsr.io/e37ee0ef03712b5cd7f4b603b710e772efe0a22f0531ae7488706cfa7f41a468.js new file mode 100644 index 0000000..252cf8d --- /dev/null +++ b/vendor/gen/https/jsr.io/e37ee0ef03712b5cd7f4b603b710e772efe0a22f0531ae7488706cfa7f41a468.js @@ -0,0 +1,79 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// https://github.com/golang/go/blob/master/LICENSE +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * Port of the Go + * {@link https://github.com/golang/go/blob/go1.12.5/src/encoding/hex/hex.go | encoding/hex} + * library. + * + * ```ts + * import { + * decodeHex, + * encodeHex, + * } from "@std/encoding/hex"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(encodeHex("abc"), "616263"); + * + * assertEquals( + * decodeHex("616263"), + * new TextEncoder().encode("abc"), + * ); + * ``` + * + * @module + */ import { calcSizeHex, decode, encode } from "./_common16.ts"; +import { detach } from "./_common_detach.ts"; +const alphabet = new TextEncoder().encode("0123456789abcdef"); +const rAlphabet = new Uint8Array(128).fill(16); // alphabet.length +alphabet.forEach((byte, i)=>rAlphabet[byte] = i); +new TextEncoder().encode("ABCDEF").forEach((byte, i)=>rAlphabet[byte] = i + 10); +/** + * Converts data into a hex-encoded string. + * + * @param src The data to encode. + * + * @returns The hex-encoded string. + * + * @example Usage + * ```ts + * import { encodeHex } from "@std/encoding/hex"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(encodeHex("abc"), "616263"); + * ``` + */ export function encodeHex(src) { + if (typeof src === "string") { + src = new TextEncoder().encode(src); + } else if (src instanceof ArrayBuffer) src = new Uint8Array(src).slice(); + else src = src.slice(); + const [output, i] = detach(src, calcSizeHex(src.length)); + encode(output, i, 0, alphabet); + return new TextDecoder().decode(output); +} +/** + * Decodes the given hex-encoded string. If the input is malformed, an error is + * thrown. + * + * @param src The hex-encoded string to decode. + * + * @returns The decoded data. + * + * @example Usage + * ```ts + * import { decodeHex } from "@std/encoding/hex"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals( + * decodeHex("616263"), + * new TextEncoder().encode("abc"), + * ); + * ``` + */ export function decodeHex(src) { + const output = new TextEncoder().encode(src); + // deno-lint-ignore no-explicit-any + return new Uint8Array(output.buffer.transfer(decode(output, 0, 0, rAlphabet))); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZW5jb2RpbmcvMS4wLjEwL2hleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAwOSBUaGUgR28gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nb2xhbmcvZ28vYmxvYi9tYXN0ZXIvTElDRU5TRVxuLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuLyoqXG4gKiBQb3J0IG9mIHRoZSBHb1xuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9nb2xhbmcvZ28vYmxvYi9nbzEuMTIuNS9zcmMvZW5jb2RpbmcvaGV4L2hleC5nbyB8IGVuY29kaW5nL2hleH1cbiAqIGxpYnJhcnkuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7XG4gKiAgIGRlY29kZUhleCxcbiAqICAgZW5jb2RlSGV4LFxuICogfSBmcm9tIFwiQHN0ZC9lbmNvZGluZy9oZXhcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydEVxdWFscyhlbmNvZGVIZXgoXCJhYmNcIiksIFwiNjE2MjYzXCIpO1xuICpcbiAqIGFzc2VydEVxdWFscyhcbiAqICAgZGVjb2RlSGV4KFwiNjE2MjYzXCIpLFxuICogICBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoXCJhYmNcIiksXG4gKiApO1xuICogYGBgXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGNhbGNTaXplSGV4LCBkZWNvZGUsIGVuY29kZSB9IGZyb20gXCIuL19jb21tb24xNi50c1wiO1xuaW1wb3J0IHsgZGV0YWNoIH0gZnJvbSBcIi4vX2NvbW1vbl9kZXRhY2gudHNcIjtcbmltcG9ydCB0eXBlIHsgVWludDhBcnJheV8gfSBmcm9tIFwiLi9fdHlwZXMudHNcIjtcbmV4cG9ydCB0eXBlIHsgVWludDhBcnJheV8gfTtcblxuY29uc3QgYWxwaGFiZXQgPSBuZXcgVGV4dEVuY29kZXIoKVxuICAuZW5jb2RlKFwiMDEyMzQ1Njc4OWFiY2RlZlwiKTtcbmNvbnN0IHJBbHBoYWJldCA9IG5ldyBVaW50OEFycmF5KDEyOCkuZmlsbCgxNik7IC8vIGFscGhhYmV0Lmxlbmd0aFxuYWxwaGFiZXQuZm9yRWFjaCgoYnl0ZSwgaSkgPT4gckFscGhhYmV0W2J5dGVdID0gaSk7XG5uZXcgVGV4dEVuY29kZXIoKVxuICAuZW5jb2RlKFwiQUJDREVGXCIpXG4gIC5mb3JFYWNoKChieXRlLCBpKSA9PiByQWxwaGFiZXRbYnl0ZV0gPSBpICsgMTApO1xuXG4vKipcbiAqIENvbnZlcnRzIGRhdGEgaW50byBhIGhleC1lbmNvZGVkIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gc3JjIFRoZSBkYXRhIHRvIGVuY29kZS5cbiAqXG4gKiBAcmV0dXJucyBUaGUgaGV4LWVuY29kZWQgc3RyaW5nLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZW5jb2RlSGV4IH0gZnJvbSBcIkBzdGQvZW5jb2RpbmcvaGV4XCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoZW5jb2RlSGV4KFwiYWJjXCIpLCBcIjYxNjI2M1wiKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlSGV4KHNyYzogc3RyaW5nIHwgVWludDhBcnJheSB8IEFycmF5QnVmZmVyKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBzcmMgPT09IFwic3RyaW5nXCIpIHtcbiAgICBzcmMgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoc3JjKSBhcyBVaW50OEFycmF5XztcbiAgfSBlbHNlIGlmIChzcmMgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikgc3JjID0gbmV3IFVpbnQ4QXJyYXkoc3JjKS5zbGljZSgpO1xuICBlbHNlIHNyYyA9IHNyYy5zbGljZSgpO1xuICBjb25zdCBbb3V0cHV0LCBpXSA9IGRldGFjaChcbiAgICBzcmMgYXMgVWludDhBcnJheV8sXG4gICAgY2FsY1NpemVIZXgoKHNyYyBhcyBVaW50OEFycmF5XykubGVuZ3RoKSxcbiAgKTtcbiAgZW5jb2RlKG91dHB1dCwgaSwgMCwgYWxwaGFiZXQpO1xuICByZXR1cm4gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKG91dHB1dCk7XG59XG5cbi8qKlxuICogRGVjb2RlcyB0aGUgZ2l2ZW4gaGV4LWVuY29kZWQgc3RyaW5nLiBJZiB0aGUgaW5wdXQgaXMgbWFsZm9ybWVkLCBhbiBlcnJvciBpc1xuICogdGhyb3duLlxuICpcbiAqIEBwYXJhbSBzcmMgVGhlIGhleC1lbmNvZGVkIHN0cmluZyB0byBkZWNvZGUuXG4gKlxuICogQHJldHVybnMgVGhlIGRlY29kZWQgZGF0YS5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGRlY29kZUhleCB9IGZyb20gXCJAc3RkL2VuY29kaW5nL2hleFwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogYXNzZXJ0RXF1YWxzKFxuICogICBkZWNvZGVIZXgoXCI2MTYyNjNcIiksXG4gKiAgIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShcImFiY1wiKSxcbiAqICk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUhleChzcmM6IHN0cmluZyk6IFVpbnQ4QXJyYXlfIHtcbiAgY29uc3Qgb3V0cHV0ID0gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHNyYykgYXMgVWludDhBcnJheV87XG4gIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG4gIHJldHVybiBuZXcgVWludDhBcnJheSgob3V0cHV0LmJ1ZmZlciBhcyBhbnkpXG4gICAgLnRyYW5zZmVyKGRlY29kZShvdXRwdXQsIDAsIDAsIHJBbHBoYWJldCkpKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzREFBc0Q7QUFDdEQsbURBQW1EO0FBQ25ELHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXFCQyxHQUVELFNBQVMsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsaUJBQWlCO0FBQzdELFNBQVMsTUFBTSxRQUFRLHNCQUFzQjtBQUk3QyxNQUFNLFdBQVcsSUFBSSxjQUNsQixNQUFNLENBQUM7QUFDVixNQUFNLFlBQVksSUFBSSxXQUFXLEtBQUssSUFBSSxDQUFDLEtBQUssa0JBQWtCO0FBQ2xFLFNBQVMsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFNLFNBQVMsQ0FBQyxLQUFLLEdBQUc7QUFDaEQsSUFBSSxjQUNELE1BQU0sQ0FBQyxVQUNQLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBTSxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUk7QUFFOUM7Ozs7Ozs7Ozs7Ozs7O0NBY0MsR0FDRCxPQUFPLFNBQVMsVUFBVSxHQUFzQztFQUM5RCxJQUFJLE9BQU8sUUFBUSxVQUFVO0lBQzNCLE1BQU0sSUFBSSxjQUFjLE1BQU0sQ0FBQztFQUNqQyxPQUFPLElBQUksZUFBZSxhQUFhLE1BQU0sSUFBSSxXQUFXLEtBQUssS0FBSztPQUNqRSxNQUFNLElBQUksS0FBSztFQUNwQixNQUFNLENBQUMsUUFBUSxFQUFFLEdBQUcsT0FDbEIsS0FDQSxZQUFZLEFBQUMsSUFBb0IsTUFBTTtFQUV6QyxPQUFPLFFBQVEsR0FBRyxHQUFHO0VBQ3JCLE9BQU8sSUFBSSxjQUFjLE1BQU0sQ0FBQztBQUNsQztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FrQkMsR0FDRCxPQUFPLFNBQVMsVUFBVSxHQUFXO0VBQ25DLE1BQU0sU0FBUyxJQUFJLGNBQWMsTUFBTSxDQUFDO0VBQ3hDLG1DQUFtQztFQUNuQyxPQUFPLElBQUksV0FBVyxBQUFDLE9BQU8sTUFBTSxDQUNqQyxRQUFRLENBQUMsT0FBTyxRQUFRLEdBQUcsR0FBRztBQUNuQyJ9 +// denoCacheMetadata=2955182457507027549,11717821340321145179
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/e4e8a54551c5cfbad39fd5119b233c7dfc947e3c95708bfc07a73213a2030dea.js b/vendor/gen/https/jsr.io/e4e8a54551c5cfbad39fd5119b233c7dfc947e3c95708bfc07a73213a2030dea.js new file mode 100644 index 0000000..67d001a --- /dev/null +++ b/vendor/gen/https/jsr.io/e4e8a54551c5cfbad39fd5119b233c7dfc947e3c95708bfc07a73213a2030dea.js @@ -0,0 +1,277 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +// Bare keys may only contain ASCII letters, +// ASCII digits, underscores, and dashes (A-Za-z0-9_-). +function joinKeys(keys) { + // Dotted keys are a sequence of bare or quoted keys joined with a dot. + // This allows for grouping similar properties together: + return keys.map((str)=>{ + return str.length === 0 || str.match(/[^A-Za-z0-9_-]/) ? JSON.stringify(str) : str; + }).join("."); +} +class Dumper { + maxPad = 0; + srcObject; + output = []; + #arrayTypeCache = new Map(); + constructor(srcObjc){ + this.srcObject = srcObjc; + } + dump(fmtOptions = {}) { + // deno-lint-ignore no-explicit-any + this.output = this.#printObject(this.srcObject); + this.output = this.#format(fmtOptions); + return this.output; + } + #printObject(obj, keys = []) { + const out = []; + const props = Object.keys(obj); + const inlineProps = []; + const multilineProps = []; + for (const prop of props){ + if (this.#isSimplySerializable(obj[prop])) { + inlineProps.push(prop); + } else { + multilineProps.push(prop); + } + } + const sortedProps = inlineProps.concat(multilineProps); + for (const prop of sortedProps){ + const value = obj[prop]; + if (value instanceof Date) { + out.push(this.#dateDeclaration([ + prop + ], value)); + } else if (typeof value === "string" || value instanceof RegExp) { + out.push(this.#strDeclaration([ + prop + ], value.toString())); + } else if (typeof value === "number") { + out.push(this.#numberDeclaration([ + prop + ], value)); + } else if (typeof value === "boolean") { + out.push(this.#boolDeclaration([ + prop + ], value)); + } else if (value instanceof Array) { + const arrayType = this.#getTypeOfArray(value); + if (arrayType === "ONLY_PRIMITIVE") { + out.push(this.#arrayDeclaration([ + prop + ], value)); + } else if (arrayType === "ONLY_OBJECT_EXCLUDING_ARRAY") { + // array of objects + for(let i = 0; i < value.length; i++){ + out.push(""); + out.push(this.#headerGroup([ + ...keys, + prop + ])); + out.push(...this.#printObject(value[i], [ + ...keys, + prop + ])); + } + } else { + // this is a complex array, use the inline format. + const str = value.map((x)=>this.#printAsInlineValue(x)).join(","); + out.push(`${this.#declaration([ + prop + ])}[${str}]`); + } + } else if (typeof value === "object") { + out.push(""); + out.push(this.#header([ + ...keys, + prop + ])); + if (value) { + const toParse = value; + out.push(...this.#printObject(toParse, [ + ...keys, + prop + ])); + } + // out.push(...this._parse(value, `${path}${prop}.`)); + } + } + out.push(""); + return out; + } + #isPrimitive(value) { + return value instanceof Date || value instanceof RegExp || [ + "string", + "number", + "boolean" + ].includes(typeof value); + } + #getTypeOfArray(arr) { + if (this.#arrayTypeCache.has(arr)) { + return this.#arrayTypeCache.get(arr); + } + const type = this.#doGetTypeOfArray(arr); + this.#arrayTypeCache.set(arr, type); + return type; + } + #doGetTypeOfArray(arr) { + if (!arr.length) { + // any type should be fine + return "ONLY_PRIMITIVE"; + } + const onlyPrimitive = this.#isPrimitive(arr[0]); + if (arr[0] instanceof Array) { + return "MIXED"; + } + for(let i = 1; i < arr.length; i++){ + if (onlyPrimitive !== this.#isPrimitive(arr[i]) || arr[i] instanceof Array) { + return "MIXED"; + } + } + return onlyPrimitive ? "ONLY_PRIMITIVE" : "ONLY_OBJECT_EXCLUDING_ARRAY"; + } + #printAsInlineValue(value) { + if (value instanceof Date) { + return `"${this.#printDate(value)}"`; + } else if (typeof value === "string" || value instanceof RegExp) { + return JSON.stringify(value.toString()); + } else if (typeof value === "number") { + return value; + } else if (typeof value === "boolean") { + return value.toString(); + } else if (value instanceof Array) { + const str = value.map((x)=>this.#printAsInlineValue(x)).join(","); + return `[${str}]`; + } else if (typeof value === "object") { + if (!value) { + throw new Error("Should never reach"); + } + const str = Object.keys(value).map((key)=>{ + return `${joinKeys([ + key + ])} = ${// deno-lint-ignore no-explicit-any + this.#printAsInlineValue(value[key])}`; + }).join(","); + return `{${str}}`; + } + throw new Error("Should never reach"); + } + #isSimplySerializable(value) { + return typeof value === "string" || typeof value === "number" || typeof value === "boolean" || value instanceof RegExp || value instanceof Date || value instanceof Array && this.#getTypeOfArray(value) !== "ONLY_OBJECT_EXCLUDING_ARRAY"; + } + #header(keys) { + return `[${joinKeys(keys)}]`; + } + #headerGroup(keys) { + return `[[${joinKeys(keys)}]]`; + } + #declaration(keys) { + const title = joinKeys(keys); + if (title.length > this.maxPad) { + this.maxPad = title.length; + } + return `${title} = `; + } + #arrayDeclaration(keys, value) { + return `${this.#declaration(keys)}${JSON.stringify(value)}`; + } + #strDeclaration(keys, value) { + return `${this.#declaration(keys)}${JSON.stringify(value)}`; + } + #numberDeclaration(keys, value) { + if (Number.isNaN(value)) { + return `${this.#declaration(keys)}nan`; + } + switch(value){ + case Infinity: + return `${this.#declaration(keys)}inf`; + case -Infinity: + return `${this.#declaration(keys)}-inf`; + default: + return `${this.#declaration(keys)}${value}`; + } + } + #boolDeclaration(keys, value) { + return `${this.#declaration(keys)}${value}`; + } + #printDate(value) { + function dtPad(v, lPad = 2) { + return v.padStart(lPad, "0"); + } + const m = dtPad((value.getUTCMonth() + 1).toString()); + const d = dtPad(value.getUTCDate().toString()); + const h = dtPad(value.getUTCHours().toString()); + const min = dtPad(value.getUTCMinutes().toString()); + const s = dtPad(value.getUTCSeconds().toString()); + const ms = dtPad(value.getUTCMilliseconds().toString(), 3); + // formatted date + const fData = `${value.getUTCFullYear()}-${m}-${d}T${h}:${min}:${s}.${ms}`; + return fData; + } + #dateDeclaration(keys, value) { + return `${this.#declaration(keys)}${this.#printDate(value)}`; + } + #format(options = {}) { + const { keyAlignment = false } = options; + const rDeclaration = /^(\".*\"|[^=]*)\s=/; + const out = []; + for(let i = 0; i < this.output.length; i++){ + const l = this.output[i]; + // we keep empty entry for array of objects + if (l[0] === "[" && l[1] !== "[") { + // non-empty object with only subobjects as properties + if (this.output[i + 1] === "" && this.output[i + 2]?.slice(0, l.length) === l.slice(0, -1) + ".") { + i += 1; + continue; + } + out.push(l); + } else { + if (keyAlignment) { + const m = rDeclaration.exec(l); + if (m && m[1]) { + out.push(l.replace(m[1], m[1].padEnd(this.maxPad))); + } else { + out.push(l); + } + } else { + out.push(l); + } + } + } + // Cleaning multiple spaces + const cleanedOutput = []; + for(let i = 0; i < out.length; i++){ + const l = out[i]; + if (!(l === "" && out[i + 1] === "")) { + cleanedOutput.push(l); + } + } + return cleanedOutput; + } +} +/** + * Converts an object to a {@link https://toml.io | TOML} string. + * + * @example Usage + * ```ts + * import { stringify } from "@std/toml/stringify"; + * import { assertEquals } from "@std/assert"; + * + * const obj = { + * title: "TOML Example", + * owner: { + * name: "Bob", + * bio: "Bob is a cool guy", + * } + * }; + * const tomlString = stringify(obj); + * assertEquals(tomlString, `title = "TOML Example"\n\n[owner]\nname = "Bob"\nbio = "Bob is a cool guy"\n`); + * ``` + * @param obj Source object + * @param options Options for stringifying. + * @returns TOML string + */ export function stringify(obj, options) { + return new Dumper(obj).dump(options).join("\n"); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvdG9tbC8xLjAuNi9zdHJpbmdpZnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuLy8gQmFyZSBrZXlzIG1heSBvbmx5IGNvbnRhaW4gQVNDSUkgbGV0dGVycyxcbi8vIEFTQ0lJIGRpZ2l0cywgdW5kZXJzY29yZXMsIGFuZCBkYXNoZXMgKEEtWmEtejAtOV8tKS5cbmZ1bmN0aW9uIGpvaW5LZXlzKGtleXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgLy8gRG90dGVkIGtleXMgYXJlIGEgc2VxdWVuY2Ugb2YgYmFyZSBvciBxdW90ZWQga2V5cyBqb2luZWQgd2l0aCBhIGRvdC5cbiAgLy8gVGhpcyBhbGxvd3MgZm9yIGdyb3VwaW5nIHNpbWlsYXIgcHJvcGVydGllcyB0b2dldGhlcjpcbiAgcmV0dXJuIGtleXNcbiAgICAubWFwKChzdHI6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgICByZXR1cm4gc3RyLmxlbmd0aCA9PT0gMCB8fCBzdHIubWF0Y2goL1teQS1aYS16MC05Xy1dLylcbiAgICAgICAgPyBKU09OLnN0cmluZ2lmeShzdHIpXG4gICAgICAgIDogc3RyO1xuICAgIH0pXG4gICAgLmpvaW4oXCIuXCIpO1xufVxuXG50eXBlIEFycmF5VHlwZSA9XG4gIHwgXCJPTkxZX1BSSU1JVElWRVwiXG4gIHwgXCJPTkxZX09CSkVDVF9FWENMVURJTkdfQVJSQVlcIlxuICB8IFwiTUlYRURcIjtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmtjb2RlIHN0cmluZ2lmeX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaW5naWZ5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBEZWZpbmUgaWYgdGhlIGtleXMgc2hvdWxkIGJlIGFsaWduZWQgb3Igbm90LlxuICAgKlxuICAgKiBAZGVmYXVsdCB7ZmFsc2V9XG4gICAqL1xuICBrZXlBbGlnbm1lbnQ/OiBib29sZWFuO1xufVxuXG5jbGFzcyBEdW1wZXIge1xuICBtYXhQYWQgPSAwO1xuICBzcmNPYmplY3Q6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBvdXRwdXQ6IHN0cmluZ1tdID0gW107XG4gICNhcnJheVR5cGVDYWNoZSA9IG5ldyBNYXA8dW5rbm93bltdLCBBcnJheVR5cGU+KCk7XG4gIGNvbnN0cnVjdG9yKHNyY09iamM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB7XG4gICAgdGhpcy5zcmNPYmplY3QgPSBzcmNPYmpjO1xuICB9XG4gIGR1bXAoZm10T3B0aW9uczogU3RyaW5naWZ5T3B0aW9ucyA9IHt9KTogc3RyaW5nW10ge1xuICAgIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG4gICAgdGhpcy5vdXRwdXQgPSB0aGlzLiNwcmludE9iamVjdCh0aGlzLnNyY09iamVjdCBhcyBhbnkpO1xuICAgIHRoaXMub3V0cHV0ID0gdGhpcy4jZm9ybWF0KGZtdE9wdGlvbnMpO1xuICAgIHJldHVybiB0aGlzLm91dHB1dDtcbiAgfVxuICAjcHJpbnRPYmplY3Qob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwga2V5czogc3RyaW5nW10gPSBbXSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBvdXQgPSBbXTtcbiAgICBjb25zdCBwcm9wcyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgY29uc3QgaW5saW5lUHJvcHMgPSBbXTtcbiAgICBjb25zdCBtdWx0aWxpbmVQcm9wcyA9IFtdO1xuICAgIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wcykge1xuICAgICAgaWYgKHRoaXMuI2lzU2ltcGx5U2VyaWFsaXphYmxlKG9ialtwcm9wXSkpIHtcbiAgICAgICAgaW5saW5lUHJvcHMucHVzaChwcm9wKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG11bHRpbGluZVByb3BzLnB1c2gocHJvcCk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHNvcnRlZFByb3BzID0gaW5saW5lUHJvcHMuY29uY2F0KG11bHRpbGluZVByb3BzKTtcbiAgICBmb3IgKGNvbnN0IHByb3Agb2Ygc29ydGVkUHJvcHMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gb2JqW3Byb3BdO1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICBvdXQucHVzaCh0aGlzLiNkYXRlRGVjbGFyYXRpb24oW3Byb3BdLCB2YWx1ZSkpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgdmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgb3V0LnB1c2godGhpcy4jc3RyRGVjbGFyYXRpb24oW3Byb3BdLCB2YWx1ZS50b1N0cmluZygpKSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICBvdXQucHVzaCh0aGlzLiNudW1iZXJEZWNsYXJhdGlvbihbcHJvcF0sIHZhbHVlKSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgb3V0LnB1c2godGhpcy4jYm9vbERlY2xhcmF0aW9uKFtwcm9wXSwgdmFsdWUpKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHZhbHVlIGluc3RhbmNlb2YgQXJyYXlcbiAgICAgICkge1xuICAgICAgICBjb25zdCBhcnJheVR5cGUgPSB0aGlzLiNnZXRUeXBlT2ZBcnJheSh2YWx1ZSk7XG4gICAgICAgIGlmIChhcnJheVR5cGUgPT09IFwiT05MWV9QUklNSVRJVkVcIikge1xuICAgICAgICAgIG91dC5wdXNoKHRoaXMuI2FycmF5RGVjbGFyYXRpb24oW3Byb3BdLCB2YWx1ZSkpO1xuICAgICAgICB9IGVsc2UgaWYgKGFycmF5VHlwZSA9PT0gXCJPTkxZX09CSkVDVF9FWENMVURJTkdfQVJSQVlcIikge1xuICAgICAgICAgIC8vIGFycmF5IG9mIG9iamVjdHNcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBvdXQucHVzaChcIlwiKTtcbiAgICAgICAgICAgIG91dC5wdXNoKHRoaXMuI2hlYWRlckdyb3VwKFsuLi5rZXlzLCBwcm9wXSkpO1xuICAgICAgICAgICAgb3V0LnB1c2goLi4udGhpcy4jcHJpbnRPYmplY3QodmFsdWVbaV0sIFsuLi5rZXlzLCBwcm9wXSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB0aGlzIGlzIGEgY29tcGxleCBhcnJheSwgdXNlIHRoZSBpbmxpbmUgZm9ybWF0LlxuICAgICAgICAgIGNvbnN0IHN0ciA9IHZhbHVlLm1hcCgoeCkgPT4gdGhpcy4jcHJpbnRBc0lubGluZVZhbHVlKHgpKS5qb2luKFwiLFwiKTtcbiAgICAgICAgICBvdXQucHVzaChgJHt0aGlzLiNkZWNsYXJhdGlvbihbcHJvcF0pfVske3N0cn1dYCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIG91dC5wdXNoKFwiXCIpO1xuICAgICAgICBvdXQucHVzaCh0aGlzLiNoZWFkZXIoWy4uLmtleXMsIHByb3BdKSk7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIGNvbnN0IHRvUGFyc2UgPSB2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgICBvdXQucHVzaCguLi50aGlzLiNwcmludE9iamVjdCh0b1BhcnNlLCBbLi4ua2V5cywgcHJvcF0pKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBvdXQucHVzaCguLi50aGlzLl9wYXJzZSh2YWx1ZSwgYCR7cGF0aH0ke3Byb3B9LmApKTtcbiAgICAgIH1cbiAgICB9XG4gICAgb3V0LnB1c2goXCJcIik7XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuICAjaXNQcmltaXRpdmUodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgICB2YWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCB8fFxuICAgICAgW1wic3RyaW5nXCIsIFwibnVtYmVyXCIsIFwiYm9vbGVhblwiXS5pbmNsdWRlcyh0eXBlb2YgdmFsdWUpO1xuICB9XG4gICNnZXRUeXBlT2ZBcnJheShhcnI6IHVua25vd25bXSk6IEFycmF5VHlwZSB7XG4gICAgaWYgKHRoaXMuI2FycmF5VHlwZUNhY2hlLmhhcyhhcnIpKSB7XG4gICAgICByZXR1cm4gdGhpcy4jYXJyYXlUeXBlQ2FjaGUuZ2V0KGFycikhO1xuICAgIH1cbiAgICBjb25zdCB0eXBlID0gdGhpcy4jZG9HZXRUeXBlT2ZBcnJheShhcnIpO1xuICAgIHRoaXMuI2FycmF5VHlwZUNhY2hlLnNldChhcnIsIHR5cGUpO1xuICAgIHJldHVybiB0eXBlO1xuICB9XG4gICNkb0dldFR5cGVPZkFycmF5KGFycjogdW5rbm93bltdKTogQXJyYXlUeXBlIHtcbiAgICBpZiAoIWFyci5sZW5ndGgpIHtcbiAgICAgIC8vIGFueSB0eXBlIHNob3VsZCBiZSBmaW5lXG4gICAgICByZXR1cm4gXCJPTkxZX1BSSU1JVElWRVwiO1xuICAgIH1cblxuICAgIGNvbnN0IG9ubHlQcmltaXRpdmUgPSB0aGlzLiNpc1ByaW1pdGl2ZShhcnJbMF0pO1xuICAgIGlmIChhcnJbMF0gaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgcmV0dXJuIFwiTUlYRURcIjtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChcbiAgICAgICAgb25seVByaW1pdGl2ZSAhPT0gdGhpcy4jaXNQcmltaXRpdmUoYXJyW2ldKSB8fCBhcnJbaV0gaW5zdGFuY2VvZiBBcnJheVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBcIk1JWEVEXCI7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvbmx5UHJpbWl0aXZlID8gXCJPTkxZX1BSSU1JVElWRVwiIDogXCJPTkxZX09CSkVDVF9FWENMVURJTkdfQVJSQVlcIjtcbiAgfVxuICAjcHJpbnRBc0lubGluZVZhbHVlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICByZXR1cm4gYFwiJHt0aGlzLiNwcmludERhdGUodmFsdWUpfVwiYDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCB2YWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdmFsdWUgaW5zdGFuY2VvZiBBcnJheVxuICAgICkge1xuICAgICAgY29uc3Qgc3RyID0gdmFsdWUubWFwKCh4KSA9PiB0aGlzLiNwcmludEFzSW5saW5lVmFsdWUoeCkpLmpvaW4oXCIsXCIpO1xuICAgICAgcmV0dXJuIGBbJHtzdHJ9XWA7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2hvdWxkIG5ldmVyIHJlYWNoXCIpO1xuICAgICAgfVxuICAgICAgY29uc3Qgc3RyID0gT2JqZWN0LmtleXModmFsdWUpLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgIHJldHVybiBgJHtqb2luS2V5cyhba2V5XSl9ID0gJHtcbiAgICAgICAgICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuICAgICAgICAgIHRoaXMuI3ByaW50QXNJbmxpbmVWYWx1ZSgodmFsdWUgYXMgYW55KVtrZXldKX1gO1xuICAgICAgfSkuam9pbihcIixcIik7XG4gICAgICByZXR1cm4gYHske3N0cn19YDtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJTaG91bGQgbmV2ZXIgcmVhY2hcIik7XG4gIH1cbiAgI2lzU2ltcGx5U2VyaWFsaXphYmxlKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fFxuICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiIHx8XG4gICAgICB0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiIHx8XG4gICAgICB2YWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCB8fFxuICAgICAgdmFsdWUgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgICAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSAmJlxuICAgICAgICB0aGlzLiNnZXRUeXBlT2ZBcnJheSh2YWx1ZSkgIT09IFwiT05MWV9PQkpFQ1RfRVhDTFVESU5HX0FSUkFZXCIpXG4gICAgKTtcbiAgfVxuICAjaGVhZGVyKGtleXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYFske2pvaW5LZXlzKGtleXMpfV1gO1xuICB9XG4gICNoZWFkZXJHcm91cChrZXlzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBbWyR7am9pbktleXMoa2V5cyl9XV1gO1xuICB9XG4gICNkZWNsYXJhdGlvbihrZXlzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgdGl0bGUgPSBqb2luS2V5cyhrZXlzKTtcbiAgICBpZiAodGl0bGUubGVuZ3RoID4gdGhpcy5tYXhQYWQpIHtcbiAgICAgIHRoaXMubWF4UGFkID0gdGl0bGUubGVuZ3RoO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGl0bGV9ID0gYDtcbiAgfVxuICAjYXJyYXlEZWNsYXJhdGlvbihrZXlzOiBzdHJpbmdbXSwgdmFsdWU6IHVua25vd25bXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuI2RlY2xhcmF0aW9uKGtleXMpfSR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWA7XG4gIH1cbiAgI3N0ckRlY2xhcmF0aW9uKGtleXM6IHN0cmluZ1tdLCB2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy4jZGVjbGFyYXRpb24oa2V5cyl9JHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YDtcbiAgfVxuICAjbnVtYmVyRGVjbGFyYXRpb24oa2V5czogc3RyaW5nW10sIHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmIChOdW1iZXIuaXNOYU4odmFsdWUpKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy4jZGVjbGFyYXRpb24oa2V5cyl9bmFuYDtcbiAgICB9XG4gICAgc3dpdGNoICh2YWx1ZSkge1xuICAgICAgY2FzZSBJbmZpbml0eTpcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuI2RlY2xhcmF0aW9uKGtleXMpfWluZmA7XG4gICAgICBjYXNlIC1JbmZpbml0eTpcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuI2RlY2xhcmF0aW9uKGtleXMpfS1pbmZgO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuI2RlY2xhcmF0aW9uKGtleXMpfSR7dmFsdWV9YDtcbiAgICB9XG4gIH1cbiAgI2Jvb2xEZWNsYXJhdGlvbihrZXlzOiBzdHJpbmdbXSwgdmFsdWU6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLiNkZWNsYXJhdGlvbihrZXlzKX0ke3ZhbHVlfWA7XG4gIH1cbiAgI3ByaW50RGF0ZSh2YWx1ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgZnVuY3Rpb24gZHRQYWQodjogc3RyaW5nLCBsUGFkID0gMik6IHN0cmluZyB7XG4gICAgICByZXR1cm4gdi5wYWRTdGFydChsUGFkLCBcIjBcIik7XG4gICAgfVxuICAgIGNvbnN0IG0gPSBkdFBhZCgodmFsdWUuZ2V0VVRDTW9udGgoKSArIDEpLnRvU3RyaW5nKCkpO1xuICAgIGNvbnN0IGQgPSBkdFBhZCh2YWx1ZS5nZXRVVENEYXRlKCkudG9TdHJpbmcoKSk7XG4gICAgY29uc3QgaCA9IGR0UGFkKHZhbHVlLmdldFVUQ0hvdXJzKCkudG9TdHJpbmcoKSk7XG4gICAgY29uc3QgbWluID0gZHRQYWQodmFsdWUuZ2V0VVRDTWludXRlcygpLnRvU3RyaW5nKCkpO1xuICAgIGNvbnN0IHMgPSBkdFBhZCh2YWx1ZS5nZXRVVENTZWNvbmRzKCkudG9TdHJpbmcoKSk7XG4gICAgY29uc3QgbXMgPSBkdFBhZCh2YWx1ZS5nZXRVVENNaWxsaXNlY29uZHMoKS50b1N0cmluZygpLCAzKTtcbiAgICAvLyBmb3JtYXR0ZWQgZGF0ZVxuICAgIGNvbnN0IGZEYXRhID0gYCR7dmFsdWUuZ2V0VVRDRnVsbFllYXIoKX0tJHttfS0ke2R9VCR7aH06JHttaW59OiR7c30uJHttc31gO1xuICAgIHJldHVybiBmRGF0YTtcbiAgfVxuICAjZGF0ZURlY2xhcmF0aW9uKGtleXM6IHN0cmluZ1tdLCB2YWx1ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuI2RlY2xhcmF0aW9uKGtleXMpfSR7dGhpcy4jcHJpbnREYXRlKHZhbHVlKX1gO1xuICB9XG4gICNmb3JtYXQob3B0aW9uczogU3RyaW5naWZ5T3B0aW9ucyA9IHt9KTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHsga2V5QWxpZ25tZW50ID0gZmFsc2UgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgckRlY2xhcmF0aW9uID0gL14oXFxcIi4qXFxcInxbXj1dKilcXHM9LztcbiAgICBjb25zdCBvdXQgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3V0cHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBsID0gdGhpcy5vdXRwdXRbaV0gYXMgc3RyaW5nO1xuICAgICAgLy8gd2Uga2VlcCBlbXB0eSBlbnRyeSBmb3IgYXJyYXkgb2Ygb2JqZWN0c1xuICAgICAgaWYgKGxbMF0gPT09IFwiW1wiICYmIGxbMV0gIT09IFwiW1wiKSB7XG4gICAgICAgIC8vIG5vbi1lbXB0eSBvYmplY3Qgd2l0aCBvbmx5IHN1Ym9iamVjdHMgYXMgcHJvcGVydGllc1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5vdXRwdXRbaSArIDFdID09PSBcIlwiICYmXG4gICAgICAgICAgdGhpcy5vdXRwdXRbaSArIDJdPy5zbGljZSgwLCBsLmxlbmd0aCkgPT09IGwuc2xpY2UoMCwgLTEpICsgXCIuXCJcbiAgICAgICAgKSB7XG4gICAgICAgICAgaSArPSAxO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIG91dC5wdXNoKGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGtleUFsaWdubWVudCkge1xuICAgICAgICAgIGNvbnN0IG0gPSByRGVjbGFyYXRpb24uZXhlYyhsKTtcbiAgICAgICAgICBpZiAobSAmJiBtWzFdKSB7XG4gICAgICAgICAgICBvdXQucHVzaChsLnJlcGxhY2UobVsxXSwgbVsxXS5wYWRFbmQodGhpcy5tYXhQYWQpKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dC5wdXNoKGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQucHVzaChsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBDbGVhbmluZyBtdWx0aXBsZSBzcGFjZXNcbiAgICBjb25zdCBjbGVhbmVkT3V0cHV0ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGwgPSBvdXRbaV0gYXMgc3RyaW5nO1xuICAgICAgaWYgKCEobCA9PT0gXCJcIiAmJiBvdXRbaSArIDFdID09PSBcIlwiKSkge1xuICAgICAgICBjbGVhbmVkT3V0cHV0LnB1c2gobCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjbGVhbmVkT3V0cHV0O1xuICB9XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IHRvIGEge0BsaW5rIGh0dHBzOi8vdG9tbC5pbyB8IFRPTUx9IHN0cmluZy5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHN0cmluZ2lmeSB9IGZyb20gXCJAc3RkL3RvbWwvc3RyaW5naWZ5XCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBvYmogPSB7XG4gKiAgIHRpdGxlOiBcIlRPTUwgRXhhbXBsZVwiLFxuICogICBvd25lcjoge1xuICogICAgIG5hbWU6IFwiQm9iXCIsXG4gKiAgICAgYmlvOiBcIkJvYiBpcyBhIGNvb2wgZ3V5XCIsXG4gKiAgfVxuICogfTtcbiAqIGNvbnN0IHRvbWxTdHJpbmcgPSBzdHJpbmdpZnkob2JqKTtcbiAqIGFzc2VydEVxdWFscyh0b21sU3RyaW5nLCBgdGl0bGUgPSBcIlRPTUwgRXhhbXBsZVwiXFxuXFxuW293bmVyXVxcbm5hbWUgPSBcIkJvYlwiXFxuYmlvID0gXCJCb2IgaXMgYSBjb29sIGd1eVwiXFxuYCk7XG4gKiBgYGBcbiAqIEBwYXJhbSBvYmogU291cmNlIG9iamVjdFxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3Igc3RyaW5naWZ5aW5nLlxuICogQHJldHVybnMgVE9NTCBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeShcbiAgb2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgb3B0aW9ucz86IFN0cmluZ2lmeU9wdGlvbnMsXG4pOiBzdHJpbmcge1xuICByZXR1cm4gbmV3IER1bXBlcihvYmopLmR1bXAob3B0aW9ucykuam9pbihcIlxcblwiKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxx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 +// denoCacheMetadata=17451699876489807433,15963142249904147300
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/e537a12b3fbee13ae9d4799f09e089d20f4b0ee3af305cf01e3e1aeea7b33378.js b/vendor/gen/https/jsr.io/e537a12b3fbee13ae9d4799f09e089d20f4b0ee3af305cf01e3e1aeea7b33378.js new file mode 100644 index 0000000..3b017d9 --- /dev/null +++ b/vendor/gen/https/jsr.io/e537a12b3fbee13ae9d4799f09e089d20f4b0ee3af305cf01e3e1aeea7b33378.js @@ -0,0 +1,121 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { assertArg } from "../_common/normalize.ts"; +import { CHAR_COLON } from "../_common/constants.ts"; +import { normalizeString } from "../_common/normalize_string.ts"; +import { isPathSeparator, isWindowsDeviceRoot } from "./_util.ts"; +/** + * Normalize the `path`, resolving `'..'` and `'.'` segments. + * Note that resolving these segments does not necessarily mean that all will be eliminated. + * A `'..'` at the top-level will be preserved, and an empty path is canonically `'.'`. + * + * @example Usage + * ```ts + * import { normalize } from "@std/path/windows/normalize"; + * import { assertEquals } from "@std/assert"; + * + * const normalized = normalize("C:\\foo\\..\\bar"); + * assertEquals(normalized, "C:\\bar"); + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `normalize` from `@std/path/windows/unstable-normalize`. + * + * @param path The path to normalize + * @returns The normalized path + */ export function normalize(path) { + assertArg(path); + const len = path.length; + let rootEnd = 0; + let device; + let isAbsolute = false; + const code = path.charCodeAt(0); + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + // If we started with a separator, we know we at least have an absolute + // path of some kind (UNC or otherwise) + isAbsolute = true; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + // Matched! + last = j; + // Match 1 or more path separators + for(; j < len; ++j){ + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + // Return the normalized version of the UNC root since there + // is nothing left to process + return `\\\\${firstPart}\\${path.slice(last)}\\`; + } else if (j !== last) { + // We matched a UNC root with leftovers + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + if (path.charCodeAt(1) === CHAR_COLON) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + // Treat separator following drive name as an absolute path + // indicator + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid unnecessary + // work + return "\\"; + } + let tail; + if (rootEnd < len) { + tail = normalizeString(path.slice(rootEnd), !isAbsolute, "\\", isPathSeparator); + } else { + tail = ""; + } + if (tail.length === 0 && !isAbsolute) tail = "."; + if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) { + tail += "\\"; + } + if (device === undefined) { + if (isAbsolute) { + if (tail.length > 0) return `\\${tail}`; + else return "\\"; + } + return tail; + } else if (isAbsolute) { + if (tail.length > 0) return `${device}\\${tail}`; + else return `${device}\\`; + } + return device + tail; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC93aW5kb3dzL25vcm1hbGl6ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBhc3NlcnRBcmcgfSBmcm9tIFwiLi4vX2NvbW1vbi9ub3JtYWxpemUudHNcIjtcbmltcG9ydCB7IENIQVJfQ09MT04gfSBmcm9tIFwiLi4vX2NvbW1vbi9jb25zdGFudHMudHNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZVN0cmluZyB9IGZyb20gXCIuLi9fY29tbW9uL25vcm1hbGl6ZV9zdHJpbmcudHNcIjtcbmltcG9ydCB7IGlzUGF0aFNlcGFyYXRvciwgaXNXaW5kb3dzRGV2aWNlUm9vdCB9IGZyb20gXCIuL191dGlsLnRzXCI7XG5cbi8qKlxuICogTm9ybWFsaXplIHRoZSBgcGF0aGAsIHJlc29sdmluZyBgJy4uJ2AgYW5kIGAnLidgIHNlZ21lbnRzLlxuICogTm90ZSB0aGF0IHJlc29sdmluZyB0aGVzZSBzZWdtZW50cyBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIHRoYXQgYWxsIHdpbGwgYmUgZWxpbWluYXRlZC5cbiAqIEEgYCcuLidgIGF0IHRoZSB0b3AtbGV2ZWwgd2lsbCBiZSBwcmVzZXJ2ZWQsIGFuZCBhbiBlbXB0eSBwYXRoIGlzIGNhbm9uaWNhbGx5IGAnLidgLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIkBzdGQvcGF0aC93aW5kb3dzL25vcm1hbGl6ZVwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZShcIkM6XFxcXGZvb1xcXFwuLlxcXFxiYXJcIik7XG4gKiBhc3NlcnRFcXVhbHMobm9ybWFsaXplZCwgXCJDOlxcXFxiYXJcIik7XG4gKiBgYGBcbiAqXG4gKiBOb3RlOiBJZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBmaWxlIFVSTHMsXG4gKiB1c2UgdGhlIG5ldyB2ZXJzaW9uIG9mIGBub3JtYWxpemVgIGZyb20gYEBzdGQvcGF0aC93aW5kb3dzL3Vuc3RhYmxlLW5vcm1hbGl6ZWAuXG4gKlxuICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gbm9ybWFsaXplXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgYXNzZXJ0QXJnKHBhdGgpO1xuXG4gIGNvbnN0IGxlbiA9IHBhdGgubGVuZ3RoO1xuICBsZXQgcm9vdEVuZCA9IDA7XG4gIGxldCBkZXZpY2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgbGV0IGlzQWJzb2x1dGUgPSBmYWxzZTtcbiAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdCgwKTtcblxuICAvLyBUcnkgdG8gbWF0Y2ggYSByb290XG4gIGlmIChsZW4gPiAxKSB7XG4gICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgLy8gUG9zc2libGUgVU5DIHJvb3RcblxuICAgICAgLy8gSWYgd2Ugc3RhcnRlZCB3aXRoIGEgc2VwYXJhdG9yLCB3ZSBrbm93IHdlIGF0IGxlYXN0IGhhdmUgYW4gYWJzb2x1dGVcbiAgICAgIC8vIHBhdGggb2Ygc29tZSBraW5kIChVTkMgb3Igb3RoZXJ3aXNlKVxuICAgICAgaXNBYnNvbHV0ZSA9IHRydWU7XG5cbiAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDEpKSkge1xuICAgICAgICAvLyBNYXRjaGVkIGRvdWJsZSBwYXRoIHNlcGFyYXRvciBhdCBiZWdpbm5pbmdcbiAgICAgICAgbGV0IGogPSAyO1xuICAgICAgICBsZXQgbGFzdCA9IGo7XG4gICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBub24tcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChqIDwgbGVuICYmIGogIT09IGxhc3QpIHtcbiAgICAgICAgICBjb25zdCBmaXJzdFBhcnQgPSBwYXRoLnNsaWNlKGxhc3QsIGopO1xuICAgICAgICAgIC8vIE1hdGNoZWQhXG4gICAgICAgICAgbGFzdCA9IGo7XG4gICAgICAgICAgLy8gTWF0Y2ggMSBvciBtb3JlIHBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICAgIGlmICghaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaiA8IGxlbiAmJiBqICE9PSBsYXN0KSB7XG4gICAgICAgICAgICAvLyBNYXRjaGVkIVxuICAgICAgICAgICAgbGFzdCA9IGo7XG4gICAgICAgICAgICAvLyBNYXRjaCAxIG9yIG1vcmUgbm9uLXBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGogPT09IGxlbikge1xuICAgICAgICAgICAgICAvLyBXZSBtYXRjaGVkIGEgVU5DIHJvb3Qgb25seVxuICAgICAgICAgICAgICAvLyBSZXR1cm4gdGhlIG5vcm1hbGl6ZWQgdmVyc2lvbiBvZiB0aGUgVU5DIHJvb3Qgc2luY2UgdGhlcmVcbiAgICAgICAgICAgICAgLy8gaXMgbm90aGluZyBsZWZ0IHRvIHByb2Nlc3NcblxuICAgICAgICAgICAgICByZXR1cm4gYFxcXFxcXFxcJHtmaXJzdFBhcnR9XFxcXCR7cGF0aC5zbGljZShsYXN0KX1cXFxcYDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgICAvLyBXZSBtYXRjaGVkIGEgVU5DIHJvb3Qgd2l0aCBsZWZ0b3ZlcnNcblxuICAgICAgICAgICAgICBkZXZpY2UgPSBgXFxcXFxcXFwke2ZpcnN0UGFydH1cXFxcJHtwYXRoLnNsaWNlKGxhc3QsIGopfWA7XG4gICAgICAgICAgICAgIHJvb3RFbmQgPSBqO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm9vdEVuZCA9IDE7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KGNvZGUpKSB7XG4gICAgICAvLyBQb3NzaWJsZSBkZXZpY2Ugcm9vdFxuXG4gICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OKSB7XG4gICAgICAgIGRldmljZSA9IHBhdGguc2xpY2UoMCwgMik7XG4gICAgICAgIHJvb3RFbmQgPSAyO1xuICAgICAgICBpZiAobGVuID4gMikge1xuICAgICAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDIpKSkge1xuICAgICAgICAgICAgLy8gVHJlYXQgc2VwYXJhdG9yIGZvbGxvd2luZyBkcml2ZSBuYW1lIGFzIGFuIGFic29sdXRlIHBhdGhcbiAgICAgICAgICAgIC8vIGluZGljYXRvclxuICAgICAgICAgICAgaXNBYnNvbHV0ZSA9IHRydWU7XG4gICAgICAgICAgICByb290RW5kID0gMztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgLy8gYHBhdGhgIGNvbnRhaW5zIGp1c3QgYSBwYXRoIHNlcGFyYXRvciwgZXhpdCBlYXJseSB0byBhdm9pZCB1bm5lY2Vzc2FyeVxuICAgIC8vIHdvcmtcbiAgICByZXR1cm4gXCJcXFxcXCI7XG4gIH1cblxuICBsZXQgdGFpbDogc3RyaW5nO1xuICBpZiAocm9vdEVuZCA8IGxlbikge1xuICAgIHRhaWwgPSBub3JtYWxpemVTdHJpbmcoXG4gICAgICBwYXRoLnNsaWNlKHJvb3RFbmQpLFxuICAgICAgIWlzQWJzb2x1dGUsXG4gICAgICBcIlxcXFxcIixcbiAgICAgIGlzUGF0aFNlcGFyYXRvcixcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIHRhaWwgPSBcIlwiO1xuICB9XG4gIGlmICh0YWlsLmxlbmd0aCA9PT0gMCAmJiAhaXNBYnNvbHV0ZSkgdGFpbCA9IFwiLlwiO1xuICBpZiAodGFpbC5sZW5ndGggPiAwICYmIGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQobGVuIC0gMSkpKSB7XG4gICAgdGFpbCArPSBcIlxcXFxcIjtcbiAgfVxuICBpZiAoZGV2aWNlID09PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoaXNBYnNvbHV0ZSkge1xuICAgICAgaWYgKHRhaWwubGVuZ3RoID4gMCkgcmV0dXJuIGBcXFxcJHt0YWlsfWA7XG4gICAgICBlbHNlIHJldHVybiBcIlxcXFxcIjtcbiAgICB9XG4gICAgcmV0dXJuIHRhaWw7XG4gIH0gZWxzZSBpZiAoaXNBYnNvbHV0ZSkge1xuICAgIGlmICh0YWlsLmxlbmd0aCA+IDApIHJldHVybiBgJHtkZXZpY2V9XFxcXCR7dGFpbH1gO1xuICAgIGVsc2UgcmV0dXJuIGAke2RldmljZX1cXFxcYDtcbiAgfVxuICByZXR1cm4gZGV2aWNlICsgdGFpbDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBRXJDLFNBQVMsU0FBUyxRQUFRLDBCQUEwQjtBQUNwRCxTQUFTLFVBQVUsUUFBUSwwQkFBMEI7QUFDckQsU0FBUyxlQUFlLFFBQVEsaUNBQWlDO0FB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 +// denoCacheMetadata=9911231308521647765,13168422209284486371
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/e53dcec6288a00c9653737a60aaf3127c5a407027d8b83ee6962d04167d48039.js b/vendor/gen/https/jsr.io/e53dcec6288a00c9653737a60aaf3127c5a407027d8b83ee6962d04167d48039.js new file mode 100644 index 0000000..3f91c01 --- /dev/null +++ b/vendor/gen/https/jsr.io/e53dcec6288a00c9653737a60aaf3127c5a407027d8b83ee6962d04167d48039.js @@ -0,0 +1,116 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +/** Object structure for a list of HTML entities. */ const rawToEntityEntries = [ + [ + "&", + "&" + ], + [ + "<", + "<" + ], + [ + ">", + ">" + ], + [ + '"', + """ + ], + [ + "'", + "'" + ] +]; +const defaultEntityList = Object.fromEntries([ + ...rawToEntityEntries.map(([raw, entity])=>[ + entity, + raw + ]), + [ + "'", + "'" + ], + [ + " ", + "\xa0" + ] +]); +const rawToEntity = new Map(rawToEntityEntries); +const rawRe = new RegExp(`[${[ + ...rawToEntity.keys() +].join("")}]`, "g"); +/** + * Escapes text for safe interpolation into HTML text content and quoted attributes. + * + * @example Usage + * ```ts + * import { escape } from "@std/html/entities"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(escape("<>'&AA"), "<>'&AA"); + * + * // Characters that don't need to be escaped will be left alone, + * // even if named HTML entities exist for them. + * assertEquals(escape("þð"), "þð"); + * ``` + * + * @param str The string to escape. + * @returns The escaped string. + */ export function escape(str) { + return str.replaceAll(rawRe, (m)=>rawToEntity.get(m)); +} +const defaultUnescapeOptions = { + entityList: defaultEntityList +}; +const MAX_CODE_POINT = 0x10ffff; +const RX_DEC_ENTITY = /&#([0-9]+);/g; +const RX_HEX_ENTITY = /&#x(\p{AHex}+);/gu; +const entityListRegexCache = new WeakMap(); +/** + * Unescapes HTML entities in text. + * + * Default options only handle `&<>'"` and numeric entities. + * + * @example Basic usage + * ```ts + * import { unescape } from "@std/html/entities"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(unescape("<>'&AA"), "<>'&AA"); + * assertEquals(unescape("þð"), "þð"); + * ``` + * + * @example Using a custom entity list + * + * This uses the full named entity list from the HTML spec (~47K un-minified) + * + * ```ts + * import { unescape } from "@std/html/entities"; + * import entityList from "@std/html/named-entity-list.json" with { type: "json" }; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(unescape("<>'&AA", { entityList }), "<>'&AA"); + * ``` + * + * @param str The string to unescape. + * @param options Options for unescaping. + * @returns The unescaped string. + */ export function unescape(str, options = {}) { + const { entityList } = { + ...defaultUnescapeOptions, + ...options + }; + let entityRe = entityListRegexCache.get(entityList); + if (!entityRe) { + entityRe = new RegExp(`(${Object.keys(entityList).sort((a, b)=>b.length - a.length).join("|")})`, "g"); + entityListRegexCache.set(entityList, entityRe); + } + return str.replaceAll(entityRe, (m)=>entityList[m]).replaceAll(RX_DEC_ENTITY, (_, dec)=>codePointStrToChar(dec, 10)).replaceAll(RX_HEX_ENTITY, (_, hex)=>codePointStrToChar(hex, 16)); +} +function codePointStrToChar(codePointStr, radix) { + const codePoint = parseInt(codePointStr, radix); + return codePoint > MAX_CODE_POINT ? "�" : String.fromCodePoint(codePoint); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvaHRtbC8xLjAuMy9lbnRpdGllcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vKiogT2JqZWN0IHN0cnVjdHVyZSBmb3IgYSBsaXN0IG9mIEhUTUwgZW50aXRpZXMuICovXG5leHBvcnQgdHlwZSBFbnRpdHlMaXN0ID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuY29uc3QgcmF3VG9FbnRpdHlFbnRyaWVzID0gW1xuICBbXCImXCIsIFwiJmFtcDtcIl0sXG4gIFtcIjxcIiwgXCImbHQ7XCJdLFxuICBbXCI+XCIsIFwiJmd0O1wiXSxcbiAgWydcIicsIFwiJnF1b3Q7XCJdLFxuICBbXCInXCIsIFwiJiMzOTtcIl0sXG5dIGFzIGNvbnN0O1xuXG5jb25zdCBkZWZhdWx0RW50aXR5TGlzdDogRW50aXR5TGlzdCA9IE9iamVjdC5mcm9tRW50cmllcyhbXG4gIC4uLnJhd1RvRW50aXR5RW50cmllcy5tYXAoKFtyYXcsIGVudGl0eV0pID0+IFtlbnRpdHksIHJhd10pLFxuICBbXCImYXBvcztcIiwgXCInXCJdLFxuICBbXCImbmJzcDtcIiwgXCJcXHhhMFwiXSxcbl0pO1xuXG5jb25zdCByYXdUb0VudGl0eSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KHJhd1RvRW50aXR5RW50cmllcyk7XG5cbmNvbnN0IHJhd1JlID0gbmV3IFJlZ0V4cChgWyR7Wy4uLnJhd1RvRW50aXR5LmtleXMoKV0uam9pbihcIlwiKX1dYCwgXCJnXCIpO1xuXG4vKipcbiAqIEVzY2FwZXMgdGV4dCBmb3Igc2FmZSBpbnRlcnBvbGF0aW9uIGludG8gSFRNTCB0ZXh0IGNvbnRlbnQgYW5kIHF1b3RlZCBhdHRyaWJ1dGVzLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZXNjYXBlIH0gZnJvbSBcIkBzdGQvaHRtbC9lbnRpdGllc1wiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogYXNzZXJ0RXF1YWxzKGVzY2FwZShcIjw+JyZBQVwiKSwgXCImbHQ7Jmd0OyYjMzk7JmFtcDtBQVwiKTtcbiAqXG4gKiAvLyBDaGFyYWN0ZXJzIHRoYXQgZG9uJ3QgbmVlZCB0byBiZSBlc2NhcGVkIHdpbGwgYmUgbGVmdCBhbG9uZSxcbiAqIC8vIGV2ZW4gaWYgbmFtZWQgSFRNTCBlbnRpdGllcyBleGlzdCBmb3IgdGhlbS5cbiAqIGFzc2VydEVxdWFscyhlc2NhcGUoXCLDvsOwXCIpLCBcIsO+w7BcIik7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIFRoZSBzdHJpbmcgdG8gZXNjYXBlLlxuICogQHJldHVybnMgVGhlIGVzY2FwZWQgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlQWxsKHJhd1JlLCAobSkgPT4gcmF3VG9FbnRpdHkuZ2V0KG0pISk7XG59XG5cbi8qKiBPcHRpb25zIGZvciB7QGxpbmtjb2RlIHVuZXNjYXBlfS4gKi9cbmV4cG9ydCB0eXBlIFVuZXNjYXBlT3B0aW9ucyA9IHsgZW50aXR5TGlzdDogRW50aXR5TGlzdCB9O1xuXG5jb25zdCBkZWZhdWx0VW5lc2NhcGVPcHRpb25zOiBVbmVzY2FwZU9wdGlvbnMgPSB7XG4gIGVudGl0eUxpc3Q6IGRlZmF1bHRFbnRpdHlMaXN0LFxufTtcblxuY29uc3QgTUFYX0NPREVfUE9JTlQgPSAweDEwZmZmZjtcblxuY29uc3QgUlhfREVDX0VOVElUWSA9IC8mIyhbMC05XSspOy9nO1xuY29uc3QgUlhfSEVYX0VOVElUWSA9IC8mI3goXFxwe0FIZXh9Kyk7L2d1O1xuXG5jb25zdCBlbnRpdHlMaXN0UmVnZXhDYWNoZSA9IG5ldyBXZWFrTWFwPEVudGl0eUxpc3QsIFJlZ0V4cD4oKTtcblxuLyoqXG4gKiBVbmVzY2FwZXMgSFRNTCBlbnRpdGllcyBpbiB0ZXh0LlxuICpcbiAqIERlZmF1bHQgb3B0aW9ucyBvbmx5IGhhbmRsZSBgJjw+J1wiYCBhbmQgbnVtZXJpYyBlbnRpdGllcy5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHVuZXNjYXBlIH0gZnJvbSBcIkBzdGQvaHRtbC9lbnRpdGllc1wiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogYXNzZXJ0RXF1YWxzKHVuZXNjYXBlKFwiJmx0OyZndDsmIzM5OyZhbXA7QUFcIiksIFwiPD4nJkFBXCIpO1xuICogYXNzZXJ0RXF1YWxzKHVuZXNjYXBlKFwiJnRob3JuOyZldGg7XCIpLCBcIiZ0aG9ybjsmZXRoO1wiKTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFVzaW5nIGEgY3VzdG9tIGVudGl0eSBsaXN0XG4gKlxuICogVGhpcyB1c2VzIHRoZSBmdWxsIG5hbWVkIGVudGl0eSBsaXN0IGZyb20gdGhlIEhUTUwgc3BlYyAofjQ3SyB1bi1taW5pZmllZClcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgdW5lc2NhcGUgfSBmcm9tIFwiQHN0ZC9odG1sL2VudGl0aWVzXCI7XG4gKiBpbXBvcnQgZW50aXR5TGlzdCBmcm9tIFwiQHN0ZC9odG1sL25hbWVkLWVudGl0eS1saXN0Lmpzb25cIiB3aXRoIHsgdHlwZTogXCJqc29uXCIgfTtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydEVxdWFscyh1bmVzY2FwZShcIiZsdDsmZ3Q7JiMzOTsmYW1wO0FBXCIsIHsgZW50aXR5TGlzdCB9KSwgXCI8PicmQUFcIik7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIFRoZSBzdHJpbmcgdG8gdW5lc2NhcGUuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciB1bmVzY2FwaW5nLlxuICogQHJldHVybnMgVGhlIHVuZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmVzY2FwZShcbiAgc3RyOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFBhcnRpYWw8VW5lc2NhcGVPcHRpb25zPiA9IHt9LFxuKTogc3RyaW5nIHtcbiAgY29uc3QgeyBlbnRpdHlMaXN0IH0gPSB7IC4uLmRlZmF1bHRVbmVzY2FwZU9wdGlvbnMsIC4uLm9wdGlvbnMgfTtcblxuICBsZXQgZW50aXR5UmUgPSBlbnRpdHlMaXN0UmVnZXhDYWNoZS5nZXQoZW50aXR5TGlzdCk7XG5cbiAgaWYgKCFlbnRpdHlSZSkge1xuICAgIGVudGl0eVJlID0gbmV3IFJlZ0V4cChcbiAgICAgIGAoJHtcbiAgICAgICAgT2JqZWN0LmtleXMoZW50aXR5TGlzdClcbiAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aClcbiAgICAgICAgICAuam9pbihcInxcIilcbiAgICAgIH0pYCxcbiAgICAgIFwiZ1wiLFxuICAgICk7XG5cbiAgICBlbnRpdHlMaXN0UmVnZXhDYWNoZS5zZXQoZW50aXR5TGlzdCwgZW50aXR5UmUpO1xuICB9XG5cbiAgcmV0dXJuIHN0clxuICAgIC5yZXBsYWNlQWxsKGVudGl0eVJlLCAobSkgPT4gZW50aXR5TGlzdFttXSEpXG4gICAgLnJlcGxhY2VBbGwoUlhfREVDX0VOVElUWSwgKF8sIGRlYykgPT4gY29kZVBvaW50U3RyVG9DaGFyKGRlYywgMTApKVxuICAgIC5yZXBsYWNlQWxsKFJYX0hFWF9FTlRJVFksIChfLCBoZXgpID0+IGNvZGVQb2ludFN0clRvQ2hhcihoZXgsIDE2KSk7XG59XG5cbmZ1bmN0aW9uIGNvZGVQb2ludFN0clRvQ2hhcihjb2RlUG9pbnRTdHI6IHN0cmluZywgcmFkaXg6IG51bWJlcikge1xuICBjb25zdCBjb2RlUG9pbnQgPSBwYXJzZUludChjb2RlUG9pbnRTdHIsIHJhZGl4KTtcblxuICByZXR1cm4gY29kZVBvaW50ID4gTUFYX0NPREVfUE9JTlQgPyBcIu+/vVwiIDogU3RyaW5nLmZyb21Db2RlUG9pbnQoY29kZVBvaW50KTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBRXJDLGtEQUFrRCxHQUdsRCxNQUFNLHFCQUFxQjtFQUN6QjtJQUFDO0lBQUs7R0FBUTtFQUNkO0lBQUM7SUFBSztHQUFPO0VBQ2I7SUFBQztJQUFLO0dBQU87RUFDYjtJQUFDO0lBQUs7R0FBUztFQUNmO0lBQUM7SUFBSztHQUFRO0NBQ2Y7QUFFRCxNQUFNLG9CQUFnQyxPQUFPLFdBQVcsQ0FBQztLQUNwRCxtQkFBbUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sR0FBSztNQUFDO01BQVE7S0FBSTtFQUMxRDtJQUFDO0lBQVU7R0FBSTtFQUNmO0lBQUM7SUFBVTtHQUFPO0NBQ25CO0FBRUQsTUFBTSxjQUFjLElBQUksSUFBb0I7QUFFNUMsTUFBTSxRQUFRLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRTtLQUFJLFlBQVksSUFBSTtDQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFFbEU7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBaUJDLEdBQ0QsT0FBTyxTQUFTLE9BQU8sR0FBVztFQUNoQyxPQUFPLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFNLFlBQVksR0FBRyxDQUFDO0FBQ3REO0FBS0EsTUFBTSx5QkFBMEM7RUFDOUMsWUFBWTtBQUNkO0FBRUEsTUFBTSxpQkFBaUI7QUFFdkIsTUFBTSxnQkFBZ0I7QUFDdEIsTUFBTSxnQkFBZ0I7QUFFdEIsTUFBTSx1QkFBdUIsSUFBSTtBQUVqQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0E2QkMsR0FDRCxPQUFPLFNBQVMsU0FDZCxHQUFXLEVBQ1gsVUFBb0MsQ0FBQyxDQUFDO0VBRXRDLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRztJQUFFLEdBQUcsc0JBQXNCO0lBQUUsR0FBRyxPQUFPO0VBQUM7RUFFL0QsSUFBSSxXQUFXLHFCQUFxQixHQUFHLENBQUM7RUFFeEMsSUFBSSxDQUFDLFVBQVU7SUFDYixXQUFXLElBQUksT0FDYixDQUFDLENBQUMsRUFDQSxPQUFPLElBQUksQ0FBQyxZQUNULElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLE1BQU0sRUFDbEMsSUFBSSxDQUFDLEtBQ1QsQ0FBQyxDQUFDLEVBQ0g7SUFHRixxQkFBcUIsR0FBRyxDQUFDLFlBQVk7RUFDdkM7RUFFQSxPQUFPLElBQ0osVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFNLFVBQVUsQ0FBQyxFQUFFLEVBQ3pDLFVBQVUsQ0FBQyxlQUFlLENBQUMsR0FBRyxNQUFRLG1CQUFtQixLQUFLLEtBQzlELFVBQVUsQ0FBQyxlQUFlLENBQUMsR0FBRyxNQUFRLG1CQUFtQixLQUFLO0FBQ25FO0FBRUEsU0FBUyxtQkFBbUIsWUFBb0IsRUFBRSxLQUFhO0VBQzdELE1BQU0sWUFBWSxTQUFTLGNBQWM7RUFFekMsT0FBTyxZQUFZLGlCQUFpQixNQUFNLE9BQU8sYUFBYSxDQUFDO0FBQ2pFIn0= +// denoCacheMetadata=12027925551671428615,7426900039839167085
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/e5530d8e1389ecf7e18adedbc01bac3786c80c74741482719df51a7596f705a1.js b/vendor/gen/https/jsr.io/e5530d8e1389ecf7e18adedbc01bac3786c80c74741482719df51a7596f705a1.js new file mode 100644 index 0000000..7181f97 --- /dev/null +++ b/vendor/gen/https/jsr.io/e5530d8e1389ecf7e18adedbc01bac3786c80c74741482719df51a7596f705a1.js @@ -0,0 +1,165 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { CHAR_COLON, CHAR_DOT } from "../_common/constants.ts"; +import { assertPath } from "../_common/assert_path.ts"; +import { isPathSeparator, isWindowsDeviceRoot } from "./_util.ts"; +/** + * Return a `ParsedPath` object of the `path`. + * + * @example Usage + * ```ts + * import { parse } from "@std/path/windows/parse"; + * import { assertEquals } from "@std/assert"; + * + * const parsed = parse("C:\\foo\\bar\\baz.ext"); + * assertEquals(parsed, { + * root: "C:\\", + * dir: "C:\\foo\\bar", + * base: "baz.ext", + * ext: ".ext", + * name: "baz", + * }); + * ``` + * + * @param path The path to parse. + * @returns The `ParsedPath` object. + */ export function parse(path) { + assertPath(path); + const ret = { + root: "", + dir: "", + base: "", + ext: "", + name: "" + }; + const len = path.length; + if (len === 0) return ret; + let rootEnd = 0; + let code = path.charCodeAt(0); + // Try to match a root + if (len > 1) { + if (isPathSeparator(code)) { + // Possible UNC root + rootEnd = 1; + if (isPathSeparator(path.charCodeAt(1))) { + // Matched double path separator at beginning + let j = 2; + let last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more path separators + for(; j < len; ++j){ + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + // Matched! + last = j; + // Match 1 or more non-path separators + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + // We matched a UNC root only + rootEnd = j; + } else if (j !== last) { + // We matched a UNC root with leftovers + rootEnd = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + // Possible device root + if (path.charCodeAt(1) === CHAR_COLON) { + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + if (len === 3) { + // `path` contains just a drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + ret.base = "\\"; + return ret; + } + rootEnd = 3; + } + } else { + // `path` contains just a relative drive root, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + return ret; + } + } + } + } else if (isPathSeparator(code)) { + // `path` contains just a path separator, exit early to avoid + // unnecessary work + ret.root = ret.dir = path; + ret.base = "\\"; + return ret; + } + if (rootEnd > 0) ret.root = path.slice(0, rootEnd); + let startDot = -1; + let startPart = rootEnd; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + // Track the state of characters (if any) we see before our first dot and + // after any path separator we find + let preDotState = 0; + // Get non-dir info + for(; i >= rootEnd; --i){ + code = path.charCodeAt(i); + if (isPathSeparator(code)) { + // If we reached a path separator that was not part of a set of path + // separators at the end of the string, stop now + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + // We saw the first non-path separator, mark this as the end of our + // extension + matchedSlash = false; + end = i + 1; + } + if (code === CHAR_DOT) { + // If this is our first dot, mark it as the start of our extension + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + // We saw a non-dot and non-path separator before our dot, so we should + // have a good chance at having a non-empty extension + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot + preDotState === 0 || // The (right-most) trimmed path component is exactly '..' + preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + if (end !== -1) { + ret.base = ret.name = path.slice(startPart, end); + } + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + ret.ext = path.slice(startDot, end); + } + // Fallback to '\' in case there is no basename + ret.base = ret.base || "\\"; + // If the directory is the root, use the entire root as the `dir` including + // the trailing slash if any (`C:\abc` -> `C:\`). Otherwise, strip out the + // trailing slash (`C:\abc\def` -> `C:\abc`). + if (startPart > 0 && startPart !== rootEnd) { + ret.dir = path.slice(0, startPart - 1); + } else ret.dir = ret.root; + return ret; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS93aW5kb3dzL3BhcnNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IENIQVJfQ09MT04sIENIQVJfRE9UIH0gZnJvbSBcIi4uL19jb21tb24vY29uc3RhbnRzLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFBhcnNlZFBhdGggfSBmcm9tIFwiLi4vdHlwZXMudHNcIjtcbmltcG9ydCB7IGFzc2VydFBhdGggfSBmcm9tIFwiLi4vX2NvbW1vbi9hc3NlcnRfcGF0aC50c1wiO1xuaW1wb3J0IHsgaXNQYXRoU2VwYXJhdG9yLCBpc1dpbmRvd3NEZXZpY2VSb290IH0gZnJvbSBcIi4vX3V0aWwudHNcIjtcblxuZXhwb3J0IHR5cGUgeyBQYXJzZWRQYXRoIH0gZnJvbSBcIi4uL3R5cGVzLnRzXCI7XG5cbi8qKlxuICogUmV0dXJuIGEgYFBhcnNlZFBhdGhgIG9iamVjdCBvZiB0aGUgYHBhdGhgLlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgcGFyc2UgfSBmcm9tIFwiQHN0ZC9wYXRoL3dpbmRvd3MvcGFyc2VcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IHBhcnNlZCA9IHBhcnNlKFwiQzpcXFxcZm9vXFxcXGJhclxcXFxiYXouZXh0XCIpO1xuICogYXNzZXJ0RXF1YWxzKHBhcnNlZCwge1xuICogICByb290OiBcIkM6XFxcXFwiLFxuICogICBkaXI6IFwiQzpcXFxcZm9vXFxcXGJhclwiLFxuICogICBiYXNlOiBcImJhei5leHRcIixcbiAqICAgZXh0OiBcIi5leHRcIixcbiAqICAgbmFtZTogXCJiYXpcIixcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gcGFyc2UuXG4gKiBAcmV0dXJucyBUaGUgYFBhcnNlZFBhdGhgIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKHBhdGg6IHN0cmluZyk6IFBhcnNlZFBhdGgge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuXG4gIGNvbnN0IHJldDogUGFyc2VkUGF0aCA9IHsgcm9vdDogXCJcIiwgZGlyOiBcIlwiLCBiYXNlOiBcIlwiLCBleHQ6IFwiXCIsIG5hbWU6IFwiXCIgfTtcblxuICBjb25zdCBsZW4gPSBwYXRoLmxlbmd0aDtcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIHJldDtcblxuICBsZXQgcm9vdEVuZCA9IDA7XG4gIGxldCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KDApO1xuXG4gIC8vIFRyeSB0byBtYXRjaCBhIHJvb3RcbiAgaWYgKGxlbiA+IDEpIHtcbiAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgICAvLyBQb3NzaWJsZSBVTkMgcm9vdFxuXG4gICAgICByb290RW5kID0gMTtcbiAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDEpKSkge1xuICAgICAgICAvLyBNYXRjaGVkIGRvdWJsZSBwYXRoIHNlcGFyYXRvciBhdCBiZWdpbm5pbmdcbiAgICAgICAgbGV0IGogPSAyO1xuICAgICAgICBsZXQgbGFzdCA9IGo7XG4gICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBub24tcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChqIDwgbGVuICYmIGogIT09IGxhc3QpIHtcbiAgICAgICAgICAvLyBNYXRjaGVkIVxuICAgICAgICAgIGxhc3QgPSBqO1xuICAgICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBwYXRoIHNlcGFyYXRvcnNcbiAgICAgICAgICBmb3IgKDsgaiA8IGxlbjsgKytqKSB7XG4gICAgICAgICAgICBpZiAoIWlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGogPCBsZW4gJiYgaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgLy8gTWF0Y2hlZCFcbiAgICAgICAgICAgIGxhc3QgPSBqO1xuICAgICAgICAgICAgLy8gTWF0Y2ggMSBvciBtb3JlIG5vbi1wYXRoIHNlcGFyYXRvcnNcbiAgICAgICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChqID09PSBsZW4pIHtcbiAgICAgICAgICAgICAgLy8gV2UgbWF0Y2hlZCBhIFVOQyByb290IG9ubHlcblxuICAgICAgICAgICAgICByb290RW5kID0gajtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaiAhPT0gbGFzdCkge1xuICAgICAgICAgICAgICAvLyBXZSBtYXRjaGVkIGEgVU5DIHJvb3Qgd2l0aCBsZWZ0b3ZlcnNcblxuICAgICAgICAgICAgICByb290RW5kID0gaiArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KGNvZGUpKSB7XG4gICAgICAvLyBQb3NzaWJsZSBkZXZpY2Ugcm9vdFxuXG4gICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OKSB7XG4gICAgICAgIHJvb3RFbmQgPSAyO1xuICAgICAgICBpZiAobGVuID4gMikge1xuICAgICAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDIpKSkge1xuICAgICAgICAgICAgaWYgKGxlbiA9PT0gMykge1xuICAgICAgICAgICAgICAvLyBgcGF0aGAgY29udGFpbnMganVzdCBhIGRyaXZlIHJvb3QsIGV4aXQgZWFybHkgdG8gYXZvaWRcbiAgICAgICAgICAgICAgLy8gdW5uZWNlc3Nhcnkgd29ya1xuICAgICAgICAgICAgICByZXQucm9vdCA9IHJldC5kaXIgPSBwYXRoO1xuICAgICAgICAgICAgICByZXQuYmFzZSA9IFwiXFxcXFwiO1xuICAgICAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcm9vdEVuZCA9IDM7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGBwYXRoYCBjb250YWlucyBqdXN0IGEgcmVsYXRpdmUgZHJpdmUgcm9vdCwgZXhpdCBlYXJseSB0byBhdm9pZFxuICAgICAgICAgIC8vIHVubmVjZXNzYXJ5IHdvcmtcbiAgICAgICAgICByZXQucm9vdCA9IHJldC5kaXIgPSBwYXRoO1xuICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgLy8gYHBhdGhgIGNvbnRhaW5zIGp1c3QgYSBwYXRoIHNlcGFyYXRvciwgZXhpdCBlYXJseSB0byBhdm9pZFxuICAgIC8vIHVubmVjZXNzYXJ5IHdvcmtcbiAgICByZXQucm9vdCA9IHJldC5kaXIgPSBwYXRoO1xuICAgIHJldC5iYXNlID0gXCJcXFxcXCI7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIGlmIChyb290RW5kID4gMCkgcmV0LnJvb3QgPSBwYXRoLnNsaWNlKDAsIHJvb3RFbmQpO1xuXG4gIGxldCBzdGFydERvdCA9IC0xO1xuICBsZXQgc3RhcnRQYXJ0ID0gcm9vdEVuZDtcbiAgbGV0IGVuZCA9IC0xO1xuICBsZXQgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgbGV0IGkgPSBwYXRoLmxlbmd0aCAtIDE7XG5cbiAgLy8gVHJhY2sgdGhlIHN0YXRlIG9mIGNoYXJhY3RlcnMgKGlmIGFueSkgd2Ugc2VlIGJlZm9yZSBvdXIgZmlyc3QgZG90IGFuZFxuICAvLyBhZnRlciBhbnkgcGF0aCBzZXBhcmF0b3Igd2UgZmluZFxuICBsZXQgcHJlRG90U3RhdGUgPSAwO1xuXG4gIC8vIEdldCBub24tZGlyIGluZm9cbiAgZm9yICg7IGkgPj0gcm9vdEVuZDsgLS1pKSB7XG4gICAgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICBzdGFydFBhcnQgPSBpICsgMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGVuZCA9PT0gLTEpIHtcbiAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCBtYXJrIHRoaXMgYXMgdGhlIGVuZCBvZiBvdXJcbiAgICAgIC8vIGV4dGVuc2lvblxuICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgICBlbmQgPSBpICsgMTtcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IENIQVJfRE9UKSB7XG4gICAgICAvLyBJZiB0aGlzIGlzIG91ciBmaXJzdCBkb3QsIG1hcmsgaXQgYXMgdGhlIHN0YXJ0IG9mIG91ciBleHRlbnNpb25cbiAgICAgIGlmIChzdGFydERvdCA9PT0gLTEpIHN0YXJ0RG90ID0gaTtcbiAgICAgIGVsc2UgaWYgKHByZURvdFN0YXRlICE9PSAxKSBwcmVEb3RTdGF0ZSA9IDE7XG4gICAgfSBlbHNlIGlmIChzdGFydERvdCAhPT0gLTEpIHtcbiAgICAgIC8vIFdlIHNhdyBhIG5vbi1kb3QgYW5kIG5vbi1wYXRoIHNlcGFyYXRvciBiZWZvcmUgb3VyIGRvdCwgc28gd2Ugc2hvdWxkXG4gICAgICAvLyBoYXZlIGEgZ29vZCBjaGFuY2UgYXQgaGF2aW5nIGEgbm9uLWVtcHR5IGV4dGVuc2lvblxuICAgICAgcHJlRG90U3RhdGUgPSAtMTtcbiAgICB9XG4gIH1cblxuICBpZiAoXG4gICAgc3RhcnREb3QgPT09IC0xIHx8XG4gICAgZW5kID09PSAtMSB8fFxuICAgIC8vIFdlIHNhdyBhIG5vbi1kb3QgY2hhcmFjdGVyIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgZG90XG4gICAgcHJlRG90U3RhdGUgPT09IDAgfHxcbiAgICAvLyBUaGUgKHJpZ2h0LW1vc3QpIHRyaW1tZWQgcGF0aCBjb21wb25lbnQgaXMgZXhhY3RseSAnLi4nXG4gICAgKHByZURvdFN0YXRlID09PSAxICYmIHN0YXJ0RG90ID09PSBlbmQgLSAxICYmIHN0YXJ0RG90ID09PSBzdGFydFBhcnQgKyAxKVxuICApIHtcbiAgICBpZiAoZW5kICE9PSAtMSkge1xuICAgICAgcmV0LmJhc2UgPSByZXQubmFtZSA9IHBhdGguc2xpY2Uoc3RhcnRQYXJ0LCBlbmQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXQubmFtZSA9IHBhdGguc2xpY2Uoc3RhcnRQYXJ0LCBzdGFydERvdCk7XG4gICAgcmV0LmJhc2UgPSBwYXRoLnNsaWNlKHN0YXJ0UGFydCwgZW5kKTtcbiAgICByZXQuZXh0ID0gcGF0aC5zbGljZShzdGFydERvdCwgZW5kKTtcbiAgfVxuXG4gIC8vIEZhbGxiYWNrIHRvICdcXCcgaW4gY2FzZSB0aGVyZSBpcyBubyBiYXNlbmFtZVxuICByZXQuYmFzZSA9IHJldC5iYXNlIHx8IFwiXFxcXFwiO1xuXG4gIC8vIElmIHRoZSBkaXJlY3RvcnkgaXMgdGhlIHJvb3QsIHVzZSB0aGUgZW50aXJlIHJvb3QgYXMgdGhlIGBkaXJgIGluY2x1ZGluZ1xuICAvLyB0aGUgdHJhaWxpbmcgc2xhc2ggaWYgYW55IChgQzpcXGFiY2AgLT4gYEM6XFxgKS4gT3RoZXJ3aXNlLCBzdHJpcCBvdXQgdGhlXG4gIC8vIHRyYWlsaW5nIHNsYXNoIChgQzpcXGFiY1xcZGVmYCAtPiBgQzpcXGFiY2ApLlxuICBpZiAoc3RhcnRQYXJ0ID4gMCAmJiBzdGFydFBhcnQgIT09IHJvb3RFbmQpIHtcbiAgICByZXQuZGlyID0gcGF0aC5zbGljZSgwLCBzdGFydFBhcnQgLSAxKTtcbiAgfSBlbHNlIHJldC5kaXIgPSByZXQucm9vdDtcblxuICByZXR1cm4gcmV0O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckMsU0FBUyxVQUFVLEVBQUUsUUFBUSxRQUFRLDBCQUEwQjtBQUUvRCxTQUFTLFVBQVUsUUFBUSw0QkFBNEI7QUFDdkQsU0FBUyxlQUFlLEVBQUUsbUJBQW1CLFFBQVEsYUFBYTtBQUlsRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FvQkMsR0FDRCxPQUFPLFNBQVMsTUFBTSxJQUFZO0VBQ2hDLFdBQVc7RUFFWCxNQUFNLE1BQWtCO0lBQUUsTUFBTTtJQUFJLEtBQUs7SUFBSSxNQUFNO0lBQUksS0FBSztJQUFJLE1BQU07RUFBRztFQUV6RSxNQUFNLE1BQU0sS0FBSyxNQUFNO0VBQ3ZCLElBQUksUUFBUSxHQUFHLE9BQU87RUFFdEIsSUFBSSxVQUFVO0VBQ2QsSUFBSSxPQUFPLEtBQUssVUFBVSxDQUFDO0VBRTNCLHNCQUFzQjtFQUN0QixJQUFJLE1BQU0sR0FBRztJQUNYLElBQUksZ0JBQWdCLE9BQU87TUFDekIsb0JBQW9CO01BRXBCLFVBQVU7TUFDVixJQUFJLGdCQUFnQixLQUFLLFVBQVUsQ0FBQyxLQUFLO1FBQ3ZDLDZDQUE2QztRQUM3QyxJQUFJLElBQUk7UUFDUixJQUFJLE9BQU87UUFDWCxzQ0FBc0M7UUFDdEMsTUFBTyxJQUFJLEtBQUssRUFBRSxFQUFHO1VBQ25CLElBQUksZ0JBQWdCLEtBQUssVUFBVSxDQUFDLEtBQUs7UUFD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 +// denoCacheMetadata=8078943296190565738,7200396583797842913
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/e5d326d0e3fc3aabea837af914bc13c1d6ee269e558a56cdb45afb52ab3e139a.js b/vendor/gen/https/jsr.io/e5d326d0e3fc3aabea837af914bc13c1d6ee269e558a56cdb45afb52ab3e139a.js new file mode 100644 index 0000000..b4f8773 --- /dev/null +++ b/vendor/gen/https/jsr.io/e5d326d0e3fc3aabea837af914bc13c1d6ee269e558a56cdb45afb52ab3e139a.js @@ -0,0 +1,35 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { basename as posixBasename } from "./posix/basename.ts"; +import { basename as windowsBasename } from "./windows/basename.ts"; +/** + * Return the last portion of a path. + * + * The trailing directory separators are ignored, and optional suffix is + * removed. + * + * @example Usage + * ```ts + * import { basename } from "@std/path/basename"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(basename("C:\\user\\Documents\\image.png"), "image.png"); + * } else { + * assertEquals(basename("/home/user/Documents/image.png"), "image.png"); + * } + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `basename` from `@std/path/unstable-basename`. + * + * @param path Path to extract the name from. + * @param suffix Suffix to remove from extracted name. + * + * @returns The basename of the path. + */ export function basename(path, suffix = "") { + return isWindows ? windowsBasename(path, suffix) : posixBasename(path, suffix); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9iYXNlbmFtZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBpc1dpbmRvd3MgfSBmcm9tIFwiLi9fb3MudHNcIjtcbmltcG9ydCB7IGJhc2VuYW1lIGFzIHBvc2l4QmFzZW5hbWUgfSBmcm9tIFwiLi9wb3NpeC9iYXNlbmFtZS50c1wiO1xuaW1wb3J0IHsgYmFzZW5hbWUgYXMgd2luZG93c0Jhc2VuYW1lIH0gZnJvbSBcIi4vd2luZG93cy9iYXNlbmFtZS50c1wiO1xuXG4vKipcbiAqIFJldHVybiB0aGUgbGFzdCBwb3J0aW9uIG9mIGEgcGF0aC5cbiAqXG4gKiBUaGUgdHJhaWxpbmcgZGlyZWN0b3J5IHNlcGFyYXRvcnMgYXJlIGlnbm9yZWQsIGFuZCBvcHRpb25hbCBzdWZmaXggaXNcbiAqIHJlbW92ZWQuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBiYXNlbmFtZSB9IGZyb20gXCJAc3RkL3BhdGgvYmFzZW5hbWVcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGlmIChEZW5vLmJ1aWxkLm9zID09PSBcIndpbmRvd3NcIikge1xuICogICBhc3NlcnRFcXVhbHMoYmFzZW5hbWUoXCJDOlxcXFx1c2VyXFxcXERvY3VtZW50c1xcXFxpbWFnZS5wbmdcIiksIFwiaW1hZ2UucG5nXCIpO1xuICogfSBlbHNlIHtcbiAqICAgYXNzZXJ0RXF1YWxzKGJhc2VuYW1lKFwiL2hvbWUvdXNlci9Eb2N1bWVudHMvaW1hZ2UucG5nXCIpLCBcImltYWdlLnBuZ1wiKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIE5vdGU6IElmIHlvdSBhcmUgd29ya2luZyB3aXRoIGZpbGUgVVJMcyxcbiAqIHVzZSB0aGUgbmV3IHZlcnNpb24gb2YgYGJhc2VuYW1lYCBmcm9tIGBAc3RkL3BhdGgvdW5zdGFibGUtYmFzZW5hbWVgLlxuICpcbiAqIEBwYXJhbSBwYXRoIFBhdGggdG8gZXh0cmFjdCB0aGUgbmFtZSBmcm9tLlxuICogQHBhcmFtIHN1ZmZpeCBTdWZmaXggdG8gcmVtb3ZlIGZyb20gZXh0cmFjdGVkIG5hbWUuXG4gKlxuICogQHJldHVybnMgVGhlIGJhc2VuYW1lIG9mIHRoZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYmFzZW5hbWUocGF0aDogc3RyaW5nLCBzdWZmaXggPSBcIlwiKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlzV2luZG93c1xuICAgID8gd2luZG93c0Jhc2VuYW1lKHBhdGgsIHN1ZmZpeClcbiAgICA6IHBvc2l4QmFzZW5hbWUocGF0aCwgc3VmZml4KTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDLFNBQVMsU0FBUyxRQUFRLFdBQVc7QUFDckMsU0FBUyxZQUFZLGFBQWEsUUFBUSxzQkFBc0I7QUFDaEUsU0FBUyxZQUFZLGVBQWUsUUFBUSx3QkFBd0I7QUFFcEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0F5QkMsR0FDRCxPQUFPLFNBQVMsU0FBUyxJQUFZLEVBQUUsU0FBUyxFQUFFO0VBQ2hELE9BQU8sWUFDSCxnQkFBZ0IsTUFBTSxVQUN0QixjQUFjLE1BQU07QUFDMUIifQ== +// denoCacheMetadata=14169661831040093700,12893483443537974914
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/e5d3d4e4308057b025750f79dd17e2d4a272067a0d1086a81f574fbbb347a835.js b/vendor/gen/https/jsr.io/e5d3d4e4308057b025750f79dd17e2d4a272067a0d1086a81f574fbbb347a835.js new file mode 100644 index 0000000..72e53a9 --- /dev/null +++ b/vendor/gen/https/jsr.io/e5d3d4e4308057b025750f79dd17e2d4a272067a0d1086a81f574fbbb347a835.js @@ -0,0 +1,58 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// Copyright the Browserify authors. MIT License. +// Ported mostly from https://github.com/browserify/path-browserify/ +// This module is browser compatible. +/** + * Utilities for working with OS-specific file paths. + * + * Functions from this module will automatically switch to support the path style + * of the current OS, either `windows` for Microsoft Windows, or `posix` for + * every other operating system, eg. Linux, MacOS, BSD etc. + * + * To use functions for a specific path style regardless of the current OS + * import the modules from the platform sub directory instead. + * + * Example, for POSIX: + * + * ```ts + * import { fromFileUrl } from "@std/path/posix/from-file-url"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(fromFileUrl("file:///home/foo"), "/home/foo"); + * ``` + * + * Or, for Windows: + * + * ```ts + * import { fromFileUrl } from "@std/path/windows/from-file-url"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(fromFileUrl("file:///home/foo"), "\\home\\foo"); + * ``` + * + * Functions for working with URLs can be found in + * {@link ./doc/posix/~ | @std/path/posix}. + * + * @module + */ export * from "./basename.ts"; +export * from "./constants.ts"; +export * from "./dirname.ts"; +export * from "./extname.ts"; +export * from "./format.ts"; +export * from "./from_file_url.ts"; +export * from "./is_absolute.ts"; +export * from "./join.ts"; +export * from "./normalize.ts"; +export * from "./parse.ts"; +export * from "./relative.ts"; +export * from "./resolve.ts"; +export * from "./to_file_url.ts"; +export * from "./to_namespaced_path.ts"; +export * from "./common.ts"; +export * from "./types.ts"; +export * from "./glob_to_regexp.ts"; +export * from "./is_glob.ts"; +export * from "./join_globs.ts"; +export * from "./normalize_glob.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9tb2QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cbi8vIFBvcnRlZCBtb3N0bHkgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYnJvd3NlcmlmeS9wYXRoLWJyb3dzZXJpZnkvXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbi8qKlxuICogVXRpbGl0aWVzIGZvciB3b3JraW5nIHdpdGggT1Mtc3BlY2lmaWMgZmlsZSBwYXRocy5cbiAqXG4gKiBGdW5jdGlvbnMgZnJvbSB0aGlzIG1vZHVsZSB3aWxsIGF1dG9tYXRpY2FsbHkgc3dpdGNoIHRvIHN1cHBvcnQgdGhlIHBhdGggc3R5bGVcbiAqIG9mIHRoZSBjdXJyZW50IE9TLCBlaXRoZXIgYHdpbmRvd3NgIGZvciBNaWNyb3NvZnQgV2luZG93cywgb3IgYHBvc2l4YCBmb3JcbiAqIGV2ZXJ5IG90aGVyIG9wZXJhdGluZyBzeXN0ZW0sIGVnLiBMaW51eCwgTWFjT1MsIEJTRCBldGMuXG4gKlxuICogVG8gdXNlIGZ1bmN0aW9ucyBmb3IgYSBzcGVjaWZpYyBwYXRoIHN0eWxlIHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgT1NcbiAqIGltcG9ydCB0aGUgbW9kdWxlcyBmcm9tIHRoZSBwbGF0Zm9ybSBzdWIgZGlyZWN0b3J5IGluc3RlYWQuXG4gKlxuICogRXhhbXBsZSwgZm9yIFBPU0lYOlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBmcm9tRmlsZVVybCB9IGZyb20gXCJAc3RkL3BhdGgvcG9zaXgvZnJvbS1maWxlLXVybFwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogYXNzZXJ0RXF1YWxzKGZyb21GaWxlVXJsKFwiZmlsZTovLy9ob21lL2Zvb1wiKSwgXCIvaG9tZS9mb29cIik7XG4gKiBgYGBcbiAqXG4gKiBPciwgZm9yIFdpbmRvd3M6XG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGZyb21GaWxlVXJsIH0gZnJvbSBcIkBzdGQvcGF0aC93aW5kb3dzL2Zyb20tZmlsZS11cmxcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGFzc2VydEVxdWFscyhmcm9tRmlsZVVybChcImZpbGU6Ly8vaG9tZS9mb29cIiksIFwiXFxcXGhvbWVcXFxcZm9vXCIpO1xuICogYGBgXG4gKlxuICogRnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggVVJMcyBjYW4gYmUgZm91bmQgaW5cbiAqIHtAbGluayAuL2RvYy9wb3NpeC9+IHwgQHN0ZC9wYXRoL3Bvc2l4fS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cbmV4cG9ydCAqIGZyb20gXCIuL2Jhc2VuYW1lLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb25zdGFudHMudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Rpcm5hbWUudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2V4dG5hbWUudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Zvcm1hdC50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZnJvbV9maWxlX3VybC50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vaXNfYWJzb2x1dGUudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2pvaW4udHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL25vcm1hbGl6ZS50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcGFyc2UudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JlbGF0aXZlLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZXNvbHZlLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90b19maWxlX3VybC50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdG9fbmFtZXNwYWNlZF9wYXRoLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21tb24udHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9nbG9iX3RvX3JlZ2V4cC50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vaXNfZ2xvYi50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vam9pbl9nbG9icy50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbm9ybWFsaXplX2dsb2IudHNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUsaURBQWlEO0FBQ2pELG9FQUFvRTtBQUNwRSxxQ0FBcUM7QUFFckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBZ0NDLEdBQ0QsY0FBYyxnQkFBZ0I7QUFDOUIsY0FBYyxpQkFBaUI7QUFDL0IsY0FBYyxlQUFlO0FBQzdCLGNBQWMsZUFBZTtBQUM3QixjQUFjLGNBQWM7QUFDNUIsY0FBYyxxQkFBcUI7QUFDbkMsY0FBYyxtQkFBbUI7QUFDakMsY0FBYyxZQUFZO0FBQzFCLGNBQWMsaUJBQWlCO0FBQy9CLGNBQWMsYUFBYTtBQUMzQixjQUFjLGdCQUFnQjtBQUM5QixjQUFjLGVBQWU7QUFDN0IsY0FBYyxtQkFBbUI7QUFDakMsY0FBYywwQkFBMEI7QUFDeEMsY0FBYyxjQUFjO0FBQzVCLGNBQWMsYUFBYTtBQUMzQixjQUFjLHNCQUFzQjtBQUNwQyxjQUFjLGVBQWU7QUFDN0IsY0FBYyxrQkFBa0I7QUFDaEMsY0FBYyxzQkFBc0IifQ== +// denoCacheMetadata=7353926715705670701,17175681778028839612
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/e653f5d5a31bad09961e65fa9dea0ac82103c43f2ecf35967dcc67a4c354491d.js b/vendor/gen/https/jsr.io/e653f5d5a31bad09961e65fa9dea0ac82103c43f2ecf35967dcc67a4c354491d.js new file mode 100644 index 0000000..ba113b6 --- /dev/null +++ b/vendor/gen/https/jsr.io/e653f5d5a31bad09961e65fa9dea0ac82103c43f2ecf35967dcc67a4c354491d.js @@ -0,0 +1,12 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +export function extractFrontMatter(input, extractRegExp) { + const groups = extractRegExp.exec(input)?.groups; + if (!groups) throw new TypeError("Unexpected end of input"); + const { frontMatter = "", body = "" } = groups; + return { + frontMatter, + body + }; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnJvbnQtbWF0dGVyLzEuMC45L19zaGFyZWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RGcm9udE1hdHRlcihcbiAgaW5wdXQ6IHN0cmluZyxcbiAgZXh0cmFjdFJlZ0V4cDogUmVnRXhwLFxuKTogeyBmcm9udE1hdHRlcjogc3RyaW5nOyBib2R5OiBzdHJpbmcgfSB7XG4gIGNvbnN0IGdyb3VwcyA9IGV4dHJhY3RSZWdFeHAuZXhlYyhpbnB1dCk/Lmdyb3VwcztcbiAgaWYgKCFncm91cHMpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiKTtcbiAgY29uc3QgeyBmcm9udE1hdHRlciA9IFwiXCIsIGJvZHkgPSBcIlwiIH0gPSBncm91cHM7XG4gIHJldHVybiB7IGZyb250TWF0dGVyLCBib2R5IH07XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBRXJELE9BQU8sU0FBUyxtQkFDZCxLQUFhLEVBQ2IsYUFBcUI7RUFFckIsTUFBTSxTQUFTLGNBQWMsSUFBSSxDQUFDLFFBQVE7RUFDMUMsSUFBSSxDQUFDLFFBQVEsTUFBTSxJQUFJLFVBQVU7RUFDakMsTUFBTSxFQUFFLGNBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUc7RUFDeEMsT0FBTztJQUFFO0lBQWE7RUFBSztBQUM3QiJ9 +// denoCacheMetadata=8858933314568297815,14589197361695567858
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/e78d1e56f9ecfb52c371cb5d4386f81f01665c44834480369825f802c56e9ee1.js b/vendor/gen/https/jsr.io/e78d1e56f9ecfb52c371cb5d4386f81f01665c44834480369825f802c56e9ee1.js new file mode 100644 index 0000000..ad0d78e --- /dev/null +++ b/vendor/gen/https/jsr.io/e78d1e56f9ecfb52c371cb5d4386f81f01665c44834480369825f802c56e9ee1.js @@ -0,0 +1,53 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { normalizeString } from "../_common/normalize_string.ts"; +import { assertPath } from "../_common/assert_path.ts"; +import { isPosixPathSeparator } from "./_util.ts"; +/** + * Resolves path segments into a `path`. + * + * @example Usage + * ```ts + * import { resolve } from "@std/path/posix/resolve"; + * import { assertEquals } from "@std/assert"; + * + * const path = resolve("/foo", "bar", "baz/asdf", "quux", ".."); + * assertEquals(path, "/foo/bar/baz/asdf"); + * ``` + * + * @param pathSegments The path segments to resolve. + * @returns The resolved path. + */ export function resolve(...pathSegments) { + let resolvedPath = ""; + let resolvedAbsolute = false; + for(let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--){ + let path; + if (i >= 0) path = pathSegments[i]; + else { + // deno-lint-ignore no-explicit-any + const { Deno } = globalThis; + if (typeof Deno?.cwd !== "function") { + throw new TypeError("Resolved a relative path without a current working directory (CWD)"); + } + path = Deno.cwd(); + } + assertPath(path); + // Skip empty entries + if (path.length === 0) { + continue; + } + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = isPosixPathSeparator(path.charCodeAt(0)); + } + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when Deno.cwd() fails) + // Normalize the path + resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, "/", isPosixPathSeparator); + if (resolvedAbsolute) { + if (resolvedPath.length > 0) return `/${resolvedPath}`; + else return "/"; + } else if (resolvedPath.length > 0) return resolvedPath; + else return "."; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9wb3NpeC9yZXNvbHZlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IG5vcm1hbGl6ZVN0cmluZyB9IGZyb20gXCIuLi9fY29tbW9uL25vcm1hbGl6ZV9zdHJpbmcudHNcIjtcbmltcG9ydCB7IGFzc2VydFBhdGggfSBmcm9tIFwiLi4vX2NvbW1vbi9hc3NlcnRfcGF0aC50c1wiO1xuaW1wb3J0IHsgaXNQb3NpeFBhdGhTZXBhcmF0b3IgfSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuXG4vKipcbiAqIFJlc29sdmVzIHBhdGggc2VnbWVudHMgaW50byBhIGBwYXRoYC5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHJlc29sdmUgfSBmcm9tIFwiQHN0ZC9wYXRoL3Bvc2l4L3Jlc29sdmVcIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGNvbnN0IHBhdGggPSByZXNvbHZlKFwiL2Zvb1wiLCBcImJhclwiLCBcImJhei9hc2RmXCIsIFwicXV1eFwiLCBcIi4uXCIpO1xuICogYXNzZXJ0RXF1YWxzKHBhdGgsIFwiL2Zvby9iYXIvYmF6L2FzZGZcIik7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gcGF0aFNlZ21lbnRzIFRoZSBwYXRoIHNlZ21lbnRzIHRvIHJlc29sdmUuXG4gKiBAcmV0dXJucyBUaGUgcmVzb2x2ZWQgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmUoLi4ucGF0aFNlZ21lbnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIGxldCByZXNvbHZlZFBhdGggPSBcIlwiO1xuICBsZXQgcmVzb2x2ZWRBYnNvbHV0ZSA9IGZhbHNlO1xuXG4gIGZvciAobGV0IGkgPSBwYXRoU2VnbWVudHMubGVuZ3RoIC0gMTsgaSA+PSAtMSAmJiAhcmVzb2x2ZWRBYnNvbHV0ZTsgaS0tKSB7XG4gICAgbGV0IHBhdGg6IHN0cmluZztcblxuICAgIGlmIChpID49IDApIHBhdGggPSBwYXRoU2VnbWVudHNbaV0hO1xuICAgIGVsc2Uge1xuICAgICAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgICAgIGNvbnN0IHsgRGVubyB9ID0gZ2xvYmFsVGhpcyBhcyBhbnk7XG4gICAgICBpZiAodHlwZW9mIERlbm8/LmN3ZCAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgXCJSZXNvbHZlZCBhIHJlbGF0aXZlIHBhdGggd2l0aG91dCBhIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgKENXRClcIixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHBhdGggPSBEZW5vLmN3ZCgpO1xuICAgIH1cblxuICAgIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgICAvLyBTa2lwIGVtcHR5IGVudHJpZXNcbiAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHJlc29sdmVkUGF0aCA9IGAke3BhdGh9LyR7cmVzb2x2ZWRQYXRofWA7XG4gICAgcmVzb2x2ZWRBYnNvbHV0ZSA9IGlzUG9zaXhQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdCgwKSk7XG4gIH1cblxuICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwYXRoIHNob3VsZCBiZSByZXNvbHZlZCB0byBhIGZ1bGwgYWJzb2x1dGUgcGF0aCwgYnV0XG4gIC8vIGhhbmRsZSByZWxhdGl2ZSBwYXRocyB0byBiZSBzYWZlIChtaWdodCBoYXBwZW4gd2hlbiBEZW5vLmN3ZCgpIGZhaWxzKVxuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgcGF0aFxuICByZXNvbHZlZFBhdGggPSBub3JtYWxpemVTdHJpbmcoXG4gICAgcmVzb2x2ZWRQYXRoLFxuICAgICFyZXNvbHZlZEFic29sdXRlLFxuICAgIFwiL1wiLFxuICAgIGlzUG9zaXhQYXRoU2VwYXJhdG9yLFxuICApO1xuXG4gIGlmIChyZXNvbHZlZEFic29sdXRlKSB7XG4gICAgaWYgKHJlc29sdmVkUGF0aC5sZW5ndGggPiAwKSByZXR1cm4gYC8ke3Jlc29sdmVkUGF0aH1gO1xuICAgIGVsc2UgcmV0dXJuIFwiL1wiO1xuICB9IGVsc2UgaWYgKHJlc29sdmVkUGF0aC5sZW5ndGggPiAwKSByZXR1cm4gcmVzb2x2ZWRQYXRoO1xuICBlbHNlIHJldHVybiBcIi5cIjtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDLFNBQVMsZUFBZSxRQUFRLGlDQUFpQztBQUNqRSxTQUFTLFVBQVUsUUFBUSw0QkFBNEI7QUFDdkQsU0FBUyxvQkFBb0IsUUFBUSxhQUFhO0FBRWxEOzs7Ozs7Ozs7Ozs7OztDQWNDLEdBQ0QsT0FBTyxTQUFTLFFBQVEsR0FBRyxZQUFzQjtFQUMvQyxJQUFJLGVBQWU7RUFDbkIsSUFBSSxtQkFBbUI7RUFFdkIsSUFBSyxJQUFJLElBQUksYUFBYSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLGtCQUFrQixJQUFLO0lBQ3ZFLElBQUk7SUFFSixJQUFJLEtBQUssR0FBRyxPQUFPLFlBQVksQ0FBQyxFQUFFO1NBQzdCO01BQ0gsbUNBQW1DO01BQ25DLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRztNQUNqQixJQUFJLE9BQU8sTUFBTSxRQUFRLFlBQVk7UUFDbkMsTUFBTSxJQUFJLFVBQ1I7TUFFSjtNQUNBLE9BQU8sS0FBSyxHQUFHO0lBQ2pCO0lBRUEsV0FBVztJQUVYLHFCQUFxQjtJQUNyQixJQUFJLEtBQUssTUFBTSxLQUFLLEdBQUc7TUFDckI7SUFDRjtJQUVBLGVBQWUsR0FBRyxLQUFLLENBQUMsRUFBRSxjQUFjO0lBQ3hDLG1CQUFtQixxQkFBcUIsS0FBSyxVQUFVLENBQUM7RUFDMUQ7RUFFQSx5RUFBeUU7RUFDekUsd0VBQXdFO0VBRXhFLHFCQUFxQjtFQUNyQixlQUFlLGdCQUNiLGNBQ0EsQ0FBQyxrQkFDRCxLQUNBO0VBR0YsSUFBSSxrQkFBa0I7SUFDcEIsSUFBSSxhQUFhLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEVBQUUsY0FBYztTQUNqRCxPQUFPO0VBQ2QsT0FBTyxJQUFJLGFBQWEsTUFBTSxHQUFHLEdBQUcsT0FBTztPQUN0QyxPQUFPO0FBQ2QifQ== +// denoCacheMetadata=12065130349345655075,16192651438224717247
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/eacfc9300d4ef48ffa8b03a1a3ed74761dbb5a1f726c2ed6384306dced42cf3b.js b/vendor/gen/https/jsr.io/eacfc9300d4ef48ffa8b03a1a3ed74761dbb5a1f726c2ed6384306dced42cf3b.js new file mode 100644 index 0000000..f172d99 --- /dev/null +++ b/vendor/gen/https/jsr.io/eacfc9300d4ef48ffa8b03a1a3ed74761dbb5a1f726c2ed6384306dced42cf3b.js @@ -0,0 +1,11356 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +export default { + "application/1d-interleaved-parityfec": { + "source": "iana" + }, + "application/3gpdash-qoe-report+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/3gpp-ims+xml": { + "source": "iana", + "compressible": true + }, + "application/3gpphal+json": { + "source": "iana", + "compressible": true + }, + "application/3gpphalforms+json": { + "source": "iana", + "compressible": true + }, + "application/a2l": { + "source": "iana" + }, + "application/ace+cbor": { + "source": "iana" + }, + "application/ace+json": { + "source": "iana", + "compressible": true + }, + "application/ace-groupcomm+cbor": { + "source": "iana" + }, + "application/activemessage": { + "source": "iana" + }, + "application/activity+json": { + "source": "iana", + "compressible": true + }, + "application/aif+cbor": { + "source": "iana" + }, + "application/aif+json": { + "source": "iana", + "compressible": true + }, + "application/alto-cdni+json": { + "source": "iana", + "compressible": true + }, + "application/alto-cdnifilter+json": { + "source": "iana", + "compressible": true + }, + "application/alto-costmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-costmapfilter+json": { + "source": "iana", + "compressible": true + }, + "application/alto-directory+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointcost+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointcostparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointprop+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointpropparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-error+json": { + "source": "iana", + "compressible": true + }, + "application/alto-networkmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-networkmapfilter+json": { + "source": "iana", + "compressible": true + }, + "application/alto-propmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-propmapparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-tips+json": { + "source": "iana", + "compressible": true + }, + "application/alto-tipsparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-updatestreamcontrol+json": { + "source": "iana", + "compressible": true + }, + "application/alto-updatestreamparams+json": { + "source": "iana", + "compressible": true + }, + "application/aml": { + "source": "iana" + }, + "application/andrew-inset": { + "source": "iana", + "extensions": [ + "ez" + ] + }, + "application/appinstaller": { + "compressible": false, + "extensions": [ + "appinstaller" + ] + }, + "application/applefile": { + "source": "iana" + }, + "application/applixware": { + "source": "apache", + "extensions": [ + "aw" + ] + }, + "application/appx": { + "compressible": false, + "extensions": [ + "appx" + ] + }, + "application/appxbundle": { + "compressible": false, + "extensions": [ + "appxbundle" + ] + }, + "application/at+jwt": { + "source": "iana" + }, + "application/atf": { + "source": "iana" + }, + "application/atfx": { + "source": "iana" + }, + "application/atom+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "atom" + ] + }, + "application/atomcat+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "atomcat" + ] + }, + "application/atomdeleted+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "atomdeleted" + ] + }, + "application/atomicmail": { + "source": "iana" + }, + "application/atomsvc+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "atomsvc" + ] + }, + "application/atsc-dwd+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "dwd" + ] + }, + "application/atsc-dynamic-event-message": { + "source": "iana" + }, + "application/atsc-held+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "held" + ] + }, + "application/atsc-rdt+json": { + "source": "iana", + "compressible": true + }, + "application/atsc-rsat+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "rsat" + ] + }, + "application/atxml": { + "source": "iana" + }, + "application/auth-policy+xml": { + "source": "iana", + "compressible": true + }, + "application/automationml-aml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "aml" + ] + }, + "application/automationml-amlx+zip": { + "source": "iana", + "compressible": false, + "extensions": [ + "amlx" + ] + }, + "application/bacnet-xdd+zip": { + "source": "iana", + "compressible": false + }, + "application/batch-smtp": { + "source": "iana" + }, + "application/bdoc": { + "compressible": false, + "extensions": [ + "bdoc" + ] + }, + "application/beep+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/bufr": { + "source": "iana" + }, + "application/c2pa": { + "source": "iana" + }, + "application/calendar+json": { + "source": "iana", + "compressible": true + }, + "application/calendar+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xcs" + ] + }, + "application/call-completion": { + "source": "iana" + }, + "application/cals-1840": { + "source": "iana" + }, + "application/captive+json": { + "source": "iana", + "compressible": true + }, + "application/cbor": { + "source": "iana" + }, + "application/cbor-seq": { + "source": "iana" + }, + "application/cccex": { + "source": "iana" + }, + "application/ccmp+xml": { + "source": "iana", + "compressible": true + }, + "application/ccxml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "ccxml" + ] + }, + "application/cda+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/cdfx+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "cdfx" + ] + }, + "application/cdmi-capability": { + "source": "iana", + "extensions": [ + "cdmia" + ] + }, + "application/cdmi-container": { + "source": "iana", + "extensions": [ + "cdmic" + ] + }, + "application/cdmi-domain": { + "source": "iana", + "extensions": [ + "cdmid" + ] + }, + "application/cdmi-object": { + "source": "iana", + "extensions": [ + "cdmio" + ] + }, + "application/cdmi-queue": { + "source": "iana", + "extensions": [ + "cdmiq" + ] + }, + "application/cdni": { + "source": "iana" + }, + "application/cea": { + "source": "iana" + }, + "application/cea-2018+xml": { + "source": "iana", + "compressible": true + }, + "application/cellml+xml": { + "source": "iana", + "compressible": true + }, + "application/cfw": { + "source": "iana" + }, + "application/cid-edhoc+cbor-seq": { + "source": "iana" + }, + "application/city+json": { + "source": "iana", + "compressible": true + }, + "application/clr": { + "source": "iana" + }, + "application/clue+xml": { + "source": "iana", + "compressible": true + }, + "application/clue_info+xml": { + "source": "iana", + "compressible": true + }, + "application/cms": { + "source": "iana" + }, + "application/cnrp+xml": { + "source": "iana", + "compressible": true + }, + "application/coap-group+json": { + "source": "iana", + "compressible": true + }, + "application/coap-payload": { + "source": "iana" + }, + "application/commonground": { + "source": "iana" + }, + "application/concise-problem-details+cbor": { + "source": "iana" + }, + "application/conference-info+xml": { + "source": "iana", + "compressible": true + }, + "application/cose": { + "source": "iana" + }, + "application/cose-key": { + "source": "iana" + }, + "application/cose-key-set": { + "source": "iana" + }, + "application/cose-x509": { + "source": "iana" + }, + "application/cpl+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "cpl" + ] + }, + "application/csrattrs": { + "source": "iana" + }, + "application/csta+xml": { + "source": "iana", + "compressible": true + }, + "application/cstadata+xml": { + "source": "iana", + "compressible": true + }, + "application/csvm+json": { + "source": "iana", + "compressible": true + }, + "application/cu-seeme": { + "source": "apache", + "extensions": [ + "cu" + ] + }, + "application/cwl": { + "source": "iana", + "extensions": [ + "cwl" + ] + }, + "application/cwl+json": { + "source": "iana", + "compressible": true + }, + "application/cwl+yaml": { + "source": "iana" + }, + "application/cwt": { + "source": "iana" + }, + "application/cybercash": { + "source": "iana" + }, + "application/dart": { + "compressible": true + }, + "application/dash+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "mpd" + ] + }, + "application/dash-patch+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "mpp" + ] + }, + "application/dashdelta": { + "source": "iana" + }, + "application/davmount+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "davmount" + ] + }, + "application/dca-rft": { + "source": "iana" + }, + "application/dcd": { + "source": "iana" + }, + "application/dec-dx": { + "source": "iana" + }, + "application/dialog-info+xml": { + "source": "iana", + "compressible": true + }, + "application/dicom": { + "source": "iana" + }, + "application/dicom+json": { + "source": "iana", + "compressible": true + }, + "application/dicom+xml": { + "source": "iana", + "compressible": true + }, + "application/dii": { + "source": "iana" + }, + "application/dit": { + "source": "iana" + }, + "application/dns": { + "source": "iana" + }, + "application/dns+json": { + "source": "iana", + "compressible": true + }, + "application/dns-message": { + "source": "iana" + }, + "application/docbook+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "dbk" + ] + }, + "application/dots+cbor": { + "source": "iana" + }, + "application/dpop+jwt": { + "source": "iana" + }, + "application/dskpp+xml": { + "source": "iana", + "compressible": true + }, + "application/dssc+der": { + "source": "iana", + "extensions": [ + "dssc" + ] + }, + "application/dssc+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xdssc" + ] + }, + "application/dvcs": { + "source": "iana" + }, + "application/ecmascript": { + "source": "apache", + "compressible": true, + "extensions": [ + "ecma" + ] + }, + "application/edhoc+cbor-seq": { + "source": "iana" + }, + "application/edi-consent": { + "source": "iana" + }, + "application/edi-x12": { + "source": "iana", + "compressible": false + }, + "application/edifact": { + "source": "iana", + "compressible": false + }, + "application/efi": { + "source": "iana" + }, + "application/elm+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/elm+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.cap+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/emergencycalldata.comment+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.control+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.deviceinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.ecall.msd": { + "source": "iana" + }, + "application/emergencycalldata.legacyesn+json": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.providerinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.serviceinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.subscriberinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.veds+xml": { + "source": "iana", + "compressible": true + }, + "application/emma+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "emma" + ] + }, + "application/emotionml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "emotionml" + ] + }, + "application/encaprtp": { + "source": "iana" + }, + "application/epp+xml": { + "source": "iana", + "compressible": true + }, + "application/epub+zip": { + "source": "iana", + "compressible": false, + "extensions": [ + "epub" + ] + }, + "application/eshop": { + "source": "iana" + }, + "application/exi": { + "source": "iana", + "extensions": [ + "exi" + ] + }, + "application/expect-ct-report+json": { + "source": "iana", + "compressible": true + }, + "application/express": { + "source": "iana", + "extensions": [ + "exp" + ] + }, + "application/fastinfoset": { + "source": "iana" + }, + "application/fastsoap": { + "source": "iana" + }, + "application/fdf": { + "source": "iana", + "extensions": [ + "fdf" + ] + }, + "application/fdt+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "fdt" + ] + }, + "application/fhir+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/fhir+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/fido.trusted-apps+json": { + "compressible": true + }, + "application/fits": { + "source": "iana" + }, + "application/flexfec": { + "source": "iana" + }, + "application/font-sfnt": { + "source": "iana" + }, + "application/font-tdpfr": { + "source": "iana", + "extensions": [ + "pfr" + ] + }, + "application/font-woff": { + "source": "iana", + "compressible": false + }, + "application/framework-attributes+xml": { + "source": "iana", + "compressible": true + }, + "application/geo+json": { + "source": "iana", + "compressible": true, + "extensions": [ + "geojson" + ] + }, + "application/geo+json-seq": { + "source": "iana" + }, + "application/geopackage+sqlite3": { + "source": "iana" + }, + "application/geoxacml+json": { + "source": "iana", + "compressible": true + }, + "application/geoxacml+xml": { + "source": "iana", + "compressible": true + }, + "application/gltf-buffer": { + "source": "iana" + }, + "application/gml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "gml" + ] + }, + "application/gnap-binding-jws": { + "source": "iana" + }, + "application/gnap-binding-jwsd": { + "source": "iana" + }, + "application/gnap-binding-rotation-jws": { + "source": "iana" + }, + "application/gnap-binding-rotation-jwsd": { + "source": "iana" + }, + "application/gpx+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "gpx" + ] + }, + "application/grib": { + "source": "iana" + }, + "application/gxf": { + "source": "apache", + "extensions": [ + "gxf" + ] + }, + "application/gzip": { + "source": "iana", + "compressible": false, + "extensions": [ + "gz" + ] + }, + "application/h224": { + "source": "iana" + }, + "application/held+xml": { + "source": "iana", + "compressible": true + }, + "application/hjson": { + "extensions": [ + "hjson" + ] + }, + "application/hl7v2+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/http": { + "source": "iana" + }, + "application/hyperstudio": { + "source": "iana", + "extensions": [ + "stk" + ] + }, + "application/ibe-key-request+xml": { + "source": "iana", + "compressible": true + }, + "application/ibe-pkg-reply+xml": { + "source": "iana", + "compressible": true + }, + "application/ibe-pp-data": { + "source": "iana" + }, + "application/iges": { + "source": "iana" + }, + "application/im-iscomposing+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/index": { + "source": "iana" + }, + "application/index.cmd": { + "source": "iana" + }, + "application/index.obj": { + "source": "iana" + }, + "application/index.response": { + "source": "iana" + }, + "application/index.vnd": { + "source": "iana" + }, + "application/inkml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "ink", + "inkml" + ] + }, + "application/iotp": { + "source": "iana" + }, + "application/ipfix": { + "source": "iana", + "extensions": [ + "ipfix" + ] + }, + "application/ipp": { + "source": "iana" + }, + "application/isup": { + "source": "iana" + }, + "application/its+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "its" + ] + }, + "application/java-archive": { + "source": "iana", + "compressible": false, + "extensions": [ + "jar", + "war", + "ear" + ] + }, + "application/java-serialized-object": { + "source": "apache", + "compressible": false, + "extensions": [ + "ser" + ] + }, + "application/java-vm": { + "source": "apache", + "compressible": false, + "extensions": [ + "class" + ] + }, + "application/javascript": { + "source": "apache", + "charset": "UTF-8", + "compressible": true, + "extensions": [ + "js" + ] + }, + "application/jf2feed+json": { + "source": "iana", + "compressible": true + }, + "application/jose": { + "source": "iana" + }, + "application/jose+json": { + "source": "iana", + "compressible": true + }, + "application/jrd+json": { + "source": "iana", + "compressible": true + }, + "application/jscalendar+json": { + "source": "iana", + "compressible": true + }, + "application/jscontact+json": { + "source": "iana", + "compressible": true + }, + "application/json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": [ + "json", + "map" + ] + }, + "application/json-patch+json": { + "source": "iana", + "compressible": true + }, + "application/json-seq": { + "source": "iana" + }, + "application/json5": { + "extensions": [ + "json5" + ] + }, + "application/jsonml+json": { + "source": "apache", + "compressible": true, + "extensions": [ + "jsonml" + ] + }, + "application/jsonpath": { + "source": "iana" + }, + "application/jwk+json": { + "source": "iana", + "compressible": true + }, + "application/jwk-set+json": { + "source": "iana", + "compressible": true + }, + "application/jwt": { + "source": "iana" + }, + "application/kpml-request+xml": { + "source": "iana", + "compressible": true + }, + "application/kpml-response+xml": { + "source": "iana", + "compressible": true + }, + "application/ld+json": { + "source": "iana", + "compressible": true, + "extensions": [ + "jsonld" + ] + }, + "application/lgr+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "lgr" + ] + }, + "application/link-format": { + "source": "iana" + }, + "application/linkset": { + "source": "iana" + }, + "application/linkset+json": { + "source": "iana", + "compressible": true + }, + "application/load-control+xml": { + "source": "iana", + "compressible": true + }, + "application/logout+jwt": { + "source": "iana" + }, + "application/lost+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "lostxml" + ] + }, + "application/lostsync+xml": { + "source": "iana", + "compressible": true + }, + "application/lpf+zip": { + "source": "iana", + "compressible": false + }, + "application/lxf": { + "source": "iana" + }, + "application/mac-binhex40": { + "source": "iana", + "extensions": [ + "hqx" + ] + }, + "application/mac-compactpro": { + "source": "apache", + "extensions": [ + "cpt" + ] + }, + "application/macwriteii": { + "source": "iana" + }, + "application/mads+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "mads" + ] + }, + "application/manifest+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": [ + "webmanifest" + ] + }, + "application/marc": { + "source": "iana", + "extensions": [ + "mrc" + ] + }, + "application/marcxml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "mrcx" + ] + }, + "application/mathematica": { + "source": "iana", + "extensions": [ + "ma", + "nb", + "mb" + ] + }, + "application/mathml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "mathml" + ] + }, + "application/mathml-content+xml": { + "source": "iana", + "compressible": true + }, + "application/mathml-presentation+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-associated-procedure-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-deregister+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-envelope+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-msk+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-msk-response+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-protection-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-reception-report+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-register+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-register-response+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-schedule+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-user-service-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbox": { + "source": "iana", + "extensions": [ + "mbox" + ] + }, + "application/media-policy-dataset+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "mpf" + ] + }, + "application/media_control+xml": { + "source": "iana", + "compressible": true + }, + "application/mediaservercontrol+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "mscml" + ] + }, + "application/merge-patch+json": { + "source": "iana", + "compressible": true + }, + "application/metalink+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "metalink" + ] + }, + "application/metalink4+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "meta4" + ] + }, + "application/mets+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "mets" + ] + }, + "application/mf4": { + "source": "iana" + }, + "application/mikey": { + "source": "iana" + }, + "application/mipc": { + "source": "iana" + }, + "application/missing-blocks+cbor-seq": { + "source": "iana" + }, + "application/mmt-aei+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "maei" + ] + }, + "application/mmt-usd+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "musd" + ] + }, + "application/mods+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "mods" + ] + }, + "application/moss-keys": { + "source": "iana" + }, + "application/moss-signature": { + "source": "iana" + }, + "application/mosskey-data": { + "source": "iana" + }, + "application/mosskey-request": { + "source": "iana" + }, + "application/mp21": { + "source": "iana", + "extensions": [ + "m21", + "mp21" + ] + }, + "application/mp4": { + "source": "iana", + "extensions": [ + "mp4", + "mpg4", + "mp4s", + "m4p" + ] + }, + "application/mpeg4-generic": { + "source": "iana" + }, + "application/mpeg4-iod": { + "source": "iana" + }, + "application/mpeg4-iod-xmt": { + "source": "iana" + }, + "application/mrb-consumer+xml": { + "source": "iana", + "compressible": true + }, + "application/mrb-publish+xml": { + "source": "iana", + "compressible": true + }, + "application/msc-ivr+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/msc-mixer+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/msix": { + "compressible": false, + "extensions": [ + "msix" + ] + }, + "application/msixbundle": { + "compressible": false, + "extensions": [ + "msixbundle" + ] + }, + "application/msword": { + "source": "iana", + "compressible": false, + "extensions": [ + "doc", + "dot" + ] + }, + "application/mud+json": { + "source": "iana", + "compressible": true + }, + "application/multipart-core": { + "source": "iana" + }, + "application/mxf": { + "source": "iana", + "extensions": [ + "mxf" + ] + }, + "application/n-quads": { + "source": "iana", + "extensions": [ + "nq" + ] + }, + "application/n-triples": { + "source": "iana", + "extensions": [ + "nt" + ] + }, + "application/nasdata": { + "source": "iana" + }, + "application/news-checkgroups": { + "source": "iana", + "charset": "US-ASCII" + }, + "application/news-groupinfo": { + "source": "iana", + "charset": "US-ASCII" + }, + "application/news-transmission": { + "source": "iana" + }, + "application/nlsml+xml": { + "source": "iana", + "compressible": true + }, + "application/node": { + "source": "iana", + "extensions": [ + "cjs" + ] + }, + "application/nss": { + "source": "iana" + }, + "application/oauth-authz-req+jwt": { + "source": "iana" + }, + "application/oblivious-dns-message": { + "source": "iana" + }, + "application/ocsp-request": { + "source": "iana" + }, + "application/ocsp-response": { + "source": "iana" + }, + "application/octet-stream": { + "source": "iana", + "compressible": false, + "extensions": [ + "bin", + "dms", + "lrf", + "mar", + "so", + "dist", + "distz", + "pkg", + "bpk", + "dump", + "elc", + "deploy", + "exe", + "dll", + "deb", + "dmg", + "iso", + "img", + "msi", + "msp", + "msm", + "buffer" + ] + }, + "application/oda": { + "source": "iana", + "extensions": [ + "oda" + ] + }, + "application/odm+xml": { + "source": "iana", + "compressible": true + }, + "application/odx": { + "source": "iana" + }, + "application/oebps-package+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "opf" + ] + }, + "application/ogg": { + "source": "iana", + "compressible": false, + "extensions": [ + "ogx" + ] + }, + "application/ohttp-keys": { + "source": "iana" + }, + "application/omdoc+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "omdoc" + ] + }, + "application/onenote": { + "source": "apache", + "extensions": [ + "onetoc", + "onetoc2", + "onetmp", + "onepkg" + ] + }, + "application/opc-nodeset+xml": { + "source": "iana", + "compressible": true + }, + "application/oscore": { + "source": "iana" + }, + "application/oxps": { + "source": "iana", + "extensions": [ + "oxps" + ] + }, + "application/p21": { + "source": "iana" + }, + "application/p21+zip": { + "source": "iana", + "compressible": false + }, + "application/p2p-overlay+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "relo" + ] + }, + "application/parityfec": { + "source": "iana" + }, + "application/passport": { + "source": "iana" + }, + "application/patch-ops-error+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xer" + ] + }, + "application/pdf": { + "source": "iana", + "compressible": false, + "extensions": [ + "pdf" + ] + }, + "application/pdx": { + "source": "iana" + }, + "application/pem-certificate-chain": { + "source": "iana" + }, + "application/pgp-encrypted": { + "source": "iana", + "compressible": false, + "extensions": [ + "pgp" + ] + }, + "application/pgp-keys": { + "source": "iana", + "extensions": [ + "asc" + ] + }, + "application/pgp-signature": { + "source": "iana", + "extensions": [ + "sig", + "asc" + ] + }, + "application/pics-rules": { + "source": "apache", + "extensions": [ + "prf" + ] + }, + "application/pidf+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/pidf-diff+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/pkcs10": { + "source": "iana", + "extensions": [ + "p10" + ] + }, + "application/pkcs12": { + "source": "iana" + }, + "application/pkcs7-mime": { + "source": "iana", + "extensions": [ + "p7m", + "p7c" + ] + }, + "application/pkcs7-signature": { + "source": "iana", + "extensions": [ + "p7s" + ] + }, + "application/pkcs8": { + "source": "iana", + "extensions": [ + "p8" + ] + }, + "application/pkcs8-encrypted": { + "source": "iana" + }, + "application/pkix-attr-cert": { + "source": "iana", + "extensions": [ + "ac" + ] + }, + "application/pkix-cert": { + "source": "iana", + "extensions": [ + "cer" + ] + }, + "application/pkix-crl": { + "source": "iana", + "extensions": [ + "crl" + ] + }, + "application/pkix-pkipath": { + "source": "iana", + "extensions": [ + "pkipath" + ] + }, + "application/pkixcmp": { + "source": "iana", + "extensions": [ + "pki" + ] + }, + "application/pls+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "pls" + ] + }, + "application/poc-settings+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/postscript": { + "source": "iana", + "compressible": true, + "extensions": [ + "ai", + "eps", + "ps" + ] + }, + "application/ppsp-tracker+json": { + "source": "iana", + "compressible": true + }, + "application/private-token-issuer-directory": { + "source": "iana" + }, + "application/private-token-request": { + "source": "iana" + }, + "application/private-token-response": { + "source": "iana" + }, + "application/problem+json": { + "source": "iana", + "compressible": true + }, + "application/problem+xml": { + "source": "iana", + "compressible": true + }, + "application/provenance+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "provx" + ] + }, + "application/prs.alvestrand.titrax-sheet": { + "source": "iana" + }, + "application/prs.cww": { + "source": "iana", + "extensions": [ + "cww" + ] + }, + "application/prs.cyn": { + "source": "iana", + "charset": "7-BIT" + }, + "application/prs.hpub+zip": { + "source": "iana", + "compressible": false + }, + "application/prs.implied-document+xml": { + "source": "iana", + "compressible": true + }, + "application/prs.implied-executable": { + "source": "iana" + }, + "application/prs.implied-object+json": { + "source": "iana", + "compressible": true + }, + "application/prs.implied-object+json-seq": { + "source": "iana" + }, + "application/prs.implied-object+yaml": { + "source": "iana" + }, + "application/prs.implied-structure": { + "source": "iana" + }, + "application/prs.nprend": { + "source": "iana" + }, + "application/prs.plucker": { + "source": "iana" + }, + "application/prs.rdf-xml-crypt": { + "source": "iana" + }, + "application/prs.vcfbzip2": { + "source": "iana" + }, + "application/prs.xsf+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xsf" + ] + }, + "application/pskc+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "pskcxml" + ] + }, + "application/pvd+json": { + "source": "iana", + "compressible": true + }, + "application/qsig": { + "source": "iana" + }, + "application/raml+yaml": { + "compressible": true, + "extensions": [ + "raml" + ] + }, + "application/raptorfec": { + "source": "iana" + }, + "application/rdap+json": { + "source": "iana", + "compressible": true + }, + "application/rdf+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "rdf", + "owl" + ] + }, + "application/reginfo+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "rif" + ] + }, + "application/relax-ng-compact-syntax": { + "source": "iana", + "extensions": [ + "rnc" + ] + }, + "application/remote-printing": { + "source": "apache" + }, + "application/reputon+json": { + "source": "iana", + "compressible": true + }, + "application/resource-lists+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "rl" + ] + }, + "application/resource-lists-diff+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "rld" + ] + }, + "application/rfc+xml": { + "source": "iana", + "compressible": true + }, + "application/riscos": { + "source": "iana" + }, + "application/rlmi+xml": { + "source": "iana", + "compressible": true + }, + "application/rls-services+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "rs" + ] + }, + "application/route-apd+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "rapd" + ] + }, + "application/route-s-tsid+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "sls" + ] + }, + "application/route-usd+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "rusd" + ] + }, + "application/rpki-checklist": { + "source": "iana" + }, + "application/rpki-ghostbusters": { + "source": "iana", + "extensions": [ + "gbr" + ] + }, + "application/rpki-manifest": { + "source": "iana", + "extensions": [ + "mft" + ] + }, + "application/rpki-publication": { + "source": "iana" + }, + "application/rpki-roa": { + "source": "iana", + "extensions": [ + "roa" + ] + }, + "application/rpki-signed-tal": { + "source": "iana" + }, + "application/rpki-updown": { + "source": "iana" + }, + "application/rsd+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "rsd" + ] + }, + "application/rss+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "rss" + ] + }, + "application/rtf": { + "source": "iana", + "compressible": true, + "extensions": [ + "rtf" + ] + }, + "application/rtploopback": { + "source": "iana" + }, + "application/rtx": { + "source": "iana" + }, + "application/samlassertion+xml": { + "source": "iana", + "compressible": true + }, + "application/samlmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/sarif+json": { + "source": "iana", + "compressible": true + }, + "application/sarif-external-properties+json": { + "source": "iana", + "compressible": true + }, + "application/sbe": { + "source": "iana" + }, + "application/sbml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "sbml" + ] + }, + "application/scaip+xml": { + "source": "iana", + "compressible": true + }, + "application/scim+json": { + "source": "iana", + "compressible": true + }, + "application/scvp-cv-request": { + "source": "iana", + "extensions": [ + "scq" + ] + }, + "application/scvp-cv-response": { + "source": "iana", + "extensions": [ + "scs" + ] + }, + "application/scvp-vp-request": { + "source": "iana", + "extensions": [ + "spq" + ] + }, + "application/scvp-vp-response": { + "source": "iana", + "extensions": [ + "spp" + ] + }, + "application/sdp": { + "source": "iana", + "extensions": [ + "sdp" + ] + }, + "application/secevent+jwt": { + "source": "iana" + }, + "application/senml+cbor": { + "source": "iana" + }, + "application/senml+json": { + "source": "iana", + "compressible": true + }, + "application/senml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "senmlx" + ] + }, + "application/senml-etch+cbor": { + "source": "iana" + }, + "application/senml-etch+json": { + "source": "iana", + "compressible": true + }, + "application/senml-exi": { + "source": "iana" + }, + "application/sensml+cbor": { + "source": "iana" + }, + "application/sensml+json": { + "source": "iana", + "compressible": true + }, + "application/sensml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "sensmlx" + ] + }, + "application/sensml-exi": { + "source": "iana" + }, + "application/sep+xml": { + "source": "iana", + "compressible": true + }, + "application/sep-exi": { + "source": "iana" + }, + "application/session-info": { + "source": "iana" + }, + "application/set-payment": { + "source": "iana" + }, + "application/set-payment-initiation": { + "source": "iana", + "extensions": [ + "setpay" + ] + }, + "application/set-registration": { + "source": "iana" + }, + "application/set-registration-initiation": { + "source": "iana", + "extensions": [ + "setreg" + ] + }, + "application/sgml": { + "source": "iana" + }, + "application/sgml-open-catalog": { + "source": "iana" + }, + "application/shf+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "shf" + ] + }, + "application/sieve": { + "source": "iana", + "extensions": [ + "siv", + "sieve" + ] + }, + "application/simple-filter+xml": { + "source": "iana", + "compressible": true + }, + "application/simple-message-summary": { + "source": "iana" + }, + "application/simplesymbolcontainer": { + "source": "iana" + }, + "application/sipc": { + "source": "iana" + }, + "application/slate": { + "source": "iana" + }, + "application/smil": { + "source": "apache" + }, + "application/smil+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "smi", + "smil" + ] + }, + "application/smpte336m": { + "source": "iana" + }, + "application/soap+fastinfoset": { + "source": "iana" + }, + "application/soap+xml": { + "source": "iana", + "compressible": true + }, + "application/sparql-query": { + "source": "iana", + "extensions": [ + "rq" + ] + }, + "application/sparql-results+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "srx" + ] + }, + "application/spdx+json": { + "source": "iana", + "compressible": true + }, + "application/spirits-event+xml": { + "source": "iana", + "compressible": true + }, + "application/sql": { + "source": "iana", + "extensions": [ + "sql" + ] + }, + "application/srgs": { + "source": "iana", + "extensions": [ + "gram" + ] + }, + "application/srgs+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "grxml" + ] + }, + "application/sru+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "sru" + ] + }, + "application/ssdl+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "ssdl" + ] + }, + "application/ssml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "ssml" + ] + }, + "application/st2110-41": { + "source": "iana" + }, + "application/stix+json": { + "source": "iana", + "compressible": true + }, + "application/stratum": { + "source": "iana" + }, + "application/swid+cbor": { + "source": "iana" + }, + "application/swid+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "swidtag" + ] + }, + "application/tamp-apex-update": { + "source": "iana" + }, + "application/tamp-apex-update-confirm": { + "source": "iana" + }, + "application/tamp-community-update": { + "source": "iana" + }, + "application/tamp-community-update-confirm": { + "source": "iana" + }, + "application/tamp-error": { + "source": "iana" + }, + "application/tamp-sequence-adjust": { + "source": "iana" + }, + "application/tamp-sequence-adjust-confirm": { + "source": "iana" + }, + "application/tamp-status-query": { + "source": "iana" + }, + "application/tamp-status-response": { + "source": "iana" + }, + "application/tamp-update": { + "source": "iana" + }, + "application/tamp-update-confirm": { + "source": "iana" + }, + "application/tar": { + "compressible": true + }, + "application/taxii+json": { + "source": "iana", + "compressible": true + }, + "application/td+json": { + "source": "iana", + "compressible": true + }, + "application/tei+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "tei", + "teicorpus" + ] + }, + "application/tetra_isi": { + "source": "iana" + }, + "application/thraud+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "tfi" + ] + }, + "application/timestamp-query": { + "source": "iana" + }, + "application/timestamp-reply": { + "source": "iana" + }, + "application/timestamped-data": { + "source": "iana", + "extensions": [ + "tsd" + ] + }, + "application/tlsrpt+gzip": { + "source": "iana" + }, + "application/tlsrpt+json": { + "source": "iana", + "compressible": true + }, + "application/tm+json": { + "source": "iana", + "compressible": true + }, + "application/tnauthlist": { + "source": "iana" + }, + "application/token-introspection+jwt": { + "source": "iana" + }, + "application/toml": { + "compressible": true, + "extensions": [ + "toml" + ] + }, + "application/trickle-ice-sdpfrag": { + "source": "iana" + }, + "application/trig": { + "source": "iana", + "extensions": [ + "trig" + ] + }, + "application/ttml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "ttml" + ] + }, + "application/tve-trigger": { + "source": "iana" + }, + "application/tzif": { + "source": "iana" + }, + "application/tzif-leap": { + "source": "iana" + }, + "application/ubjson": { + "compressible": false, + "extensions": [ + "ubj" + ] + }, + "application/ulpfec": { + "source": "iana" + }, + "application/urc-grpsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/urc-ressheet+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "rsheet" + ] + }, + "application/urc-targetdesc+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "td" + ] + }, + "application/urc-uisocketdesc+xml": { + "source": "iana", + "compressible": true + }, + "application/vc": { + "source": "iana" + }, + "application/vcard+json": { + "source": "iana", + "compressible": true + }, + "application/vcard+xml": { + "source": "iana", + "compressible": true + }, + "application/vemmi": { + "source": "iana" + }, + "application/vividence.scriptfile": { + "source": "apache" + }, + "application/vnd.1000minds.decision-model+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "1km" + ] + }, + "application/vnd.1ob": { + "source": "iana" + }, + "application/vnd.3gpp-prose+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-prose-pc3a+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-prose-pc3ach+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-prose-pc3ch+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-prose-pc8+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-v2x-local-service-information": { + "source": "iana" + }, + "application/vnd.3gpp.5gnas": { + "source": "iana" + }, + "application/vnd.3gpp.5gsa2x": { + "source": "iana" + }, + "application/vnd.3gpp.5gsa2x-local-service-information": { + "source": "iana" + }, + "application/vnd.3gpp.access-transfer-events+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.bsf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.crs+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.current-location-discovery+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.gmop+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.gtpc": { + "source": "iana" + }, + "application/vnd.3gpp.interworking-data": { + "source": "iana" + }, + "application/vnd.3gpp.lpp": { + "source": "iana" + }, + "application/vnd.3gpp.mc-signalling-ear": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-msgstore-ctrl-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-payload": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-regroup+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-signalling": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-floor-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-location-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-regroup+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-signed+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-ue-init-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-location-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-regroup+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-transmission-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mid-call+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.ngap": { + "source": "iana" + }, + "application/vnd.3gpp.pfcp": { + "source": "iana" + }, + "application/vnd.3gpp.pic-bw-large": { + "source": "iana", + "extensions": [ + "plb" + ] + }, + "application/vnd.3gpp.pic-bw-small": { + "source": "iana", + "extensions": [ + "psb" + ] + }, + "application/vnd.3gpp.pic-bw-var": { + "source": "iana", + "extensions": [ + "pvb" + ] + }, + "application/vnd.3gpp.pinapp-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.s1ap": { + "source": "iana" + }, + "application/vnd.3gpp.seal-group-doc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.seal-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.seal-location-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.seal-mbms-usage-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.seal-network-qos-management-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.seal-ue-config-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.seal-unicast-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.seal-user-profile-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.sms": { + "source": "iana" + }, + "application/vnd.3gpp.sms+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.srvcc-ext+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.srvcc-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.state-and-event-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.ussd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.v2x": { + "source": "iana" + }, + "application/vnd.3gpp.vae-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp2.bcmcsinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp2.sms": { + "source": "iana" + }, + "application/vnd.3gpp2.tcap": { + "source": "iana", + "extensions": [ + "tcap" + ] + }, + "application/vnd.3lightssoftware.imagescal": { + "source": "iana" + }, + "application/vnd.3m.post-it-notes": { + "source": "iana", + "extensions": [ + "pwn" + ] + }, + "application/vnd.accpac.simply.aso": { + "source": "iana", + "extensions": [ + "aso" + ] + }, + "application/vnd.accpac.simply.imp": { + "source": "iana", + "extensions": [ + "imp" + ] + }, + "application/vnd.acm.addressxfer+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.acm.chatbot+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.acucobol": { + "source": "iana", + "extensions": [ + "acu" + ] + }, + "application/vnd.acucorp": { + "source": "iana", + "extensions": [ + "atc", + "acutc" + ] + }, + "application/vnd.adobe.air-application-installer-package+zip": { + "source": "apache", + "compressible": false, + "extensions": [ + "air" + ] + }, + "application/vnd.adobe.flash.movie": { + "source": "iana" + }, + "application/vnd.adobe.formscentral.fcdt": { + "source": "iana", + "extensions": [ + "fcdt" + ] + }, + "application/vnd.adobe.fxp": { + "source": "iana", + "extensions": [ + "fxp", + "fxpl" + ] + }, + "application/vnd.adobe.partial-upload": { + "source": "iana" + }, + "application/vnd.adobe.xdp+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xdp" + ] + }, + "application/vnd.adobe.xfdf": { + "source": "apache", + "extensions": [ + "xfdf" + ] + }, + "application/vnd.aether.imp": { + "source": "iana" + }, + "application/vnd.afpc.afplinedata": { + "source": "iana" + }, + "application/vnd.afpc.afplinedata-pagedef": { + "source": "iana" + }, + "application/vnd.afpc.cmoca-cmresource": { + "source": "iana" + }, + "application/vnd.afpc.foca-charset": { + "source": "iana" + }, + "application/vnd.afpc.foca-codedfont": { + "source": "iana" + }, + "application/vnd.afpc.foca-codepage": { + "source": "iana" + }, + "application/vnd.afpc.modca": { + "source": "iana" + }, + "application/vnd.afpc.modca-cmtable": { + "source": "iana" + }, + "application/vnd.afpc.modca-formdef": { + "source": "iana" + }, + "application/vnd.afpc.modca-mediummap": { + "source": "iana" + }, + "application/vnd.afpc.modca-objectcontainer": { + "source": "iana" + }, + "application/vnd.afpc.modca-overlay": { + "source": "iana" + }, + "application/vnd.afpc.modca-pagesegment": { + "source": "iana" + }, + "application/vnd.age": { + "source": "iana", + "extensions": [ + "age" + ] + }, + "application/vnd.ah-barcode": { + "source": "apache" + }, + "application/vnd.ahead.space": { + "source": "iana", + "extensions": [ + "ahead" + ] + }, + "application/vnd.airzip.filesecure.azf": { + "source": "iana", + "extensions": [ + "azf" + ] + }, + "application/vnd.airzip.filesecure.azs": { + "source": "iana", + "extensions": [ + "azs" + ] + }, + "application/vnd.amadeus+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.amazon.ebook": { + "source": "apache", + "extensions": [ + "azw" + ] + }, + "application/vnd.amazon.mobi8-ebook": { + "source": "iana" + }, + "application/vnd.americandynamics.acc": { + "source": "iana", + "extensions": [ + "acc" + ] + }, + "application/vnd.amiga.ami": { + "source": "iana", + "extensions": [ + "ami" + ] + }, + "application/vnd.amundsen.maze+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.android.ota": { + "source": "iana" + }, + "application/vnd.android.package-archive": { + "source": "apache", + "compressible": false, + "extensions": [ + "apk" + ] + }, + "application/vnd.anki": { + "source": "iana" + }, + "application/vnd.anser-web-certificate-issue-initiation": { + "source": "iana", + "extensions": [ + "cii" + ] + }, + "application/vnd.anser-web-funds-transfer-initiation": { + "source": "apache", + "extensions": [ + "fti" + ] + }, + "application/vnd.antix.game-component": { + "source": "iana", + "extensions": [ + "atx" + ] + }, + "application/vnd.apache.arrow.file": { + "source": "iana" + }, + "application/vnd.apache.arrow.stream": { + "source": "iana" + }, + "application/vnd.apache.parquet": { + "source": "iana" + }, + "application/vnd.apache.thrift.binary": { + "source": "iana" + }, + "application/vnd.apache.thrift.compact": { + "source": "iana" + }, + "application/vnd.apache.thrift.json": { + "source": "iana" + }, + "application/vnd.apexlang": { + "source": "iana" + }, + "application/vnd.api+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.aplextor.warrp+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.apothekende.reservation+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.apple.installer+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "mpkg" + ] + }, + "application/vnd.apple.keynote": { + "source": "iana", + "extensions": [ + "key" + ] + }, + "application/vnd.apple.mpegurl": { + "source": "iana", + "extensions": [ + "m3u8" + ] + }, + "application/vnd.apple.numbers": { + "source": "iana", + "extensions": [ + "numbers" + ] + }, + "application/vnd.apple.pages": { + "source": "iana", + "extensions": [ + "pages" + ] + }, + "application/vnd.apple.pkpass": { + "compressible": false, + "extensions": [ + "pkpass" + ] + }, + "application/vnd.arastra.swi": { + "source": "apache" + }, + "application/vnd.aristanetworks.swi": { + "source": "iana", + "extensions": [ + "swi" + ] + }, + "application/vnd.artisan+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.artsquare": { + "source": "iana" + }, + "application/vnd.astraea-software.iota": { + "source": "iana", + "extensions": [ + "iota" + ] + }, + "application/vnd.audiograph": { + "source": "iana", + "extensions": [ + "aep" + ] + }, + "application/vnd.autopackage": { + "source": "iana" + }, + "application/vnd.avalon+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.avistar+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.balsamiq.bmml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "bmml" + ] + }, + "application/vnd.balsamiq.bmpr": { + "source": "iana" + }, + "application/vnd.banana-accounting": { + "source": "iana" + }, + "application/vnd.bbf.usp.error": { + "source": "iana" + }, + "application/vnd.bbf.usp.msg": { + "source": "iana" + }, + "application/vnd.bbf.usp.msg+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.bekitzur-stech+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.belightsoft.lhzd+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.belightsoft.lhzl+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.bint.med-content": { + "source": "iana" + }, + "application/vnd.biopax.rdf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.blink-idb-value-wrapper": { + "source": "iana" + }, + "application/vnd.blueice.multipass": { + "source": "iana", + "extensions": [ + "mpm" + ] + }, + "application/vnd.bluetooth.ep.oob": { + "source": "iana" + }, + "application/vnd.bluetooth.le.oob": { + "source": "iana" + }, + "application/vnd.bmi": { + "source": "iana", + "extensions": [ + "bmi" + ] + }, + "application/vnd.bpf": { + "source": "iana" + }, + "application/vnd.bpf3": { + "source": "iana" + }, + "application/vnd.businessobjects": { + "source": "iana", + "extensions": [ + "rep" + ] + }, + "application/vnd.byu.uapi+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.bzip3": { + "source": "iana" + }, + "application/vnd.c3voc.schedule+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.cab-jscript": { + "source": "iana" + }, + "application/vnd.canon-cpdl": { + "source": "iana" + }, + "application/vnd.canon-lips": { + "source": "iana" + }, + "application/vnd.capasystems-pg+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cendio.thinlinc.clientconf": { + "source": "iana" + }, + "application/vnd.century-systems.tcp_stream": { + "source": "iana" + }, + "application/vnd.chemdraw+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "cdxml" + ] + }, + "application/vnd.chess-pgn": { + "source": "iana" + }, + "application/vnd.chipnuts.karaoke-mmd": { + "source": "iana", + "extensions": [ + "mmd" + ] + }, + "application/vnd.ciedi": { + "source": "iana" + }, + "application/vnd.cinderella": { + "source": "iana", + "extensions": [ + "cdy" + ] + }, + "application/vnd.cirpack.isdn-ext": { + "source": "iana" + }, + "application/vnd.citationstyles.style+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "csl" + ] + }, + "application/vnd.claymore": { + "source": "iana", + "extensions": [ + "cla" + ] + }, + "application/vnd.cloanto.rp9": { + "source": "iana", + "extensions": [ + "rp9" + ] + }, + "application/vnd.clonk.c4group": { + "source": "iana", + "extensions": [ + "c4g", + "c4d", + "c4f", + "c4p", + "c4u" + ] + }, + "application/vnd.cluetrust.cartomobile-config": { + "source": "iana", + "extensions": [ + "c11amc" + ] + }, + "application/vnd.cluetrust.cartomobile-config-pkg": { + "source": "iana", + "extensions": [ + "c11amz" + ] + }, + "application/vnd.cncf.helm.chart.content.v1.tar+gzip": { + "source": "iana" + }, + "application/vnd.cncf.helm.chart.provenance.v1.prov": { + "source": "iana" + }, + "application/vnd.cncf.helm.config.v1+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.coffeescript": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.document": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.document-template": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.presentation": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.presentation-template": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet-template": { + "source": "iana" + }, + "application/vnd.collection+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.collection.doc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.collection.next+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.comicbook+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.comicbook-rar": { + "source": "iana" + }, + "application/vnd.commerce-battelle": { + "source": "iana" + }, + "application/vnd.commonspace": { + "source": "iana", + "extensions": [ + "csp" + ] + }, + "application/vnd.contact.cmsg": { + "source": "iana", + "extensions": [ + "cdbcmsg" + ] + }, + "application/vnd.coreos.ignition+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cosmocaller": { + "source": "iana", + "extensions": [ + "cmc" + ] + }, + "application/vnd.crick.clicker": { + "source": "iana", + "extensions": [ + "clkx" + ] + }, + "application/vnd.crick.clicker.keyboard": { + "source": "iana", + "extensions": [ + "clkk" + ] + }, + "application/vnd.crick.clicker.palette": { + "source": "iana", + "extensions": [ + "clkp" + ] + }, + "application/vnd.crick.clicker.template": { + "source": "iana", + "extensions": [ + "clkt" + ] + }, + "application/vnd.crick.clicker.wordbank": { + "source": "iana", + "extensions": [ + "clkw" + ] + }, + "application/vnd.criticaltools.wbs+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "wbs" + ] + }, + "application/vnd.cryptii.pipe+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.crypto-shade-file": { + "source": "iana" + }, + "application/vnd.cryptomator.encrypted": { + "source": "iana" + }, + "application/vnd.cryptomator.vault": { + "source": "iana" + }, + "application/vnd.ctc-posml": { + "source": "iana", + "extensions": [ + "pml" + ] + }, + "application/vnd.ctct.ws+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.cups-pdf": { + "source": "iana" + }, + "application/vnd.cups-postscript": { + "source": "iana" + }, + "application/vnd.cups-ppd": { + "source": "iana", + "extensions": [ + "ppd" + ] + }, + "application/vnd.cups-raster": { + "source": "iana" + }, + "application/vnd.cups-raw": { + "source": "iana" + }, + "application/vnd.curl": { + "source": "iana" + }, + "application/vnd.curl.car": { + "source": "apache", + "extensions": [ + "car" + ] + }, + "application/vnd.curl.pcurl": { + "source": "apache", + "extensions": [ + "pcurl" + ] + }, + "application/vnd.cyan.dean.root+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.cybank": { + "source": "iana" + }, + "application/vnd.cyclonedx+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cyclonedx+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.d2l.coursepackage1p0+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.d3m-dataset": { + "source": "iana" + }, + "application/vnd.d3m-problem": { + "source": "iana" + }, + "application/vnd.dart": { + "source": "iana", + "compressible": true, + "extensions": [ + "dart" + ] + }, + "application/vnd.data-vision.rdz": { + "source": "iana", + "extensions": [ + "rdz" + ] + }, + "application/vnd.datalog": { + "source": "iana" + }, + "application/vnd.datapackage+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dataresource+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dbf": { + "source": "iana", + "extensions": [ + "dbf" + ] + }, + "application/vnd.debian.binary-package": { + "source": "iana" + }, + "application/vnd.dece.data": { + "source": "iana", + "extensions": [ + "uvf", + "uvvf", + "uvd", + "uvvd" + ] + }, + "application/vnd.dece.ttml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "uvt", + "uvvt" + ] + }, + "application/vnd.dece.unspecified": { + "source": "iana", + "extensions": [ + "uvx", + "uvvx" + ] + }, + "application/vnd.dece.zip": { + "source": "iana", + "extensions": [ + "uvz", + "uvvz" + ] + }, + "application/vnd.denovo.fcselayout-link": { + "source": "iana", + "extensions": [ + "fe_launch" + ] + }, + "application/vnd.desmume.movie": { + "source": "iana" + }, + "application/vnd.dir-bi.plate-dl-nosuffix": { + "source": "iana" + }, + "application/vnd.dm.delegation+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dna": { + "source": "iana", + "extensions": [ + "dna" + ] + }, + "application/vnd.document+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dolby.mlp": { + "source": "apache", + "extensions": [ + "mlp" + ] + }, + "application/vnd.dolby.mobile.1": { + "source": "iana" + }, + "application/vnd.dolby.mobile.2": { + "source": "iana" + }, + "application/vnd.doremir.scorecloud-binary-document": { + "source": "iana" + }, + "application/vnd.dpgraph": { + "source": "iana", + "extensions": [ + "dpg" + ] + }, + "application/vnd.dreamfactory": { + "source": "iana", + "extensions": [ + "dfac" + ] + }, + "application/vnd.drive+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ds-keypoint": { + "source": "apache", + "extensions": [ + "kpxx" + ] + }, + "application/vnd.dtg.local": { + "source": "iana" + }, + "application/vnd.dtg.local.flash": { + "source": "iana" + }, + "application/vnd.dtg.local.html": { + "source": "iana" + }, + "application/vnd.dvb.ait": { + "source": "iana", + "extensions": [ + "ait" + ] + }, + "application/vnd.dvb.dvbisl+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.dvbj": { + "source": "iana" + }, + "application/vnd.dvb.esgcontainer": { + "source": "iana" + }, + "application/vnd.dvb.ipdcdftnotifaccess": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgaccess": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgaccess2": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgpdd": { + "source": "iana" + }, + "application/vnd.dvb.ipdcroaming": { + "source": "iana" + }, + "application/vnd.dvb.iptv.alfec-base": { + "source": "iana" + }, + "application/vnd.dvb.iptv.alfec-enhancement": { + "source": "iana" + }, + "application/vnd.dvb.notif-aggregate-root+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-container+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-generic+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-msglist+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-registration-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-registration-response+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-init+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.pfr": { + "source": "iana" + }, + "application/vnd.dvb.service": { + "source": "iana", + "extensions": [ + "svc" + ] + }, + "application/vnd.dxr": { + "source": "iana" + }, + "application/vnd.dynageo": { + "source": "iana", + "extensions": [ + "geo" + ] + }, + "application/vnd.dzr": { + "source": "iana" + }, + "application/vnd.easykaraoke.cdgdownload": { + "source": "iana" + }, + "application/vnd.ecdis-update": { + "source": "iana" + }, + "application/vnd.ecip.rlp": { + "source": "iana" + }, + "application/vnd.eclipse.ditto+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ecowin.chart": { + "source": "iana", + "extensions": [ + "mag" + ] + }, + "application/vnd.ecowin.filerequest": { + "source": "iana" + }, + "application/vnd.ecowin.fileupdate": { + "source": "iana" + }, + "application/vnd.ecowin.series": { + "source": "iana" + }, + "application/vnd.ecowin.seriesrequest": { + "source": "iana" + }, + "application/vnd.ecowin.seriesupdate": { + "source": "iana" + }, + "application/vnd.efi.img": { + "source": "iana" + }, + "application/vnd.efi.iso": { + "source": "iana" + }, + "application/vnd.eln+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.emclient.accessrequest+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.enliven": { + "source": "iana", + "extensions": [ + "nml" + ] + }, + "application/vnd.enphase.envoy": { + "source": "iana" + }, + "application/vnd.eprints.data+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.epson.esf": { + "source": "iana", + "extensions": [ + "esf" + ] + }, + "application/vnd.epson.msf": { + "source": "iana", + "extensions": [ + "msf" + ] + }, + "application/vnd.epson.quickanime": { + "source": "iana", + "extensions": [ + "qam" + ] + }, + "application/vnd.epson.salt": { + "source": "iana", + "extensions": [ + "slt" + ] + }, + "application/vnd.epson.ssf": { + "source": "iana", + "extensions": [ + "ssf" + ] + }, + "application/vnd.ericsson.quickcall": { + "source": "iana" + }, + "application/vnd.erofs": { + "source": "iana" + }, + "application/vnd.espass-espass+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.eszigno3+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "es3", + "et3" + ] + }, + "application/vnd.etsi.aoc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.asic-e+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.etsi.asic-s+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.etsi.cug+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvcommand+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvdiscovery+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-bc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-cod+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-npvr+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvservice+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsync+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvueprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.mcid+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.mheg5": { + "source": "iana" + }, + "application/vnd.etsi.overload-control-policy-dataset+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.pstn+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.sci+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.simservs+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.timestamp-token": { + "source": "iana" + }, + "application/vnd.etsi.tsl+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.tsl.der": { + "source": "iana" + }, + "application/vnd.eu.kasparian.car+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.eudora.data": { + "source": "iana" + }, + "application/vnd.evolv.ecig.profile": { + "source": "iana" + }, + "application/vnd.evolv.ecig.settings": { + "source": "iana" + }, + "application/vnd.evolv.ecig.theme": { + "source": "iana" + }, + "application/vnd.exstream-empower+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.exstream-package": { + "source": "iana" + }, + "application/vnd.ezpix-album": { + "source": "iana", + "extensions": [ + "ez2" + ] + }, + "application/vnd.ezpix-package": { + "source": "iana", + "extensions": [ + "ez3" + ] + }, + "application/vnd.f-secure.mobile": { + "source": "iana" + }, + "application/vnd.familysearch.gedcom+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.fastcopy-disk-image": { + "source": "iana" + }, + "application/vnd.fdf": { + "source": "apache", + "extensions": [ + "fdf" + ] + }, + "application/vnd.fdsn.mseed": { + "source": "iana", + "extensions": [ + "mseed" + ] + }, + "application/vnd.fdsn.seed": { + "source": "iana", + "extensions": [ + "seed", + "dataless" + ] + }, + "application/vnd.ffsns": { + "source": "iana" + }, + "application/vnd.ficlab.flb+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.filmit.zfc": { + "source": "iana" + }, + "application/vnd.fints": { + "source": "iana" + }, + "application/vnd.firemonkeys.cloudcell": { + "source": "iana" + }, + "application/vnd.flographit": { + "source": "iana", + "extensions": [ + "gph" + ] + }, + "application/vnd.fluxtime.clip": { + "source": "iana", + "extensions": [ + "ftc" + ] + }, + "application/vnd.font-fontforge-sfd": { + "source": "iana" + }, + "application/vnd.framemaker": { + "source": "iana", + "extensions": [ + "fm", + "frame", + "maker", + "book" + ] + }, + "application/vnd.freelog.comic": { + "source": "iana" + }, + "application/vnd.frogans.fnc": { + "source": "apache", + "extensions": [ + "fnc" + ] + }, + "application/vnd.frogans.ltf": { + "source": "apache", + "extensions": [ + "ltf" + ] + }, + "application/vnd.fsc.weblaunch": { + "source": "iana", + "extensions": [ + "fsc" + ] + }, + "application/vnd.fujifilm.fb.docuworks": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.docuworks.binder": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.docuworks.container": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.jfi+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.fujitsu.oasys": { + "source": "iana", + "extensions": [ + "oas" + ] + }, + "application/vnd.fujitsu.oasys2": { + "source": "iana", + "extensions": [ + "oa2" + ] + }, + "application/vnd.fujitsu.oasys3": { + "source": "iana", + "extensions": [ + "oa3" + ] + }, + "application/vnd.fujitsu.oasysgp": { + "source": "iana", + "extensions": [ + "fg5" + ] + }, + "application/vnd.fujitsu.oasysprs": { + "source": "iana", + "extensions": [ + "bh2" + ] + }, + "application/vnd.fujixerox.art-ex": { + "source": "iana" + }, + "application/vnd.fujixerox.art4": { + "source": "iana" + }, + "application/vnd.fujixerox.ddd": { + "source": "iana", + "extensions": [ + "ddd" + ] + }, + "application/vnd.fujixerox.docuworks": { + "source": "iana", + "extensions": [ + "xdw" + ] + }, + "application/vnd.fujixerox.docuworks.binder": { + "source": "iana", + "extensions": [ + "xbd" + ] + }, + "application/vnd.fujixerox.docuworks.container": { + "source": "iana" + }, + "application/vnd.fujixerox.hbpl": { + "source": "iana" + }, + "application/vnd.fut-misnet": { + "source": "iana" + }, + "application/vnd.futoin+cbor": { + "source": "iana" + }, + "application/vnd.futoin+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.fuzzysheet": { + "source": "iana", + "extensions": [ + "fzs" + ] + }, + "application/vnd.ga4gh.passport+jwt": { + "source": "iana" + }, + "application/vnd.genomatix.tuxedo": { + "source": "iana", + "extensions": [ + "txd" + ] + }, + "application/vnd.genozip": { + "source": "iana" + }, + "application/vnd.gentics.grd+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.gentoo.catmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.gentoo.ebuild": { + "source": "iana" + }, + "application/vnd.gentoo.eclass": { + "source": "iana" + }, + "application/vnd.gentoo.gpkg": { + "source": "iana" + }, + "application/vnd.gentoo.manifest": { + "source": "iana" + }, + "application/vnd.gentoo.pkgmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.gentoo.xpak": { + "source": "iana" + }, + "application/vnd.geo+json": { + "source": "apache", + "compressible": true + }, + "application/vnd.geocube+xml": { + "source": "apache", + "compressible": true + }, + "application/vnd.geogebra.file": { + "source": "iana", + "extensions": [ + "ggb" + ] + }, + "application/vnd.geogebra.slides": { + "source": "iana", + "extensions": [ + "ggs" + ] + }, + "application/vnd.geogebra.tool": { + "source": "iana", + "extensions": [ + "ggt" + ] + }, + "application/vnd.geometry-explorer": { + "source": "iana", + "extensions": [ + "gex", + "gre" + ] + }, + "application/vnd.geonext": { + "source": "iana", + "extensions": [ + "gxt" + ] + }, + "application/vnd.geoplan": { + "source": "iana", + "extensions": [ + "g2w" + ] + }, + "application/vnd.geospace": { + "source": "iana", + "extensions": [ + "g3w" + ] + }, + "application/vnd.gerber": { + "source": "iana" + }, + "application/vnd.globalplatform.card-content-mgt": { + "source": "iana" + }, + "application/vnd.globalplatform.card-content-mgt-response": { + "source": "iana" + }, + "application/vnd.gmx": { + "source": "iana", + "extensions": [ + "gmx" + ] + }, + "application/vnd.gnu.taler.exchange+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.gnu.taler.merchant+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.google-apps.document": { + "compressible": false, + "extensions": [ + "gdoc" + ] + }, + "application/vnd.google-apps.presentation": { + "compressible": false, + "extensions": [ + "gslides" + ] + }, + "application/vnd.google-apps.spreadsheet": { + "compressible": false, + "extensions": [ + "gsheet" + ] + }, + "application/vnd.google-earth.kml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "kml" + ] + }, + "application/vnd.google-earth.kmz": { + "source": "iana", + "compressible": false, + "extensions": [ + "kmz" + ] + }, + "application/vnd.gov.sk.e-form+xml": { + "source": "apache", + "compressible": true + }, + "application/vnd.gov.sk.e-form+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.gov.sk.xmldatacontainer+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xdcf" + ] + }, + "application/vnd.gpxsee.map+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.grafeq": { + "source": "iana", + "extensions": [ + "gqf", + "gqs" + ] + }, + "application/vnd.gridmp": { + "source": "iana" + }, + "application/vnd.groove-account": { + "source": "iana", + "extensions": [ + "gac" + ] + }, + "application/vnd.groove-help": { + "source": "iana", + "extensions": [ + "ghf" + ] + }, + "application/vnd.groove-identity-message": { + "source": "iana", + "extensions": [ + "gim" + ] + }, + "application/vnd.groove-injector": { + "source": "iana", + "extensions": [ + "grv" + ] + }, + "application/vnd.groove-tool-message": { + "source": "iana", + "extensions": [ + "gtm" + ] + }, + "application/vnd.groove-tool-template": { + "source": "iana", + "extensions": [ + "tpl" + ] + }, + "application/vnd.groove-vcard": { + "source": "iana", + "extensions": [ + "vcg" + ] + }, + "application/vnd.hal+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hal+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "hal" + ] + }, + "application/vnd.handheld-entertainment+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "zmm" + ] + }, + "application/vnd.hbci": { + "source": "iana", + "extensions": [ + "hbci" + ] + }, + "application/vnd.hc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hcl-bireports": { + "source": "iana" + }, + "application/vnd.hdt": { + "source": "iana" + }, + "application/vnd.heroku+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hhe.lesson-player": { + "source": "iana", + "extensions": [ + "les" + ] + }, + "application/vnd.hp-hpgl": { + "source": "iana", + "extensions": [ + "hpgl" + ] + }, + "application/vnd.hp-hpid": { + "source": "iana", + "extensions": [ + "hpid" + ] + }, + "application/vnd.hp-hps": { + "source": "iana", + "extensions": [ + "hps" + ] + }, + "application/vnd.hp-jlyt": { + "source": "iana", + "extensions": [ + "jlt" + ] + }, + "application/vnd.hp-pcl": { + "source": "iana", + "extensions": [ + "pcl" + ] + }, + "application/vnd.hp-pclxl": { + "source": "iana", + "extensions": [ + "pclxl" + ] + }, + "application/vnd.hsl": { + "source": "iana" + }, + "application/vnd.httphone": { + "source": "iana" + }, + "application/vnd.hydrostatix.sof-data": { + "source": "iana", + "extensions": [ + "sfd-hdstx" + ] + }, + "application/vnd.hyper+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hyper-item+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hyperdrive+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hzn-3d-crossword": { + "source": "iana" + }, + "application/vnd.ibm.afplinedata": { + "source": "apache" + }, + "application/vnd.ibm.electronic-media": { + "source": "iana" + }, + "application/vnd.ibm.minipay": { + "source": "iana", + "extensions": [ + "mpy" + ] + }, + "application/vnd.ibm.modcap": { + "source": "apache", + "extensions": [ + "afp", + "listafp", + "list3820" + ] + }, + "application/vnd.ibm.rights-management": { + "source": "iana", + "extensions": [ + "irm" + ] + }, + "application/vnd.ibm.secure-container": { + "source": "iana", + "extensions": [ + "sc" + ] + }, + "application/vnd.iccprofile": { + "source": "iana", + "extensions": [ + "icc", + "icm" + ] + }, + "application/vnd.ieee.1905": { + "source": "iana" + }, + "application/vnd.igloader": { + "source": "iana", + "extensions": [ + "igl" + ] + }, + "application/vnd.imagemeter.folder+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.imagemeter.image+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.immervision-ivp": { + "source": "iana", + "extensions": [ + "ivp" + ] + }, + "application/vnd.immervision-ivu": { + "source": "iana", + "extensions": [ + "ivu" + ] + }, + "application/vnd.ims.imsccv1p1": { + "source": "iana" + }, + "application/vnd.ims.imsccv1p2": { + "source": "iana" + }, + "application/vnd.ims.imsccv1p3": { + "source": "iana" + }, + "application/vnd.ims.lis.v2.result+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolconsumerprofile+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolproxy+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolproxy.id+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolsettings+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolsettings.simple+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.informedcontrol.rms+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.informix-visionary": { + "source": "apache" + }, + "application/vnd.infotech.project": { + "source": "iana" + }, + "application/vnd.infotech.project+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.innopath.wamp.notification": { + "source": "iana" + }, + "application/vnd.insors.igm": { + "source": "iana", + "extensions": [ + "igm" + ] + }, + "application/vnd.intercon.formnet": { + "source": "iana", + "extensions": [ + "xpw", + "xpx" + ] + }, + "application/vnd.intergeo": { + "source": "iana", + "extensions": [ + "i2g" + ] + }, + "application/vnd.intertrust.digibox": { + "source": "iana" + }, + "application/vnd.intertrust.nncp": { + "source": "iana" + }, + "application/vnd.intu.qbo": { + "source": "iana", + "extensions": [ + "qbo" + ] + }, + "application/vnd.intu.qfx": { + "source": "iana", + "extensions": [ + "qfx" + ] + }, + "application/vnd.ipfs.ipns-record": { + "source": "iana" + }, + "application/vnd.ipld.car": { + "source": "iana" + }, + "application/vnd.ipld.dag-cbor": { + "source": "iana" + }, + "application/vnd.ipld.dag-json": { + "source": "iana" + }, + "application/vnd.ipld.raw": { + "source": "iana" + }, + "application/vnd.iptc.g2.catalogitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.conceptitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.knowledgeitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.newsitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.newsmessage+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.packageitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.planningitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ipunplugged.rcprofile": { + "source": "iana", + "extensions": [ + "rcprofile" + ] + }, + "application/vnd.irepository.package+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "irp" + ] + }, + "application/vnd.is-xpr": { + "source": "iana", + "extensions": [ + "xpr" + ] + }, + "application/vnd.isac.fcs": { + "source": "iana", + "extensions": [ + "fcs" + ] + }, + "application/vnd.iso11783-10+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.jam": { + "source": "iana", + "extensions": [ + "jam" + ] + }, + "application/vnd.japannet-directory-service": { + "source": "iana" + }, + "application/vnd.japannet-jpnstore-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-payment-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-registration": { + "source": "iana" + }, + "application/vnd.japannet-registration-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-setstore-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-verification": { + "source": "iana" + }, + "application/vnd.japannet-verification-wakeup": { + "source": "iana" + }, + "application/vnd.jcp.javame.midlet-rms": { + "source": "iana", + "extensions": [ + "rms" + ] + }, + "application/vnd.jisp": { + "source": "iana", + "extensions": [ + "jisp" + ] + }, + "application/vnd.joost.joda-archive": { + "source": "iana", + "extensions": [ + "joda" + ] + }, + "application/vnd.jsk.isdn-ngn": { + "source": "iana" + }, + "application/vnd.kahootz": { + "source": "iana", + "extensions": [ + "ktz", + "ktr" + ] + }, + "application/vnd.kde.karbon": { + "source": "iana", + "extensions": [ + "karbon" + ] + }, + "application/vnd.kde.kchart": { + "source": "iana", + "extensions": [ + "chrt" + ] + }, + "application/vnd.kde.kformula": { + "source": "iana", + "extensions": [ + "kfo" + ] + }, + "application/vnd.kde.kivio": { + "source": "iana", + "extensions": [ + "flw" + ] + }, + "application/vnd.kde.kontour": { + "source": "iana", + "extensions": [ + "kon" + ] + }, + "application/vnd.kde.kpresenter": { + "source": "iana", + "extensions": [ + "kpr", + "kpt" + ] + }, + "application/vnd.kde.kspread": { + "source": "iana", + "extensions": [ + "ksp" + ] + }, + "application/vnd.kde.kword": { + "source": "iana", + "extensions": [ + "kwd", + "kwt" + ] + }, + "application/vnd.kenameaapp": { + "source": "iana", + "extensions": [ + "htke" + ] + }, + "application/vnd.kidspiration": { + "source": "iana", + "extensions": [ + "kia" + ] + }, + "application/vnd.kinar": { + "source": "iana", + "extensions": [ + "kne", + "knp" + ] + }, + "application/vnd.koan": { + "source": "iana", + "extensions": [ + "skp", + "skd", + "skt", + "skm" + ] + }, + "application/vnd.kodak-descriptor": { + "source": "iana", + "extensions": [ + "sse" + ] + }, + "application/vnd.las": { + "source": "iana" + }, + "application/vnd.las.las+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.las.las+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "lasxml" + ] + }, + "application/vnd.laszip": { + "source": "iana" + }, + "application/vnd.ldev.productlicensing": { + "source": "iana" + }, + "application/vnd.leap+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.liberty-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.llamagraphics.life-balance.desktop": { + "source": "iana", + "extensions": [ + "lbd" + ] + }, + "application/vnd.llamagraphics.life-balance.exchange+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "lbe" + ] + }, + "application/vnd.logipipe.circuit+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.loom": { + "source": "iana" + }, + "application/vnd.lotus-1-2-3": { + "source": "iana", + "extensions": [ + "123" + ] + }, + "application/vnd.lotus-approach": { + "source": "iana", + "extensions": [ + "apr" + ] + }, + "application/vnd.lotus-freelance": { + "source": "iana", + "extensions": [ + "pre" + ] + }, + "application/vnd.lotus-notes": { + "source": "iana", + "extensions": [ + "nsf" + ] + }, + "application/vnd.lotus-organizer": { + "source": "iana", + "extensions": [ + "org" + ] + }, + "application/vnd.lotus-screencam": { + "source": "iana", + "extensions": [ + "scm" + ] + }, + "application/vnd.lotus-wordpro": { + "source": "iana", + "extensions": [ + "lwp" + ] + }, + "application/vnd.macports.portpkg": { + "source": "iana", + "extensions": [ + "portpkg" + ] + }, + "application/vnd.mapbox-vector-tile": { + "source": "iana", + "extensions": [ + "mvt" + ] + }, + "application/vnd.marlin.drm.actiontoken+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.conftoken+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.license+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.mdcf": { + "source": "iana" + }, + "application/vnd.mason+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.maxar.archive.3tz+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.maxmind.maxmind-db": { + "source": "iana" + }, + "application/vnd.mcd": { + "source": "iana", + "extensions": [ + "mcd" + ] + }, + "application/vnd.mdl": { + "source": "iana" + }, + "application/vnd.mdl-mbsdf": { + "source": "iana" + }, + "application/vnd.medcalcdata": { + "source": "iana", + "extensions": [ + "mc1" + ] + }, + "application/vnd.mediastation.cdkey": { + "source": "iana", + "extensions": [ + "cdkey" + ] + }, + "application/vnd.medicalholodeck.recordxr": { + "source": "iana" + }, + "application/vnd.meridian-slingshot": { + "source": "iana" + }, + "application/vnd.mermaid": { + "source": "iana" + }, + "application/vnd.mfer": { + "source": "iana", + "extensions": [ + "mwf" + ] + }, + "application/vnd.mfmp": { + "source": "iana", + "extensions": [ + "mfm" + ] + }, + "application/vnd.micro+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.micrografx.flo": { + "source": "iana", + "extensions": [ + "flo" + ] + }, + "application/vnd.micrografx.igx": { + "source": "iana", + "extensions": [ + "igx" + ] + }, + "application/vnd.microsoft.portable-executable": { + "source": "iana" + }, + "application/vnd.microsoft.windows.thumbnail-cache": { + "source": "iana" + }, + "application/vnd.miele+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.mif": { + "source": "iana", + "extensions": [ + "mif" + ] + }, + "application/vnd.minisoft-hp3000-save": { + "source": "iana" + }, + "application/vnd.mitsubishi.misty-guard.trustweb": { + "source": "iana" + }, + "application/vnd.mobius.daf": { + "source": "iana", + "extensions": [ + "daf" + ] + }, + "application/vnd.mobius.dis": { + "source": "iana", + "extensions": [ + "dis" + ] + }, + "application/vnd.mobius.mbk": { + "source": "iana", + "extensions": [ + "mbk" + ] + }, + "application/vnd.mobius.mqy": { + "source": "iana", + "extensions": [ + "mqy" + ] + }, + "application/vnd.mobius.msl": { + "source": "iana", + "extensions": [ + "msl" + ] + }, + "application/vnd.mobius.plc": { + "source": "iana", + "extensions": [ + "plc" + ] + }, + "application/vnd.mobius.txf": { + "source": "iana", + "extensions": [ + "txf" + ] + }, + "application/vnd.modl": { + "source": "iana" + }, + "application/vnd.mophun.application": { + "source": "iana", + "extensions": [ + "mpn" + ] + }, + "application/vnd.mophun.certificate": { + "source": "iana", + "extensions": [ + "mpc" + ] + }, + "application/vnd.motorola.flexsuite": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.adsi": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.fis": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.gotap": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.kmr": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.ttc": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.wem": { + "source": "iana" + }, + "application/vnd.motorola.iprm": { + "source": "iana" + }, + "application/vnd.mozilla.xul+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xul" + ] + }, + "application/vnd.ms-3mfdocument": { + "source": "iana" + }, + "application/vnd.ms-artgalry": { + "source": "iana", + "extensions": [ + "cil" + ] + }, + "application/vnd.ms-asf": { + "source": "iana" + }, + "application/vnd.ms-cab-compressed": { + "source": "iana", + "extensions": [ + "cab" + ] + }, + "application/vnd.ms-color.iccprofile": { + "source": "apache" + }, + "application/vnd.ms-excel": { + "source": "iana", + "compressible": false, + "extensions": [ + "xls", + "xlm", + "xla", + "xlc", + "xlt", + "xlw" + ] + }, + "application/vnd.ms-excel.addin.macroenabled.12": { + "source": "iana", + "extensions": [ + "xlam" + ] + }, + "application/vnd.ms-excel.sheet.binary.macroenabled.12": { + "source": "iana", + "extensions": [ + "xlsb" + ] + }, + "application/vnd.ms-excel.sheet.macroenabled.12": { + "source": "iana", + "extensions": [ + "xlsm" + ] + }, + "application/vnd.ms-excel.template.macroenabled.12": { + "source": "iana", + "extensions": [ + "xltm" + ] + }, + "application/vnd.ms-fontobject": { + "source": "iana", + "compressible": true, + "extensions": [ + "eot" + ] + }, + "application/vnd.ms-htmlhelp": { + "source": "iana", + "extensions": [ + "chm" + ] + }, + "application/vnd.ms-ims": { + "source": "iana", + "extensions": [ + "ims" + ] + }, + "application/vnd.ms-lrm": { + "source": "iana", + "extensions": [ + "lrm" + ] + }, + "application/vnd.ms-office.activex+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-officetheme": { + "source": "iana", + "extensions": [ + "thmx" + ] + }, + "application/vnd.ms-opentype": { + "source": "apache", + "compressible": true + }, + "application/vnd.ms-outlook": { + "compressible": false, + "extensions": [ + "msg" + ] + }, + "application/vnd.ms-package.obfuscated-opentype": { + "source": "apache" + }, + "application/vnd.ms-pki.seccat": { + "source": "apache", + "extensions": [ + "cat" + ] + }, + "application/vnd.ms-pki.stl": { + "source": "apache", + "extensions": [ + "stl" + ] + }, + "application/vnd.ms-playready.initiator+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-powerpoint": { + "source": "iana", + "compressible": false, + "extensions": [ + "ppt", + "pps", + "pot" + ] + }, + "application/vnd.ms-powerpoint.addin.macroenabled.12": { + "source": "iana", + "extensions": [ + "ppam" + ] + }, + "application/vnd.ms-powerpoint.presentation.macroenabled.12": { + "source": "iana", + "extensions": [ + "pptm" + ] + }, + "application/vnd.ms-powerpoint.slide.macroenabled.12": { + "source": "iana", + "extensions": [ + "sldm" + ] + }, + "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { + "source": "iana", + "extensions": [ + "ppsm" + ] + }, + "application/vnd.ms-powerpoint.template.macroenabled.12": { + "source": "iana", + "extensions": [ + "potm" + ] + }, + "application/vnd.ms-printdevicecapabilities+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-printing.printticket+xml": { + "source": "apache", + "compressible": true + }, + "application/vnd.ms-printschematicket+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-project": { + "source": "iana", + "extensions": [ + "mpp", + "mpt" + ] + }, + "application/vnd.ms-tnef": { + "source": "iana" + }, + "application/vnd.ms-windows.devicepairing": { + "source": "iana" + }, + "application/vnd.ms-windows.nwprinting.oob": { + "source": "iana" + }, + "application/vnd.ms-windows.printerpairing": { + "source": "iana" + }, + "application/vnd.ms-windows.wsd.oob": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.lic-chlg-req": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.lic-resp": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.meter-chlg-req": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.meter-resp": { + "source": "iana" + }, + "application/vnd.ms-word.document.macroenabled.12": { + "source": "iana", + "extensions": [ + "docm" + ] + }, + "application/vnd.ms-word.template.macroenabled.12": { + "source": "iana", + "extensions": [ + "dotm" + ] + }, + "application/vnd.ms-works": { + "source": "iana", + "extensions": [ + "wps", + "wks", + "wcm", + "wdb" + ] + }, + "application/vnd.ms-wpl": { + "source": "iana", + "extensions": [ + "wpl" + ] + }, + "application/vnd.ms-xpsdocument": { + "source": "iana", + "compressible": false, + "extensions": [ + "xps" + ] + }, + "application/vnd.msa-disk-image": { + "source": "iana" + }, + "application/vnd.mseq": { + "source": "iana", + "extensions": [ + "mseq" + ] + }, + "application/vnd.msgpack": { + "source": "iana" + }, + "application/vnd.msign": { + "source": "iana" + }, + "application/vnd.multiad.creator": { + "source": "iana" + }, + "application/vnd.multiad.creator.cif": { + "source": "iana" + }, + "application/vnd.music-niff": { + "source": "iana" + }, + "application/vnd.musician": { + "source": "iana", + "extensions": [ + "mus" + ] + }, + "application/vnd.muvee.style": { + "source": "iana", + "extensions": [ + "msty" + ] + }, + "application/vnd.mynfc": { + "source": "iana", + "extensions": [ + "taglet" + ] + }, + "application/vnd.nacamar.ybrid+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.nato.bindingdataobject+cbor": { + "source": "iana" + }, + "application/vnd.nato.bindingdataobject+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.nato.bindingdataobject+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "bdo" + ] + }, + "application/vnd.nato.openxmlformats-package.iepd+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.ncd.control": { + "source": "iana" + }, + "application/vnd.ncd.reference": { + "source": "iana" + }, + "application/vnd.nearst.inv+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.nebumind.line": { + "source": "iana" + }, + "application/vnd.nervana": { + "source": "iana" + }, + "application/vnd.netfpx": { + "source": "iana" + }, + "application/vnd.neurolanguage.nlu": { + "source": "iana", + "extensions": [ + "nlu" + ] + }, + "application/vnd.nimn": { + "source": "iana" + }, + "application/vnd.nintendo.nitro.rom": { + "source": "iana" + }, + "application/vnd.nintendo.snes.rom": { + "source": "iana" + }, + "application/vnd.nitf": { + "source": "iana", + "extensions": [ + "ntf", + "nitf" + ] + }, + "application/vnd.noblenet-directory": { + "source": "iana", + "extensions": [ + "nnd" + ] + }, + "application/vnd.noblenet-sealer": { + "source": "iana", + "extensions": [ + "nns" + ] + }, + "application/vnd.noblenet-web": { + "source": "iana", + "extensions": [ + "nnw" + ] + }, + "application/vnd.nokia.catalogs": { + "source": "iana" + }, + "application/vnd.nokia.conml+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.conml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.iptv.config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.isds-radio-presets": { + "source": "iana" + }, + "application/vnd.nokia.landmark+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.landmark+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.landmarkcollection+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.n-gage.ac+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "ac" + ] + }, + "application/vnd.nokia.n-gage.data": { + "source": "iana", + "extensions": [ + "ngdat" + ] + }, + "application/vnd.nokia.n-gage.symbian.install": { + "source": "apache", + "extensions": [ + "n-gage" + ] + }, + "application/vnd.nokia.ncd": { + "source": "iana" + }, + "application/vnd.nokia.pcd+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.pcd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.radio-preset": { + "source": "iana", + "extensions": [ + "rpst" + ] + }, + "application/vnd.nokia.radio-presets": { + "source": "iana", + "extensions": [ + "rpss" + ] + }, + "application/vnd.novadigm.edm": { + "source": "iana", + "extensions": [ + "edm" + ] + }, + "application/vnd.novadigm.edx": { + "source": "iana", + "extensions": [ + "edx" + ] + }, + "application/vnd.novadigm.ext": { + "source": "iana", + "extensions": [ + "ext" + ] + }, + "application/vnd.ntt-local.content-share": { + "source": "iana" + }, + "application/vnd.ntt-local.file-transfer": { + "source": "iana" + }, + "application/vnd.ntt-local.ogw_remote-access": { + "source": "iana" + }, + "application/vnd.ntt-local.sip-ta_remote": { + "source": "iana" + }, + "application/vnd.ntt-local.sip-ta_tcp_stream": { + "source": "iana" + }, + "application/vnd.oai.workflows": { + "source": "iana" + }, + "application/vnd.oai.workflows+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oai.workflows+yaml": { + "source": "iana" + }, + "application/vnd.oasis.opendocument.base": { + "source": "iana" + }, + "application/vnd.oasis.opendocument.chart": { + "source": "iana", + "extensions": [ + "odc" + ] + }, + "application/vnd.oasis.opendocument.chart-template": { + "source": "iana", + "extensions": [ + "otc" + ] + }, + "application/vnd.oasis.opendocument.database": { + "source": "apache", + "extensions": [ + "odb" + ] + }, + "application/vnd.oasis.opendocument.formula": { + "source": "iana", + "extensions": [ + "odf" + ] + }, + "application/vnd.oasis.opendocument.formula-template": { + "source": "iana", + "extensions": [ + "odft" + ] + }, + "application/vnd.oasis.opendocument.graphics": { + "source": "iana", + "compressible": false, + "extensions": [ + "odg" + ] + }, + "application/vnd.oasis.opendocument.graphics-template": { + "source": "iana", + "extensions": [ + "otg" + ] + }, + "application/vnd.oasis.opendocument.image": { + "source": "iana", + "extensions": [ + "odi" + ] + }, + "application/vnd.oasis.opendocument.image-template": { + "source": "iana", + "extensions": [ + "oti" + ] + }, + "application/vnd.oasis.opendocument.presentation": { + "source": "iana", + "compressible": false, + "extensions": [ + "odp" + ] + }, + "application/vnd.oasis.opendocument.presentation-template": { + "source": "iana", + "extensions": [ + "otp" + ] + }, + "application/vnd.oasis.opendocument.spreadsheet": { + "source": "iana", + "compressible": false, + "extensions": [ + "ods" + ] + }, + "application/vnd.oasis.opendocument.spreadsheet-template": { + "source": "iana", + "extensions": [ + "ots" + ] + }, + "application/vnd.oasis.opendocument.text": { + "source": "iana", + "compressible": false, + "extensions": [ + "odt" + ] + }, + "application/vnd.oasis.opendocument.text-master": { + "source": "iana", + "extensions": [ + "odm" + ] + }, + "application/vnd.oasis.opendocument.text-master-template": { + "source": "iana" + }, + "application/vnd.oasis.opendocument.text-template": { + "source": "iana", + "extensions": [ + "ott" + ] + }, + "application/vnd.oasis.opendocument.text-web": { + "source": "iana", + "extensions": [ + "oth" + ] + }, + "application/vnd.obn": { + "source": "iana" + }, + "application/vnd.ocf+cbor": { + "source": "iana" + }, + "application/vnd.oci.image.manifest.v1+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oftn.l10n+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.contentaccessdownload+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.contentaccessstreaming+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.cspg-hexbinary": { + "source": "iana" + }, + "application/vnd.oipf.dae.svg+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.dae.xhtml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.mippvcontrolmessage+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.pae.gem": { + "source": "iana" + }, + "application/vnd.oipf.spdiscovery+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.spdlist+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.ueprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.userprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.olpc-sugar": { + "source": "iana", + "extensions": [ + "xo" + ] + }, + "application/vnd.oma-scws-config": { + "source": "iana" + }, + "application/vnd.oma-scws-http-request": { + "source": "iana" + }, + "application/vnd.oma-scws-http-response": { + "source": "iana" + }, + "application/vnd.oma.bcast.associated-procedure-parameter+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.drm-trigger+xml": { + "source": "apache", + "compressible": true + }, + "application/vnd.oma.bcast.imd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.ltkm": { + "source": "iana" + }, + "application/vnd.oma.bcast.notification+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.provisioningtrigger": { + "source": "iana" + }, + "application/vnd.oma.bcast.sgboot": { + "source": "iana" + }, + "application/vnd.oma.bcast.sgdd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.sgdu": { + "source": "iana" + }, + "application/vnd.oma.bcast.simple-symbol-container": { + "source": "iana" + }, + "application/vnd.oma.bcast.smartcard-trigger+xml": { + "source": "apache", + "compressible": true + }, + "application/vnd.oma.bcast.sprov+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.stkm": { + "source": "iana" + }, + "application/vnd.oma.cab-address-book+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-feature-handler+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-pcc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-subs-invite+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-user-prefs+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.dcd": { + "source": "iana" + }, + "application/vnd.oma.dcdc": { + "source": "iana" + }, + "application/vnd.oma.dd2+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "dd2" + ] + }, + "application/vnd.oma.drm.risd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.group-usage-list+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.lwm2m+cbor": { + "source": "iana" + }, + "application/vnd.oma.lwm2m+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.lwm2m+tlv": { + "source": "iana" + }, + "application/vnd.oma.pal+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.detailed-progress-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.final-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.groups+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.invocation-descriptor+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.optimized-progress-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.push": { + "source": "iana" + }, + "application/vnd.oma.scidm.messages+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.xcap-directory+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.omads-email+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omads-file+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omads-folder+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omaloc-supl-init": { + "source": "iana" + }, + "application/vnd.onepager": { + "source": "iana" + }, + "application/vnd.onepagertamp": { + "source": "iana" + }, + "application/vnd.onepagertamx": { + "source": "iana" + }, + "application/vnd.onepagertat": { + "source": "iana" + }, + "application/vnd.onepagertatp": { + "source": "iana" + }, + "application/vnd.onepagertatx": { + "source": "iana" + }, + "application/vnd.onvif.metadata": { + "source": "iana" + }, + "application/vnd.openblox.game+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "obgx" + ] + }, + "application/vnd.openblox.game-binary": { + "source": "iana" + }, + "application/vnd.openeye.oeb": { + "source": "iana" + }, + "application/vnd.openofficeorg.extension": { + "source": "apache", + "extensions": [ + "oxt" + ] + }, + "application/vnd.openstreetmap.data+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "osm" + ] + }, + "application/vnd.opentimestamps.ots": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.custom-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawing+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.extended-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation": { + "source": "iana", + "compressible": false, + "extensions": [ + "pptx" + ] + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide": { + "source": "iana", + "extensions": [ + "sldx" + ] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { + "source": "iana", + "extensions": [ + "ppsx" + ] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.template": { + "source": "iana", + "extensions": [ + "potx" + ] + }, + "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + "source": "iana", + "compressible": false, + "extensions": [ + "xlsx" + ] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { + "source": "iana", + "extensions": [ + "xltx" + ] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.theme+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.themeoverride+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.vmldrawing": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { + "source": "iana", + "compressible": false, + "extensions": [ + "docx" + ] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { + "source": "iana", + "extensions": [ + "dotx" + ] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.core-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.relationships+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oracle.resource+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.orange.indata": { + "source": "iana" + }, + "application/vnd.osa.netdeploy": { + "source": "iana" + }, + "application/vnd.osgeo.mapguide.package": { + "source": "iana", + "extensions": [ + "mgp" + ] + }, + "application/vnd.osgi.bundle": { + "source": "iana" + }, + "application/vnd.osgi.dp": { + "source": "iana", + "extensions": [ + "dp" + ] + }, + "application/vnd.osgi.subsystem": { + "source": "iana", + "extensions": [ + "esa" + ] + }, + "application/vnd.otps.ct-kip+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oxli.countgraph": { + "source": "iana" + }, + "application/vnd.pagerduty+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.palm": { + "source": "iana", + "extensions": [ + "pdb", + "pqa", + "oprc" + ] + }, + "application/vnd.panoply": { + "source": "iana" + }, + "application/vnd.paos.xml": { + "source": "iana" + }, + "application/vnd.patentdive": { + "source": "iana" + }, + "application/vnd.patientecommsdoc": { + "source": "iana" + }, + "application/vnd.pawaafile": { + "source": "iana", + "extensions": [ + "paw" + ] + }, + "application/vnd.pcos": { + "source": "iana" + }, + "application/vnd.pg.format": { + "source": "iana", + "extensions": [ + "str" + ] + }, + "application/vnd.pg.osasli": { + "source": "iana", + "extensions": [ + "ei6" + ] + }, + "application/vnd.piaccess.application-licence": { + "source": "iana" + }, + "application/vnd.picsel": { + "source": "iana", + "extensions": [ + "efif" + ] + }, + "application/vnd.pmi.widget": { + "source": "iana", + "extensions": [ + "wg" + ] + }, + "application/vnd.poc.group-advertisement+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.pocketlearn": { + "source": "iana", + "extensions": [ + "plf" + ] + }, + "application/vnd.powerbuilder6": { + "source": "iana", + "extensions": [ + "pbd" + ] + }, + "application/vnd.powerbuilder6-s": { + "source": "iana" + }, + "application/vnd.powerbuilder7": { + "source": "iana" + }, + "application/vnd.powerbuilder7-s": { + "source": "iana" + }, + "application/vnd.powerbuilder75": { + "source": "iana" + }, + "application/vnd.powerbuilder75-s": { + "source": "iana" + }, + "application/vnd.preminet": { + "source": "iana" + }, + "application/vnd.previewsystems.box": { + "source": "iana", + "extensions": [ + "box" + ] + }, + "application/vnd.proteus.magazine": { + "source": "iana", + "extensions": [ + "mgz" + ] + }, + "application/vnd.psfs": { + "source": "iana" + }, + "application/vnd.pt.mundusmundi": { + "source": "iana" + }, + "application/vnd.publishare-delta-tree": { + "source": "iana", + "extensions": [ + "qps" + ] + }, + "application/vnd.pvi.ptid1": { + "source": "iana", + "extensions": [ + "ptid" + ] + }, + "application/vnd.pwg-multiplexed": { + "source": "iana" + }, + "application/vnd.pwg-xhtml-print+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xhtm" + ] + }, + "application/vnd.qualcomm.brew-app-res": { + "source": "iana" + }, + "application/vnd.quarantainenet": { + "source": "iana" + }, + "application/vnd.quark.quarkxpress": { + "source": "iana", + "extensions": [ + "qxd", + "qxt", + "qwd", + "qwt", + "qxl", + "qxb" + ] + }, + "application/vnd.quobject-quoxdocument": { + "source": "iana" + }, + "application/vnd.radisys.moml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-conf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-conn+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-dialog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-stream+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-conf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-base+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-fax-detect+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-group+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-speech+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-transform+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.rainstor.data": { + "source": "iana" + }, + "application/vnd.rapid": { + "source": "iana" + }, + "application/vnd.rar": { + "source": "iana", + "extensions": [ + "rar" + ] + }, + "application/vnd.realvnc.bed": { + "source": "iana", + "extensions": [ + "bed" + ] + }, + "application/vnd.recordare.musicxml": { + "source": "iana", + "extensions": [ + "mxl" + ] + }, + "application/vnd.recordare.musicxml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "musicxml" + ] + }, + "application/vnd.relpipe": { + "source": "iana" + }, + "application/vnd.renlearn.rlprint": { + "source": "iana" + }, + "application/vnd.resilient.logic": { + "source": "iana" + }, + "application/vnd.restful+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.rig.cryptonote": { + "source": "iana", + "extensions": [ + "cryptonote" + ] + }, + "application/vnd.rim.cod": { + "source": "apache", + "extensions": [ + "cod" + ] + }, + "application/vnd.rn-realmedia": { + "source": "apache", + "extensions": [ + "rm" + ] + }, + "application/vnd.rn-realmedia-vbr": { + "source": "apache", + "extensions": [ + "rmvb" + ] + }, + "application/vnd.route66.link66+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "link66" + ] + }, + "application/vnd.rs-274x": { + "source": "iana" + }, + "application/vnd.ruckus.download": { + "source": "iana" + }, + "application/vnd.s3sms": { + "source": "iana" + }, + "application/vnd.sailingtracker.track": { + "source": "iana", + "extensions": [ + "st" + ] + }, + "application/vnd.sar": { + "source": "iana" + }, + "application/vnd.sbm.cid": { + "source": "iana" + }, + "application/vnd.sbm.mid2": { + "source": "iana" + }, + "application/vnd.scribus": { + "source": "iana" + }, + "application/vnd.sealed.3df": { + "source": "iana" + }, + "application/vnd.sealed.csf": { + "source": "iana" + }, + "application/vnd.sealed.doc": { + "source": "iana" + }, + "application/vnd.sealed.eml": { + "source": "iana" + }, + "application/vnd.sealed.mht": { + "source": "iana" + }, + "application/vnd.sealed.net": { + "source": "iana" + }, + "application/vnd.sealed.ppt": { + "source": "iana" + }, + "application/vnd.sealed.tiff": { + "source": "iana" + }, + "application/vnd.sealed.xls": { + "source": "iana" + }, + "application/vnd.sealedmedia.softseal.html": { + "source": "iana" + }, + "application/vnd.sealedmedia.softseal.pdf": { + "source": "iana" + }, + "application/vnd.seemail": { + "source": "iana", + "extensions": [ + "see" + ] + }, + "application/vnd.seis+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.sema": { + "source": "iana", + "extensions": [ + "sema" + ] + }, + "application/vnd.semd": { + "source": "iana", + "extensions": [ + "semd" + ] + }, + "application/vnd.semf": { + "source": "iana", + "extensions": [ + "semf" + ] + }, + "application/vnd.shade-save-file": { + "source": "iana" + }, + "application/vnd.shana.informed.formdata": { + "source": "iana", + "extensions": [ + "ifm" + ] + }, + "application/vnd.shana.informed.formtemplate": { + "source": "iana", + "extensions": [ + "itp" + ] + }, + "application/vnd.shana.informed.interchange": { + "source": "iana", + "extensions": [ + "iif" + ] + }, + "application/vnd.shana.informed.package": { + "source": "iana", + "extensions": [ + "ipk" + ] + }, + "application/vnd.shootproof+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.shopkick+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.shp": { + "source": "iana" + }, + "application/vnd.shx": { + "source": "iana" + }, + "application/vnd.sigrok.session": { + "source": "iana" + }, + "application/vnd.simtech-mindmapper": { + "source": "iana", + "extensions": [ + "twd", + "twds" + ] + }, + "application/vnd.siren+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.smaf": { + "source": "iana", + "extensions": [ + "mmf" + ] + }, + "application/vnd.smart.notebook": { + "source": "iana" + }, + "application/vnd.smart.teacher": { + "source": "iana", + "extensions": [ + "teacher" + ] + }, + "application/vnd.smintio.portals.archive": { + "source": "iana" + }, + "application/vnd.snesdev-page-table": { + "source": "iana" + }, + "application/vnd.software602.filler.form+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "fo" + ] + }, + "application/vnd.software602.filler.form-xml-zip": { + "source": "iana" + }, + "application/vnd.solent.sdkm+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "sdkm", + "sdkd" + ] + }, + "application/vnd.spotfire.dxp": { + "source": "iana", + "extensions": [ + "dxp" + ] + }, + "application/vnd.spotfire.sfs": { + "source": "iana", + "extensions": [ + "sfs" + ] + }, + "application/vnd.sqlite3": { + "source": "iana" + }, + "application/vnd.sss-cod": { + "source": "iana" + }, + "application/vnd.sss-dtf": { + "source": "iana" + }, + "application/vnd.sss-ntf": { + "source": "iana" + }, + "application/vnd.stardivision.calc": { + "source": "apache", + "extensions": [ + "sdc" + ] + }, + "application/vnd.stardivision.draw": { + "source": "apache", + "extensions": [ + "sda" + ] + }, + "application/vnd.stardivision.impress": { + "source": "apache", + "extensions": [ + "sdd" + ] + }, + "application/vnd.stardivision.math": { + "source": "apache", + "extensions": [ + "smf" + ] + }, + "application/vnd.stardivision.writer": { + "source": "apache", + "extensions": [ + "sdw", + "vor" + ] + }, + "application/vnd.stardivision.writer-global": { + "source": "apache", + "extensions": [ + "sgl" + ] + }, + "application/vnd.stepmania.package": { + "source": "iana", + "extensions": [ + "smzip" + ] + }, + "application/vnd.stepmania.stepchart": { + "source": "iana", + "extensions": [ + "sm" + ] + }, + "application/vnd.street-stream": { + "source": "iana" + }, + "application/vnd.sun.wadl+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "wadl" + ] + }, + "application/vnd.sun.xml.calc": { + "source": "apache", + "extensions": [ + "sxc" + ] + }, + "application/vnd.sun.xml.calc.template": { + "source": "apache", + "extensions": [ + "stc" + ] + }, + "application/vnd.sun.xml.draw": { + "source": "apache", + "extensions": [ + "sxd" + ] + }, + "application/vnd.sun.xml.draw.template": { + "source": "apache", + "extensions": [ + "std" + ] + }, + "application/vnd.sun.xml.impress": { + "source": "apache", + "extensions": [ + "sxi" + ] + }, + "application/vnd.sun.xml.impress.template": { + "source": "apache", + "extensions": [ + "sti" + ] + }, + "application/vnd.sun.xml.math": { + "source": "apache", + "extensions": [ + "sxm" + ] + }, + "application/vnd.sun.xml.writer": { + "source": "apache", + "extensions": [ + "sxw" + ] + }, + "application/vnd.sun.xml.writer.global": { + "source": "apache", + "extensions": [ + "sxg" + ] + }, + "application/vnd.sun.xml.writer.template": { + "source": "apache", + "extensions": [ + "stw" + ] + }, + "application/vnd.sus-calendar": { + "source": "iana", + "extensions": [ + "sus", + "susp" + ] + }, + "application/vnd.svd": { + "source": "iana", + "extensions": [ + "svd" + ] + }, + "application/vnd.swiftview-ics": { + "source": "iana" + }, + "application/vnd.sybyl.mol2": { + "source": "iana" + }, + "application/vnd.sycle+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.syft+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.symbian.install": { + "source": "apache", + "extensions": [ + "sis", + "sisx" + ] + }, + "application/vnd.syncml+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": [ + "xsm" + ] + }, + "application/vnd.syncml.dm+wbxml": { + "source": "iana", + "charset": "UTF-8", + "extensions": [ + "bdm" + ] + }, + "application/vnd.syncml.dm+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": [ + "xdm" + ] + }, + "application/vnd.syncml.dm.notification": { + "source": "iana" + }, + "application/vnd.syncml.dmddf+wbxml": { + "source": "iana" + }, + "application/vnd.syncml.dmddf+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": [ + "ddf" + ] + }, + "application/vnd.syncml.dmtnds+wbxml": { + "source": "iana" + }, + "application/vnd.syncml.dmtnds+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.syncml.ds.notification": { + "source": "iana" + }, + "application/vnd.tableschema+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.tao.intent-module-archive": { + "source": "iana", + "extensions": [ + "tao" + ] + }, + "application/vnd.tcpdump.pcap": { + "source": "iana", + "extensions": [ + "pcap", + "cap", + "dmp" + ] + }, + "application/vnd.think-cell.ppttc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.tmd.mediaflex.api+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.tml": { + "source": "iana" + }, + "application/vnd.tmobile-livetv": { + "source": "iana", + "extensions": [ + "tmo" + ] + }, + "application/vnd.tri.onesource": { + "source": "iana" + }, + "application/vnd.trid.tpt": { + "source": "iana", + "extensions": [ + "tpt" + ] + }, + "application/vnd.triscape.mxs": { + "source": "iana", + "extensions": [ + "mxs" + ] + }, + "application/vnd.trueapp": { + "source": "iana", + "extensions": [ + "tra" + ] + }, + "application/vnd.truedoc": { + "source": "iana" + }, + "application/vnd.ubisoft.webplayer": { + "source": "iana" + }, + "application/vnd.ufdl": { + "source": "iana", + "extensions": [ + "ufd", + "ufdl" + ] + }, + "application/vnd.uiq.theme": { + "source": "iana", + "extensions": [ + "utz" + ] + }, + "application/vnd.umajin": { + "source": "iana", + "extensions": [ + "umj" + ] + }, + "application/vnd.unity": { + "source": "iana", + "extensions": [ + "unityweb" + ] + }, + "application/vnd.uoml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "uoml", + "uo" + ] + }, + "application/vnd.uplanet.alert": { + "source": "iana" + }, + "application/vnd.uplanet.alert-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.bearer-choice": { + "source": "iana" + }, + "application/vnd.uplanet.bearer-choice-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.cacheop": { + "source": "iana" + }, + "application/vnd.uplanet.cacheop-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.channel": { + "source": "iana" + }, + "application/vnd.uplanet.channel-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.list": { + "source": "iana" + }, + "application/vnd.uplanet.list-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.listcmd": { + "source": "iana" + }, + "application/vnd.uplanet.listcmd-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.signal": { + "source": "iana" + }, + "application/vnd.uri-map": { + "source": "iana" + }, + "application/vnd.valve.source.material": { + "source": "iana" + }, + "application/vnd.vcx": { + "source": "iana", + "extensions": [ + "vcx" + ] + }, + "application/vnd.vd-study": { + "source": "iana" + }, + "application/vnd.vectorworks": { + "source": "iana" + }, + "application/vnd.vel+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.verimatrix.vcas": { + "source": "iana" + }, + "application/vnd.veritone.aion+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.veryant.thin": { + "source": "iana" + }, + "application/vnd.ves.encrypted": { + "source": "iana" + }, + "application/vnd.vidsoft.vidconference": { + "source": "iana" + }, + "application/vnd.visio": { + "source": "iana", + "extensions": [ + "vsd", + "vst", + "vss", + "vsw" + ] + }, + "application/vnd.visionary": { + "source": "iana", + "extensions": [ + "vis" + ] + }, + "application/vnd.vividence.scriptfile": { + "source": "iana" + }, + "application/vnd.vsf": { + "source": "iana", + "extensions": [ + "vsf" + ] + }, + "application/vnd.wap.sic": { + "source": "iana" + }, + "application/vnd.wap.slc": { + "source": "iana" + }, + "application/vnd.wap.wbxml": { + "source": "iana", + "charset": "UTF-8", + "extensions": [ + "wbxml" + ] + }, + "application/vnd.wap.wmlc": { + "source": "iana", + "extensions": [ + "wmlc" + ] + }, + "application/vnd.wap.wmlscriptc": { + "source": "iana", + "extensions": [ + "wmlsc" + ] + }, + "application/vnd.wasmflow.wafl": { + "source": "iana" + }, + "application/vnd.webturbo": { + "source": "iana", + "extensions": [ + "wtb" + ] + }, + "application/vnd.wfa.dpp": { + "source": "iana" + }, + "application/vnd.wfa.p2p": { + "source": "iana" + }, + "application/vnd.wfa.wsc": { + "source": "iana" + }, + "application/vnd.windows.devicepairing": { + "source": "iana" + }, + "application/vnd.wmc": { + "source": "iana" + }, + "application/vnd.wmf.bootstrap": { + "source": "iana" + }, + "application/vnd.wolfram.mathematica": { + "source": "iana" + }, + "application/vnd.wolfram.mathematica.package": { + "source": "iana" + }, + "application/vnd.wolfram.player": { + "source": "iana", + "extensions": [ + "nbp" + ] + }, + "application/vnd.wordlift": { + "source": "iana" + }, + "application/vnd.wordperfect": { + "source": "iana", + "extensions": [ + "wpd" + ] + }, + "application/vnd.wqd": { + "source": "iana", + "extensions": [ + "wqd" + ] + }, + "application/vnd.wrq-hp3000-labelled": { + "source": "iana" + }, + "application/vnd.wt.stf": { + "source": "iana", + "extensions": [ + "stf" + ] + }, + "application/vnd.wv.csp+wbxml": { + "source": "iana" + }, + "application/vnd.wv.csp+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.wv.ssp+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.xacml+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.xara": { + "source": "iana", + "extensions": [ + "xar" + ] + }, + "application/vnd.xecrets-encrypted": { + "source": "iana" + }, + "application/vnd.xfdl": { + "source": "iana", + "extensions": [ + "xfdl" + ] + }, + "application/vnd.xfdl.webform": { + "source": "iana" + }, + "application/vnd.xmi+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.xmpie.cpkg": { + "source": "iana" + }, + "application/vnd.xmpie.dpkg": { + "source": "iana" + }, + "application/vnd.xmpie.plan": { + "source": "iana" + }, + "application/vnd.xmpie.ppkg": { + "source": "iana" + }, + "application/vnd.xmpie.xlim": { + "source": "iana" + }, + "application/vnd.yamaha.hv-dic": { + "source": "iana", + "extensions": [ + "hvd" + ] + }, + "application/vnd.yamaha.hv-script": { + "source": "iana", + "extensions": [ + "hvs" + ] + }, + "application/vnd.yamaha.hv-voice": { + "source": "iana", + "extensions": [ + "hvp" + ] + }, + "application/vnd.yamaha.openscoreformat": { + "source": "iana", + "extensions": [ + "osf" + ] + }, + "application/vnd.yamaha.openscoreformat.osfpvg+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "osfpvg" + ] + }, + "application/vnd.yamaha.remote-setup": { + "source": "iana" + }, + "application/vnd.yamaha.smaf-audio": { + "source": "iana", + "extensions": [ + "saf" + ] + }, + "application/vnd.yamaha.smaf-phrase": { + "source": "iana", + "extensions": [ + "spf" + ] + }, + "application/vnd.yamaha.through-ngn": { + "source": "iana" + }, + "application/vnd.yamaha.tunnel-udpencap": { + "source": "iana" + }, + "application/vnd.yaoweme": { + "source": "iana" + }, + "application/vnd.yellowriver-custom-menu": { + "source": "iana", + "extensions": [ + "cmp" + ] + }, + "application/vnd.zul": { + "source": "iana", + "extensions": [ + "zir", + "zirz" + ] + }, + "application/vnd.zzazz.deck+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "zaz" + ] + }, + "application/voicexml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "vxml" + ] + }, + "application/voucher-cms+json": { + "source": "iana", + "compressible": true + }, + "application/vp": { + "source": "iana" + }, + "application/vq-rtcpxr": { + "source": "iana" + }, + "application/wasm": { + "source": "iana", + "compressible": true, + "extensions": [ + "wasm" + ] + }, + "application/watcherinfo+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "wif" + ] + }, + "application/webpush-options+json": { + "source": "iana", + "compressible": true + }, + "application/whoispp-query": { + "source": "iana" + }, + "application/whoispp-response": { + "source": "iana" + }, + "application/widget": { + "source": "iana", + "extensions": [ + "wgt" + ] + }, + "application/winhlp": { + "source": "apache", + "extensions": [ + "hlp" + ] + }, + "application/wita": { + "source": "iana" + }, + "application/wordperfect5.1": { + "source": "iana" + }, + "application/wsdl+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "wsdl" + ] + }, + "application/wspolicy+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "wspolicy" + ] + }, + "application/x-7z-compressed": { + "source": "apache", + "compressible": false, + "extensions": [ + "7z" + ] + }, + "application/x-abiword": { + "source": "apache", + "extensions": [ + "abw" + ] + }, + "application/x-ace-compressed": { + "source": "apache", + "extensions": [ + "ace" + ] + }, + "application/x-amf": { + "source": "apache" + }, + "application/x-apple-diskimage": { + "source": "apache", + "extensions": [ + "dmg" + ] + }, + "application/x-arj": { + "compressible": false, + "extensions": [ + "arj" + ] + }, + "application/x-authorware-bin": { + "source": "apache", + "extensions": [ + "aab", + "x32", + "u32", + "vox" + ] + }, + "application/x-authorware-map": { + "source": "apache", + "extensions": [ + "aam" + ] + }, + "application/x-authorware-seg": { + "source": "apache", + "extensions": [ + "aas" + ] + }, + "application/x-bcpio": { + "source": "apache", + "extensions": [ + "bcpio" + ] + }, + "application/x-bdoc": { + "compressible": false, + "extensions": [ + "bdoc" + ] + }, + "application/x-bittorrent": { + "source": "apache", + "extensions": [ + "torrent" + ] + }, + "application/x-blorb": { + "source": "apache", + "extensions": [ + "blb", + "blorb" + ] + }, + "application/x-bzip": { + "source": "apache", + "compressible": false, + "extensions": [ + "bz" + ] + }, + "application/x-bzip2": { + "source": "apache", + "compressible": false, + "extensions": [ + "bz2", + "boz" + ] + }, + "application/x-cbr": { + "source": "apache", + "extensions": [ + "cbr", + "cba", + "cbt", + "cbz", + "cb7" + ] + }, + "application/x-cdlink": { + "source": "apache", + "extensions": [ + "vcd" + ] + }, + "application/x-cfs-compressed": { + "source": "apache", + "extensions": [ + "cfs" + ] + }, + "application/x-chat": { + "source": "apache", + "extensions": [ + "chat" + ] + }, + "application/x-chess-pgn": { + "source": "apache", + "extensions": [ + "pgn" + ] + }, + "application/x-chrome-extension": { + "extensions": [ + "crx" + ] + }, + "application/x-cocoa": { + "source": "nginx", + "extensions": [ + "cco" + ] + }, + "application/x-compress": { + "source": "apache" + }, + "application/x-conference": { + "source": "apache", + "extensions": [ + "nsc" + ] + }, + "application/x-cpio": { + "source": "apache", + "extensions": [ + "cpio" + ] + }, + "application/x-csh": { + "source": "apache", + "extensions": [ + "csh" + ] + }, + "application/x-deb": { + "compressible": false + }, + "application/x-debian-package": { + "source": "apache", + "extensions": [ + "deb", + "udeb" + ] + }, + "application/x-dgc-compressed": { + "source": "apache", + "extensions": [ + "dgc" + ] + }, + "application/x-director": { + "source": "apache", + "extensions": [ + "dir", + "dcr", + "dxr", + "cst", + "cct", + "cxt", + "w3d", + "fgd", + "swa" + ] + }, + "application/x-doom": { + "source": "apache", + "extensions": [ + "wad" + ] + }, + "application/x-dtbncx+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "ncx" + ] + }, + "application/x-dtbook+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "dtb" + ] + }, + "application/x-dtbresource+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "res" + ] + }, + "application/x-dvi": { + "source": "apache", + "compressible": false, + "extensions": [ + "dvi" + ] + }, + "application/x-envoy": { + "source": "apache", + "extensions": [ + "evy" + ] + }, + "application/x-eva": { + "source": "apache", + "extensions": [ + "eva" + ] + }, + "application/x-font-bdf": { + "source": "apache", + "extensions": [ + "bdf" + ] + }, + "application/x-font-dos": { + "source": "apache" + }, + "application/x-font-framemaker": { + "source": "apache" + }, + "application/x-font-ghostscript": { + "source": "apache", + "extensions": [ + "gsf" + ] + }, + "application/x-font-libgrx": { + "source": "apache" + }, + "application/x-font-linux-psf": { + "source": "apache", + "extensions": [ + "psf" + ] + }, + "application/x-font-pcf": { + "source": "apache", + "extensions": [ + "pcf" + ] + }, + "application/x-font-snf": { + "source": "apache", + "extensions": [ + "snf" + ] + }, + "application/x-font-speedo": { + "source": "apache" + }, + "application/x-font-sunos-news": { + "source": "apache" + }, + "application/x-font-type1": { + "source": "apache", + "extensions": [ + "pfa", + "pfb", + "pfm", + "afm" + ] + }, + "application/x-font-vfont": { + "source": "apache" + }, + "application/x-freearc": { + "source": "apache", + "extensions": [ + "arc" + ] + }, + "application/x-futuresplash": { + "source": "apache", + "extensions": [ + "spl" + ] + }, + "application/x-gca-compressed": { + "source": "apache", + "extensions": [ + "gca" + ] + }, + "application/x-glulx": { + "source": "apache", + "extensions": [ + "ulx" + ] + }, + "application/x-gnumeric": { + "source": "apache", + "extensions": [ + "gnumeric" + ] + }, + "application/x-gramps-xml": { + "source": "apache", + "extensions": [ + "gramps" + ] + }, + "application/x-gtar": { + "source": "apache", + "extensions": [ + "gtar" + ] + }, + "application/x-gzip": { + "source": "apache" + }, + "application/x-hdf": { + "source": "apache", + "extensions": [ + "hdf" + ] + }, + "application/x-httpd-php": { + "compressible": true, + "extensions": [ + "php" + ] + }, + "application/x-install-instructions": { + "source": "apache", + "extensions": [ + "install" + ] + }, + "application/x-iso9660-image": { + "source": "apache", + "extensions": [ + "iso" + ] + }, + "application/x-iwork-keynote-sffkey": { + "extensions": [ + "key" + ] + }, + "application/x-iwork-numbers-sffnumbers": { + "extensions": [ + "numbers" + ] + }, + "application/x-iwork-pages-sffpages": { + "extensions": [ + "pages" + ] + }, + "application/x-java-archive-diff": { + "source": "nginx", + "extensions": [ + "jardiff" + ] + }, + "application/x-java-jnlp-file": { + "source": "apache", + "compressible": false, + "extensions": [ + "jnlp" + ] + }, + "application/x-javascript": { + "compressible": true + }, + "application/x-keepass2": { + "extensions": [ + "kdbx" + ] + }, + "application/x-latex": { + "source": "apache", + "compressible": false, + "extensions": [ + "latex" + ] + }, + "application/x-lua-bytecode": { + "extensions": [ + "luac" + ] + }, + "application/x-lzh-compressed": { + "source": "apache", + "extensions": [ + "lzh", + "lha" + ] + }, + "application/x-makeself": { + "source": "nginx", + "extensions": [ + "run" + ] + }, + "application/x-mie": { + "source": "apache", + "extensions": [ + "mie" + ] + }, + "application/x-mobipocket-ebook": { + "source": "apache", + "extensions": [ + "prc", + "mobi" + ] + }, + "application/x-mpegurl": { + "compressible": false + }, + "application/x-ms-application": { + "source": "apache", + "extensions": [ + "application" + ] + }, + "application/x-ms-shortcut": { + "source": "apache", + "extensions": [ + "lnk" + ] + }, + "application/x-ms-wmd": { + "source": "apache", + "extensions": [ + "wmd" + ] + }, + "application/x-ms-wmz": { + "source": "apache", + "extensions": [ + "wmz" + ] + }, + "application/x-ms-xbap": { + "source": "apache", + "extensions": [ + "xbap" + ] + }, + "application/x-msaccess": { + "source": "apache", + "extensions": [ + "mdb" + ] + }, + "application/x-msbinder": { + "source": "apache", + "extensions": [ + "obd" + ] + }, + "application/x-mscardfile": { + "source": "apache", + "extensions": [ + "crd" + ] + }, + "application/x-msclip": { + "source": "apache", + "extensions": [ + "clp" + ] + }, + "application/x-msdos-program": { + "extensions": [ + "exe" + ] + }, + "application/x-msdownload": { + "source": "apache", + "extensions": [ + "exe", + "dll", + "com", + "bat", + "msi" + ] + }, + "application/x-msmediaview": { + "source": "apache", + "extensions": [ + "mvb", + "m13", + "m14" + ] + }, + "application/x-msmetafile": { + "source": "apache", + "extensions": [ + "wmf", + "wmz", + "emf", + "emz" + ] + }, + "application/x-msmoney": { + "source": "apache", + "extensions": [ + "mny" + ] + }, + "application/x-mspublisher": { + "source": "apache", + "extensions": [ + "pub" + ] + }, + "application/x-msschedule": { + "source": "apache", + "extensions": [ + "scd" + ] + }, + "application/x-msterminal": { + "source": "apache", + "extensions": [ + "trm" + ] + }, + "application/x-mswrite": { + "source": "apache", + "extensions": [ + "wri" + ] + }, + "application/x-netcdf": { + "source": "apache", + "extensions": [ + "nc", + "cdf" + ] + }, + "application/x-ns-proxy-autoconfig": { + "compressible": true, + "extensions": [ + "pac" + ] + }, + "application/x-nzb": { + "source": "apache", + "extensions": [ + "nzb" + ] + }, + "application/x-perl": { + "source": "nginx", + "extensions": [ + "pl", + "pm" + ] + }, + "application/x-pilot": { + "source": "nginx", + "extensions": [ + "prc", + "pdb" + ] + }, + "application/x-pkcs12": { + "source": "apache", + "compressible": false, + "extensions": [ + "p12", + "pfx" + ] + }, + "application/x-pkcs7-certificates": { + "source": "apache", + "extensions": [ + "p7b", + "spc" + ] + }, + "application/x-pkcs7-certreqresp": { + "source": "apache", + "extensions": [ + "p7r" + ] + }, + "application/x-pki-message": { + "source": "iana" + }, + "application/x-rar-compressed": { + "source": "apache", + "compressible": false, + "extensions": [ + "rar" + ] + }, + "application/x-redhat-package-manager": { + "source": "nginx", + "extensions": [ + "rpm" + ] + }, + "application/x-research-info-systems": { + "source": "apache", + "extensions": [ + "ris" + ] + }, + "application/x-sea": { + "source": "nginx", + "extensions": [ + "sea" + ] + }, + "application/x-sh": { + "source": "apache", + "compressible": true, + "extensions": [ + "sh" + ] + }, + "application/x-shar": { + "source": "apache", + "extensions": [ + "shar" + ] + }, + "application/x-shockwave-flash": { + "source": "apache", + "compressible": false, + "extensions": [ + "swf" + ] + }, + "application/x-silverlight-app": { + "source": "apache", + "extensions": [ + "xap" + ] + }, + "application/x-sql": { + "source": "apache", + "extensions": [ + "sql" + ] + }, + "application/x-stuffit": { + "source": "apache", + "compressible": false, + "extensions": [ + "sit" + ] + }, + "application/x-stuffitx": { + "source": "apache", + "extensions": [ + "sitx" + ] + }, + "application/x-subrip": { + "source": "apache", + "extensions": [ + "srt" + ] + }, + "application/x-sv4cpio": { + "source": "apache", + "extensions": [ + "sv4cpio" + ] + }, + "application/x-sv4crc": { + "source": "apache", + "extensions": [ + "sv4crc" + ] + }, + "application/x-t3vm-image": { + "source": "apache", + "extensions": [ + "t3" + ] + }, + "application/x-tads": { + "source": "apache", + "extensions": [ + "gam" + ] + }, + "application/x-tar": { + "source": "apache", + "compressible": true, + "extensions": [ + "tar" + ] + }, + "application/x-tcl": { + "source": "apache", + "extensions": [ + "tcl", + "tk" + ] + }, + "application/x-tex": { + "source": "apache", + "extensions": [ + "tex" + ] + }, + "application/x-tex-tfm": { + "source": "apache", + "extensions": [ + "tfm" + ] + }, + "application/x-texinfo": { + "source": "apache", + "extensions": [ + "texinfo", + "texi" + ] + }, + "application/x-tgif": { + "source": "apache", + "extensions": [ + "obj" + ] + }, + "application/x-ustar": { + "source": "apache", + "extensions": [ + "ustar" + ] + }, + "application/x-virtualbox-hdd": { + "compressible": true, + "extensions": [ + "hdd" + ] + }, + "application/x-virtualbox-ova": { + "compressible": true, + "extensions": [ + "ova" + ] + }, + "application/x-virtualbox-ovf": { + "compressible": true, + "extensions": [ + "ovf" + ] + }, + "application/x-virtualbox-vbox": { + "compressible": true, + "extensions": [ + "vbox" + ] + }, + "application/x-virtualbox-vbox-extpack": { + "compressible": false, + "extensions": [ + "vbox-extpack" + ] + }, + "application/x-virtualbox-vdi": { + "compressible": true, + "extensions": [ + "vdi" + ] + }, + "application/x-virtualbox-vhd": { + "compressible": true, + "extensions": [ + "vhd" + ] + }, + "application/x-virtualbox-vmdk": { + "compressible": true, + "extensions": [ + "vmdk" + ] + }, + "application/x-wais-source": { + "source": "apache", + "extensions": [ + "src" + ] + }, + "application/x-web-app-manifest+json": { + "compressible": true, + "extensions": [ + "webapp" + ] + }, + "application/x-www-form-urlencoded": { + "source": "iana", + "compressible": true + }, + "application/x-x509-ca-cert": { + "source": "iana", + "extensions": [ + "der", + "crt", + "pem" + ] + }, + "application/x-x509-ca-ra-cert": { + "source": "iana" + }, + "application/x-x509-next-ca-cert": { + "source": "iana" + }, + "application/x-xfig": { + "source": "apache", + "extensions": [ + "fig" + ] + }, + "application/x-xliff+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "xlf" + ] + }, + "application/x-xpinstall": { + "source": "apache", + "compressible": false, + "extensions": [ + "xpi" + ] + }, + "application/x-xz": { + "source": "apache", + "extensions": [ + "xz" + ] + }, + "application/x-zmachine": { + "source": "apache", + "extensions": [ + "z1", + "z2", + "z3", + "z4", + "z5", + "z6", + "z7", + "z8" + ] + }, + "application/x400-bp": { + "source": "iana" + }, + "application/xacml+xml": { + "source": "iana", + "compressible": true + }, + "application/xaml+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "xaml" + ] + }, + "application/xcap-att+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xav" + ] + }, + "application/xcap-caps+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xca" + ] + }, + "application/xcap-diff+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xdf" + ] + }, + "application/xcap-el+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xel" + ] + }, + "application/xcap-error+xml": { + "source": "iana", + "compressible": true + }, + "application/xcap-ns+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xns" + ] + }, + "application/xcon-conference-info+xml": { + "source": "iana", + "compressible": true + }, + "application/xcon-conference-info-diff+xml": { + "source": "iana", + "compressible": true + }, + "application/xenc+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xenc" + ] + }, + "application/xfdf": { + "source": "iana", + "extensions": [ + "xfdf" + ] + }, + "application/xhtml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xhtml", + "xht" + ] + }, + "application/xhtml-voice+xml": { + "source": "apache", + "compressible": true + }, + "application/xliff+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xlf" + ] + }, + "application/xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xml", + "xsl", + "xsd", + "rng" + ] + }, + "application/xml-dtd": { + "source": "iana", + "compressible": true, + "extensions": [ + "dtd" + ] + }, + "application/xml-external-parsed-entity": { + "source": "iana" + }, + "application/xml-patch+xml": { + "source": "iana", + "compressible": true + }, + "application/xmpp+xml": { + "source": "iana", + "compressible": true + }, + "application/xop+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xop" + ] + }, + "application/xproc+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "xpl" + ] + }, + "application/xslt+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xsl", + "xslt" + ] + }, + "application/xspf+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "xspf" + ] + }, + "application/xv+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "mxml", + "xhvml", + "xvml", + "xvm" + ] + }, + "application/yaml": { + "source": "iana" + }, + "application/yang": { + "source": "iana", + "extensions": [ + "yang" + ] + }, + "application/yang-data+cbor": { + "source": "iana" + }, + "application/yang-data+json": { + "source": "iana", + "compressible": true + }, + "application/yang-data+xml": { + "source": "iana", + "compressible": true + }, + "application/yang-patch+json": { + "source": "iana", + "compressible": true + }, + "application/yang-patch+xml": { + "source": "iana", + "compressible": true + }, + "application/yang-sid+json": { + "source": "iana", + "compressible": true + }, + "application/yin+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "yin" + ] + }, + "application/zip": { + "source": "iana", + "compressible": false, + "extensions": [ + "zip" + ] + }, + "application/zlib": { + "source": "iana" + }, + "application/zstd": { + "source": "iana" + }, + "audio/1d-interleaved-parityfec": { + "source": "iana" + }, + "audio/32kadpcm": { + "source": "iana" + }, + "audio/3gpp": { + "source": "iana", + "compressible": false, + "extensions": [ + "3gpp" + ] + }, + "audio/3gpp2": { + "source": "iana" + }, + "audio/aac": { + "source": "iana", + "extensions": [ + "adts", + "aac" + ] + }, + "audio/ac3": { + "source": "iana" + }, + "audio/adpcm": { + "source": "apache", + "extensions": [ + "adp" + ] + }, + "audio/amr": { + "source": "iana", + "extensions": [ + "amr" + ] + }, + "audio/amr-wb": { + "source": "iana" + }, + "audio/amr-wb+": { + "source": "iana" + }, + "audio/aptx": { + "source": "iana" + }, + "audio/asc": { + "source": "iana" + }, + "audio/atrac-advanced-lossless": { + "source": "iana" + }, + "audio/atrac-x": { + "source": "iana" + }, + "audio/atrac3": { + "source": "iana" + }, + "audio/basic": { + "source": "iana", + "compressible": false, + "extensions": [ + "au", + "snd" + ] + }, + "audio/bv16": { + "source": "iana" + }, + "audio/bv32": { + "source": "iana" + }, + "audio/clearmode": { + "source": "iana" + }, + "audio/cn": { + "source": "iana" + }, + "audio/dat12": { + "source": "iana" + }, + "audio/dls": { + "source": "iana" + }, + "audio/dsr-es201108": { + "source": "iana" + }, + "audio/dsr-es202050": { + "source": "iana" + }, + "audio/dsr-es202211": { + "source": "iana" + }, + "audio/dsr-es202212": { + "source": "iana" + }, + "audio/dv": { + "source": "iana" + }, + "audio/dvi4": { + "source": "iana" + }, + "audio/eac3": { + "source": "iana" + }, + "audio/encaprtp": { + "source": "iana" + }, + "audio/evrc": { + "source": "iana" + }, + "audio/evrc-qcp": { + "source": "iana" + }, + "audio/evrc0": { + "source": "iana" + }, + "audio/evrc1": { + "source": "iana" + }, + "audio/evrcb": { + "source": "iana" + }, + "audio/evrcb0": { + "source": "iana" + }, + "audio/evrcb1": { + "source": "iana" + }, + "audio/evrcnw": { + "source": "iana" + }, + "audio/evrcnw0": { + "source": "iana" + }, + "audio/evrcnw1": { + "source": "iana" + }, + "audio/evrcwb": { + "source": "iana" + }, + "audio/evrcwb0": { + "source": "iana" + }, + "audio/evrcwb1": { + "source": "iana" + }, + "audio/evs": { + "source": "iana" + }, + "audio/flac": { + "source": "iana" + }, + "audio/flexfec": { + "source": "iana" + }, + "audio/fwdred": { + "source": "iana" + }, + "audio/g711-0": { + "source": "iana" + }, + "audio/g719": { + "source": "iana" + }, + "audio/g722": { + "source": "iana" + }, + "audio/g7221": { + "source": "iana" + }, + "audio/g723": { + "source": "iana" + }, + "audio/g726-16": { + "source": "iana" + }, + "audio/g726-24": { + "source": "iana" + }, + "audio/g726-32": { + "source": "iana" + }, + "audio/g726-40": { + "source": "iana" + }, + "audio/g728": { + "source": "iana" + }, + "audio/g729": { + "source": "iana" + }, + "audio/g7291": { + "source": "iana" + }, + "audio/g729d": { + "source": "iana" + }, + "audio/g729e": { + "source": "iana" + }, + "audio/gsm": { + "source": "iana" + }, + "audio/gsm-efr": { + "source": "iana" + }, + "audio/gsm-hr-08": { + "source": "iana" + }, + "audio/ilbc": { + "source": "iana" + }, + "audio/ip-mr_v2.5": { + "source": "iana" + }, + "audio/isac": { + "source": "apache" + }, + "audio/l16": { + "source": "iana" + }, + "audio/l20": { + "source": "iana" + }, + "audio/l24": { + "source": "iana", + "compressible": false + }, + "audio/l8": { + "source": "iana" + }, + "audio/lpc": { + "source": "iana" + }, + "audio/matroska": { + "source": "iana" + }, + "audio/melp": { + "source": "iana" + }, + "audio/melp1200": { + "source": "iana" + }, + "audio/melp2400": { + "source": "iana" + }, + "audio/melp600": { + "source": "iana" + }, + "audio/mhas": { + "source": "iana" + }, + "audio/midi": { + "source": "apache", + "extensions": [ + "mid", + "midi", + "kar", + "rmi" + ] + }, + "audio/midi-clip": { + "source": "iana" + }, + "audio/mobile-xmf": { + "source": "iana", + "extensions": [ + "mxmf" + ] + }, + "audio/mp3": { + "compressible": false, + "extensions": [ + "mp3" + ] + }, + "audio/mp4": { + "source": "iana", + "compressible": false, + "extensions": [ + "m4a", + "mp4a" + ] + }, + "audio/mp4a-latm": { + "source": "iana" + }, + "audio/mpa": { + "source": "iana" + }, + "audio/mpa-robust": { + "source": "iana" + }, + "audio/mpeg": { + "source": "iana", + "compressible": false, + "extensions": [ + "mpga", + "mp2", + "mp2a", + "mp3", + "m2a", + "m3a" + ] + }, + "audio/mpeg4-generic": { + "source": "iana" + }, + "audio/musepack": { + "source": "apache" + }, + "audio/ogg": { + "source": "iana", + "compressible": false, + "extensions": [ + "oga", + "ogg", + "spx", + "opus" + ] + }, + "audio/opus": { + "source": "iana" + }, + "audio/parityfec": { + "source": "iana" + }, + "audio/pcma": { + "source": "iana" + }, + "audio/pcma-wb": { + "source": "iana" + }, + "audio/pcmu": { + "source": "iana" + }, + "audio/pcmu-wb": { + "source": "iana" + }, + "audio/prs.sid": { + "source": "iana" + }, + "audio/qcelp": { + "source": "iana" + }, + "audio/raptorfec": { + "source": "iana" + }, + "audio/red": { + "source": "iana" + }, + "audio/rtp-enc-aescm128": { + "source": "iana" + }, + "audio/rtp-midi": { + "source": "iana" + }, + "audio/rtploopback": { + "source": "iana" + }, + "audio/rtx": { + "source": "iana" + }, + "audio/s3m": { + "source": "apache", + "extensions": [ + "s3m" + ] + }, + "audio/scip": { + "source": "iana" + }, + "audio/silk": { + "source": "apache", + "extensions": [ + "sil" + ] + }, + "audio/smv": { + "source": "iana" + }, + "audio/smv-qcp": { + "source": "iana" + }, + "audio/smv0": { + "source": "iana" + }, + "audio/sofa": { + "source": "iana" + }, + "audio/sp-midi": { + "source": "iana" + }, + "audio/speex": { + "source": "iana" + }, + "audio/t140c": { + "source": "iana" + }, + "audio/t38": { + "source": "iana" + }, + "audio/telephone-event": { + "source": "iana" + }, + "audio/tetra_acelp": { + "source": "iana" + }, + "audio/tetra_acelp_bb": { + "source": "iana" + }, + "audio/tone": { + "source": "iana" + }, + "audio/tsvcis": { + "source": "iana" + }, + "audio/uemclip": { + "source": "iana" + }, + "audio/ulpfec": { + "source": "iana" + }, + "audio/usac": { + "source": "iana" + }, + "audio/vdvi": { + "source": "iana" + }, + "audio/vmr-wb": { + "source": "iana" + }, + "audio/vnd.3gpp.iufp": { + "source": "iana" + }, + "audio/vnd.4sb": { + "source": "iana" + }, + "audio/vnd.audiokoz": { + "source": "iana" + }, + "audio/vnd.celp": { + "source": "iana" + }, + "audio/vnd.cisco.nse": { + "source": "iana" + }, + "audio/vnd.cmles.radio-events": { + "source": "iana" + }, + "audio/vnd.cns.anp1": { + "source": "iana" + }, + "audio/vnd.cns.inf1": { + "source": "iana" + }, + "audio/vnd.dece.audio": { + "source": "iana", + "extensions": [ + "uva", + "uvva" + ] + }, + "audio/vnd.digital-winds": { + "source": "iana", + "extensions": [ + "eol" + ] + }, + "audio/vnd.dlna.adts": { + "source": "iana" + }, + "audio/vnd.dolby.heaac.1": { + "source": "iana" + }, + "audio/vnd.dolby.heaac.2": { + "source": "iana" + }, + "audio/vnd.dolby.mlp": { + "source": "iana" + }, + "audio/vnd.dolby.mps": { + "source": "iana" + }, + "audio/vnd.dolby.pl2": { + "source": "iana" + }, + "audio/vnd.dolby.pl2x": { + "source": "iana" + }, + "audio/vnd.dolby.pl2z": { + "source": "iana" + }, + "audio/vnd.dolby.pulse.1": { + "source": "iana" + }, + "audio/vnd.dra": { + "source": "iana", + "extensions": [ + "dra" + ] + }, + "audio/vnd.dts": { + "source": "iana", + "extensions": [ + "dts" + ] + }, + "audio/vnd.dts.hd": { + "source": "iana", + "extensions": [ + "dtshd" + ] + }, + "audio/vnd.dts.uhd": { + "source": "iana" + }, + "audio/vnd.dvb.file": { + "source": "iana" + }, + "audio/vnd.everad.plj": { + "source": "iana" + }, + "audio/vnd.hns.audio": { + "source": "iana" + }, + "audio/vnd.lucent.voice": { + "source": "iana", + "extensions": [ + "lvp" + ] + }, + "audio/vnd.ms-playready.media.pya": { + "source": "iana", + "extensions": [ + "pya" + ] + }, + "audio/vnd.nokia.mobile-xmf": { + "source": "iana" + }, + "audio/vnd.nortel.vbk": { + "source": "iana" + }, + "audio/vnd.nuera.ecelp4800": { + "source": "iana", + "extensions": [ + "ecelp4800" + ] + }, + "audio/vnd.nuera.ecelp7470": { + "source": "iana", + "extensions": [ + "ecelp7470" + ] + }, + "audio/vnd.nuera.ecelp9600": { + "source": "iana", + "extensions": [ + "ecelp9600" + ] + }, + "audio/vnd.octel.sbc": { + "source": "iana" + }, + "audio/vnd.presonus.multitrack": { + "source": "iana" + }, + "audio/vnd.qcelp": { + "source": "apache" + }, + "audio/vnd.rhetorex.32kadpcm": { + "source": "iana" + }, + "audio/vnd.rip": { + "source": "iana", + "extensions": [ + "rip" + ] + }, + "audio/vnd.rn-realaudio": { + "compressible": false + }, + "audio/vnd.sealedmedia.softseal.mpeg": { + "source": "iana" + }, + "audio/vnd.vmx.cvsd": { + "source": "iana" + }, + "audio/vnd.wave": { + "compressible": false + }, + "audio/vorbis": { + "source": "iana", + "compressible": false + }, + "audio/vorbis-config": { + "source": "iana" + }, + "audio/wav": { + "compressible": false, + "extensions": [ + "wav" + ] + }, + "audio/wave": { + "compressible": false, + "extensions": [ + "wav" + ] + }, + "audio/webm": { + "source": "apache", + "compressible": false, + "extensions": [ + "weba" + ] + }, + "audio/x-aac": { + "source": "apache", + "compressible": false, + "extensions": [ + "aac" + ] + }, + "audio/x-aiff": { + "source": "apache", + "extensions": [ + "aif", + "aiff", + "aifc" + ] + }, + "audio/x-caf": { + "source": "apache", + "compressible": false, + "extensions": [ + "caf" + ] + }, + "audio/x-flac": { + "source": "apache", + "extensions": [ + "flac" + ] + }, + "audio/x-m4a": { + "source": "nginx", + "extensions": [ + "m4a" + ] + }, + "audio/x-matroska": { + "source": "apache", + "extensions": [ + "mka" + ] + }, + "audio/x-mpegurl": { + "source": "apache", + "extensions": [ + "m3u" + ] + }, + "audio/x-ms-wax": { + "source": "apache", + "extensions": [ + "wax" + ] + }, + "audio/x-ms-wma": { + "source": "apache", + "extensions": [ + "wma" + ] + }, + "audio/x-pn-realaudio": { + "source": "apache", + "extensions": [ + "ram", + "ra" + ] + }, + "audio/x-pn-realaudio-plugin": { + "source": "apache", + "extensions": [ + "rmp" + ] + }, + "audio/x-realaudio": { + "source": "nginx", + "extensions": [ + "ra" + ] + }, + "audio/x-tta": { + "source": "apache" + }, + "audio/x-wav": { + "source": "apache", + "extensions": [ + "wav" + ] + }, + "audio/xm": { + "source": "apache", + "extensions": [ + "xm" + ] + }, + "chemical/x-cdx": { + "source": "apache", + "extensions": [ + "cdx" + ] + }, + "chemical/x-cif": { + "source": "apache", + "extensions": [ + "cif" + ] + }, + "chemical/x-cmdf": { + "source": "apache", + "extensions": [ + "cmdf" + ] + }, + "chemical/x-cml": { + "source": "apache", + "extensions": [ + "cml" + ] + }, + "chemical/x-csml": { + "source": "apache", + "extensions": [ + "csml" + ] + }, + "chemical/x-pdb": { + "source": "apache" + }, + "chemical/x-xyz": { + "source": "apache", + "extensions": [ + "xyz" + ] + }, + "font/collection": { + "source": "iana", + "extensions": [ + "ttc" + ] + }, + "font/otf": { + "source": "iana", + "compressible": true, + "extensions": [ + "otf" + ] + }, + "font/sfnt": { + "source": "iana" + }, + "font/ttf": { + "source": "iana", + "compressible": true, + "extensions": [ + "ttf" + ] + }, + "font/woff": { + "source": "iana", + "extensions": [ + "woff" + ] + }, + "font/woff2": { + "source": "iana", + "extensions": [ + "woff2" + ] + }, + "image/aces": { + "source": "iana", + "extensions": [ + "exr" + ] + }, + "image/apng": { + "source": "iana", + "compressible": false, + "extensions": [ + "apng" + ] + }, + "image/avci": { + "source": "iana", + "extensions": [ + "avci" + ] + }, + "image/avcs": { + "source": "iana", + "extensions": [ + "avcs" + ] + }, + "image/avif": { + "source": "iana", + "compressible": false, + "extensions": [ + "avif" + ] + }, + "image/bmp": { + "source": "iana", + "compressible": true, + "extensions": [ + "bmp", + "dib" + ] + }, + "image/cgm": { + "source": "iana", + "extensions": [ + "cgm" + ] + }, + "image/dicom-rle": { + "source": "iana", + "extensions": [ + "drle" + ] + }, + "image/dpx": { + "source": "iana", + "extensions": [ + "dpx" + ] + }, + "image/emf": { + "source": "iana", + "extensions": [ + "emf" + ] + }, + "image/fits": { + "source": "iana", + "extensions": [ + "fits" + ] + }, + "image/g3fax": { + "source": "iana", + "extensions": [ + "g3" + ] + }, + "image/gif": { + "source": "iana", + "compressible": false, + "extensions": [ + "gif" + ] + }, + "image/heic": { + "source": "iana", + "extensions": [ + "heic" + ] + }, + "image/heic-sequence": { + "source": "iana", + "extensions": [ + "heics" + ] + }, + "image/heif": { + "source": "iana", + "extensions": [ + "heif" + ] + }, + "image/heif-sequence": { + "source": "iana", + "extensions": [ + "heifs" + ] + }, + "image/hej2k": { + "source": "iana", + "extensions": [ + "hej2" + ] + }, + "image/hsj2": { + "source": "iana", + "extensions": [ + "hsj2" + ] + }, + "image/ief": { + "source": "iana", + "extensions": [ + "ief" + ] + }, + "image/j2c": { + "source": "iana" + }, + "image/jls": { + "source": "iana", + "extensions": [ + "jls" + ] + }, + "image/jp2": { + "source": "iana", + "compressible": false, + "extensions": [ + "jp2", + "jpg2" + ] + }, + "image/jpeg": { + "source": "iana", + "compressible": false, + "extensions": [ + "jpeg", + "jpg", + "jpe" + ] + }, + "image/jph": { + "source": "iana", + "extensions": [ + "jph" + ] + }, + "image/jphc": { + "source": "iana", + "extensions": [ + "jhc" + ] + }, + "image/jpm": { + "source": "iana", + "compressible": false, + "extensions": [ + "jpm", + "jpgm" + ] + }, + "image/jpx": { + "source": "iana", + "compressible": false, + "extensions": [ + "jpx", + "jpf" + ] + }, + "image/jxl": { + "source": "iana", + "extensions": [ + "jxl" + ] + }, + "image/jxr": { + "source": "iana", + "extensions": [ + "jxr" + ] + }, + "image/jxra": { + "source": "iana", + "extensions": [ + "jxra" + ] + }, + "image/jxrs": { + "source": "iana", + "extensions": [ + "jxrs" + ] + }, + "image/jxs": { + "source": "iana", + "extensions": [ + "jxs" + ] + }, + "image/jxsc": { + "source": "iana", + "extensions": [ + "jxsc" + ] + }, + "image/jxsi": { + "source": "iana", + "extensions": [ + "jxsi" + ] + }, + "image/jxss": { + "source": "iana", + "extensions": [ + "jxss" + ] + }, + "image/ktx": { + "source": "iana", + "extensions": [ + "ktx" + ] + }, + "image/ktx2": { + "source": "iana", + "extensions": [ + "ktx2" + ] + }, + "image/naplps": { + "source": "iana" + }, + "image/pjpeg": { + "compressible": false + }, + "image/png": { + "source": "iana", + "compressible": false, + "extensions": [ + "png" + ] + }, + "image/prs.btif": { + "source": "iana", + "extensions": [ + "btif", + "btf" + ] + }, + "image/prs.pti": { + "source": "iana", + "extensions": [ + "pti" + ] + }, + "image/pwg-raster": { + "source": "iana" + }, + "image/sgi": { + "source": "apache", + "extensions": [ + "sgi" + ] + }, + "image/svg+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "svg", + "svgz" + ] + }, + "image/t38": { + "source": "iana", + "extensions": [ + "t38" + ] + }, + "image/tiff": { + "source": "iana", + "compressible": false, + "extensions": [ + "tif", + "tiff" + ] + }, + "image/tiff-fx": { + "source": "iana", + "extensions": [ + "tfx" + ] + }, + "image/vnd.adobe.photoshop": { + "source": "iana", + "compressible": true, + "extensions": [ + "psd" + ] + }, + "image/vnd.airzip.accelerator.azv": { + "source": "iana", + "extensions": [ + "azv" + ] + }, + "image/vnd.cns.inf2": { + "source": "iana" + }, + "image/vnd.dece.graphic": { + "source": "iana", + "extensions": [ + "uvi", + "uvvi", + "uvg", + "uvvg" + ] + }, + "image/vnd.djvu": { + "source": "iana", + "extensions": [ + "djvu", + "djv" + ] + }, + "image/vnd.dvb.subtitle": { + "source": "iana", + "extensions": [ + "sub" + ] + }, + "image/vnd.dwg": { + "source": "iana", + "extensions": [ + "dwg" + ] + }, + "image/vnd.dxf": { + "source": "iana", + "extensions": [ + "dxf" + ] + }, + "image/vnd.fastbidsheet": { + "source": "iana", + "extensions": [ + "fbs" + ] + }, + "image/vnd.fpx": { + "source": "iana", + "extensions": [ + "fpx" + ] + }, + "image/vnd.fst": { + "source": "iana", + "extensions": [ + "fst" + ] + }, + "image/vnd.fujixerox.edmics-mmr": { + "source": "iana", + "extensions": [ + "mmr" + ] + }, + "image/vnd.fujixerox.edmics-rlc": { + "source": "iana", + "extensions": [ + "rlc" + ] + }, + "image/vnd.globalgraphics.pgb": { + "source": "iana" + }, + "image/vnd.microsoft.icon": { + "source": "iana", + "compressible": true, + "extensions": [ + "ico" + ] + }, + "image/vnd.mix": { + "source": "iana" + }, + "image/vnd.mozilla.apng": { + "source": "iana" + }, + "image/vnd.ms-dds": { + "compressible": true, + "extensions": [ + "dds" + ] + }, + "image/vnd.ms-modi": { + "source": "iana", + "extensions": [ + "mdi" + ] + }, + "image/vnd.ms-photo": { + "source": "apache", + "extensions": [ + "wdp" + ] + }, + "image/vnd.net-fpx": { + "source": "iana", + "extensions": [ + "npx" + ] + }, + "image/vnd.pco.b16": { + "source": "iana", + "extensions": [ + "b16" + ] + }, + "image/vnd.radiance": { + "source": "iana" + }, + "image/vnd.sealed.png": { + "source": "iana" + }, + "image/vnd.sealedmedia.softseal.gif": { + "source": "iana" + }, + "image/vnd.sealedmedia.softseal.jpg": { + "source": "iana" + }, + "image/vnd.svf": { + "source": "iana" + }, + "image/vnd.tencent.tap": { + "source": "iana", + "extensions": [ + "tap" + ] + }, + "image/vnd.valve.source.texture": { + "source": "iana", + "extensions": [ + "vtf" + ] + }, + "image/vnd.wap.wbmp": { + "source": "iana", + "extensions": [ + "wbmp" + ] + }, + "image/vnd.xiff": { + "source": "iana", + "extensions": [ + "xif" + ] + }, + "image/vnd.zbrush.pcx": { + "source": "iana", + "extensions": [ + "pcx" + ] + }, + "image/webp": { + "source": "iana", + "extensions": [ + "webp" + ] + }, + "image/wmf": { + "source": "iana", + "extensions": [ + "wmf" + ] + }, + "image/x-3ds": { + "source": "apache", + "extensions": [ + "3ds" + ] + }, + "image/x-cmu-raster": { + "source": "apache", + "extensions": [ + "ras" + ] + }, + "image/x-cmx": { + "source": "apache", + "extensions": [ + "cmx" + ] + }, + "image/x-freehand": { + "source": "apache", + "extensions": [ + "fh", + "fhc", + "fh4", + "fh5", + "fh7" + ] + }, + "image/x-icon": { + "source": "apache", + "compressible": true, + "extensions": [ + "ico" + ] + }, + "image/x-jng": { + "source": "nginx", + "extensions": [ + "jng" + ] + }, + "image/x-mrsid-image": { + "source": "apache", + "extensions": [ + "sid" + ] + }, + "image/x-ms-bmp": { + "source": "nginx", + "compressible": true, + "extensions": [ + "bmp" + ] + }, + "image/x-pcx": { + "source": "apache", + "extensions": [ + "pcx" + ] + }, + "image/x-pict": { + "source": "apache", + "extensions": [ + "pic", + "pct" + ] + }, + "image/x-portable-anymap": { + "source": "apache", + "extensions": [ + "pnm" + ] + }, + "image/x-portable-bitmap": { + "source": "apache", + "extensions": [ + "pbm" + ] + }, + "image/x-portable-graymap": { + "source": "apache", + "extensions": [ + "pgm" + ] + }, + "image/x-portable-pixmap": { + "source": "apache", + "extensions": [ + "ppm" + ] + }, + "image/x-rgb": { + "source": "apache", + "extensions": [ + "rgb" + ] + }, + "image/x-tga": { + "source": "apache", + "extensions": [ + "tga" + ] + }, + "image/x-xbitmap": { + "source": "apache", + "extensions": [ + "xbm" + ] + }, + "image/x-xcf": { + "compressible": false + }, + "image/x-xpixmap": { + "source": "apache", + "extensions": [ + "xpm" + ] + }, + "image/x-xwindowdump": { + "source": "apache", + "extensions": [ + "xwd" + ] + }, + "message/bhttp": { + "source": "iana" + }, + "message/cpim": { + "source": "iana" + }, + "message/delivery-status": { + "source": "iana" + }, + "message/disposition-notification": { + "source": "iana", + "extensions": [ + "disposition-notification" + ] + }, + "message/external-body": { + "source": "iana" + }, + "message/feedback-report": { + "source": "iana" + }, + "message/global": { + "source": "iana", + "extensions": [ + "u8msg" + ] + }, + "message/global-delivery-status": { + "source": "iana", + "extensions": [ + "u8dsn" + ] + }, + "message/global-disposition-notification": { + "source": "iana", + "extensions": [ + "u8mdn" + ] + }, + "message/global-headers": { + "source": "iana", + "extensions": [ + "u8hdr" + ] + }, + "message/http": { + "source": "iana", + "compressible": false + }, + "message/imdn+xml": { + "source": "iana", + "compressible": true + }, + "message/mls": { + "source": "iana" + }, + "message/news": { + "source": "apache" + }, + "message/ohttp-req": { + "source": "iana" + }, + "message/ohttp-res": { + "source": "iana" + }, + "message/partial": { + "source": "iana", + "compressible": false + }, + "message/rfc822": { + "source": "iana", + "compressible": true, + "extensions": [ + "eml", + "mime" + ] + }, + "message/s-http": { + "source": "apache" + }, + "message/sip": { + "source": "iana" + }, + "message/sipfrag": { + "source": "iana" + }, + "message/tracking-status": { + "source": "iana" + }, + "message/vnd.si.simp": { + "source": "apache" + }, + "message/vnd.wfa.wsc": { + "source": "iana", + "extensions": [ + "wsc" + ] + }, + "model/3mf": { + "source": "iana", + "extensions": [ + "3mf" + ] + }, + "model/e57": { + "source": "iana" + }, + "model/gltf+json": { + "source": "iana", + "compressible": true, + "extensions": [ + "gltf" + ] + }, + "model/gltf-binary": { + "source": "iana", + "compressible": true, + "extensions": [ + "glb" + ] + }, + "model/iges": { + "source": "iana", + "compressible": false, + "extensions": [ + "igs", + "iges" + ] + }, + "model/jt": { + "source": "iana", + "extensions": [ + "jt" + ] + }, + "model/mesh": { + "source": "iana", + "compressible": false, + "extensions": [ + "msh", + "mesh", + "silo" + ] + }, + "model/mtl": { + "source": "iana", + "extensions": [ + "mtl" + ] + }, + "model/obj": { + "source": "iana", + "extensions": [ + "obj" + ] + }, + "model/prc": { + "source": "iana", + "extensions": [ + "prc" + ] + }, + "model/step": { + "source": "iana" + }, + "model/step+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "stpx" + ] + }, + "model/step+zip": { + "source": "iana", + "compressible": false, + "extensions": [ + "stpz" + ] + }, + "model/step-xml+zip": { + "source": "iana", + "compressible": false, + "extensions": [ + "stpxz" + ] + }, + "model/stl": { + "source": "iana", + "extensions": [ + "stl" + ] + }, + "model/u3d": { + "source": "iana", + "extensions": [ + "u3d" + ] + }, + "model/vnd.bary": { + "source": "iana", + "extensions": [ + "bary" + ] + }, + "model/vnd.cld": { + "source": "iana", + "extensions": [ + "cld" + ] + }, + "model/vnd.collada+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "dae" + ] + }, + "model/vnd.dwf": { + "source": "iana", + "extensions": [ + "dwf" + ] + }, + "model/vnd.flatland.3dml": { + "source": "iana" + }, + "model/vnd.gdl": { + "source": "iana", + "extensions": [ + "gdl" + ] + }, + "model/vnd.gs-gdl": { + "source": "apache" + }, + "model/vnd.gs.gdl": { + "source": "iana" + }, + "model/vnd.gtw": { + "source": "iana", + "extensions": [ + "gtw" + ] + }, + "model/vnd.moml+xml": { + "source": "iana", + "compressible": true + }, + "model/vnd.mts": { + "source": "iana", + "extensions": [ + "mts" + ] + }, + "model/vnd.opengex": { + "source": "iana", + "extensions": [ + "ogex" + ] + }, + "model/vnd.parasolid.transmit.binary": { + "source": "iana", + "extensions": [ + "x_b" + ] + }, + "model/vnd.parasolid.transmit.text": { + "source": "iana", + "extensions": [ + "x_t" + ] + }, + "model/vnd.pytha.pyox": { + "source": "iana", + "extensions": [ + "pyo", + "pyox" + ] + }, + "model/vnd.rosette.annotated-data-model": { + "source": "iana" + }, + "model/vnd.sap.vds": { + "source": "iana", + "extensions": [ + "vds" + ] + }, + "model/vnd.usda": { + "source": "iana", + "extensions": [ + "usda" + ] + }, + "model/vnd.usdz+zip": { + "source": "iana", + "compressible": false, + "extensions": [ + "usdz" + ] + }, + "model/vnd.valve.source.compiled-map": { + "source": "iana", + "extensions": [ + "bsp" + ] + }, + "model/vnd.vtu": { + "source": "iana", + "extensions": [ + "vtu" + ] + }, + "model/vrml": { + "source": "iana", + "compressible": false, + "extensions": [ + "wrl", + "vrml" + ] + }, + "model/x3d+binary": { + "source": "apache", + "compressible": false, + "extensions": [ + "x3db", + "x3dbz" + ] + }, + "model/x3d+fastinfoset": { + "source": "iana", + "extensions": [ + "x3db" + ] + }, + "model/x3d+vrml": { + "source": "apache", + "compressible": false, + "extensions": [ + "x3dv", + "x3dvz" + ] + }, + "model/x3d+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "x3d", + "x3dz" + ] + }, + "model/x3d-vrml": { + "source": "iana", + "extensions": [ + "x3dv" + ] + }, + "multipart/alternative": { + "source": "iana", + "compressible": false + }, + "multipart/appledouble": { + "source": "iana" + }, + "multipart/byteranges": { + "source": "iana" + }, + "multipart/digest": { + "source": "iana" + }, + "multipart/encrypted": { + "source": "iana", + "compressible": false + }, + "multipart/form-data": { + "source": "iana", + "compressible": false + }, + "multipart/header-set": { + "source": "iana" + }, + "multipart/mixed": { + "source": "iana" + }, + "multipart/multilingual": { + "source": "iana" + }, + "multipart/parallel": { + "source": "iana" + }, + "multipart/related": { + "source": "iana", + "compressible": false + }, + "multipart/report": { + "source": "iana" + }, + "multipart/signed": { + "source": "iana", + "compressible": false + }, + "multipart/vnd.bint.med-plus": { + "source": "iana" + }, + "multipart/voice-message": { + "source": "iana" + }, + "multipart/x-mixed-replace": { + "source": "iana" + }, + "text/1d-interleaved-parityfec": { + "source": "iana" + }, + "text/cache-manifest": { + "source": "iana", + "compressible": true, + "extensions": [ + "appcache", + "manifest" + ] + }, + "text/calendar": { + "source": "iana", + "extensions": [ + "ics", + "ifb" + ] + }, + "text/calender": { + "compressible": true + }, + "text/cmd": { + "compressible": true + }, + "text/coffeescript": { + "extensions": [ + "coffee", + "litcoffee" + ] + }, + "text/cql": { + "source": "iana" + }, + "text/cql-expression": { + "source": "iana" + }, + "text/cql-identifier": { + "source": "iana" + }, + "text/css": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": [ + "css" + ] + }, + "text/csv": { + "source": "iana", + "compressible": true, + "extensions": [ + "csv" + ] + }, + "text/csv-schema": { + "source": "iana" + }, + "text/directory": { + "source": "iana" + }, + "text/dns": { + "source": "iana" + }, + "text/ecmascript": { + "source": "apache" + }, + "text/encaprtp": { + "source": "iana" + }, + "text/enriched": { + "source": "iana" + }, + "text/fhirpath": { + "source": "iana" + }, + "text/flexfec": { + "source": "iana" + }, + "text/fwdred": { + "source": "iana" + }, + "text/gff3": { + "source": "iana" + }, + "text/grammar-ref-list": { + "source": "iana" + }, + "text/hl7v2": { + "source": "iana" + }, + "text/html": { + "source": "iana", + "compressible": true, + "extensions": [ + "html", + "htm", + "shtml" + ] + }, + "text/jade": { + "extensions": [ + "jade" + ] + }, + "text/javascript": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": [ + "js", + "mjs" + ] + }, + "text/jcr-cnd": { + "source": "iana" + }, + "text/jsx": { + "compressible": true, + "extensions": [ + "jsx" + ] + }, + "text/less": { + "compressible": true, + "extensions": [ + "less" + ] + }, + "text/markdown": { + "source": "iana", + "compressible": true, + "extensions": [ + "md", + "markdown" + ] + }, + "text/mathml": { + "source": "nginx", + "extensions": [ + "mml" + ] + }, + "text/mdx": { + "compressible": true, + "extensions": [ + "mdx" + ] + }, + "text/mizar": { + "source": "iana" + }, + "text/n3": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": [ + "n3" + ] + }, + "text/parameters": { + "source": "iana", + "charset": "UTF-8" + }, + "text/parityfec": { + "source": "iana" + }, + "text/plain": { + "source": "iana", + "compressible": true, + "extensions": [ + "txt", + "text", + "conf", + "def", + "list", + "log", + "in", + "ini" + ] + }, + "text/provenance-notation": { + "source": "iana", + "charset": "UTF-8" + }, + "text/prs.fallenstein.rst": { + "source": "iana" + }, + "text/prs.lines.tag": { + "source": "iana", + "extensions": [ + "dsc" + ] + }, + "text/prs.prop.logic": { + "source": "iana" + }, + "text/prs.texi": { + "source": "iana" + }, + "text/raptorfec": { + "source": "iana" + }, + "text/red": { + "source": "iana" + }, + "text/rfc822-headers": { + "source": "iana" + }, + "text/richtext": { + "source": "iana", + "compressible": true, + "extensions": [ + "rtx" + ] + }, + "text/rtf": { + "source": "iana", + "compressible": true, + "extensions": [ + "rtf" + ] + }, + "text/rtp-enc-aescm128": { + "source": "iana" + }, + "text/rtploopback": { + "source": "iana" + }, + "text/rtx": { + "source": "iana" + }, + "text/sgml": { + "source": "iana", + "extensions": [ + "sgml", + "sgm" + ] + }, + "text/shaclc": { + "source": "iana" + }, + "text/shex": { + "source": "iana", + "extensions": [ + "shex" + ] + }, + "text/slim": { + "extensions": [ + "slim", + "slm" + ] + }, + "text/spdx": { + "source": "iana", + "extensions": [ + "spdx" + ] + }, + "text/strings": { + "source": "iana" + }, + "text/stylus": { + "extensions": [ + "stylus", + "styl" + ] + }, + "text/t140": { + "source": "iana" + }, + "text/tab-separated-values": { + "source": "iana", + "compressible": true, + "extensions": [ + "tsv" + ] + }, + "text/troff": { + "source": "iana", + "extensions": [ + "t", + "tr", + "roff", + "man", + "me", + "ms" + ] + }, + "text/turtle": { + "source": "iana", + "charset": "UTF-8", + "extensions": [ + "ttl" + ] + }, + "text/ulpfec": { + "source": "iana" + }, + "text/uri-list": { + "source": "iana", + "compressible": true, + "extensions": [ + "uri", + "uris", + "urls" + ] + }, + "text/vcard": { + "source": "iana", + "compressible": true, + "extensions": [ + "vcard" + ] + }, + "text/vnd.a": { + "source": "iana" + }, + "text/vnd.abc": { + "source": "iana" + }, + "text/vnd.ascii-art": { + "source": "iana" + }, + "text/vnd.curl": { + "source": "iana", + "extensions": [ + "curl" + ] + }, + "text/vnd.curl.dcurl": { + "source": "apache", + "extensions": [ + "dcurl" + ] + }, + "text/vnd.curl.mcurl": { + "source": "apache", + "extensions": [ + "mcurl" + ] + }, + "text/vnd.curl.scurl": { + "source": "apache", + "extensions": [ + "scurl" + ] + }, + "text/vnd.debian.copyright": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.dmclientscript": { + "source": "iana" + }, + "text/vnd.dvb.subtitle": { + "source": "iana", + "extensions": [ + "sub" + ] + }, + "text/vnd.esmertec.theme-descriptor": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.exchangeable": { + "source": "iana" + }, + "text/vnd.familysearch.gedcom": { + "source": "iana", + "extensions": [ + "ged" + ] + }, + "text/vnd.ficlab.flt": { + "source": "iana" + }, + "text/vnd.fly": { + "source": "iana", + "extensions": [ + "fly" + ] + }, + "text/vnd.fmi.flexstor": { + "source": "iana", + "extensions": [ + "flx" + ] + }, + "text/vnd.gml": { + "source": "iana" + }, + "text/vnd.graphviz": { + "source": "iana", + "extensions": [ + "gv" + ] + }, + "text/vnd.hans": { + "source": "iana" + }, + "text/vnd.hgl": { + "source": "iana" + }, + "text/vnd.in3d.3dml": { + "source": "iana", + "extensions": [ + "3dml" + ] + }, + "text/vnd.in3d.spot": { + "source": "iana", + "extensions": [ + "spot" + ] + }, + "text/vnd.iptc.newsml": { + "source": "iana" + }, + "text/vnd.iptc.nitf": { + "source": "iana" + }, + "text/vnd.latex-z": { + "source": "iana" + }, + "text/vnd.motorola.reflex": { + "source": "iana" + }, + "text/vnd.ms-mediapackage": { + "source": "iana" + }, + "text/vnd.net2phone.commcenter.command": { + "source": "iana" + }, + "text/vnd.radisys.msml-basic-layout": { + "source": "iana" + }, + "text/vnd.senx.warpscript": { + "source": "iana" + }, + "text/vnd.si.uricatalogue": { + "source": "apache" + }, + "text/vnd.sosi": { + "source": "iana" + }, + "text/vnd.sun.j2me.app-descriptor": { + "source": "iana", + "charset": "UTF-8", + "extensions": [ + "jad" + ] + }, + "text/vnd.trolltech.linguist": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.vcf": { + "source": "iana" + }, + "text/vnd.wap.si": { + "source": "iana" + }, + "text/vnd.wap.sl": { + "source": "iana" + }, + "text/vnd.wap.wml": { + "source": "iana", + "extensions": [ + "wml" + ] + }, + "text/vnd.wap.wmlscript": { + "source": "iana", + "extensions": [ + "wmls" + ] + }, + "text/vnd.zoo.kcl": { + "source": "iana" + }, + "text/vtt": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": [ + "vtt" + ] + }, + "text/wgsl": { + "source": "iana", + "extensions": [ + "wgsl" + ] + }, + "text/x-asm": { + "source": "apache", + "extensions": [ + "s", + "asm" + ] + }, + "text/x-c": { + "source": "apache", + "extensions": [ + "c", + "cc", + "cxx", + "cpp", + "h", + "hh", + "dic" + ] + }, + "text/x-component": { + "source": "nginx", + "extensions": [ + "htc" + ] + }, + "text/x-fortran": { + "source": "apache", + "extensions": [ + "f", + "for", + "f77", + "f90" + ] + }, + "text/x-gwt-rpc": { + "compressible": true + }, + "text/x-handlebars-template": { + "extensions": [ + "hbs" + ] + }, + "text/x-java-source": { + "source": "apache", + "extensions": [ + "java" + ] + }, + "text/x-jquery-tmpl": { + "compressible": true + }, + "text/x-lua": { + "extensions": [ + "lua" + ] + }, + "text/x-markdown": { + "compressible": true, + "extensions": [ + "mkd" + ] + }, + "text/x-nfo": { + "source": "apache", + "extensions": [ + "nfo" + ] + }, + "text/x-opml": { + "source": "apache", + "extensions": [ + "opml" + ] + }, + "text/x-org": { + "compressible": true, + "extensions": [ + "org" + ] + }, + "text/x-pascal": { + "source": "apache", + "extensions": [ + "p", + "pas" + ] + }, + "text/x-processing": { + "compressible": true, + "extensions": [ + "pde" + ] + }, + "text/x-sass": { + "extensions": [ + "sass" + ] + }, + "text/x-scss": { + "extensions": [ + "scss" + ] + }, + "text/x-setext": { + "source": "apache", + "extensions": [ + "etx" + ] + }, + "text/x-sfv": { + "source": "apache", + "extensions": [ + "sfv" + ] + }, + "text/x-suse-ymp": { + "compressible": true, + "extensions": [ + "ymp" + ] + }, + "text/x-uuencode": { + "source": "apache", + "extensions": [ + "uu" + ] + }, + "text/x-vcalendar": { + "source": "apache", + "extensions": [ + "vcs" + ] + }, + "text/x-vcard": { + "source": "apache", + "extensions": [ + "vcf" + ] + }, + "text/xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xml" + ] + }, + "text/xml-external-parsed-entity": { + "source": "iana" + }, + "text/yaml": { + "compressible": true, + "extensions": [ + "yaml", + "yml" + ] + }, + "video/1d-interleaved-parityfec": { + "source": "iana" + }, + "video/3gpp": { + "source": "iana", + "extensions": [ + "3gp", + "3gpp" + ] + }, + "video/3gpp-tt": { + "source": "iana" + }, + "video/3gpp2": { + "source": "iana", + "extensions": [ + "3g2" + ] + }, + "video/av1": { + "source": "iana" + }, + "video/bmpeg": { + "source": "iana" + }, + "video/bt656": { + "source": "iana" + }, + "video/celb": { + "source": "iana" + }, + "video/dv": { + "source": "iana" + }, + "video/encaprtp": { + "source": "iana" + }, + "video/evc": { + "source": "iana" + }, + "video/ffv1": { + "source": "iana" + }, + "video/flexfec": { + "source": "iana" + }, + "video/h261": { + "source": "iana", + "extensions": [ + "h261" + ] + }, + "video/h263": { + "source": "iana", + "extensions": [ + "h263" + ] + }, + "video/h263-1998": { + "source": "iana" + }, + "video/h263-2000": { + "source": "iana" + }, + "video/h264": { + "source": "iana", + "extensions": [ + "h264" + ] + }, + "video/h264-rcdo": { + "source": "iana" + }, + "video/h264-svc": { + "source": "iana" + }, + "video/h265": { + "source": "iana" + }, + "video/h266": { + "source": "iana" + }, + "video/iso.segment": { + "source": "iana", + "extensions": [ + "m4s" + ] + }, + "video/jpeg": { + "source": "iana", + "extensions": [ + "jpgv" + ] + }, + "video/jpeg2000": { + "source": "iana" + }, + "video/jpm": { + "source": "apache", + "extensions": [ + "jpm", + "jpgm" + ] + }, + "video/jxsv": { + "source": "iana" + }, + "video/matroska": { + "source": "iana" + }, + "video/matroska-3d": { + "source": "iana" + }, + "video/mj2": { + "source": "iana", + "extensions": [ + "mj2", + "mjp2" + ] + }, + "video/mp1s": { + "source": "iana" + }, + "video/mp2p": { + "source": "iana" + }, + "video/mp2t": { + "source": "iana", + "extensions": [ + "ts", + "m2t", + "m2ts", + "mts" + ] + }, + "video/mp4": { + "source": "iana", + "compressible": false, + "extensions": [ + "mp4", + "mp4v", + "mpg4" + ] + }, + "video/mp4v-es": { + "source": "iana" + }, + "video/mpeg": { + "source": "iana", + "compressible": false, + "extensions": [ + "mpeg", + "mpg", + "mpe", + "m1v", + "m2v" + ] + }, + "video/mpeg4-generic": { + "source": "iana" + }, + "video/mpv": { + "source": "iana" + }, + "video/nv": { + "source": "iana" + }, + "video/ogg": { + "source": "iana", + "compressible": false, + "extensions": [ + "ogv" + ] + }, + "video/parityfec": { + "source": "iana" + }, + "video/pointer": { + "source": "iana" + }, + "video/quicktime": { + "source": "iana", + "compressible": false, + "extensions": [ + "qt", + "mov" + ] + }, + "video/raptorfec": { + "source": "iana" + }, + "video/raw": { + "source": "iana" + }, + "video/rtp-enc-aescm128": { + "source": "iana" + }, + "video/rtploopback": { + "source": "iana" + }, + "video/rtx": { + "source": "iana" + }, + "video/scip": { + "source": "iana" + }, + "video/smpte291": { + "source": "iana" + }, + "video/smpte292m": { + "source": "iana" + }, + "video/ulpfec": { + "source": "iana" + }, + "video/vc1": { + "source": "iana" + }, + "video/vc2": { + "source": "iana" + }, + "video/vnd.cctv": { + "source": "iana" + }, + "video/vnd.dece.hd": { + "source": "iana", + "extensions": [ + "uvh", + "uvvh" + ] + }, + "video/vnd.dece.mobile": { + "source": "iana", + "extensions": [ + "uvm", + "uvvm" + ] + }, + "video/vnd.dece.mp4": { + "source": "iana" + }, + "video/vnd.dece.pd": { + "source": "iana", + "extensions": [ + "uvp", + "uvvp" + ] + }, + "video/vnd.dece.sd": { + "source": "iana", + "extensions": [ + "uvs", + "uvvs" + ] + }, + "video/vnd.dece.video": { + "source": "iana", + "extensions": [ + "uvv", + "uvvv" + ] + }, + "video/vnd.directv.mpeg": { + "source": "iana" + }, + "video/vnd.directv.mpeg-tts": { + "source": "iana" + }, + "video/vnd.dlna.mpeg-tts": { + "source": "iana" + }, + "video/vnd.dvb.file": { + "source": "iana", + "extensions": [ + "dvb" + ] + }, + "video/vnd.fvt": { + "source": "iana", + "extensions": [ + "fvt" + ] + }, + "video/vnd.hns.video": { + "source": "iana" + }, + "video/vnd.iptvforum.1dparityfec-1010": { + "source": "iana" + }, + "video/vnd.iptvforum.1dparityfec-2005": { + "source": "iana" + }, + "video/vnd.iptvforum.2dparityfec-1010": { + "source": "iana" + }, + "video/vnd.iptvforum.2dparityfec-2005": { + "source": "iana" + }, + "video/vnd.iptvforum.ttsavc": { + "source": "iana" + }, + "video/vnd.iptvforum.ttsmpeg2": { + "source": "iana" + }, + "video/vnd.motorola.video": { + "source": "iana" + }, + "video/vnd.motorola.videop": { + "source": "iana" + }, + "video/vnd.mpegurl": { + "source": "iana", + "extensions": [ + "mxu", + "m4u" + ] + }, + "video/vnd.ms-playready.media.pyv": { + "source": "iana", + "extensions": [ + "pyv" + ] + }, + "video/vnd.nokia.interleaved-multimedia": { + "source": "iana" + }, + "video/vnd.nokia.mp4vr": { + "source": "iana" + }, + "video/vnd.nokia.videovoip": { + "source": "iana" + }, + "video/vnd.objectvideo": { + "source": "iana" + }, + "video/vnd.radgamettools.bink": { + "source": "iana" + }, + "video/vnd.radgamettools.smacker": { + "source": "apache" + }, + "video/vnd.sealed.mpeg1": { + "source": "iana" + }, + "video/vnd.sealed.mpeg4": { + "source": "iana" + }, + "video/vnd.sealed.swf": { + "source": "iana" + }, + "video/vnd.sealedmedia.softseal.mov": { + "source": "iana" + }, + "video/vnd.uvvu.mp4": { + "source": "iana", + "extensions": [ + "uvu", + "uvvu" + ] + }, + "video/vnd.vivo": { + "source": "iana", + "extensions": [ + "viv" + ] + }, + "video/vnd.youtube.yt": { + "source": "iana" + }, + "video/vp8": { + "source": "iana" + }, + "video/vp9": { + "source": "iana" + }, + "video/webm": { + "source": "apache", + "compressible": false, + "extensions": [ + "webm" + ] + }, + "video/x-f4v": { + "source": "apache", + "extensions": [ + "f4v" + ] + }, + "video/x-fli": { + "source": "apache", + "extensions": [ + "fli" + ] + }, + "video/x-flv": { + "source": "apache", + "compressible": false, + "extensions": [ + "flv" + ] + }, + "video/x-m4v": { + "source": "apache", + "extensions": [ + "m4v" + ] + }, + "video/x-matroska": { + "source": "apache", + "compressible": false, + "extensions": [ + "mkv", + "mk3d", + "mks" + ] + }, + "video/x-mng": { + "source": "apache", + "extensions": [ + "mng" + ] + }, + "video/x-ms-asf": { + "source": "apache", + "extensions": [ + "asf", + "asx" + ] + }, + "video/x-ms-vob": { + "source": "apache", + "extensions": [ + "vob" + ] + }, + "video/x-ms-wm": { + "source": "apache", + "extensions": [ + "wm" + ] + }, + "video/x-ms-wmv": { + "source": "apache", + "compressible": false, + "extensions": [ + "wmv" + ] + }, + "video/x-ms-wmx": { + "source": "apache", + "extensions": [ + "wmx" + ] + }, + "video/x-ms-wvx": { + "source": "apache", + "extensions": [ + "wvx" + ] + }, + "video/x-msvideo": { + "source": "apache", + "extensions": [ + "avi" + ] + }, + "video/x-sgi-movie": { + "source": "apache", + "extensions": [ + "movie" + ] + }, + "video/x-smv": { + "source": "apache", + "extensions": [ + "smv" + ] + }, + "x-conference/x-cooltalk": { + "source": "apache", + "extensions": [ + "ice" + ] + }, + "x-shader/x-fragment": { + "compressible": true + }, + "x-shader/x-vertex": { + "compressible": true + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvbWVkaWEtdHlwZXMvMS4xLjAvdmVuZG9yL2RiLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgXCJhcHBsaWNhdGlvbi8xZC1pbnRlcmxlYXZlZC1wYXJpdHlmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uLzNncGRhc2gtcW9lLXJlcG9ydCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi8zZ3BwLWltcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vM2dwcGhhbCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uLzNncHBoYWxmb3Jtcytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2EybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWNlK2Nib3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FjZStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FjZS1ncm91cGNvbW0rY2JvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWN0aXZlbWVzc2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWN0aXZpdHkranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9haWYrY2JvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWlmK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWx0by1jZG5pK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWx0by1jZG5pZmlsdGVyK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWx0by1jb3N0bWFwK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWx0by1jb3N0bWFwZmlsdGVyK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWx0by1kaXJlY3RvcnkranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLWVuZHBvaW50Y29zdCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FsdG8tZW5kcG9pbnRjb3N0cGFyYW1zK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWx0by1lbmRwb2ludHByb3AranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLWVuZHBvaW50cHJvcHBhcmFtcytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FsdG8tZXJyb3IranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLW5ldHdvcmttYXAranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLW5ldHdvcmttYXBmaWx0ZXIranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLXByb3BtYXAranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLXByb3BtYXBwYXJhbXMranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLXRpcHMranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLXRpcHNwYXJhbXMranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLXVwZGF0ZXN0cmVhbWNvbnRyb2wranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLXVwZGF0ZXN0cmVhbXBhcmFtcytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYW5kcmV3LWluc2V0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXpcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXBwaW5zdGFsbGVyXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXBwaW5zdGFsbGVyXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FwcGxlZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXBwbGl4d2FyZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXdcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXBweFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFwcHhcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXBweGJ1bmRsZVwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFwcHhidW5kbGVcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXQrand0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hdGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2F0ZnhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2F0b20reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhdG9tXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2F0b21jYXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhdG9tY2F0XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2F0b21kZWxldGVkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXRvbWRlbGV0ZWRcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXRvbWljbWFpbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXRvbXN2Yyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF0b21zdmNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXRzYy1kd2QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkd2RcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXRzYy1keW5hbWljLWV2ZW50LW1lc3NhZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2F0c2MtaGVsZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhlbGRcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXRzYy1yZHQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hdHNjLXJzYXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyc2F0XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2F0eG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hdXRoLXBvbGljeSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXV0b21hdGlvbm1sLWFtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFtbFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hdXRvbWF0aW9ubWwtYW1seCt6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhbWx4XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2JhY25ldC14ZGQremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9iYXRjaC1zbXRwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9iZG9jXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYmRvY1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9iZWVwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2J1ZnJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2MycGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NhbGVuZGFyK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2FsZW5kYXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4Y3NcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2FsbC1jb21wbGV0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jYWxzLTE4NDBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NhcHRpdmUranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jYm9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jYm9yLXNlcVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2NjZXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NjbXAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NjeG1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2N4bWxcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2RhK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NkZngreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZGZ4XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NkbWktY2FwYWJpbGl0eVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNkbWlhXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NkbWktY29udGFpbmVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2RtaWNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2RtaS1kb21haW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZG1pZFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jZG1pLW9iamVjdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNkbWlvXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NkbWktcXVldWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZG1pcVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jZG5pXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jZWFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NlYS0yMDE4K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jZWxsbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Nmd1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2lkLWVkaG9jK2Nib3Itc2VxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jaXR5K2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2xyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jbHVlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jbHVlX2luZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Ntc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY25ycCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY29hcC1ncm91cCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NvYXAtcGF5bG9hZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY29tbW9uZ3JvdW5kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jb25jaXNlLXByb2JsZW0tZGV0YWlscytjYm9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jb25mZXJlbmNlLWluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Nvc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Nvc2Uta2V5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jb3NlLWtleS1zZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Nvc2UteDUwOVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY3BsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3BsXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NzcmF0dHJzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jc3RhK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jc3RhZGF0YSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY3N2bStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2N1LXNlZW1lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjdVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jd2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjd2xcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY3dsK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY3dsK3lhbWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2N3dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY3liZXJjYXNoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kYXJ0XCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Rhc2greG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcGRcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGFzaC1wYXRjaCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1wcFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kYXNoZGVsdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Rhdm1vdW50K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGF2bW91bnRcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGNhLXJmdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGNkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kZWMtZHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2RpYWxvZy1pbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kaWNvbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGljb20ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kaWNvbSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGlpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kaXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Ruc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZG5zK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZG5zLW1lc3NhZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2RvY2Jvb2sreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRia1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kb3RzK2Nib3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Rwb3Arand0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kc2twcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZHNzYytkZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkc3NjXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Rzc2MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4ZHNzY1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kdmNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lY21hc2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVjbWFcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZWRob2MrY2Jvci1zZXFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VkaS1jb25zZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lZGkteDEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lZGlmYWN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lZmlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VsbStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZWxtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lbWVyZ2VuY3ljYWxsZGF0YS5jYXAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW1lcmdlbmN5Y2FsbGRhdGEuY29tbWVudCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW1lcmdlbmN5Y2FsbGRhdGEuY29udHJvbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW1lcmdlbmN5Y2FsbGRhdGEuZGV2aWNlaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW1lcmdlbmN5Y2FsbGRhdGEuZWNhbGwubXNkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lbWVyZ2VuY3ljYWxsZGF0YS5sZWdhY3llc24ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lbWVyZ2VuY3ljYWxsZGF0YS5wcm92aWRlcmluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VtZXJnZW5jeWNhbGxkYXRhLnNlcnZpY2VpbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lbWVyZ2VuY3ljYWxsZGF0YS5zdWJzY3JpYmVyaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW1lcmdlbmN5Y2FsbGRhdGEudmVkcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW1tYSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVtbWFcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW1vdGlvbm1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZW1vdGlvbm1sXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VuY2FwcnRwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lcHAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VwdWIremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXB1YlwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lc2hvcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZXhpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXhpXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2V4cGVjdC1jdC1yZXBvcnQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9leHByZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXhwXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Zhc3RpbmZvc2V0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9mYXN0c29hcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZmRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmRmXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2ZkdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZkdFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9maGlyK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9maGlyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2ZpZG8udHJ1c3RlZC1hcHBzK2pzb25cIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZml0c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZmxleGZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZm9udC1zZm50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9mb250LXRkcGZyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGZyXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2ZvbnQtd29mZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZnJhbWV3b3JrLWF0dHJpYnV0ZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2dlbytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnZW9qc29uXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2dlbytqc29uLXNlcVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZ2VvcGFja2FnZStzcWxpdGUzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9nZW94YWNtbCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2dlb3hhY21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9nbHRmLWJ1ZmZlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZ21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ21sXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2duYXAtYmluZGluZy1qd3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2duYXAtYmluZGluZy1qd3NkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9nbmFwLWJpbmRpbmctcm90YXRpb24tandzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9nbmFwLWJpbmRpbmctcm90YXRpb24tandzZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZ3B4K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJncHhcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZ3JpYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZ3hmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJneGZcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZ3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImd6XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2gyMjRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2hlbGQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2hqc29uXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaGpzb25cIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaGw3djIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaHR0cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaHlwZXJzdHVkaW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdGtcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaWJlLWtleS1yZXF1ZXN0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pYmUtcGtnLXJlcGx5K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pYmUtcHAtZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaWdlc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaW0taXNjb21wb3NpbmcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaW5kZXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2luZGV4LmNtZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaW5kZXgub2JqXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pbmRleC5yZXNwb25zZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaW5kZXgudm5kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pbmttbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlua1wiLCBcImlua21sXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2lvdHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2lwZml4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaXBmaXhcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaXBwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pc3VwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pdHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpdHNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vamF2YS1hcmNoaXZlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiamFyXCIsIFwid2FyXCIsIFwiZWFyXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2phdmEtc2VyaWFsaXplZC1vYmplY3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNlclwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qYXZhLXZtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbGFzc1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vamYyZmVlZCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2pvc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2pvc2UranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qcmQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qc2NhbGVuZGFyK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vanNjb250YWN0K2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vanNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqc29uXCIsIFwibWFwXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2pzb24tcGF0Y2granNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qc29uLXNlcVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vanNvbjVcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqc29uNVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qc29ubWwranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqc29ubWxcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vanNvbnBhdGhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2p3aytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2p3ay1zZXQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qd3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2twbWwtcmVxdWVzdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24va3BtbC1yZXNwb25zZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbGQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianNvbmxkXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2xncit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImxnclwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9saW5rLWZvcm1hdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbGlua3NldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbGlua3NldCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2xvYWQtY29udHJvbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbG9nb3V0K2p3dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbG9zdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImxvc3R4bWxcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbG9zdHN5bmMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2xwZit6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL2x4ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWFjLWJpbmhleDQwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHF4XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL21hYy1jb21wYWN0cHJvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjcHRcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWFjd3JpdGVpaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWFkcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1hZHNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWFuaWZlc3QranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3ZWJtYW5pZmVzdFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYXJjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXJjXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL21hcmN4bWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcmN4XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL21hdGhlbWF0aWNhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWFcIiwgXCJuYlwiLCBcIm1iXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL21hdGhtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1hdGhtbFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYXRobWwtY29udGVudCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWF0aG1sLXByZXNlbnRhdGlvbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy1hc3NvY2lhdGVkLXByb2NlZHVyZS1kZXNjcmlwdGlvbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy1kZXJlZ2lzdGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLWVudmVsb3BlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLW1zayt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy1tc2stcmVzcG9uc2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL21ibXMtcHJvdGVjdGlvbi1kZXNjcmlwdGlvbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy1yZWNlcHRpb24tcmVwb3J0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLXJlZ2lzdGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLXJlZ2lzdGVyLXJlc3BvbnNlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLXNjaGVkdWxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLXVzZXItc2VydmljZS1kZXNjcmlwdGlvbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJveFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1ib3hcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWVkaWEtcG9saWN5LWRhdGFzZXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcGZcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWVkaWFfY29udHJvbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWVkaWFzZXJ2ZXJjb250cm9sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXNjbWxcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWVyZ2UtcGF0Y2granNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tZXRhbGluayt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWV0YWxpbmtcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWV0YWxpbms0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWV0YTRcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWV0cyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1ldHNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWY0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9taWtleVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWlwY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWlzc2luZy1ibG9ja3MrY2Jvci1zZXFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL21tdC1hZWkreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtYWVpXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL21tdC11c2QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtdXNkXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL21vZHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtb2RzXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL21vc3Mta2V5c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbW9zcy1zaWduYXR1cmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL21vc3NrZXktZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbW9zc2tleS1yZXF1ZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tcDIxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibTIxXCIsIFwibXAyMVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tcDRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcDRcIiwgXCJtcGc0XCIsIFwibXA0c1wiLCBcIm00cFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tcGVnNC1nZW5lcmljXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tcGVnNC1pb2RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL21wZWc0LWlvZC14bXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL21yYi1jb25zdW1lcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXJiLXB1Ymxpc2greG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL21zYy1pdnIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXNjLW1peGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL21zaXhcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtc2l4XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL21zaXhidW5kbGVcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtc2l4YnVuZGxlXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL21zd29yZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRvY1wiLCBcImRvdFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tdWQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tdWx0aXBhcnQtY29yZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXhmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXhmXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL24tcXVhZHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJucVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9uLXRyaXBsZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJudFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9uYXNkYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9uZXdzLWNoZWNrZ3JvdXBzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVUy1BU0NJSVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL25ld3MtZ3JvdXBpbmZvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVUy1BU0NJSVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL25ld3MtdHJhbnNtaXNzaW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ubHNtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbm9kZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNqc1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9uc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL29hdXRoLWF1dGh6LXJlcStqd3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL29ibGl2aW91cy1kbnMtbWVzc2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vb2NzcC1yZXF1ZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vY3NwLXJlc3BvbnNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXG4gICAgICBcImJpblwiLFxuICAgICAgXCJkbXNcIixcbiAgICAgIFwibHJmXCIsXG4gICAgICBcIm1hclwiLFxuICAgICAgXCJzb1wiLFxuICAgICAgXCJkaXN0XCIsXG4gICAgICBcImRpc3R6XCIsXG4gICAgICBcInBrZ1wiLFxuICAgICAgXCJicGtcIixcbiAgICAgIFwiZHVtcFwiLFxuICAgICAgXCJlbGNcIixcbiAgICAgIFwiZGVwbG95XCIsXG4gICAgICBcImV4ZVwiLFxuICAgICAgXCJkbGxcIixcbiAgICAgIFwiZGViXCIsXG4gICAgICBcImRtZ1wiLFxuICAgICAgXCJpc29cIixcbiAgICAgIFwiaW1nXCIsXG4gICAgICBcIm1zaVwiLFxuICAgICAgXCJtc3BcIixcbiAgICAgIFwibXNtXCIsXG4gICAgICBcImJ1ZmZlclwiLFxuICAgIF0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vb2RhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2RhXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL29kbSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vb2R4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vZWJwcy1wYWNrYWdlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3BmXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL29nZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9neFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vaHR0cC1rZXlzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vbWRvYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib21kb2NcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vb25lbm90ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib25ldG9jXCIsIFwib25ldG9jMlwiLCBcIm9uZXRtcFwiLCBcIm9uZXBrZ1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vcGMtbm9kZXNldCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vb3Njb3JlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9veHBzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3hwc1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wMjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3AyMSt6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3AycC1vdmVybGF5K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmVsb1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wYXJpdHlmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bhc3Nwb3J0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wYXRjaC1vcHMtZXJyb3IreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4ZXJcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGRmXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BkeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGVtLWNlcnRpZmljYXRlLWNoYWluXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wZ3AtZW5jcnlwdGVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGdwXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BncC1rZXlzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXNjXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BncC1zaWduYXR1cmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzaWdcIiwgXCJhc2NcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGljcy1ydWxlc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHJmXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BpZGYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGlkZi1kaWZmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BrY3MxMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInAxMFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wa2NzMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BrY3M3LW1pbWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwN21cIiwgXCJwN2NcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGtjczctc2lnbmF0dXJlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicDdzXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BrY3M4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicDhcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGtjczgtZW5jcnlwdGVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wa2l4LWF0dHItY2VydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFjXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BraXgtY2VydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNlclwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wa2l4LWNybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNybFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wa2l4LXBraXBhdGhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwa2lwYXRoXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BraXhjbXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwa2lcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGxzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGxzXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BvYy1zZXR0aW5ncyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhaVwiLCBcImVwc1wiLCBcInBzXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bwc3AtdHJhY2tlcitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ByaXZhdGUtdG9rZW4taXNzdWVyLWRpcmVjdG9yeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHJpdmF0ZS10b2tlbi1yZXF1ZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wcml2YXRlLXRva2VuLXJlc3BvbnNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wcm9ibGVtK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHJvYmxlbSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHJvdmVuYW5jZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInByb3Z4XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bycy5hbHZlc3RyYW5kLnRpdHJheC1zaGVldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHJzLmN3d1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImN3d1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wcnMuY3luXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCI3LUJJVFwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bycy5ocHViK3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHJzLmltcGxpZWQtZG9jdW1lbnQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bycy5pbXBsaWVkLWV4ZWN1dGFibGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bycy5pbXBsaWVkLW9iamVjdCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bycy5pbXBsaWVkLW9iamVjdCtqc29uLXNlcVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHJzLmltcGxpZWQtb2JqZWN0K3lhbWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bycy5pbXBsaWVkLXN0cnVjdHVyZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHJzLm5wcmVuZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHJzLnBsdWNrZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bycy5yZGYteG1sLWNyeXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wcnMudmNmYnppcDJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bycy54c2YreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4c2ZcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHNrYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBza2N4bWxcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHZkK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcXNpZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcmFtbCt5YW1sXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyYW1sXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JhcHRvcmZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcmRhcCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JkZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJkZlwiLCBcIm93bFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yZWdpbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmlmXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JlbGF4LW5nLWNvbXBhY3Qtc3ludGF4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicm5jXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JlbW90ZS1wcmludGluZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yZXB1dG9uK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcmVzb3VyY2UtbGlzdHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJybFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yZXNvdXJjZS1saXN0cy1kaWZmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmxkXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JmYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcmlzY29zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ybG1pK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ybHMtc2VydmljZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyc1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yb3V0ZS1hcGQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyYXBkXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JvdXRlLXMtdHNpZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNsc1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yb3V0ZS11c2QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJydXNkXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Jwa2ktY2hlY2tsaXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ycGtpLWdob3N0YnVzdGVyc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdiclwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ycGtpLW1hbmlmZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWZ0XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Jwa2ktcHVibGljYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Jwa2ktcm9hXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicm9hXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Jwa2ktc2lnbmVkLXRhbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcnBraS11cGRvd25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JzZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnNkXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Jzcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnNzXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3J0ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnRmXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3J0cGxvb3BiYWNrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ydHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NhbWxhc3NlcnRpb24reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NhbWxtZXRhZGF0YSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2FyaWYranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zYXJpZi1leHRlcm5hbC1wcm9wZXJ0aWVzK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2JlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zYm1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2JtbFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zY2FpcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2NpbStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NjdnAtY3YtcmVxdWVzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNjcVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zY3ZwLWN2LXJlc3BvbnNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2NzXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NjdnAtdnAtcmVxdWVzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNwcVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zY3ZwLXZwLXJlc3BvbnNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3BwXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NkcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNkcFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zZWNldmVudCtqd3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Nlbm1sK2Nib3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Nlbm1sK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2VubWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZW5tbHhcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2VubWwtZXRjaCtjYm9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zZW5tbC1ldGNoK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2VubWwtZXhpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zZW5zbWwrY2JvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2Vuc21sK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2Vuc21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2Vuc21seFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zZW5zbWwtZXhpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zZXAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NlcC1leGlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Nlc3Npb24taW5mb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2V0LXBheW1lbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NldC1wYXltZW50LWluaXRpYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZXRwYXlcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2V0LXJlZ2lzdHJhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2V0LXJlZ2lzdHJhdGlvbi1pbml0aWF0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2V0cmVnXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NnbWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NnbWwtb3Blbi1jYXRhbG9nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zaGYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzaGZcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2lldmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzaXZcIiwgXCJzaWV2ZVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zaW1wbGUtZmlsdGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zaW1wbGUtbWVzc2FnZS1zdW1tYXJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zaW1wbGVzeW1ib2xjb250YWluZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NpcGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zbWlsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NtaWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzbWlcIiwgXCJzbWlsXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NtcHRlMzM2bVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc29hcCtmYXN0aW5mb3NldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc29hcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3BhcnFsLXF1ZXJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnFcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3BhcnFsLXJlc3VsdHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzcnhcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3BkeCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NwaXJpdHMtZXZlbnQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NxbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNxbFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zcmdzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3JhbVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zcmdzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3J4bWxcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3J1K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3J1XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NzZGwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNzZGxcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3NtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNzbWxcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3QyMTEwLTQxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zdGl4K2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3RyYXR1bVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3dpZCtjYm9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zd2lkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3dpZHRhZ1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YW1wLWFwZXgtdXBkYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YW1wLWFwZXgtdXBkYXRlLWNvbmZpcm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhbXAtY29tbXVuaXR5LXVwZGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFtcC1jb21tdW5pdHktdXBkYXRlLWNvbmZpcm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhbXAtZXJyb3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhbXAtc2VxdWVuY2UtYWRqdXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YW1wLXNlcXVlbmNlLWFkanVzdC1jb25maXJtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YW1wLXN0YXR1cy1xdWVyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFtcC1zdGF0dXMtcmVzcG9uc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhbXAtdXBkYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YW1wLXVwZGF0ZS1jb25maXJtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YXJcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGF4aWkranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90ZCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RlaSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRlaVwiLCBcInRlaWNvcnB1c1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90ZXRyYV9pc2lcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RocmF1ZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRmaVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90aW1lc3RhbXAtcXVlcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RpbWVzdGFtcC1yZXBseVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGltZXN0YW1wZWQtZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRzZFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90bHNycHQrZ3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGxzcnB0K2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdG0ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90bmF1dGhsaXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90b2tlbi1pbnRyb3NwZWN0aW9uK2p3dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdG9tbFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widG9tbFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90cmlja2xlLWljZS1zZHBmcmFnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90cmlnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHJpZ1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90dG1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHRtbFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90dmUtdHJpZ2dlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdHppZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdHppZi1sZWFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi91Ympzb25cIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1YmpcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdWxwZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi91cmMtZ3Jwc2hlZXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3VyYy1yZXNzaGVldCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJzaGVldFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi91cmMtdGFyZ2V0ZGVzYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRkXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3VyYy11aXNvY2tldGRlc2MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92Y2FyZCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZjYXJkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92ZW1taVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdml2aWRlbmNlLnNjcmlwdGZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjEwMDBtaW5kcy5kZWNpc2lvbi1tb2RlbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIjFrbVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuMW9iXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC1wcm9zZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAtcHJvc2UtcGMzYSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAtcHJvc2UtcGMzYWNoK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC1wcm9zZS1wYzNjaCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAtcHJvc2UtcGM4K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC12MngtbG9jYWwtc2VydmljZS1pbmZvcm1hdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAuNWduYXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLjVnc2EyeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAuNWdzYTJ4LWxvY2FsLXNlcnZpY2UtaW5mb3JtYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLmFjY2Vzcy10cmFuc2Zlci1ldmVudHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLmJzZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAuY3JzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5jdXJyZW50LWxvY2F0aW9uLWRpc2NvdmVyeSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAuZ21vcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAuZ3RwY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAuaW50ZXJ3b3JraW5nLWRhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLmxwcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAubWMtc2lnbmFsbGluZy1lYXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1jZGF0YS1hZmZpbGlhdGlvbi1jb21tYW5kK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5tY2RhdGEtaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAubWNkYXRhLW1zZ3N0b3JlLWN0cmwtcmVxdWVzdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAubWNkYXRhLXBheWxvYWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1jZGF0YS1yZWdyb3VwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5tY2RhdGEtc2VydmljZS1jb25maWcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1jZGF0YS1zaWduYWxsaW5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5tY2RhdGEtdWUtY29uZmlnK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5tY2RhdGEtdXNlci1wcm9maWxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5tY3B0dC1hZmZpbGlhdGlvbi1jb21tYW5kK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5tY3B0dC1mbG9vci1yZXF1ZXN0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5tY3B0dC1pbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5tY3B0dC1sb2NhdGlvbi1pbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5tY3B0dC1tYm1zLXVzYWdlLWluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1jcHR0LXJlZ3JvdXAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1jcHR0LXNlcnZpY2UtY29uZmlnK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5tY3B0dC1zaWduZWQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1jcHR0LXVlLWNvbmZpZyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAubWNwdHQtdWUtaW5pdC1jb25maWcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1jcHR0LXVzZXItcHJvZmlsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAubWN2aWRlby1hZmZpbGlhdGlvbi1jb21tYW5kK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5tY3ZpZGVvLWluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1jdmlkZW8tbG9jYXRpb24taW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAubWN2aWRlby1tYm1zLXVzYWdlLWluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1jdmlkZW8tcmVncm91cCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAubWN2aWRlby1zZXJ2aWNlLWNvbmZpZyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAubWN2aWRlby10cmFuc21pc3Npb24tcmVxdWVzdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAubWN2aWRlby11ZS1jb25maWcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1jdmlkZW8tdXNlci1wcm9maWxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5taWQtY2FsbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAubmdhcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAucGZjcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAucGljLWJ3LWxhcmdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGxiXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnBpYy1idy1zbWFsbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBzYlwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5waWMtYnctdmFyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHZiXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnBpbmFwcC1pbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5zMWFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5zZWFsLWdyb3VwLWRvYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAuc2VhbC1pbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5zZWFsLWxvY2F0aW9uLWluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnNlYWwtbWJtcy11c2FnZS1pbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5zZWFsLW5ldHdvcmstcW9zLW1hbmFnZW1lbnQtaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAuc2VhbC11ZS1jb25maWctaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAuc2VhbC11bmljYXN0LWluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnNlYWwtdXNlci1wcm9maWxlLWluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnNtc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAuc21zK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5zcnZjYy1leHQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnNydmNjLWluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnN0YXRlLWFuZC1ldmVudC1pbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC51c3NkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC52MnhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnZhZS1pbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcDIuYmNtY3NpbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcDIuc21zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcDIudGNhcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRjYXBcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNsaWdodHNzb2Z0d2FyZS5pbWFnZXNjYWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zbS5wb3N0LWl0LW5vdGVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHduXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hY2NwYWMuc2ltcGx5LmFzb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFzb1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWNjcGFjLnNpbXBseS5pbXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpbXBcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFjbS5hZGRyZXNzeGZlcitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hY20uY2hhdGJvdCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hY3Vjb2JvbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFjdVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWN1Y29ycFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF0Y1wiLCBcImFjdXRjXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5haXItYXBwbGljYXRpb24taW5zdGFsbGVyLXBhY2thZ2UremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhaXJcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFkb2JlLmZsYXNoLm1vdmllXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWRvYmUuZm9ybXNjZW50cmFsLmZjZHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmY2R0XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5meHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmeHBcIiwgXCJmeHBsXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5wYXJ0aWFsLXVwbG9hZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFkb2JlLnhkcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhkcFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWRvYmUueGZkZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGZkZlwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWV0aGVyLmltcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFmcGMuYWZwbGluZWRhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZnBjLmFmcGxpbmVkYXRhLXBhZ2VkZWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZnBjLmNtb2NhLWNtcmVzb3VyY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZnBjLmZvY2EtY2hhcnNldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFmcGMuZm9jYS1jb2RlZGZvbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZnBjLmZvY2EtY29kZXBhZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZnBjLm1vZGNhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWZwYy5tb2RjYS1jbXRhYmxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWZwYy5tb2RjYS1mb3JtZGVmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWZwYy5tb2RjYS1tZWRpdW1tYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZnBjLm1vZGNhLW9iamVjdGNvbnRhaW5lclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFmcGMubW9kY2Etb3ZlcmxheVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFmcGMubW9kY2EtcGFnZXNlZ21lbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhZ2VcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFoLWJhcmNvZGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFoZWFkLnNwYWNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWhlYWRcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFpcnppcC5maWxlc2VjdXJlLmF6ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF6ZlwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWlyemlwLmZpbGVzZWN1cmUuYXpzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXpzXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hbWFkZXVzK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFtYXpvbi5lYm9va1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXp3XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hbWF6b24ubW9iaTgtZWJvb2tcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hbWVyaWNhbmR5bmFtaWNzLmFjY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFjY1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYW1pZ2EuYW1pXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYW1pXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hbXVuZHNlbi5tYXplK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYW5kcm9pZC5vdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hbmRyb2lkLnBhY2thZ2UtYXJjaGl2ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXBrXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hbmtpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYW5zZXItd2ViLWNlcnRpZmljYXRlLWlzc3VlLWluaXRpYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjaWlcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFuc2VyLXdlYi1mdW5kcy10cmFuc2Zlci1pbml0aWF0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmdGlcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFudGl4LmdhbWUtY29tcG9uZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXR4XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcGFjaGUuYXJyb3cuZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFwYWNoZS5hcnJvdy5zdHJlYW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcGFjaGUucGFycXVldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFwYWNoZS50aHJpZnQuYmluYXJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXBhY2hlLnRocmlmdC5jb21wYWN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXBhY2hlLnRocmlmdC5qc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXBleGxhbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcGkranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXBsZXh0b3Iud2FycnAranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXBvdGhla2VuZGUucmVzZXJ2YXRpb24ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXBwbGUuaW5zdGFsbGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXBrZ1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXBwbGUua2V5bm90ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImtleVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXBwbGUubXBlZ3VybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm0zdThcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFwcGxlLm51bWJlcnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJudW1iZXJzXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5wYWdlc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBhZ2VzXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5wa3Bhc3NcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwa3Bhc3NcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFyYXN0cmEuc3dpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcmlzdGFuZXR3b3Jrcy5zd2lcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzd2lcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFydGlzYW4ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXJ0c3F1YXJlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXN0cmFlYS1zb2Z0d2FyZS5pb3RhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaW90YVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXVkaW9ncmFwaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFlcFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXV0b3BhY2thZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hdmFsb24ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXZpc3Rhcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmJhbHNhbWlxLmJtbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJibW1sXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5iYWxzYW1pcS5ibXByXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYmFuYW5hLWFjY291bnRpbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5iYmYudXNwLmVycm9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYmJmLnVzcC5tc2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5iYmYudXNwLm1zZytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5iZWtpdHp1ci1zdGVjaCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5iZWxpZ2h0c29mdC5saHpkK3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmJlbGlnaHRzb2Z0LmxoemwremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYmludC5tZWQtY29udGVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmJpb3BheC5yZGYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ibGluay1pZGItdmFsdWUtd3JhcHBlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmJsdWVpY2UubXVsdGlwYXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXBtXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ibHVldG9vdGguZXAub29iXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYmx1ZXRvb3RoLmxlLm9vYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmJtaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJtaVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYnBmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYnBmM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmJ1c2luZXNzb2JqZWN0c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJlcFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYnl1LnVhcGkranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYnppcDNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jM3ZvYy5zY2hlZHVsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNhYi1qc2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2Fub24tY3BkbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNhbm9uLWxpcHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jYXBhc3lzdGVtcy1wZytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jZW5kaW8udGhpbmxpbmMuY2xpZW50Y29uZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNlbnR1cnktc3lzdGVtcy50Y3Bfc3RyZWFtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2hlbWRyYXcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZHhtbFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2hlc3MtcGduXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2hpcG51dHMua2FyYW9rZS1tbWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtbWRcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNpZWRpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2luZGVyZWxsYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNkeVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2lycGFjay5pc2RuLWV4dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNpdGF0aW9uc3R5bGVzLnN0eWxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3NsXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jbGF5bW9yZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNsYVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2xvYW50by5ycDlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJycDlcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNsb25rLmM0Z3JvdXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjNGdcIiwgXCJjNGRcIiwgXCJjNGZcIiwgXCJjNHBcIiwgXCJjNHVcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNsdWV0cnVzdC5jYXJ0b21vYmlsZS1jb25maWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjMTFhbWNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNsdWV0cnVzdC5jYXJ0b21vYmlsZS1jb25maWctcGtnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYzExYW16XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jbmNmLmhlbG0uY2hhcnQuY29udGVudC52MS50YXIrZ3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNuY2YuaGVsbS5jaGFydC5wcm92ZW5hbmNlLnYxLnByb3ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jbmNmLmhlbG0uY29uZmlnLnYxK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNvZmZlZXNjcmlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNvbGxhYmlvLnhvZG9jdW1lbnRzLmRvY3VtZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY29sbGFiaW8ueG9kb2N1bWVudHMuZG9jdW1lbnQtdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb2xsYWJpby54b2RvY3VtZW50cy5wcmVzZW50YXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb2xsYWJpby54b2RvY3VtZW50cy5wcmVzZW50YXRpb24tdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb2xsYWJpby54b2RvY3VtZW50cy5zcHJlYWRzaGVldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNvbGxhYmlvLnhvZG9jdW1lbnRzLnNwcmVhZHNoZWV0LXRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY29sbGVjdGlvbitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb2xsZWN0aW9uLmRvYytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb2xsZWN0aW9uLm5leHQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY29taWNib29rK3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNvbWljYm9vay1yYXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb21tZXJjZS1iYXR0ZWxsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNvbW1vbnNwYWNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3NwXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb250YWN0LmNtc2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZGJjbXNnXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb3Jlb3MuaWduaXRpb24ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY29zbW9jYWxsZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbWNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbGt4XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyLmtleWJvYXJkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2xra1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlci5wYWxldHRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2xrcFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlci50ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNsa3RcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIud29yZGJhbmtcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbGt3XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jcml0aWNhbHRvb2xzLndicyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndic1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3J5cHRpaS5waXBlK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNyeXB0by1zaGFkZS1maWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3J5cHRvbWF0b3IuZW5jcnlwdGVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3J5cHRvbWF0b3IudmF1bHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jdGMtcG9zbWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwbWxcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN0Y3Qud3MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jdXBzLXBkZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN1cHMtcG9zdHNjcmlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN1cHMtcHBkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHBkXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jdXBzLXJhc3RlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN1cHMtcmF3XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3VybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN1cmwuY2FyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjYXJcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN1cmwucGN1cmxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBjdXJsXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jeWFuLmRlYW4ucm9vdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN5YmFua1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN5Y2xvbmVkeCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jeWNsb25lZHgreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kMmwuY291cnNlcGFja2FnZTFwMCt6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kM20tZGF0YXNldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmQzbS1wcm9ibGVtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZGFydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGFydFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZGF0YS12aXNpb24ucmR6XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmR6XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kYXRhbG9nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZGF0YXBhY2thZ2UranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZGF0YXJlc291cmNlK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRiZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRiZlwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZGViaWFuLmJpbmFyeS1wYWNrYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZGVjZS5kYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZmXCIsIFwidXZ2ZlwiLCBcInV2ZFwiLCBcInV2dmRcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRlY2UudHRtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2dFwiLCBcInV2dnRcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRlY2UudW5zcGVjaWZpZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dnhcIiwgXCJ1dnZ4XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kZWNlLnppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2elwiLCBcInV2dnpcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRlbm92by5mY3NlbGF5b3V0LWxpbmtcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmZV9sYXVuY2hcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRlc211bWUubW92aWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kaXItYmkucGxhdGUtZGwtbm9zdWZmaXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kbS5kZWxlZ2F0aW9uK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZG5hXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZG5hXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kb2N1bWVudCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kb2xieS5tbHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1scFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZG9sYnkubW9iaWxlLjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kb2xieS5tb2JpbGUuMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRvcmVtaXIuc2NvcmVjbG91ZC1iaW5hcnktZG9jdW1lbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kcGdyYXBoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHBnXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kcmVhbWZhY3RvcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkZmFjXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kcml2ZStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kcy1rZXlwb2ludFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia3B4eFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHRnLmxvY2FsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHRnLmxvY2FsLmZsYXNoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHRnLmxvY2FsLmh0bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuYWl0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWl0XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuZHZiaXNsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLmR2YmpcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuZXNnY29udGFpbmVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLmlwZGNkZnRub3RpZmFjY2Vzc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5pcGRjZXNnYWNjZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLmlwZGNlc2dhY2Nlc3MyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLmlwZGNlc2dwZGRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXBkY3JvYW1pbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXB0di5hbGZlYy1iYXNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLmlwdHYuYWxmZWMtZW5oYW5jZW1lbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIubm90aWYtYWdncmVnYXRlLXJvb3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIubm90aWYtY29udGFpbmVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLm5vdGlmLWdlbmVyaWMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIubm90aWYtaWEtbXNnbGlzdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5ub3RpZi1pYS1yZWdpc3RyYXRpb24tcmVxdWVzdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5ub3RpZi1pYS1yZWdpc3RyYXRpb24tcmVzcG9uc2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIubm90aWYtaW5pdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5wZnJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuc2VydmljZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN2Y1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHhyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHluYWdlb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdlb1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHpyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZWFzeWthcmFva2UuY2RnZG93bmxvYWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lY2Rpcy11cGRhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lY2lwLnJscFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVjbGlwc2UuZGl0dG8ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZWNvd2luLmNoYXJ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWFnXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lY293aW4uZmlsZXJlcXVlc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lY293aW4uZmlsZXVwZGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVjb3dpbi5zZXJpZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lY293aW4uc2VyaWVzcmVxdWVzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVjb3dpbi5zZXJpZXN1cGRhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lZmkuaW1nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZWZpLmlzb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVsbit6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lbWNsaWVudC5hY2Nlc3NyZXF1ZXN0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZW5saXZlblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5tbFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZW5waGFzZS5lbnZveVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVwcmludHMuZGF0YSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVwc29uLmVzZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVzZlwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXBzb24ubXNmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXNmXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lcHNvbi5xdWlja2FuaW1lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicWFtXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lcHNvbi5zYWx0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2x0XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lcHNvbi5zc2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzc2ZcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVyaWNzc29uLnF1aWNrY2FsbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVyb2ZzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXNwYXNzLWVzcGFzcyt6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lc3ppZ25vMyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVzM1wiLCBcImV0M1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5hb2MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmFzaWMtZSt6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmFzaWMtcyt6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmN1Zyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dmNvbW1hbmQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZkaXNjb3ZlcnkreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZwcm9maWxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2c2FkLWJjK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2c2FkLWNvZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dnNhZC1ucHZyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2c2VydmljZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dnN5bmMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZ1ZXByb2ZpbGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLm1jaWQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLm1oZWc1XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5vdmVybG9hZC1jb250cm9sLXBvbGljeS1kYXRhc2V0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5wc3RuK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5zY2kreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLnNpbXNlcnZzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS50aW1lc3RhbXAtdG9rZW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLnRzbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kudHNsLmRlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV1Lmthc3Bhcmlhbi5jYXIranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXVkb3JhLmRhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldm9sdi5lY2lnLnByb2ZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldm9sdi5lY2lnLnNldHRpbmdzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXZvbHYuZWNpZy50aGVtZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV4c3RyZWFtLWVtcG93ZXIremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXhzdHJlYW0tcGFja2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV6cGl4LWFsYnVtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXoyXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lenBpeC1wYWNrYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXozXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mLXNlY3VyZS5tb2JpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mYW1pbHlzZWFyY2guZ2VkY29tK3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZhc3Rjb3B5LWRpc2staW1hZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mZGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZkZlwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZmRzbi5tc2VlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1zZWVkXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mZHNuLnNlZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZWVkXCIsIFwiZGF0YWxlc3NcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZmc25zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZmljbGFiLmZsYit6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5maWxtaXQuemZjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZmludHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5maXJlbW9ua2V5cy5jbG91ZGNlbGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mbG9ncmFwaGl0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3BoXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mbHV4dGltZS5jbGlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZnRjXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mb250LWZvbnRmb3JnZS1zZmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mcmFtZW1ha2VyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZm1cIiwgXCJmcmFtZVwiLCBcIm1ha2VyXCIsIFwiYm9va1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnJlZWxvZy5jb21pY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZyb2dhbnMuZm5jXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmbmNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZyb2dhbnMubHRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsdGZcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZzYy53ZWJsYXVuY2hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmc2NcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1amlmaWxtLmZiLmRvY3V3b3Jrc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1amlmaWxtLmZiLmRvY3V3b3Jrcy5iaW5kZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdWppZmlsbS5mYi5kb2N1d29ya3MuY29udGFpbmVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaWZpbG0uZmIuamZpK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9hc1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5czJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvYTJcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXMzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2EzXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdWppdHN1Lm9hc3lzZ3BcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmZzVcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXNwcnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJiaDJcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5hcnQtZXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdWppeGVyb3guYXJ0NFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kZGRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkZGRcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kb2N1d29ya3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4ZHdcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kb2N1d29ya3MuYmluZGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGJkXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdWppeGVyb3guZG9jdXdvcmtzLmNvbnRhaW5lclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5oYnBsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnV0LW1pc25ldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1dG9pbitjYm9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnV0b2luK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1enp5c2hlZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmenNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdhNGdoLnBhc3Nwb3J0K2p3dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdlbm9tYXRpeC50dXhlZG9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0eGRcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdlbm96aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW50aWNzLmdyZCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW50b28uY2F0bWV0YWRhdGEreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW50b28uZWJ1aWxkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2VudG9vLmVjbGFzc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdlbnRvby5ncGtnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2VudG9vLm1hbmlmZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2VudG9vLnBrZ21ldGFkYXRhK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2VudG9vLnhwYWtcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW8ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW9jdWJlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW9nZWJyYS5maWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2diXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW9nZWJyYS5zbGlkZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnZ3NcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdlb2dlYnJhLnRvb2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnZ3RcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdlb21ldHJ5LWV4cGxvcmVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2V4XCIsIFwiZ3JlXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW9uZXh0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3h0XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW9wbGFuXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZzJ3XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW9zcGFjZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImczd1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2VyYmVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2xvYmFscGxhdGZvcm0uY2FyZC1jb250ZW50LW1ndFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdsb2JhbHBsYXRmb3JtLmNhcmQtY29udGVudC1tZ3QtcmVzcG9uc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nbXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnbXhcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdudS50YWxlci5leGNoYW5nZStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nbnUudGFsZXIubWVyY2hhbnQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuZG9jdW1lbnRcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnZG9jXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5wcmVzZW50YXRpb25cIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnc2xpZGVzXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5zcHJlYWRzaGVldFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdzaGVldFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWVhcnRoLmttbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImttbFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWVhcnRoLmttelwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImttelwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ292LnNrLmUtZm9ybSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ292LnNrLmUtZm9ybSt6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nb3Yuc2sueG1sZGF0YWNvbnRhaW5lcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhkY2ZcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdweHNlZS5tYXAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ncmFmZXFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJncWZcIiwgXCJncXNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdyaWRtcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdyb292ZS1hY2NvdW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2FjXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtaGVscFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdoZlwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLWlkZW50aXR5LW1lc3NhZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnaW1cIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdyb292ZS1pbmplY3RvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdydlwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLXRvb2wtbWVzc2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImd0bVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLXRvb2wtdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0cGxcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdyb292ZS12Y2FyZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZjZ1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaGFsK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhhbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhhbFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaGFuZGhlbGQtZW50ZXJ0YWlubWVudCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInptbVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaGJjaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhiY2lcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhjK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhjbC1iaXJlcG9ydHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5oZHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5oZXJva3UranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaGhlLmxlc3Nvbi1wbGF5ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsZXNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhwLWhwZ2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJocGdsXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ocC1ocGlkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHBpZFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaHAtaHBzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHBzXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ocC1qbHl0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiamx0XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ocC1wY2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwY2xcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhwLXBjbHhsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGNseGxcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhzbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmh0dHBob25lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaHlkcm9zdGF0aXguc29mLWRhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZmQtaGRzdHhcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmh5cGVyK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmh5cGVyLWl0ZW0ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaHlwZXJkcml2ZStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5oem4tM2QtY3Jvc3N3b3JkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaWJtLmFmcGxpbmVkYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pYm0uZWxlY3Ryb25pYy1tZWRpYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlibS5taW5pcGF5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXB5XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pYm0ubW9kY2FwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhZnBcIiwgXCJsaXN0YWZwXCIsIFwibGlzdDM4MjBcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlibS5yaWdodHMtbWFuYWdlbWVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlybVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaWJtLnNlY3VyZS1jb250YWluZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzY1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaWNjcHJvZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImljY1wiLCBcImljbVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaWVlZS4xOTA1XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaWdsb2FkZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpZ2xcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltYWdlbWV0ZXIuZm9sZGVyK3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltYWdlbWV0ZXIuaW1hZ2UremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW1tZXJ2aXNpb24taXZwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaXZwXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbW1lcnZpc2lvbi1pdnVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpdnVcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltcy5pbXNjY3YxcDFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbXMuaW1zY2N2MXAyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW1zLmltc2NjdjFwM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltcy5saXMudjIucmVzdWx0K2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltcy5sdGkudjIudG9vbGNvbnN1bWVycHJvZmlsZStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbXMubHRpLnYyLnRvb2xwcm94eStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbXMubHRpLnYyLnRvb2xwcm94eS5pZCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbXMubHRpLnYyLnRvb2xzZXR0aW5ncytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbXMubHRpLnYyLnRvb2xzZXR0aW5ncy5zaW1wbGUranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW5mb3JtZWRjb250cm9sLnJtcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmluZm9ybWl4LXZpc2lvbmFyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW5mb3RlY2gucHJvamVjdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmluZm90ZWNoLnByb2plY3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbm5vcGF0aC53YW1wLm5vdGlmaWNhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmluc29ycy5pZ21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpZ21cIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmludGVyY29uLmZvcm1uZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4cHdcIiwgXCJ4cHhcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmludGVyZ2VvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaTJnXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbnRlcnRydXN0LmRpZ2lib3hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbnRlcnRydXN0Lm5uY3BcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbnR1LnFib1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInFib1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW50dS5xZnhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJxZnhcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlwZnMuaXBucy1yZWNvcmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pcGxkLmNhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlwbGQuZGFnLWNib3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pcGxkLmRhZy1qc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaXBsZC5yYXdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pcHRjLmcyLmNhdGFsb2dpdGVtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaXB0Yy5nMi5jb25jZXB0aXRlbSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIua25vd2xlZGdlaXRlbSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIubmV3c2l0ZW0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pcHRjLmcyLm5ld3NtZXNzYWdlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaXB0Yy5nMi5wYWNrYWdlaXRlbSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIucGxhbm5pbmdpdGVtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaXB1bnBsdWdnZWQucmNwcm9maWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmNwcm9maWxlXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pcmVwb3NpdG9yeS5wYWNrYWdlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaXJwXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pcy14cHJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4cHJcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlzYWMuZmNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmNzXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pc28xMTc4My0xMCt6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qYW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqYW1cIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmphcGFubmV0LWRpcmVjdG9yeS1zZXJ2aWNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtanBuc3RvcmUtd2FrZXVwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtcGF5bWVudC13YWtldXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qYXBhbm5ldC1yZWdpc3RyYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qYXBhbm5ldC1yZWdpc3RyYXRpb24td2FrZXVwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtc2V0c3RvcmUtd2FrZXVwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtdmVyaWZpY2F0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtdmVyaWZpY2F0aW9uLXdha2V1cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmpjcC5qYXZhbWUubWlkbGV0LXJtc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJtc1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamlzcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImppc3BcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmpvb3N0LmpvZGEtYXJjaGl2ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpvZGFcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmpzay5pc2RuLW5nblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmthaG9vdHpcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJrdHpcIiwgXCJrdHJcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtkZS5rYXJib25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJrYXJib25cIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtkZS5rY2hhcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjaHJ0XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5rZGUua2Zvcm11bGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJrZm9cIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtkZS5raXZpb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZsd1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua2RlLmtvbnRvdXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJrb25cIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtkZS5rcHJlc2VudGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia3ByXCIsIFwia3B0XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5rZGUua3NwcmVhZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImtzcFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua2RlLmt3b3JkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia3dkXCIsIFwia3d0XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5rZW5hbWVhYXBwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHRrZVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua2lkc3BpcmF0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia2lhXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5raW5hclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImtuZVwiLCBcImtucFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua29hblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNrcFwiLCBcInNrZFwiLCBcInNrdFwiLCBcInNrbVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua29kYWstZGVzY3JpcHRvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNzZVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubGFzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubGFzLmxhcytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sYXMubGFzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibGFzeG1sXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sYXN6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sZGV2LnByb2R1Y3RsaWNlbnNpbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sZWFwK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxpYmVydHktcmVxdWVzdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxsYW1hZ3JhcGhpY3MubGlmZS1iYWxhbmNlLmRlc2t0b3BcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsYmRcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxsYW1hZ3JhcGhpY3MubGlmZS1iYWxhbmNlLmV4Y2hhbmdlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibGJlXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sb2dpcGlwZS5jaXJjdWl0K3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxvb21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy0xLTItM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIjEyM1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubG90dXMtYXBwcm9hY2hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhcHJcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLWZyZWVsYW5jZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInByZVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubG90dXMtbm90ZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJuc2ZcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLW9yZ2FuaXplclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9yZ1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubG90dXMtc2NyZWVuY2FtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2NtXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy13b3JkcHJvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibHdwXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tYWNwb3J0cy5wb3J0cGtnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicG9ydHBrZ1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWFwYm94LXZlY3Rvci10aWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXZ0XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tYXJsaW4uZHJtLmFjdGlvbnRva2VuK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWFybGluLmRybS5jb25mdG9rZW4reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tYXJsaW4uZHJtLmxpY2Vuc2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tYXJsaW4uZHJtLm1kY2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tYXNvbitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tYXhhci5hcmNoaXZlLjN0eit6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tYXhtaW5kLm1heG1pbmQtZGJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tY2RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtY2RcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1kbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1kbC1tYnNkZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1lZGNhbGNkYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWMxXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tZWRpYXN0YXRpb24uY2RrZXlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZGtleVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWVkaWNhbGhvbG9kZWNrLnJlY29yZHhyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWVyaWRpYW4tc2xpbmdzaG90XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWVybWFpZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1mZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtd2ZcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1mbXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtZm1cIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1pY3JvK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1pY3JvZ3JhZnguZmxvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmxvXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb2dyYWZ4LmlneFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlneFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LnBvcnRhYmxlLWV4ZWN1dGFibGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQud2luZG93cy50aHVtYm5haWwtY2FjaGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5taWVsZStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5taWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtaWZcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1pbmlzb2Z0LWhwMzAwMC1zYXZlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWl0c3ViaXNoaS5taXN0eS1ndWFyZC50cnVzdHdlYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5kYWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkYWZcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5kaXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkaXNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5tYmtcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtYmtcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5tcXlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcXlcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5tc2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtc2xcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5wbGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwbGNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy50eGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0eGZcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vZGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3BodW4uYXBwbGljYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcG5cIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vcGh1bi5jZXJ0aWZpY2F0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1wY1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW90b3JvbGEuZmxleHN1aXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW90b3JvbGEuZmxleHN1aXRlLmFkc2lcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5mbGV4c3VpdGUuZmlzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW90b3JvbGEuZmxleHN1aXRlLmdvdGFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW90b3JvbGEuZmxleHN1aXRlLmttclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vdG9yb2xhLmZsZXhzdWl0ZS50dGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5mbGV4c3VpdGUud2VtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW90b3JvbGEuaXBybVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vemlsbGEueHVsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHVsXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy0zbWZkb2N1bWVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWFydGdhbHJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2lsXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1hc2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1jYWItY29tcHJlc3NlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNhYlwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtY29sb3IuaWNjcHJvZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bHNcIiwgXCJ4bG1cIiwgXCJ4bGFcIiwgXCJ4bGNcIiwgXCJ4bHRcIiwgXCJ4bHdcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmFkZGluLm1hY3JvZW5hYmxlZC4xMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhsYW1cIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0LmJpbmFyeS5tYWNyb2VuYWJsZWQuMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bHNiXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5tYWNyb2VuYWJsZWQuMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bHNtXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC50ZW1wbGF0ZS5tYWNyb2VuYWJsZWQuMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bHRtXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1mb250b2JqZWN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlb3RcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWh0bWxoZWxwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2htXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1pbXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpbXNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWxybVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImxybVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmFjdGl2ZXgreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2V0aGVtZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRobXhcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLW9wZW50eXBlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLW91dGxvb2tcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtc2dcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXBhY2thZ2Uub2JmdXNjYXRlZC1vcGVudHlwZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcGtpLnNlY2NhdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2F0XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wa2kuc3RsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdGxcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXBsYXlyZWFkeS5pbml0aWF0b3IreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHB0XCIsIFwicHBzXCIsIFwicG90XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LmFkZGluLm1hY3JvZW5hYmxlZC4xMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBwYW1cIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQucHJlc2VudGF0aW9uLm1hY3JvZW5hYmxlZC4xMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBwdG1cIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQuc2xpZGUubWFjcm9lbmFibGVkLjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2xkbVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5zbGlkZXNob3cubWFjcm9lbmFibGVkLjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHBzbVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC50ZW1wbGF0ZS5tYWNyb2VuYWJsZWQuMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwb3RtXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wcmludGRldmljZWNhcGFiaWxpdGllcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXByaW50aW5nLnByaW50dGlja2V0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wcmludHNjaGVtYXRpY2tldCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXByb2plY3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcHBcIiwgXCJtcHRcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXRuZWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13aW5kb3dzLmRldmljZXBhaXJpbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13aW5kb3dzLm53cHJpbnRpbmcub29iXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd2luZG93cy5wcmludGVycGFpcmluZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXdpbmRvd3Mud3NkLm9vYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXdtZHJtLmxpYy1jaGxnLXJlcVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXdtZHJtLmxpYy1yZXNwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd21kcm0ubWV0ZXItY2hsZy1yZXFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13bWRybS5tZXRlci1yZXNwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd29yZC5kb2N1bWVudC5tYWNyb2VuYWJsZWQuMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkb2NtXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13b3JkLnRlbXBsYXRlLm1hY3JvZW5hYmxlZC4xMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRvdG1cIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmtzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid3BzXCIsIFwid2tzXCIsIFwid2NtXCIsIFwid2RiXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13cGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3cGxcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXhwc2RvY3VtZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHBzXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tc2EtZGlzay1pbWFnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zZXFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtc2VxXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tc2dwYWNrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXNpZ25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tdWx0aWFkLmNyZWF0b3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tdWx0aWFkLmNyZWF0b3IuY2lmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXVzaWMtbmlmZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm11c2ljaWFuXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXVzXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tdXZlZS5zdHlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1zdHlcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm15bmZjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGFnbGV0XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5uYWNhbWFyLnlicmlkK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5hdG8uYmluZGluZ2RhdGFvYmplY3QrY2JvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5hdG8uYmluZGluZ2RhdGFvYmplY3QranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubmF0by5iaW5kaW5nZGF0YW9iamVjdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJkb1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubmF0by5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLmllcGQremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubmNkLmNvbnRyb2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5uY2QucmVmZXJlbmNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubmVhcnN0Lmluditqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5uZWJ1bWluZC5saW5lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubmVydmFuYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5ldGZweFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5ldXJvbGFuZ3VhZ2Uubmx1XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibmx1XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5uaW1uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubmludGVuZG8ubml0cm8ucm9tXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubmludGVuZG8uc25lcy5yb21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5uaXRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibnRmXCIsIFwibml0ZlwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9ibGVuZXQtZGlyZWN0b3J5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibm5kXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2JsZW5ldC1zZWFsZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJubnNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5vYmxlbmV0LXdlYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5ud1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEuY2F0YWxvZ3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5jb25tbCt3YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLmNvbm1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEuaXB0di5jb25maWcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5pc2RzLXJhZGlvLXByZXNldHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5sYW5kbWFyayt3YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLmxhbmRtYXJrK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEubGFuZG1hcmtjb2xsZWN0aW9uK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEubi1nYWdlLmFjK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLm4tZ2FnZS5kYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibmdkYXRcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLm4tZ2FnZS5zeW1iaWFuLmluc3RhbGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm4tZ2FnZVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEubmNkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEucGNkK3dieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEucGNkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEucmFkaW8tcHJlc2V0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnBzdFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEucmFkaW8tcHJlc2V0c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJwc3NcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5vdmFkaWdtLmVkbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVkbVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm92YWRpZ20uZWR4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZWR4XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub3ZhZGlnbS5leHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJleHRcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm50dC1sb2NhbC5jb250ZW50LXNoYXJlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubnR0LWxvY2FsLmZpbGUtdHJhbnNmZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5udHQtbG9jYWwub2d3X3JlbW90ZS1hY2Nlc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5udHQtbG9jYWwuc2lwLXRhX3JlbW90ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm50dC1sb2NhbC5zaXAtdGFfdGNwX3N0cmVhbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9haS53b3JrZmxvd3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYWkud29ya2Zsb3dzK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9haS53b3JrZmxvd3MreWFtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5iYXNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmNoYXJ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2RjXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuY2hhcnQtdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvdGNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5kYXRhYmFzZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2RiXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZm9ybXVsYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9kZlwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmZvcm11bGEtdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZGZ0XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZ3JhcGhpY3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZGdcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5ncmFwaGljcy10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm90Z1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmltYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2RpXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuaW1hZ2UtdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvdGlcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZHBcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb24tdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvdHBcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9kc1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0LXRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3RzXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9kdFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQtbWFzdGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2RtXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dC1tYXN0ZXItdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dC10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm90dFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQtd2ViXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3RoXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYm5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vY2YrY2JvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9jaS5pbWFnZS5tYW5pZmVzdC52MStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vZnRuLmwxMG4ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2lwZi5jb250ZW50YWNjZXNzZG93bmxvYWQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLmNvbnRlbnRhY2Nlc3NzdHJlYW1pbmcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLmNzcGctaGV4YmluYXJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2lwZi5kYWUuc3ZnK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2lwZi5kYWUueGh0bWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLm1pcHB2Y29udHJvbG1lc3NhZ2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLnBhZS5nZW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLnNwZGlzY292ZXJ5K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2lwZi5zcGRsaXN0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2lwZi51ZXByb2ZpbGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLnVzZXJwcm9maWxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2xwYy1zdWdhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhvXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEtc2N3cy1jb25maWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEtc2N3cy1odHRwLXJlcXVlc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEtc2N3cy1odHRwLXJlc3BvbnNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LmFzc29jaWF0ZWQtcHJvY2VkdXJlLXBhcmFtZXRlcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5kcm0tdHJpZ2dlcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LmltZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5sdGttXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0Lm5vdGlmaWNhdGlvbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5wcm92aXNpb25pbmd0cmlnZ2VyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnNnYm9vdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5zZ2RkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnNnZHVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3Quc2ltcGxlLXN5bWJvbC1jb250YWluZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3Quc21hcnRjYXJkLXRyaWdnZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5zcHJvdit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5zdGttXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmNhYi1hZGRyZXNzLWJvb2sreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuY2FiLWZlYXR1cmUtaGFuZGxlcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5jYWItcGNjK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmNhYi1zdWJzLWludml0ZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5jYWItdXNlci1wcmVmcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5kY2RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuZGNkY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5kZDIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkZDJcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5kcm0ucmlzZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5ncm91cC11c2FnZS1saXN0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmx3bTJtK2Nib3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEubHdtMm0ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmx3bTJtK3RsdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5wYWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEucG9jLmRldGFpbGVkLXByb2dyZXNzLXJlcG9ydCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5wb2MuZmluYWwtcmVwb3J0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLnBvYy5ncm91cHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEucG9jLmludm9jYXRpb24tZGVzY3JpcHRvcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5wb2Mub3B0aW1pemVkLXByb2dyZXNzLXJlcG9ydCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5wdXNoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLnNjaWRtLm1lc3NhZ2VzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLnhjYXAtZGlyZWN0b3J5K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hZHMtZW1haWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYWRzLWZpbGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYWRzLWZvbGRlcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hbG9jLXN1cGwtaW5pdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9uZXBhZ2VyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub25lcGFnZXJ0YW1wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub25lcGFnZXJ0YW14XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub25lcGFnZXJ0YXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbmVwYWdlcnRhdHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbmVwYWdlcnRhdHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbnZpZi5tZXRhZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW5ibG94LmdhbWUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvYmd4XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVuYmxveC5nYW1lLWJpbmFyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW5leWUub2ViXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3Blbm9mZmljZW9yZy5leHRlbnNpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm94dFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnN0cmVldG1hcC5kYXRhK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3NtXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVudGltZXN0YW1wcy5vdHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5jdXN0b20tcHJvcGVydGllcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmN1c3RvbXhtbHByb3BlcnRpZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmNoYXJ0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmNoYXJ0c2hhcGVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1jb2xvcnMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbWRhdGEreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbWxheW91dCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtc3R5bGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5leHRlbmRlZC1wcm9wZXJ0aWVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuY29tbWVudGF1dGhvcnMreG1sXCI6XG4gICAge1xuICAgICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLmNvbW1lbnRzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuaGFuZG91dG1hc3Rlcit4bWxcIjpcbiAgICB7XG4gICAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwubm90ZXNtYXN0ZXIreG1sXCI6XG4gICAge1xuICAgICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLm5vdGVzc2xpZGUreG1sXCI6XG4gICAge1xuICAgICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBwdHhcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbi5tYWluK3htbFwiOlxuICAgIHtcbiAgICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzcHJvcHMreG1sXCI6XG4gICAge1xuICAgICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2xkeFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZWxheW91dCt4bWxcIjpcbiAgICB7XG4gICAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGVtYXN0ZXIreG1sXCI6XG4gICAge1xuICAgICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlc2hvd1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBwc3hcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlc2hvdy5tYWluK3htbFwiOlxuICAgIHtcbiAgICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZXVwZGF0ZWluZm8reG1sXCI6XG4gICAge1xuICAgICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnRhYmxlc3R5bGVzK3htbFwiOlxuICAgIHtcbiAgICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC50YWdzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwudGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwb3R4XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC50ZW1wbGF0ZS5tYWluK3htbFwiOlxuICAgIHtcbiAgICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC52aWV3cHJvcHMreG1sXCI6XG4gICAge1xuICAgICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY2FsY2NoYWluK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jaGFydHNoZWV0K3htbFwiOlxuICAgIHtcbiAgICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNvbW1lbnRzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jb25uZWN0aW9ucyt4bWxcIjpcbiAgICB7XG4gICAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5kaWFsb2dzaGVldCt4bWxcIjpcbiAgICB7XG4gICAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5leHRlcm5hbGxpbmsreG1sXCI6XG4gICAge1xuICAgICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3RjYWNoZWRlZmluaXRpb24reG1sXCI6XG4gICAge1xuICAgICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3RjYWNoZXJlY29yZHMreG1sXCI6XG4gICAge1xuICAgICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3R0YWJsZSt4bWxcIjpcbiAgICB7XG4gICAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5xdWVyeXRhYmxlK3htbFwiOlxuICAgIHtcbiAgICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnJldmlzaW9uaGVhZGVycyt4bWxcIjpcbiAgICB7XG4gICAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5yZXZpc2lvbmxvZyt4bWxcIjpcbiAgICB7XG4gICAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGFyZWRzdHJpbmdzK3htbFwiOlxuICAgIHtcbiAgICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGxzeFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldC5tYWluK3htbFwiOlxuICAgIHtcbiAgICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0bWV0YWRhdGEreG1sXCI6XG4gICAge1xuICAgICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc3R5bGVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50YWJsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGFibGVzaW5nbGVjZWxscyt4bWxcIjpcbiAgICB7XG4gICAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhsdHhcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGVtcGxhdGUubWFpbit4bWxcIjpcbiAgICB7XG4gICAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC51c2VybmFtZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnZvbGF0aWxlZGVwZW5kZW5jaWVzK3htbFwiOlxuICAgIHtcbiAgICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLndvcmtzaGVldCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnRoZW1lK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQudGhlbWVvdmVycmlkZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnZtbGRyYXdpbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmNvbW1lbnRzK3htbFwiOlxuICAgIHtcbiAgICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZG9jeFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudC5nbG9zc2FyeSt4bWxcIjpcbiAgICB7XG4gICAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudC5tYWluK3htbFwiOlxuICAgIHtcbiAgICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmVuZG5vdGVzK3htbFwiOlxuICAgIHtcbiAgICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmZvbnR0YWJsZSt4bWxcIjpcbiAgICB7XG4gICAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5mb290ZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmZvb3Rub3Rlcyt4bWxcIjpcbiAgICB7XG4gICAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5udW1iZXJpbmcreG1sXCI6XG4gICAge1xuICAgICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuc2V0dGluZ3MreG1sXCI6XG4gICAge1xuICAgICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuc3R5bGVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC50ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRvdHhcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwudGVtcGxhdGUubWFpbit4bWxcIjpcbiAgICB7XG4gICAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC53ZWJzZXR0aW5ncyt4bWxcIjpcbiAgICB7XG4gICAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5jb3JlLXByb3BlcnRpZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLmRpZ2l0YWwtc2lnbmF0dXJlLXhtbHNpZ25hdHVyZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLXBhY2thZ2UucmVsYXRpb25zaGlwcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9yYWNsZS5yZXNvdXJjZStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcmFuZ2UuaW5kYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3NhLm5ldGRlcGxveVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9zZ2VvLm1hcGd1aWRlLnBhY2thZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtZ3BcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9zZ2kuYnVuZGxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3NnaS5kcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRwXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vc2dpLnN1YnN5c3RlbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVzYVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3Rwcy5jdC1raXAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5veGxpLmNvdW50Z3JhcGhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wYWdlcmR1dHkranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucGFsbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBkYlwiLCBcInBxYVwiLCBcIm9wcmNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBhbm9wbHlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wYW9zLnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBhdGVudGRpdmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wYXRpZW50ZWNvbW1zZG9jXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucGF3YWFmaWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGF3XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wY29zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucGcuZm9ybWF0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3RyXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wZy5vc2FzbGlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlaTZcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBpYWNjZXNzLmFwcGxpY2F0aW9uLWxpY2VuY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5waWNzZWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlZmlmXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wbWkud2lkZ2V0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2dcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBvYy5ncm91cC1hZHZlcnRpc2VtZW50K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucG9ja2V0bGVhcm5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwbGZcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBvd2VyYnVpbGRlcjZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwYmRcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBvd2VyYnVpbGRlcjYtc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBvd2VyYnVpbGRlcjdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wb3dlcmJ1aWxkZXI3LXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wb3dlcmJ1aWxkZXI3NVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBvd2VyYnVpbGRlcjc1LXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wcmVtaW5ldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnByZXZpZXdzeXN0ZW1zLmJveFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJveFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucHJvdGV1cy5tYWdhemluZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1nelwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucHNmc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnB0Lm11bmR1c211bmRpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucHVibGlzaGFyZS1kZWx0YS10cmVlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicXBzXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wdmkucHRpZDFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwdGlkXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wd2ctbXVsdGlwbGV4ZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wd2cteGh0bWwtcHJpbnQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4aHRtXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5xdWFsY29tbS5icmV3LWFwcC1yZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5xdWFyYW50YWluZW5ldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnF1YXJrLnF1YXJreHByZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicXhkXCIsIFwicXh0XCIsIFwicXdkXCIsIFwicXd0XCIsIFwicXhsXCIsIFwicXhiXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5xdW9iamVjdC1xdW94ZG9jdW1lbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1vbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtYXVkaXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtYXVkaXQtY29uZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1hdWRpdC1jb25uK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWF1ZGl0LWRpYWxvZyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1hdWRpdC1zdHJlYW0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtY29uZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1kaWFsb2creG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtZGlhbG9nLWJhc2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtZGlhbG9nLWZheC1kZXRlY3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtZGlhbG9nLWZheC1zZW5kcmVjdit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1kaWFsb2ctZ3JvdXAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtZGlhbG9nLXNwZWVjaCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1kaWFsb2ctdHJhbnNmb3JtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFpbnN0b3IuZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhcGlkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmFyXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yZWFsdm5jLmJlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJlZFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmVjb3JkYXJlLm11c2ljeG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXhsXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yZWNvcmRhcmUubXVzaWN4bWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtdXNpY3htbFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmVscGlwZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJlbmxlYXJuLnJscHJpbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yZXNpbGllbnQubG9naWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yZXN0ZnVsK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJpZy5jcnlwdG9ub3RlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3J5cHRvbm90ZVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmltLmNvZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY29kXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ybi1yZWFsbWVkaWFcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJtXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ybi1yZWFsbWVkaWEtdmJyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJybXZiXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yb3V0ZTY2Lmxpbms2Nit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImxpbms2NlwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucnMtMjc0eFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJ1Y2t1cy5kb3dubG9hZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnMzc21zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2FpbGluZ3RyYWNrZXIudHJhY2tcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2FyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2JtLmNpZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNibS5taWQyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2NyaWJ1c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC4zZGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQuY3NmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkLmRvY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC5lbWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQubWh0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkLm5ldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC5wcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQudGlmZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC54bHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWRtZWRpYS5zb2Z0c2VhbC5odG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkbWVkaWEuc29mdHNlYWwucGRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VlbWFpbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNlZVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2Vpcytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZW1hXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2VtYVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VtZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNlbWRcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlbWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZW1mXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zaGFkZS1zYXZlLWZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5mb3JtZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlmbVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2hhbmEuaW5mb3JtZWQuZm9ybXRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaXRwXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5pbnRlcmNoYW5nZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlpZlwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2hhbmEuaW5mb3JtZWQucGFja2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlwa1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2hvb3Rwcm9vZitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zaG9wa2ljaytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zaHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zaHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zaWdyb2suc2Vzc2lvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNpbXRlY2gtbWluZG1hcHBlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInR3ZFwiLCBcInR3ZHNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNpcmVuK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNtYWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtbWZcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNtYXJ0Lm5vdGVib29rXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc21hcnQudGVhY2hlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRlYWNoZXJcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNtaW50aW8ucG9ydGFscy5hcmNoaXZlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc25lc2Rldi1wYWdlLXRhYmxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc29mdHdhcmU2MDIuZmlsbGVyLmZvcm0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmb1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc29mdHdhcmU2MDIuZmlsbGVyLmZvcm0teG1sLXppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNvbGVudC5zZGttK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2RrbVwiLCBcInNka2RcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNwb3RmaXJlLmR4cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImR4cFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3BvdGZpcmUuc2ZzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2ZzXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zcWxpdGUzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3NzLWNvZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNzcy1kdGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zc3MtbnRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmNhbGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNkY1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmRyYXdcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNkYVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmltcHJlc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNkZFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLm1hdGhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNtZlwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLndyaXRlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2R3XCIsIFwidm9yXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24ud3JpdGVyLWdsb2JhbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2dsXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdGVwbWFuaWEucGFja2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNtemlwXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdGVwbWFuaWEuc3RlcGNoYXJ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic21cIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN0cmVldC1zdHJlYW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdW4ud2FkbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndhZGxcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuY2FsY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3hjXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmNhbGMudGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN0Y1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5kcmF3XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzeGRcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuZHJhdy50ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3RkXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmltcHJlc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN4aVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5pbXByZXNzLnRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdGlcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwubWF0aFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3htXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3h3XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlci5nbG9iYWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN4Z1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC53cml0ZXIudGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN0d1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VzLWNhbGVuZGFyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3VzXCIsIFwic3VzcFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3ZkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3ZkXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zd2lmdHZpZXctaWNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3lieWwubW9sMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5Y2xlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3lmdCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zeW1iaWFuLmluc3RhbGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNpc1wiLCBcInNpc3hcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHNtXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG0rd2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJkbVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4ZG1cIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbS5ub3RpZmljYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG1kZGYrd2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG1kZGYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRkZlwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtdG5kcyt3YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbXRuZHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kcy5ub3RpZmljYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC50YWJsZXNjaGVtYStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC50YW8uaW50ZW50LW1vZHVsZS1hcmNoaXZlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGFvXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC50Y3BkdW1wLnBjYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwY2FwXCIsIFwiY2FwXCIsIFwiZG1wXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC50aGluay1jZWxsLnBwdHRjK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnRtZC5tZWRpYWZsZXguYXBpK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudG1vYmlsZS1saXZldHZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0bW9cIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnRyaS5vbmVzb3VyY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC50cmlkLnRwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRwdFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudHJpc2NhcGUubXhzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXhzXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC50cnVlYXBwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHJhXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC50cnVlZG9jXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudWJpc29mdC53ZWJwbGF5ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51ZmRsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widWZkXCIsIFwidWZkbFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudWlxLnRoZW1lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXR6XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51bWFqaW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1bWpcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVuaXR5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widW5pdHl3ZWJcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVvbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1b21sXCIsIFwidW9cIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQuYWxlcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0LmFsZXJ0LXdieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5iZWFyZXItY2hvaWNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5iZWFyZXItY2hvaWNlLXdieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5jYWNoZW9wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5jYWNoZW9wLXdieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5jaGFubmVsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5jaGFubmVsLXdieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5saXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5saXN0LXdieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5saXN0Y21kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5saXN0Y21kLXdieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5zaWduYWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cmktbWFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudmFsdmUuc291cmNlLm1hdGVyaWFsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudmN4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widmN4XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC52ZC1zdHVkeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZlY3RvcndvcmtzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudmVsK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZlcmltYXRyaXgudmNhc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZlcml0b25lLmFpb24ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudmVyeWFudC50aGluXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudmVzLmVuY3J5cHRlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZpZHNvZnQudmlkY29uZmVyZW5jZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZpc2lvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widnNkXCIsIFwidnN0XCIsIFwidnNzXCIsIFwidnN3XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC52aXNpb25hcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2aXNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZpdmlkZW5jZS5zY3JpcHRmaWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudnNmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widnNmXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53YXAuc2ljXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud2FwLnNsY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndhcC53YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2J4bWxcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndhcC53bWxjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid21sY1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud2FwLndtbHNjcmlwdGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bWxzY1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud2FzbWZsb3cud2FmbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndlYnR1cmJvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid3RiXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53ZmEuZHBwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud2ZhLnAycFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndmYS53c2NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53aW5kb3dzLmRldmljZXBhaXJpbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53bWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53bWYuYm9vdHN0cmFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud29sZnJhbS5tYXRoZW1hdGljYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndvbGZyYW0ubWF0aGVtYXRpY2EucGFja2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndvbGZyYW0ucGxheWVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibmJwXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53b3JkbGlmdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndvcmRwZXJmZWN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid3BkXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53cWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3cWRcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndycS1ocDMwMDAtbGFiZWxsZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53dC5zdGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdGZcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnd2LmNzcCt3YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnd2LmNzcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnd2LnNzcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnhhY21sK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnhhcmFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4YXJcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnhlY3JldHMtZW5jcnlwdGVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueGZkbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhmZGxcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnhmZGwud2ViZm9ybVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnhtaSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnhtcGllLmNwa2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54bXBpZS5kcGtnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueG1waWUucGxhblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnhtcGllLnBwa2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54bXBpZS54bGltXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLmh2LWRpY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImh2ZFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLmh2LXNjcmlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImh2c1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLmh2LXZvaWNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHZwXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEub3BlbnNjb3JlZm9ybWF0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3NmXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEub3BlbnNjb3JlZm9ybWF0Lm9zZnB2Zyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9zZnB2Z1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLnJlbW90ZS1zZXR1cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5zbWFmLWF1ZGlvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2FmXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuc21hZi1waHJhc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzcGZcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS50aHJvdWdoLW5nblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS50dW5uZWwtdWRwZW5jYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC55YW93ZW1lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWVsbG93cml2ZXItY3VzdG9tLW1lbnVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbXBcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnp1bFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInppclwiLCBcInppcnpcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnp6YXp6LmRlY2sreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ6YXpcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm9pY2V4bWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2eG1sXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZvdWNoZXItY21zK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdnBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZxLXJ0Y3B4clwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vd2FzbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2FzbVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi93YXRjaGVyaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndpZlwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi93ZWJwdXNoLW9wdGlvbnMranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi93aG9pc3BwLXF1ZXJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi93aG9pc3BwLXJlc3BvbnNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi93aWRnZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3Z3RcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vd2luaGxwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJobHBcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vd2l0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vd29yZHBlcmZlY3Q1LjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3dzZGwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3c2RsXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3dzcG9saWN5K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid3Nwb2xpY3lcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC03ei1jb21wcmVzc2VkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCI3elwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWFiaXdvcmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFid1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWFjZS1jb21wcmVzc2VkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhY2VcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1hbWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1hcHBsZS1kaXNraW1hZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRtZ1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWFyalwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFyalwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtYmluXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhYWJcIiwgXCJ4MzJcIiwgXCJ1MzJcIiwgXCJ2b3hcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1hdXRob3J3YXJlLW1hcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWFtXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtYXV0aG9yd2FyZS1zZWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFhc1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWJjcGlvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJiY3Bpb1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWJkb2NcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJiZG9jXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtYml0dG9ycmVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widG9ycmVudFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWJsb3JiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJibGJcIiwgXCJibG9yYlwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWJ6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJ6XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtYnppcDJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJ6MlwiLCBcImJvelwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWNiclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2JyXCIsIFwiY2JhXCIsIFwiY2J0XCIsIFwiY2J6XCIsIFwiY2I3XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY2RsaW5rXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2Y2RcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1jZnMtY29tcHJlc3NlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2ZzXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY2hhdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2hhdFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWNoZXNzLXBnblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGduXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY2hyb21lLWV4dGVuc2lvblwiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNyeFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWNvY29hXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNjb1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWNvbXByZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY29uZmVyZW5jZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibnNjXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY3Bpb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3Bpb1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWNzaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3NoXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZGViXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWRlYmlhbi1wYWNrYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkZWJcIiwgXCJ1ZGViXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZGdjLWNvbXByZXNzZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRnY1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWRpcmVjdG9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXG4gICAgICBcImRpclwiLFxuICAgICAgXCJkY3JcIixcbiAgICAgIFwiZHhyXCIsXG4gICAgICBcImNzdFwiLFxuICAgICAgXCJjY3RcIixcbiAgICAgIFwiY3h0XCIsXG4gICAgICBcInczZFwiLFxuICAgICAgXCJmZ2RcIixcbiAgICAgIFwic3dhXCIsXG4gICAgXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWRvb21cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndhZFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWR0Ym5jeCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibmN4XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZHRib29rK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkdGJcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1kdGJyZXNvdXJjZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmVzXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZHZpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkdmlcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1lbnZveVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXZ5XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZXZhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJldmFcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LWJkZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYmRmXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC1kb3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LWZyYW1lbWFrZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LWdob3N0c2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnc2ZcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LWxpYmdyeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtbGludXgtcHNmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwc2ZcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LXBjZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGNmXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC1zbmZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNuZlwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtc3BlZWRvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC1zdW5vcy1uZXdzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC10eXBlMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGZhXCIsIFwicGZiXCIsIFwicGZtXCIsIFwiYWZtXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC12Zm9udFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZyZWVhcmNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFyY1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZ1dHVyZXNwbGFzaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3BsXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZ2NhLWNvbXByZXNzZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdjYVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWdsdWx4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1bHhcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1nbnVtZXJpY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ251bWVyaWNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1ncmFtcHMteG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJncmFtcHNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1ndGFyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJndGFyXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZ3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWhkZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaGRmXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtaHR0cGQtcGhwXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwaHBcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1pbnN0YWxsLWluc3RydWN0aW9uc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaW5zdGFsbFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWlzbzk2NjAtaW1hZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlzb1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWl3b3JrLWtleW5vdGUtc2Zma2V5XCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia2V5XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtaXdvcmstbnVtYmVycy1zZmZudW1iZXJzXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibnVtYmVyc1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWl3b3JrLXBhZ2VzLXNmZnBhZ2VzXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGFnZXNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1qYXZhLWFyY2hpdmUtZGlmZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJuZ2lueFwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqYXJkaWZmXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtamF2YS1qbmxwLWZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpubHBcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0XCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gta2VlcGFzczJcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJrZGJ4XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbGF0ZXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImxhdGV4XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbHVhLWJ5dGVjb2RlXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibHVhY1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWx6aC1jb21wcmVzc2VkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsemhcIiwgXCJsaGFcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tYWtlc2VsZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJuZ2lueFwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJydW5cIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1taWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1pZVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1vYmlwb2NrZXQtZWJvb2tcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInByY1wiLCBcIm1vYmlcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tcGVndXJsXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zLWFwcGxpY2F0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhcHBsaWNhdGlvblwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zLXNob3J0Y3V0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsbmtcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tcy13bWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndtZFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zLXdtelwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid216XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXMteGJhcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGJhcFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zYWNjZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtZGJcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tc2JpbmRlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2JkXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXNjYXJkZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3JkXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXNjbGlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbHBcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tc2Rvcy1wcm9ncmFtXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXhlXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXNkb3dubG9hZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXhlXCIsIFwiZGxsXCIsIFwiY29tXCIsIFwiYmF0XCIsIFwibXNpXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXNtZWRpYXZpZXdcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm12YlwiLCBcIm0xM1wiLCBcIm0xNFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zbWV0YWZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndtZlwiLCBcIndtelwiLCBcImVtZlwiLCBcImVtelwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zbW9uZXlcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1ueVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zcHVibGlzaGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwdWJcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tc3NjaGVkdWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzY2RcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tc3Rlcm1pbmFsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0cm1cIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tc3dyaXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3cmlcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1uZXRjZGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5jXCIsIFwiY2RmXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbnMtcHJveHktYXV0b2NvbmZpZ1wiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGFjXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbnpiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJuemJcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1wZXJsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBsXCIsIFwicG1cIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1waWxvdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJuZ2lueFwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwcmNcIiwgXCJwZGJcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1wa2NzMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInAxMlwiLCBcInBmeFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXBrY3M3LWNlcnRpZmljYXRlc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicDdiXCIsIFwic3BjXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtcGtjczctY2VydHJlcXJlc3BcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInA3clwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXBraS1tZXNzYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXJhci1jb21wcmVzc2VkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyYXJcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1yZWRoYXQtcGFja2FnZS1tYW5hZ2VyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJwbVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXJlc2VhcmNoLWluZm8tc3lzdGVtc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmlzXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtc2VhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNlYVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXNoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNoXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtc2hhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2hhclwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3dmXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtc2lsdmVybGlnaHQtYXBwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4YXBcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1zcWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNxbFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXN0dWZmaXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNpdFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXN0dWZmaXR4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzaXR4XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtc3VicmlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzcnRcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1zdjRjcGlvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdjRjcGlvXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtc3Y0Y3JjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdjRjcmNcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC10M3ZtLWltYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0M1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXRhZHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdhbVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXRhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0YXJcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC10Y2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRjbFwiLCBcInRrXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtdGV4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0ZXhcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC10ZXgtdGZtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0Zm1cIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC10ZXhpbmZvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0ZXhpbmZvXCIsIFwidGV4aVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXRnaWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9ialwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXVzdGFyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1c3RhclwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtaGRkXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJoZGRcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC12aXJ0dWFsYm94LW92YVwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3ZhXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC1vdmZcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm92ZlwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtdmJveFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widmJveFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtdmJveC1leHRwYWNrXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widmJveC1leHRwYWNrXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC12ZGlcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZkaVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtdmhkXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2aGRcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC12aXJ0dWFsYm94LXZtZGtcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZtZGtcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC13YWlzLXNvdXJjZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3JjXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtd2ViLWFwcC1tYW5pZmVzdCtqc29uXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3ZWJhcHBcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gteDUwOS1jYS1jZXJ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGVyXCIsIFwiY3J0XCIsIFwicGVtXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gteDUwOS1jYS1yYS1jZXJ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXg1MDktbmV4dC1jYS1jZXJ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXhmaWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZpZ1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXhsaWZmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bGZcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC14cGluc3RhbGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhwaVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXh6XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4elwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXptYWNoaW5lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ6MVwiLCBcInoyXCIsIFwiejNcIiwgXCJ6NFwiLCBcIno1XCIsIFwiejZcIiwgXCJ6N1wiLCBcIno4XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3g0MDAtYnBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hhY21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94YW1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4YW1sXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hjYXAtYXR0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGF2XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hjYXAtY2Fwcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhjYVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94Y2FwLWRpZmYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4ZGZcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veGNhcC1lbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhlbFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94Y2FwLWVycm9yK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94Y2FwLW5zK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieG5zXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hjb24tY29uZmVyZW5jZS1pbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94Y29uLWNvbmZlcmVuY2UtaW5mby1kaWZmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94ZW5jK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGVuY1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94ZmRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGZkZlwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94aHRtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhodG1sXCIsIFwieGh0XCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hodG1sLXZvaWNlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hsaWZmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGxmXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieG1sXCIsIFwieHNsXCIsIFwieHNkXCIsIFwicm5nXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3htbC1kdGRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImR0ZFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94bWwtZXh0ZXJuYWwtcGFyc2VkLWVudGl0eVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veG1sLXBhdGNoK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94bXBwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94b3AreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4b3BcIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veHByb2MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhwbFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94c2x0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHNsXCIsIFwieHNsdFwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94c3BmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4c3BmXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3h2K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXhtbFwiLCBcInhodm1sXCIsIFwieHZtbFwiLCBcInh2bVwiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi95YW1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi95YW5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieWFuZ1wiXSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi95YW5nLWRhdGErY2JvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veWFuZy1kYXRhK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veWFuZy1kYXRhK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi95YW5nLXBhdGNoK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veWFuZy1wYXRjaCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veWFuZy1zaWQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi95aW4reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ5aW5cIl0sXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vemlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiemlwXCJdLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3psaWJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImFwcGxpY2F0aW9uL3pzdGRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvLzFkLWludGVybGVhdmVkLXBhcml0eWZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vMzJrYWRwY21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvLzNncHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCIzZ3BwXCJdLFxuICB9LFxuICBcImF1ZGlvLzNncHAyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9hYWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhZHRzXCIsIFwiYWFjXCJdLFxuICB9LFxuICBcImF1ZGlvL2FjM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vYWRwY21cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFkcFwiXSxcbiAgfSxcbiAgXCJhdWRpby9hbXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhbXJcIl0sXG4gIH0sXG4gIFwiYXVkaW8vYW1yLXdiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9hbXItd2IrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9hcHR4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9hc2NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL2F0cmFjLWFkdmFuY2VkLWxvc3NsZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9hdHJhYy14XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9hdHJhYzNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL2Jhc2ljXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXVcIiwgXCJzbmRcIl0sXG4gIH0sXG4gIFwiYXVkaW8vYnYxNlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vYnYzMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vY2xlYXJtb2RlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9jblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vZGF0MTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL2Rsc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vZHNyLWVzMjAxMTA4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9kc3ItZXMyMDIwNTBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL2Rzci1lczIwMjIxMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vZHNyLWVzMjAyMjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9kdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vZHZpNFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vZWFjM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vZW5jYXBydHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL2V2cmNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL2V2cmMtcWNwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9ldnJjMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vZXZyYzFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL2V2cmNiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9ldnJjYjBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL2V2cmNiMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vZXZyY253XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9ldnJjbncwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9ldnJjbncxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9ldnJjd2JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL2V2cmN3YjBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL2V2cmN3YjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL2V2c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vZmxhY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vZmxleGZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vZndkcmVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9nNzExLTBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL2c3MTlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL2c3MjJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL2c3MjIxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9nNzIzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9nNzI2LTE2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9nNzI2LTI0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9nNzI2LTMyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9nNzI2LTQwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9nNzI4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9nNzI5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9nNzI5MVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vZzcyOWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL2c3MjllXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9nc21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL2dzbS1lZnJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL2dzbS1oci0wOFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vaWxiY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vaXAtbXJfdjIuNVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vaXNhY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgfSxcbiAgXCJhdWRpby9sMTZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL2wyMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vbDI0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgfSxcbiAgXCJhdWRpby9sOFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vbHBjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9tYXRyb3NrYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vbWVscFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vbWVscDEyMDBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL21lbHAyNDAwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9tZWxwNjAwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9taGFzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9taWRpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtaWRcIiwgXCJtaWRpXCIsIFwia2FyXCIsIFwicm1pXCJdLFxuICB9LFxuICBcImF1ZGlvL21pZGktY2xpcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vbW9iaWxlLXhtZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm14bWZcIl0sXG4gIH0sXG4gIFwiYXVkaW8vbXAzXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXAzXCJdLFxuICB9LFxuICBcImF1ZGlvL21wNFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm00YVwiLCBcIm1wNGFcIl0sXG4gIH0sXG4gIFwiYXVkaW8vbXA0YS1sYXRtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9tcGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL21wYS1yb2J1c3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL21wZWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcGdhXCIsIFwibXAyXCIsIFwibXAyYVwiLCBcIm1wM1wiLCBcIm0yYVwiLCBcIm0zYVwiXSxcbiAgfSxcbiAgXCJhdWRpby9tcGVnNC1nZW5lcmljXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9tdXNlcGFja1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgfSxcbiAgXCJhdWRpby9vZ2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZ2FcIiwgXCJvZ2dcIiwgXCJzcHhcIiwgXCJvcHVzXCJdLFxuICB9LFxuICBcImF1ZGlvL29wdXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL3Bhcml0eWZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vcGNtYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vcGNtYS13YlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vcGNtdVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vcGNtdS13YlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vcHJzLnNpZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vcWNlbHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL3JhcHRvcmZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vcmVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9ydHAtZW5jLWFlc2NtMTI4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby9ydHAtbWlkaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vcnRwbG9vcGJhY2tcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL3J0eFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vczNtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzM21cIl0sXG4gIH0sXG4gIFwiYXVkaW8vc2NpcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vc2lsa1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2lsXCJdLFxuICB9LFxuICBcImF1ZGlvL3NtdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vc212LXFjcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vc212MFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vc29mYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vc3AtbWlkaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vc3BlZXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL3QxNDBjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby90MzhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL3RlbGVwaG9uZS1ldmVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vdGV0cmFfYWNlbHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL3RldHJhX2FjZWxwX2JiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby90b25lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby90c3ZjaXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL3VlbWNsaXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL3VscGZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vdXNhY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vdmR2aVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vdm1yLXdiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby92bmQuM2dwcC5pdWZwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby92bmQuNHNiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby92bmQuYXVkaW9rb3pcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL3ZuZC5jZWxwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby92bmQuY2lzY28ubnNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby92bmQuY21sZXMucmFkaW8tZXZlbnRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby92bmQuY25zLmFucDFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL3ZuZC5jbnMuaW5mMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRlY2UuYXVkaW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dmFcIiwgXCJ1dnZhXCJdLFxuICB9LFxuICBcImF1ZGlvL3ZuZC5kaWdpdGFsLXdpbmRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZW9sXCJdLFxuICB9LFxuICBcImF1ZGlvL3ZuZC5kbG5hLmFkdHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL3ZuZC5kb2xieS5oZWFhYy4xXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby92bmQuZG9sYnkuaGVhYWMuMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRvbGJ5Lm1scFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRvbGJ5Lm1wc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRvbGJ5LnBsMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRvbGJ5LnBsMnhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL3ZuZC5kb2xieS5wbDJ6XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby92bmQuZG9sYnkucHVsc2UuMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRyYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRyYVwiXSxcbiAgfSxcbiAgXCJhdWRpby92bmQuZHRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHRzXCJdLFxuICB9LFxuICBcImF1ZGlvL3ZuZC5kdHMuaGRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkdHNoZFwiXSxcbiAgfSxcbiAgXCJhdWRpby92bmQuZHRzLnVoZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmR2Yi5maWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby92bmQuZXZlcmFkLnBsalwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmhucy5hdWRpb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmx1Y2VudC52b2ljZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImx2cFwiXSxcbiAgfSxcbiAgXCJhdWRpby92bmQubXMtcGxheXJlYWR5Lm1lZGlhLnB5YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInB5YVwiXSxcbiAgfSxcbiAgXCJhdWRpby92bmQubm9raWEubW9iaWxlLXhtZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiYXVkaW8vdm5kLm5vcnRlbC52YmtcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL3ZuZC5udWVyYS5lY2VscDQ4MDBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlY2VscDQ4MDBcIl0sXG4gIH0sXG4gIFwiYXVkaW8vdm5kLm51ZXJhLmVjZWxwNzQ3MFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVjZWxwNzQ3MFwiXSxcbiAgfSxcbiAgXCJhdWRpby92bmQubnVlcmEuZWNlbHA5NjAwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZWNlbHA5NjAwXCJdLFxuICB9LFxuICBcImF1ZGlvL3ZuZC5vY3RlbC5zYmNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL3ZuZC5wcmVzb251cy5tdWx0aXRyYWNrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby92bmQucWNlbHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gIH0sXG4gIFwiYXVkaW8vdm5kLnJoZXRvcmV4LjMya2FkcGNtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby92bmQucmlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmlwXCJdLFxuICB9LFxuICBcImF1ZGlvL3ZuZC5ybi1yZWFsYXVkaW9cIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICB9LFxuICBcImF1ZGlvL3ZuZC5zZWFsZWRtZWRpYS5zb2Z0c2VhbC5tcGVnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJhdWRpby92bmQudm14LmN2c2RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL3ZuZC53YXZlXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgfSxcbiAgXCJhdWRpby92b3JiaXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICB9LFxuICBcImF1ZGlvL3ZvcmJpcy1jb25maWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImF1ZGlvL3dhdlwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndhdlwiXSxcbiAgfSxcbiAgXCJhdWRpby93YXZlXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2F2XCJdLFxuICB9LFxuICBcImF1ZGlvL3dlYm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndlYmFcIl0sXG4gIH0sXG4gIFwiYXVkaW8veC1hYWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFhY1wiXSxcbiAgfSxcbiAgXCJhdWRpby94LWFpZmZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFpZlwiLCBcImFpZmZcIiwgXCJhaWZjXCJdLFxuICB9LFxuICBcImF1ZGlvL3gtY2FmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjYWZcIl0sXG4gIH0sXG4gIFwiYXVkaW8veC1mbGFjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmbGFjXCJdLFxuICB9LFxuICBcImF1ZGlvL3gtbTRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm00YVwiXSxcbiAgfSxcbiAgXCJhdWRpby94LW1hdHJvc2thXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJta2FcIl0sXG4gIH0sXG4gIFwiYXVkaW8veC1tcGVndXJsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtM3VcIl0sXG4gIH0sXG4gIFwiYXVkaW8veC1tcy13YXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndheFwiXSxcbiAgfSxcbiAgXCJhdWRpby94LW1zLXdtYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid21hXCJdLFxuICB9LFxuICBcImF1ZGlvL3gtcG4tcmVhbGF1ZGlvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyYW1cIiwgXCJyYVwiXSxcbiAgfSxcbiAgXCJhdWRpby94LXBuLXJlYWxhdWRpby1wbHVnaW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJtcFwiXSxcbiAgfSxcbiAgXCJhdWRpby94LXJlYWxhdWRpb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJuZ2lueFwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyYVwiXSxcbiAgfSxcbiAgXCJhdWRpby94LXR0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgfSxcbiAgXCJhdWRpby94LXdhdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2F2XCJdLFxuICB9LFxuICBcImF1ZGlvL3htXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bVwiXSxcbiAgfSxcbiAgXCJjaGVtaWNhbC94LWNkeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2R4XCJdLFxuICB9LFxuICBcImNoZW1pY2FsL3gtY2lmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjaWZcIl0sXG4gIH0sXG4gIFwiY2hlbWljYWwveC1jbWRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbWRmXCJdLFxuICB9LFxuICBcImNoZW1pY2FsL3gtY21sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbWxcIl0sXG4gIH0sXG4gIFwiY2hlbWljYWwveC1jc21sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjc21sXCJdLFxuICB9LFxuICBcImNoZW1pY2FsL3gtcGRiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICB9LFxuICBcImNoZW1pY2FsL3gteHl6XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4eXpcIl0sXG4gIH0sXG4gIFwiZm9udC9jb2xsZWN0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHRjXCJdLFxuICB9LFxuICBcImZvbnQvb3RmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvdGZcIl0sXG4gIH0sXG4gIFwiZm9udC9zZm50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJmb250L3R0ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHRmXCJdLFxuICB9LFxuICBcImZvbnQvd29mZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndvZmZcIl0sXG4gIH0sXG4gIFwiZm9udC93b2ZmMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndvZmYyXCJdLFxuICB9LFxuICBcImltYWdlL2FjZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJleHJcIl0sXG4gIH0sXG4gIFwiaW1hZ2UvYXBuZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFwbmdcIl0sXG4gIH0sXG4gIFwiaW1hZ2UvYXZjaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF2Y2lcIl0sXG4gIH0sXG4gIFwiaW1hZ2UvYXZjc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF2Y3NcIl0sXG4gIH0sXG4gIFwiaW1hZ2UvYXZpZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF2aWZcIl0sXG4gIH0sXG4gIFwiaW1hZ2UvYm1wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJibXBcIiwgXCJkaWJcIl0sXG4gIH0sXG4gIFwiaW1hZ2UvY2dtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2dtXCJdLFxuICB9LFxuICBcImltYWdlL2RpY29tLXJsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRybGVcIl0sXG4gIH0sXG4gIFwiaW1hZ2UvZHB4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHB4XCJdLFxuICB9LFxuICBcImltYWdlL2VtZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVtZlwiXSxcbiAgfSxcbiAgXCJpbWFnZS9maXRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZml0c1wiXSxcbiAgfSxcbiAgXCJpbWFnZS9nM2ZheFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImczXCJdLFxuICB9LFxuICBcImltYWdlL2dpZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdpZlwiXSxcbiAgfSxcbiAgXCJpbWFnZS9oZWljXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaGVpY1wiXSxcbiAgfSxcbiAgXCJpbWFnZS9oZWljLXNlcXVlbmNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaGVpY3NcIl0sXG4gIH0sXG4gIFwiaW1hZ2UvaGVpZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhlaWZcIl0sXG4gIH0sXG4gIFwiaW1hZ2UvaGVpZi1zZXF1ZW5jZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhlaWZzXCJdLFxuICB9LFxuICBcImltYWdlL2hlajJrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaGVqMlwiXSxcbiAgfSxcbiAgXCJpbWFnZS9oc2oyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHNqMlwiXSxcbiAgfSxcbiAgXCJpbWFnZS9pZWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpZWZcIl0sXG4gIH0sXG4gIFwiaW1hZ2UvajJjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJpbWFnZS9qbHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqbHNcIl0sXG4gIH0sXG4gIFwiaW1hZ2UvanAyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianAyXCIsIFwianBnMlwiXSxcbiAgfSxcbiAgXCJpbWFnZS9qcGVnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianBlZ1wiLCBcImpwZ1wiLCBcImpwZVwiXSxcbiAgfSxcbiAgXCJpbWFnZS9qcGhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqcGhcIl0sXG4gIH0sXG4gIFwiaW1hZ2UvanBoY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpoY1wiXSxcbiAgfSxcbiAgXCJpbWFnZS9qcG1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqcG1cIiwgXCJqcGdtXCJdLFxuICB9LFxuICBcImltYWdlL2pweFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpweFwiLCBcImpwZlwiXSxcbiAgfSxcbiAgXCJpbWFnZS9qeGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqeGxcIl0sXG4gIH0sXG4gIFwiaW1hZ2UvanhyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianhyXCJdLFxuICB9LFxuICBcImltYWdlL2p4cmFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqeHJhXCJdLFxuICB9LFxuICBcImltYWdlL2p4cnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqeHJzXCJdLFxuICB9LFxuICBcImltYWdlL2p4c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImp4c1wiXSxcbiAgfSxcbiAgXCJpbWFnZS9qeHNjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianhzY1wiXSxcbiAgfSxcbiAgXCJpbWFnZS9qeHNpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianhzaVwiXSxcbiAgfSxcbiAgXCJpbWFnZS9qeHNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianhzc1wiXSxcbiAgfSxcbiAgXCJpbWFnZS9rdHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJrdHhcIl0sXG4gIH0sXG4gIFwiaW1hZ2Uva3R4MlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImt0eDJcIl0sXG4gIH0sXG4gIFwiaW1hZ2UvbmFwbHBzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJpbWFnZS9wanBlZ1wiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gIH0sXG4gIFwiaW1hZ2UvcG5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicG5nXCJdLFxuICB9LFxuICBcImltYWdlL3Bycy5idGlmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYnRpZlwiLCBcImJ0ZlwiXSxcbiAgfSxcbiAgXCJpbWFnZS9wcnMucHRpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHRpXCJdLFxuICB9LFxuICBcImltYWdlL3B3Zy1yYXN0ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImltYWdlL3NnaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2dpXCJdLFxuICB9LFxuICBcImltYWdlL3N2Zyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN2Z1wiLCBcInN2Z3pcIl0sXG4gIH0sXG4gIFwiaW1hZ2UvdDM4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widDM4XCJdLFxuICB9LFxuICBcImltYWdlL3RpZmZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0aWZcIiwgXCJ0aWZmXCJdLFxuICB9LFxuICBcImltYWdlL3RpZmYtZnhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0ZnhcIl0sXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmFkb2JlLnBob3Rvc2hvcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHNkXCJdLFxuICB9LFxuICBcImltYWdlL3ZuZC5haXJ6aXAuYWNjZWxlcmF0b3IuYXp2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXp2XCJdLFxuICB9LFxuICBcImltYWdlL3ZuZC5jbnMuaW5mMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmRlY2UuZ3JhcGhpY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2aVwiLCBcInV2dmlcIiwgXCJ1dmdcIiwgXCJ1dnZnXCJdLFxuICB9LFxuICBcImltYWdlL3ZuZC5kanZ1XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGp2dVwiLCBcImRqdlwiXSxcbiAgfSxcbiAgXCJpbWFnZS92bmQuZHZiLnN1YnRpdGxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3ViXCJdLFxuICB9LFxuICBcImltYWdlL3ZuZC5kd2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkd2dcIl0sXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmR4ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImR4ZlwiXSxcbiAgfSxcbiAgXCJpbWFnZS92bmQuZmFzdGJpZHNoZWV0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmJzXCJdLFxuICB9LFxuICBcImltYWdlL3ZuZC5mcHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmcHhcIl0sXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmZzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZzdFwiXSxcbiAgfSxcbiAgXCJpbWFnZS92bmQuZnVqaXhlcm94LmVkbWljcy1tbXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtbXJcIl0sXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmZ1aml4ZXJveC5lZG1pY3MtcmxjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmxjXCJdLFxuICB9LFxuICBcImltYWdlL3ZuZC5nbG9iYWxncmFwaGljcy5wZ2JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaWNvXCJdLFxuICB9LFxuICBcImltYWdlL3ZuZC5taXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImltYWdlL3ZuZC5tb3ppbGxhLmFwbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImltYWdlL3ZuZC5tcy1kZHNcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRkc1wiXSxcbiAgfSxcbiAgXCJpbWFnZS92bmQubXMtbW9kaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1kaVwiXSxcbiAgfSxcbiAgXCJpbWFnZS92bmQubXMtcGhvdG9cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndkcFwiXSxcbiAgfSxcbiAgXCJpbWFnZS92bmQubmV0LWZweFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5weFwiXSxcbiAgfSxcbiAgXCJpbWFnZS92bmQucGNvLmIxNlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImIxNlwiXSxcbiAgfSxcbiAgXCJpbWFnZS92bmQucmFkaWFuY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcImltYWdlL3ZuZC5zZWFsZWQucG5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJpbWFnZS92bmQuc2VhbGVkbWVkaWEuc29mdHNlYWwuZ2lmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJpbWFnZS92bmQuc2VhbGVkbWVkaWEuc29mdHNlYWwuanBnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJpbWFnZS92bmQuc3ZmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJpbWFnZS92bmQudGVuY2VudC50YXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0YXBcIl0sXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLnZhbHZlLnNvdXJjZS50ZXh0dXJlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widnRmXCJdLFxuICB9LFxuICBcImltYWdlL3ZuZC53YXAud2JtcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndibXBcIl0sXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLnhpZmZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4aWZcIl0sXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLnpicnVzaC5wY3hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwY3hcIl0sXG4gIH0sXG4gIFwiaW1hZ2Uvd2VicFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndlYnBcIl0sXG4gIH0sXG4gIFwiaW1hZ2Uvd21mXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid21mXCJdLFxuICB9LFxuICBcImltYWdlL3gtM2RzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCIzZHNcIl0sXG4gIH0sXG4gIFwiaW1hZ2UveC1jbXUtcmFzdGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyYXNcIl0sXG4gIH0sXG4gIFwiaW1hZ2UveC1jbXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNteFwiXSxcbiAgfSxcbiAgXCJpbWFnZS94LWZyZWVoYW5kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmaFwiLCBcImZoY1wiLCBcImZoNFwiLCBcImZoNVwiLCBcImZoN1wiXSxcbiAgfSxcbiAgXCJpbWFnZS94LWljb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaWNvXCJdLFxuICB9LFxuICBcImltYWdlL3gtam5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpuZ1wiXSxcbiAgfSxcbiAgXCJpbWFnZS94LW1yc2lkLWltYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzaWRcIl0sXG4gIH0sXG4gIFwiaW1hZ2UveC1tcy1ibXBcIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJibXBcIl0sXG4gIH0sXG4gIFwiaW1hZ2UveC1wY3hcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBjeFwiXSxcbiAgfSxcbiAgXCJpbWFnZS94LXBpY3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBpY1wiLCBcInBjdFwiXSxcbiAgfSxcbiAgXCJpbWFnZS94LXBvcnRhYmxlLWFueW1hcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicG5tXCJdLFxuICB9LFxuICBcImltYWdlL3gtcG9ydGFibGUtYml0bWFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwYm1cIl0sXG4gIH0sXG4gIFwiaW1hZ2UveC1wb3J0YWJsZS1ncmF5bWFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwZ21cIl0sXG4gIH0sXG4gIFwiaW1hZ2UveC1wb3J0YWJsZS1waXhtYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBwbVwiXSxcbiAgfSxcbiAgXCJpbWFnZS94LXJnYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmdiXCJdLFxuICB9LFxuICBcImltYWdlL3gtdGdhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0Z2FcIl0sXG4gIH0sXG4gIFwiaW1hZ2UveC14Yml0bWFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4Ym1cIl0sXG4gIH0sXG4gIFwiaW1hZ2UveC14Y2ZcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICB9LFxuICBcImltYWdlL3gteHBpeG1hcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHBtXCJdLFxuICB9LFxuICBcImltYWdlL3gteHdpbmRvd2R1bXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInh3ZFwiXSxcbiAgfSxcbiAgXCJtZXNzYWdlL2JodHRwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJtZXNzYWdlL2NwaW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcIm1lc3NhZ2UvZGVsaXZlcnktc3RhdHVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJtZXNzYWdlL2Rpc3Bvc2l0aW9uLW5vdGlmaWNhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcbiAgICAgIFwiZGlzcG9zaXRpb24tbm90aWZpY2F0aW9uXCIsXG4gICAgXSxcbiAgfSxcbiAgXCJtZXNzYWdlL2V4dGVybmFsLWJvZHlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcIm1lc3NhZ2UvZmVlZGJhY2stcmVwb3J0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJtZXNzYWdlL2dsb2JhbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInU4bXNnXCJdLFxuICB9LFxuICBcIm1lc3NhZ2UvZ2xvYmFsLWRlbGl2ZXJ5LXN0YXR1c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInU4ZHNuXCJdLFxuICB9LFxuICBcIm1lc3NhZ2UvZ2xvYmFsLWRpc3Bvc2l0aW9uLW5vdGlmaWNhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInU4bWRuXCJdLFxuICB9LFxuICBcIm1lc3NhZ2UvZ2xvYmFsLWhlYWRlcnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1OGhkclwiXSxcbiAgfSxcbiAgXCJtZXNzYWdlL2h0dHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICB9LFxuICBcIm1lc3NhZ2UvaW1kbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwibWVzc2FnZS9tbHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcIm1lc3NhZ2UvbmV3c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgfSxcbiAgXCJtZXNzYWdlL29odHRwLXJlcVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwibWVzc2FnZS9vaHR0cC1yZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcIm1lc3NhZ2UvcGFydGlhbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gIH0sXG4gIFwibWVzc2FnZS9yZmM4MjJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVtbFwiLCBcIm1pbWVcIl0sXG4gIH0sXG4gIFwibWVzc2FnZS9zLWh0dHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gIH0sXG4gIFwibWVzc2FnZS9zaXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcIm1lc3NhZ2Uvc2lwZnJhZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwibWVzc2FnZS90cmFja2luZy1zdGF0dXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcIm1lc3NhZ2Uvdm5kLnNpLnNpbXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gIH0sXG4gIFwibWVzc2FnZS92bmQud2ZhLndzY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndzY1wiXSxcbiAgfSxcbiAgXCJtb2RlbC8zbWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCIzbWZcIl0sXG4gIH0sXG4gIFwibW9kZWwvZTU3XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJtb2RlbC9nbHRmK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdsdGZcIl0sXG4gIH0sXG4gIFwibW9kZWwvZ2x0Zi1iaW5hcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdsYlwiXSxcbiAgfSxcbiAgXCJtb2RlbC9pZ2VzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaWdzXCIsIFwiaWdlc1wiXSxcbiAgfSxcbiAgXCJtb2RlbC9qdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImp0XCJdLFxuICB9LFxuICBcIm1vZGVsL21lc2hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtc2hcIiwgXCJtZXNoXCIsIFwic2lsb1wiXSxcbiAgfSxcbiAgXCJtb2RlbC9tdGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtdGxcIl0sXG4gIH0sXG4gIFwibW9kZWwvb2JqXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2JqXCJdLFxuICB9LFxuICBcIm1vZGVsL3ByY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInByY1wiXSxcbiAgfSxcbiAgXCJtb2RlbC9zdGVwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJtb2RlbC9zdGVwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3RweFwiXSxcbiAgfSxcbiAgXCJtb2RlbC9zdGVwK3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN0cHpcIl0sXG4gIH0sXG4gIFwibW9kZWwvc3RlcC14bWwremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3RweHpcIl0sXG4gIH0sXG4gIFwibW9kZWwvc3RsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3RsXCJdLFxuICB9LFxuICBcIm1vZGVsL3UzZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInUzZFwiXSxcbiAgfSxcbiAgXCJtb2RlbC92bmQuYmFyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJhcnlcIl0sXG4gIH0sXG4gIFwibW9kZWwvdm5kLmNsZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNsZFwiXSxcbiAgfSxcbiAgXCJtb2RlbC92bmQuY29sbGFkYSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRhZVwiXSxcbiAgfSxcbiAgXCJtb2RlbC92bmQuZHdmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHdmXCJdLFxuICB9LFxuICBcIm1vZGVsL3ZuZC5mbGF0bGFuZC4zZG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJtb2RlbC92bmQuZ2RsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2RsXCJdLFxuICB9LFxuICBcIm1vZGVsL3ZuZC5ncy1nZGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gIH0sXG4gIFwibW9kZWwvdm5kLmdzLmdkbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwibW9kZWwvdm5kLmd0d1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImd0d1wiXSxcbiAgfSxcbiAgXCJtb2RlbC92bmQubW9tbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gIH0sXG4gIFwibW9kZWwvdm5kLm10c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm10c1wiXSxcbiAgfSxcbiAgXCJtb2RlbC92bmQub3BlbmdleFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9nZXhcIl0sXG4gIH0sXG4gIFwibW9kZWwvdm5kLnBhcmFzb2xpZC50cmFuc21pdC5iaW5hcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4X2JcIl0sXG4gIH0sXG4gIFwibW9kZWwvdm5kLnBhcmFzb2xpZC50cmFuc21pdC50ZXh0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieF90XCJdLFxuICB9LFxuICBcIm1vZGVsL3ZuZC5weXRoYS5weW94XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHlvXCIsIFwicHlveFwiXSxcbiAgfSxcbiAgXCJtb2RlbC92bmQucm9zZXR0ZS5hbm5vdGF0ZWQtZGF0YS1tb2RlbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwibW9kZWwvdm5kLnNhcC52ZHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2ZHNcIl0sXG4gIH0sXG4gIFwibW9kZWwvdm5kLnVzZGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1c2RhXCJdLFxuICB9LFxuICBcIm1vZGVsL3ZuZC51c2R6K3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInVzZHpcIl0sXG4gIH0sXG4gIFwibW9kZWwvdm5kLnZhbHZlLnNvdXJjZS5jb21waWxlZC1tYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJic3BcIl0sXG4gIH0sXG4gIFwibW9kZWwvdm5kLnZ0dVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZ0dVwiXSxcbiAgfSxcbiAgXCJtb2RlbC92cm1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid3JsXCIsIFwidnJtbFwiXSxcbiAgfSxcbiAgXCJtb2RlbC94M2QrYmluYXJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4M2RiXCIsIFwieDNkYnpcIl0sXG4gIH0sXG4gIFwibW9kZWwveDNkK2Zhc3RpbmZvc2V0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieDNkYlwiXSxcbiAgfSxcbiAgXCJtb2RlbC94M2QrdnJtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieDNkdlwiLCBcIngzZHZ6XCJdLFxuICB9LFxuICBcIm1vZGVsL3gzZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIngzZFwiLCBcIngzZHpcIl0sXG4gIH0sXG4gIFwibW9kZWwveDNkLXZybWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4M2R2XCJdLFxuICB9LFxuICBcIm11bHRpcGFydC9hbHRlcm5hdGl2ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gIH0sXG4gIFwibXVsdGlwYXJ0L2FwcGxlZG91YmxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJtdWx0aXBhcnQvYnl0ZXJhbmdlc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwibXVsdGlwYXJ0L2RpZ2VzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwibXVsdGlwYXJ0L2VuY3J5cHRlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gIH0sXG4gIFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gIH0sXG4gIFwibXVsdGlwYXJ0L2hlYWRlci1zZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcIm11bHRpcGFydC9taXhlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwibXVsdGlwYXJ0L211bHRpbGluZ3VhbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwibXVsdGlwYXJ0L3BhcmFsbGVsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJtdWx0aXBhcnQvcmVsYXRlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gIH0sXG4gIFwibXVsdGlwYXJ0L3JlcG9ydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwibXVsdGlwYXJ0L3NpZ25lZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gIH0sXG4gIFwibXVsdGlwYXJ0L3ZuZC5iaW50Lm1lZC1wbHVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJtdWx0aXBhcnQvdm9pY2UtbWVzc2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwibXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidGV4dC8xZC1pbnRlcmxlYXZlZC1wYXJpdHlmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInRleHQvY2FjaGUtbWFuaWZlc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFwcGNhY2hlXCIsIFwibWFuaWZlc3RcIl0sXG4gIH0sXG4gIFwidGV4dC9jYWxlbmRhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImljc1wiLCBcImlmYlwiXSxcbiAgfSxcbiAgXCJ0ZXh0L2NhbGVuZGVyXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcInRleHQvY21kXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcInRleHQvY29mZmVlc2NyaXB0XCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY29mZmVlXCIsIFwibGl0Y29mZmVlXCJdLFxuICB9LFxuICBcInRleHQvY3FsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ0ZXh0L2NxbC1leHByZXNzaW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ0ZXh0L2NxbC1pZGVudGlmaWVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ0ZXh0L2Nzc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjc3NcIl0sXG4gIH0sXG4gIFwidGV4dC9jc3ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNzdlwiXSxcbiAgfSxcbiAgXCJ0ZXh0L2Nzdi1zY2hlbWFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInRleHQvZGlyZWN0b3J5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ0ZXh0L2Ruc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidGV4dC9lY21hc2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICB9LFxuICBcInRleHQvZW5jYXBydHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInRleHQvZW5yaWNoZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInRleHQvZmhpcnBhdGhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInRleHQvZmxleGZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidGV4dC9md2RyZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInRleHQvZ2ZmM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidGV4dC9ncmFtbWFyLXJlZi1saXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ0ZXh0L2hsN3YyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ0ZXh0L2h0bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImh0bWxcIiwgXCJodG1cIiwgXCJzaHRtbFwiXSxcbiAgfSxcbiAgXCJ0ZXh0L2phZGVcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqYWRlXCJdLFxuICB9LFxuICBcInRleHQvamF2YXNjcmlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqc1wiLCBcIm1qc1wiXSxcbiAgfSxcbiAgXCJ0ZXh0L2pjci1jbmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInRleHQvanN4XCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqc3hcIl0sXG4gIH0sXG4gIFwidGV4dC9sZXNzXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsZXNzXCJdLFxuICB9LFxuICBcInRleHQvbWFya2Rvd25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1kXCIsIFwibWFya2Rvd25cIl0sXG4gIH0sXG4gIFwidGV4dC9tYXRobWxcIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibW1sXCJdLFxuICB9LFxuICBcInRleHQvbWR4XCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtZHhcIl0sXG4gIH0sXG4gIFwidGV4dC9taXphclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidGV4dC9uM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJuM1wiXSxcbiAgfSxcbiAgXCJ0ZXh0L3BhcmFtZXRlcnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gIH0sXG4gIFwidGV4dC9wYXJpdHlmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInRleHQvcGxhaW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInR4dFwiLCBcInRleHRcIiwgXCJjb25mXCIsIFwiZGVmXCIsIFwibGlzdFwiLCBcImxvZ1wiLCBcImluXCIsIFwiaW5pXCJdLFxuICB9LFxuICBcInRleHQvcHJvdmVuYW5jZS1ub3RhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgfSxcbiAgXCJ0ZXh0L3Bycy5mYWxsZW5zdGVpbi5yc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInRleHQvcHJzLmxpbmVzLnRhZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRzY1wiXSxcbiAgfSxcbiAgXCJ0ZXh0L3Bycy5wcm9wLmxvZ2ljXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ0ZXh0L3Bycy50ZXhpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ0ZXh0L3JhcHRvcmZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidGV4dC9yZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInRleHQvcmZjODIyLWhlYWRlcnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInRleHQvcmljaHRleHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJ0eFwiXSxcbiAgfSxcbiAgXCJ0ZXh0L3J0ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnRmXCJdLFxuICB9LFxuICBcInRleHQvcnRwLWVuYy1hZXNjbTEyOFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidGV4dC9ydHBsb29wYmFja1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidGV4dC9ydHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInRleHQvc2dtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNnbWxcIiwgXCJzZ21cIl0sXG4gIH0sXG4gIFwidGV4dC9zaGFjbGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInRleHQvc2hleFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNoZXhcIl0sXG4gIH0sXG4gIFwidGV4dC9zbGltXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2xpbVwiLCBcInNsbVwiXSxcbiAgfSxcbiAgXCJ0ZXh0L3NwZHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzcGR4XCJdLFxuICB9LFxuICBcInRleHQvc3RyaW5nc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidGV4dC9zdHlsdXNcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdHlsdXNcIiwgXCJzdHlsXCJdLFxuICB9LFxuICBcInRleHQvdDE0MFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidGV4dC90YWItc2VwYXJhdGVkLXZhbHVlc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHN2XCJdLFxuICB9LFxuICBcInRleHQvdHJvZmZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0XCIsIFwidHJcIiwgXCJyb2ZmXCIsIFwibWFuXCIsIFwibWVcIiwgXCJtc1wiXSxcbiAgfSxcbiAgXCJ0ZXh0L3R1cnRsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHRsXCJdLFxuICB9LFxuICBcInRleHQvdWxwZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ0ZXh0L3VyaS1saXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1cmlcIiwgXCJ1cmlzXCIsIFwidXJsc1wiXSxcbiAgfSxcbiAgXCJ0ZXh0L3ZjYXJkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2Y2FyZFwiXSxcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5hXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5hYmNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInRleHQvdm5kLmFzY2lpLWFydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidGV4dC92bmQuY3VybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImN1cmxcIl0sXG4gIH0sXG4gIFwidGV4dC92bmQuY3VybC5kY3VybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGN1cmxcIl0sXG4gIH0sXG4gIFwidGV4dC92bmQuY3VybC5tY3VybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWN1cmxcIl0sXG4gIH0sXG4gIFwidGV4dC92bmQuY3VybC5zY3VybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2N1cmxcIl0sXG4gIH0sXG4gIFwidGV4dC92bmQuZGViaWFuLmNvcHlyaWdodFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5kbWNsaWVudHNjcmlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidGV4dC92bmQuZHZiLnN1YnRpdGxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3ViXCJdLFxuICB9LFxuICBcInRleHQvdm5kLmVzbWVydGVjLnRoZW1lLWRlc2NyaXB0b3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gIH0sXG4gIFwidGV4dC92bmQuZXhjaGFuZ2VhYmxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5mYW1pbHlzZWFyY2guZ2VkY29tXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2VkXCJdLFxuICB9LFxuICBcInRleHQvdm5kLmZpY2xhYi5mbHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInRleHQvdm5kLmZseVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZseVwiXSxcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5mbWkuZmxleHN0b3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmbHhcIl0sXG4gIH0sXG4gIFwidGV4dC92bmQuZ21sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5ncmFwaHZpelwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImd2XCJdLFxuICB9LFxuICBcInRleHQvdm5kLmhhbnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInRleHQvdm5kLmhnbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidGV4dC92bmQuaW4zZC4zZG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiM2RtbFwiXSxcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5pbjNkLnNwb3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzcG90XCJdLFxuICB9LFxuICBcInRleHQvdm5kLmlwdGMubmV3c21sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5pcHRjLm5pdGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInRleHQvdm5kLmxhdGV4LXpcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInRleHQvdm5kLm1vdG9yb2xhLnJlZmxleFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidGV4dC92bmQubXMtbWVkaWFwYWNrYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5uZXQycGhvbmUuY29tbWNlbnRlci5jb21tYW5kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5yYWRpc3lzLm1zbWwtYmFzaWMtbGF5b3V0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5zZW54LndhcnBzY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInRleHQvdm5kLnNpLnVyaWNhdGFsb2d1ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5zb3NpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5zdW4uajJtZS5hcHAtZGVzY3JpcHRvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiamFkXCJdLFxuICB9LFxuICBcInRleHQvdm5kLnRyb2xsdGVjaC5saW5ndWlzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC52Y2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInRleHQvdm5kLndhcC5zaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidGV4dC92bmQud2FwLnNsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC53YXAud21sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid21sXCJdLFxuICB9LFxuICBcInRleHQvdm5kLndhcC53bWxzY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bWxzXCJdLFxuICB9LFxuICBcInRleHQvdm5kLnpvby5rY2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInRleHQvdnR0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZ0dFwiXSxcbiAgfSxcbiAgXCJ0ZXh0L3dnc2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3Z3NsXCJdLFxuICB9LFxuICBcInRleHQveC1hc21cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNcIiwgXCJhc21cIl0sXG4gIH0sXG4gIFwidGV4dC94LWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNcIiwgXCJjY1wiLCBcImN4eFwiLCBcImNwcFwiLCBcImhcIiwgXCJoaFwiLCBcImRpY1wiXSxcbiAgfSxcbiAgXCJ0ZXh0L3gtY29tcG9uZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImh0Y1wiXSxcbiAgfSxcbiAgXCJ0ZXh0L3gtZm9ydHJhblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZlwiLCBcImZvclwiLCBcImY3N1wiLCBcImY5MFwiXSxcbiAgfSxcbiAgXCJ0ZXh0L3gtZ3d0LXJwY1wiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJ0ZXh0L3gtaGFuZGxlYmFycy10ZW1wbGF0ZVwiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhic1wiXSxcbiAgfSxcbiAgXCJ0ZXh0L3gtamF2YS1zb3VyY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImphdmFcIl0sXG4gIH0sXG4gIFwidGV4dC94LWpxdWVyeS10bXBsXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICB9LFxuICBcInRleHQveC1sdWFcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsdWFcIl0sXG4gIH0sXG4gIFwidGV4dC94LW1hcmtkb3duXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJta2RcIl0sXG4gIH0sXG4gIFwidGV4dC94LW5mb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibmZvXCJdLFxuICB9LFxuICBcInRleHQveC1vcG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvcG1sXCJdLFxuICB9LFxuICBcInRleHQveC1vcmdcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9yZ1wiXSxcbiAgfSxcbiAgXCJ0ZXh0L3gtcGFzY2FsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwXCIsIFwicGFzXCJdLFxuICB9LFxuICBcInRleHQveC1wcm9jZXNzaW5nXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwZGVcIl0sXG4gIH0sXG4gIFwidGV4dC94LXNhc3NcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzYXNzXCJdLFxuICB9LFxuICBcInRleHQveC1zY3NzXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2Nzc1wiXSxcbiAgfSxcbiAgXCJ0ZXh0L3gtc2V0ZXh0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJldHhcIl0sXG4gIH0sXG4gIFwidGV4dC94LXNmdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2Z2XCJdLFxuICB9LFxuICBcInRleHQveC1zdXNlLXltcFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieW1wXCJdLFxuICB9LFxuICBcInRleHQveC11dWVuY29kZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXVcIl0sXG4gIH0sXG4gIFwidGV4dC94LXZjYWxlbmRhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widmNzXCJdLFxuICB9LFxuICBcInRleHQveC12Y2FyZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widmNmXCJdLFxuICB9LFxuICBcInRleHQveG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bWxcIl0sXG4gIH0sXG4gIFwidGV4dC94bWwtZXh0ZXJuYWwtcGFyc2VkLWVudGl0eVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidGV4dC95YW1sXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ5YW1sXCIsIFwieW1sXCJdLFxuICB9LFxuICBcInZpZGVvLzFkLWludGVybGVhdmVkLXBhcml0eWZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vM2dwcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIjNncFwiLCBcIjNncHBcIl0sXG4gIH0sXG4gIFwidmlkZW8vM2dwcC10dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vM2dwcDJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCIzZzJcIl0sXG4gIH0sXG4gIFwidmlkZW8vYXYxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ2aWRlby9ibXBlZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vYnQ2NTZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInZpZGVvL2NlbGJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInZpZGVvL2R2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ2aWRlby9lbmNhcHJ0cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vZXZjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ2aWRlby9mZnYxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ2aWRlby9mbGV4ZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ2aWRlby9oMjYxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaDI2MVwiXSxcbiAgfSxcbiAgXCJ2aWRlby9oMjYzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaDI2M1wiXSxcbiAgfSxcbiAgXCJ2aWRlby9oMjYzLTE5OThcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInZpZGVvL2gyNjMtMjAwMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vaDI2NFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImgyNjRcIl0sXG4gIH0sXG4gIFwidmlkZW8vaDI2NC1yY2RvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ2aWRlby9oMjY0LXN2Y1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vaDI2NVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vaDI2NlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vaXNvLnNlZ21lbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtNHNcIl0sXG4gIH0sXG4gIFwidmlkZW8vanBlZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpwZ3ZcIl0sXG4gIH0sXG4gIFwidmlkZW8vanBlZzIwMDBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInZpZGVvL2pwbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianBtXCIsIFwianBnbVwiXSxcbiAgfSxcbiAgXCJ2aWRlby9qeHN2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ2aWRlby9tYXRyb3NrYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vbWF0cm9za2EtM2RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInZpZGVvL21qMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1qMlwiLCBcIm1qcDJcIl0sXG4gIH0sXG4gIFwidmlkZW8vbXAxc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vbXAycFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vbXAydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRzXCIsIFwibTJ0XCIsIFwibTJ0c1wiLCBcIm10c1wiXSxcbiAgfSxcbiAgXCJ2aWRlby9tcDRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcDRcIiwgXCJtcDR2XCIsIFwibXBnNFwiXSxcbiAgfSxcbiAgXCJ2aWRlby9tcDR2LWVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ2aWRlby9tcGVnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXBlZ1wiLCBcIm1wZ1wiLCBcIm1wZVwiLCBcIm0xdlwiLCBcIm0ydlwiXSxcbiAgfSxcbiAgXCJ2aWRlby9tcGVnNC1nZW5lcmljXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ2aWRlby9tcHZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInZpZGVvL252XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ2aWRlby9vZ2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZ3ZcIl0sXG4gIH0sXG4gIFwidmlkZW8vcGFyaXR5ZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ2aWRlby9wb2ludGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ2aWRlby9xdWlja3RpbWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJxdFwiLCBcIm1vdlwiXSxcbiAgfSxcbiAgXCJ2aWRlby9yYXB0b3JmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInZpZGVvL3Jhd1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vcnRwLWVuYy1hZXNjbTEyOFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vcnRwbG9vcGJhY2tcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInZpZGVvL3J0eFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vc2NpcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vc21wdGUyOTFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInZpZGVvL3NtcHRlMjkybVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vdWxwZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ2aWRlby92YzFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInZpZGVvL3ZjMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vdm5kLmNjdHZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInZpZGVvL3ZuZC5kZWNlLmhkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZoXCIsIFwidXZ2aFwiXSxcbiAgfSxcbiAgXCJ2aWRlby92bmQuZGVjZS5tb2JpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dm1cIiwgXCJ1dnZtXCJdLFxuICB9LFxuICBcInZpZGVvL3ZuZC5kZWNlLm1wNFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vdm5kLmRlY2UucGRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dnBcIiwgXCJ1dnZwXCJdLFxuICB9LFxuICBcInZpZGVvL3ZuZC5kZWNlLnNkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZzXCIsIFwidXZ2c1wiXSxcbiAgfSxcbiAgXCJ2aWRlby92bmQuZGVjZS52aWRlb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2dlwiLCBcInV2dnZcIl0sXG4gIH0sXG4gIFwidmlkZW8vdm5kLmRpcmVjdHYubXBlZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vdm5kLmRpcmVjdHYubXBlZy10dHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInZpZGVvL3ZuZC5kbG5hLm1wZWctdHRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ2aWRlby92bmQuZHZiLmZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkdmJcIl0sXG4gIH0sXG4gIFwidmlkZW8vdm5kLmZ2dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZ2dFwiXSxcbiAgfSxcbiAgXCJ2aWRlby92bmQuaG5zLnZpZGVvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ2aWRlby92bmQuaXB0dmZvcnVtLjFkcGFyaXR5ZmVjLTEwMTBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInZpZGVvL3ZuZC5pcHR2Zm9ydW0uMWRwYXJpdHlmZWMtMjAwNVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vdm5kLmlwdHZmb3J1bS4yZHBhcml0eWZlYy0xMDEwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ2aWRlby92bmQuaXB0dmZvcnVtLjJkcGFyaXR5ZmVjLTIwMDVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInZpZGVvL3ZuZC5pcHR2Zm9ydW0udHRzYXZjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ2aWRlby92bmQuaXB0dmZvcnVtLnR0c21wZWcyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ2aWRlby92bmQubW90b3JvbGEudmlkZW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInZpZGVvL3ZuZC5tb3Rvcm9sYS52aWRlb3BcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInZpZGVvL3ZuZC5tcGVndXJsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXh1XCIsIFwibTR1XCJdLFxuICB9LFxuICBcInZpZGVvL3ZuZC5tcy1wbGF5cmVhZHkubWVkaWEucHl2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHl2XCJdLFxuICB9LFxuICBcInZpZGVvL3ZuZC5ub2tpYS5pbnRlcmxlYXZlZC1tdWx0aW1lZGlhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ2aWRlby92bmQubm9raWEubXA0dnJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInZpZGVvL3ZuZC5ub2tpYS52aWRlb3ZvaXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInZpZGVvL3ZuZC5vYmplY3R2aWRlb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vdm5kLnJhZGdhbWV0dG9vbHMuYmlua1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vdm5kLnJhZGdhbWV0dG9vbHMuc21hY2tlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgfSxcbiAgXCJ2aWRlby92bmQuc2VhbGVkLm1wZWcxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ2aWRlby92bmQuc2VhbGVkLm1wZWc0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ2aWRlby92bmQuc2VhbGVkLnN3ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vdm5kLnNlYWxlZG1lZGlhLnNvZnRzZWFsLm1vdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vdm5kLnV2dnUubXA0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZ1XCIsIFwidXZ2dVwiXSxcbiAgfSxcbiAgXCJ2aWRlby92bmQudml2b1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZpdlwiXSxcbiAgfSxcbiAgXCJ2aWRlby92bmQueW91dHViZS55dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gIH0sXG4gIFwidmlkZW8vdnA4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgfSxcbiAgXCJ2aWRlby92cDlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICB9LFxuICBcInZpZGVvL3dlYm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndlYm1cIl0sXG4gIH0sXG4gIFwidmlkZW8veC1mNHZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImY0dlwiXSxcbiAgfSxcbiAgXCJ2aWRlby94LWZsaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmxpXCJdLFxuICB9LFxuICBcInZpZGVvL3gtZmx2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmbHZcIl0sXG4gIH0sXG4gIFwidmlkZW8veC1tNHZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm00dlwiXSxcbiAgfSxcbiAgXCJ2aWRlby94LW1hdHJvc2thXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJta3ZcIiwgXCJtazNkXCIsIFwibWtzXCJdLFxuICB9LFxuICBcInZpZGVvL3gtbW5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtbmdcIl0sXG4gIH0sXG4gIFwidmlkZW8veC1tcy1hc2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFzZlwiLCBcImFzeFwiXSxcbiAgfSxcbiAgXCJ2aWRlby94LW1zLXZvYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widm9iXCJdLFxuICB9LFxuICBcInZpZGVvL3gtbXMtd21cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndtXCJdLFxuICB9LFxuICBcInZpZGVvL3gtbXMtd212XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bXZcIl0sXG4gIH0sXG4gIFwidmlkZW8veC1tcy13bXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndteFwiXSxcbiAgfSxcbiAgXCJ2aWRlby94LW1zLXd2eFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid3Z4XCJdLFxuICB9LFxuICBcInZpZGVvL3gtbXN2aWRlb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXZpXCJdLFxuICB9LFxuICBcInZpZGVvL3gtc2dpLW1vdmllXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtb3ZpZVwiXSxcbiAgfSxcbiAgXCJ2aWRlby94LXNtdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic212XCJdLFxuICB9LFxuICBcIngtY29uZmVyZW5jZS94LWNvb2x0YWxrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpY2VcIl0sXG4gIH0sXG4gIFwieC1zaGFkZXIveC1mcmFnbWVudFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbiAgXCJ4LXNoYWRlci94LXZlcnRleFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgfSxcbn0gYXMgY29uc3Q7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQyxlQUFlO0VBQ2Isd0NBQXdDO0lBQ3RDLFVBQVU7RUFDWjtFQUNBLHNDQUFzQztJQUNwQyxVQUFVO0lBQ1YsV0FBVztJQUNYLGdCQUFnQjtFQUNsQjtFQUNBLDRCQUE0QjtJQUMxQixVQUFVO0lBQ1YsZ0JBQWdCO0VBQ2xCO0VBQ0EsNEJBQTRCO0lBQzFCLFVBQVU7SUFDVixnQkFBZ0I7RUFDbEI7RUFDQSxpQ0FBaUM7SUFDL0IsVUFBVTtJQUNWLGdCQUFnQjtFQUNsQjtFQUNBLG1CQUFtQjtJQUNqQixVQUFVO0VBQ1o7RUFDQSx3QkFBd0I7SUFDdEIsVUFBVTtFQUNaO0VBQ0Esd0JBQXdCO0lBQ3RCLFVBQVU7SUFDVixnQkFB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 +// denoCacheMetadata=9632404770679671142,4954239492292988578
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/ed23d1e1eba157f2190d0d22d30ee2e89c4ea2a35d78e2587f1e763f894285a7.js b/vendor/gen/https/jsr.io/ed23d1e1eba157f2190d0d22d30ee2e89c4ea2a35d78e2587f1e763f894285a7.js new file mode 100644 index 0000000..8330763 --- /dev/null +++ b/vendor/gen/https/jsr.io/ed23d1e1eba157f2190d0d22d30ee2e89c4ea2a35d78e2587f1e763f894285a7.js @@ -0,0 +1,16 @@ +import { denoResolverPlugin } from "./src/plugin_deno_resolver.ts"; +export { denoResolverPlugin }; +import { DEFAULT_LOADER, denoLoaderPlugin } from "./src/plugin_deno_loader.ts"; +export { DEFAULT_LOADER, denoLoaderPlugin }; +export { esbuildResolutionToURL, urlToEsbuildResolution } from "./src/shared.ts"; +/** + * A convenience function to enable both the Deno resolver plugin, and Deno + * loader plugin. + */ export function denoPlugins(opts = {}) { + return [ + denoResolverPlugin(opts), + denoLoaderPlugin(opts) + ]; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BsdWNhL2VzYnVpbGQtZGVuby1sb2FkZXIvMC4xMS4xL21vZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIGVzYnVpbGQgZnJvbSBcIi4vc3JjL2VzYnVpbGRfdHlwZXMudHNcIjtcblxuaW1wb3J0IHtcbiAgZGVub1Jlc29sdmVyUGx1Z2luLFxuICB0eXBlIERlbm9SZXNvbHZlclBsdWdpbk9wdGlvbnMsXG59IGZyb20gXCIuL3NyYy9wbHVnaW5fZGVub19yZXNvbHZlci50c1wiO1xuZXhwb3J0IHsgZGVub1Jlc29sdmVyUGx1Z2luLCB0eXBlIERlbm9SZXNvbHZlclBsdWdpbk9wdGlvbnMgfTtcblxuaW1wb3J0IHtcbiAgREVGQVVMVF9MT0FERVIsXG4gIGRlbm9Mb2FkZXJQbHVnaW4sXG4gIHR5cGUgRGVub0xvYWRlclBsdWdpbk9wdGlvbnMsXG59IGZyb20gXCIuL3NyYy9wbHVnaW5fZGVub19sb2FkZXIudHNcIjtcbmV4cG9ydCB7IERFRkFVTFRfTE9BREVSLCBkZW5vTG9hZGVyUGx1Z2luLCB0eXBlIERlbm9Mb2FkZXJQbHVnaW5PcHRpb25zIH07XG5cbmV4cG9ydCB7XG4gIHR5cGUgRXNidWlsZFJlc29sdXRpb24sXG4gIGVzYnVpbGRSZXNvbHV0aW9uVG9VUkwsXG4gIHVybFRvRXNidWlsZFJlc29sdXRpb24sXG59IGZyb20gXCIuL3NyYy9zaGFyZWQudHNcIjtcblxuLyoqIE9wdGlvbnMgZm9yIHRoZSB7QGxpbmsgZGVub1BsdWdpbnN9IGZ1bmN0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZW5vUGx1Z2luc09wdGlvbnMge1xuICAvKipcbiAgICogU3BlY2lmeSB3aGljaCBsb2FkZXIgdG8gdXNlLiBCeSBkZWZhdWx0IHRoaXMgd2lsbCB1c2UgdGhlIGBuYXRpdmVgIGxvYWRlcixcbiAgICogdW5sZXNzIHRoZSBgLS1hbGxvdy1ydW5gIHBlcm1pc3Npb24gaGFzIG5vdCBiZWVuIGdpdmVuLlxuICAgKlxuICAgKiBTZWUge0BsaW5rIGRlbm9Mb2FkZXJQbHVnaW59IGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBkaWZmZXJlbnQgbG9hZGVycy5cbiAgICovXG4gIGxvYWRlcj86IFwibmF0aXZlXCIgfCBcInBvcnRhYmxlXCI7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIHBhdGggdG8gYSBkZW5vLmpzb24gY29uZmlnIGZpbGUgdG8gdXNlLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG9cbiAgICogdGhlIGAtLWNvbmZpZ2AgZmxhZyB0byB0aGUgRGVubyBleGVjdXRhYmxlLiBUaGlzIHBhdGggbXVzdCBiZSBhYnNvbHV0ZS5cbiAgICpcbiAgICogSWYgbm90IHNwZWNpZmllZCwgdGhlIHBsdWdpbiB3aWxsIGF0dGVtcHQgdG8gZmluZCB0aGUgbmVhcmVzdCBkZW5vLmpzb24gYW5kXG4gICAqIHVzZSB0aGF0LiBJZiB0aGUgZGVuby5qc29uIGlzIHBhcnQgb2YgYSB3b3Jrc3BhY2UsIHRoZSBwbHVnaW4gd2lsbFxuICAgKiBhdXRvbWF0aWNhbGx5IGZpbmQgdGhlIHdvcmtzcGFjZSByb290LlxuICAgKi9cbiAgY29uZmlnUGF0aD86IHN0cmluZztcbiAgLyoqXG4gICAqIFNwZWNpZnkgYSBVUkwgdG8gYW4gaW1wb3J0IG1hcCBmaWxlIHRvIHVzZSB3aGVuIHJlc29sdmluZyBpbXBvcnRcbiAgICogc3BlY2lmaWVycy4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBgLS1pbXBvcnQtbWFwYCBmbGFnIHRvIHRoZSBEZW5vXG4gICAqIGV4ZWN1dGFibGUuIFRoaXMgVVJMIG1heSBiZSByZW1vdGUgb3IgYSBsb2NhbCBmaWxlIFVSTC5cbiAgICpcbiAgICogSWYgdGhpcyBvcHRpb24gaXMgbm90IHNwZWNpZmllZCwgdGhlIGRlbm8uanNvbiBjb25maWcgZmlsZSBpcyBjb25zdWx0ZWQgdG9cbiAgICogZGV0ZXJtaW5lIHdoYXQgaW1wb3J0IG1hcCB0byB1c2UsIGlmIGFueS5cbiAgICovXG4gIGltcG9ydE1hcFVSTD86IHN0cmluZztcbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIHBhdGggdG8gYSBkZW5vLmxvY2sgZmlsZSB0byB1c2UuIFRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGVcbiAgICogYC0tbG9ja2AgZmxhZyB0byB0aGUgRGVubyBleGVjdXRhYmxlLiBUaGlzIHBhdGggbXVzdCBiZSBhYnNvbHV0ZS5cbiAgICpcbiAgICogSWYgdGhpcyBvcHRpb24gaXMgbm90IHNwZWNpZmllZCwgdGhlIGRlbm8uanNvbiBjb25maWcgZmlsZSBpcyBjb25zdWx0ZWQgdG9cbiAgICogZGV0ZXJtaW5lIHdoYXQgbG9jayBmaWxlIHRvIHVzZSwgaWYgYW55LlxuICAgKlxuICAgKiBBIGxvY2tmaWxlIG11c3QgYmUgcHJlc2VudCB0byByZXNvbHZlIGBqc3I6YCBzcGVjaWZpZXJzIHdpdGggdGhlIGBwb3J0YWJsZWBcbiAgICogbG9hZGVyLiBXaGVuIHVzaW5nIHRoZSBgbmF0aXZlYCBsb2FkZXIsIGEgbG9ja2ZpbGUgaXMgbm90IHJlcXVpcmVkLCBidXQgdG9cbiAgICogZW5zdXJlIGRlcGVuZGVuY2llcyBhcmUgZGUtZHVwbGljYXRlZCBjb3JyZWN0bHksIGl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSBhXG4gICAqIGxvY2tmaWxlLlxuICAgKi9cbiAgbG9ja1BhdGg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTcGVjaWZ5IGhvdyB0aGUgbG9hZGVyIHNob3VsZCBoYW5kbGUgTlBNIHBhY2thZ2VzLiBCeSBkZWZhdWx0IGFuZCBpZiB0aGlzXG4gICAqIG9wdGlvbiBpcyBzZXQgdG8gYG5vbmVgLCB0aGUgbG9hZGVyIHdpbGwgdXNlIHRoZSBnbG9iYWwgY2FjaGUgdG8gcmVzb2x2ZVxuICAgKiBOUE0gcGFja2FnZXMuIElmIHRoaXMgb3B0aW9uIGlzIHNldCB0byBgbWFudWFsYCwgdGhlIGxvYWRlciB3aWxsIHVzZSBhXG4gICAqIG1hbnVhbGx5IG1hbmFnZWQgYG5vZGVfbW9kdWxlc2AgZGlyZWN0b3J5LiBJZiB0aGlzIG9wdGlvbiBpcyBzZXQgdG8gYGF1dG9gLFxuICAgKiB0aGUgbG9hZGVyIHdpbGwgdXNlIGEgbG9jYWwgYG5vZGVfbW9kdWxlc2AgZGlyZWN0b3J5LlxuICAgKlxuICAgKiBJZiB0aGlzIG9wdGlvbiBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZGVuby5qc29uIGNvbmZpZyBmaWxlIGlzIGNvbnN1bHRlZCB0b1xuICAgKiBkZXRlcm1pbmUgd2hpY2ggbW9kZSB0byB1c2UuXG4gICAqXG4gICAqIFRoaXMgb3B0aW9uIGlzIGlnbm9yZWQgd2hlbiB1c2luZyB0aGUgYHBvcnRhYmxlYCBsb2FkZXIsIGFzIHRoZSBwb3J0YWJsZVxuICAgKiBsb2FkZXIgYWx3YXlzIHVzZXMgYSBtYW51YWwgYG5vZGVfbW9kdWxlc2AgZGlyZWN0b3J5IChlcXVpdmFsZW50IG9mXG4gICAqIGBub2RlTW9kdWxlc0RpcjogXCJtYW51YWxcImApLlxuICAgKi9cbiAgbm9kZU1vZHVsZXNEaXI/OiBcImF1dG9cIiB8IFwibWFudWFsXCIgfCBcIm5vbmVcIjtcbn1cblxuLyoqXG4gKiBBIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGVuYWJsZSBib3RoIHRoZSBEZW5vIHJlc29sdmVyIHBsdWdpbiwgYW5kIERlbm9cbiAqIGxvYWRlciBwbHVnaW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZW5vUGx1Z2lucyhvcHRzOiBEZW5vUGx1Z2luc09wdGlvbnMgPSB7fSk6IGVzYnVpbGQuUGx1Z2luW10ge1xuICByZXR1cm4gW1xuICAgIGRlbm9SZXNvbHZlclBsdWdpbihvcHRzKSxcbiAgICBkZW5vTG9hZGVyUGx1Z2luKG9wdHMpLFxuICBdO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLFNBQ0Usa0JBQWtCLFFBRWIsZ0NBQWdDO0FBQ3ZDLFNBQVMsa0JBQWtCLEdBQW1DO0FBRTlELFNBQ0UsY0FBYyxFQUNkLGdCQUFnQixRQUVYLDhCQUE4QjtBQUNyQyxTQUFTLGNBQWMsRUFBRSxnQkFBZ0IsR0FBaUM7QUFFMUUsU0FFRSxzQkFBc0IsRUFDdEIsc0JBQXNCLFFBQ2pCLGtCQUFrQjtBQTREekI7OztDQUdDLEdBQ0QsT0FBTyxTQUFTLFlBQVksT0FBMkIsQ0FBQyxDQUFDO0VBQ3ZELE9BQU87SUFDTCxtQkFBbUI7SUFDbkIsaUJBQWlCO0dBQ2xCO0FBQ0gifQ== +// denoCacheMetadata=8239385849397319146,7117649278847295267
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/ed6cbf64a1608cf2107868a43906eb1a831cded43d18a797400a571a05c0f531.js b/vendor/gen/https/jsr.io/ed6cbf64a1608cf2107868a43906eb1a831cded43d18a797400a571a05c0f531.js new file mode 100644 index 0000000..03dc0ac --- /dev/null +++ b/vendor/gen/https/jsr.io/ed6cbf64a1608cf2107868a43906eb1a831cded43d18a797400a571a05c0f531.js @@ -0,0 +1,86 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { _globToRegExp } from "../_common/glob_to_reg_exp.ts"; +const constants = { + sep: "(?:\\\\|/)+", + sepMaybe: "(?:\\\\|/)*", + seps: [ + "\\", + "/" + ], + globstar: "(?:[^\\\\/]*(?:\\\\|/|$)+)*", + wildcard: "[^\\\\/]*", + escapePrefix: "`" +}; +/** Convert a glob string to a regular expression. + * + * Tries to match bash glob expansion as closely as possible. + * + * Basic glob syntax: + * - `*` - Matches everything without leaving the path segment. + * - `?` - Matches any single character. + * - `{foo,bar}` - Matches `foo` or `bar`. + * - `[abcd]` - Matches `a`, `b`, `c` or `d`. + * - `[a-d]` - Matches `a`, `b`, `c` or `d`. + * - `[!abcd]` - Matches any single character besides `a`, `b`, `c` or `d`. + * - `[[:<class>:]]` - Matches any character belonging to `<class>`. + * - `[[:alnum:]]` - Matches any digit or letter. + * - `[[:digit:]abc]` - Matches any digit, `a`, `b` or `c`. + * - See https://facelessuser.github.io/wcmatch/glob/#posix-character-classes + * for a complete list of supported character classes. + * - `\` - Escapes the next character for an `os` other than `"windows"`. + * - \` - Escapes the next character for `os` set to `"windows"`. + * - `/` - Path separator. + * - `\` - Additional path separator only for `os` set to `"windows"`. + * + * Extended syntax: + * - Requires `{ extended: true }`. + * - `?(foo|bar)` - Matches 0 or 1 instance of `{foo,bar}`. + * - `@(foo|bar)` - Matches 1 instance of `{foo,bar}`. They behave the same. + * - `*(foo|bar)` - Matches _n_ instances of `{foo,bar}`. + * - `+(foo|bar)` - Matches _n > 0_ instances of `{foo,bar}`. + * - `!(foo|bar)` - Matches anything other than `{foo,bar}`. + * - See https://www.linuxjournal.com/content/bash-extended-globbing. + * + * Globstar syntax: + * - Requires `{ globstar: true }`. + * - `**` - Matches any number of any path segments. + * - Must comprise its entire path segment in the provided glob. + * - See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * + * Note the following properties: + * - The generated `RegExp` is anchored at both start and end. + * - Repeating and trailing separators are tolerated. Trailing separators in the + * provided glob have no meaning and are discarded. + * - Absolute globs will only match absolute paths, etc. + * - Empty globs will match nothing. + * - Any special glob syntax must be contained to one path segment. For example, + * `?(foo|bar/baz)` is invalid. The separator will take precedence and the + * first segment ends with an unclosed group. + * - If a path segment ends with unclosed groups or a dangling escape prefix, a + * parse error has occurred. Every character for that segment is taken + * literally in this event. + * + * Limitations: + * - A negative group like `!(foo|bar)` will wrongly be converted to a negative + * look-ahead followed by a wildcard. This means that `!(foo).js` will wrongly + * fail to match `foobar.js`, even though `foobar` is not `foo`. Effectively, + * `!(foo|bar)` is treated like `!(@(foo|bar)*)`. This will work correctly if + * the group occurs not nested at the end of the segment. + * + * @example Usage + * ```ts + * import { globToRegExp } from "@std/path/windows/glob-to-regexp"; + * import { assertEquals } from "@std/assert"; + * + * assertEquals(globToRegExp("*.js"), /^[^\\/]*\.js(?:\\|\/)*$/); + * ``` + * + * @param glob Glob string to convert. + * @param options Conversion options. + * @returns The regular expression equivalent to the glob. + */ export function globToRegExp(glob, options = {}) { + return _globToRegExp(constants, glob, options); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC93aW5kb3dzL2dsb2JfdG9fcmVnZXhwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7XG4gIF9nbG9iVG9SZWdFeHAsXG4gIHR5cGUgR2xvYkNvbnN0YW50cyxcbiAgdHlwZSBHbG9iT3B0aW9ucyxcbn0gZnJvbSBcIi4uL19jb21tb24vZ2xvYl90b19yZWdfZXhwLnRzXCI7XG5cbmNvbnN0IGNvbnN0YW50czogR2xvYkNvbnN0YW50cyA9IHtcbiAgc2VwOiBcIig/OlxcXFxcXFxcfC8pK1wiLFxuICBzZXBNYXliZTogXCIoPzpcXFxcXFxcXHwvKSpcIixcbiAgc2VwczogW1wiXFxcXFwiLCBcIi9cIl0sXG4gIGdsb2JzdGFyOiBcIig/OlteXFxcXFxcXFwvXSooPzpcXFxcXFxcXHwvfCQpKykqXCIsXG4gIHdpbGRjYXJkOiBcIlteXFxcXFxcXFwvXSpcIixcbiAgZXNjYXBlUHJlZml4OiBcImBcIixcbn07XG5cbi8qKiBDb252ZXJ0IGEgZ2xvYiBzdHJpbmcgdG8gYSByZWd1bGFyIGV4cHJlc3Npb24uXG4gKlxuICogVHJpZXMgdG8gbWF0Y2ggYmFzaCBnbG9iIGV4cGFuc2lvbiBhcyBjbG9zZWx5IGFzIHBvc3NpYmxlLlxuICpcbiAqIEJhc2ljIGdsb2Igc3ludGF4OlxuICogLSBgKmAgLSBNYXRjaGVzIGV2ZXJ5dGhpbmcgd2l0aG91dCBsZWF2aW5nIHRoZSBwYXRoIHNlZ21lbnQuXG4gKiAtIGA/YCAtIE1hdGNoZXMgYW55IHNpbmdsZSBjaGFyYWN0ZXIuXG4gKiAtIGB7Zm9vLGJhcn1gIC0gTWF0Y2hlcyBgZm9vYCBvciBgYmFyYC5cbiAqIC0gYFthYmNkXWAgLSBNYXRjaGVzIGBhYCwgYGJgLCBgY2Agb3IgYGRgLlxuICogLSBgW2EtZF1gIC0gTWF0Y2hlcyBgYWAsIGBiYCwgYGNgIG9yIGBkYC5cbiAqIC0gYFshYWJjZF1gIC0gTWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3RlciBiZXNpZGVzIGBhYCwgYGJgLCBgY2Agb3IgYGRgLlxuICogLSBgW1s6PGNsYXNzPjpdXWAgLSBNYXRjaGVzIGFueSBjaGFyYWN0ZXIgYmVsb25naW5nIHRvIGA8Y2xhc3M+YC5cbiAqICAgICAtIGBbWzphbG51bTpdXWAgLSBNYXRjaGVzIGFueSBkaWdpdCBvciBsZXR0ZXIuXG4gKiAgICAgLSBgW1s6ZGlnaXQ6XWFiY11gIC0gTWF0Y2hlcyBhbnkgZGlnaXQsIGBhYCwgYGJgIG9yIGBjYC5cbiAqICAgICAtIFNlZSBodHRwczovL2ZhY2VsZXNzdXNlci5naXRodWIuaW8vd2NtYXRjaC9nbG9iLyNwb3NpeC1jaGFyYWN0ZXItY2xhc3Nlc1xuICogICAgICAgZm9yIGEgY29tcGxldGUgbGlzdCBvZiBzdXBwb3J0ZWQgY2hhcmFjdGVyIGNsYXNzZXMuXG4gKiAtIGBcXGAgLSBFc2NhcGVzIHRoZSBuZXh0IGNoYXJhY3RlciBmb3IgYW4gYG9zYCBvdGhlciB0aGFuIGBcIndpbmRvd3NcImAuXG4gKiAtIFxcYCAtIEVzY2FwZXMgdGhlIG5leHQgY2hhcmFjdGVyIGZvciBgb3NgIHNldCB0byBgXCJ3aW5kb3dzXCJgLlxuICogLSBgL2AgLSBQYXRoIHNlcGFyYXRvci5cbiAqIC0gYFxcYCAtIEFkZGl0aW9uYWwgcGF0aCBzZXBhcmF0b3Igb25seSBmb3IgYG9zYCBzZXQgdG8gYFwid2luZG93c1wiYC5cbiAqXG4gKiBFeHRlbmRlZCBzeW50YXg6XG4gKiAtIFJlcXVpcmVzIGB7IGV4dGVuZGVkOiB0cnVlIH1gLlxuICogLSBgPyhmb298YmFyKWAgLSBNYXRjaGVzIDAgb3IgMSBpbnN0YW5jZSBvZiBge2ZvbyxiYXJ9YC5cbiAqIC0gYEAoZm9vfGJhcilgIC0gTWF0Y2hlcyAxIGluc3RhbmNlIG9mIGB7Zm9vLGJhcn1gLiBUaGV5IGJlaGF2ZSB0aGUgc2FtZS5cbiAqIC0gYCooZm9vfGJhcilgIC0gTWF0Y2hlcyBfbl8gaW5zdGFuY2VzIG9mIGB7Zm9vLGJhcn1gLlxuICogLSBgKyhmb298YmFyKWAgLSBNYXRjaGVzIF9uID4gMF8gaW5zdGFuY2VzIG9mIGB7Zm9vLGJhcn1gLlxuICogLSBgIShmb298YmFyKWAgLSBNYXRjaGVzIGFueXRoaW5nIG90aGVyIHRoYW4gYHtmb28sYmFyfWAuXG4gKiAtIFNlZSBodHRwczovL3d3dy5saW51eGpvdXJuYWwuY29tL2NvbnRlbnQvYmFzaC1leHRlbmRlZC1nbG9iYmluZy5cbiAqXG4gKiBHbG9ic3RhciBzeW50YXg6XG4gKiAtIFJlcXVpcmVzIGB7IGdsb2JzdGFyOiB0cnVlIH1gLlxuICogLSBgKipgIC0gTWF0Y2hlcyBhbnkgbnVtYmVyIG9mIGFueSBwYXRoIHNlZ21lbnRzLlxuICogICAgIC0gTXVzdCBjb21wcmlzZSBpdHMgZW50aXJlIHBhdGggc2VnbWVudCBpbiB0aGUgcHJvdmlkZWQgZ2xvYi5cbiAqIC0gU2VlIGh0dHBzOi8vd3d3LmxpbnV4am91cm5hbC5jb20vY29udGVudC9nbG9ic3Rhci1uZXctYmFzaC1nbG9iYmluZy1vcHRpb24uXG4gKlxuICogTm90ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKiAtIFRoZSBnZW5lcmF0ZWQgYFJlZ0V4cGAgaXMgYW5jaG9yZWQgYXQgYm90aCBzdGFydCBhbmQgZW5kLlxuICogLSBSZXBlYXRpbmcgYW5kIHRyYWlsaW5nIHNlcGFyYXRvcnMgYXJlIHRvbGVyYXRlZC4gVHJhaWxpbmcgc2VwYXJhdG9ycyBpbiB0aGVcbiAqICAgcHJvdmlkZWQgZ2xvYiBoYXZlIG5vIG1lYW5pbmcgYW5kIGFyZSBkaXNjYXJkZWQuXG4gKiAtIEFic29sdXRlIGdsb2JzIHdpbGwgb25seSBtYXRjaCBhYnNvbHV0ZSBwYXRocywgZXRjLlxuICogLSBFbXB0eSBnbG9icyB3aWxsIG1hdGNoIG5vdGhpbmcuXG4gKiAtIEFueSBzcGVjaWFsIGdsb2Igc3ludGF4IG11c3QgYmUgY29udGFpbmVkIHRvIG9uZSBwYXRoIHNlZ21lbnQuIEZvciBleGFtcGxlLFxuICogICBgPyhmb298YmFyL2JheilgIGlzIGludmFsaWQuIFRoZSBzZXBhcmF0b3Igd2lsbCB0YWtlIHByZWNlZGVuY2UgYW5kIHRoZVxuICogICBmaXJzdCBzZWdtZW50IGVuZHMgd2l0aCBhbiB1bmNsb3NlZCBncm91cC5cbiAqIC0gSWYgYSBwYXRoIHNlZ21lbnQgZW5kcyB3aXRoIHVuY2xvc2VkIGdyb3VwcyBvciBhIGRhbmdsaW5nIGVzY2FwZSBwcmVmaXgsIGFcbiAqICAgcGFyc2UgZXJyb3IgaGFzIG9jY3VycmVkLiBFdmVyeSBjaGFyYWN0ZXIgZm9yIHRoYXQgc2VnbWVudCBpcyB0YWtlblxuICogICBsaXRlcmFsbHkgaW4gdGhpcyBldmVudC5cbiAqXG4gKiBMaW1pdGF0aW9uczpcbiAqIC0gQSBuZWdhdGl2ZSBncm91cCBsaWtlIGAhKGZvb3xiYXIpYCB3aWxsIHdyb25nbHkgYmUgY29udmVydGVkIHRvIGEgbmVnYXRpdmVcbiAqICAgbG9vay1haGVhZCBmb2xsb3dlZCBieSBhIHdpbGRjYXJkLiBUaGlzIG1lYW5zIHRoYXQgYCEoZm9vKS5qc2Agd2lsbCB3cm9uZ2x5XG4gKiAgIGZhaWwgdG8gbWF0Y2ggYGZvb2Jhci5qc2AsIGV2ZW4gdGhvdWdoIGBmb29iYXJgIGlzIG5vdCBgZm9vYC4gRWZmZWN0aXZlbHksXG4gKiAgIGAhKGZvb3xiYXIpYCBpcyB0cmVhdGVkIGxpa2UgYCEoQChmb298YmFyKSopYC4gVGhpcyB3aWxsIHdvcmsgY29ycmVjdGx5IGlmXG4gKiAgIHRoZSBncm91cCBvY2N1cnMgbm90IG5lc3RlZCBhdCB0aGUgZW5kIG9mIHRoZSBzZWdtZW50LlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZ2xvYlRvUmVnRXhwIH0gZnJvbSBcIkBzdGQvcGF0aC93aW5kb3dzL2dsb2ItdG8tcmVnZXhwXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoZ2xvYlRvUmVnRXhwKFwiKi5qc1wiKSwgL15bXlxcXFwvXSpcXC5qcyg/OlxcXFx8XFwvKSokLyk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gZ2xvYiBHbG9iIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHBhcmFtIG9wdGlvbnMgQ29udmVyc2lvbiBvcHRpb25zLlxuICogQHJldHVybnMgVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBlcXVpdmFsZW50IHRvIHRoZSBnbG9iLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2xvYlRvUmVnRXhwKFxuICBnbG9iOiBzdHJpbmcsXG4gIG9wdGlvbnM6IEdsb2JPcHRpb25zID0ge30sXG4pOiBSZWdFeHAge1xuICByZXR1cm4gX2dsb2JUb1JlZ0V4cChjb25zdGFudHMsIGdsb2IsIG9wdGlvbnMpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxxQ0FBcUM7QUFFckMsU0FDRSxhQUFhLFFBR1IsZ0NBQWdDO0FBRXZDLE1BQU0sWUFBMkI7RUFDL0IsS0FBSztFQUNMLFVBQVU7RUFDVixNQUFNO0lBQUM7SUFBTTtHQUFJO0VBQ2pCLFVBQVU7RUFDVixVQUFVO0VBQ1YsY0FBYztBQUNoQjtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBbUVDLEdBQ0QsT0FBTyxTQUFTLGFBQ2QsSUFBWSxFQUNaLFVBQXVCLENBQUMsQ0FBQztFQUV6QixPQUFPLGNBQWMsV0FBVyxNQUFNO0FBQ3hDIn0= +// denoCacheMetadata=1025757602365488590,10007642603385308650
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/ee949e354ee9f474ec486fc007d8be5fa472e19e53ac9adbb6b914de5d609260.js b/vendor/gen/https/jsr.io/ee949e354ee9f474ec486fc007d8be5fa472e19e53ac9adbb6b914de5d609260.js new file mode 100644 index 0000000..2f1e40f --- /dev/null +++ b/vendor/gen/https/jsr.io/ee949e354ee9f474ec486fc007d8be5fa472e19e53ac9adbb6b914de5d609260.js @@ -0,0 +1,22 @@ +// Ported and adapted from js-yaml-js-types v1.0.0: +// https://github.com/nodeca/js-yaml-js-types/tree/ac537e7bbdd3c2cbbd9882ca3919c520c2dc022b +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2025 the Deno authors. MIT license. +export const undefinedType = { + tag: "tag:yaml.org,2002:js/undefined", + kind: "scalar", + resolve () { + return true; + }, + construct () { + return undefined; + }, + predicate (object) { + return typeof object === "undefined"; + }, + represent () { + return ""; + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQveWFtbC8xLjAuNi9fdHlwZS91bmRlZmluZWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUG9ydGVkIGFuZCBhZGFwdGVkIGZyb20ganMteWFtbC1qcy10eXBlcyB2MS4wLjA6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWNhL2pzLXlhbWwtanMtdHlwZXMvdHJlZS9hYzUzN2U3YmJkZDNjMmNiYmQ5ODgyY2EzOTE5YzUyMGMyZGMwMjJiXG4vLyBDb3B5cmlnaHQgMjAxMS0yMDE1IGJ5IFZpdGFseSBQdXpyaW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cblxuaW1wb3J0IHR5cGUgeyBUeXBlIH0gZnJvbSBcIi4uL190eXBlLnRzXCI7XG5cbmV4cG9ydCBjb25zdCB1bmRlZmluZWRUeXBlOiBUeXBlPFwic2NhbGFyXCIsIHVuZGVmaW5lZD4gPSB7XG4gIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjpqcy91bmRlZmluZWRcIixcbiAga2luZDogXCJzY2FsYXJcIixcbiAgcmVzb2x2ZSgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcbiAgY29uc3RydWN0KCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0sXG4gIHByZWRpY2F0ZShvYmplY3QpIHtcbiAgICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gXCJ1bmRlZmluZWRcIjtcbiAgfSxcbiAgcmVwcmVzZW50KCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9LFxufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtREFBbUQ7QUFDbkQsMkZBQTJGO0FBQzNGLDBFQUEwRTtBQUMxRSxxREFBcUQ7QUFJckQsT0FBTyxNQUFNLGdCQUEyQztFQUN0RCxLQUFLO0VBQ0wsTUFBTTtFQUNOO0lBQ0UsT0FBTztFQUNUO0VBQ0E7SUFDRSxPQUFPO0VBQ1Q7RUFDQSxXQUFVLE1BQU07SUFDZCxPQUFPLE9BQU8sV0FBVztFQUMzQjtFQUNBO0lBQ0UsT0FBTztFQUNUO0FBQ0YsRUFBRSJ9 +// denoCacheMetadata=2136136951947009041,7134439842122707969
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/eede9b66af1c66357dabce516fa2c2884c263f459544ed190e0330d74d005242.js b/vendor/gen/https/jsr.io/eede9b66af1c66357dabce516fa2c2884c263f459544ed190e0330d74d005242.js new file mode 100644 index 0000000..1547378 --- /dev/null +++ b/vendor/gen/https/jsr.io/eede9b66af1c66357dabce516fa2c2884c263f459544ed190e0330d74d005242.js @@ -0,0 +1,68 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * Returns the index of the first occurrence of the needle array in the source + * array, or -1 if it is not present. + * + * A start index can be specified as the third argument that begins the search + * at that given index. The start index defaults to the start of the array. + * + * The complexity of this function is `O(source.length * needle.length)`. + * + * @param source Source array to check. + * @param needle Needle array to check for. + * @param start Start index in the source array to begin the search. Defaults to + * 0. + * @returns Index of the first occurrence of the needle array in the source + * array, or -1 if it is not present. + * + * @example Basic usage + * ```ts + * import { indexOfNeedle } from "@std/bytes/index-of-needle"; + * import { assertEquals } from "@std/assert"; + * + * const source = new Uint8Array([0, 1, 2, 1, 2, 1, 2, 3]); + * const needle = new Uint8Array([1, 2]); + * const notNeedle = new Uint8Array([5, 0]); + * + * assertEquals(indexOfNeedle(source, needle), 1); + * assertEquals(indexOfNeedle(source, notNeedle), -1); + * ``` + * + * @example Start index + * ```ts + * import { indexOfNeedle } from "@std/bytes/index-of-needle"; + * import { assertEquals } from "@std/assert"; + * + * const source = new Uint8Array([0, 1, 2, 1, 2, 1, 2, 3]); + * const needle = new Uint8Array([1, 2]); + * + * assertEquals(indexOfNeedle(source, needle, 2), 3); + * assertEquals(indexOfNeedle(source, needle, 6), -1); + * ``` + * Defining a start index will begin the search at the specified index in the + * source array. + */ export function indexOfNeedle(source, needle, start = 0) { + if (start < 0) { + start = Math.max(0, source.length + start); + } + if (needle.length > source.length - start) { + return -1; + } + const s = needle[0]; + for(let i = start; i < source.length; i++){ + if (source[i] !== s) continue; + let matched = 1; + let j = i + 1; + while(matched < needle.length && source[j] === needle[j - i]){ + matched++; + j++; + } + if (matched === needle.length) { + return i; + } + } + return -1; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvYnl0ZXMvMS4wLjYvaW5kZXhfb2ZfbmVlZGxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbi8qKlxuICogUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIG5lZWRsZSBhcnJheSBpbiB0aGUgc291cmNlXG4gKiBhcnJheSwgb3IgLTEgaWYgaXQgaXMgbm90IHByZXNlbnQuXG4gKlxuICogQSBzdGFydCBpbmRleCBjYW4gYmUgc3BlY2lmaWVkIGFzIHRoZSB0aGlyZCBhcmd1bWVudCB0aGF0IGJlZ2lucyB0aGUgc2VhcmNoXG4gKiBhdCB0aGF0IGdpdmVuIGluZGV4LiBUaGUgc3RhcnQgaW5kZXggZGVmYXVsdHMgdG8gdGhlIHN0YXJ0IG9mIHRoZSBhcnJheS5cbiAqXG4gKiBUaGUgY29tcGxleGl0eSBvZiB0aGlzIGZ1bmN0aW9uIGlzIGBPKHNvdXJjZS5sZW5ndGggKiBuZWVkbGUubGVuZ3RoKWAuXG4gKlxuICogQHBhcmFtIHNvdXJjZSBTb3VyY2UgYXJyYXkgdG8gY2hlY2suXG4gKiBAcGFyYW0gbmVlZGxlIE5lZWRsZSBhcnJheSB0byBjaGVjayBmb3IuXG4gKiBAcGFyYW0gc3RhcnQgU3RhcnQgaW5kZXggaW4gdGhlIHNvdXJjZSBhcnJheSB0byBiZWdpbiB0aGUgc2VhcmNoLiBEZWZhdWx0cyB0b1xuICogMC5cbiAqIEByZXR1cm5zIEluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZSBuZWVkbGUgYXJyYXkgaW4gdGhlIHNvdXJjZVxuICogYXJyYXksIG9yIC0xIGlmIGl0IGlzIG5vdCBwcmVzZW50LlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgaW5kZXhPZk5lZWRsZSB9IGZyb20gXCJAc3RkL2J5dGVzL2luZGV4LW9mLW5lZWRsZVwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3Qgc291cmNlID0gbmV3IFVpbnQ4QXJyYXkoWzAsIDEsIDIsIDEsIDIsIDEsIDIsIDNdKTtcbiAqIGNvbnN0IG5lZWRsZSA9IG5ldyBVaW50OEFycmF5KFsxLCAyXSk7XG4gKiBjb25zdCBub3ROZWVkbGUgPSBuZXcgVWludDhBcnJheShbNSwgMF0pO1xuICpcbiAqIGFzc2VydEVxdWFscyhpbmRleE9mTmVlZGxlKHNvdXJjZSwgbmVlZGxlKSwgMSk7XG4gKiBhc3NlcnRFcXVhbHMoaW5kZXhPZk5lZWRsZShzb3VyY2UsIG5vdE5lZWRsZSksIC0xKTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFN0YXJ0IGluZGV4XG4gKiBgYGB0c1xuICogaW1wb3J0IHsgaW5kZXhPZk5lZWRsZSB9IGZyb20gXCJAc3RkL2J5dGVzL2luZGV4LW9mLW5lZWRsZVwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogY29uc3Qgc291cmNlID0gbmV3IFVpbnQ4QXJyYXkoWzAsIDEsIDIsIDEsIDIsIDEsIDIsIDNdKTtcbiAqIGNvbnN0IG5lZWRsZSA9IG5ldyBVaW50OEFycmF5KFsxLCAyXSk7XG4gKlxuICogYXNzZXJ0RXF1YWxzKGluZGV4T2ZOZWVkbGUoc291cmNlLCBuZWVkbGUsIDIpLCAzKTtcbiAqIGFzc2VydEVxdWFscyhpbmRleE9mTmVlZGxlKHNvdXJjZSwgbmVlZGxlLCA2KSwgLTEpO1xuICogYGBgXG4gKiBEZWZpbmluZyBhIHN0YXJ0IGluZGV4IHdpbGwgYmVnaW4gdGhlIHNlYXJjaCBhdCB0aGUgc3BlY2lmaWVkIGluZGV4IGluIHRoZVxuICogc291cmNlIGFycmF5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5kZXhPZk5lZWRsZShcbiAgc291cmNlOiBVaW50OEFycmF5LFxuICBuZWVkbGU6IFVpbnQ4QXJyYXksXG4gIHN0YXJ0ID0gMCxcbik6IG51bWJlciB7XG4gIGlmIChzdGFydCA8IDApIHtcbiAgICBzdGFydCA9IE1hdGgubWF4KDAsIHNvdXJjZS5sZW5ndGggKyBzdGFydCk7XG4gIH1cbiAgaWYgKG5lZWRsZS5sZW5ndGggPiBzb3VyY2UubGVuZ3RoIC0gc3RhcnQpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgY29uc3QgcyA9IG5lZWRsZVswXTtcbiAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgc291cmNlLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHNvdXJjZVtpXSAhPT0gcykgY29udGludWU7XG4gICAgbGV0IG1hdGNoZWQgPSAxO1xuICAgIGxldCBqID0gaSArIDE7XG4gICAgd2hpbGUgKG1hdGNoZWQgPCBuZWVkbGUubGVuZ3RoICYmIHNvdXJjZVtqXSA9PT0gbmVlZGxlW2ogLSBpXSkge1xuICAgICAgbWF0Y2hlZCsrO1xuICAgICAgaisrO1xuICAgIH1cbiAgICBpZiAobWF0Y2hlZCA9PT0gbmVlZGxlLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGk7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQscUNBQXFDO0FBRXJDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0EwQ0MsR0FDRCxPQUFPLFNBQVMsY0FDZCxNQUFrQixFQUNsQixNQUFrQixFQUNsQixRQUFRLENBQUM7RUFFVCxJQUFJLFFBQVEsR0FBRztJQUNiLFFBQVEsS0FBSyxHQUFHLENBQUMsR0FBRyxPQUFPLE1BQU0sR0FBRztFQUN0QztFQUNBLElBQUksT0FBTyxNQUFNLEdBQUcsT0FBTyxNQUFNLEdBQUcsT0FBTztJQUN6QyxPQUFPLENBQUM7RUFDVjtFQUNBLE1BQU0sSUFBSSxNQUFNLENBQUMsRUFBRTtFQUNuQixJQUFLLElBQUksSUFBSSxPQUFPLElBQUksT0FBTyxNQUFNLEVBQUUsSUFBSztJQUMxQyxJQUFJLE1BQU0sQ0FBQyxFQUFFLEtBQUssR0FBRztJQUNyQixJQUFJLFVBQVU7SUFDZCxJQUFJLElBQUksSUFBSTtJQUNaLE1BQU8sVUFBVSxPQUFPLE1BQU0sSUFBSSxNQUFNLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBRTtNQUM3RDtNQUNBO0lBQ0Y7SUFDQSxJQUFJLFlBQVksT0FBTyxNQUFNLEVBQUU7TUFDN0IsT0FBTztJQUNUO0VBQ0Y7RUFDQSxPQUFPLENBQUM7QUFDViJ9 +// denoCacheMetadata=11419389296461588520,2057717567109669023
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/ef0f76b7de957a45053ec55e476a11efce100bda99c5f6bd71d17dee17b5976c.js b/vendor/gen/https/jsr.io/ef0f76b7de957a45053ec55e476a11efce100bda99c5f6bd71d17dee17b5976c.js new file mode 100644 index 0000000..09ec155 --- /dev/null +++ b/vendor/gen/https/jsr.io/ef0f76b7de957a45053ec55e476a11efce100bda99c5f6bd71d17dee17b5976c.js @@ -0,0 +1,13 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +/** + * The character used to separate entries in the PATH environment variable. + */ export const DELIMITER = ";"; +/** + * The character used to separate components of a file path. + */ export const SEPARATOR = "\\"; +/** + * A regular expression that matches one or more path separators. + */ export const SEPARATOR_PATTERN = /[\\/]+/; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS93aW5kb3dzL2NvbnN0YW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vKipcbiAqIFRoZSBjaGFyYWN0ZXIgdXNlZCB0byBzZXBhcmF0ZSBlbnRyaWVzIGluIHRoZSBQQVRIIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICovXG5leHBvcnQgY29uc3QgREVMSU1JVEVSID0gXCI7XCIgYXMgY29uc3Q7XG4vKipcbiAqIFRoZSBjaGFyYWN0ZXIgdXNlZCB0byBzZXBhcmF0ZSBjb21wb25lbnRzIG9mIGEgZmlsZSBwYXRoLlxuICovXG5leHBvcnQgY29uc3QgU0VQQVJBVE9SID0gXCJcXFxcXCIgYXMgY29uc3Q7XG4vKipcbiAqIEEgcmVndWxhciBleHByZXNzaW9uIHRoYXQgbWF0Y2hlcyBvbmUgb3IgbW9yZSBwYXRoIHNlcGFyYXRvcnMuXG4gKi9cbmV4cG9ydCBjb25zdCBTRVBBUkFUT1JfUEFUVEVSTiA9IC9bXFxcXC9dKy87XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQzs7Q0FFQyxHQUNELE9BQU8sTUFBTSxZQUFZLElBQWE7QUFDdEM7O0NBRUMsR0FDRCxPQUFPLE1BQU0sWUFBWSxLQUFjO0FBQ3ZDOztDQUVDLEdBQ0QsT0FBTyxNQUFNLG9CQUFvQixTQUFTIn0= +// denoCacheMetadata=6466445951151111109,14005870783218354898
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/f1347d8476f3b29ba5b1ce20ac64aa1f87536b0511c7a42c5f5b9357be6339df.js b/vendor/gen/https/jsr.io/f1347d8476f3b29ba5b1ce20ac64aa1f87536b0511c7a42c5f5b9357be6339df.js new file mode 100644 index 0000000..df8cb85 --- /dev/null +++ b/vendor/gen/https/jsr.io/f1347d8476f3b29ba5b1ce20ac64aa1f87536b0511c7a42c5f5b9357be6339df.js @@ -0,0 +1,44 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { copy } from "./copy.ts"; +/** + * Returns a new byte slice composed of `count` repetitions of the `source` + * array. + * + * @param source Source array to repeat. + * @param count Number of times to repeat the source array. + * @returns A new byte slice composed of `count` repetitions of the `source` + * array. + * + * @example Basic usage + * ```ts + * import { repeat } from "@std/bytes/repeat"; + * import { assertEquals } from "@std/assert"; + * + * const source = new Uint8Array([0, 1, 2]); + * + * assertEquals(repeat(source, 3), new Uint8Array([0, 1, 2, 0, 1, 2, 0, 1, 2])); + * ``` + * + * @example Zero count + * ```ts + * import { repeat } from "@std/bytes/repeat"; + * import { assertEquals } from "@std/assert"; + * + * const source = new Uint8Array([0, 1, 2]); + * + * assertEquals(repeat(source, 0), new Uint8Array()); + * ``` + */ export function repeat(source, count) { + if (count < 0 || !Number.isInteger(count)) { + throw new RangeError("Count must be a non-negative integer"); + } + const repeated = new Uint8Array(source.length * count); + let offset = 0; + while(offset < repeated.length){ + offset += copy(source, repeated, offset); + } + return repeated; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvYnl0ZXMvMS4wLjYvcmVwZWF0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5pbXBvcnQgeyBjb3B5IH0gZnJvbSBcIi4vY29weS50c1wiO1xuaW1wb3J0IHR5cGUgeyBVaW50OEFycmF5XyB9IGZyb20gXCIuL190eXBlcy50c1wiO1xuZXhwb3J0IHR5cGUgeyBVaW50OEFycmF5XyB9O1xuXG4vKipcbiAqIFJldHVybnMgYSBuZXcgYnl0ZSBzbGljZSBjb21wb3NlZCBvZiBgY291bnRgIHJlcGV0aXRpb25zIG9mIHRoZSBgc291cmNlYFxuICogYXJyYXkuXG4gKlxuICogQHBhcmFtIHNvdXJjZSBTb3VyY2UgYXJyYXkgdG8gcmVwZWF0LlxuICogQHBhcmFtIGNvdW50IE51bWJlciBvZiB0aW1lcyB0byByZXBlYXQgdGhlIHNvdXJjZSBhcnJheS5cbiAqIEByZXR1cm5zIEEgbmV3IGJ5dGUgc2xpY2UgY29tcG9zZWQgb2YgYGNvdW50YCByZXBldGl0aW9ucyBvZiB0aGUgYHNvdXJjZWBcbiAqIGFycmF5LlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgcmVwZWF0IH0gZnJvbSBcIkBzdGQvYnl0ZXMvcmVwZWF0XCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBzb3VyY2UgPSBuZXcgVWludDhBcnJheShbMCwgMSwgMl0pO1xuICpcbiAqIGFzc2VydEVxdWFscyhyZXBlYXQoc291cmNlLCAzKSwgbmV3IFVpbnQ4QXJyYXkoWzAsIDEsIDIsIDAsIDEsIDIsIDAsIDEsIDJdKSk7XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBaZXJvIGNvdW50XG4gKiBgYGB0c1xuICogaW1wb3J0IHsgcmVwZWF0IH0gZnJvbSBcIkBzdGQvYnl0ZXMvcmVwZWF0XCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBzb3VyY2UgPSBuZXcgVWludDhBcnJheShbMCwgMSwgMl0pO1xuICpcbiAqIGFzc2VydEVxdWFscyhyZXBlYXQoc291cmNlLCAwKSwgbmV3IFVpbnQ4QXJyYXkoKSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcGVhdChzb3VyY2U6IFVpbnQ4QXJyYXksIGNvdW50OiBudW1iZXIpOiBVaW50OEFycmF5XyB7XG4gIGlmIChjb3VudCA8IDAgfHwgIU51bWJlci5pc0ludGVnZXIoY291bnQpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJDb3VudCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXJcIik7XG4gIH1cblxuICBjb25zdCByZXBlYXRlZCA9IG5ldyBVaW50OEFycmF5KHNvdXJjZS5sZW5ndGggKiBjb3VudCk7XG4gIGxldCBvZmZzZXQgPSAwO1xuXG4gIHdoaWxlIChvZmZzZXQgPCByZXBlYXRlZC5sZW5ndGgpIHtcbiAgICBvZmZzZXQgKz0gY29weShzb3VyY2UsIHJlcGVhdGVkLCBvZmZzZXQpO1xuICB9XG5cbiAgcmV0dXJuIHJlcGVhdGVkO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFDckMsU0FBUyxJQUFJLFFBQVEsWUFBWTtBQUlqQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQTRCQyxHQUNELE9BQU8sU0FBUyxPQUFPLE1BQWtCLEVBQUUsS0FBYTtFQUN0RCxJQUFJLFFBQVEsS0FBSyxDQUFDLE9BQU8sU0FBUyxDQUFDLFFBQVE7SUFDekMsTUFBTSxJQUFJLFdBQVc7RUFDdkI7RUFFQSxNQUFNLFdBQVcsSUFBSSxXQUFXLE9BQU8sTUFBTSxHQUFHO0VBQ2hELElBQUksU0FBUztFQUViLE1BQU8sU0FBUyxTQUFTLE1BQU0sQ0FBRTtJQUMvQixVQUFVLEtBQUssUUFBUSxVQUFVO0VBQ25DO0VBRUEsT0FBTztBQUNUIn0= +// denoCacheMetadata=4711290799187864980,9974156399072678049
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/f13e348e07ffac5aa796aa5d228d6f1cdf2ad20e69e426f824905dc5f2d8fea8.js b/vendor/gen/https/jsr.io/f13e348e07ffac5aa796aa5d228d6f1cdf2ad20e69e426f824905dc5f2d8fea8.js new file mode 100644 index 0000000..59d5948 --- /dev/null +++ b/vendor/gen/https/jsr.io/f13e348e07ffac5aa796aa5d228d6f1cdf2ad20e69e426f824905dc5f2d8fea8.js @@ -0,0 +1,34 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { normalize as posixNormalize } from "./posix/normalize.ts"; +import { normalize as windowsNormalize } from "./windows/normalize.ts"; +/** + * Normalize the path, resolving `'..'` and `'.'` segments. + * + * Note: Resolving these segments does not necessarily mean that all will be + * eliminated. A `'..'` at the top-level will be preserved, and an empty path is + * canonically `'.'`. + * + * @example Usage + * ```ts + * import { normalize } from "@std/path/normalize"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(normalize("C:\\foo\\bar\\..\\baz\\quux"), "C:\\foo\\baz\\quux"); + * } else { + * assertEquals(normalize("/foo/bar/../baz/quux"), "/foo/baz/quux"); + * } + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `normalize` from `@std/path/unstable-normalize`. + * + * @param path Path to be normalized + * @returns The normalized path. + */ export function normalize(path) { + return isWindows ? windowsNormalize(path) : posixNormalize(path); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9ub3JtYWxpemUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHsgaXNXaW5kb3dzIH0gZnJvbSBcIi4vX29zLnRzXCI7XG5pbXBvcnQgeyBub3JtYWxpemUgYXMgcG9zaXhOb3JtYWxpemUgfSBmcm9tIFwiLi9wb3NpeC9ub3JtYWxpemUudHNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZSBhcyB3aW5kb3dzTm9ybWFsaXplIH0gZnJvbSBcIi4vd2luZG93cy9ub3JtYWxpemUudHNcIjtcbi8qKlxuICogTm9ybWFsaXplIHRoZSBwYXRoLCByZXNvbHZpbmcgYCcuLidgIGFuZCBgJy4nYCBzZWdtZW50cy5cbiAqXG4gKiBOb3RlOiBSZXNvbHZpbmcgdGhlc2Ugc2VnbWVudHMgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGF0IGFsbCB3aWxsIGJlXG4gKiBlbGltaW5hdGVkLiBBIGAnLi4nYCBhdCB0aGUgdG9wLWxldmVsIHdpbGwgYmUgcHJlc2VydmVkLCBhbmQgYW4gZW1wdHkgcGF0aCBpc1xuICogY2Fub25pY2FsbHkgYCcuJ2AuXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiQHN0ZC9wYXRoL25vcm1hbGl6ZVwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogaWYgKERlbm8uYnVpbGQub3MgPT09IFwid2luZG93c1wiKSB7XG4gKiAgIGFzc2VydEVxdWFscyhub3JtYWxpemUoXCJDOlxcXFxmb29cXFxcYmFyXFxcXC4uXFxcXGJhelxcXFxxdXV4XCIpLCBcIkM6XFxcXGZvb1xcXFxiYXpcXFxccXV1eFwiKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGFzc2VydEVxdWFscyhub3JtYWxpemUoXCIvZm9vL2Jhci8uLi9iYXovcXV1eFwiKSwgXCIvZm9vL2Jhei9xdXV4XCIpO1xuICogfVxuICogYGBgXG4gKlxuICogTm90ZTogSWYgeW91IGFyZSB3b3JraW5nIHdpdGggZmlsZSBVUkxzLFxuICogdXNlIHRoZSBuZXcgdmVyc2lvbiBvZiBgbm9ybWFsaXplYCBmcm9tIGBAc3RkL3BhdGgvdW5zdGFibGUtbm9ybWFsaXplYC5cbiAqXG4gKiBAcGFyYW0gcGF0aCBQYXRoIHRvIGJlIG5vcm1hbGl6ZWRcbiAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlzV2luZG93cyA/IHdpbmRvd3NOb3JtYWxpemUocGF0aCkgOiBwb3NpeE5vcm1hbGl6ZShwYXRoKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwRUFBMEU7QUFDMUUscUNBQXFDO0FBRXJDLFNBQVMsU0FBUyxRQUFRLFdBQVc7QUFDckMsU0FBUyxhQUFhLGNBQWMsUUFBUSx1QkFBdUI7QUFDbkUsU0FBUyxhQUFhLGdCQUFnQixRQUFRLHlCQUF5QjtBQUN2RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBd0JDLEdBQ0QsT0FBTyxTQUFTLFVBQVUsSUFBWTtFQUNwQyxPQUFPLFlBQVksaUJBQWlCLFFBQVEsZUFBZTtBQUM3RCJ9 +// denoCacheMetadata=1856296657495635583,1641198475615613112
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/f1a1af589e1c10c5e82a69a78b93a401e01c212c339e5f4c0118088a2270220a.js b/vendor/gen/https/jsr.io/f1a1af589e1c10c5e82a69a78b93a401e01c212c339e5f4c0118088a2270220a.js new file mode 100644 index 0000000..620cf7b --- /dev/null +++ b/vendor/gen/https/jsr.io/f1a1af589e1c10c5e82a69a78b93a401e01c212c339e5f4c0118088a2270220a.js @@ -0,0 +1,18 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// Copyright the Browserify authors. MIT License. +import { resolve } from "jsr:@std/path@^1.0.9/resolve"; +import { toPathString } from "./_to_path_string.ts"; +/** + * Checks if two paths are the same. + * + * @param src Source file path as a string or URL. + * @param dest Destination file path as a string or URL. + * + * @returns `true` if the paths are the same, `false` otherwise. + */ export function isSamePath(src, dest) { + src = toPathString(src); + dest = toPathString(dest); + return resolve(src) === resolve(dest); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnMvMS4wLjE3L19pc19zYW1lX3BhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cblxuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gXCJqc3I6QHN0ZC9wYXRoQF4xLjAuOS9yZXNvbHZlXCI7XG5pbXBvcnQgeyB0b1BhdGhTdHJpbmcgfSBmcm9tIFwiLi9fdG9fcGF0aF9zdHJpbmcudHNcIjtcblxuLyoqXG4gKiBDaGVja3MgaWYgdHdvIHBhdGhzIGFyZSB0aGUgc2FtZS5cbiAqXG4gKiBAcGFyYW0gc3JjIFNvdXJjZSBmaWxlIHBhdGggYXMgYSBzdHJpbmcgb3IgVVJMLlxuICogQHBhcmFtIGRlc3QgRGVzdGluYXRpb24gZmlsZSBwYXRoIGFzIGEgc3RyaW5nIG9yIFVSTC5cbiAqXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHBhdGhzIGFyZSB0aGUgc2FtZSwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NhbWVQYXRoKFxuICBzcmM6IHN0cmluZyB8IFVSTCxcbiAgZGVzdDogc3RyaW5nIHwgVVJMLFxuKTogYm9vbGVhbiB7XG4gIHNyYyA9IHRvUGF0aFN0cmluZyhzcmMpO1xuICBkZXN0ID0gdG9QYXRoU3RyaW5nKGRlc3QpO1xuXG4gIHJldHVybiByZXNvbHZlKHNyYykgPT09IHJlc29sdmUoZGVzdCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELGlEQUFpRDtBQUVqRCxTQUFTLE9BQU8sUUFBUSwrQkFBK0I7QUFDdkQsU0FBUyxZQUFZLFFBQVEsdUJBQXVCO0FBRXBEOzs7Ozs7O0NBT0MsR0FDRCxPQUFPLFNBQVMsV0FDZCxHQUFpQixFQUNqQixJQUFrQjtFQUVsQixNQUFNLGFBQWE7RUFDbkIsT0FBTyxhQUFhO0VBRXBCLE9BQU8sUUFBUSxTQUFTLFFBQVE7QUFDbEMifQ== +// denoCacheMetadata=1466755666389371577,6510571361609774197
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/f1be9026d372f22a068353b1f58861b2ae95c2d993dc6aca507b98cc0ba957dc.js b/vendor/gen/https/jsr.io/f1be9026d372f22a068353b1f58861b2ae95c2d993dc6aca507b98cc0ba957dc.js new file mode 100644 index 0000000..eb5243c --- /dev/null +++ b/vendor/gen/https/jsr.io/f1be9026d372f22a068353b1f58861b2ae95c2d993dc6aca507b98cc0ba957dc.js @@ -0,0 +1,82 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { globToRegExp as posixGlobToRegExp } from "./posix/glob_to_regexp.ts"; +import { globToRegExp as windowsGlobToRegExp } from "./windows/glob_to_regexp.ts"; +/** + * Converts a glob string to a regular expression. + * + * Tries to match bash glob expansion as closely as possible. + * + * Basic glob syntax: + * - `*` - Matches everything without leaving the path segment. + * - `?` - Matches any single character. + * - `{foo,bar}` - Matches `foo` or `bar`. + * - `[abcd]` - Matches `a`, `b`, `c` or `d`. + * - `[a-d]` - Matches `a`, `b`, `c` or `d`. + * - `[!abcd]` - Matches any single character besides `a`, `b`, `c` or `d`. + * - `[[:<class>:]]` - Matches any character belonging to `<class>`. + * - `[[:alnum:]]` - Matches any digit or letter. + * - `[[:digit:]abc]` - Matches any digit, `a`, `b` or `c`. + * - See https://facelessuser.github.io/wcmatch/glob/#posix-character-classes + * for a complete list of supported character classes. + * - `\` - Escapes the next character for an `os` other than `"windows"`. + * - \` - Escapes the next character for `os` set to `"windows"`. + * - `/` - Path separator. + * - `\` - Additional path separator only for `os` set to `"windows"`. + * + * Extended syntax: + * - Requires `{ extended: true }`. + * - `?(foo|bar)` - Matches 0 or 1 instance of `{foo,bar}`. + * - `@(foo|bar)` - Matches 1 instance of `{foo,bar}`. They behave the same. + * - `*(foo|bar)` - Matches _n_ instances of `{foo,bar}`. + * - `+(foo|bar)` - Matches _n > 0_ instances of `{foo,bar}`. + * - `!(foo|bar)` - Matches anything other than `{foo,bar}`. + * - See https://www.linuxjournal.com/content/bash-extended-globbing. + * + * Globstar syntax: + * - Requires `{ globstar: true }`. + * - `**` - Matches any number of any path segments. + * - Must comprise its entire path segment in the provided glob. + * - See https://www.linuxjournal.com/content/globstar-new-bash-globbing-option. + * + * Note the following properties: + * - The generated `RegExp` is anchored at both start and end. + * - Repeating and trailing separators are tolerated. Trailing separators in the + * provided glob have no meaning and are discarded. + * - Absolute globs will only match absolute paths, etc. + * - Empty globs will match nothing. + * - Any special glob syntax must be contained to one path segment. For example, + * `?(foo|bar/baz)` is invalid. The separator will take precedence and the + * first segment ends with an unclosed group. + * - If a path segment ends with unclosed groups or a dangling escape prefix, a + * parse error has occurred. Every character for that segment is taken + * literally in this event. + * + * Limitations: + * - A negative group like `!(foo|bar)` will wrongly be converted to a negative + * look-ahead followed by a wildcard. This means that `!(foo).js` will wrongly + * fail to match `foobar.js`, even though `foobar` is not `foo`. Effectively, + * `!(foo|bar)` is treated like `!(@(foo|bar)*)`. This will work correctly if + * the group occurs not nested at the end of the segment. + * + * @example Usage + * ```ts + * import { globToRegExp } from "@std/path/glob-to-regexp"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(globToRegExp("*.js"), /^[^\\/]*\.js(?:\\|\/)*$/); + * } else { + * assertEquals(globToRegExp("*.js"), /^[^/]*\.js\/*$/); + * } + * ``` + * + * @param glob Glob string to convert. + * @param options Conversion options. + * @returns The regular expression equivalent to the glob. + */ export function globToRegExp(glob, options = {}) { + return isWindows ? windowsGlobToRegExp(glob, options) : posixGlobToRegExp(glob, options); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9nbG9iX3RvX3JlZ2V4cC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI0IHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgdHlwZSB7IEdsb2JPcHRpb25zIH0gZnJvbSBcIi4vX2NvbW1vbi9nbG9iX3RvX3JlZ19leHAudHNcIjtcbmltcG9ydCB7IGlzV2luZG93cyB9IGZyb20gXCIuL19vcy50c1wiO1xuXG5pbXBvcnQgeyBnbG9iVG9SZWdFeHAgYXMgcG9zaXhHbG9iVG9SZWdFeHAgfSBmcm9tIFwiLi9wb3NpeC9nbG9iX3RvX3JlZ2V4cC50c1wiO1xuaW1wb3J0IHtcbiAgZ2xvYlRvUmVnRXhwIGFzIHdpbmRvd3NHbG9iVG9SZWdFeHAsXG59IGZyb20gXCIuL3dpbmRvd3MvZ2xvYl90b19yZWdleHAudHNcIjtcblxuZXhwb3J0IHR5cGUgeyBHbG9iT3B0aW9ucyB9O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgZ2xvYiBzdHJpbmcgdG8gYSByZWd1bGFyIGV4cHJlc3Npb24uXG4gKlxuICogVHJpZXMgdG8gbWF0Y2ggYmFzaCBnbG9iIGV4cGFuc2lvbiBhcyBjbG9zZWx5IGFzIHBvc3NpYmxlLlxuICpcbiAqIEJhc2ljIGdsb2Igc3ludGF4OlxuICogLSBgKmAgLSBNYXRjaGVzIGV2ZXJ5dGhpbmcgd2l0aG91dCBsZWF2aW5nIHRoZSBwYXRoIHNlZ21lbnQuXG4gKiAtIGA/YCAtIE1hdGNoZXMgYW55IHNpbmdsZSBjaGFyYWN0ZXIuXG4gKiAtIGB7Zm9vLGJhcn1gIC0gTWF0Y2hlcyBgZm9vYCBvciBgYmFyYC5cbiAqIC0gYFthYmNkXWAgLSBNYXRjaGVzIGBhYCwgYGJgLCBgY2Agb3IgYGRgLlxuICogLSBgW2EtZF1gIC0gTWF0Y2hlcyBgYWAsIGBiYCwgYGNgIG9yIGBkYC5cbiAqIC0gYFshYWJjZF1gIC0gTWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3RlciBiZXNpZGVzIGBhYCwgYGJgLCBgY2Agb3IgYGRgLlxuICogLSBgW1s6PGNsYXNzPjpdXWAgLSBNYXRjaGVzIGFueSBjaGFyYWN0ZXIgYmVsb25naW5nIHRvIGA8Y2xhc3M+YC5cbiAqICAgICAtIGBbWzphbG51bTpdXWAgLSBNYXRjaGVzIGFueSBkaWdpdCBvciBsZXR0ZXIuXG4gKiAgICAgLSBgW1s6ZGlnaXQ6XWFiY11gIC0gTWF0Y2hlcyBhbnkgZGlnaXQsIGBhYCwgYGJgIG9yIGBjYC5cbiAqICAgICAtIFNlZSBodHRwczovL2ZhY2VsZXNzdXNlci5naXRodWIuaW8vd2NtYXRjaC9nbG9iLyNwb3NpeC1jaGFyYWN0ZXItY2xhc3Nlc1xuICogICAgICAgZm9yIGEgY29tcGxldGUgbGlzdCBvZiBzdXBwb3J0ZWQgY2hhcmFjdGVyIGNsYXNzZXMuXG4gKiAtIGBcXGAgLSBFc2NhcGVzIHRoZSBuZXh0IGNoYXJhY3RlciBmb3IgYW4gYG9zYCBvdGhlciB0aGFuIGBcIndpbmRvd3NcImAuXG4gKiAtIFxcYCAtIEVzY2FwZXMgdGhlIG5leHQgY2hhcmFjdGVyIGZvciBgb3NgIHNldCB0byBgXCJ3aW5kb3dzXCJgLlxuICogLSBgL2AgLSBQYXRoIHNlcGFyYXRvci5cbiAqIC0gYFxcYCAtIEFkZGl0aW9uYWwgcGF0aCBzZXBhcmF0b3Igb25seSBmb3IgYG9zYCBzZXQgdG8gYFwid2luZG93c1wiYC5cbiAqXG4gKiBFeHRlbmRlZCBzeW50YXg6XG4gKiAtIFJlcXVpcmVzIGB7IGV4dGVuZGVkOiB0cnVlIH1gLlxuICogLSBgPyhmb298YmFyKWAgLSBNYXRjaGVzIDAgb3IgMSBpbnN0YW5jZSBvZiBge2ZvbyxiYXJ9YC5cbiAqIC0gYEAoZm9vfGJhcilgIC0gTWF0Y2hlcyAxIGluc3RhbmNlIG9mIGB7Zm9vLGJhcn1gLiBUaGV5IGJlaGF2ZSB0aGUgc2FtZS5cbiAqIC0gYCooZm9vfGJhcilgIC0gTWF0Y2hlcyBfbl8gaW5zdGFuY2VzIG9mIGB7Zm9vLGJhcn1gLlxuICogLSBgKyhmb298YmFyKWAgLSBNYXRjaGVzIF9uID4gMF8gaW5zdGFuY2VzIG9mIGB7Zm9vLGJhcn1gLlxuICogLSBgIShmb298YmFyKWAgLSBNYXRjaGVzIGFueXRoaW5nIG90aGVyIHRoYW4gYHtmb28sYmFyfWAuXG4gKiAtIFNlZSBodHRwczovL3d3dy5saW51eGpvdXJuYWwuY29tL2NvbnRlbnQvYmFzaC1leHRlbmRlZC1nbG9iYmluZy5cbiAqXG4gKiBHbG9ic3RhciBzeW50YXg6XG4gKiAtIFJlcXVpcmVzIGB7IGdsb2JzdGFyOiB0cnVlIH1gLlxuICogLSBgKipgIC0gTWF0Y2hlcyBhbnkgbnVtYmVyIG9mIGFueSBwYXRoIHNlZ21lbnRzLlxuICogICAgIC0gTXVzdCBjb21wcmlzZSBpdHMgZW50aXJlIHBhdGggc2VnbWVudCBpbiB0aGUgcHJvdmlkZWQgZ2xvYi5cbiAqIC0gU2VlIGh0dHBzOi8vd3d3LmxpbnV4am91cm5hbC5jb20vY29udGVudC9nbG9ic3Rhci1uZXctYmFzaC1nbG9iYmluZy1vcHRpb24uXG4gKlxuICogTm90ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKiAtIFRoZSBnZW5lcmF0ZWQgYFJlZ0V4cGAgaXMgYW5jaG9yZWQgYXQgYm90aCBzdGFydCBhbmQgZW5kLlxuICogLSBSZXBlYXRpbmcgYW5kIHRyYWlsaW5nIHNlcGFyYXRvcnMgYXJlIHRvbGVyYXRlZC4gVHJhaWxpbmcgc2VwYXJhdG9ycyBpbiB0aGVcbiAqICAgcHJvdmlkZWQgZ2xvYiBoYXZlIG5vIG1lYW5pbmcgYW5kIGFyZSBkaXNjYXJkZWQuXG4gKiAtIEFic29sdXRlIGdsb2JzIHdpbGwgb25seSBtYXRjaCBhYnNvbHV0ZSBwYXRocywgZXRjLlxuICogLSBFbXB0eSBnbG9icyB3aWxsIG1hdGNoIG5vdGhpbmcuXG4gKiAtIEFueSBzcGVjaWFsIGdsb2Igc3ludGF4IG11c3QgYmUgY29udGFpbmVkIHRvIG9uZSBwYXRoIHNlZ21lbnQuIEZvciBleGFtcGxlLFxuICogICBgPyhmb298YmFyL2JheilgIGlzIGludmFsaWQuIFRoZSBzZXBhcmF0b3Igd2lsbCB0YWtlIHByZWNlZGVuY2UgYW5kIHRoZVxuICogICBmaXJzdCBzZWdtZW50IGVuZHMgd2l0aCBhbiB1bmNsb3NlZCBncm91cC5cbiAqIC0gSWYgYSBwYXRoIHNlZ21lbnQgZW5kcyB3aXRoIHVuY2xvc2VkIGdyb3VwcyBvciBhIGRhbmdsaW5nIGVzY2FwZSBwcmVmaXgsIGFcbiAqICAgcGFyc2UgZXJyb3IgaGFzIG9jY3VycmVkLiBFdmVyeSBjaGFyYWN0ZXIgZm9yIHRoYXQgc2VnbWVudCBpcyB0YWtlblxuICogICBsaXRlcmFsbHkgaW4gdGhpcyBldmVudC5cbiAqXG4gKiBMaW1pdGF0aW9uczpcbiAqIC0gQSBuZWdhdGl2ZSBncm91cCBsaWtlIGAhKGZvb3xiYXIpYCB3aWxsIHdyb25nbHkgYmUgY29udmVydGVkIHRvIGEgbmVnYXRpdmVcbiAqICAgbG9vay1haGVhZCBmb2xsb3dlZCBieSBhIHdpbGRjYXJkLiBUaGlzIG1lYW5zIHRoYXQgYCEoZm9vKS5qc2Agd2lsbCB3cm9uZ2x5XG4gKiAgIGZhaWwgdG8gbWF0Y2ggYGZvb2Jhci5qc2AsIGV2ZW4gdGhvdWdoIGBmb29iYXJgIGlzIG5vdCBgZm9vYC4gRWZmZWN0aXZlbHksXG4gKiAgIGAhKGZvb3xiYXIpYCBpcyB0cmVhdGVkIGxpa2UgYCEoQChmb298YmFyKSopYC4gVGhpcyB3aWxsIHdvcmsgY29ycmVjdGx5IGlmXG4gKiAgIHRoZSBncm91cCBvY2N1cnMgbm90IG5lc3RlZCBhdCB0aGUgZW5kIG9mIHRoZSBzZWdtZW50LlxuICpcbiAqIEBleGFtcGxlIFVzYWdlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZ2xvYlRvUmVnRXhwIH0gZnJvbSBcIkBzdGQvcGF0aC9nbG9iLXRvLXJlZ2V4cFwiO1xuICogaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSBcIkBzdGQvYXNzZXJ0XCI7XG4gKlxuICogaWYgKERlbm8uYnVpbGQub3MgPT09IFwid2luZG93c1wiKSB7XG4gKiAgIGFzc2VydEVxdWFscyhnbG9iVG9SZWdFeHAoXCIqLmpzXCIpLCAvXlteXFxcXC9dKlxcLmpzKD86XFxcXHxcXC8pKiQvKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGFzc2VydEVxdWFscyhnbG9iVG9SZWdFeHAoXCIqLmpzXCIpLCAvXlteL10qXFwuanNcXC8qJC8pO1xuICogfVxuICogYGBgXG4gKlxuICogQHBhcmFtIGdsb2IgR2xvYiBzdHJpbmcgdG8gY29udmVydC5cbiAqIEBwYXJhbSBvcHRpb25zIENvbnZlcnNpb24gb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gZXF1aXZhbGVudCB0byB0aGUgZ2xvYi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdsb2JUb1JlZ0V4cChcbiAgZ2xvYjogc3RyaW5nLFxuICBvcHRpb25zOiBHbG9iT3B0aW9ucyA9IHt9LFxuKTogUmVnRXhwIHtcbiAgcmV0dXJuIGlzV2luZG93c1xuICAgID8gd2luZG93c0dsb2JUb1JlZ0V4cChnbG9iLCBvcHRpb25zKVxuICAgIDogcG9zaXhHbG9iVG9SZWdFeHAoZ2xvYiwgb3B0aW9ucyk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUdyQyxTQUFTLFNBQVMsUUFBUSxXQUFXO0FBRXJDLFNBQVMsZ0JBQWdCLGlCQUFpQixRQUFRLDRCQUE0QjtBQUM5RSxTQUNFLGdCQUFnQixtQkFBbUIsUUFDOUIsOEJBQThCO0FBSXJDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0F3RUMsR0FDRCxPQUFPLFNBQVMsYUFDZCxJQUFZLEVBQ1osVUFBdUIsQ0FBQyxDQUFDO0VBRXpCLE9BQU8sWUFDSCxvQkFBb0IsTUFBTSxXQUMxQixrQkFBa0IsTUFBTTtBQUM5QiJ9 +// denoCacheMetadata=18404419939083149060,13768064041340183100
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/f37370f7dbc9eb7bb9416d7100e6704fff77a5123c5505b6925c1b6eb688031a.js b/vendor/gen/https/jsr.io/f37370f7dbc9eb7bb9416d7100e6704fff77a5123c5505b6925c1b6eb688031a.js new file mode 100644 index 0000000..070a4da --- /dev/null +++ b/vendor/gen/https/jsr.io/f37370f7dbc9eb7bb9416d7100e6704fff77a5123c5505b6925c1b6eb688031a.js @@ -0,0 +1,427 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +import { globToRegExp } from "jsr:@std/path@^1.0.9/glob-to-regexp"; +import { joinGlobs } from "jsr:@std/path@^1.0.9/join-globs"; +import { isGlob } from "jsr:@std/path@^1.0.9/is-glob"; +import { isAbsolute } from "jsr:@std/path@^1.0.9/is-absolute"; +import { resolve } from "jsr:@std/path@^1.0.9/resolve"; +import { SEPARATOR_PATTERN } from "jsr:@std/path@^1.0.9/constants"; +import { walk, walkSync } from "./walk.ts"; +import { toPathString } from "./_to_path_string.ts"; +import { createWalkEntry, createWalkEntrySync } from "./_create_walk_entry.ts"; +// deno-lint-ignore no-explicit-any +const isWindows = globalThis.Deno?.build.os === "windows"; +function split(path) { + const s = SEPARATOR_PATTERN.source; + const segments = path.replace(new RegExp(`^${s}|${s}$`, "g"), "").split(SEPARATOR_PATTERN); + const isAbsolute_ = isAbsolute(path); + const split = { + segments, + isAbsolute: isAbsolute_, + hasTrailingSep: path.match(new RegExp(`${s}$`)) !== null + }; + if (isWindows && isAbsolute_) { + split.winRoot = segments.shift(); + } + return split; +} +function throwUnlessNotFound(error) { + if (!(error instanceof Deno.errors.NotFound)) { + throw error; + } +} +function comparePath(a, b) { + if (a.path < b.path) return -1; + if (a.path > b.path) return 1; + return 0; +} +/** + * Returns an async iterator that yields each file path matching the given glob + * pattern. + * + * The file paths are absolute paths. If `root` is not provided, the current + * working directory is used. The `root` directory is not included in the + * yielded file paths. + * + * Requires `--allow-read` permission. + * + * @see {@link https://docs.deno.com/runtime/manual/basics/permissions#file-system-access} + * for more information on Deno's permissions system. + * + * @param glob The glob pattern to expand. + * @param options Additional options for the expansion. + * + * @returns An async iterator that yields each walk entry matching the glob + * pattern. + * + * @example Basic usage + * + * File structure: + * ``` + * folder + * ├── script.ts + * └── foo.ts + * ``` + * + * ```ts ignore + * // script.ts + * import { expandGlob } from "@std/fs/expand-glob"; + * + * await Array.fromAsync(expandGlob("*.ts")); + * // [ + * // { + * // path: "/Users/user/folder/script.ts", + * // name: "script.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false, + * // }, + * // { + * // path: "/Users/user/folder/foo.ts", + * // name: "foo.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false, + * // }, + * // ] + * ``` + * + * @example Define root directory + * + * Setting the `root` option to `/folder` will expand the glob pattern from the + * `/folder` directory. + * + * File structure: + * ``` + * folder + * ├── subdir + * │ └── bar.ts + * ├── script.ts + * └── foo.ts + * ``` + * + * ```ts ignore + * // script.ts + * import { expandGlob } from "@std/fs/expand-glob"; + * + * await Array.fromAsync(expandGlob("*.ts", { root: "./subdir" })); + * // [ + * // { + * // path: "/Users/user/folder/subdir/bar.ts", + * // name: "bar.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false, + * // }, + * // ] + * ``` + * + * @example Exclude files + * + * Setting the `exclude` option to `["foo.ts"]` will exclude the `foo.ts` file + * from the expansion. + * + * File structure: + * ``` + * folder + * ├── script.ts + * └── foo.ts + * ``` + * + * ```ts ignore + * // script.ts + * import { expandGlob } from "@std/fs/expand-glob"; + * + * await Array.fromAsync(expandGlob("*.ts", { exclude: ["foo.ts"] })); + * // [ + * // { + * // path: "/Users/user/folder/script.ts", + * // name: "true.ts", + * // isFile: false, + * // isDirectory: false, + * // isSymlink: false, + * // }, + * // ] + * ``` + * + * @example Exclude directories + * + * Setting the `includeDirs` option to `false` will exclude directories from the + * expansion. + * + * File structure: + * ``` + * folder + * ├── subdir + * │ └── bar.ts + * ├── script.ts + * └── foo.ts + * ``` + * + * ```ts ignore + * // script.ts + * import { expandGlob } from "@std/fs/expand-glob"; + * + * await Array.fromAsync(expandGlob("*", { includeDirs: false })); + * // [ + * // { + * // path: "/Users/user/folder/script.ts", + * // name: "script.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false, + * // }, + * // { + * // path: "/Users/user/folder/foo.ts", + * // name: "foo.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false, + * // }, + * // ] + * ``` + * + * @example Follow symbolic links + * + * Setting the `followSymlinks` option to `true` will follow symbolic links. + * + * File structure: + * ``` + * folder + * ├── script.ts + * └── link.ts -> script.ts (symbolic link) + * ``` + * + * ```ts ignore + * // script.ts + * import { expandGlob } from "@std/fs/expand-glob"; + * + * await Array.fromAsync(expandGlob("*.ts", { followSymlinks: true })); + * // [ + * // { + * // path: "/Users/user/folder/script.ts", + * // name: "script.ts", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: false, + * // }, + * // { + * // path: "/Users/user/folder/symlink", + * // name: "symlink", + * // isFile: true, + * // isDirectory: false, + * // isSymlink: true, + * // }, + * // ] + * ``` + */ export async function* expandGlob(glob, options) { + let { root, exclude = [], includeDirs = true, extended = true, globstar = true, caseInsensitive = false, followSymlinks = false, canonicalize = true } = options ?? {}; + const { segments, isAbsolute: isGlobAbsolute, hasTrailingSep, winRoot } = split(toPathString(glob)); + root ??= isGlobAbsolute ? winRoot ?? "/" : Deno.cwd(); + const globOptions = { + extended, + globstar, + caseInsensitive + }; + const absRoot = isGlobAbsolute ? root : resolve(root); // root is always string here + const resolveFromRoot = (path)=>resolve(absRoot, path); + const excludePatterns = exclude.map(resolveFromRoot).map((s)=>globToRegExp(s, globOptions)); + const shouldInclude = (path)=>!excludePatterns.some((p)=>!!path.match(p)); + let fixedRoot = isGlobAbsolute ? winRoot ?? "/" : absRoot; + while(segments.length > 0 && !isGlob(segments[0])){ + const seg = segments.shift(); + fixedRoot = joinGlobs([ + fixedRoot, + seg + ], globOptions); + } + let fixedRootInfo; + try { + fixedRootInfo = await createWalkEntry(fixedRoot); + } catch (error) { + return throwUnlessNotFound(error); + } + async function* advanceMatch(walkInfo, globSegment) { + if (!walkInfo.isDirectory) { + return; + } else if (globSegment === "..") { + const parentPath = joinGlobs([ + walkInfo.path, + ".." + ], globOptions); + if (shouldInclude(parentPath)) { + return yield await createWalkEntry(parentPath); + } + return; + } else if (globSegment === "**") { + return yield* walk(walkInfo.path, { + skip: excludePatterns, + maxDepth: globstar ? Infinity : 1, + followSymlinks, + canonicalize + }); + } + const globPattern = globToRegExp(globSegment, globOptions); + for await (const walkEntry of walk(walkInfo.path, { + maxDepth: 1, + skip: excludePatterns, + followSymlinks + })){ + if (walkEntry.path !== walkInfo.path && walkEntry.name.match(globPattern)) { + yield walkEntry; + } + } + } + let currentMatches = [ + fixedRootInfo + ]; + for (const segment of segments){ + // Advancing the list of current matches may introduce duplicates, so we + // pass everything through this Map. + const nextMatchMap = new Map(); + await Promise.all(currentMatches.map(async (currentMatch)=>{ + for await (const nextMatch of advanceMatch(currentMatch, segment)){ + nextMatchMap.set(nextMatch.path, nextMatch); + } + })); + currentMatches = [ + ...nextMatchMap.values() + ].sort(comparePath); + } + if (hasTrailingSep) { + currentMatches = currentMatches.filter((entry)=>entry.isDirectory); + } + if (!includeDirs) { + currentMatches = currentMatches.filter((entry)=>!entry.isDirectory); + } + yield* currentMatches; +} +/** + * Returns an iterator that yields each file path matching the given glob + * pattern. The file paths are relative to the provided `root` directory. + * If `root` is not provided, the current working directory is used. + * The `root` directory is not included in the yielded file paths. + * + * Requires the `--allow-read` flag. + * + * @see {@link https://docs.deno.com/runtime/manual/basics/permissions#file-system-access} + * for more information on Deno's permissions system. + * + * @param glob The glob pattern to expand. + * @param options Additional options for the expansion. + * + * @returns An iterator that yields each walk entry matching the glob pattern. + * + * @example Usage + * + * File structure: + * ``` + * folder + * ├── script.ts + * └── foo.ts + * ``` + * + * ```ts ignore + * // script.ts + * import { expandGlobSync } from "@std/fs/expand-glob"; + * + * const entries = []; + * for (const entry of expandGlobSync("*.ts")) { + * entries.push(entry); + * } + * + * entries[0]!.path; // "/Users/user/folder/script.ts" + * entries[0]!.name; // "script.ts" + * entries[0]!.isFile; // false + * entries[0]!.isDirectory; // true + * entries[0]!.isSymlink; // false + * + * entries[1]!.path; // "/Users/user/folder/foo.ts" + * entries[1]!.name; // "foo.ts" + * entries[1]!.isFile; // true + * entries[1]!.isDirectory; // false + * entries[1]!.isSymlink; // false + * ``` + */ export function* expandGlobSync(glob, options) { + let { root, exclude = [], includeDirs = true, extended = true, globstar = true, caseInsensitive = false, followSymlinks = false, canonicalize = true } = options ?? {}; + const { segments, isAbsolute: isGlobAbsolute, hasTrailingSep, winRoot } = split(toPathString(glob)); + root ??= isGlobAbsolute ? winRoot ?? "/" : Deno.cwd(); + const globOptions = { + extended, + globstar, + caseInsensitive + }; + const absRoot = isGlobAbsolute ? root : resolve(root); // root is always string here + const resolveFromRoot = (path)=>resolve(absRoot, path); + const excludePatterns = exclude.map(resolveFromRoot).map((s)=>globToRegExp(s, globOptions)); + const shouldInclude = (path)=>!excludePatterns.some((p)=>!!path.match(p)); + let fixedRoot = isGlobAbsolute ? winRoot ?? "/" : absRoot; + while(segments.length > 0 && !isGlob(segments[0])){ + const seg = segments.shift(); + fixedRoot = joinGlobs([ + fixedRoot, + seg + ], globOptions); + } + let fixedRootInfo; + try { + fixedRootInfo = createWalkEntrySync(fixedRoot); + } catch (error) { + return throwUnlessNotFound(error); + } + function* advanceMatch(walkInfo, globSegment) { + if (!walkInfo.isDirectory) { + return; + } else if (globSegment === "..") { + const parentPath = joinGlobs([ + walkInfo.path, + ".." + ], globOptions); + if (shouldInclude(parentPath)) { + return yield createWalkEntrySync(parentPath); + } + return; + } else if (globSegment === "**") { + return yield* walkSync(walkInfo.path, { + skip: excludePatterns, + maxDepth: globstar ? Infinity : 1, + followSymlinks, + canonicalize + }); + } + const globPattern = globToRegExp(globSegment, globOptions); + for (const walkEntry of walkSync(walkInfo.path, { + maxDepth: 1, + skip: excludePatterns, + followSymlinks + })){ + if (walkEntry.path !== walkInfo.path && walkEntry.name.match(globPattern)) { + yield walkEntry; + } + } + } + let currentMatches = [ + fixedRootInfo + ]; + for (const segment of segments){ + // Advancing the list of current matches may introduce duplicates, so we + // pass everything through this Map. + const nextMatchMap = new Map(); + for (const currentMatch of currentMatches){ + for (const nextMatch of advanceMatch(currentMatch, segment)){ + nextMatchMap.set(nextMatch.path, nextMatch); + } + } + currentMatches = [ + ...nextMatchMap.values() + ].sort(comparePath); + } + if (hasTrailingSep) { + currentMatches = currentMatches.filter((entry)=>entry.isDirectory); + } + if (!includeDirs) { + currentMatches = currentMatches.filter((entry)=>!entry.isDirectory); + } + yield* currentMatches; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnMvMS4wLjE3L2V4cGFuZF9nbG9iLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG5pbXBvcnQgeyB0eXBlIEdsb2JPcHRpb25zLCBnbG9iVG9SZWdFeHAgfSBmcm9tIFwianNyOkBzdGQvcGF0aEBeMS4wLjkvZ2xvYi10by1yZWdleHBcIjtcbmltcG9ydCB7IGpvaW5HbG9icyB9IGZyb20gXCJqc3I6QHN0ZC9wYXRoQF4xLjAuOS9qb2luLWdsb2JzXCI7XG5pbXBvcnQgeyBpc0dsb2IgfSBmcm9tIFwianNyOkBzdGQvcGF0aEBeMS4wLjkvaXMtZ2xvYlwiO1xuaW1wb3J0IHsgaXNBYnNvbHV0ZSB9IGZyb20gXCJqc3I6QHN0ZC9wYXRoQF4xLjAuOS9pcy1hYnNvbHV0ZVwiO1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gXCJqc3I6QHN0ZC9wYXRoQF4xLjAuOS9yZXNvbHZlXCI7XG5pbXBvcnQgeyBTRVBBUkFUT1JfUEFUVEVSTiB9IGZyb20gXCJqc3I6QHN0ZC9wYXRoQF4xLjAuOS9jb25zdGFudHNcIjtcbmltcG9ydCB7IHdhbGssIHdhbGtTeW5jIH0gZnJvbSBcIi4vd2Fsay50c1wiO1xuaW1wb3J0IHsgdG9QYXRoU3RyaW5nIH0gZnJvbSBcIi4vX3RvX3BhdGhfc3RyaW5nLnRzXCI7XG5pbXBvcnQge1xuICBjcmVhdGVXYWxrRW50cnksXG4gIGNyZWF0ZVdhbGtFbnRyeVN5bmMsXG4gIHR5cGUgV2Fsa0VudHJ5LFxufSBmcm9tIFwiLi9fY3JlYXRlX3dhbGtfZW50cnkudHNcIjtcblxuZXhwb3J0IHR5cGUgeyBHbG9iT3B0aW9ucywgV2Fsa0VudHJ5IH07XG5cbi8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG5jb25zdCBpc1dpbmRvd3MgPSAoZ2xvYmFsVGhpcyBhcyBhbnkpLkRlbm8/LmJ1aWxkLm9zID09PSBcIndpbmRvd3NcIjtcblxuLyoqIE9wdGlvbnMgZm9yIHtAbGlua2NvZGUgZXhwYW5kR2xvYn0gYW5kIHtAbGlua2NvZGUgZXhwYW5kR2xvYlN5bmN9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHBhbmRHbG9iT3B0aW9ucyBleHRlbmRzIE9taXQ8R2xvYk9wdGlvbnMsIFwib3NcIj4ge1xuICAvKipcbiAgICogRmlsZSBwYXRoIHdoZXJlIHRvIGV4cGFuZCBmcm9tLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7RGVuby5jd2QoKX1cbiAgICovXG4gIHJvb3Q/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMaXN0IG9mIGdsb2IgcGF0dGVybnMgdG8gYmUgZXhjbHVkZWQgZnJvbSB0aGUgZXhwYW5zaW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7W119XG4gICAqL1xuICBleGNsdWRlPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgZGlyZWN0b3JpZXMgaW4gZW50cmllcy5cbiAgICpcbiAgICogQGRlZmF1bHQge3RydWV9XG4gICAqL1xuICBpbmNsdWRlRGlycz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGZvbGxvdyBzeW1ib2xpYyBsaW5rcy5cbiAgICpcbiAgICogQGRlZmF1bHQge2ZhbHNlfVxuICAgKi9cbiAgZm9sbG93U3ltbGlua3M/OiBib29sZWFuO1xuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGZvbGxvd2VkIHN5bWxpbmsncyBwYXRoIHNob3VsZCBiZSBjYW5vbmljYWxpemVkLlxuICAgKiBUaGlzIG9wdGlvbiB3b3JrcyBvbmx5IGlmIGBmb2xsb3dTeW1saW5rc2AgaXMgbm90IGBmYWxzZWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHt0cnVlfVxuICAgKi9cbiAgY2Fub25pY2FsaXplPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIFNwbGl0UGF0aCB7XG4gIHNlZ21lbnRzOiBzdHJpbmdbXTtcbiAgaXNBYnNvbHV0ZTogYm9vbGVhbjtcbiAgaGFzVHJhaWxpbmdTZXA6IGJvb2xlYW47XG4gIC8vIERlZmluZWQgZm9yIGFueSBhYnNvbHV0ZSBXaW5kb3dzIHBhdGguXG4gIHdpblJvb3Q/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIHNwbGl0KHBhdGg6IHN0cmluZyk6IFNwbGl0UGF0aCB7XG4gIGNvbnN0IHMgPSBTRVBBUkFUT1JfUEFUVEVSTi5zb3VyY2U7XG4gIGNvbnN0IHNlZ21lbnRzID0gcGF0aFxuICAgIC5yZXBsYWNlKG5ldyBSZWdFeHAoYF4ke3N9fCR7c30kYCwgXCJnXCIpLCBcIlwiKVxuICAgIC5zcGxpdChTRVBBUkFUT1JfUEFUVEVSTik7XG4gIGNvbnN0IGlzQWJzb2x1dGVfID0gaXNBYnNvbHV0ZShwYXRoKTtcbiAgY29uc3Qgc3BsaXQ6IFNwbGl0UGF0aCA9IHtcbiAgICBzZWdtZW50cyxcbiAgICBpc0Fic29sdXRlOiBpc0Fic29sdXRlXyxcbiAgICBoYXNUcmFpbGluZ1NlcDogcGF0aC5tYXRjaChuZXcgUmVnRXhwKGAke3N9JGApKSAhPT0gbnVsbCxcbiAgfTtcbiAgaWYgKGlzV2luZG93cyAmJiBpc0Fic29sdXRlXykge1xuICAgIHNwbGl0LndpblJvb3QgPSBzZWdtZW50cy5zaGlmdCgpITtcbiAgfVxuICByZXR1cm4gc3BsaXQ7XG59XG5cbmZ1bmN0aW9uIHRocm93VW5sZXNzTm90Rm91bmQoZXJyb3I6IHVua25vd24pIHtcbiAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBEZW5vLmVycm9ycy5Ob3RGb3VuZCkpIHtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb21wYXJlUGF0aChhOiBXYWxrRW50cnksIGI6IFdhbGtFbnRyeSk6IG51bWJlciB7XG4gIGlmIChhLnBhdGggPCBiLnBhdGgpIHJldHVybiAtMTtcbiAgaWYgKGEucGF0aCA+IGIucGF0aCkgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vKipcbiAqIFJldHVybnMgYW4gYXN5bmMgaXRlcmF0b3IgdGhhdCB5aWVsZHMgZWFjaCBmaWxlIHBhdGggbWF0Y2hpbmcgdGhlIGdpdmVuIGdsb2JcbiAqIHBhdHRlcm4uXG4gKlxuICogVGhlIGZpbGUgcGF0aHMgYXJlIGFic29sdXRlIHBhdGhzLiBJZiBgcm9vdGAgaXMgbm90IHByb3ZpZGVkLCB0aGUgY3VycmVudFxuICogd29ya2luZyBkaXJlY3RvcnkgaXMgdXNlZC4gVGhlIGByb290YCBkaXJlY3RvcnkgaXMgbm90IGluY2x1ZGVkIGluIHRoZVxuICogeWllbGRlZCBmaWxlIHBhdGhzLlxuICpcbiAqIFJlcXVpcmVzIGAtLWFsbG93LXJlYWRgIHBlcm1pc3Npb24uXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmRlbm8uY29tL3J1bnRpbWUvbWFudWFsL2Jhc2ljcy9wZXJtaXNzaW9ucyNmaWxlLXN5c3RlbS1hY2Nlc3N9XG4gKiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBEZW5vJ3MgcGVybWlzc2lvbnMgc3lzdGVtLlxuICpcbiAqIEBwYXJhbSBnbG9iIFRoZSBnbG9iIHBhdHRlcm4gdG8gZXhwYW5kLlxuICogQHBhcmFtIG9wdGlvbnMgQWRkaXRpb25hbCBvcHRpb25zIGZvciB0aGUgZXhwYW5zaW9uLlxuICpcbiAqIEByZXR1cm5zIEFuIGFzeW5jIGl0ZXJhdG9yIHRoYXQgeWllbGRzIGVhY2ggd2FsayBlbnRyeSBtYXRjaGluZyB0aGUgZ2xvYlxuICogcGF0dGVybi5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICpcbiAqIEZpbGUgc3RydWN0dXJlOlxuICogYGBgXG4gKiBmb2xkZXJcbiAqIOKUnOKUgOKUgCBzY3JpcHQudHNcbiAqIOKUlOKUgOKUgCBmb28udHNcbiAqIGBgYFxuICpcbiAqIGBgYHRzIGlnbm9yZVxuICogLy8gc2NyaXB0LnRzXG4gKiBpbXBvcnQgeyBleHBhbmRHbG9iIH0gZnJvbSBcIkBzdGQvZnMvZXhwYW5kLWdsb2JcIjtcbiAqXG4gKiBhd2FpdCBBcnJheS5mcm9tQXN5bmMoZXhwYW5kR2xvYihcIioudHNcIikpO1xuICogLy8gW1xuICogLy8gICB7XG4gKiAvLyAgICAgcGF0aDogXCIvVXNlcnMvdXNlci9mb2xkZXIvc2NyaXB0LnRzXCIsXG4gKiAvLyAgICAgbmFtZTogXCJzY3JpcHQudHNcIixcbiAqIC8vICAgICBpc0ZpbGU6IHRydWUsXG4gKiAvLyAgICAgaXNEaXJlY3Rvcnk6IGZhbHNlLFxuICogLy8gICAgIGlzU3ltbGluazogZmFsc2UsXG4gKiAvLyAgIH0sXG4gKiAvLyAgIHtcbiAqIC8vICAgICBwYXRoOiBcIi9Vc2Vycy91c2VyL2ZvbGRlci9mb28udHNcIixcbiAqIC8vICAgICBuYW1lOiBcImZvby50c1wiLFxuICogLy8gICAgIGlzRmlsZTogdHJ1ZSxcbiAqIC8vICAgICBpc0RpcmVjdG9yeTogZmFsc2UsXG4gKiAvLyAgICAgaXNTeW1saW5rOiBmYWxzZSxcbiAqIC8vICAgfSxcbiAqIC8vIF1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIERlZmluZSByb290IGRpcmVjdG9yeVxuICpcbiAqIFNldHRpbmcgdGhlIGByb290YCBvcHRpb24gdG8gYC9mb2xkZXJgIHdpbGwgZXhwYW5kIHRoZSBnbG9iIHBhdHRlcm4gZnJvbSB0aGVcbiAqIGAvZm9sZGVyYCBkaXJlY3RvcnkuXG4gKlxuICogRmlsZSBzdHJ1Y3R1cmU6XG4gKiBgYGBcbiAqIGZvbGRlclxuICog4pSc4pSA4pSAIHN1YmRpclxuICog4pSCICAg4pSU4pSA4pSAIGJhci50c1xuICog4pSc4pSA4pSAIHNjcmlwdC50c1xuICog4pSU4pSA4pSAIGZvby50c1xuICogYGBgXG4gKlxuICogYGBgdHMgaWdub3JlXG4gKiAvLyBzY3JpcHQudHNcbiAqIGltcG9ydCB7IGV4cGFuZEdsb2IgfSBmcm9tIFwiQHN0ZC9mcy9leHBhbmQtZ2xvYlwiO1xuICpcbiAqIGF3YWl0IEFycmF5LmZyb21Bc3luYyhleHBhbmRHbG9iKFwiKi50c1wiLCB7IHJvb3Q6IFwiLi9zdWJkaXJcIiB9KSk7XG4gKiAvLyBbXG4gKiAvLyAgIHtcbiAqIC8vICAgICBwYXRoOiBcIi9Vc2Vycy91c2VyL2ZvbGRlci9zdWJkaXIvYmFyLnRzXCIsXG4gKiAvLyAgICAgbmFtZTogXCJiYXIudHNcIixcbiAqIC8vICAgICBpc0ZpbGU6IHRydWUsXG4gKiAvLyAgICAgaXNEaXJlY3Rvcnk6IGZhbHNlLFxuICogLy8gICAgIGlzU3ltbGluazogZmFsc2UsXG4gKiAvLyAgIH0sXG4gKiAvLyBdXG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBFeGNsdWRlIGZpbGVzXG4gKlxuICogU2V0dGluZyB0aGUgYGV4Y2x1ZGVgIG9wdGlvbiB0byBgW1wiZm9vLnRzXCJdYCB3aWxsIGV4Y2x1ZGUgdGhlIGBmb28udHNgIGZpbGVcbiAqIGZyb20gdGhlIGV4cGFuc2lvbi5cbiAqXG4gKiBGaWxlIHN0cnVjdHVyZTpcbiAqIGBgYFxuICogZm9sZGVyXG4gKiDilJzilIDilIAgc2NyaXB0LnRzXG4gKiDilJTilIDilIAgZm9vLnRzXG4gKiBgYGBcbiAqXG4gKiBgYGB0cyBpZ25vcmVcbiAqIC8vIHNjcmlwdC50c1xuICogaW1wb3J0IHsgZXhwYW5kR2xvYiB9IGZyb20gXCJAc3RkL2ZzL2V4cGFuZC1nbG9iXCI7XG4gKlxuICogYXdhaXQgQXJyYXkuZnJvbUFzeW5jKGV4cGFuZEdsb2IoXCIqLnRzXCIsIHsgZXhjbHVkZTogW1wiZm9vLnRzXCJdIH0pKTtcbiAqIC8vIFtcbiAqIC8vICAge1xuICogLy8gICAgIHBhdGg6IFwiL1VzZXJzL3VzZXIvZm9sZGVyL3NjcmlwdC50c1wiLFxuICogLy8gICAgIG5hbWU6IFwidHJ1ZS50c1wiLFxuICogLy8gICAgIGlzRmlsZTogZmFsc2UsXG4gKiAvLyAgICAgaXNEaXJlY3Rvcnk6IGZhbHNlLFxuICogLy8gICAgIGlzU3ltbGluazogZmFsc2UsXG4gKiAvLyAgIH0sXG4gKiAvLyBdXG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBFeGNsdWRlIGRpcmVjdG9yaWVzXG4gKlxuICogU2V0dGluZyB0aGUgYGluY2x1ZGVEaXJzYCBvcHRpb24gdG8gYGZhbHNlYCB3aWxsIGV4Y2x1ZGUgZGlyZWN0b3JpZXMgZnJvbSB0aGVcbiAqIGV4cGFuc2lvbi5cbiAqXG4gKiBGaWxlIHN0cnVjdHVyZTpcbiAqIGBgYFxuICogZm9sZGVyXG4gKiDilJzilIDilIAgc3ViZGlyXG4gKiDilIIgICDilJTilIDilIAgYmFyLnRzXG4gKiDilJzilIDilIAgc2NyaXB0LnRzXG4gKiDilJTilIDilIAgZm9vLnRzXG4gKiBgYGBcbiAqXG4gKiBgYGB0cyBpZ25vcmVcbiAqIC8vIHNjcmlwdC50c1xuICogaW1wb3J0IHsgZXhwYW5kR2xvYiB9IGZyb20gXCJAc3RkL2ZzL2V4cGFuZC1nbG9iXCI7XG4gKlxuICogYXdhaXQgQXJyYXkuZnJvbUFzeW5jKGV4cGFuZEdsb2IoXCIqXCIsIHsgaW5jbHVkZURpcnM6IGZhbHNlIH0pKTtcbiAqIC8vIFtcbiAqIC8vICAge1xuICogLy8gICAgIHBhdGg6IFwiL1VzZXJzL3VzZXIvZm9sZGVyL3NjcmlwdC50c1wiLFxuICogLy8gICAgIG5hbWU6IFwic2NyaXB0LnRzXCIsXG4gKiAvLyAgICAgaXNGaWxlOiB0cnVlLFxuICogLy8gICAgIGlzRGlyZWN0b3J5OiBmYWxzZSxcbiAqIC8vICAgICBpc1N5bWxpbms6IGZhbHNlLFxuICogLy8gICB9LFxuICogLy8gICB7XG4gKiAvLyAgICAgcGF0aDogXCIvVXNlcnMvdXNlci9mb2xkZXIvZm9vLnRzXCIsXG4gKiAvLyAgICAgbmFtZTogXCJmb28udHNcIixcbiAqIC8vICAgICBpc0ZpbGU6IHRydWUsXG4gKiAvLyAgICAgaXNEaXJlY3Rvcnk6IGZhbHNlLFxuICogLy8gICAgIGlzU3ltbGluazogZmFsc2UsXG4gKiAvLyAgIH0sXG4gKiAvLyBdXG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBGb2xsb3cgc3ltYm9saWMgbGlua3NcbiAqXG4gKiBTZXR0aW5nIHRoZSBgZm9sbG93U3ltbGlua3NgIG9wdGlvbiB0byBgdHJ1ZWAgd2lsbCBmb2xsb3cgc3ltYm9saWMgbGlua3MuXG4gKlxuICogRmlsZSBzdHJ1Y3R1cmU6XG4gKiBgYGBcbiAqIGZvbGRlclxuICog4pSc4pSA4pSAIHNjcmlwdC50c1xuICog4pSU4pSA4pSAIGxpbmsudHMgLT4gc2NyaXB0LnRzIChzeW1ib2xpYyBsaW5rKVxuICogYGBgXG4gKlxuICogYGBgdHMgaWdub3JlXG4gKiAvLyBzY3JpcHQudHNcbiAqIGltcG9ydCB7IGV4cGFuZEdsb2IgfSBmcm9tIFwiQHN0ZC9mcy9leHBhbmQtZ2xvYlwiO1xuICpcbiAqIGF3YWl0IEFycmF5LmZyb21Bc3luYyhleHBhbmRHbG9iKFwiKi50c1wiLCB7IGZvbGxvd1N5bWxpbmtzOiB0cnVlIH0pKTtcbiAqIC8vIFtcbiAqIC8vICAge1xuICogLy8gICAgIHBhdGg6IFwiL1VzZXJzL3VzZXIvZm9sZGVyL3NjcmlwdC50c1wiLFxuICogLy8gICAgIG5hbWU6IFwic2NyaXB0LnRzXCIsXG4gKiAvLyAgICAgaXNGaWxlOiB0cnVlLFxuICogLy8gICAgIGlzRGlyZWN0b3J5OiBmYWxzZSxcbiAqIC8vICAgICBpc1N5bWxpbms6IGZhbHNlLFxuICogLy8gICB9LFxuICogLy8gICB7XG4gKiAvLyAgICAgcGF0aDogXCIvVXNlcnMvdXNlci9mb2xkZXIvc3ltbGlua1wiLFxuICogLy8gICAgIG5hbWU6IFwic3ltbGlua1wiLFxuICogLy8gICAgIGlzRmlsZTogdHJ1ZSxcbiAqIC8vICAgICBpc0RpcmVjdG9yeTogZmFsc2UsXG4gKiAvLyAgICAgaXNTeW1saW5rOiB0cnVlLFxuICogLy8gICB9LFxuICogLy8gXVxuICogYGBgXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogZXhwYW5kR2xvYihcbiAgZ2xvYjogc3RyaW5nIHwgVVJMLFxuICBvcHRpb25zPzogRXhwYW5kR2xvYk9wdGlvbnMsXG4pOiBBc3luY0l0ZXJhYmxlSXRlcmF0b3I8V2Fsa0VudHJ5PiB7XG4gIGxldCB7XG4gICAgcm9vdCxcbiAgICBleGNsdWRlID0gW10sXG4gICAgaW5jbHVkZURpcnMgPSB0cnVlLFxuICAgIGV4dGVuZGVkID0gdHJ1ZSxcbiAgICBnbG9ic3RhciA9IHRydWUsXG4gICAgY2FzZUluc2Vuc2l0aXZlID0gZmFsc2UsXG4gICAgZm9sbG93U3ltbGlua3MgPSBmYWxzZSxcbiAgICBjYW5vbmljYWxpemUgPSB0cnVlLFxuICB9ID0gb3B0aW9ucyA/PyB7fTtcblxuICBjb25zdCB7XG4gICAgc2VnbWVudHMsXG4gICAgaXNBYnNvbHV0ZTogaXNHbG9iQWJzb2x1dGUsXG4gICAgaGFzVHJhaWxpbmdTZXAsXG4gICAgd2luUm9vdCxcbiAgfSA9IHNwbGl0KHRvUGF0aFN0cmluZyhnbG9iKSk7XG4gIHJvb3QgPz89IGlzR2xvYkFic29sdXRlID8gd2luUm9vdCA/PyBcIi9cIiA6IERlbm8uY3dkKCk7XG5cbiAgY29uc3QgZ2xvYk9wdGlvbnM6IEdsb2JPcHRpb25zID0geyBleHRlbmRlZCwgZ2xvYnN0YXIsIGNhc2VJbnNlbnNpdGl2ZSB9O1xuICBjb25zdCBhYnNSb290ID0gaXNHbG9iQWJzb2x1dGUgPyByb290IDogcmVzb2x2ZShyb290ISk7IC8vIHJvb3QgaXMgYWx3YXlzIHN0cmluZyBoZXJlXG4gIGNvbnN0IHJlc29sdmVGcm9tUm9vdCA9IChwYXRoOiBzdHJpbmcpOiBzdHJpbmcgPT4gcmVzb2x2ZShhYnNSb290LCBwYXRoKTtcbiAgY29uc3QgZXhjbHVkZVBhdHRlcm5zID0gZXhjbHVkZVxuICAgIC5tYXAocmVzb2x2ZUZyb21Sb290KVxuICAgIC5tYXAoKHM6IHN0cmluZyk6IFJlZ0V4cCA9PiBnbG9iVG9SZWdFeHAocywgZ2xvYk9wdGlvbnMpKTtcbiAgY29uc3Qgc2hvdWxkSW5jbHVkZSA9IChwYXRoOiBzdHJpbmcpOiBib29sZWFuID0+XG4gICAgIWV4Y2x1ZGVQYXR0ZXJucy5zb21lKChwOiBSZWdFeHApOiBib29sZWFuID0+ICEhcGF0aC5tYXRjaChwKSk7XG5cbiAgbGV0IGZpeGVkUm9vdCA9IGlzR2xvYkFic29sdXRlID8gd2luUm9vdCA/PyBcIi9cIiA6IGFic1Jvb3Q7XG4gIHdoaWxlIChzZWdtZW50cy5sZW5ndGggPiAwICYmICFpc0dsb2Ioc2VnbWVudHNbMF0hKSkge1xuICAgIGNvbnN0IHNlZyA9IHNlZ21lbnRzLnNoaWZ0KCkhO1xuICAgIGZpeGVkUm9vdCA9IGpvaW5HbG9icyhbZml4ZWRSb290LCBzZWddLCBnbG9iT3B0aW9ucyk7XG4gIH1cblxuICBsZXQgZml4ZWRSb290SW5mbzogV2Fsa0VudHJ5O1xuICB0cnkge1xuICAgIGZpeGVkUm9vdEluZm8gPSBhd2FpdCBjcmVhdGVXYWxrRW50cnkoZml4ZWRSb290KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdGhyb3dVbmxlc3NOb3RGb3VuZChlcnJvcik7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiogYWR2YW5jZU1hdGNoKFxuICAgIHdhbGtJbmZvOiBXYWxrRW50cnksXG4gICAgZ2xvYlNlZ21lbnQ6IHN0cmluZyxcbiAgKTogQXN5bmNJdGVyYWJsZUl0ZXJhdG9yPFdhbGtFbnRyeT4ge1xuICAgIGlmICghd2Fsa0luZm8uaXNEaXJlY3RvcnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKGdsb2JTZWdtZW50ID09PSBcIi4uXCIpIHtcbiAgICAgIGNvbnN0IHBhcmVudFBhdGggPSBqb2luR2xvYnMoW3dhbGtJbmZvLnBhdGgsIFwiLi5cIl0sIGdsb2JPcHRpb25zKTtcbiAgICAgIGlmIChzaG91bGRJbmNsdWRlKHBhcmVudFBhdGgpKSB7XG4gICAgICAgIHJldHVybiB5aWVsZCBhd2FpdCBjcmVhdGVXYWxrRW50cnkocGFyZW50UGF0aCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChnbG9iU2VnbWVudCA9PT0gXCIqKlwiKSB7XG4gICAgICByZXR1cm4geWllbGQqIHdhbGsod2Fsa0luZm8ucGF0aCwge1xuICAgICAgICBza2lwOiBleGNsdWRlUGF0dGVybnMsXG4gICAgICAgIG1heERlcHRoOiBnbG9ic3RhciA/IEluZmluaXR5IDogMSxcbiAgICAgICAgZm9sbG93U3ltbGlua3MsXG4gICAgICAgIGNhbm9uaWNhbGl6ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBnbG9iUGF0dGVybiA9IGdsb2JUb1JlZ0V4cChnbG9iU2VnbWVudCwgZ2xvYk9wdGlvbnMpO1xuICAgIGZvciBhd2FpdCAoXG4gICAgICBjb25zdCB3YWxrRW50cnkgb2Ygd2Fsayh3YWxrSW5mby5wYXRoLCB7XG4gICAgICAgIG1heERlcHRoOiAxLFxuICAgICAgICBza2lwOiBleGNsdWRlUGF0dGVybnMsXG4gICAgICAgIGZvbGxvd1N5bWxpbmtzLFxuICAgICAgfSlcbiAgICApIHtcbiAgICAgIGlmIChcbiAgICAgICAgd2Fsa0VudHJ5LnBhdGggIT09IHdhbGtJbmZvLnBhdGggJiZcbiAgICAgICAgd2Fsa0VudHJ5Lm5hbWUubWF0Y2goZ2xvYlBhdHRlcm4pXG4gICAgICApIHtcbiAgICAgICAgeWllbGQgd2Fsa0VudHJ5O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxldCBjdXJyZW50TWF0Y2hlczogV2Fsa0VudHJ5W10gPSBbZml4ZWRSb290SW5mb107XG4gIGZvciAoY29uc3Qgc2VnbWVudCBvZiBzZWdtZW50cykge1xuICAgIC8vIEFkdmFuY2luZyB0aGUgbGlzdCBvZiBjdXJyZW50IG1hdGNoZXMgbWF5IGludHJvZHVjZSBkdXBsaWNhdGVzLCBzbyB3ZVxuICAgIC8vIHBhc3MgZXZlcnl0aGluZyB0aHJvdWdoIHRoaXMgTWFwLlxuICAgIGNvbnN0IG5leHRNYXRjaE1hcDogTWFwPHN0cmluZywgV2Fsa0VudHJ5PiA9IG5ldyBNYXAoKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGN1cnJlbnRNYXRjaGVzLm1hcChhc3luYyAoY3VycmVudE1hdGNoKSA9PiB7XG4gICAgICAgIGZvciBhd2FpdCAoY29uc3QgbmV4dE1hdGNoIG9mIGFkdmFuY2VNYXRjaChjdXJyZW50TWF0Y2gsIHNlZ21lbnQpKSB7XG4gICAgICAgICAgbmV4dE1hdGNoTWFwLnNldChuZXh0TWF0Y2gucGF0aCwgbmV4dE1hdGNoKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKTtcbiAgICBjdXJyZW50TWF0Y2hlcyA9IFsuLi5uZXh0TWF0Y2hNYXAudmFsdWVzKCldLnNvcnQoY29tcGFyZVBhdGgpO1xuICB9XG5cbiAgaWYgKGhhc1RyYWlsaW5nU2VwKSB7XG4gICAgY3VycmVudE1hdGNoZXMgPSBjdXJyZW50TWF0Y2hlcy5maWx0ZXIoXG4gICAgICAoZW50cnk6IFdhbGtFbnRyeSk6IGJvb2xlYW4gPT4gZW50cnkuaXNEaXJlY3RvcnksXG4gICAgKTtcbiAgfVxuICBpZiAoIWluY2x1ZGVEaXJzKSB7XG4gICAgY3VycmVudE1hdGNoZXMgPSBjdXJyZW50TWF0Y2hlcy5maWx0ZXIoXG4gICAgICAoZW50cnk6IFdhbGtFbnRyeSk6IGJvb2xlYW4gPT4gIWVudHJ5LmlzRGlyZWN0b3J5LFxuICAgICk7XG4gIH1cbiAgeWllbGQqIGN1cnJlbnRNYXRjaGVzO1xufVxuXG4vKipcbiAqIFJldHVybnMgYW4gaXRlcmF0b3IgdGhhdCB5aWVsZHMgZWFjaCBmaWxlIHBhdGggbWF0Y2hpbmcgdGhlIGdpdmVuIGdsb2JcbiAqIHBhdHRlcm4uIFRoZSBmaWxlIHBhdGhzIGFyZSByZWxhdGl2ZSB0byB0aGUgcHJvdmlkZWQgYHJvb3RgIGRpcmVjdG9yeS5cbiAqIElmIGByb290YCBpcyBub3QgcHJvdmlkZWQsIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGlzIHVzZWQuXG4gKiBUaGUgYHJvb3RgIGRpcmVjdG9yeSBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIHlpZWxkZWQgZmlsZSBwYXRocy5cbiAqXG4gKiBSZXF1aXJlcyB0aGUgYC0tYWxsb3ctcmVhZGAgZmxhZy5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2RvY3MuZGVuby5jb20vcnVudGltZS9tYW51YWwvYmFzaWNzL3Blcm1pc3Npb25zI2ZpbGUtc3lzdGVtLWFjY2Vzc31cbiAqIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIERlbm8ncyBwZXJtaXNzaW9ucyBzeXN0ZW0uXG4gKlxuICogQHBhcmFtIGdsb2IgVGhlIGdsb2IgcGF0dGVybiB0byBleHBhbmQuXG4gKiBAcGFyYW0gb3B0aW9ucyBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIHRoZSBleHBhbnNpb24uXG4gKlxuICogQHJldHVybnMgQW4gaXRlcmF0b3IgdGhhdCB5aWVsZHMgZWFjaCB3YWxrIGVudHJ5IG1hdGNoaW5nIHRoZSBnbG9iIHBhdHRlcm4uXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqXG4gKiBGaWxlIHN0cnVjdHVyZTpcbiAqIGBgYFxuICogZm9sZGVyXG4gKiDilJzilIDilIAgc2NyaXB0LnRzXG4gKiDilJTilIDilIAgZm9vLnRzXG4gKiBgYGBcbiAqXG4gKiBgYGB0cyBpZ25vcmVcbiAqIC8vIHNjcmlwdC50c1xuICogaW1wb3J0IHsgZXhwYW5kR2xvYlN5bmMgfSBmcm9tIFwiQHN0ZC9mcy9leHBhbmQtZ2xvYlwiO1xuICpcbiAqIGNvbnN0IGVudHJpZXMgPSBbXTtcbiAqIGZvciAoY29uc3QgZW50cnkgb2YgZXhwYW5kR2xvYlN5bmMoXCIqLnRzXCIpKSB7XG4gKiAgIGVudHJpZXMucHVzaChlbnRyeSk7XG4gKiB9XG4gKlxuICogZW50cmllc1swXSEucGF0aDsgLy8gXCIvVXNlcnMvdXNlci9mb2xkZXIvc2NyaXB0LnRzXCJcbiAqIGVudHJpZXNbMF0hLm5hbWU7IC8vIFwic2NyaXB0LnRzXCJcbiAqIGVudHJpZXNbMF0hLmlzRmlsZTsgLy8gZmFsc2VcbiAqIGVudHJpZXNbMF0hLmlzRGlyZWN0b3J5OyAvLyB0cnVlXG4gKiBlbnRyaWVzWzBdIS5pc1N5bWxpbms7IC8vIGZhbHNlXG4gKlxuICogZW50cmllc1sxXSEucGF0aDsgLy8gXCIvVXNlcnMvdXNlci9mb2xkZXIvZm9vLnRzXCJcbiAqIGVudHJpZXNbMV0hLm5hbWU7IC8vIFwiZm9vLnRzXCJcbiAqIGVudHJpZXNbMV0hLmlzRmlsZTsgLy8gdHJ1ZVxuICogZW50cmllc1sxXSEuaXNEaXJlY3Rvcnk7IC8vIGZhbHNlXG4gKiBlbnRyaWVzWzFdIS5pc1N5bWxpbms7IC8vIGZhbHNlXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uKiBleHBhbmRHbG9iU3luYyhcbiAgZ2xvYjogc3RyaW5nIHwgVVJMLFxuICBvcHRpb25zPzogRXhwYW5kR2xvYk9wdGlvbnMsXG4pOiBJdGVyYWJsZUl0ZXJhdG9yPFdhbGtFbnRyeT4ge1xuICBsZXQge1xuICAgIHJvb3QsXG4gICAgZXhjbHVkZSA9IFtdLFxuICAgIGluY2x1ZGVEaXJzID0gdHJ1ZSxcbiAgICBleHRlbmRlZCA9IHRydWUsXG4gICAgZ2xvYnN0YXIgPSB0cnVlLFxuICAgIGNhc2VJbnNlbnNpdGl2ZSA9IGZhbHNlLFxuICAgIGZvbGxvd1N5bWxpbmtzID0gZmFsc2UsXG4gICAgY2Fub25pY2FsaXplID0gdHJ1ZSxcbiAgfSA9IG9wdGlvbnMgPz8ge307XG5cbiAgY29uc3Qge1xuICAgIHNlZ21lbnRzLFxuICAgIGlzQWJzb2x1dGU6IGlzR2xvYkFic29sdXRlLFxuICAgIGhhc1RyYWlsaW5nU2VwLFxuICAgIHdpblJvb3QsXG4gIH0gPSBzcGxpdCh0b1BhdGhTdHJpbmcoZ2xvYikpO1xuICByb290ID8/PSBpc0dsb2JBYnNvbHV0ZSA/IHdpblJvb3QgPz8gXCIvXCIgOiBEZW5vLmN3ZCgpO1xuXG4gIGNvbnN0IGdsb2JPcHRpb25zOiBHbG9iT3B0aW9ucyA9IHsgZXh0ZW5kZWQsIGdsb2JzdGFyLCBjYXNlSW5zZW5zaXRpdmUgfTtcbiAgY29uc3QgYWJzUm9vdCA9IGlzR2xvYkFic29sdXRlID8gcm9vdCA6IHJlc29sdmUocm9vdCEpOyAvLyByb290IGlzIGFsd2F5cyBzdHJpbmcgaGVyZVxuICBjb25zdCByZXNvbHZlRnJvbVJvb3QgPSAocGF0aDogc3RyaW5nKTogc3RyaW5nID0+IHJlc29sdmUoYWJzUm9vdCwgcGF0aCk7XG4gIGNvbnN0IGV4Y2x1ZGVQYXR0ZXJucyA9IGV4Y2x1ZGVcbiAgICAubWFwKHJlc29sdmVGcm9tUm9vdClcbiAgICAubWFwKChzOiBzdHJpbmcpOiBSZWdFeHAgPT4gZ2xvYlRvUmVnRXhwKHMsIGdsb2JPcHRpb25zKSk7XG4gIGNvbnN0IHNob3VsZEluY2x1ZGUgPSAocGF0aDogc3RyaW5nKTogYm9vbGVhbiA9PlxuICAgICFleGNsdWRlUGF0dGVybnMuc29tZSgocDogUmVnRXhwKTogYm9vbGVhbiA9PiAhIXBhdGgubWF0Y2gocCkpO1xuXG4gIGxldCBmaXhlZFJvb3QgPSBpc0dsb2JBYnNvbHV0ZSA/IHdpblJvb3QgPz8gXCIvXCIgOiBhYnNSb290O1xuICB3aGlsZSAoc2VnbWVudHMubGVuZ3RoID4gMCAmJiAhaXNHbG9iKHNlZ21lbnRzWzBdISkpIHtcbiAgICBjb25zdCBzZWcgPSBzZWdtZW50cy5zaGlmdCgpITtcbiAgICBmaXhlZFJvb3QgPSBqb2luR2xvYnMoW2ZpeGVkUm9vdCwgc2VnXSwgZ2xvYk9wdGlvbnMpO1xuICB9XG5cbiAgbGV0IGZpeGVkUm9vdEluZm86IFdhbGtFbnRyeTtcbiAgdHJ5IHtcbiAgICBmaXhlZFJvb3RJbmZvID0gY3JlYXRlV2Fsa0VudHJ5U3luYyhmaXhlZFJvb3QpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB0aHJvd1VubGVzc05vdEZvdW5kKGVycm9yKTtcbiAgfVxuXG4gIGZ1bmN0aW9uKiBhZHZhbmNlTWF0Y2goXG4gICAgd2Fsa0luZm86IFdhbGtFbnRyeSxcbiAgICBnbG9iU2VnbWVudDogc3RyaW5nLFxuICApOiBJdGVyYWJsZUl0ZXJhdG9yPFdhbGtFbnRyeT4ge1xuICAgIGlmICghd2Fsa0luZm8uaXNEaXJlY3RvcnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKGdsb2JTZWdtZW50ID09PSBcIi4uXCIpIHtcbiAgICAgIGNvbnN0IHBhcmVudFBhdGggPSBqb2luR2xvYnMoW3dhbGtJbmZvLnBhdGgsIFwiLi5cIl0sIGdsb2JPcHRpb25zKTtcbiAgICAgIGlmIChzaG91bGRJbmNsdWRlKHBhcmVudFBhdGgpKSB7XG4gICAgICAgIHJldHVybiB5aWVsZCBjcmVhdGVXYWxrRW50cnlTeW5jKHBhcmVudFBhdGgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoZ2xvYlNlZ21lbnQgPT09IFwiKipcIikge1xuICAgICAgcmV0dXJuIHlpZWxkKiB3YWxrU3luYyh3YWxrSW5mby5wYXRoLCB7XG4gICAgICAgIHNraXA6IGV4Y2x1ZGVQYXR0ZXJucyxcbiAgICAgICAgbWF4RGVwdGg6IGdsb2JzdGFyID8gSW5maW5pdHkgOiAxLFxuICAgICAgICBmb2xsb3dTeW1saW5rcyxcbiAgICAgICAgY2Fub25pY2FsaXplLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGdsb2JQYXR0ZXJuID0gZ2xvYlRvUmVnRXhwKGdsb2JTZWdtZW50LCBnbG9iT3B0aW9ucyk7XG4gICAgZm9yIChcbiAgICAgIGNvbnN0IHdhbGtFbnRyeSBvZiB3YWxrU3luYyh3YWxrSW5mby5wYXRoLCB7XG4gICAgICAgIG1heERlcHRoOiAxLFxuICAgICAgICBza2lwOiBleGNsdWRlUGF0dGVybnMsXG4gICAgICAgIGZvbGxvd1N5bWxpbmtzLFxuICAgICAgfSlcbiAgICApIHtcbiAgICAgIGlmIChcbiAgICAgICAgd2Fsa0VudHJ5LnBhdGggIT09IHdhbGtJbmZvLnBhdGggJiZcbiAgICAgICAgd2Fsa0VudHJ5Lm5hbWUubWF0Y2goZ2xvYlBhdHRlcm4pXG4gICAgICApIHtcbiAgICAgICAgeWllbGQgd2Fsa0VudHJ5O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxldCBjdXJyZW50TWF0Y2hlczogV2Fsa0VudHJ5W10gPSBbZml4ZWRSb290SW5mb107XG4gIGZvciAoY29uc3Qgc2VnbWVudCBvZiBzZWdtZW50cykge1xuICAgIC8vIEFkdmFuY2luZyB0aGUgbGlzdCBvZiBjdXJyZW50IG1hdGNoZXMgbWF5IGludHJvZHVjZSBkdXBsaWNhdGVzLCBzbyB3ZVxuICAgIC8vIHBhc3MgZXZlcnl0aGluZyB0aHJvdWdoIHRoaXMgTWFwLlxuICAgIGNvbnN0IG5leHRNYXRjaE1hcDogTWFwPHN0cmluZywgV2Fsa0VudHJ5PiA9IG5ldyBNYXAoKTtcbiAgICBmb3IgKGNvbnN0IGN1cnJlbnRNYXRjaCBvZiBjdXJyZW50TWF0Y2hlcykge1xuICAgICAgZm9yIChjb25zdCBuZXh0TWF0Y2ggb2YgYWR2YW5jZU1hdGNoKGN1cnJlbnRNYXRjaCwgc2VnbWVudCkpIHtcbiAgICAgICAgbmV4dE1hdGNoTWFwLnNldChuZXh0TWF0Y2gucGF0aCwgbmV4dE1hdGNoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY3VycmVudE1hdGNoZXMgPSBbLi4ubmV4dE1hdGNoTWFwLnZhbHVlcygpXS5zb3J0KGNvbXBhcmVQYXRoKTtcbiAgfVxuXG4gIGlmIChoYXNUcmFpbGluZ1NlcCkge1xuICAgIGN1cnJlbnRNYXRjaGVzID0gY3VycmVudE1hdGNoZXMuZmlsdGVyKFxuICAgICAgKGVudHJ5OiBXYWxrRW50cnkpOiBib29sZWFuID0+IGVudHJ5LmlzRGlyZWN0b3J5LFxuICAgICk7XG4gIH1cbiAgaWYgKCFpbmNsdWRlRGlycykge1xuICAgIGN1cnJlbnRNYXRjaGVzID0gY3VycmVudE1hdGNoZXMuZmlsdGVyKFxuICAgICAgKGVudHJ5OiBXYWxrRW50cnkpOiBib29sZWFuID0+ICFlbnRyeS5pc0RpcmVjdG9yeSxcbiAgICApO1xuICB9XG4gIHlpZWxkKiBjdXJyZW50TWF0Y2hlcztcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQsU0FBMkIsWUFBWSxRQUFRLHNDQUFzQztBQUNyRixTQUFTLFNBQVMsUUFBUSxrQ0FBa0M7QUFDNUQsU0FBUyxNQUFNLFFBQVEsK0JBQStCO0FBQ3RELFNBQVMsVUFBVSxRQUFRLG1DQUFtQztBQUM5RCxTQUFTLE9BQU8sUUFBUSwrQkFBK0I7QUFDdkQsU0FBUyxpQkFBaUIsUUFBUSxpQ0FBaUM7QUFDbkUsU0FBUyxJQUFJLEVBQUUsUUFBUSxRQUFRLFlBQVk7QUFDM0MsU0FBUyxZ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 +// denoCacheMetadata=14596952344420789008,3140974801803053508
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/f4b08ff3716c647cd205aece3dc8dce6c78616d2042cf985b649b82f03f0a51f.js b/vendor/gen/https/jsr.io/f4b08ff3716c647cd205aece3dc8dce6c78616d2042cf985b649b82f03f0a51f.js new file mode 100644 index 0000000..96c5f68 --- /dev/null +++ b/vendor/gen/https/jsr.io/f4b08ff3716c647cd205aece3dc8dce6c78616d2042cf985b649b82f03f0a51f.js @@ -0,0 +1,21 @@ +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2025 the Deno authors. MIT license. +export const nil = { + tag: "tag:yaml.org,2002:null", + kind: "scalar", + defaultStyle: "lowercase", + predicate: (object)=>object === null, + construct: ()=>null, + resolve: (data)=>{ + return data === "~" || data === "null" || data === "Null" || data === "NULL"; + }, + represent: { + lowercase: ()=>"null", + uppercase: ()=>"NULL", + camelcase: ()=>"Null" + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQveWFtbC8xLjAuNi9fdHlwZS9uaWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUG9ydGVkIGZyb20ganMteWFtbCB2My4xMy4xOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVjYS9qcy15YW1sL2NvbW1pdC82NjVhYWRkYTQyMzQ5ZGNhZTg2OWYxMjA0MGQ5YjEwZWYxOGQxMmRhXG4vLyBDb3B5cmlnaHQgMjAxMS0yMDE1IGJ5IFZpdGFseSBQdXpyaW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cblxuaW1wb3J0IHR5cGUgeyBUeXBlIH0gZnJvbSBcIi4uL190eXBlLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBuaWw6IFR5cGU8XCJzY2FsYXJcIiwgbnVsbD4gPSB7XG4gIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjpudWxsXCIsXG4gIGtpbmQ6IFwic2NhbGFyXCIsXG4gIGRlZmF1bHRTdHlsZTogXCJsb3dlcmNhc2VcIixcbiAgcHJlZGljYXRlOiAob2JqZWN0OiB1bmtub3duKTogb2JqZWN0IGlzIG51bGwgPT4gb2JqZWN0ID09PSBudWxsLFxuICBjb25zdHJ1Y3Q6ICgpID0+IG51bGwsXG4gIHJlc29sdmU6IChkYXRhOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgZGF0YSA9PT0gXCJ+XCIgfHxcbiAgICAgIGRhdGEgPT09IFwibnVsbFwiIHx8XG4gICAgICBkYXRhID09PSBcIk51bGxcIiB8fFxuICAgICAgZGF0YSA9PT0gXCJOVUxMXCJcbiAgICApO1xuICB9LFxuICByZXByZXNlbnQ6IHtcbiAgICBsb3dlcmNhc2U6ICgpOiBzdHJpbmcgPT4gXCJudWxsXCIsXG4gICAgdXBwZXJjYXNlOiAoKTogc3RyaW5nID0+IFwiTlVMTFwiLFxuICAgIGNhbWVsY2FzZTogKCk6IHN0cmluZyA9PiBcIk51bGxcIixcbiAgfSxcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLG9GQUFvRjtBQUNwRiwwRUFBMEU7QUFDMUUscURBQXFEO0FBSXJELE9BQU8sTUFBTSxNQUE0QjtFQUN2QyxLQUFLO0VBQ0wsTUFBTTtFQUNOLGNBQWM7RUFDZCxXQUFXLENBQUMsU0FBb0MsV0FBVztFQUMzRCxXQUFXLElBQU07RUFDakIsU0FBUyxDQUFDO0lBQ1IsT0FDRSxTQUFTLE9BQ1QsU0FBUyxVQUNULFNBQVMsVUFDVCxTQUFTO0VBRWI7RUFDQSxXQUFXO0lBQ1QsV0FBVyxJQUFjO0lBQ3pCLFdBQVcsSUFBYztJQUN6QixXQUFXLElBQWM7RUFDM0I7QUFDRixFQUFFIn0= +// denoCacheMetadata=11689818641340337134,7524614590640770563
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/f5f384eec98ab72dd1842d44353096dcf386e40ee22a4347f24ab5cf92457ce4.js b/vendor/gen/https/jsr.io/f5f384eec98ab72dd1842d44353096dcf386e40ee22a4347f24ab5cf92457ce4.js new file mode 100644 index 0000000..fd5db7c --- /dev/null +++ b/vendor/gen/https/jsr.io/f5f384eec98ab72dd1842d44353096dcf386e40ee22a4347f24ab5cf92457ce4.js @@ -0,0 +1,16 @@ +// Ported from js-yaml v3.13.1: +// https://github.com/nodeca/js-yaml/commit/665aadda42349dcae869f12040d9b10ef18d12da +// Copyright 2011-2015 by Vitaly Puzrin. All rights reserved. MIT license. +// Copyright 2018-2025 the Deno authors. MIT license. +export const map = { + tag: "tag:yaml.org,2002:map", + resolve () { + return true; + }, + construct (data) { + return data !== null ? data : {}; + }, + kind: "mapping" +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQveWFtbC8xLjAuNi9fdHlwZS9tYXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gUG9ydGVkIGZyb20ganMteWFtbCB2My4xMy4xOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVjYS9qcy15YW1sL2NvbW1pdC82NjVhYWRkYTQyMzQ5ZGNhZTg2OWYxMjA0MGQ5YjEwZWYxOGQxMmRhXG4vLyBDb3B5cmlnaHQgMjAxMS0yMDE1IGJ5IFZpdGFseSBQdXpyaW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IDIwMTgtMjAyNSB0aGUgRGVubyBhdXRob3JzLiBNSVQgbGljZW5zZS5cblxuaW1wb3J0IHR5cGUgeyBUeXBlIH0gZnJvbSBcIi4uL190eXBlLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBtYXA6IFR5cGU8XCJtYXBwaW5nXCIsIHVua25vd24+ID0ge1xuICB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6bWFwXCIsXG4gIHJlc29sdmUoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIGNvbnN0cnVjdChkYXRhKSB7XG4gICAgcmV0dXJuIGRhdGEgIT09IG51bGwgPyBkYXRhIDoge307XG4gIH0sXG4gIGtpbmQ6IFwibWFwcGluZ1wiLFxufTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0Isb0ZBQW9GO0FBQ3BGLDBFQUEwRTtBQUMxRSxxREFBcUQ7QUFJckQsT0FBTyxNQUFNLE1BQWdDO0VBQzNDLEtBQUs7RUFDTDtJQUNFLE9BQU87RUFDVDtFQUNBLFdBQVUsSUFBSTtJQUNaLE9BQU8sU0FBUyxPQUFPLE9BQU8sQ0FBQztFQUNqQztFQUNBLE1BQU07QUFDUixFQUFFIn0= +// denoCacheMetadata=12670044484821605217,1235508351547473956
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/f67d23f6d79954611711428bb8e43b3250f26d23984bf226e4a11fcfe4de3746.js b/vendor/gen/https/jsr.io/f67d23f6d79954611711428bb8e43b3250f26d23984bf226e4a11fcfe4de3746.js new file mode 100644 index 0000000..f13e0f4 --- /dev/null +++ b/vendor/gen/https/jsr.io/f67d23f6d79954611711428bb8e43b3250f26d23984bf226e4a11fcfe4de3746.js @@ -0,0 +1,30 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { join as posixJoin } from "./posix/join.ts"; +import { join as windowsJoin } from "./windows/join.ts"; +/** + * Joins a sequence of paths, then normalizes the resulting path. + * + * @example Usage + * ```ts + * import { join } from "@std/path/join"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(join("C:\\foo", "bar", "baz\\quux", "garply", ".."), "C:\\foo\\bar\\baz\\quux"); + * } else { + * assertEquals(join("/foo", "bar", "baz/quux", "garply", ".."), "/foo/bar/baz/quux"); + * } + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `join` from `@std/path/unstable-join`. + * + * @param paths Paths to be joined and normalized. + * @returns The joined and normalized path. + */ export function join(...paths) { + return isWindows ? windowsJoin(...paths) : posixJoin(...paths); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9qb2luLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjQgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGlzV2luZG93cyB9IGZyb20gXCIuL19vcy50c1wiO1xuaW1wb3J0IHsgam9pbiBhcyBwb3NpeEpvaW4gfSBmcm9tIFwiLi9wb3NpeC9qb2luLnRzXCI7XG5pbXBvcnQgeyBqb2luIGFzIHdpbmRvd3NKb2luIH0gZnJvbSBcIi4vd2luZG93cy9qb2luLnRzXCI7XG5cbi8qKlxuICogSm9pbnMgYSBzZXF1ZW5jZSBvZiBwYXRocywgdGhlbiBub3JtYWxpemVzIHRoZSByZXN1bHRpbmcgcGF0aC5cbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGpvaW4gfSBmcm9tIFwiQHN0ZC9wYXRoL2pvaW5cIjtcbiAqIGltcG9ydCB7IGFzc2VydEVxdWFscyB9IGZyb20gXCJAc3RkL2Fzc2VydFwiO1xuICpcbiAqIGlmIChEZW5vLmJ1aWxkLm9zID09PSBcIndpbmRvd3NcIikge1xuICogICBhc3NlcnRFcXVhbHMoam9pbihcIkM6XFxcXGZvb1wiLCBcImJhclwiLCBcImJhelxcXFxxdXV4XCIsIFwiZ2FycGx5XCIsIFwiLi5cIiksIFwiQzpcXFxcZm9vXFxcXGJhclxcXFxiYXpcXFxccXV1eFwiKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGFzc2VydEVxdWFscyhqb2luKFwiL2Zvb1wiLCBcImJhclwiLCBcImJhei9xdXV4XCIsIFwiZ2FycGx5XCIsIFwiLi5cIiksIFwiL2Zvby9iYXIvYmF6L3F1dXhcIik7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBOb3RlOiBJZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBmaWxlIFVSTHMsXG4gKiB1c2UgdGhlIG5ldyB2ZXJzaW9uIG9mIGBqb2luYCBmcm9tIGBAc3RkL3BhdGgvdW5zdGFibGUtam9pbmAuXG4gKlxuICogQHBhcmFtIHBhdGhzIFBhdGhzIHRvIGJlIGpvaW5lZCBhbmQgbm9ybWFsaXplZC5cbiAqIEByZXR1cm5zIFRoZSBqb2luZWQgYW5kIG5vcm1hbGl6ZWQgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpvaW4oLi4ucGF0aHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlzV2luZG93cyA/IHdpbmRvd3NKb2luKC4uLnBhdGhzKSA6IHBvc2l4Sm9pbiguLi5wYXRocyk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLHFDQUFxQztBQUVyQyxTQUFTLFNBQVMsUUFBUSxXQUFXO0FBQ3JDLFNBQVMsUUFBUSxTQUFTLFFBQVEsa0JBQWtCO0FBQ3BELFNBQVMsUUFBUSxXQUFXLFFBQVEsb0JBQW9CO0FBRXhEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW9CQyxHQUNELE9BQU8sU0FBUyxLQUFLLEdBQUcsS0FBZTtFQUNyQyxPQUFPLFlBQVksZUFBZSxTQUFTLGFBQWE7QUFDMUQifQ== +// denoCacheMetadata=9382851392383508921,16341037408135033779
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/f719b3188b4c1efb386b3b2c3cbb1c730439b55ba26bd582ba3a33f7c4306ffc.js b/vendor/gen/https/jsr.io/f719b3188b4c1efb386b3b2c3cbb1c730439b55ba26bd582ba3a33f7c4306ffc.js new file mode 100644 index 0000000..4a8fd4f --- /dev/null +++ b/vendor/gen/https/jsr.io/f719b3188b4c1efb386b3b2c3cbb1c730439b55ba26bd582ba3a33f7c4306ffc.js @@ -0,0 +1,30 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +/** + * Helpers for working with the filesystem. + * + * ```ts ignore + * import { ensureFile, copy, ensureDir, move } from "@std/fs"; + * + * await ensureFile("example.txt"); + * + * await copy("example.txt", "example_copy.txt"); + * + * await ensureDir("subdir"); + * + * await move("example_copy.txt", "subdir/example_copy.txt"); + * ``` + * + * @module + */ export * from "./empty_dir.ts"; +export * from "./ensure_dir.ts"; +export * from "./ensure_file.ts"; +export * from "./ensure_link.ts"; +export * from "./ensure_symlink.ts"; +export * from "./exists.ts"; +export * from "./expand_glob.ts"; +export * from "./move.ts"; +export * from "./copy.ts"; +export * from "./walk.ts"; +export * from "./eol.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvZnMvMS4wLjE3L21vZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuXG4vKipcbiAqIEhlbHBlcnMgZm9yIHdvcmtpbmcgd2l0aCB0aGUgZmlsZXN5c3RlbS5cbiAqXG4gKiBgYGB0cyBpZ25vcmVcbiAqIGltcG9ydCB7IGVuc3VyZUZpbGUsIGNvcHksIGVuc3VyZURpciwgbW92ZSB9IGZyb20gXCJAc3RkL2ZzXCI7XG4gKlxuICogYXdhaXQgZW5zdXJlRmlsZShcImV4YW1wbGUudHh0XCIpO1xuICpcbiAqIGF3YWl0IGNvcHkoXCJleGFtcGxlLnR4dFwiLCBcImV4YW1wbGVfY29weS50eHRcIik7XG4gKlxuICogYXdhaXQgZW5zdXJlRGlyKFwic3ViZGlyXCIpO1xuICpcbiAqIGF3YWl0IG1vdmUoXCJleGFtcGxlX2NvcHkudHh0XCIsIFwic3ViZGlyL2V4YW1wbGVfY29weS50eHRcIik7XG4gKiBgYGBcbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuZXhwb3J0ICogZnJvbSBcIi4vZW1wdHlfZGlyLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lbnN1cmVfZGlyLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lbnN1cmVfZmlsZS50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZW5zdXJlX2xpbmsudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Vuc3VyZV9zeW1saW5rLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9leGlzdHMudHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2V4cGFuZF9nbG9iLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tb3ZlLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb3B5LnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi93YWxrLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lb2wudHNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFFckQ7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FnQkMsR0FFRCxjQUFjLGlCQUFpQjtBQUMvQixjQUFjLGtCQUFrQjtBQUNoQyxjQUFjLG1CQUFtQjtBQUNqQyxjQUFjLG1CQUFtQjtBQUNqQyxjQUFjLHNCQUFzQjtBQUNwQyxjQUFjLGNBQWM7QUFDNUIsY0FBYyxtQkFBbUI7QUFDakMsY0FBYyxZQUFZO0FBQzFCLGNBQWMsWUFBWTtBQUMxQixjQUFjLFlBQVk7QUFDMUIsY0FBYyxXQUFXIn0= +// denoCacheMetadata=11286893659564779407,15999585513113141101
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/f7d33f42ecc346a9fedce195a6dab77c20d73c0564bf1301e9a9d42b1ba08886.js b/vendor/gen/https/jsr.io/f7d33f42ecc346a9fedce195a6dab77c20d73c0564bf1301e9a9d42b1ba08886.js new file mode 100644 index 0000000..ecb91c2 --- /dev/null +++ b/vendor/gen/https/jsr.io/f7d33f42ecc346a9fedce195a6dab77c20d73c0564bf1301e9a9d42b1ba08886.js @@ -0,0 +1,46 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { CHAR_BACKWARD_SLASH, CHAR_COLON, CHAR_DOT, CHAR_QUESTION_MARK } from "../_common/constants.ts"; +import { isWindowsDeviceRoot } from "./_util.ts"; +import { resolve } from "./resolve.ts"; +/** + * Resolves path to a namespace path + * + * @example Usage + * ```ts + * import { toNamespacedPath } from "@std/path/windows/to-namespaced-path"; + * import { assertEquals } from "@std/assert"; + * + * const namespaced = toNamespacedPath("C:\\foo\\bar"); + * assertEquals(namespaced, "\\\\?\\C:\\foo\\bar"); + * ``` + * + * @param path The path to resolve to namespaced path + * @returns The resolved namespaced path + */ export function toNamespacedPath(path) { + // Note: this will *probably* throw somewhere. + if (typeof path !== "string") return path; + if (path.length === 0) return ""; + const resolvedPath = resolve(path); + if (resolvedPath.length >= 3) { + if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) { + // Possible UNC root + if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) { + const code = resolvedPath.charCodeAt(2); + if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) { + // Matched non-long UNC root, convert the path to a long UNC path + return `\\\\?\\UNC\\${resolvedPath.slice(2)}`; + } + } + } else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0))) { + // Possible device root + if (resolvedPath.charCodeAt(1) === CHAR_COLON && resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH) { + // Matched device root, convert the path to a long UNC path + return `\\\\?\\${resolvedPath}`; + } + } + } + return path; +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS93aW5kb3dzL3RvX25hbWVzcGFjZWRfcGF0aC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAxOC0yMDI1IHRoZSBEZW5vIGF1dGhvcnMuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQge1xuICBDSEFSX0JBQ0tXQVJEX1NMQVNILFxuICBDSEFSX0NPTE9OLFxuICBDSEFSX0RPVCxcbiAgQ0hBUl9RVUVTVElPTl9NQVJLLFxufSBmcm9tIFwiLi4vX2NvbW1vbi9jb25zdGFudHMudHNcIjtcbmltcG9ydCB7IGlzV2luZG93c0RldmljZVJvb3QgfSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gXCIuL3Jlc29sdmUudHNcIjtcblxuLyoqXG4gKiBSZXNvbHZlcyBwYXRoIHRvIGEgbmFtZXNwYWNlIHBhdGhcbiAqXG4gKiBAZXhhbXBsZSBVc2FnZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHRvTmFtZXNwYWNlZFBhdGggfSBmcm9tIFwiQHN0ZC9wYXRoL3dpbmRvd3MvdG8tbmFtZXNwYWNlZC1wYXRoXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBjb25zdCBuYW1lc3BhY2VkID0gdG9OYW1lc3BhY2VkUGF0aChcIkM6XFxcXGZvb1xcXFxiYXJcIik7XG4gKiBhc3NlcnRFcXVhbHMobmFtZXNwYWNlZCwgXCJcXFxcXFxcXD9cXFxcQzpcXFxcZm9vXFxcXGJhclwiKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIHRvIHJlc29sdmUgdG8gbmFtZXNwYWNlZCBwYXRoXG4gKiBAcmV0dXJucyBUaGUgcmVzb2x2ZWQgbmFtZXNwYWNlZCBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b05hbWVzcGFjZWRQYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIE5vdGU6IHRoaXMgd2lsbCAqcHJvYmFibHkqIHRocm93IHNvbWV3aGVyZS5cbiAgaWYgKHR5cGVvZiBwYXRoICE9PSBcInN0cmluZ1wiKSByZXR1cm4gcGF0aDtcbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSByZXR1cm4gXCJcIjtcblxuICBjb25zdCByZXNvbHZlZFBhdGggPSByZXNvbHZlKHBhdGgpO1xuXG4gIGlmIChyZXNvbHZlZFBhdGgubGVuZ3RoID49IDMpIHtcbiAgICBpZiAocmVzb2x2ZWRQYXRoLmNoYXJDb2RlQXQoMCkgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHtcbiAgICAgIC8vIFBvc3NpYmxlIFVOQyByb290XG5cbiAgICAgIGlmIChyZXNvbHZlZFBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkge1xuICAgICAgICBjb25zdCBjb2RlID0gcmVzb2x2ZWRQYXRoLmNoYXJDb2RlQXQoMik7XG4gICAgICAgIGlmIChjb2RlICE9PSBDSEFSX1FVRVNUSU9OX01BUksgJiYgY29kZSAhPT0gQ0hBUl9ET1QpIHtcbiAgICAgICAgICAvLyBNYXRjaGVkIG5vbi1sb25nIFVOQyByb290LCBjb252ZXJ0IHRoZSBwYXRoIHRvIGEgbG9uZyBVTkMgcGF0aFxuICAgICAgICAgIHJldHVybiBgXFxcXFxcXFw/XFxcXFVOQ1xcXFwke3Jlc29sdmVkUGF0aC5zbGljZSgyKX1gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KHJlc29sdmVkUGF0aC5jaGFyQ29kZUF0KDApKSkge1xuICAgICAgLy8gUG9zc2libGUgZGV2aWNlIHJvb3RcblxuICAgICAgaWYgKFxuICAgICAgICByZXNvbHZlZFBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9DT0xPTiAmJlxuICAgICAgICByZXNvbHZlZFBhdGguY2hhckNvZGVBdCgyKSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSFxuICAgICAgKSB7XG4gICAgICAgIC8vIE1hdGNoZWQgZGV2aWNlIHJvb3QsIGNvbnZlcnQgdGhlIHBhdGggdG8gYSBsb25nIFVOQyBwYXRoXG4gICAgICAgIHJldHVybiBgXFxcXFxcXFw/XFxcXCR7cmVzb2x2ZWRQYXRofWA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhdGg7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQyxTQUNFLG1CQUFtQixFQUNuQixVQUFVLEVBQ1YsUUFBUSxFQUNSLGtCQUFrQixRQUNiLDBCQUEwQjtBQUNqQyxTQUFTLG1CQUFtQixRQUFRLGFBQWE7QUFDakQsU0FBUyxPQUFPLFFBQVEsZUFBZTtBQUV2Qzs7Ozs7Ozs7Ozs7Ozs7Q0FjQyxHQUNELE9BQU8sU0FBUyxpQkFBaUIsSUFBWTtFQUMzQyw4Q0FBOEM7RUFDOUMsSUFBSSxPQUFPLFNBQVMsVUFBVSxPQUFPO0VBQ3JDLElBQUksS0FBSyxNQUFNLEtBQUssR0FBRyxPQUFPO0VBRTlCLE1BQU0sZUFBZSxRQUFRO0VBRTdCLElBQUksYUFBYSxNQUFNLElBQUksR0FBRztJQUM1QixJQUFJLGFBQWEsVUFBVSxDQUFDLE9BQU8scUJBQXFCO01BQ3RELG9CQUFvQjtNQUVwQixJQUFJLGFBQWEsVUFBVSxDQUFDLE9BQU8scUJBQXFCO1FBQ3RELE1BQU0sT0FBTyxhQUFhLFVBQVUsQ0FBQztRQUNyQyxJQUFJLFNBQVMsc0JBQXNCLFNBQVMsVUFBVTtVQUNwRCxpRUFBaUU7VUFDakUsT0FBTyxDQUFDLFlBQVksRUFBRSxhQUFhLEtBQUssQ0FBQyxJQUFJO1FBQy9DO01BQ0Y7SUFDRixPQUFPLElBQUksb0JBQW9CLGFBQWEsVUFBVSxDQUFDLEtBQUs7TUFDMUQsdUJBQXVCO01BRXZCLElBQ0UsYUFBYSxVQUFVLENBQUMsT0FBTyxjQUMvQixhQUFhLFVBQVUsQ0FBQyxPQUFPLHFCQUMvQjtRQUNBLDJEQUEyRDtRQUMzRCxPQUFPLENBQUMsT0FBTyxFQUFFLGNBQWM7TUFDakM7SUFDRjtFQUNGO0VBRUEsT0FBTztBQUNUIn0= +// denoCacheMetadata=1197940707593787577,6846599382337885666
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/f83f6f8c3f16e0135da6fe3e3305af6c26c79dd0bca7a6cc79948dbe2763aea0.js b/vendor/gen/https/jsr.io/f83f6f8c3f16e0135da6fe3e3305af6c26c79dd0bca7a6cc79948dbe2763aea0.js new file mode 100644 index 0000000..dc5ac4d --- /dev/null +++ b/vendor/gen/https/jsr.io/f83f6f8c3f16e0135da6fe3e3305af6c26c79dd0bca7a6cc79948dbe2763aea0.js @@ -0,0 +1,20 @@ +// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. +// Copyright the Browserify authors. MIT License. +// Ported from https://github.com/browserify/path-browserify/ +// This module is browser compatible. +export function stripTrailingSeparators(segment, isSep) { + if (segment.length <= 1) { + return segment; + } + let end = segment.length; + for(let i = segment.length - 1; i > 0; i--){ + if (isSep(segment.charCodeAt(i))) { + end = i; + } else { + break; + } + } + return segment.slice(0, end); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOC9fY29tbW9uL3N0cmlwX3RyYWlsaW5nX3NlcGFyYXRvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMTgtMjAyNCB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cbi8vIFBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9icm93c2VyaWZ5L3BhdGgtYnJvd3NlcmlmeS9cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwVHJhaWxpbmdTZXBhcmF0b3JzKFxuICBzZWdtZW50OiBzdHJpbmcsXG4gIGlzU2VwOiAoY2hhcjogbnVtYmVyKSA9PiBib29sZWFuLFxuKTogc3RyaW5nIHtcbiAgaWYgKHNlZ21lbnQubGVuZ3RoIDw9IDEpIHtcbiAgICByZXR1cm4gc2VnbWVudDtcbiAgfVxuXG4gIGxldCBlbmQgPSBzZWdtZW50Lmxlbmd0aDtcblxuICBmb3IgKGxldCBpID0gc2VnbWVudC5sZW5ndGggLSAxOyBpID4gMDsgaS0tKSB7XG4gICAgaWYgKGlzU2VwKHNlZ21lbnQuY2hhckNvZGVBdChpKSkpIHtcbiAgICAgIGVuZCA9IGk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzZWdtZW50LnNsaWNlKDAsIGVuZCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMEVBQTBFO0FBQzFFLGlEQUFpRDtBQUNqRCw2REFBNkQ7QUFDN0QscUNBQXFDO0FBRXJDLE9BQU8sU0FBUyx3QkFDZCxPQUFlLEVBQ2YsS0FBZ0M7RUFFaEMsSUFBSSxRQUFRLE1BQU0sSUFBSSxHQUFHO0lBQ3ZCLE9BQU87RUFDVDtFQUVBLElBQUksTUFBTSxRQUFRLE1BQU07RUFFeEIsSUFBSyxJQUFJLElBQUksUUFBUSxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsSUFBSztJQUMzQyxJQUFJLE1BQU0sUUFBUSxVQUFVLENBQUMsS0FBSztNQUNoQyxNQUFNO0lBQ1IsT0FBTztNQUNMO0lBQ0Y7RUFDRjtFQUVBLE9BQU8sUUFBUSxLQUFLLENBQUMsR0FBRztBQUMxQiJ9 +// denoCacheMetadata=15806268550293638226,7169950271105768740
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/fa4892503785bbda11cc1755619e0e2e9ea16cf5760fc303748ae0e5a902d54c.js b/vendor/gen/https/jsr.io/fa4892503785bbda11cc1755619e0e2e9ea16cf5760fc303748ae0e5a902d54c.js new file mode 100644 index 0000000..4bb2489 --- /dev/null +++ b/vendor/gen/https/jsr.io/fa4892503785bbda11cc1755619e0e2e9ea16cf5760fc303748ae0e5a902d54c.js @@ -0,0 +1,5 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +export { isGlob } from "../is_glob.ts"; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9wb3NpeC9pc19nbG9iLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmV4cG9ydCB7IGlzR2xvYiB9IGZyb20gXCIuLi9pc19nbG9iLnRzXCI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscURBQXFEO0FBQ3JELHFDQUFxQztBQUVyQyxTQUFTLE1BQU0sUUFBUSxnQkFBZ0IifQ== +// denoCacheMetadata=7048746874407330389,1396376006214370866
\ No newline at end of file diff --git a/vendor/gen/https/jsr.io/fa9593097cdd3e75d061bd2ebf9cab31f1dfad09188062a8db1e1f8413a415c4.js b/vendor/gen/https/jsr.io/fa9593097cdd3e75d061bd2ebf9cab31f1dfad09188062a8db1e1f8413a415c4.js new file mode 100644 index 0000000..690eebd --- /dev/null +++ b/vendor/gen/https/jsr.io/fa9593097cdd3e75d061bd2ebf9cab31f1dfad09188062a8db1e1f8413a415c4.js @@ -0,0 +1,30 @@ +// Copyright 2018-2025 the Deno authors. MIT license. +// This module is browser compatible. +import { isWindows } from "./_os.ts"; +import { dirname as posixDirname } from "./posix/dirname.ts"; +import { dirname as windowsDirname } from "./windows/dirname.ts"; +/** + * Return the directory path of a path. + * + * @example Usage + * ```ts + * import { dirname } from "@std/path/dirname"; + * import { assertEquals } from "@std/assert"; + * + * if (Deno.build.os === "windows") { + * assertEquals(dirname("C:\\home\\user\\Documents\\image.png"), "C:\\home\\user\\Documents"); + * } else { + * assertEquals(dirname("/home/user/Documents/image.png"), "/home/user/Documents"); + * } + * ``` + * + * Note: If you are working with file URLs, + * use the new version of `dirname` from `@std/path/unstable-dirname`. + * + * @param path Path to extract the directory from. + * @returns The directory path. + */ export function dirname(path) { + return isWindows ? windowsDirname(path) : posixDirname(path); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vanNyLmlvL0BzdGQvcGF0aC8xLjAuOS9kaXJuYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjUgdGhlIERlbm8gYXV0aG9ycy4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmltcG9ydCB7IGlzV2luZG93cyB9IGZyb20gXCIuL19vcy50c1wiO1xuaW1wb3J0IHsgZGlybmFtZSBhcyBwb3NpeERpcm5hbWUgfSBmcm9tIFwiLi9wb3NpeC9kaXJuYW1lLnRzXCI7XG5pbXBvcnQgeyBkaXJuYW1lIGFzIHdpbmRvd3NEaXJuYW1lIH0gZnJvbSBcIi4vd2luZG93cy9kaXJuYW1lLnRzXCI7XG5cbi8qKlxuICogUmV0dXJuIHRoZSBkaXJlY3RvcnkgcGF0aCBvZiBhIHBhdGguXG4gKlxuICogQGV4YW1wbGUgVXNhZ2VcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSBcIkBzdGQvcGF0aC9kaXJuYW1lXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiQHN0ZC9hc3NlcnRcIjtcbiAqXG4gKiBpZiAoRGVuby5idWlsZC5vcyA9PT0gXCJ3aW5kb3dzXCIpIHtcbiAqICAgYXNzZXJ0RXF1YWxzKGRpcm5hbWUoXCJDOlxcXFxob21lXFxcXHVzZXJcXFxcRG9jdW1lbnRzXFxcXGltYWdlLnBuZ1wiKSwgXCJDOlxcXFxob21lXFxcXHVzZXJcXFxcRG9jdW1lbnRzXCIpO1xuICogfSBlbHNlIHtcbiAqICAgYXNzZXJ0RXF1YWxzKGRpcm5hbWUoXCIvaG9tZS91c2VyL0RvY3VtZW50cy9pbWFnZS5wbmdcIiksIFwiL2hvbWUvdXNlci9Eb2N1bWVudHNcIik7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBOb3RlOiBJZiB5b3UgYXJlIHdvcmtpbmcgd2l0aCBmaWxlIFVSTHMsXG4gKiB1c2UgdGhlIG5ldyB2ZXJzaW9uIG9mIGBkaXJuYW1lYCBmcm9tIGBAc3RkL3BhdGgvdW5zdGFibGUtZGlybmFtZWAuXG4gKlxuICogQHBhcmFtIHBhdGggUGF0aCB0byBleHRyYWN0IHRoZSBkaXJlY3RvcnkgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBkaXJlY3RvcnkgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpcm5hbWUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlzV2luZG93cyA/IHdpbmRvd3NEaXJuYW1lKHBhdGgpIDogcG9zaXhEaXJuYW1lKHBhdGgpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxxQ0FBcUM7QUFFckMsU0FBUyxTQUFTLFFBQVEsV0FBVztBQUNyQyxTQUFTLFdBQVcsWUFBWSxRQUFRLHFCQUFxQjtBQUM3RCxTQUFTLFdBQVcsY0FBYyxRQUFRLHVCQUF1QjtBQUVqRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FvQkMsR0FDRCxPQUFPLFNBQVMsUUFBUSxJQUFZO0VBQ2xDLE9BQU8sWUFBWSxlQUFlLFFBQVEsYUFBYTtBQUN6RCJ9 +// denoCacheMetadata=9547681826702007949,3182393844126318689
\ No newline at end of file |
