From 47952bf4c2afae8f5ee818a4618ac9eb48b54cc0 Mon Sep 17 00:00:00 2001 From: Henry Mercer Date: Fri, 21 Jul 2023 15:29:04 +0100 Subject: [PATCH] Remove generated files associated with deleted code --- lib/error-matcher.js | 13 -- lib/error-matcher.js.map | 1 - lib/error-matcher.test.js | 24 ---- lib/error-matcher.test.js.map | 1 - lib/toolrunner-error-catcher.js | 91 ------------- lib/toolrunner-error-catcher.js.map | 1 - lib/toolrunner-error-catcher.test.js | 164 ----------------------- lib/toolrunner-error-catcher.test.js.map | 1 - 8 files changed, 296 deletions(-) delete mode 100644 lib/error-matcher.js delete mode 100644 lib/error-matcher.js.map delete mode 100644 lib/error-matcher.test.js delete mode 100644 lib/error-matcher.test.js.map delete mode 100644 lib/toolrunner-error-catcher.js delete mode 100644 lib/toolrunner-error-catcher.js.map delete mode 100644 lib/toolrunner-error-catcher.test.js delete mode 100644 lib/toolrunner-error-catcher.test.js.map diff --git a/lib/error-matcher.js b/lib/error-matcher.js deleted file mode 100644 index 329a42af0..000000000 --- a/lib/error-matcher.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.errorMatchers = exports.namedMatchersForTesting = void 0; -// exported only for testing purposes -exports.namedMatchersForTesting = { - fatalError: { - outputRegex: new RegExp("A fatal error occurred"), - message: "A fatal error occurred.", - }, -}; -// we collapse the matches into an array for use in execErrorCatcher -exports.errorMatchers = Object.values(exports.namedMatchersForTesting); -//# sourceMappingURL=error-matcher.js.map \ No newline at end of file diff --git a/lib/error-matcher.js.map b/lib/error-matcher.js.map deleted file mode 100644 index 80984dfa1..000000000 --- a/lib/error-matcher.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"error-matcher.js","sourceRoot":"","sources":["../src/error-matcher.ts"],"names":[],"mappings":";;;AAQA,qCAAqC;AACxB,QAAA,uBAAuB,GAAoC;IACtE,UAAU,EAAE;QACV,WAAW,EAAE,IAAI,MAAM,CAAC,wBAAwB,CAAC;QACjD,OAAO,EAAE,yBAAyB;KACnC;CACF,CAAC;AAEF,oEAAoE;AACvD,QAAA,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,+BAAuB,CAAC,CAAC"} \ No newline at end of file diff --git a/lib/error-matcher.test.js b/lib/error-matcher.test.js deleted file mode 100644 index 8903f175e..000000000 --- a/lib/error-matcher.test.js +++ /dev/null @@ -1,24 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const ava_1 = __importDefault(require("ava")); -const error_matcher_1 = require("./error-matcher"); -/* -NB We test the regexes for all the matchers against example log output snippets. -*/ -(0, ava_1.default)("fatalError matches against example log output", async (t) => { - t.assert(testErrorMatcher("fatalError", "A fatal error occurred: Could not process query metadata for test-query.ql")); -}); -function testErrorMatcher(matcherName, logSample) { - if (!(matcherName in error_matcher_1.namedMatchersForTesting)) { - throw new Error(`Unknown matcher ${matcherName}`); - } - const regex = error_matcher_1.namedMatchersForTesting[matcherName].outputRegex; - if (regex === undefined) { - throw new Error(`Cannot test matcher ${matcherName} with null regex`); - } - return regex.test(logSample); -} -//# sourceMappingURL=error-matcher.test.js.map \ No newline at end of file diff --git a/lib/error-matcher.test.js.map b/lib/error-matcher.test.js.map deleted file mode 100644 index 6086e3ccf..000000000 --- a/lib/error-matcher.test.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"error-matcher.test.js","sourceRoot":"","sources":["../src/error-matcher.test.ts"],"names":[],"mappings":";;;;;AAAA,8CAAuB;AAEvB,mDAA0D;AAE1D;;EAEE;AAEF,IAAA,aAAI,EAAC,+CAA+C,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAChE,CAAC,CAAC,MAAM,CACN,gBAAgB,CACd,YAAY,EACZ,4EAA4E,CAC7E,CACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,SAAS,gBAAgB,CAAC,WAAmB,EAAE,SAAiB;IAC9D,IAAI,CAAC,CAAC,WAAW,IAAI,uCAAuB,CAAC,EAAE;QAC7C,MAAM,IAAI,KAAK,CAAC,mBAAmB,WAAW,EAAE,CAAC,CAAC;KACnD;IACD,MAAM,KAAK,GAAG,uCAAuB,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC;IAC/D,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,uBAAuB,WAAW,kBAAkB,CAAC,CAAC;KACvE;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/B,CAAC"} \ No newline at end of file diff --git a/lib/toolrunner-error-catcher.js b/lib/toolrunner-error-catcher.js deleted file mode 100644 index 543c8b08c..000000000 --- a/lib/toolrunner-error-catcher.js +++ /dev/null @@ -1,91 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.toolrunnerErrorCatcher = void 0; -const toolrunner = __importStar(require("@actions/exec/lib/toolrunner")); -const safeWhich = __importStar(require("@chrisgavin/safe-which")); -const util_1 = require("./util"); -/** - * Wrapper for toolrunner.Toolrunner which checks for specific return code and/or regex matches in console output. - * Output will be streamed to the live console as well as captured for subsequent processing. - * Returns promise with return code - * - * @param commandLine command to execute - * @param args optional arguments for tool. Escaping is handled by the lib. - * @param matchers defines specific codes and/or regexes that should lead to return of a custom error - * @param options optional exec options. See ExecOptions - * @returns ReturnState exit code and stdout output, if applicable - */ -async function toolrunnerErrorCatcher(commandLine, args, matchers, options) { - let stdout = ""; - let stderr = ""; - const listeners = { - stdout: (data) => { - stdout += data.toString(); - if (options?.listeners?.stdout !== undefined) { - options.listeners.stdout(data); - } - }, - stderr: (data) => { - stderr += data.toString(); - if (options?.listeners?.stderr !== undefined) { - options.listeners.stderr(data); - } - }, - }; - // we capture the original return code or error so that if no match is found we can duplicate the behavior - let exitCode; - try { - exitCode = await new toolrunner.ToolRunner(await safeWhich.safeWhich(commandLine), args, { - ...options, - listeners, - ignoreReturnCode: true, // so we can check for specific codes using the matchers - }).exec(); - // if there is a zero return code then we do not apply the matchers - if (exitCode === 0) - return { exitCode, stdout }; - if (matchers) { - for (const matcher of matchers) { - if (matcher.exitCode === exitCode || - matcher.outputRegex?.test(stderr) || - matcher.outputRegex?.test(stdout)) { - throw new Error(matcher.message); - } - } - } - // only if we were instructed to ignore the return code do we ever return it non-zero - if (options?.ignoreReturnCode) { - return { exitCode, stdout }; - } - else { - throw new Error(`The process '${commandLine}' failed with exit code ${exitCode}`); - } - } - catch (e) { - throw (0, util_1.wrapError)(e); - } -} -exports.toolrunnerErrorCatcher = toolrunnerErrorCatcher; -//# sourceMappingURL=toolrunner-error-catcher.js.map \ No newline at end of file diff --git a/lib/toolrunner-error-catcher.js.map b/lib/toolrunner-error-catcher.js.map deleted file mode 100644 index 123ffea1a..000000000 --- a/lib/toolrunner-error-catcher.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"toolrunner-error-catcher.js","sourceRoot":"","sources":["../src/toolrunner-error-catcher.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yEAA2D;AAC3D,kEAAoD;AAGpD,iCAAmC;AAOnC;;;;;;;;;;GAUG;AACI,KAAK,UAAU,sBAAsB,CAC1C,WAAmB,EACnB,IAAe,EACf,QAAyB,EACzB,OAAwB;IAExB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,MAAM,SAAS,GAAG;QAChB,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACvB,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1B,IAAI,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,SAAS,EAAE;gBAC5C,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aAChC;QACH,CAAC;QACD,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACvB,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1B,IAAI,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,SAAS,EAAE;gBAC5C,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aAChC;QACH,CAAC;KACF,CAAC;IAEF,0GAA0G;IAC1G,IAAI,QAAgB,CAAC;IACrB,IAAI;QACF,QAAQ,GAAG,MAAM,IAAI,UAAU,CAAC,UAAU,CACxC,MAAM,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,EACtC,IAAI,EACJ;YACE,GAAG,OAAO;YACV,SAAS;YACT,gBAAgB,EAAE,IAAI,EAAE,wDAAwD;SACjF,CACF,CAAC,IAAI,EAAE,CAAC;QAET,mEAAmE;QACnE,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAEhD,IAAI,QAAQ,EAAE;YACZ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;gBAC9B,IACE,OAAO,CAAC,QAAQ,KAAK,QAAQ;oBAC7B,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC;oBACjC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,EACjC;oBACA,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;iBAClC;aACF;SACF;QAED,qFAAqF;QACrF,IAAI,OAAO,EAAE,gBAAgB,EAAE;YAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;SAC7B;aAAM;YACL,MAAM,IAAI,KAAK,CACb,gBAAgB,WAAW,2BAA2B,QAAQ,EAAE,CACjE,CAAC;SACH;KACF;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,IAAA,gBAAS,EAAC,CAAC,CAAC,CAAC;KACpB;AACH,CAAC;AA/DD,wDA+DC"} \ No newline at end of file diff --git a/lib/toolrunner-error-catcher.test.js b/lib/toolrunner-error-catcher.test.js deleted file mode 100644 index b298137bd..000000000 --- a/lib/toolrunner-error-catcher.test.js +++ /dev/null @@ -1,164 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const exec = __importStar(require("@actions/exec")); -const ava_1 = __importDefault(require("ava")); -const testing_utils_1 = require("./testing-utils"); -const toolrunner_error_catcher_1 = require("./toolrunner-error-catcher"); -(0, testing_utils_1.setupTests)(ava_1.default); -(0, ava_1.default)("matchers are never applied if non-error exit", async (t) => { - const testArgs = buildDummyArgs("foo bar\\nblort qux", "foo bar\\nblort qux", "", 0); - const matchers = [ - { exitCode: 123, outputRegex: new RegExp("foo bar"), message: "error!!!" }, - ]; - t.deepEqual(await exec.exec("node", testArgs), 0); - const returnState = await (0, toolrunner_error_catcher_1.toolrunnerErrorCatcher)("node", testArgs, matchers); - t.deepEqual(returnState.exitCode, 0); -}); -(0, ava_1.default)("regex matchers are applied to stdout for non-zero exit code", async (t) => { - const testArgs = buildDummyArgs("foo bar\\nblort qux", "", "", 1); - const matchers = [ - { exitCode: 123, outputRegex: new RegExp("foo bar"), message: "🦄" }, - ]; - await t.throwsAsync(exec.exec("node", testArgs), { - instanceOf: Error, - message: /failed with exit code 1/, - }); - await t.throwsAsync((0, toolrunner_error_catcher_1.toolrunnerErrorCatcher)("node", testArgs, matchers), { - instanceOf: Error, - message: "🦄", - }); -}); -(0, ava_1.default)("regex matchers are applied to stderr for non-zero exit code", async (t) => { - const testArgs = buildDummyArgs("non matching string", "foo bar\\nblort qux", "", 1); - const matchers = [ - { exitCode: 123, outputRegex: new RegExp("foo bar"), message: "🦄" }, - ]; - await t.throwsAsync(exec.exec("node", testArgs), { - instanceOf: Error, - message: /failed with exit code 1/, - }); - await t.throwsAsync((0, toolrunner_error_catcher_1.toolrunnerErrorCatcher)("node", testArgs, matchers), { - instanceOf: Error, - message: "🦄", - }); -}); -(0, ava_1.default)("matcher returns correct error message when multiple matchers defined", async (t) => { - const testArgs = buildDummyArgs("non matching string", "foo bar\\nblort qux", "", 1); - const matchers = [ - { exitCode: 456, outputRegex: new RegExp("lorem ipsum"), message: "😩" }, - { exitCode: 123, outputRegex: new RegExp("foo bar"), message: "🦄" }, - { exitCode: 789, outputRegex: new RegExp("blah blah"), message: "🤦‍♂️" }, - ]; - await t.throwsAsync(exec.exec("node", testArgs), { - instanceOf: Error, - message: /failed with exit code 1/, - }); - await t.throwsAsync((0, toolrunner_error_catcher_1.toolrunnerErrorCatcher)("node", testArgs, matchers), { - instanceOf: Error, - message: "🦄", - }); -}); -(0, ava_1.default)("matcher returns first match to regex when multiple matches", async (t) => { - const testArgs = buildDummyArgs("non matching string", "foo bar\\nblort qux", "", 1); - const matchers = [ - { exitCode: 123, outputRegex: new RegExp("foo bar"), message: "🦄" }, - { exitCode: 789, outputRegex: new RegExp("blah blah"), message: "🤦‍♂️" }, - { exitCode: 987, outputRegex: new RegExp("foo bar"), message: "🚫" }, - ]; - await t.throwsAsync(exec.exec("node", testArgs), { - instanceOf: Error, - message: /failed with exit code 1/, - }); - await t.throwsAsync((0, toolrunner_error_catcher_1.toolrunnerErrorCatcher)("node", testArgs, matchers), { - instanceOf: Error, - message: "🦄", - }); -}); -(0, ava_1.default)("exit code matchers are applied", async (t) => { - const testArgs = buildDummyArgs("non matching string", "foo bar\\nblort qux", "", 123); - const matchers = [ - { - exitCode: 123, - outputRegex: new RegExp("this will not match"), - message: "🦄", - }, - ]; - await t.throwsAsync(exec.exec("node", testArgs), { - instanceOf: Error, - message: /failed with exit code 123/, - }); - await t.throwsAsync((0, toolrunner_error_catcher_1.toolrunnerErrorCatcher)("node", testArgs, matchers), { - instanceOf: Error, - message: "🦄", - }); -}); -(0, ava_1.default)("execErrorCatcher respects the ignoreReturnValue option", async (t) => { - const testArgs = buildDummyArgs("standard output", "error output", "", 199); - await t.throwsAsync((0, toolrunner_error_catcher_1.toolrunnerErrorCatcher)("node", testArgs, [], { ignoreReturnCode: false }), { instanceOf: Error }); - const returnState = await (0, toolrunner_error_catcher_1.toolrunnerErrorCatcher)("node", testArgs, [], { - ignoreReturnCode: true, - }); - t.deepEqual(returnState.exitCode, 199); -}); -(0, ava_1.default)("execErrorCatcher preserves behavior of provided listeners", async (t) => { - const stdoutExpected = "standard output"; - const stderrExpected = "error output"; - let stdoutActual = ""; - let stderrActual = ""; - const listeners = { - stdout: (data) => { - stdoutActual += data.toString(); - }, - stderr: (data) => { - stderrActual += data.toString(); - }, - }; - const testArgs = buildDummyArgs(stdoutExpected, stderrExpected, "", 0); - const returnState = await (0, toolrunner_error_catcher_1.toolrunnerErrorCatcher)("node", testArgs, [], { - listeners, - }); - t.deepEqual(returnState.exitCode, 0); - t.deepEqual(stdoutActual, `${stdoutExpected}\n`); - t.deepEqual(stderrActual, `${stderrExpected}\n`); -}); -function buildDummyArgs(stdoutContents, stderrContents, desiredErrorMessage, desiredExitCode) { - let command = ""; - if (stdoutContents) - command += `console.log("${stdoutContents}");`; - if (stderrContents) - command += `console.error("${stderrContents}");`; - if (command.length === 0) - throw new Error("Must provide contents for either stdout or stderr"); - if (desiredErrorMessage) - command += `throw new Error("${desiredErrorMessage}");`; - if (desiredExitCode) - command += `process.exitCode = ${desiredExitCode};`; - return ["-e", command]; -} -//# sourceMappingURL=toolrunner-error-catcher.test.js.map \ No newline at end of file diff --git a/lib/toolrunner-error-catcher.test.js.map b/lib/toolrunner-error-catcher.test.js.map deleted file mode 100644 index 45b9cfae1..000000000 --- a/lib/toolrunner-error-catcher.test.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"toolrunner-error-catcher.test.js","sourceRoot":"","sources":["../src/toolrunner-error-catcher.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAsC;AACtC,8CAAuB;AAGvB,mDAA6C;AAC7C,yEAAoE;AAEpE,IAAA,0BAAU,EAAC,aAAI,CAAC,CAAC;AAEjB,IAAA,aAAI,EAAC,8CAA8C,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAC/D,MAAM,QAAQ,GAAG,cAAc,CAC7B,qBAAqB,EACrB,qBAAqB,EACrB,EAAE,EACF,CAAC,CACF,CAAC;IAEF,MAAM,QAAQ,GAAmB;QAC/B,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE;KAC3E,CAAC;IAEF,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAElD,MAAM,WAAW,GAAG,MAAM,IAAA,iDAAsB,EAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7E,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,6DAA6D,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAC9E,MAAM,QAAQ,GAAG,cAAc,CAAC,qBAAqB,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAElE,MAAM,QAAQ,GAAmB;QAC/B,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;KACrE,CAAC;IAEF,MAAM,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;QAC/C,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,yBAAyB;KACnC,CAAC,CAAC;IAEH,MAAM,CAAC,CAAC,WAAW,CAAC,IAAA,iDAAsB,EAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACtE,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,6DAA6D,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAC9E,MAAM,QAAQ,GAAG,cAAc,CAC7B,qBAAqB,EACrB,qBAAqB,EACrB,EAAE,EACF,CAAC,CACF,CAAC;IAEF,MAAM,QAAQ,GAAmB;QAC/B,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;KACrE,CAAC;IAEF,MAAM,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;QAC/C,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,yBAAyB;KACnC,CAAC,CAAC;IAEH,MAAM,CAAC,CAAC,WAAW,CAAC,IAAA,iDAAsB,EAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACtE,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,sEAAsE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACvF,MAAM,QAAQ,GAAG,cAAc,CAC7B,qBAAqB,EACrB,qBAAqB,EACrB,EAAE,EACF,CAAC,CACF,CAAC;IAEF,MAAM,QAAQ,GAAmB;QAC/B,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;QACxE,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;QACpE,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE;KAC1E,CAAC;IAEF,MAAM,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;QAC/C,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,yBAAyB;KACnC,CAAC,CAAC;IAEH,MAAM,CAAC,CAAC,WAAW,CAAC,IAAA,iDAAsB,EAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACtE,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,4DAA4D,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAC7E,MAAM,QAAQ,GAAG,cAAc,CAC7B,qBAAqB,EACrB,qBAAqB,EACrB,EAAE,EACF,CAAC,CACF,CAAC;IAEF,MAAM,QAAQ,GAAmB;QAC/B,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;QACpE,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE;QACzE,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;KACrE,CAAC;IAEF,MAAM,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;QAC/C,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,yBAAyB;KACnC,CAAC,CAAC;IAEH,MAAM,CAAC,CAAC,WAAW,CAAC,IAAA,iDAAsB,EAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACtE,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,gCAAgC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACjD,MAAM,QAAQ,GAAG,cAAc,CAC7B,qBAAqB,EACrB,qBAAqB,EACrB,EAAE,EACF,GAAG,CACJ,CAAC;IAEF,MAAM,QAAQ,GAAmB;QAC/B;YACE,QAAQ,EAAE,GAAG;YACb,WAAW,EAAE,IAAI,MAAM,CAAC,qBAAqB,CAAC;YAC9C,OAAO,EAAE,IAAI;SACd;KACF,CAAC;IAEF,MAAM,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;QAC/C,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,2BAA2B;KACrC,CAAC,CAAC;IAEH,MAAM,CAAC,CAAC,WAAW,CAAC,IAAA,iDAAsB,EAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE;QACtE,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,wDAAwD,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACzE,MAAM,QAAQ,GAAG,cAAc,CAAC,iBAAiB,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IAE5E,MAAM,CAAC,CAAC,WAAW,CACjB,IAAA,iDAAsB,EAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,EACzE,EAAE,UAAU,EAAE,KAAK,EAAE,CACtB,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,IAAA,iDAAsB,EAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrE,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IAEH,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,2DAA2D,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAC5E,MAAM,cAAc,GAAG,iBAAiB,CAAC;IACzC,MAAM,cAAc,GAAG,cAAc,CAAC;IAEtC,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,YAAY,GAAG,EAAE,CAAC;IAEtB,MAAM,SAAS,GAAG;QAChB,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACvB,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,CAAC;QACD,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACvB,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,CAAC;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG,cAAc,CAAC,cAAc,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAEvE,MAAM,WAAW,GAAG,MAAM,IAAA,iDAAsB,EAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrE,SAAS;KACV,CAAC,CAAC;IACH,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAErC,CAAC,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,cAAc,IAAI,CAAC,CAAC;IACjD,CAAC,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,cAAc,IAAI,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,SAAS,cAAc,CACrB,cAAsB,EACtB,cAAsB,EACtB,mBAA4B,EAC5B,eAAwB;IAExB,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,IAAI,cAAc;QAAE,OAAO,IAAI,gBAAgB,cAAc,KAAK,CAAC;IACnE,IAAI,cAAc;QAAE,OAAO,IAAI,kBAAkB,cAAc,KAAK,CAAC;IAErE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAEvE,IAAI,mBAAmB;QACrB,OAAO,IAAI,oBAAoB,mBAAmB,KAAK,CAAC;IAC1D,IAAI,eAAe;QAAE,OAAO,IAAI,sBAAsB,eAAe,GAAG,CAAC;IAEzE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACzB,CAAC"} \ No newline at end of file