UNPKG

find-node-modules

Version:

Return an array of all parent node_modules directories

1,086 lines (1,051 loc) 33 kB
"use strict"; var cov_1z1of6sg0o = function () { var path = "/Users/callumacrae/Sites/find-node-modules/cz-cli/src/commitizen/init.js"; var hash = "ee5c8a45745c58e46ccc6a00f57188209e2d638a"; var global = new Function("return this")(); var gcv = "__coverage__"; var coverageData = { path: "/Users/callumacrae/Sites/find-node-modules/cz-cli/src/commitizen/init.js", statementMap: { "0": { start: { line: 12, column: 4 }, end: { line: 12, column: 11 } }, "1": { start: { line: 16, column: 17 }, end: { line: 16, column: 63 } }, "2": { start: { line: 35, column: 27 }, end: { line: 46, column: 1 } }, "3": { start: { line: 63, column: 2 }, end: { line: 63, column: 51 } }, "4": { start: { line: 66, column: 22 }, end: { line: 66, column: 49 } }, "5": { start: { line: 69, column: 23 }, end: { line: 69, column: 136 } }, "6": { start: { line: 72, column: 30 }, end: { line: 72, column: 165 } }, "7": { start: { line: 74, column: 33 }, end: { line: 74, column: 164 } }, "8": { start: { line: 77, column: 2 }, end: { line: 85, column: 3 } }, "9": { start: { line: 78, column: 4 }, end: { line: 84, column: 7 } }, "10": { start: { line: 87, column: 2 }, end: { line: 95, column: 3 } }, "11": { start: { line: 88, column: 4 }, end: { line: 88, column: 68 } }, "12": { start: { line: 89, column: 4 }, end: { line: 91, column: 5 } }, "13": { start: { line: 90, column: 6 }, end: { line: 90, column: 73 } }, "14": { start: { line: 92, column: 4 }, end: { line: 92, column: 63 } }, "15": { start: { line: 94, column: 4 }, end: { line: 94, column: 21 } }, "16": { start: { line: 103, column: 2 }, end: { line: 105, column: 3 } }, "17": { start: { line: 104, column: 4 }, end: { line: 104, column: 59 } }, "18": { start: { line: 106, column: 2 }, end: { line: 108, column: 3 } }, "19": { start: { line: 107, column: 4 }, end: { line: 107, column: 77 } }, "20": { start: { line: 116, column: 15 }, end: { line: 116, column: 43 } }, "21": { start: { line: 117, column: 2 }, end: { line: 121, column: 3 } }, "22": { start: { line: 118, column: 4 }, end: { line: 118, column: 18 } } }, fnMap: { "0": { name: "init", decl: { start: { line: 51, column: 9 }, end: { line: 51, column: 13 } }, loc: { start: { line: 60, column: 24 }, end: { line: 96, column: 1 } }, line: 60 }, "1": { name: "checkRequiredArguments", decl: { start: { line: 102, column: 9 }, end: { line: 102, column: 31 } }, loc: { start: { line: 102, column: 55 }, end: { line: 109, column: 1 } }, line: 102 }, "2": { name: "loadAdapterConfig", decl: { start: { line: 115, column: 9 }, end: { line: 115, column: 26 } }, loc: { start: { line: 115, column: 33 }, end: { line: 122, column: 1 } }, line: 115 } }, branchMap: { "0": { loc: { start: { line: 51, column: 41 }, end: { line: 60, column: 22 } }, type: "default-arg", locations: [{ start: { line: 60, column: 4 }, end: { line: 60, column: 22 } }], line: 51 }, "1": { loc: { start: { line: 52, column: 2 }, end: { line: 52, column: 14 } }, type: "default-arg", locations: [{ start: { line: 52, column: 9 }, end: { line: 52, column: 14 } }], line: 52 }, "2": { loc: { start: { line: 53, column: 2 }, end: { line: 53, column: 16 } }, type: "default-arg", locations: [{ start: { line: 53, column: 12 }, end: { line: 53, column: 16 } }], line: 53 }, "3": { loc: { start: { line: 54, column: 2 }, end: { line: 54, column: 19 } }, type: "default-arg", locations: [{ start: { line: 54, column: 14 }, end: { line: 54, column: 19 } }], line: 54 }, "4": { loc: { start: { line: 55, column: 2 }, end: { line: 55, column: 15 } }, type: "default-arg", locations: [{ start: { line: 55, column: 10 }, end: { line: 55, column: 15 } }], line: 55 }, "5": { loc: { start: { line: 56, column: 2 }, end: { line: 56, column: 14 } }, type: "default-arg", locations: [{ start: { line: 56, column: 9 }, end: { line: 56, column: 14 } }], line: 56 }, "6": { loc: { start: { line: 57, column: 2 }, end: { line: 57, column: 13 } }, type: "default-arg", locations: [{ start: { line: 57, column: 8 }, end: { line: 57, column: 13 } }], line: 57 }, "7": { loc: { start: { line: 58, column: 2 }, end: { line: 58, column: 15 } }, type: "default-arg", locations: [{ start: { line: 58, column: 10 }, end: { line: 58, column: 15 } }], line: 58 }, "8": { loc: { start: { line: 59, column: 2 }, end: { line: 59, column: 27 } }, type: "default-arg", locations: [{ start: { line: 59, column: 22 }, end: { line: 59, column: 27 } }], line: 59 }, "9": { loc: { start: { line: 69, column: 23 }, end: { line: 69, column: 136 } }, type: "cond-expr", locations: [{ start: { line: 69, column: 30 }, end: { line: 69, column: 73 } }, { start: { line: 69, column: 76 }, end: { line: 69, column: 136 } }], line: 69 }, "10": { loc: { start: { line: 72, column: 30 }, end: { line: 72, column: 165 } }, type: "cond-expr", locations: [{ start: { line: 72, column: 37 }, end: { line: 72, column: 98 } }, { start: { line: 72, column: 101 }, end: { line: 72, column: 165 } }], line: 72 }, "11": { loc: { start: { line: 74, column: 33 }, end: { line: 74, column: 164 } }, type: "cond-expr", locations: [{ start: { line: 74, column: 40 }, end: { line: 74, column: 99 } }, { start: { line: 74, column: 102 }, end: { line: 74, column: 164 } }], line: 74 }, "12": { loc: { start: { line: 77, column: 2 }, end: { line: 85, column: 3 } }, type: "if", locations: [{ start: { line: 77, column: 2 }, end: { line: 85, column: 3 } }, { start: { line: 77, column: 2 }, end: { line: 85, column: 3 } }], line: 77 }, "13": { loc: { start: { line: 77, column: 6 }, end: { line: 77, column: 84 } }, type: "binary-expr", locations: [{ start: { line: 77, column: 6 }, end: { line: 77, column: 19 } }, { start: { line: 77, column: 23 }, end: { line: 77, column: 41 } }, { start: { line: 77, column: 45 }, end: { line: 77, column: 74 } }, { start: { line: 77, column: 78 }, end: { line: 77, column: 84 } }], line: 77 }, "14": { loc: { start: { line: 89, column: 4 }, end: { line: 91, column: 5 } }, type: "if", locations: [{ start: { line: 89, column: 4 }, end: { line: 91, column: 5 } }, { start: { line: 89, column: 4 }, end: { line: 91, column: 5 } }], line: 89 }, "15": { loc: { start: { line: 103, column: 2 }, end: { line: 105, column: 3 } }, type: "if", locations: [{ start: { line: 103, column: 2 }, end: { line: 105, column: 3 } }, { start: { line: 103, column: 2 }, end: { line: 105, column: 3 } }], line: 103 }, "16": { loc: { start: { line: 106, column: 2 }, end: { line: 108, column: 3 } }, type: "if", locations: [{ start: { line: 106, column: 2 }, end: { line: 108, column: 3 } }, { start: { line: 106, column: 2 }, end: { line: 108, column: 3 } }], line: 106 }, "17": { loc: { start: { line: 117, column: 2 }, end: { line: 121, column: 3 } }, type: "if", locations: [{ start: { line: 117, column: 2 }, end: { line: 121, column: 3 } }, { start: { line: 117, column: 2 }, end: { line: 121, column: 3 } }], line: 117 } }, s: { "0": 0, "1": 0, "2": 0, "3": 0, "4": 0, "5": 0, "6": 0, "7": 0, "8": 0, "9": 0, "10": 0, "11": 0, "12": 0, "13": 0, "14": 0, "15": 0, "16": 0, "17": 0, "18": 0, "19": 0, "20": 0, "21": 0, "22": 0 }, f: { "0": 0, "1": 0, "2": 0 }, b: { "0": [0], "1": [0], "2": [0], "3": [0], "4": [0], "5": [0], "6": [0], "7": [0], "8": [0], "9": [0, 0], "10": [0, 0], "11": [0, 0], "12": [0, 0], "13": [0, 0, 0, 0], "14": [0, 0], "15": [0, 0], "16": [0, 0], "17": [0, 0] }, _coverageSchema: "43e27e138ebf9cfc5966b082cf9a028302ed4184", hash: "ee5c8a45745c58e46ccc6a00f57188209e2d638a" }; var coverage = global[gcv] || (global[gcv] = {}); if (coverage[path] && coverage[path].hash === hash) { return coverage[path]; } return coverage[path] = coverageData; }(); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _child_process = _interopRequireDefault(require("child_process")); var _path = _interopRequireDefault(require("path")); var configLoader = _interopRequireWildcard(require("./configLoader")); var adapter = _interopRequireWildcard(require("./adapter")); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } let { addPathToAdapterConfig, generateNpmInstallAdapterCommand, getNpmInstallStringMappings, generateYarnAddAdapterCommand, getYarnAddStringMappings } = (cov_1z1of6sg0o.s[0]++, adapter); var _default = init; exports.default = _default; const CLI_PATH = (cov_1z1of6sg0o.s[1]++, _path.default.normalize(_path.default.join(__dirname, '../../'))); /** * CZ INIT * * Init is generally responsible for initializing an adapter in * a user's project. The goal is to be able to run * `commitizen init` and be prompted for certain fields which * will help you install the proper adapter for your project. * * Init does not actually create the adapter (it defers to adapter * for this). Instead, it is specifically designed to help gather * and validate the information needed to install the adapter * properly without interfering with a previous adapter config. */ /** * The defaults for init */ const defaultInitOptions = (cov_1z1of6sg0o.s[2]++, { save: false, saveDev: true, saveExact: false, force: false, // for --yarn use // @see https://github.com/commitizen/cz-cli/issues/527#issuecomment-392653897 yarn: false, dev: true, exact: false // should add trailing comma, thus next developer doesn't got blamed for this line }); /** * Runs npm install for the adapter then modifies the config.commitizen as needed */ function init(repoPath, adapterNpmName, { save = (cov_1z1of6sg0o.b[1][0]++, false), saveDev = (cov_1z1of6sg0o.b[2][0]++, true), saveExact = (cov_1z1of6sg0o.b[3][0]++, false), force = (cov_1z1of6sg0o.b[4][0]++, false), yarn = (cov_1z1of6sg0o.b[5][0]++, false), dev = (cov_1z1of6sg0o.b[6][0]++, false), exact = (cov_1z1of6sg0o.b[7][0]++, false), includeCommitizen = (cov_1z1of6sg0o.b[8][0]++, false) } = (cov_1z1of6sg0o.b[0][0]++, defaultInitOptions)) { cov_1z1of6sg0o.f[0]++; cov_1z1of6sg0o.s[3]++; // Don't let things move forward if required args are missing checkRequiredArguments(repoPath, adapterNpmName); // Load the current adapter config let adapterConfig = (cov_1z1of6sg0o.s[4]++, loadAdapterConfig(repoPath)); // Get the npm string mappings based on the arguments provided let stringMappings = (cov_1z1of6sg0o.s[5]++, yarn ? (cov_1z1of6sg0o.b[9][0]++, getYarnAddStringMappings(dev, exact, force)) : (cov_1z1of6sg0o.b[9][1]++, getNpmInstallStringMappings(save, saveDev, saveExact, force))); // Generate a string that represents the npm install command let installAdapterCommand = (cov_1z1of6sg0o.s[6]++, yarn ? (cov_1z1of6sg0o.b[10][0]++, generateYarnAddAdapterCommand(stringMappings, adapterNpmName)) : (cov_1z1of6sg0o.b[10][1]++, generateNpmInstallAdapterCommand(stringMappings, adapterNpmName))); let installCommitizenCommand = (cov_1z1of6sg0o.s[7]++, yarn ? (cov_1z1of6sg0o.b[11][0]++, generateYarnAddAdapterCommand(stringMappings, "commitizen")) : (cov_1z1of6sg0o.b[11][1]++, generateNpmInstallAdapterCommand(stringMappings, "commitizen"))); // Check for previously installed adapters cov_1z1of6sg0o.s[8]++; if ((cov_1z1of6sg0o.b[13][0]++, adapterConfig) && (cov_1z1of6sg0o.b[13][1]++, adapterConfig.path) && (cov_1z1of6sg0o.b[13][2]++, adapterConfig.path.length > 0) && (cov_1z1of6sg0o.b[13][3]++, !force)) { cov_1z1of6sg0o.b[12][0]++; cov_1z1of6sg0o.s[9]++; throw new Error(`A previous adapter is already configured. Use --force to override adapterConfig.path: ${adapterConfig.path} repoPath: ${repoPath} CLI_PATH: ${CLI_PATH} installAdapterCommand: ${installAdapterCommand} adapterNpmName: ${adapterNpmName} `); } else { cov_1z1of6sg0o.b[12][1]++; } cov_1z1of6sg0o.s[10]++; try { cov_1z1of6sg0o.s[11]++; _child_process.default.execSync(installAdapterCommand, { cwd: repoPath }); cov_1z1of6sg0o.s[12]++; if (includeCommitizen) { cov_1z1of6sg0o.b[14][0]++; cov_1z1of6sg0o.s[13]++; _child_process.default.execSync(installCommitizenCommand, { cwd: repoPath }); } else { cov_1z1of6sg0o.b[14][1]++; } cov_1z1of6sg0o.s[14]++; addPathToAdapterConfig(CLI_PATH, repoPath, adapterNpmName); } catch (e) { cov_1z1of6sg0o.s[15]++; console.error(e); } } /** * Checks to make sure that the required arguments are passed * Throws an exception if any are not. */ function checkRequiredArguments(path, adapterNpmName) { cov_1z1of6sg0o.f[1]++; cov_1z1of6sg0o.s[16]++; if (!path) { cov_1z1of6sg0o.b[15][0]++; cov_1z1of6sg0o.s[17]++; throw new Error("Path is required when running init."); } else { cov_1z1of6sg0o.b[15][1]++; } cov_1z1of6sg0o.s[18]++; if (!adapterNpmName) { cov_1z1of6sg0o.b[16][0]++; cov_1z1of6sg0o.s[19]++; throw new Error("The adapter's npm name is required when running init."); } else { cov_1z1of6sg0o.b[16][1]++; } } /** * CONFIG * Loads and returns the adapter config at key config.commitizen, if it exists */ function loadAdapterConfig(cwd) { cov_1z1of6sg0o.f[2]++; let config = (cov_1z1of6sg0o.s[20]++, configLoader.load(null, cwd)); cov_1z1of6sg0o.s[21]++; if (config) { cov_1z1of6sg0o.b[17][0]++; cov_1z1of6sg0o.s[22]++; return config; } else { cov_1z1of6sg0o.b[17][1]++; } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluaXQuanMiXSwibmFtZXMiOlsiYWRkUGF0aFRvQWRhcHRlckNvbmZpZyIsImdlbmVyYXRlTnBtSW5zdGFsbEFkYXB0ZXJDb21tYW5kIiwiZ2V0TnBtSW5zdGFsbFN0cmluZ01hcHBpbmdzIiwiZ2VuZXJhdGVZYXJuQWRkQWRhcHRlckNvbW1hbmQiLCJnZXRZYXJuQWRkU3RyaW5nTWFwcGluZ3MiLCJhZGFwdGVyIiwiaW5pdCIsIkNMSV9QQVRIIiwicGF0aCIsIm5vcm1hbGl6ZSIsImpvaW4iLCJfX2Rpcm5hbWUiLCJkZWZhdWx0SW5pdE9wdGlvbnMiLCJzYXZlIiwic2F2ZURldiIsInNhdmVFeGFjdCIsImZvcmNlIiwieWFybiIsImRldiIsImV4YWN0IiwicmVwb1BhdGgiLCJhZGFwdGVyTnBtTmFtZSIsImluY2x1ZGVDb21taXRpemVuIiwiY2hlY2tSZXF1aXJlZEFyZ3VtZW50cyIsImFkYXB0ZXJDb25maWciLCJsb2FkQWRhcHRlckNvbmZpZyIsInN0cmluZ01hcHBpbmdzIiwiaW5zdGFsbEFkYXB0ZXJDb21tYW5kIiwiaW5zdGFsbENvbW1pdGl6ZW5Db21tYW5kIiwibGVuZ3RoIiwiRXJyb3IiLCJjaGlsZFByb2Nlc3MiLCJleGVjU3luYyIsImN3ZCIsImUiLCJjb25zb2xlIiwiZXJyb3IiLCJjb25maWciLCJjb25maWdMb2FkZXIiLCJsb2FkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUEsSUFBSTtBQUNGQSxFQUFBQSxzQkFERTtBQUVGQyxFQUFBQSxnQ0FGRTtBQUdGQyxFQUFBQSwyQkFIRTtBQUlGQyxFQUFBQSw2QkFKRTtBQUtGQyxFQUFBQTtBQUxFLDRCQU1BQyxPQU5BLENBQUo7ZUFRZUMsSTs7QUFFZixNQUFNQyxRQUFRLDJCQUFHQyxjQUFLQyxTQUFMLENBQWVELGNBQUtFLElBQUwsQ0FBVUMsU0FBVixFQUFxQixRQUFyQixDQUFmLENBQUgsQ0FBZDtBQUVBOzs7Ozs7Ozs7Ozs7OztBQWNBOzs7O0FBR0EsTUFBTUMsa0JBQWtCLDJCQUFHO0FBQ3pCQyxFQUFBQSxJQUFJLEVBQUUsS0FEbUI7QUFFekJDLEVBQUFBLE9BQU8sRUFBRSxJQUZnQjtBQUd6QkMsRUFBQUEsU0FBUyxFQUFFLEtBSGM7QUFJekJDLEVBQUFBLEtBQUssRUFBRSxLQUprQjtBQU16QjtBQUNBO0FBQ0FDLEVBQUFBLElBQUksRUFBRSxLQVJtQjtBQVN6QkMsRUFBQUEsR0FBRyxFQUFFLElBVG9CO0FBVXpCQyxFQUFBQSxLQUFLLEVBQUUsS0FWa0IsQ0FVWDs7QUFWVyxDQUFILENBQXhCO0FBYUE7Ozs7QUFHQSxTQUFTYixJQUFULENBQWVjLFFBQWYsRUFBeUJDLGNBQXpCLEVBQXlDO0FBQ3ZDUixFQUFBQSxJQUFJLDhCQUFHLEtBQUgsQ0FEbUM7QUFFdkNDLEVBQUFBLE9BQU8sOEJBQUcsSUFBSCxDQUZnQztBQUd2Q0MsRUFBQUEsU0FBUyw4QkFBRyxLQUFILENBSDhCO0FBSXZDQyxFQUFBQSxLQUFLLDhCQUFHLEtBQUgsQ0FKa0M7QUFLdkNDLEVBQUFBLElBQUksOEJBQUcsS0FBSCxDQUxtQztBQU12Q0MsRUFBQUEsR0FBRyw4QkFBRyxLQUFILENBTm9DO0FBT3ZDQyxFQUFBQSxLQUFLLDhCQUFHLEtBQUgsQ0FQa0M7QUFRdkNHLEVBQUFBLGlCQUFpQiw4QkFBRyxLQUFIO0FBUnNCLCtCQVNyQ1Ysa0JBVHFDLENBQXpDLEVBU3dCO0FBQUE7QUFBQTtBQUV0QjtBQUNBVyxFQUFBQSxzQkFBc0IsQ0FBQ0gsUUFBRCxFQUFXQyxjQUFYLENBQXRCLENBSHNCLENBS3RCOztBQUNBLE1BQUlHLGFBQWEsMkJBQUdDLGlCQUFpQixDQUFDTCxRQUFELENBQXBCLENBQWpCLENBTnNCLENBUXRCOztBQUNBLE1BQUlNLGNBQWMsMkJBQUdULElBQUksOEJBQUdiLHdCQUF3QixDQUFDYyxHQUFELEVBQU1DLEtBQU4sRUFBYUgsS0FBYixDQUEzQiwrQkFBaURkLDJCQUEyQixDQUFDVyxJQUFELEVBQU9DLE9BQVAsRUFBZ0JDLFNBQWhCLEVBQTJCQyxLQUEzQixDQUE1RSxDQUFQLENBQWxCLENBVHNCLENBV3RCOztBQUNBLE1BQUlXLHFCQUFxQiwyQkFBR1YsSUFBSSwrQkFBR2QsNkJBQTZCLENBQUN1QixjQUFELEVBQWlCTCxjQUFqQixDQUFoQyxnQ0FBbUVwQixnQ0FBZ0MsQ0FBQ3lCLGNBQUQsRUFBaUJMLGNBQWpCLENBQW5HLENBQVAsQ0FBekI7QUFFQSxNQUFJTyx3QkFBd0IsMkJBQUdYLElBQUksK0JBQUdkLDZCQUE2QixDQUFDdUIsY0FBRCxFQUFpQixZQUFqQixDQUFoQyxnQ0FBaUV6QixnQ0FBZ0MsQ0FBQ3lCLGNBQUQsRUFBaUIsWUFBakIsQ0FBakcsQ0FBUCxDQUE1QixDQWRzQixDQWdCdEI7O0FBaEJzQjs7QUFpQnRCLE1BQUksNEJBQUFGLGFBQWEsaUNBQUlBLGFBQWEsQ0FBQ2hCLElBQWxCLENBQWIsZ0NBQXVDZ0IsYUFBYSxDQUFDaEIsSUFBZCxDQUFtQnFCLE1BQW5CLEdBQTRCLENBQW5FLGlDQUF3RSxDQUFDYixLQUF6RSxDQUFKLEVBQW9GO0FBQUE7QUFBQTtBQUNsRixVQUFNLElBQUljLEtBQUosQ0FBVzswQkFDS04sYUFBYSxDQUFDaEIsSUFBSztnQkFDN0JZLFFBQVM7Z0JBQ1RiLFFBQVM7NkJBQ0lvQixxQkFBc0I7c0JBQzdCTixjQUFlO0tBTDNCLENBQU47QUFPRCxHQVJEO0FBQUE7QUFBQTs7QUFqQnNCOztBQTJCdEIsTUFBSTtBQUFBOztBQUNGVSwyQkFBYUMsUUFBYixDQUFzQkwscUJBQXRCLEVBQTZDO0FBQUVNLE1BQUFBLEdBQUcsRUFBRWI7QUFBUCxLQUE3Qzs7QUFERTs7QUFFRixRQUFHRSxpQkFBSCxFQUFzQjtBQUFBO0FBQUE7O0FBQ3BCUyw2QkFBYUMsUUFBYixDQUFzQkosd0JBQXRCLEVBQWdEO0FBQUVLLFFBQUFBLEdBQUcsRUFBRWI7QUFBUCxPQUFoRDtBQUNELEtBRkQ7QUFBQTtBQUFBOztBQUZFO0FBS0ZwQixJQUFBQSxzQkFBc0IsQ0FBQ08sUUFBRCxFQUFXYSxRQUFYLEVBQXFCQyxjQUFyQixDQUF0QjtBQUNELEdBTkQsQ0FNRSxPQUFPYSxDQUFQLEVBQVU7QUFBQTtBQUNWQyxJQUFBQSxPQUFPLENBQUNDLEtBQVIsQ0FBY0YsQ0FBZDtBQUNEO0FBQ0Y7QUFFRDs7Ozs7O0FBSUEsU0FBU1gsc0JBQVQsQ0FBaUNmLElBQWpDLEVBQXVDYSxjQUF2QyxFQUF1RDtBQUFBO0FBQUE7O0FBQ3JELE1BQUksQ0FBQ2IsSUFBTCxFQUFXO0FBQUE7QUFBQTtBQUNULFVBQU0sSUFBSXNCLEtBQUosQ0FBVSxxQ0FBVixDQUFOO0FBQ0QsR0FGRDtBQUFBO0FBQUE7O0FBRHFEOztBQUlyRCxNQUFJLENBQUNULGNBQUwsRUFBcUI7QUFBQTtBQUFBO0FBQ25CLFVBQU0sSUFBSVMsS0FBSixDQUFVLHVEQUFWLENBQU47QUFDRCxHQUZEO0FBQUE7QUFBQTtBQUdEO0FBRUQ7Ozs7OztBQUlBLFNBQVNMLGlCQUFULENBQTRCUSxHQUE1QixFQUFpQztBQUFBO0FBQy9CLE1BQUlJLE1BQU0sNEJBQUdDLFlBQVksQ0FBQ0MsSUFBYixDQUFrQixJQUFsQixFQUF3Qk4sR0FBeEIsQ0FBSCxDQUFWO0FBRCtCOztBQUUvQixNQUFJSSxNQUFKLEVBQVk7QUFBQTtBQUFBO0FBQ1YsV0FBT0EsTUFBUDtBQUNELEdBRkQsTUFFTztBQUFBO0FBRU47QUFDRiIsInNvdXJjZVJvb3QiOiIvVXNlcnMvY2FsbHVtYWNyYWUvU2l0ZXMvZmluZC1ub2RlLW1vZHVsZXMvY3otY2xpL3NyYy9jb21taXRpemVuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoaWxkUHJvY2VzcyBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY29uZmlnTG9hZGVyIGZyb20gJy4vY29uZmlnTG9hZGVyJztcbmltcG9ydCAqIGFzIGFkYXB0ZXIgZnJvbSAnLi9hZGFwdGVyJztcblxubGV0IHtcbiAgYWRkUGF0aFRvQWRhcHRlckNvbmZpZyxcbiAgZ2VuZXJhdGVOcG1JbnN0YWxsQWRhcHRlckNvbW1hbmQsXG4gIGdldE5wbUluc3RhbGxTdHJpbmdNYXBwaW5ncyxcbiAgZ2VuZXJhdGVZYXJuQWRkQWRhcHRlckNvbW1hbmQsXG4gIGdldFlhcm5BZGRTdHJpbmdNYXBwaW5ncyxcbn0gPSBhZGFwdGVyO1xuXG5leHBvcnQgZGVmYXVsdCBpbml0O1xuXG5jb25zdCBDTElfUEFUSCA9IHBhdGgubm9ybWFsaXplKHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi8nKSk7XG5cbi8qKlxuICogQ1ogSU5JVFxuICpcbiAqIEluaXQgaXMgZ2VuZXJhbGx5IHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXppbmcgYW4gYWRhcHRlciBpblxuICogYSB1c2VyJ3MgcHJvamVjdC4gVGhlIGdvYWwgaXMgdG8gYmUgYWJsZSB0byBydW5cbiAqIGBjb21taXRpemVuIGluaXRgIGFuZCBiZSBwcm9tcHRlZCBmb3IgY2VydGFpbiBmaWVsZHMgd2hpY2hcbiAqIHdpbGwgaGVscCB5b3UgaW5zdGFsbCB0aGUgcHJvcGVyIGFkYXB0ZXIgZm9yIHlvdXIgcHJvamVjdC5cbiAqXG4gKiBJbml0IGRvZXMgbm90IGFjdHVhbGx5IGNyZWF0ZSB0aGUgYWRhcHRlciAoaXQgZGVmZXJzIHRvIGFkYXB0ZXJcbiAqIGZvciB0aGlzKS4gSW5zdGVhZCwgaXQgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIGhlbHAgZ2F0aGVyXG4gKiBhbmQgdmFsaWRhdGUgdGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0byBpbnN0YWxsIHRoZSBhZGFwdGVyXG4gKiBwcm9wZXJseSB3aXRob3V0IGludGVyZmVyaW5nIHdpdGggYSBwcmV2aW91cyBhZGFwdGVyIGNvbmZpZy5cbiAqL1xuXG4vKipcbiAqIFRoZSBkZWZhdWx0cyBmb3IgaW5pdFxuICovXG5jb25zdCBkZWZhdWx0SW5pdE9wdGlvbnMgPSB7XG4gIHNhdmU6IGZhbHNlLFxuICBzYXZlRGV2OiB0cnVlLFxuICBzYXZlRXhhY3Q6IGZhbHNlLFxuICBmb3JjZTogZmFsc2UsXG5cbiAgLy8gZm9yIC0teWFybiB1c2VcbiAgLy8gQHNlZSBodHRwczovL2dpdGh1Yi5jb20vY29tbWl0aXplbi9jei1jbGkvaXNzdWVzLzUyNyNpc3N1ZWNvbW1lbnQtMzkyNjUzODk3XG4gIHlhcm46IGZhbHNlLFxuICBkZXY6IHRydWUsXG4gIGV4YWN0OiBmYWxzZSwgLy8gc2hvdWxkIGFkZCB0cmFpbGluZyBjb21tYSwgdGh1cyBuZXh0IGRldmVsb3BlciBkb2Vzbid0IGdvdCBibGFtZWQgZm9yIHRoaXMgbGluZVxufTtcblxuLyoqXG4gKiBSdW5zIG5wbSBpbnN0YWxsIGZvciB0aGUgYWRhcHRlciB0aGVuIG1vZGlmaWVzIHRoZSBjb25maWcuY29tbWl0aXplbiBhcyBuZWVkZWRcbiAqL1xuZnVuY3Rpb24gaW5pdCAocmVwb1BhdGgsIGFkYXB0ZXJOcG1OYW1lLCB7XG4gIHNhdmUgPSBmYWxzZSxcbiAgc2F2ZURldiA9IHRydWUsXG4gIHNhdmVFeGFjdCA9IGZhbHNlLFxuICBmb3JjZSA9IGZhbHNlLFxuICB5YXJuID0gZmFsc2UsXG4gIGRldiA9IGZhbHNlLFxuICBleGFjdCA9IGZhbHNlLFxuICBpbmNsdWRlQ29tbWl0aXplbiA9IGZhbHNlXG59ID0gZGVmYXVsdEluaXRPcHRpb25zKSB7XG5cbiAgLy8gRG9uJ3QgbGV0IHRoaW5ncyBtb3ZlIGZvcndhcmQgaWYgcmVxdWlyZWQgYXJncyBhcmUgbWlzc2luZ1xuICBjaGVja1JlcXVpcmVkQXJndW1lbnRzKHJlcG9QYXRoLCBhZGFwdGVyTnBtTmFtZSk7XG5cbiAgLy8gTG9hZCB0aGUgY3VycmVudCBhZGFwdGVyIGNvbmZpZ1xuICBsZXQgYWRhcHRlckNvbmZpZyA9IGxvYWRBZGFwdGVyQ29uZmlnKHJlcG9QYXRoKTtcblxuICAvLyBHZXQgdGhlIG5wbSBzdHJpbmcgbWFwcGluZ3MgYmFzZWQgb24gdGhlIGFyZ3VtZW50cyBwcm92aWRlZFxuICBsZXQgc3RyaW5nTWFwcGluZ3MgPSB5YXJuID8gZ2V0WWFybkFkZFN0cmluZ01hcHBpbmdzKGRldiwgZXhhY3QsIGZvcmNlKSA6IGdldE5wbUluc3RhbGxTdHJpbmdNYXBwaW5ncyhzYXZlLCBzYXZlRGV2LCBzYXZlRXhhY3QsIGZvcmNlKTtcblxuICAvLyBHZW5lcmF0ZSBhIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgdGhlIG5wbSBpbnN0YWxsIGNvbW1hbmRcbiAgbGV0IGluc3RhbGxBZGFwdGVyQ29tbWFuZCA9IHlhcm4gPyBnZW5lcmF0ZVlhcm5BZGRBZGFwdGVyQ29tbWFuZChzdHJpbmdNYXBwaW5ncywgYWRhcHRlck5wbU5hbWUpIDogZ2VuZXJhdGVOcG1JbnN0YWxsQWRhcHRlckNvbW1hbmQoc3RyaW5nTWFwcGluZ3MsIGFkYXB0ZXJOcG1OYW1lKTtcblxuICBsZXQgaW5zdGFsbENvbW1pdGl6ZW5Db21tYW5kID0geWFybiA/IGdlbmVyYXRlWWFybkFkZEFkYXB0ZXJDb21tYW5kKHN0cmluZ01hcHBpbmdzLCBcImNvbW1pdGl6ZW5cIikgOiBnZW5lcmF0ZU5wbUluc3RhbGxBZGFwdGVyQ29tbWFuZChzdHJpbmdNYXBwaW5ncywgXCJjb21taXRpemVuXCIpO1xuXG4gIC8vIENoZWNrIGZvciBwcmV2aW91c2x5IGluc3RhbGxlZCBhZGFwdGVyc1xuICBpZiAoYWRhcHRlckNvbmZpZyAmJiBhZGFwdGVyQ29uZmlnLnBhdGggJiYgYWRhcHRlckNvbmZpZy5wYXRoLmxlbmd0aCA+IDAgJiYgIWZvcmNlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBBIHByZXZpb3VzIGFkYXB0ZXIgaXMgYWxyZWFkeSBjb25maWd1cmVkLiBVc2UgLS1mb3JjZSB0byBvdmVycmlkZVxuICAgIGFkYXB0ZXJDb25maWcucGF0aDogJHthZGFwdGVyQ29uZmlnLnBhdGh9XG4gICAgcmVwb1BhdGg6ICR7cmVwb1BhdGh9XG4gICAgQ0xJX1BBVEg6ICR7Q0xJX1BBVEh9XG4gICAgaW5zdGFsbEFkYXB0ZXJDb21tYW5kOiAke2luc3RhbGxBZGFwdGVyQ29tbWFuZH1cbiAgICBhZGFwdGVyTnBtTmFtZTogJHthZGFwdGVyTnBtTmFtZX1cbiAgICBgKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY2hpbGRQcm9jZXNzLmV4ZWNTeW5jKGluc3RhbGxBZGFwdGVyQ29tbWFuZCwgeyBjd2Q6IHJlcG9QYXRoIH0pO1xuICAgIGlmKGluY2x1ZGVDb21taXRpemVuKSB7XG4gICAgICBjaGlsZFByb2Nlc3MuZXhlY1N5bmMoaW5zdGFsbENvbW1pdGl6ZW5Db21tYW5kLCB7IGN3ZDogcmVwb1BhdGggfSk7XG4gICAgfVxuICAgIGFkZFBhdGhUb0FkYXB0ZXJDb25maWcoQ0xJX1BBVEgsIHJlcG9QYXRoLCBhZGFwdGVyTnBtTmFtZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGUpO1xuICB9XG59XG5cbi8qKlxuICogQ2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSByZXF1aXJlZCBhcmd1bWVudHMgYXJlIHBhc3NlZFxuICogVGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBhbnkgYXJlIG5vdC5cbiAqL1xuZnVuY3Rpb24gY2hlY2tSZXF1aXJlZEFyZ3VtZW50cyAocGF0aCwgYWRhcHRlck5wbU5hbWUpIHtcbiAgaWYgKCFwYXRoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiUGF0aCBpcyByZXF1aXJlZCB3aGVuIHJ1bm5pbmcgaW5pdC5cIik7XG4gIH1cbiAgaWYgKCFhZGFwdGVyTnBtTmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSBhZGFwdGVyJ3MgbnBtIG5hbWUgaXMgcmVxdWlyZWQgd2hlbiBydW5uaW5nIGluaXQuXCIpO1xuICB9XG59XG5cbi8qKlxuICogQ09ORklHXG4gKiBMb2FkcyBhbmQgcmV0dXJucyB0aGUgYWRhcHRlciBjb25maWcgYXQga2V5IGNvbmZpZy5jb21taXRpemVuLCBpZiBpdCBleGlzdHNcbiAqL1xuZnVuY3Rpb24gbG9hZEFkYXB0ZXJDb25maWcgKGN3ZCkge1xuICBsZXQgY29uZmlnID0gY29uZmlnTG9hZGVyLmxvYWQobnVsbCwgY3dkKTtcbiAgaWYgKGNvbmZpZykge1xuICAgIHJldHVybiBjb25maWc7XG4gIH0gZWxzZSB7XG5cbiAgfVxufVxuIl19