@pipeline-builder/pipeline-manager 3.4.188 → 3.4.190

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/agent/targets.d.ts.map +1 -1
  2. package/dist/agent/targets.js +3 -2
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +6 -1
  5. package/dist/commands/audit-stacks.d.ts.map +1 -1
  6. package/dist/commands/audit-stacks.js +6 -2
  7. package/dist/commands/audit-tokens.d.ts.map +1 -1
  8. package/dist/commands/audit-tokens.js +6 -3
  9. package/dist/commands/bootstrap.d.ts.map +1 -1
  10. package/dist/commands/bootstrap.js +4 -3
  11. package/dist/commands/create-pipeline.d.ts.map +1 -1
  12. package/dist/commands/create-pipeline.js +79 -18
  13. package/dist/commands/deploy.d.ts.map +1 -1
  14. package/dist/commands/deploy.js +16 -110
  15. package/dist/commands/redrive-events.d.ts.map +1 -1
  16. package/dist/commands/redrive-events.js +3 -2
  17. package/dist/commands/setup-events.d.ts.map +1 -1
  18. package/dist/commands/setup-events.js +3 -2
  19. package/dist/config/cli.constants.d.ts +15 -1
  20. package/dist/config/cli.constants.d.ts.map +1 -1
  21. package/dist/config/cli.constants.js +24 -1
  22. package/dist/types/config.d.ts +11 -0
  23. package/dist/types/config.d.ts.map +1 -1
  24. package/dist/types/config.js +1 -1
  25. package/dist/utils/deploy-runner.d.ts +38 -0
  26. package/dist/utils/deploy-runner.d.ts.map +1 -0
  27. package/dist/utils/deploy-runner.js +112 -0
  28. package/dist/utils/error-handler.d.ts.map +1 -1
  29. package/dist/utils/error-handler.js +61 -6
  30. package/dist/utils/list-command-utils.d.ts.map +1 -1
  31. package/dist/utils/list-command-utils.js +5 -3
  32. package/dist/utils/registry.d.ts.map +1 -1
  33. package/dist/utils/registry.js +5 -6
  34. package/package.json +4 -4
@@ -117,6 +117,12 @@ export function validateBoolean(value, fieldName) {
117
117
  * Validate and parse a numeric CLI parameter within optional bounds.
118
118
  */
119
119
  export function validateNumber(value, fieldName, min, max) {
120
+ // A missing value (e.g. a list command that forgot its commander default)
121
+ // would otherwise throw a cryptic `undefined.trim()` TypeError — fail with a
122
+ // clear validation message instead.
123
+ if (value === undefined || value === null || value === '') {
124
+ throw new Error(`Invalid ${fieldName}: a value is required`);
125
+ }
120
126
  // Reject partial parses ("12abc" -> 12) and non-integers ("5.9" -> 5) that
121
127
  // `parseInt` would otherwise accept silently.
122
128
  if (typeof value === 'string' && !/^-?\d+$/.test(value.trim())) {
@@ -168,4 +174,21 @@ export function assertShellSafe(value, fieldName, opts = {}) {
168
174
  export function shellQuote(value) {
169
175
  return `'${value.replace(/'/g, "'\\''")}'`;
170
176
  }
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvY2xpLmNvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV2QyxnRkFBZ0Y7QUFDaEYsaUZBQWlGO0FBQ2pGLDJFQUEyRTtBQUMzRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDNUIsWUFBWSxDQUFDLElBQUksR0FBRyxDQUFDLG9CQUFvQixFQUFFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUMvQyxDQUFDO0FBRXpCOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLGtCQUFrQixDQUFDO0FBQzNDLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUM7QUFDbkMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLDRDQUE0QyxDQUFDO0FBRTVFOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzVCLElBQUksRUFBRSxNQUFlO0lBQ3JCLGdCQUFnQixFQUFFLFFBQWlCO0lBQ25DLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFO0NBQ3BDLENBQUM7QUFPWDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRztJQUN0QixZQUFZLEVBQUUsS0FBSztJQUNuQixZQUFZLEVBQUUsSUFBSTtDQUNWLENBQUM7QUFFWDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLE1BQU0sRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJ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VSxDQUFDLEtBQWE7SUFDdEMsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyByYW5kb21CeXRlcyB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tICdub2RlOmZzJztcblxuLy8gRVNNIGhhcyBubyBzeW5jaHJvbm91cyBuYW1lZCBKU09OIGltcG9ydCAoTm9kZSBvbmx5IGV4cG9zZXMgYSBkZWZhdWx0IGV4cG9ydCxcbi8vIGFuZCBpbXBvcnRpbmcgYC4uLy4uL3BhY2thZ2UuanNvbmAgd291bGQgYWxzbyBmYWxsIG91dHNpZGUgYHJvb3REaXI6IHNyY2ApLCBzb1xuLy8gcmVhZCB0aGUgdmVyc2lvbiBmcm9tIHBhY2thZ2UuanNvbiBhdCBsb2FkIHRpbWUgcmVsYXRpdmUgdG8gdGhpcyBtb2R1bGUuXG5jb25zdCB7IHZlcnNpb24gfSA9IEpTT04ucGFyc2UoXG4gIHJlYWRGaWxlU3luYyhuZXcgVVJMKCcuLi8uLi9wYWNrYWdlLmpzb24nLCBpbXBvcnQubWV0YS51cmwpLCAndXRmLTgnKSxcbikgYXMgeyB2ZXJzaW9uOiBzdHJpbmcgfTtcblxuLyoqXG4gKiBBcHBsaWNhdGlvbiBtZXRhZGF0YVxuICovXG5leHBvcnQgY29uc3QgQVBQX05BTUUgPSAncGlwZWxpbmUtbWFuYWdlcic7XG5leHBvcnQgY29uc3QgQVBQX1ZFUlNJT04gPSB2ZXJzaW9uO1xuZXhwb3J0IGNvbnN0IEFQUF9ERVNDUklQVElPTiA9ICdBIENMSSB0b29sIHRvIG1hbmFnZSBwaXBlbGluZXMgYW5kIHBsdWdpbnMnO1xuXG4vKipcbiAqIEJhbm5lciBjb25maWd1cmF0aW9uIGZvciBDTEkgc3RhcnR1cFxuICovXG5leHBvcnQgY29uc3QgQkFOTkVSX09QVElPTlMgPSB7XG4gIGZvbnQ6ICdEb29tJyBhcyBjb25zdCxcbiAgaG9yaXpvbnRhbExheW91dDogJ2ZpdHRlZCcgYXMgY29uc3QsXG4gIGdldFdpZHRoOiAoKSA9PiBwcm9jZXNzLnN0ZG91dC5jb2x1bW5zID8/IDgwLFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBPdXRwdXQgZm9ybWF0IHR5cGVzXG4gKi9cbmV4cG9ydCB0eXBlIE91dHB1dEZvcm1hdCA9ICd0YWJsZScgfCAnanNvbicgfCAneWFtbCcgfCAnY3N2JztcblxuLyoqXG4gKiBEZWZhdWx0IHRpbWVvdXRzIChpbiBtaWxsaXNlY29uZHMpXG4gKi9cbmV4cG9ydCBjb25zdCBUSU1FT1VUUyA9IHtcbiAgSFRUUF9SRVFVRVNUOiAzMDAwMCxcbiAgSEVBTFRIX0NIRUNLOiA1MDAwLFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBGaWxlIHNpemUgbGltaXRzIChpbiBieXRlcylcbiAqL1xuZXhwb3J0IGNvbnN0IEZJTEVfU0laRV9MSU1JVFMgPSB7XG4gIFBMVUdJTjogNCAqIDEwMjQgKiAxMDI0ICogMTAyNCwgLy8gNEdCXG4gIFBJUEVMSU5FX1BST1BTOiAxMCAqIDEwMjQgKiAxMDI0LCAvLyAxME1CXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIEVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzXG4gKi9cbmV4cG9ydCBjb25zdCBFTlZfVkFSUyA9IHtcbiAgUExBVEZPUk1fVE9LRU46ICdQTEFURk9STV9UT0tFTicsXG4gIFBMQVRGT1JNX0JBU0VfVVJMOiAnUExBVEZPUk1fQkFTRV9VUkwnLFxuICBDTElfQ09ORklHX1BBVEg6ICdDTElfQ09ORklHX1BBVEgnLFxuICBUTFNfUkVKRUNUX1VOQVVUSE9SSVpFRDogJ1RMU19SRUpFQ1RfVU5BVVRIT1JJWkVEJyxcbiAgQVdTX1JFR0lPTjogJ0FXU19SRUdJT04nLFxuICBERUJVRzogJ0RFQlVHJyxcbn0gYXMgY29uc3Q7XG5cbi8qKlxuICogQ2hlY2sgaWYgZGVidWcgbW9kZSBpcyBlbmFibGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RlYnVnTW9kZShvcHRpb25zPzogeyBkZWJ1Zz86IGJvb2xlYW4gfSk6IGJvb2xlYW4ge1xuICByZXR1cm4gb3B0aW9ucz8uZGVidWcgPz8gcHJvY2Vzcy5lbnYuREVCVUcgPT09ICd0cnVlJztcbn1cblxuLyoqXG4gKiBGb3JtYXQgZmlsZSBzaXplIGZvciBkaXNwbGF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRGaWxlU2l6ZShieXRlczogbnVtYmVyKTogc3RyaW5nIHtcbiAgaWYgKGJ5dGVzID09PSAwKSByZXR1cm4gJzAgQic7XG4gIGNvbnN0IHVuaXRzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJ107XG4gIGNvbnN0IGsgPSAxMDI0O1xuICBjb25zdCBpID0gTWF0aC5mbG9vcihNYXRoLmxvZyhieXRlcykgLyBNYXRoLmxvZyhrKSk7XG4gIHJldHVybiBgJHsoYnl0ZXMgLyBNYXRoLnBvdyhrLCBpKSkudG9GaXhlZCgyKX0gJHt1bml0c1tpXX1gO1xufVxuXG4vKipcbiAqIEZvcm1hdCBkdXJhdGlvbiBmb3IgZGlzcGxheVxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RHVyYXRpb24obXM6IG51bWJlcik6IHN0cmluZyB7XG4gIGlmIChtcyA8IDEwMDApIHJldHVybiBgJHttc31tc2A7XG4gIGlmIChtcyA8IDYwMDAwKSByZXR1cm4gYCR7KG1zIC8gMTAwMCkudG9GaXhlZCgyKX1zYDtcbiAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IobXMgLyA2MDAwMCk7XG4gIGNvbnN0IHJlbWFpbmluZ1NlY29uZHMgPSAoKG1zICUgNjAwMDApIC8gMTAwMCkudG9GaXhlZCgwKTtcbiAgcmV0dXJuIGAke21pbnV0ZXN9bSAke3JlbWFpbmluZ1NlY29uZHN9c2A7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgY3J5cHRvZ3JhcGhpY2FsbHkgcmFuZG9tIGV4ZWN1dGlvbiBJRCBmb3IgcmVxdWVzdCB0cmFjaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVFeGVjdXRpb25JZCgpOiBzdHJpbmcge1xuICByZXR1cm4gcmFuZG9tQnl0ZXMoNCkudG9TdHJpbmcoJ2hleCcpLnRvVXBwZXJDYXNlKCk7XG59XG5cbi8qKlxuICogVGFibGUgZGlzcGxheSBvcHRpb25zIChib3gtZHJhd2luZyBjaGFyYWN0ZXJzKVxuICovXG5leHBvcnQgY29uc3QgVEFCTEVfT1BUSU9OUyA9IHtcbiAgYm9yZGVyOiB7XG4gICAgdG9wQm9keTogJ+KUgCcsXG4gICAgdG9wSm9pbjogJ+KUrCcsXG4gICAgdG9wTGVmdDogJ+KUjCcsXG4gICAgdG9wUmlnaHQ6ICfilJAnLFxuICAgIGJvdHRvbUJvZHk6ICfilIAnLFxuICAgIGJvdHRvbUpvaW46ICfilLQnLFxuICAgIGJvdHRvbUxlZnQ6ICfilJQnLFxuICAgIGJvdHRvbVJpZ2h0OiAn4pSYJyxcbiAgICBib2R5TGVmdDogJ+KUgicsXG4gICAgYm9keVJpZ2h0OiAn4pSCJyxcbiAgICBib2R5Sm9pbjogJ+KUgicsXG4gICAgam9pbkJvZHk6ICfilIAnLFxuICAgIGpvaW5MZWZ0OiAn4pScJyxcbiAgICBqb2luUmlnaHQ6ICfilKQnLFxuICAgIGpvaW5Kb2luOiAn4pS8JyxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbi8qKlxuICogVmFsaWRhdGUgYm9vbGVhbiBzdHJpbmcgZnJvbSBDTEkgaW5wdXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlQm9vbGVhbih2YWx1ZTogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBub3JtYWxpemVkID0gdmFsdWUudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gIGlmIChbJ3RydWUnLCAnMScsICd5ZXMnLCAneSddLmluY2x1ZGVzKG5vcm1hbGl6ZWQpKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKFsnZmFsc2UnLCAnMCcsICdubycsICduJ10uaW5jbHVkZXMobm9ybWFsaXplZCkpIHJldHVybiBmYWxzZTtcbiAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGJvb2xlYW4gdmFsdWUgZm9yICR7ZmllbGROYW1lfTogXCIke3ZhbHVlfVwiLiBVc2UgdHJ1ZS9mYWxzZSwgeWVzL25vLCBvciAxLzAuYCk7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYW5kIHBhcnNlIGEgbnVtZXJpYyBDTEkgcGFyYW1ldGVyIHdpdGhpbiBvcHRpb25hbCBib3VuZHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZU51bWJlcih2YWx1ZTogc3RyaW5nIHwgbnVtYmVyLCBmaWVsZE5hbWU6IHN0cmluZywgbWluPzogbnVtYmVyLCBtYXg/OiBudW1iZXIpOiBudW1iZXIge1xuICAvLyBSZWplY3QgcGFydGlhbCBwYXJzZXMgKFwiMTJhYmNcIiAtPiAxMikgYW5kIG5vbi1pbnRlZ2VycyAoXCI1LjlcIiAtPiA1KSB0aGF0XG4gIC8vIGBwYXJzZUludGAgd291bGQgb3RoZXJ3aXNlIGFjY2VwdCBzaWxlbnRseS5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgIS9eLT9cXGQrJC8udGVzdCh2YWx1ZS50cmltKCkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkICR7ZmllbGROYW1lfTogbXVzdCBiZSBhIHdob2xlIG51bWJlcmApO1xuICB9XG4gIGNvbnN0IG51bSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyB2YWx1ZSA6IHBhcnNlSW50KHZhbHVlLnRyaW0oKSwgMTApO1xuICBpZiAoIU51bWJlci5pc0ludGVnZXIobnVtKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCAke2ZpZWxkTmFtZX06IG11c3QgYmUgYSB3aG9sZSBudW1iZXJgKTtcbiAgfVxuICBpZiAobWluICE9PSB1bmRlZmluZWQgJiYgbnVtIDwgbWluKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkICR7ZmllbGROYW1lfTogbXVzdCBiZSA+PSAke21pbn1gKTtcbiAgfVxuICBpZiAobWF4ICE9PSB1bmRlZmluZWQgJiYgbnVtID4gbWF4KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkICR7ZmllbGROYW1lfTogbXVzdCBiZSA8PSAke21heH1gKTtcbiAgfVxuICByZXR1cm4gbnVtO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHNvcnQgcGFyYW1ldGVyIGZvcm1hdCAoZS5nLiwgXCJjcmVhdGVkQXQ6ZGVzY1wiKS5cbiAqIFJldHVybnMgdGhlIHZhbGlkYXRlZCBzb3J0IHN0cmluZywgb3IgdGhlIGRlZmF1bHQgaWYgaW52YWxpZC5cbiAqL1xuY29uc3QgU09SVF9QQVRURVJOID0gL15bYS16QS1aX11bYS16QS1aMC05X10qOihhc2N8ZGVzYykkLztcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU29ydCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgaWYgKCFTT1JUX1BBVFRFUk4udGVzdCh2YWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc29ydCBmb3JtYXQ6IFwiJHt2YWx1ZX1cIi4gRXhwZWN0ZWQgXCJmaWVsZDphc2NcIiBvciBcImZpZWxkOmRlc2NcIi5gKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbi8qKlxuICogUmVqZWN0IHN0cmluZ3MgY29udGFpbmluZyBzaGVsbCBtZXRhY2hhcmFjdGVycy5cbiAqIFVzZWQgdG8gc2FuaXRpemUgQ0xJIGlucHV0cyBiZWZvcmUgcGFzc2luZyB0byBzaGVsbCBjb21tYW5kcy5cbiAqL1xuY29uc3QgU0hFTExfVU5TQUZFID0gL1s7JnxgJCgpe31bXFxdPD4hI34qP1xcXFxcXG5cXHJdLztcblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFNoZWxsU2FmZShcbiAgdmFsdWU6IHN0cmluZyxcbiAgZmllbGROYW1lOiBzdHJpbmcsXG4gIG9wdHM6IHsgcmVkYWN0VmFsdWU/OiBib29sZWFuIH0gPSB7fSxcbik6IHZvaWQge1xuICBpZiAoU0hFTExfVU5TQUZFLnRlc3QodmFsdWUpKSB7XG4gICAgLy8gYHJlZGFjdFZhbHVlYCBpcyBmb3Igc2VjcmV0cyAodG9rZW5zLCBwYXNzd29yZHMpIOKAlCBuZXZlciBlY2hvIHRoZSBvZmZlbmRpbmdcbiAgICAvLyB2YWx1ZSBpbnRvIGFuIGVycm9yL2xvZyBsaW5lIHdoZW4gdGhlIGZpZWxkIGlzIHNlbnNpdGl2ZS5cbiAgICBjb25zdCBkZXRhaWwgPSBvcHRzLnJlZGFjdFZhbHVlID8gJycgOiBgOiBcIiR7dmFsdWV9XCJgO1xuICAgIHRocm93IG5ldyBFcnJvcihgJHtmaWVsZE5hbWV9IGNvbnRhaW5zIHVuc2FmZSBjaGFyYWN0ZXJzJHtkZXRhaWx9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBQT1NJWCBzaW5nbGUtcXVvdGUgYSB2YWx1ZSAoZXNjYXBpbmcgZW1iZWRkZWQgc2luZ2xlIHF1b3RlcykgZm9yIHNhZmUgc2hlbGxcbiAqIGludGVycG9sYXRpb24uIFNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGgg4oCUIGRyaWZ0IGluIGEgc2hlbGwtcXVvdGluZyBoZWxwZXIgaXNcbiAqIHNlY3VyaXR5LXJlbGV2YW50LCBzbyBib3RoIGFnZW50IG1vZHVsZXMgaW1wb3J0IHRoaXMgcmF0aGVyIHRoYW4gcmUtZGVjbGFyaW5nIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hlbGxRdW90ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAnJHt2YWx1ZS5yZXBsYWNlKC8nL2csIFwiJ1xcXFwnJ1wiKX0nYDtcbn1cbiJdfQ==
177
+ /**
178
+ * Canonical default pipeline name when none is given — MUST mirror pipeline-core's
179
+ * pipeline-configuration.ts (`${sanitize(org)}-${sanitize(project)}-pipeline`,
180
+ * non-alphanumeric → '_', lowercased), so the CLI's create and registry paths
181
+ * derive the SAME name the CDK builder actually deploys (a mismatch breaks
182
+ * StartPipelineExecution against the registered name).
183
+ */
184
+ export function defaultPipelineName(organization, project) {
185
+ const sanitize = (s) => s.replace(/[^a-zA-Z0-9]/g, '_').toLowerCase();
186
+ return `${sanitize(organization)}-${sanitize(project)}-pipeline`;
187
+ }
188
+ /**
189
+ * CloudFormation stack name for the event-ingestion infra. Shared so `setup-events`
190
+ * (which deploys it) and `redrive-events` (which resolves the DLQ/queue from it)
191
+ * can never drift apart.
192
+ */
193
+ export const EVENTS_STACK_NAME = 'pipeline-builder-events';
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvY2xpLmNvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV2QyxnRkFBZ0Y7QUFDaEYsaUZBQWlGO0FBQ2pGLDJFQUEyRTtBQUMzRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDNUIsWUFBWSxDQUFDLElBQUksR0FBRyxDQUFDLG9CQUFvQixFQUFFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUMvQyxDQUFDO0FBRXpCOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLGtCQUFrQixDQUFDO0FBQzNDLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUM7QUFDbkMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLDRDQUE0QyxDQUFDO0FBRTVFOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzVCLElBQUksRUFBRSxNQUFlO0lBQ3JCLGdCQUFnQixFQUFFLFFBQWlCO0lBQ25DLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFO0NBQ3BDLENBQUM7QUFPWDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRztJQUN0QixZQUFZLEVBQUUsS0FBSztJQUNuQixZQUFZLEVBQUUsSUFBSTtDQUNWLENBQUM7QUFFWDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLE1BQU0sRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJ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QUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUM7UUFDdEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLFNBQVMsOEJBQThCLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQztBQUNILENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFhO0lBQ3RDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDO0FBQzdDLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsWUFBb0IsRUFBRSxPQUFlO0lBQ3ZFLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM5RSxPQUFPLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO0FBQ25FLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgcmFuZG9tQnl0ZXMgfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgcmVhZEZpbGVTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5cbi8vIEVTTSBoYXMgbm8gc3luY2hyb25vdXMgbmFtZWQgSlNPTiBpbXBvcnQgKE5vZGUgb25seSBleHBvc2VzIGEgZGVmYXVsdCBleHBvcnQsXG4vLyBhbmQgaW1wb3J0aW5nIGAuLi8uLi9wYWNrYWdlLmpzb25gIHdvdWxkIGFsc28gZmFsbCBvdXRzaWRlIGByb290RGlyOiBzcmNgKSwgc29cbi8vIHJlYWQgdGhlIHZlcnNpb24gZnJvbSBwYWNrYWdlLmpzb24gYXQgbG9hZCB0aW1lIHJlbGF0aXZlIHRvIHRoaXMgbW9kdWxlLlxuY29uc3QgeyB2ZXJzaW9uIH0gPSBKU09OLnBhcnNlKFxuICByZWFkRmlsZVN5bmMobmV3IFVSTCgnLi4vLi4vcGFja2FnZS5qc29uJywgaW1wb3J0Lm1ldGEudXJsKSwgJ3V0Zi04JyksXG4pIGFzIHsgdmVyc2lvbjogc3RyaW5nIH07XG5cbi8qKlxuICogQXBwbGljYXRpb24gbWV0YWRhdGFcbiAqL1xuZXhwb3J0IGNvbnN0IEFQUF9OQU1FID0gJ3BpcGVsaW5lLW1hbmFnZXInO1xuZXhwb3J0IGNvbnN0IEFQUF9WRVJTSU9OID0gdmVyc2lvbjtcbmV4cG9ydCBjb25zdCBBUFBfREVTQ1JJUFRJT04gPSAnQSBDTEkgdG9vbCB0byBtYW5hZ2UgcGlwZWxpbmVzIGFuZCBwbHVnaW5zJztcblxuLyoqXG4gKiBCYW5uZXIgY29uZmlndXJhdGlvbiBmb3IgQ0xJIHN0YXJ0dXBcbiAqL1xuZXhwb3J0IGNvbnN0IEJBTk5FUl9PUFRJT05TID0ge1xuICBmb250OiAnRG9vbScgYXMgY29uc3QsXG4gIGhvcml6b250YWxMYXlvdXQ6ICdmaXR0ZWQnIGFzIGNvbnN0LFxuICBnZXRXaWR0aDogKCkgPT4gcHJvY2Vzcy5zdGRvdXQuY29sdW1ucyA/PyA4MCxcbn0gYXMgY29uc3Q7XG5cbi8qKlxuICogT3V0cHV0IGZvcm1hdCB0eXBlc1xuICovXG5leHBvcnQgdHlwZSBPdXRwdXRGb3JtYXQgPSAndGFibGUnIHwgJ2pzb24nIHwgJ3lhbWwnIHwgJ2Nzdic7XG5cbi8qKlxuICogRGVmYXVsdCB0aW1lb3V0cyAoaW4gbWlsbGlzZWNvbmRzKVxuICovXG5leHBvcnQgY29uc3QgVElNRU9VVFMgPSB7XG4gIEhUVFBfUkVRVUVTVDogMzAwMDAsXG4gIEhFQUxUSF9DSEVDSzogNTAwMCxcbn0gYXMgY29uc3Q7XG5cbi8qKlxuICogRmlsZSBzaXplIGxpbWl0cyAoaW4gYnl0ZXMpXG4gKi9cbmV4cG9ydCBjb25zdCBGSUxFX1NJWkVfTElNSVRTID0ge1xuICBQTFVHSU46IDQgKiAxMDI0ICogMTAyNCAqIDEwMjQsIC8vIDRHQlxuICBQSVBFTElORV9QUk9QUzogMTAgKiAxMDI0ICogMTAyNCwgLy8gMTBNQlxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBFbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lc1xuICovXG5leHBvcnQgY29uc3QgRU5WX1ZBUlMgPSB7XG4gIFBMQVRGT1JNX1RPS0VOOiAnUExBVEZPUk1fVE9LRU4nLFxuICBQTEFURk9STV9CQVNFX1VSTDogJ1BMQVRGT1JNX0JBU0VfVVJMJyxcbiAgQ0xJX0NPTkZJR19QQVRIOiAnQ0xJX0NPTkZJR19QQVRIJyxcbiAgVExTX1JFSkVDVF9VTkFVVEhPUklaRUQ6ICdUTFNfUkVKRUNUX1VOQVVUSE9SSVpFRCcsXG4gIEFXU19SRUdJT046ICdBV1NfUkVHSU9OJyxcbiAgREVCVUc6ICdERUJVRycsXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIENoZWNrIGlmIGRlYnVnIG1vZGUgaXMgZW5hYmxlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEZWJ1Z01vZGUob3B0aW9ucz86IHsgZGVidWc/OiBib29sZWFuIH0pOiBib29sZWFuIHtcbiAgcmV0dXJuIG9wdGlvbnM/LmRlYnVnID8/IHByb2Nlc3MuZW52LkRFQlVHID09PSAndHJ1ZSc7XG59XG5cbi8qKlxuICogRm9ybWF0IGZpbGUgc2l6ZSBmb3IgZGlzcGxheVxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RmlsZVNpemUoYnl0ZXM6IG51bWJlcik6IHN0cmluZyB7XG4gIGlmIChieXRlcyA9PT0gMCkgcmV0dXJuICcwIEInO1xuICBjb25zdCB1bml0cyA9IFsnQicsICdLQicsICdNQicsICdHQicsICdUQiddO1xuICBjb25zdCBrID0gMTAyNDtcbiAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpO1xuICByZXR1cm4gYCR7KGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoMil9ICR7dW5pdHNbaV19YDtcbn1cblxuLyoqXG4gKiBGb3JtYXQgZHVyYXRpb24gZm9yIGRpc3BsYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdER1cmF0aW9uKG1zOiBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAobXMgPCAxMDAwKSByZXR1cm4gYCR7bXN9bXNgO1xuICBpZiAobXMgPCA2MDAwMCkgcmV0dXJuIGAkeyhtcyAvIDEwMDApLnRvRml4ZWQoMil9c2A7XG4gIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKG1zIC8gNjAwMDApO1xuICBjb25zdCByZW1haW5pbmdTZWNvbmRzID0gKChtcyAlIDYwMDAwKSAvIDEwMDApLnRvRml4ZWQoMCk7XG4gIHJldHVybiBgJHttaW51dGVzfW0gJHtyZW1haW5pbmdTZWNvbmRzfXNgO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGNyeXB0b2dyYXBoaWNhbGx5IHJhbmRvbSBleGVjdXRpb24gSUQgZm9yIHJlcXVlc3QgdHJhY2luZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRXhlY3V0aW9uSWQoKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJhbmRvbUJ5dGVzKDQpLnRvU3RyaW5nKCdoZXgnKS50b1VwcGVyQ2FzZSgpO1xufVxuXG4vKipcbiAqIFRhYmxlIGRpc3BsYXkgb3B0aW9ucyAoYm94LWRyYXdpbmcgY2hhcmFjdGVycylcbiAqL1xuZXhwb3J0IGNvbnN0IFRBQkxFX09QVElPTlMgPSB7XG4gIGJvcmRlcjoge1xuICAgIHRvcEJvZHk6ICfilIAnLFxuICAgIHRvcEpvaW46ICfilKwnLFxuICAgIHRvcExlZnQ6ICfilIwnLFxuICAgIHRvcFJpZ2h0OiAn4pSQJyxcbiAgICBib3R0b21Cb2R5OiAn4pSAJyxcbiAgICBib3R0b21Kb2luOiAn4pS0JyxcbiAgICBib3R0b21MZWZ0OiAn4pSUJyxcbiAgICBib3R0b21SaWdodDogJ+KUmCcsXG4gICAgYm9keUxlZnQ6ICfilIInLFxuICAgIGJvZHlSaWdodDogJ+KUgicsXG4gICAgYm9keUpvaW46ICfilIInLFxuICAgIGpvaW5Cb2R5OiAn4pSAJyxcbiAgICBqb2luTGVmdDogJ+KUnCcsXG4gICAgam9pblJpZ2h0OiAn4pSkJyxcbiAgICBqb2luSm9pbjogJ+KUvCcsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIFZhbGlkYXRlIGJvb2xlYW4gc3RyaW5nIGZyb20gQ0xJIGlucHV0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUJvb2xlYW4odmFsdWU6IHN0cmluZywgZmllbGROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IHZhbHVlLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICBpZiAoWyd0cnVlJywgJzEnLCAneWVzJywgJ3knXS5pbmNsdWRlcyhub3JtYWxpemVkKSkgcmV0dXJuIHRydWU7XG4gIGlmIChbJ2ZhbHNlJywgJzAnLCAnbm8nLCAnbiddLmluY2x1ZGVzKG5vcm1hbGl6ZWQpKSByZXR1cm4gZmFsc2U7XG4gIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBib29sZWFuIHZhbHVlIGZvciAke2ZpZWxkTmFtZX06IFwiJHt2YWx1ZX1cIi4gVXNlIHRydWUvZmFsc2UsIHllcy9ubywgb3IgMS8wLmApO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIGFuZCBwYXJzZSBhIG51bWVyaWMgQ0xJIHBhcmFtZXRlciB3aXRoaW4gb3B0aW9uYWwgYm91bmRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVOdW1iZXIodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGwsIGZpZWxkTmFtZTogc3RyaW5nLCBtaW4/OiBudW1iZXIsIG1heD86IG51bWJlcik6IG51bWJlciB7XG4gIC8vIEEgbWlzc2luZyB2YWx1ZSAoZS5nLiBhIGxpc3QgY29tbWFuZCB0aGF0IGZvcmdvdCBpdHMgY29tbWFuZGVyIGRlZmF1bHQpXG4gIC8vIHdvdWxkIG90aGVyd2lzZSB0aHJvdyBhIGNyeXB0aWMgYHVuZGVmaW5lZC50cmltKClgIFR5cGVFcnJvciDigJQgZmFpbCB3aXRoIGFcbiAgLy8gY2xlYXIgdmFsaWRhdGlvbiBtZXNzYWdlIGluc3RlYWQuXG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAnJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCAke2ZpZWxkTmFtZX06IGEgdmFsdWUgaXMgcmVxdWlyZWRgKTtcbiAgfVxuICAvLyBSZWplY3QgcGFydGlhbCBwYXJzZXMgKFwiMTJhYmNcIiAtPiAxMikgYW5kIG5vbi1pbnRlZ2VycyAoXCI1LjlcIiAtPiA1KSB0aGF0XG4gIC8vIGBwYXJzZUludGAgd291bGQgb3RoZXJ3aXNlIGFjY2VwdCBzaWxlbnRseS5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgIS9eLT9cXGQrJC8udGVzdCh2YWx1ZS50cmltKCkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkICR7ZmllbGROYW1lfTogbXVzdCBiZSBhIHdob2xlIG51bWJlcmApO1xuICB9XG4gIGNvbnN0IG51bSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyB2YWx1ZSA6IHBhcnNlSW50KHZhbHVlLnRyaW0oKSwgMTApO1xuICBpZiAoIU51bWJlci5pc0ludGVnZXIobnVtKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCAke2ZpZWxkTmFtZX06IG11c3QgYmUgYSB3aG9sZSBudW1iZXJgKTtcbiAgfVxuICBpZiAobWluICE9PSB1bmRlZmluZWQgJiYgbnVtIDwgbWluKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkICR7ZmllbGROYW1lfTogbXVzdCBiZSA+PSAke21pbn1gKTtcbiAgfVxuICBpZiAobWF4ICE9PSB1bmRlZmluZWQgJiYgbnVtID4gbWF4KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkICR7ZmllbGROYW1lfTogbXVzdCBiZSA8PSAke21heH1gKTtcbiAgfVxuICByZXR1cm4gbnVtO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHNvcnQgcGFyYW1ldGVyIGZvcm1hdCAoZS5nLiwgXCJjcmVhdGVkQXQ6ZGVzY1wiKS5cbiAqIFJldHVybnMgdGhlIHZhbGlkYXRlZCBzb3J0IHN0cmluZywgb3IgdGhlIGRlZmF1bHQgaWYgaW52YWxpZC5cbiAqL1xuY29uc3QgU09SVF9QQVRURVJOID0gL15bYS16QS1aX11bYS16QS1aMC05X10qOihhc2N8ZGVzYykkLztcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU29ydCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgaWYgKCFTT1JUX1BBVFRFUk4udGVzdCh2YWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc29ydCBmb3JtYXQ6IFwiJHt2YWx1ZX1cIi4gRXhwZWN0ZWQgXCJmaWVsZDphc2NcIiBvciBcImZpZWxkOmRlc2NcIi5gKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbi8qKlxuICogUmVqZWN0IHN0cmluZ3MgY29udGFpbmluZyBzaGVsbCBtZXRhY2hhcmFjdGVycy5cbiAqIFVzZWQgdG8gc2FuaXRpemUgQ0xJIGlucHV0cyBiZWZvcmUgcGFzc2luZyB0byBzaGVsbCBjb21tYW5kcy5cbiAqL1xuY29uc3QgU0hFTExfVU5TQUZFID0gL1s7JnxgJCgpe31bXFxdPD4hI34qP1xcXFxcXG5cXHJdLztcblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFNoZWxsU2FmZShcbiAgdmFsdWU6IHN0cmluZyxcbiAgZmllbGROYW1lOiBzdHJpbmcsXG4gIG9wdHM6IHsgcmVkYWN0VmFsdWU/OiBib29sZWFuIH0gPSB7fSxcbik6IHZvaWQge1xuICBpZiAoU0hFTExfVU5TQUZFLnRlc3QodmFsdWUpKSB7XG4gICAgLy8gYHJlZGFjdFZhbHVlYCBpcyBmb3Igc2VjcmV0cyAodG9rZW5zLCBwYXNzd29yZHMpIOKAlCBuZXZlciBlY2hvIHRoZSBvZmZlbmRpbmdcbiAgICAvLyB2YWx1ZSBpbnRvIGFuIGVycm9yL2xvZyBsaW5lIHdoZW4gdGhlIGZpZWxkIGlzIHNlbnNpdGl2ZS5cbiAgICBjb25zdCBkZXRhaWwgPSBvcHRzLnJlZGFjdFZhbHVlID8gJycgOiBgOiBcIiR7dmFsdWV9XCJgO1xuICAgIHRocm93IG5ldyBFcnJvcihgJHtmaWVsZE5hbWV9IGNvbnRhaW5zIHVuc2FmZSBjaGFyYWN0ZXJzJHtkZXRhaWx9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBQT1NJWCBzaW5nbGUtcXVvdGUgYSB2YWx1ZSAoZXNjYXBpbmcgZW1iZWRkZWQgc2luZ2xlIHF1b3RlcykgZm9yIHNhZmUgc2hlbGxcbiAqIGludGVycG9sYXRpb24uIFNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGgg4oCUIGRyaWZ0IGluIGEgc2hlbGwtcXVvdGluZyBoZWxwZXIgaXNcbiAqIHNlY3VyaXR5LXJlbGV2YW50LCBzbyBib3RoIGFnZW50IG1vZHVsZXMgaW1wb3J0IHRoaXMgcmF0aGVyIHRoYW4gcmUtZGVjbGFyaW5nIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hlbGxRdW90ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAnJHt2YWx1ZS5yZXBsYWNlKC8nL2csIFwiJ1xcXFwnJ1wiKX0nYDtcbn1cblxuLyoqXG4gKiBDYW5vbmljYWwgZGVmYXVsdCBwaXBlbGluZSBuYW1lIHdoZW4gbm9uZSBpcyBnaXZlbiDigJQgTVVTVCBtaXJyb3IgcGlwZWxpbmUtY29yZSdzXG4gKiBwaXBlbGluZS1jb25maWd1cmF0aW9uLnRzIChgJHtzYW5pdGl6ZShvcmcpfS0ke3Nhbml0aXplKHByb2plY3QpfS1waXBlbGluZWAsXG4gKiBub24tYWxwaGFudW1lcmljIOKGkiAnXycsIGxvd2VyY2FzZWQpLCBzbyB0aGUgQ0xJJ3MgY3JlYXRlIGFuZCByZWdpc3RyeSBwYXRoc1xuICogZGVyaXZlIHRoZSBTQU1FIG5hbWUgdGhlIENESyBidWlsZGVyIGFjdHVhbGx5IGRlcGxveXMgKGEgbWlzbWF0Y2ggYnJlYWtzXG4gKiBTdGFydFBpcGVsaW5lRXhlY3V0aW9uIGFnYWluc3QgdGhlIHJlZ2lzdGVyZWQgbmFtZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0UGlwZWxpbmVOYW1lKG9yZ2FuaXphdGlvbjogc3RyaW5nLCBwcm9qZWN0OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBzYW5pdGl6ZSA9IChzOiBzdHJpbmcpID0+IHMucmVwbGFjZSgvW15hLXpBLVowLTldL2csICdfJykudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGAke3Nhbml0aXplKG9yZ2FuaXphdGlvbil9LSR7c2FuaXRpemUocHJvamVjdCl9LXBpcGVsaW5lYDtcbn1cblxuLyoqXG4gKiBDbG91ZEZvcm1hdGlvbiBzdGFjayBuYW1lIGZvciB0aGUgZXZlbnQtaW5nZXN0aW9uIGluZnJhLiBTaGFyZWQgc28gYHNldHVwLWV2ZW50c2BcbiAqICh3aGljaCBkZXBsb3lzIGl0KSBhbmQgYHJlZHJpdmUtZXZlbnRzYCAod2hpY2ggcmVzb2x2ZXMgdGhlIERMUS9xdWV1ZSBmcm9tIGl0KVxuICogY2FuIG5ldmVyIGRyaWZ0IGFwYXJ0LlxuICovXG5leHBvcnQgY29uc3QgRVZFTlRTX1NUQUNLX05BTUUgPSAncGlwZWxpbmUtYnVpbGRlci1ldmVudHMnO1xuIl19
@@ -37,4 +37,15 @@ export interface Config {
37
37
  /** Authentication credentials. */
38
38
  auth: AuthConfig;
39
39
  }
40
+ /**
41
+ * The narrow slice of {@link Config} the deploy/registry paths read off
42
+ * `client.getConfig()` — the pipeline endpoint + platform base URL. Named so the
43
+ * `deploy` and `create --deploy` flows share one shape instead of re-casting it.
44
+ */
45
+ export interface PlatformDeployConfig {
46
+ api: {
47
+ pipelineUrl: string;
48
+ baseUrl: string;
49
+ };
50
+ }
40
51
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,eAAe,EAAE,MAAM,CAAC;IACxB,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,eAAe,EAAE,MAAM,CAAC;IACxB,2DAA2D;IAC3D,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,wCAAwC;IACxC,GAAG,EAAE,SAAS,CAAC;IACf,kCAAkC;IAClC,IAAI,EAAE,UAAU,CAAC;CAClB"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,eAAe,EAAE,MAAM,CAAC;IACxB,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,eAAe,EAAE,MAAM,CAAC;IACxB,2DAA2D;IAC3D,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,wCAAwC;IACxC,GAAG,EAAE,SAAS,CAAC;IACf,kCAAkC;IAClC,IAAI,EAAE,UAAU,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C"}
@@ -1,4 +1,4 @@
1
1
  // Copyright 2026 Pipeline Builder Contributors
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  export {};
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUGxhdGZvcm0gQVBJIGNvbm5lY3Rpb24gc2V0dGluZ3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpQ29uZmlnIHtcbiAgLyoqIEJhc2UgVVJMIG9mIHRoZSBwbGF0Zm9ybSBBUEkgKGUuZy4sIGBodHRwczovL2FwaS5leGFtcGxlLmNvbWApLiAqL1xuICBiYXNlVXJsOiBzdHJpbmc7XG4gIC8qKiBEZWZhdWx0IHJlcXVlc3QgdGltZW91dCBpbiBtaWxsaXNlY29uZHMuICovXG4gIHRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKiBFeHRlbmRlZCB0aW1lb3V0IGZvciBwbHVnaW4gdXBsb2FkIHJlcXVlc3RzIChsYXJnZSBmaWxlcykuICovXG4gIHVwbG9hZFRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKiBVUkwgcGF0aCBmb3Igc2luZ2xlLXBpcGVsaW5lIENSVUQgb3BlcmF0aW9ucy4gKi9cbiAgcGlwZWxpbmVVcmw6IHN0cmluZztcbiAgLyoqIFVSTCBwYXRoIGZvciBwaXBlbGluZSBsaXN0L3F1ZXJ5IG9wZXJhdGlvbnMuICovXG4gIHBpcGVsaW5lTGlzdFVybDogc3RyaW5nO1xuICAvKiogVVJMIHBhdGggZm9yIHNpbmdsZS1wbHVnaW4gQ1JVRCBvcGVyYXRpb25zLiAqL1xuICBwbHVnaW5Vcmw6IHN0cmluZztcbiAgLyoqIFVSTCBwYXRoIGZvciBwbHVnaW4gbGlzdC9xdWVyeSBvcGVyYXRpb25zLiAqL1xuICBwbHVnaW5MaXN0VXJsOiBzdHJpbmc7XG4gIC8qKiBVUkwgcGF0aCBmb3IgcGx1Z2luIHVwbG9hZCAobXVsdGlwYXJ0IFBPU1QpLiAqL1xuICBwbHVnaW5VcGxvYWRVcmw6IHN0cmluZztcbiAgLyoqIFdoZW4gYGZhbHNlYCwgZGlzYWJsZXMgVExTIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbi4gKi9cbiAgcmVqZWN0VW5hdXRob3JpemVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscyBmb3IgcGxhdGZvcm0gQVBJIGFjY2Vzcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRoQ29uZmlnIHtcbiAgLyoqIEpXVCBiZWFyZXIgdG9rZW4gb2J0YWluZWQgZnJvbSB0aGUgcGxhdGZvcm0uICovXG4gIHRva2VuOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29tcGxldGUgQ0xJIGFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gY29tYmluaW5nIEFQSSBhbmQgYXV0aCBzZXR0aW5ncy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25maWcge1xuICAvKiogUGxhdGZvcm0gQVBJIGNvbm5lY3Rpb24gc2V0dGluZ3MuICovXG4gIGFwaTogQXBpQ29uZmlnO1xuICAvKiogQXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMuICovXG4gIGF1dGg6IEF1dGhDb25maWc7XG59XG4iXX0=
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUGxhdGZvcm0gQVBJIGNvbm5lY3Rpb24gc2V0dGluZ3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpQ29uZmlnIHtcbiAgLyoqIEJhc2UgVVJMIG9mIHRoZSBwbGF0Zm9ybSBBUEkgKGUuZy4sIGBodHRwczovL2FwaS5leGFtcGxlLmNvbWApLiAqL1xuICBiYXNlVXJsOiBzdHJpbmc7XG4gIC8qKiBEZWZhdWx0IHJlcXVlc3QgdGltZW91dCBpbiBtaWxsaXNlY29uZHMuICovXG4gIHRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKiBFeHRlbmRlZCB0aW1lb3V0IGZvciBwbHVnaW4gdXBsb2FkIHJlcXVlc3RzIChsYXJnZSBmaWxlcykuICovXG4gIHVwbG9hZFRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKiBVUkwgcGF0aCBmb3Igc2luZ2xlLXBpcGVsaW5lIENSVUQgb3BlcmF0aW9ucy4gKi9cbiAgcGlwZWxpbmVVcmw6IHN0cmluZztcbiAgLyoqIFVSTCBwYXRoIGZvciBwaXBlbGluZSBsaXN0L3F1ZXJ5IG9wZXJhdGlvbnMuICovXG4gIHBpcGVsaW5lTGlzdFVybDogc3RyaW5nO1xuICAvKiogVVJMIHBhdGggZm9yIHNpbmdsZS1wbHVnaW4gQ1JVRCBvcGVyYXRpb25zLiAqL1xuICBwbHVnaW5Vcmw6IHN0cmluZztcbiAgLyoqIFVSTCBwYXRoIGZvciBwbHVnaW4gbGlzdC9xdWVyeSBvcGVyYXRpb25zLiAqL1xuICBwbHVnaW5MaXN0VXJsOiBzdHJpbmc7XG4gIC8qKiBVUkwgcGF0aCBmb3IgcGx1Z2luIHVwbG9hZCAobXVsdGlwYXJ0IFBPU1QpLiAqL1xuICBwbHVnaW5VcGxvYWRVcmw6IHN0cmluZztcbiAgLyoqIFdoZW4gYGZhbHNlYCwgZGlzYWJsZXMgVExTIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbi4gKi9cbiAgcmVqZWN0VW5hdXRob3JpemVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscyBmb3IgcGxhdGZvcm0gQVBJIGFjY2Vzcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRoQ29uZmlnIHtcbiAgLyoqIEpXVCBiZWFyZXIgdG9rZW4gb2J0YWluZWQgZnJvbSB0aGUgcGxhdGZvcm0uICovXG4gIHRva2VuOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29tcGxldGUgQ0xJIGFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gY29tYmluaW5nIEFQSSBhbmQgYXV0aCBzZXR0aW5ncy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25maWcge1xuICAvKiogUGxhdGZvcm0gQVBJIGNvbm5lY3Rpb24gc2V0dGluZ3MuICovXG4gIGFwaTogQXBpQ29uZmlnO1xuICAvKiogQXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMuICovXG4gIGF1dGg6IEF1dGhDb25maWc7XG59XG5cbi8qKlxuICogVGhlIG5hcnJvdyBzbGljZSBvZiB7QGxpbmsgQ29uZmlnfSB0aGUgZGVwbG95L3JlZ2lzdHJ5IHBhdGhzIHJlYWQgb2ZmXG4gKiBgY2xpZW50LmdldENvbmZpZygpYCDigJQgdGhlIHBpcGVsaW5lIGVuZHBvaW50ICsgcGxhdGZvcm0gYmFzZSBVUkwuIE5hbWVkIHNvIHRoZVxuICogYGRlcGxveWAgYW5kIGBjcmVhdGUgLS1kZXBsb3lgIGZsb3dzIHNoYXJlIG9uZSBzaGFwZSBpbnN0ZWFkIG9mIHJlLWNhc3RpbmcgaXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxhdGZvcm1EZXBsb3lDb25maWcge1xuICBhcGk6IHsgcGlwZWxpbmVVcmw6IHN0cmluZzsgYmFzZVVybDogc3RyaW5nIH07XG59XG4iXX0=
@@ -0,0 +1,38 @@
1
+ import { type Pipeline } from '../types/index.js';
2
+ /** Minimal platform client shape needed to register a deployed ARN. */
3
+ interface RegistryClient {
4
+ post: (url: string, body: unknown) => Promise<unknown>;
5
+ }
6
+ /** Inputs for {@link runDeploy} — an already-resolved pipeline + props. */
7
+ export interface RunDeployInput {
8
+ /** The pipeline being deployed (id/orgId/name/project/org drive registration). */
9
+ pipeline: Pick<Pipeline, 'id' | 'orgId' | 'pipelineName' | 'project' | 'organization'>;
10
+ /** Fully-resolved props (plugins pre-resolved, registry host baked, ids included). */
11
+ propsWithIds: Record<string, unknown>;
12
+ /** AWS profile / region for the deploy + registry payload. */
13
+ profile?: string;
14
+ region?: string;
15
+ /** `cdk deploy --require-approval` level and `--output` dir. */
16
+ requireApproval: string;
17
+ output: string;
18
+ debug?: boolean;
19
+ /** For the command header / summary line. */
20
+ executionId: string;
21
+ /** Registry callback — omit (e.g. --local-spec) to skip ARN registration. */
22
+ platformClient?: RegistryClient;
23
+ platformPipelineUrl?: string;
24
+ platformBaseUrl?: string;
25
+ }
26
+ /**
27
+ * Run `cdk deploy` for an already-resolved pipeline, then register the deployed
28
+ * ARN for event reporting (best-effort). Shared by `pipeline deploy` and
29
+ * `pipeline create --deploy` so the two entry points never drift.
30
+ *
31
+ * THROWS on CDK failure (the caller maps it to a non-zero exit and, for the
32
+ * create path, keeps the created record and prints the `deploy --id` retry).
33
+ * Registry failures are NON-fatal — they're queued to a pending-intent file for
34
+ * `pipeline register` to drain later.
35
+ */
36
+ export declare function runDeploy(input: RunDeployInput): Promise<void>;
37
+ export {};
38
+ //# sourceMappingURL=deploy-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-runner.d.ts","sourceRoot":"","sources":["../../src/utils/deploy-runner.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AASlD,uEAAuE;AACvE,UAAU,cAAc;IACtB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxD;AAED,2EAA2E;AAC3E,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,OAAO,GAAG,cAAc,GAAG,SAAS,GAAG,cAAc,CAAC,CAAC;IACvF,sFAAsF;IACtF,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA8FpE"}
@@ -0,0 +1,112 @@
1
+ // Copyright 2026 Pipeline Builder Contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import * as path from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import pico from 'picocolors';
6
+ import { executeCdkShellCommand, resolveBoilerplatePath } from './cdk-utils.js';
7
+ import { ensureOutputDirectory, printInfo, printKeyValue, printSection, printSuccess, printWarning } from './output-utils.js';
8
+ import { buildRegistryPayload, writePendingIntent } from './registry.js';
9
+ import { assertShellSafe, shellQuote } from '../config/cli.constants.js';
10
+ import {} from '../types/index.js';
11
+ const { bold, cyan, dim } = pico;
12
+ // ESM has no __dirname; derive it from this module's URL. `resolveBoilerplatePath`
13
+ // returns `../boilerplate.js`, which is the same target whether resolved from
14
+ // src/commands or src/utils (both are siblings under src/), so this stays correct.
15
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
16
+ /**
17
+ * Run `cdk deploy` for an already-resolved pipeline, then register the deployed
18
+ * ARN for event reporting (best-effort). Shared by `pipeline deploy` and
19
+ * `pipeline create --deploy` so the two entry points never drift.
20
+ *
21
+ * THROWS on CDK failure (the caller maps it to a non-zero exit and, for the
22
+ * create path, keeps the created record and prints the `deploy --id` retry).
23
+ * Registry failures are NON-fatal — they're queued to a pending-intent file for
24
+ * `pipeline register` to drain later.
25
+ */
26
+ export async function runDeploy(input) {
27
+ const { pipeline, propsWithIds, profile, region, requireApproval, output, debug, executionId } = input;
28
+ const encoded = Buffer.from(JSON.stringify(propsWithIds), 'utf-8').toString('base64');
29
+ printInfo('Preparing output directory', { path: output });
30
+ ensureOutputDirectory(output);
31
+ // Validate EVERY input that flows into the shell (interpolated unquoted below).
32
+ if (profile)
33
+ assertShellSafe(profile, 'profile');
34
+ assertShellSafe(output, 'output');
35
+ assertShellSafe(requireApproval, 'require-approval');
36
+ // `assertShellSafe` rejects shell metacharacters but ALLOWS spaces, so quote
37
+ // every interpolated value (a path/profile with a space would otherwise split
38
+ // into extra cdk args — matching how the agent path quotes them).
39
+ const scriptPath = resolveBoilerplatePath(__dirname);
40
+ const profileArg = profile ? `--profile=${shellQuote(profile)}` : '';
41
+ const outputArg = `--output=${shellQuote(output)}`;
42
+ const appArg = `--app="node ${scriptPath}"`;
43
+ const command = `cdk deploy ${profileArg} --require-approval=${shellQuote(requireApproval)} ${outputArg} --notices=false ${appArg}`;
44
+ printSection('CDK Execution');
45
+ console.log(cyan(bold('Command:')), dim(command.split(' --')[0] + ' ...'));
46
+ console.log('');
47
+ // Forward the resolved platform base URL into the CDK synth subprocess (it reads
48
+ // only process.env) for the PluginLookup Lambda endpoint + registry pull-host
49
+ // fallback. Absent in local-spec mode.
50
+ const cdkEnv = { PIPELINE_PROPS: encoded };
51
+ if (input.platformBaseUrl)
52
+ cdkEnv.PLATFORM_BASE_URL = input.platformBaseUrl;
53
+ // Throws on failure — surfaced by the caller as a non-zero exit.
54
+ const result = executeCdkShellCommand(command, { debug, showOutput: true, env: cdkEnv });
55
+ console.log('');
56
+ printSection('Deployment Complete');
57
+ printKeyValue({
58
+ 'Execution ID': executionId,
59
+ 'Duration': `${result.duration}ms`,
60
+ 'Output Directory': output,
61
+ 'Status': '✓ Success',
62
+ });
63
+ // Register the pipeline ARN for event reporting (non-blocking). Skipped when
64
+ // there's no platform client (local-spec) or no orgId to scope it to.
65
+ if (!input.platformClient || !input.platformPipelineUrl) {
66
+ printInfo('Skipping pipeline registry (no platform client)');
67
+ return;
68
+ }
69
+ if (!pipeline.orgId) {
70
+ printWarning('Pipeline has no orgId — skipping registration');
71
+ return;
72
+ }
73
+ // Build the payload up-front so a POST failure can persist the SAME payload as a
74
+ // pending intent for `pipeline register` to drain later (STS lookups aren't retried).
75
+ let payload;
76
+ try {
77
+ payload = await buildRegistryPayload({
78
+ id: pipeline.id,
79
+ orgId: pipeline.orgId,
80
+ pipelineName: pipeline.pipelineName,
81
+ project: pipeline.project,
82
+ organization: pipeline.organization,
83
+ }, region);
84
+ }
85
+ catch (buildError) {
86
+ printWarning('Could not build registry payload — skipping registration', {
87
+ error: buildError instanceof Error ? buildError.message : String(buildError),
88
+ });
89
+ return;
90
+ }
91
+ try {
92
+ await input.platformClient.post(`${input.platformPipelineUrl}/registry`, payload);
93
+ printSuccess('Pipeline registered for event reporting', { pipelineId: payload.pipelineId });
94
+ }
95
+ catch (regError) {
96
+ try {
97
+ const intentPath = await writePendingIntent(payload);
98
+ printWarning('Pipeline registry update failed; queued for retry', {
99
+ error: regError instanceof Error ? regError.message : String(regError),
100
+ retry: 'pipeline-manager pipeline register',
101
+ intent: intentPath,
102
+ });
103
+ }
104
+ catch (writeErr) {
105
+ printWarning('Pipeline registry update failed (retry queue also failed)', {
106
+ error: regError instanceof Error ? regError.message : String(regError),
107
+ queueError: writeErr instanceof Error ? writeErr.message : String(writeErr),
108
+ });
109
+ }
110
+ }
111
+ }
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LXJ1bm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kZXBsb3ktcnVubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLElBQUksTUFBTSxZQUFZLENBQUM7QUFDOUIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5SCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RSxPQUFPLEVBQWlCLE1BQU0sbUJBQW1CLENBQUM7QUFFbEQsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBRWpDLG1GQUFtRjtBQUNuRiw4RUFBOEU7QUFDOUUsbUZBQW1GO0FBQ25GLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUE0Qi9EOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsU0FBUyxDQUFDLEtBQXFCO0lBQ25ELE1BQU0sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEdBQUcs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Q3hFLEtBQUssRUFBRSxRQUFRLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO2dCQUN0RSxVQUFVLEVBQUUsUUFBUSxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQzthQUM1RSxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCBwaWNvIGZyb20gJ3BpY29jb2xvcnMnO1xuaW1wb3J0IHsgZXhlY3V0ZUNka1NoZWxsQ29tbWFuZCwgcmVzb2x2ZUJvaWxlcnBsYXRlUGF0aCB9IGZyb20gJy4vY2RrLXV0aWxzLmpzJztcbmltcG9ydCB7IGVuc3VyZU91dHB1dERpcmVjdG9yeSwgcHJpbnRJbmZvLCBwcmludEtleVZhbHVlLCBwcmludFNlY3Rpb24sIHByaW50U3VjY2VzcywgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgYnVpbGRSZWdpc3RyeVBheWxvYWQsIHdyaXRlUGVuZGluZ0ludGVudCB9IGZyb20gJy4vcmVnaXN0cnkuanMnO1xuaW1wb3J0IHsgYXNzZXJ0U2hlbGxTYWZlLCBzaGVsbFF1b3RlIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgdHlwZSBQaXBlbGluZSB9IGZyb20gJy4uL3R5cGVzL2luZGV4LmpzJztcblxuY29uc3QgeyBib2xkLCBjeWFuLCBkaW0gfSA9IHBpY287XG5cbi8vIEVTTSBoYXMgbm8gX19kaXJuYW1lOyBkZXJpdmUgaXQgZnJvbSB0aGlzIG1vZHVsZSdzIFVSTC4gYHJlc29sdmVCb2lsZXJwbGF0ZVBhdGhgXG4vLyByZXR1cm5zIGAuLi9ib2lsZXJwbGF0ZS5qc2AsIHdoaWNoIGlzIHRoZSBzYW1lIHRhcmdldCB3aGV0aGVyIHJlc29sdmVkIGZyb21cbi8vIHNyYy9jb21tYW5kcyBvciBzcmMvdXRpbHMgKGJvdGggYXJlIHNpYmxpbmdzIHVuZGVyIHNyYy8pLCBzbyB0aGlzIHN0YXlzIGNvcnJlY3QuXG5jb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKTtcblxuLyoqIE1pbmltYWwgcGxhdGZvcm0gY2xpZW50IHNoYXBlIG5lZWRlZCB0byByZWdpc3RlciBhIGRlcGxveWVkIEFSTi4gKi9cbmludGVyZmFjZSBSZWdpc3RyeUNsaWVudCB7XG4gIHBvc3Q6ICh1cmw6IHN0cmluZywgYm9keTogdW5rbm93bikgPT4gUHJvbWlzZTx1bmtub3duPjtcbn1cblxuLyoqIElucHV0cyBmb3Ige0BsaW5rIHJ1bkRlcGxveX0g4oCUIGFuIGFscmVhZHktcmVzb2x2ZWQgcGlwZWxpbmUgKyBwcm9wcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVuRGVwbG95SW5wdXQge1xuICAvKiogVGhlIHBpcGVsaW5lIGJlaW5nIGRlcGxveWVkIChpZC9vcmdJZC9uYW1lL3Byb2plY3Qvb3JnIGRyaXZlIHJlZ2lzdHJhdGlvbikuICovXG4gIHBpcGVsaW5lOiBQaWNrPFBpcGVsaW5lLCAnaWQnIHwgJ29yZ0lkJyB8ICdwaXBlbGluZU5hbWUnIHwgJ3Byb2plY3QnIHwgJ29yZ2FuaXphdGlvbic+O1xuICAvKiogRnVsbHktcmVzb2x2ZWQgcHJvcHMgKHBsdWdpbnMgcHJlLXJlc29sdmVkLCByZWdpc3RyeSBob3N0IGJha2VkLCBpZHMgaW5jbHVkZWQpLiAqL1xuICBwcm9wc1dpdGhJZHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAvKiogQVdTIHByb2ZpbGUgLyByZWdpb24gZm9yIHRoZSBkZXBsb3kgKyByZWdpc3RyeSBwYXlsb2FkLiAqL1xuICBwcm9maWxlPzogc3RyaW5nO1xuICByZWdpb24/OiBzdHJpbmc7XG4gIC8qKiBgY2RrIGRlcGxveSAtLXJlcXVpcmUtYXBwcm92YWxgIGxldmVsIGFuZCBgLS1vdXRwdXRgIGRpci4gKi9cbiAgcmVxdWlyZUFwcHJvdmFsOiBzdHJpbmc7XG4gIG91dHB1dDogc3RyaW5nO1xuICBkZWJ1Zz86IGJvb2xlYW47XG4gIC8qKiBGb3IgdGhlIGNvbW1hbmQgaGVhZGVyIC8gc3VtbWFyeSBsaW5lLiAqL1xuICBleGVjdXRpb25JZDogc3RyaW5nO1xuICAvKiogUmVnaXN0cnkgY2FsbGJhY2sg4oCUIG9taXQgKGUuZy4gLS1sb2NhbC1zcGVjKSB0byBza2lwIEFSTiByZWdpc3RyYXRpb24uICovXG4gIHBsYXRmb3JtQ2xpZW50PzogUmVnaXN0cnlDbGllbnQ7XG4gIHBsYXRmb3JtUGlwZWxpbmVVcmw/OiBzdHJpbmc7XG4gIHBsYXRmb3JtQmFzZVVybD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSdW4gYGNkayBkZXBsb3lgIGZvciBhbiBhbHJlYWR5LXJlc29sdmVkIHBpcGVsaW5lLCB0aGVuIHJlZ2lzdGVyIHRoZSBkZXBsb3llZFxuICogQVJOIGZvciBldmVudCByZXBvcnRpbmcgKGJlc3QtZWZmb3J0KS4gU2hhcmVkIGJ5IGBwaXBlbGluZSBkZXBsb3lgIGFuZFxuICogYHBpcGVsaW5lIGNyZWF0ZSAtLWRlcGxveWAgc28gdGhlIHR3byBlbnRyeSBwb2ludHMgbmV2ZXIgZHJpZnQuXG4gKlxuICogVEhST1dTIG9uIENESyBmYWlsdXJlICh0aGUgY2FsbGVyIG1hcHMgaXQgdG8gYSBub24temVybyBleGl0IGFuZCwgZm9yIHRoZVxuICogY3JlYXRlIHBhdGgsIGtlZXBzIHRoZSBjcmVhdGVkIHJlY29yZCBhbmQgcHJpbnRzIHRoZSBgZGVwbG95IC0taWRgIHJldHJ5KS5cbiAqIFJlZ2lzdHJ5IGZhaWx1cmVzIGFyZSBOT04tZmF0YWwg4oCUIHRoZXkncmUgcXVldWVkIHRvIGEgcGVuZGluZy1pbnRlbnQgZmlsZSBmb3JcbiAqIGBwaXBlbGluZSByZWdpc3RlcmAgdG8gZHJhaW4gbGF0ZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5EZXBsb3koaW5wdXQ6IFJ1bkRlcGxveUlucHV0KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgcGlwZWxpbmUsIHByb3BzV2l0aElkcywgcHJvZmlsZSwgcmVnaW9uLCByZXF1aXJlQXBwcm92YWwsIG91dHB1dCwgZGVidWcsIGV4ZWN1dGlvbklkIH0gPSBpbnB1dDtcblxuICBjb25zdCBlbmNvZGVkID0gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkocHJvcHNXaXRoSWRzKSwgJ3V0Zi04JykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuXG4gIHByaW50SW5mbygnUHJlcGFyaW5nIG91dHB1dCBkaXJlY3RvcnknLCB7IHBhdGg6IG91dHB1dCB9KTtcbiAgZW5zdXJlT3V0cHV0RGlyZWN0b3J5KG91dHB1dCk7XG5cbiAgLy8gVmFsaWRhdGUgRVZFUlkgaW5wdXQgdGhhdCBmbG93cyBpbnRvIHRoZSBzaGVsbCAoaW50ZXJwb2xhdGVkIHVucXVvdGVkIGJlbG93KS5cbiAgaWYgKHByb2ZpbGUpIGFzc2VydFNoZWxsU2FmZShwcm9maWxlLCAncHJvZmlsZScpO1xuICBhc3NlcnRTaGVsbFNhZmUob3V0cHV0LCAnb3V0cHV0Jyk7XG4gIGFzc2VydFNoZWxsU2FmZShyZXF1aXJlQXBwcm92YWwsICdyZXF1aXJlLWFwcHJvdmFsJyk7XG5cbiAgLy8gYGFzc2VydFNoZWxsU2FmZWAgcmVqZWN0cyBzaGVsbCBtZXRhY2hhcmFjdGVycyBidXQgQUxMT1dTIHNwYWNlcywgc28gcXVvdGVcbiAgLy8gZXZlcnkgaW50ZXJwb2xhdGVkIHZhbHVlIChhIHBhdGgvcHJvZmlsZSB3aXRoIGEgc3BhY2Ugd291bGQgb3RoZXJ3aXNlIHNwbGl0XG4gIC8vIGludG8gZXh0cmEgY2RrIGFyZ3Mg4oCUIG1hdGNoaW5nIGhvdyB0aGUgYWdlbnQgcGF0aCBxdW90ZXMgdGhlbSkuXG4gIGNvbnN0IHNjcmlwdFBhdGggPSByZXNvbHZlQm9pbGVycGxhdGVQYXRoKF9fZGlybmFtZSk7XG4gIGNvbnN0IHByb2ZpbGVBcmcgPSBwcm9maWxlID8gYC0tcHJvZmlsZT0ke3NoZWxsUXVvdGUocHJvZmlsZSl9YCA6ICcnO1xuICBjb25zdCBvdXRwdXRBcmcgPSBgLS1vdXRwdXQ9JHtzaGVsbFF1b3RlKG91dHB1dCl9YDtcbiAgY29uc3QgYXBwQXJnID0gYC0tYXBwPVwibm9kZSAke3NjcmlwdFBhdGh9XCJgO1xuICBjb25zdCBjb21tYW5kID0gYGNkayBkZXBsb3kgJHtwcm9maWxlQXJnfSAtLXJlcXVpcmUtYXBwcm92YWw9JHtzaGVsbFF1b3RlKHJlcXVpcmVBcHByb3ZhbCl9ICR7b3V0cHV0QXJnfSAtLW5vdGljZXM9ZmFsc2UgJHthcHBBcmd9YDtcblxuICBwcmludFNlY3Rpb24oJ0NESyBFeGVjdXRpb24nKTtcbiAgY29uc29sZS5sb2coY3lhbihib2xkKCdDb21tYW5kOicpKSwgZGltKGNvbW1hbmQuc3BsaXQoJyAtLScpWzBdICsgJyAuLi4nKSk7XG4gIGNvbnNvbGUubG9nKCcnKTtcblxuICAvLyBGb3J3YXJkIHRoZSByZXNvbHZlZCBwbGF0Zm9ybSBiYXNlIFVSTCBpbnRvIHRoZSBDREsgc3ludGggc3VicHJvY2VzcyAoaXQgcmVhZHNcbiAgLy8gb25seSBwcm9jZXNzLmVudikgZm9yIHRoZSBQbHVnaW5Mb29rdXAgTGFtYmRhIGVuZHBvaW50ICsgcmVnaXN0cnkgcHVsbC1ob3N0XG4gIC8vIGZhbGxiYWNrLiBBYnNlbnQgaW4gbG9jYWwtc3BlYyBtb2RlLlxuICBjb25zdCBjZGtFbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7IFBJUEVMSU5FX1BST1BTOiBlbmNvZGVkIH07XG4gIGlmIChpbnB1dC5wbGF0Zm9ybUJhc2VVcmwpIGNka0Vudi5QTEFURk9STV9CQVNFX1VSTCA9IGlucHV0LnBsYXRmb3JtQmFzZVVybDtcblxuICAvLyBUaHJvd3Mgb24gZmFpbHVyZSDigJQgc3VyZmFjZWQgYnkgdGhlIGNhbGxlciBhcyBhIG5vbi16ZXJvIGV4aXQuXG4gIGNvbnN0IHJlc3VsdCA9IGV4ZWN1dGVDZGtTaGVsbENvbW1hbmQoY29tbWFuZCwgeyBkZWJ1Zywgc2hvd091dHB1dDogdHJ1ZSwgZW52OiBjZGtFbnYgfSk7XG5cbiAgY29uc29sZS5sb2coJycpO1xuICBwcmludFNlY3Rpb24oJ0RlcGxveW1lbnQgQ29tcGxldGUnKTtcbiAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgJ0V4ZWN1dGlvbiBJRCc6IGV4ZWN1dGlvbklkLFxuICAgICdEdXJhdGlvbic6IGAke3Jlc3VsdC5kdXJhdGlvbn1tc2AsXG4gICAgJ091dHB1dCBEaXJlY3RvcnknOiBvdXRwdXQsXG4gICAgJ1N0YXR1cyc6ICfinJMgU3VjY2VzcycsXG4gIH0pO1xuXG4gIC8vIFJlZ2lzdGVyIHRoZSBwaXBlbGluZSBBUk4gZm9yIGV2ZW50IHJlcG9ydGluZyAobm9uLWJsb2NraW5nKS4gU2tpcHBlZCB3aGVuXG4gIC8vIHRoZXJlJ3Mgbm8gcGxhdGZvcm0gY2xpZW50IChsb2NhbC1zcGVjKSBvciBubyBvcmdJZCB0byBzY29wZSBpdCB0by5cbiAgaWYgKCFpbnB1dC5wbGF0Zm9ybUNsaWVudCB8fCAhaW5wdXQucGxhdGZvcm1QaXBlbGluZVVybCkge1xuICAgIHByaW50SW5mbygnU2tpcHBpbmcgcGlwZWxpbmUgcmVnaXN0cnkgKG5vIHBsYXRmb3JtIGNsaWVudCknKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKCFwaXBlbGluZS5vcmdJZCkge1xuICAgIHByaW50V2FybmluZygnUGlwZWxpbmUgaGFzIG5vIG9yZ0lkIOKAlCBza2lwcGluZyByZWdpc3RyYXRpb24nKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBCdWlsZCB0aGUgcGF5bG9hZCB1cC1mcm9udCBzbyBhIFBPU1QgZmFpbHVyZSBjYW4gcGVyc2lzdCB0aGUgU0FNRSBwYXlsb2FkIGFzIGFcbiAgLy8gcGVuZGluZyBpbnRlbnQgZm9yIGBwaXBlbGluZSByZWdpc3RlcmAgdG8gZHJhaW4gbGF0ZXIgKFNUUyBsb29rdXBzIGFyZW4ndCByZXRyaWVkKS5cbiAgbGV0IHBheWxvYWQ7XG4gIHRyeSB7XG4gICAgcGF5bG9hZCA9IGF3YWl0IGJ1aWxkUmVnaXN0cnlQYXlsb2FkKFxuICAgICAge1xuICAgICAgICBpZDogcGlwZWxpbmUuaWQsXG4gICAgICAgIG9yZ0lkOiBwaXBlbGluZS5vcmdJZCxcbiAgICAgICAgcGlwZWxpbmVOYW1lOiBwaXBlbGluZS5waXBlbGluZU5hbWUsXG4gICAgICAgIHByb2plY3Q6IHBpcGVsaW5lLnByb2plY3QsXG4gICAgICAgIG9yZ2FuaXphdGlvbjogcGlwZWxpbmUub3JnYW5pemF0aW9uLFxuICAgICAgfSxcbiAgICAgIHJlZ2lvbixcbiAgICApO1xuICB9IGNhdGNoIChidWlsZEVycm9yKSB7XG4gICAgcHJpbnRXYXJuaW5nKCdDb3VsZCBub3QgYnVpbGQgcmVnaXN0cnkgcGF5bG9hZCDigJQgc2tpcHBpbmcgcmVnaXN0cmF0aW9uJywge1xuICAgICAgZXJyb3I6IGJ1aWxkRXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGJ1aWxkRXJyb3IubWVzc2FnZSA6IFN0cmluZyhidWlsZEVycm9yKSxcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IGlucHV0LnBsYXRmb3JtQ2xpZW50LnBvc3QoYCR7aW5wdXQucGxhdGZvcm1QaXBlbGluZVVybH0vcmVnaXN0cnlgLCBwYXlsb2FkKTtcbiAgICBwcmludFN1Y2Nlc3MoJ1BpcGVsaW5lIHJlZ2lzdGVyZWQgZm9yIGV2ZW50IHJlcG9ydGluZycsIHsgcGlwZWxpbmVJZDogcGF5bG9hZC5waXBlbGluZUlkIH0pO1xuICB9IGNhdGNoIChyZWdFcnJvcikge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBpbnRlbnRQYXRoID0gYXdhaXQgd3JpdGVQZW5kaW5nSW50ZW50KHBheWxvYWQpO1xuICAgICAgcHJpbnRXYXJuaW5nKCdQaXBlbGluZSByZWdpc3RyeSB1cGRhdGUgZmFpbGVkOyBxdWV1ZWQgZm9yIHJldHJ5Jywge1xuICAgICAgICBlcnJvcjogcmVnRXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IHJlZ0Vycm9yLm1lc3NhZ2UgOiBTdHJpbmcocmVnRXJyb3IpLFxuICAgICAgICByZXRyeTogJ3BpcGVsaW5lLW1hbmFnZXIgcGlwZWxpbmUgcmVnaXN0ZXInLFxuICAgICAgICBpbnRlbnQ6IGludGVudFBhdGgsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoICh3cml0ZUVycikge1xuICAgICAgcHJpbnRXYXJuaW5nKCdQaXBlbGluZSByZWdpc3RyeSB1cGRhdGUgZmFpbGVkIChyZXRyeSBxdWV1ZSBhbHNvIGZhaWxlZCknLCB7XG4gICAgICAgIGVycm9yOiByZWdFcnJvciBpbnN0YW5jZW9mIEVycm9yID8gcmVnRXJyb3IubWVzc2FnZSA6IFN0cmluZyhyZWdFcnJvciksXG4gICAgICAgIHF1ZXVlRXJyb3I6IHdyaXRlRXJyIGluc3RhbmNlb2YgRXJyb3IgPyB3cml0ZUVyci5tZXNzYWdlIDogU3RyaW5nKHdyaXRlRXJyKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../src/utils/error-handler.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,WAAW,EACX,KAAK,SAAS,EACd,KAAK,mBAAmB,EAEzB,MAAM,mBAAmB,CAAC;AAK3B,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B;;GAEG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,OAAO,EACZ,IAAI,GAAE,SAA+B,EACrC,OAAO,GAAE,mBAAwB,GAChC,KAAK,CA0GP;AAID;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IAG/B,KAAK,CAAC,EAAE,MAAM;IACd,KAAK,CAAC,EAAE,OAAO;IACf,IAAI,CAAC,EAAE,MAAM;IACb,QAAQ,CAAC,EAAE,MAAM;IAL1B,YACE,OAAO,EAAE,MAAM,EACR,KAAK,CAAC,EAAE,MAAM,YAAA,EACd,KAAK,CAAC,EAAE,OAAO,EACf,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,QAAQ,CAAC,EAAE,MAAM,YAAA,EAKzB;CACF;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;IAG5B,GAAG,CAAC,EAAE,MAAM;IACZ,KAAK,CAAC,EAAE,KAAK;IACb,OAAO,CAAC,EAAE,MAAM;IAChB,WAAW,EAAE,OAAO;IACpB,gBAAgB,EAAE,OAAO;IANlC,YACE,OAAO,EAAE,MAAM,EACR,GAAG,CAAC,EAAE,MAAM,YAAA,EACZ,KAAK,CAAC,EAAE,KAAK,YAAA,EACb,OAAO,CAAC,EAAE,MAAM,YAAA,EAChB,WAAW,GAAE,OAAc,EAC3B,gBAAgB,GAAE,OAAe,EAKzC;CACF"}
1
+ {"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../src/utils/error-handler.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,WAAW,EACX,KAAK,SAAS,EACd,KAAK,mBAAmB,EAEzB,MAAM,mBAAmB,CAAC;AAK3B,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B;;GAEG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,OAAO,EACZ,IAAI,GAAE,SAA+B,EACrC,OAAO,GAAE,mBAAwB,GAChC,KAAK,CAiHP;AAID;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IAG/B,KAAK,CAAC,EAAE,MAAM;IACd,KAAK,CAAC,EAAE,OAAO;IACf,IAAI,CAAC,EAAE,MAAM;IACb,QAAQ,CAAC,EAAE,MAAM;IAL1B,YACE,OAAO,EAAE,MAAM,EACR,KAAK,CAAC,EAAE,MAAM,YAAA,EACd,KAAK,CAAC,EAAE,OAAO,EACf,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,QAAQ,CAAC,EAAE,MAAM,YAAA,EAKzB;CACF;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;IAG5B,GAAG,CAAC,EAAE,MAAM;IACZ,KAAK,CAAC,EAAE,KAAK;IACb,OAAO,CAAC,EAAE,MAAM;IAChB,WAAW,EAAE,OAAO;IACpB,gBAAgB,EAAE,OAAO;IANlC,YACE,OAAO,EAAE,MAAM,EACR,GAAG,CAAC,EAAE,MAAM,YAAA,EACZ,KAAK,CAAC,EAAE,KAAK,YAAA,EACb,OAAO,CAAC,EAAE,MAAM,YAAA,EAChB,WAAW,GAAE,OAAc,EAC3B,gBAAgB,GAAE,OAAe,EAKzC;CACF"}
@@ -11,6 +11,12 @@ export { ERROR_CODES };
11
11
  */
12
12
  export function handleError(err, code = ERROR_CODES.GENERAL, options = {}) {
13
13
  const { debug = false, exit = true, logToConsole = true, context, correlationId = generateExecutionId(), } = options;
14
+ // Derive the canonical exit code from the ACTUAL error (see resolveExitCode),
15
+ // falling back to the caller's `code` for anything unclassifiable. This is what
16
+ // makes every command emit the SAME exit code for the same class of failure,
17
+ // rather than a blanket API_REQUEST/GENERAL. Used for display, the suggestion,
18
+ // and the process exit below.
19
+ const resolvedCode = resolveExitCode(err, code);
14
20
  if (logToConsole) {
15
21
  const divider = '─'.repeat(process.stdout.columns || 80);
16
22
  const errorId = `ERR-${correlationId}`;
@@ -66,7 +72,7 @@ export function handleError(err, code = ERROR_CODES.GENERAL, options = {}) {
66
72
  console.error(dim(stderr));
67
73
  }
68
74
  }
69
- console.error(red('Code:'), getErrorCodeName(code));
75
+ console.error(red('Code:'), getErrorCodeName(resolvedCode));
70
76
  console.error(dim('Error ID:'), dim(errorId));
71
77
  if (context && Object.keys(context).length > 0) {
72
78
  console.error('');
@@ -83,22 +89,22 @@ export function handleError(err, code = ERROR_CODES.GENERAL, options = {}) {
83
89
  }
84
90
  else {
85
91
  console.error(red('Error:'), String(err));
86
- console.error(red('Code:'), getErrorCodeName(code));
92
+ console.error(red('Code:'), getErrorCodeName(resolvedCode));
87
93
  console.error(dim('Error ID:'), dim(errorId));
88
94
  }
89
95
  console.error(dim(divider));
90
96
  if (!debug) {
91
97
  console.error(yellow('💡 Tip:'), dim('Run with --debug flag to see full stack trace'));
92
98
  }
93
- const suggestion = getErrorSuggestion(err, code);
99
+ const suggestion = getErrorSuggestion(err, resolvedCode);
94
100
  if (suggestion) {
95
101
  console.error(yellow('💡 Suggestion:'), dim(suggestion));
96
102
  }
97
103
  console.error('');
98
104
  }
99
105
  if (exit) {
100
- process.exitCode = code;
101
- process.exit(code);
106
+ process.exitCode = resolvedCode;
107
+ process.exit(resolvedCode);
102
108
  }
103
109
  throw err;
104
110
  }
@@ -142,6 +148,55 @@ export class NetworkError extends Error {
142
148
  }
143
149
  }
144
150
  // --- Private helpers ---
151
+ /**
152
+ * Map the ACTUAL error to a canonical exit code so every command exits with the
153
+ * SAME code for the same class of failure. The caller-supplied `fallback` (e.g.
154
+ * API_REQUEST) is used only for errors this can't classify. Codes (src/types/error.ts):
155
+ *
156
+ * 1 GENERAL · 2 VALIDATION · 3 API_REQUEST · 4 AUTHENTICATION · 5 AUTHORIZATION
157
+ * 6 NOT_FOUND · 7 NETWORK · 8 CONFIGURATION · 9 FILE_SYSTEM · 10 TIMEOUT
158
+ *
159
+ * Precedence: typed CLI errors → HTTP status → Node system error `code` → fallback.
160
+ */
161
+ function resolveExitCode(err, fallback) {
162
+ if (err instanceof ValidationError)
163
+ return ERROR_CODES.VALIDATION;
164
+ if (err instanceof NetworkError)
165
+ return err.timeout ? ERROR_CODES.TIMEOUT : ERROR_CODES.NETWORK;
166
+ if (isAxiosError(err)) {
167
+ const status = err.response?.status;
168
+ if (status === 400 || status === 422)
169
+ return ERROR_CODES.VALIDATION;
170
+ if (status === 401)
171
+ return ERROR_CODES.AUTHENTICATION;
172
+ if (status === 403)
173
+ return ERROR_CODES.AUTHORIZATION;
174
+ if (status === 404)
175
+ return ERROR_CODES.NOT_FOUND;
176
+ if (status === 408 || status === 504)
177
+ return ERROR_CODES.TIMEOUT;
178
+ if (status && status >= 500)
179
+ return ERROR_CODES.API_REQUEST;
180
+ // A request that got no HTTP response never reached the server (DNS / refused
181
+ // / reset) — that's a network failure, not an API-response error.
182
+ if (!err.response)
183
+ return ERROR_CODES.NETWORK;
184
+ return fallback;
185
+ }
186
+ // Node system errors (fs + sockets) carry a string `code`.
187
+ const sysCode = err?.code;
188
+ if (typeof sysCode === 'string') {
189
+ if (['ENOENT', 'EACCES', 'EISDIR', 'ENOTDIR', 'EEXIST', 'EPERM', 'ENOSPC', 'EMFILE'].includes(sysCode)) {
190
+ return ERROR_CODES.FILE_SYSTEM;
191
+ }
192
+ if (sysCode === 'ETIMEDOUT')
193
+ return ERROR_CODES.TIMEOUT;
194
+ if (['ECONNREFUSED', 'ENOTFOUND', 'ECONNRESET', 'EHOSTUNREACH', 'ENETUNREACH', 'EAI_AGAIN', 'EPIPE'].includes(sysCode)) {
195
+ return ERROR_CODES.NETWORK;
196
+ }
197
+ }
198
+ return fallback;
199
+ }
145
200
  function getErrorCodeName(code) {
146
201
  const entry = Object.entries(ERROR_CODES).find(([_, value]) => value === code);
147
202
  return entry ? `${entry[0]} (${code})` : String(code);
@@ -244,4 +299,4 @@ function isAxiosError(err) {
244
299
  'isAxiosError' in err &&
245
300
  err.isAxiosError === true);
246
301
  }
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9lcnJvci1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxXQUFXLEdBSVosTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztBQUU5Qyw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO0FBR3ZCOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FDekIsR0FBWSxFQUNaLElBQUksR0FBYyxXQUFXLENBQUMsT0FBTyxFQUNyQyxPQUFPLEdBQXdCLEVBQUU7SUFFakMsTUFBTSxFQUNKLEtBQUssR0FBRyxLQUFLLEVBQ2IsSUFBSSxHQUFHLElBQUksRUFDWCxZQUFZLEdBQUcsSUFBSSxFQUNuQixPQUFPLEVBQ1AsYUFBYSxHQUFHLG1CQUFtQixFQUFFLEdBQ3RDLEdBQUcsT0FBTyxDQUFDO0lBRVosSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sT0FBTyxHQUFHLE9BQU8sYUFBYSxFQUFFLENBQUM7UUFFdkMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLE9BQU8sR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFD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SUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRyxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsR0FBWTtJQUNoQyxPQUFPLENBQ0wsT0FBTyxHQUFHLEtBQUssUUFBUTtRQUN2QixHQUFHLEtBQUssSUFBSTtRQUNaLGNBQWMsSUFBSSxHQUFHO1FBQ3BCLEdBQStCLENBQUMsWUFBWSxLQUFLLElBQUksQ0FDdkQsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyBnZW5lcmF0ZUV4ZWN1dGlvbklkIH0gZnJvbSAnLi4vY29uZmlnL2NsaS5jb25zdGFudHMuanMnO1xuaW1wb3J0IHtcbiAgRVJST1JfQ09ERVMsXG4gIHR5cGUgRXJyb3JDb2RlLFxuICB0eXBlIEVycm9ySGFuZGxlck9wdGlvbnMsXG4gIHR5cGUgQXhpb3NFcnJvckxpa2UsXG59IGZyb20gJy4uL3R5cGVzL2luZGV4LmpzJztcblxuY29uc3QgeyBib2xkLCBkaW0sIHJlZCwgeWVsbG93LCBjeWFuIH0gPSBwaWNvO1xuXG4vLyBSZS1leHBvcnQgZm9yIGNvbnZlbmllbmNlXG5leHBvcnQgeyBFUlJPUl9DT0RFUyB9O1xuZXhwb3J0IHR5cGUgeyBFcnJvckNvZGUgfTtcblxuLyoqXG4gKiBGb3JtYXQgYW5kIGhhbmRsZSBlcnJvcnMgd2l0aCBjb2xvcmVkIG91dHB1dFxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlRXJyb3IoXG4gIGVycjogdW5rbm93bixcbiAgY29kZTogRXJyb3JDb2RlID0gRVJST1JfQ09ERVMuR0VORVJBTCxcbiAgb3B0aW9uczogRXJyb3JIYW5kbGVyT3B0aW9ucyA9IHt9LFxuKTogbmV2ZXIge1xuICBjb25zdCB7XG4gICAgZGVidWcgPSBmYWxzZSxcbiAgICBleGl0ID0gdHJ1ZSxcbiAgICBsb2dUb0NvbnNvbGUgPSB0cnVlLFxuICAgIGNvbnRleHQsXG4gICAgY29ycmVsYXRpb25JZCA9IGdlbmVyYXRlRXhlY3V0aW9uSWQoKSxcbiAgfSA9IG9wdGlvbnM7XG5cbiAgaWYgKGxvZ1RvQ29uc29sZSkge1xuICAgIGNvbnN0IGRpdmlkZXIgPSAn4pSAJy5yZXBlYXQocHJvY2Vzcy5zdGRvdXQuY29sdW1ucyB8fCA4MCk7XG4gICAgY29uc3QgZXJyb3JJZCA9IGBFUlItJHtjb3JyZWxhdGlvbklkfWA7XG5cbiAgICBjb25zb2xlLmVycm9yKCdcXG4nICsgcmVkKGJvbGQoJ+KclyBFUlJPUicpKSArIGRpbShgIFske2Vycm9ySWR9XWApICsgJ1xcbicpO1xuICAgIGNvbnNvbGUuZXJyb3IoZGltKGRpdmlkZXIpKTtcblxuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihyZWQoYm9sZCgnTWVzc2FnZTonKSksIGVyci5tZXNzYWdlKTtcblxuICAgICAgaWYgKGVyci5uYW1lICE9PSAnRXJyb3InKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IocmVkKCdUeXBlOicpLCBlcnIubmFtZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNob3cgVmFsaWRhdGlvbiBlcnJvciBkZXRhaWxzXG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgVmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICAgIGlmIChlcnIuZmllbGQpIGNvbnNvbGUuZXJyb3IocmVkKCdGaWVsZDonKSwgZXJyLmZpZWxkKTtcbiAgICAgICAgaWYgKGVyci52YWx1ZSAhPT0gdW5kZWZpbmVkKSBjb25zb2xlLmVycm9yKHJlZCgnVmFsdWU6JyksIHNhbml0aXplVmFsdWUoZXJyLnZhbHVlKSk7XG4gICAgICAgIGlmIChlcnIucnVsZSkgY29uc29sZS5lcnJvcihyZWQoJ1J1bGU6JyksIGVyci5ydWxlKTtcbiAgICAgICAgaWYgKGVyci5leHBlY3RlZCkgY29uc29sZS5lcnJvcihyZWQoJ0V4cGVjdGVkOicpLCBlcnIuZXhwZWN0ZWQpO1xuICAgICAgfVxuXG4gICAgICAvLyBTaG93IE5ldHdvcmsgZXJyb3IgZGV0YWlsc1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIE5ldHdvcmtFcnJvcikge1xuICAgICAgICBpZiAoZXJyLnVybCkgY29uc29sZS5lcnJvcihyZWQoJ1VSTDonKSwgc2FuaXRpemVVcmwoZXJyLnVybCkpO1xuICAgICAgICBpZiAoZXJyLnRpbWVvdXQpIGNvbnNvbGUuZXJyb3IocmVkKCdUaW1lb3V0OicpLCBgJHtlcnIudGltZW91dH1tc2ApO1xuICAgICAgICBjb25zb2xlLmVycm9yKHJlZCgnUmVxdWVzdCBNYWRlOicpLCBlcnIucmVxdWVzdE1hZGUgPyAnWWVzJyA6ICdObycpO1xuICAgICAgICBjb25zb2xlLmVycm9yKHJlZCgnUmVzcG9uc2UgUmVjZWl2ZWQ6JyksIGVyci5yZXNwb25zZVJlY2VpdmVkID8gJ1llcycgOiAnTm8nKTtcbiAgICAgICAgaWYgKGVyci5jYXVzZSkgY29uc29sZS5lcnJvcihyZWQoJ0NhdXNlZCBieTonKSwgZXJyLmNhdXNlLm1lc3NhZ2UpO1xuICAgICAgfVxuXG4gICAgICAvLyBTaG93IEF4aW9zIGVycm9yIGRldGFpbHNcbiAgICAgIGlmIChpc0F4aW9zRXJyb3IoZXJyKSkge1xuICAgICAgICBjb25zdCBzdGF0dXMgPSBlcnIucmVzcG9uc2U/LnN0YXR1cztcbiAgICAgICAgY29uc3QgdXJsID0gZXJyLmNvbmZpZz8udXJsO1xuICAgICAgICBpZiAoc3RhdHVzKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihyZWQoJ1N0YXR1czonKSwgc3RhdHVzKTtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKHJlZCgnU3RhdHVzIFRleHQ6JyksIGdldEh0dHBTdGF0dXNUZXh0KHN0YXR1cykpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1cmwpIGNvbnNvbGUuZXJyb3IocmVkKCdVUkw6JyksIHNhbml0aXplVXJsKHVybCkpO1xuICAgICAgICBpZiAoZXJyLnJlc3BvbnNlPy5kYXRhKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihyZWQoJ1Jlc3BvbnNlOicpKTtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGRpbShzYW5pdGl6ZUVycm9yRGF0YShlcnIucmVzcG9uc2UuZGF0YSkpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBTaG93IENESy9leGVjU3luYyBlcnJvciBkZXRhaWxzIChzdGRlcnIgY2FwdHVyZWQgZnJvbSBjaGlsZCBwcm9jZXNzKVxuICAgICAgaWYgKCdzdGRlcnInIGluIGVyciAmJiBlcnIuc3RkZXJyKSB7XG4gICAgICAgIGNvbnN0IHN0ZGVyciA9IChlcnIuc3RkZXJyIGFzIEJ1ZmZlciB8IHN0cmluZykudG9TdHJpbmcoKS50cmltKCk7XG4gICAgICAgIGlmIChzdGRlcnIpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKHJlZCgnQ0RLIE91dHB1dDonKSk7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihkaW0oc3RkZXJyKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc29sZS5lcnJvcihyZWQoJ0NvZGU6JyksIGdldEVycm9yQ29kZU5hbWUoY29kZSkpO1xuICAgICAgY29uc29sZS5lcnJvcihkaW0oJ0Vycm9yIElEOicpLCBkaW0oZXJyb3JJZCkpO1xuXG4gICAgICBpZiAoY29udGV4dCAmJiBPYmplY3Qua2V5cyhjb250ZXh0KS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJycpO1xuICAgICAgICBjb25zb2xlLmVycm9yKHJlZCgnQ29udGV4dDonKSk7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGNvbnRleHQpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCAgJHtjeWFuKGtleSl9OmAsIGRpbShzYW5pdGl6ZVZhbHVlKHZhbHVlKSkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRlYnVnICYmIGVyci5zdGFjaykge1xuICAgICAgICBjb25zb2xlLmVycm9yKCcnKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihkaW0oJ1N0YWNrIHRyYWNlOicpKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihkaW0oc2FuaXRpemVTdGFja1RyYWNlKGVyci5zdGFjaykpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcihyZWQoJ0Vycm9yOicpLCBTdHJpbmcoZXJyKSk7XG4gICAgICBjb25zb2xlLmVycm9yKHJlZCgnQ29kZTonKSwgZ2V0RXJyb3JDb2RlTmFtZShjb2RlKSk7XG4gICAgICBjb25zb2xlLmVycm9yKGRpbSgnRXJyb3IgSUQ6JyksIGRpbShlcnJvcklkKSk7XG4gICAgfVxuXG4gICAgY29uc29sZS5lcnJvcihkaW0oZGl2aWRlcikpO1xuXG4gICAgaWYgKCFkZWJ1Zykge1xuICAgICAgY29uc29sZS5lcnJvcih5ZWxsb3coJ/CfkqEgVGlwOicpLCBkaW0oJ1J1biB3aXRoIC0tZGVidWcgZmxhZyB0byBzZWUgZnVsbCBzdGFjayB0cmFjZScpKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdWdnZXN0aW9uID0gZ2V0RXJyb3JTdWdnZXN0aW9uKGVyciwgY29kZSk7XG4gICAgaWYgKHN1Z2dlc3Rpb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoeWVsbG93KCfwn5KhIFN1Z2dlc3Rpb246JyksIGRpbShzdWdnZXN0aW9uKSk7XG4gICAgfVxuXG4gICAgY29uc29sZS5lcnJvcignJyk7XG4gIH1cblxuICBpZiAoZXhpdCkge1xuICAgIHByb2Nlc3MuZXhpdENvZGUgPSBjb2RlO1xuICAgIHByb2Nlc3MuZXhpdChjb2RlKTtcbiAgfVxuXG4gIHRocm93IGVycjtcbn1cblxuLy8gLS0tIEVycm9yIGNsYXNzZXMgKG9ubHkgdGhvc2UgYWN0dWFsbHkgdXNlZCkgLS0tXG5cbi8qKlxuICogVmFsaWRhdGlvbiBlcnJvciBjbGFzc1xuICovXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgcHVibGljIGZpZWxkPzogc3RyaW5nLFxuICAgIHB1YmxpYyB2YWx1ZT86IHVua25vd24sXG4gICAgcHVibGljIHJ1bGU/OiBzdHJpbmcsXG4gICAgcHVibGljIGV4cGVjdGVkPzogc3RyaW5nLFxuICApIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnVmFsaWRhdGlvbkVycm9yJztcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgfVxufVxuXG4vKipcbiAqIE5ldHdvcmsgZXJyb3IgY2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIE5ldHdvcmtFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIHB1YmxpYyB1cmw/OiBzdHJpbmcsXG4gICAgcHVibGljIGNhdXNlPzogRXJyb3IsXG4gICAgcHVibGljIHRpbWVvdXQ/OiBudW1iZXIsXG4gICAgcHVibGljIHJlcXVlc3RNYWRlOiBib29sZWFuID0gdHJ1ZSxcbiAgICBwdWJsaWMgcmVzcG9uc2VSZWNlaXZlZDogYm9vbGVhbiA9IGZhbHNlLFxuICApIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnTmV0d29ya0Vycm9yJztcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgfVxufVxuXG4vLyAtLS0gUHJpdmF0ZSBoZWxwZXJzIC0tLVxuXG5mdW5jdGlvbiBnZXRFcnJvckNvZGVOYW1lKGNvZGU6IEVycm9yQ29kZSk6IHN0cmluZyB7XG4gIGNvbnN0IGVudHJ5ID0gT2JqZWN0LmVudHJpZXMoRVJST1JfQ09ERVMpLmZpbmQoKFtfLCB2YWx1ZV0pID0+IHZhbHVlID09PSBjb2RlKTtcbiAgcmV0dXJuIGVudHJ5ID8gYCR7ZW50cnlbMF19ICgke2NvZGV9KWAgOiBTdHJpbmcoY29kZSk7XG59XG5cbmZ1bmN0aW9uIGdldEh0dHBTdGF0dXNUZXh0KHN0YXR1czogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3Qgc3RhdHVzVGV4dHM6IFJlY29yZDxudW1iZXIsIHN0cmluZz4gPSB7XG4gICAgNDAwOiAnQmFkIFJlcXVlc3QnLFxuICAgIDQwMTogJ1VuYXV0aG9yaXplZCcsXG4gICAgNDAzOiAnRm9yYmlkZGVuJyxcbiAgICA0MDQ6ICdOb3QgRm91bmQnLFxuICAgIDQwODogJ1JlcXVlc3QgVGltZW91dCcsXG4gICAgNDA5OiAnQ29uZmxpY3QnLFxuICAgIDQyMjogJ1VucHJvY2Vzc2FibGUgRW50aXR5JyxcbiAgICA0Mjk6ICdUb28gTWFueSBSZXF1ZXN0cycsXG4gICAgNTAwOiAnSW50ZXJuYWwgU2VydmVyIEVycm9yJyxcbiAgICA1MDI6ICdCYWQgR2F0ZXdheScsXG4gICAgNTAzOiAnU2VydmljZSBVbmF2YWlsYWJsZScsXG4gICAgNTA0OiAnR2F0ZXdheSBUaW1lb3V0JyxcbiAgfTtcbiAgcmV0dXJuIHN0YXR1c1RleHRzW3N0YXR1c10gfHwgJ1Vua25vd24nO1xufVxuXG5mdW5jdGlvbiBnZXRFcnJvclN1Z2dlc3Rpb24oZXJyOiB1bmtub3duLCBjb2RlOiBFcnJvckNvZGUpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKGNvZGUgPT09IEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OKSB7XG4gICAgcmV0dXJuICdDaGVjayB0aGF0IFBMQVRGT1JNX1RPS0VOIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCBjb3JyZWN0bHknO1xuICB9XG4gIGlmIChjb2RlID09PSBFUlJPUl9DT0RFUy5ORVRXT1JLKSB7XG4gICAgcmV0dXJuICdDaGVjayB5b3VyIGludGVybmV0IGNvbm5lY3Rpb24gYW5kIEFQSSBlbmRwb2ludCBVUkwnO1xuICB9XG4gIGlmIChjb2RlID09PSBFUlJPUl9DT0RFUy5DT05GSUdVUkFUSU9OKSB7XG4gICAgcmV0dXJuICdSdW4gXCJjbGkgdmVyc2lvbiAtLWNoZWNrLWNvbmZpZ1wiIHRvIHZlcmlmeSBjb25maWd1cmF0aW9uJztcbiAgfVxuICBpZiAoY29kZSA9PT0gRVJST1JfQ09ERVMuTk9UX0ZPVU5EKSB7XG4gICAgcmV0dXJuICdWZXJpZnkgdGhlIHJlc291cmNlIElEIGV4aXN0cyBhbmQgeW91IGhhdmUgYWNjZXNzIHRvIGl0JztcbiAgfVxuICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ2NkaycpKSB7XG4gICAgcmV0dXJuICdDaGVjayB0aGUgQ0RLIG91dHB1dCBhYm92ZSBmb3IgQ2xvdWRGb3JtYXRpb24gZXJyb3JzLiBSdW4gd2l0aCAtLWRlYnVnIGZvciBmdWxsIGRldGFpbHMnO1xuICB9XG4gIGlmIChlcnIgaW5zdGFuY2VvZiBWYWxpZGF0aW9uRXJyb3IgJiYgZXJyLmZpZWxkKSB7XG4gICAgcmV0dXJuIGBDaGVjayB0aGUgdmFsdWUgcHJvdmlkZWQgZm9yIFwiJHtlcnIuZmllbGR9XCJgO1xuICB9XG4gIGlmIChpc0F4aW9zRXJyb3IoZXJyKSkge1xuICAgIGNvbnN0IHN0YXR1cyA9IGVyci5yZXNwb25zZT8uc3RhdHVzO1xuICAgIGlmIChzdGF0dXMgPT09IDQwMSB8fCBzdGF0dXMgPT09IDQwMykgcmV0dXJuICdDaGVjayB5b3VyIGF1dGhlbnRpY2F0aW9uIHRva2VuIGFuZCBwZXJtaXNzaW9ucyc7XG4gICAgaWYgKHN0YXR1cyA9PT0gNDI5KSByZXR1cm4gJ1JhdGUgbGltaXQgZXhjZWVkZWQgLSB3YWl0IGEgbW9tZW50IGJlZm9yZSByZXRyeWluZyc7XG4gICAgaWYgKHN0YXR1cyAmJiBzdGF0dXMgPj0gNTAwKSByZXR1cm4gJ1NlcnZlciBlcnJvciAtIHRyeSBhZ2FpbiBsYXRlciBvciBjb250YWN0IHN1cHBvcnQnO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBzYW5pdGl6ZUVycm9yRGF0YShkYXRhOiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykgcmV0dXJuIGRhdGE7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiYgZGF0YSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHNhbml0aXplZCA9IHsgLi4uZGF0YSB9IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIFsndG9rZW4nLCAncGFzc3dvcmQnLCAnc2VjcmV0JywgJ2FwaUtleScsICdhdXRob3JpemF0aW9uJywgJ2p3dCcsICdjcmVkZW50aWFsJywgJ2JlYXJlciddLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgaWYgKGZpZWxkIGluIHNhbml0aXplZCkgc2FuaXRpemVkW2ZpZWxkXSA9ICdbUkVEQUNURURdJztcbiAgICB9KTtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoc2FuaXRpemVkLCBudWxsLCAyKTtcbiAgfVxuICByZXR1cm4gU3RyaW5nKGRhdGEpO1xufVxuXG5mdW5jdGlvbiBzYW5pdGl6ZVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgY29uc3QgdXJsT2JqID0gbmV3IFVSTCh1cmwpO1xuICAgIFsndG9rZW4nLCAna2V5JywgJ3NlY3JldCcsICdwYXNzd29yZCcsICdhcGlLZXknXS5mb3JFYWNoKHBhcmFtID0+IHtcbiAgICAgIGlmICh1cmxPYmouc2VhcmNoUGFyYW1zLmhhcyhwYXJhbSkpIHVybE9iai5zZWFyY2hQYXJhbXMuc2V0KHBhcmFtLCAnW1JFREFDVEVEXScpO1xuICAgIH0pO1xuICAgIHJldHVybiB1cmxPYmoudG9TdHJpbmcoKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxufVxuXG5mdW5jdGlvbiBzYW5pdGl6ZVZhbHVlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gJ251bGwnO1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuICd1bmRlZmluZWQnO1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIGlmICh2YWx1ZS5sZW5ndGggPiAyMCAmJiAvXltBLVphLXowLTkrLz1fLV0rJC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBgJHt2YWx1ZS5zdWJzdHJpbmcoMCwgOCl9Li4uW1JFREFDVEVEXWA7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPiAxMDAgPyB2YWx1ZS5zdWJzdHJpbmcoMCwgOTcpICsgJy4uLicgOiB2YWx1ZTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JykgcmV0dXJuIHNhbml0aXplRXJyb3JEYXRhKHZhbHVlKTtcbiAgY29uc3Qgc3RyID0gU3RyaW5nKHZhbHVlKTtcbiAgcmV0dXJuIHN0ci5sZW5ndGggPiAxMDAgPyBzdHIuc3Vic3RyaW5nKDAsIDk3KSArICcuLi4nIDogc3RyO1xufVxuXG5mdW5jdGlvbiBzYW5pdGl6ZVN0YWNrVHJhY2Uoc3RhY2s6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdGFjay5zcGxpdCgnXFxuJykuc2xpY2UoMCwgMTApLm1hcChsaW5lID0+IGxpbmUucmVwbGFjZSgvXFwvLio/XFwvL2csICcuLi4vJykpLmpvaW4oJ1xcbicpO1xufVxuXG5mdW5jdGlvbiBpc0F4aW9zRXJyb3IoZXJyOiB1bmtub3duKTogZXJyIGlzIEF4aW9zRXJyb3JMaWtlIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgZXJyID09PSAnb2JqZWN0JyAmJlxuICAgIGVyciAhPT0gbnVsbCAmJlxuICAgICdpc0F4aW9zRXJyb3InIGluIGVyciAmJlxuICAgIChlcnIgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLmlzQXhpb3NFcnJvciA9PT0gdHJ1ZVxuICApO1xufVxuIl19
302
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9lcnJvci1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxXQUFXLEdBSVosTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztBQUU5Qyw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO0FBR3ZCOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FDekIsR0FBWSxFQUNaLElBQUksR0FBYyxXQUFXLENBQUMsT0FBTyxFQUNyQyxPQUFPLEdBQXdCLEVBQUU7SUFFakMsTUFBTSxFQUNKLEtBQUssR0FBRyxLQUFLLEVBQ2IsSUFBSSxHQUFHLElBQUksRUFDWCxZQUFZLEdBQUcsSUFBSSxFQUNuQixPQUFPLEVBQ1AsYUFBYSxHQUFHLG1CQUFtQixFQUFFLEdBQ3RDLEdBQUcsT0FBTyxDQUFDO0lBRVosOEVBQThFO0lBQzlFLGdGQUFnRjtJQUNoRiw2RUFBNkU7SUFDN0UsK0VBQStFO0lBQy9FLDhCQUE4QjtJQUM5QixNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRWhELElBQUksWUFBWSxFQUFFLENBQUM7UUFDakIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6RCxNQUFNLE9BQU8sR0FBRyxPQUFPLGFBQWEsRUFBRSxDQUFDO1FBRXZDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxPQUFPLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFNUIsSUFBSSxHQUFHLFlBQVksS0FBSyxFQUFFLENBQUM7WUFDekIsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRWxELElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLENBQUM7WUFFRCxnQ0FBZ0M7WUFDaEMsSUFBSSxHQUFHLFlBQVksZUFBZSxFQUFFLENBQUM7Z0JBQ25DLElBQUksR0FBRyxDQUFDLEtBQUs7b0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN2RCxJQUFJLEdBQUcsQ0FBQyxLQUFLLEtBQUssU0FBUztvQkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ3BGLElBQUksR0FBRyxDQUFDLElBQUk7b0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLEdBQUcsQ0FBQyxRQUFRO29CQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsRSxDQUFDO1lBRUQsNkJBQTZCO1lBQzdCLElBQUksR0FBRyxZQUFZLFlBQVksRUFBRSxDQUFDO2dCQUNoQyxJQUFJLEdBQUcsQ0FBQyxHQUFHO29CQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxHQUFHLENBQUMsT0FBTztvQkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDO2dCQUNwRSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwRSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUUsSUFBSSxHQUFHLENBQUMsS0FBSztvQkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JFLENBQUM7WUFFRCwyQkFBMkI7WUFDM0IsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUM7Z0JBQ3BDLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO2dCQUM1QixJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUN0QyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUNoRSxDQUFDO2dCQUNELElBQUksR0FBRztvQkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO29CQUN2QixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO29CQUNoQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDM0QsQ0FBQztZQUNILENBQUM7WUFFRCx1RUFBdUU7WUFDdkUsSUFBSSxRQUFRLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbEMsTUFBTSxNQUFNLEdBQUksR0FBRyxDQUFDLE1BQTBCLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2pFLElBQUksTUFBTSxFQUFFLENBQUM7b0JBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztvQkFDbEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDN0IsQ0FBQztZQUNILENBQUM7WUFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQzVELE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBRTlDLElBQUksT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMvQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNsQixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUMvQixNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7b0JBQy9DLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUQsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsSUFBSSxLQUFLLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN2QixPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNsQixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BELENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDNUQsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUVELE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFNUIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLCtDQUErQyxDQUFDLENBQUMsQ0FBQztRQUN6RixDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3pELElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ1QsT0FBTyxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUM7UUFDaEMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTSxHQUFHLENBQUM7QUFDWixDQUFDO0FBRUQsbURBQW1EO0FBRW5EOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGVBQWdCLFNBQVEsS0FBSztJQUcvQixLQUFLO0lBQ0wsS0FBSztJQUNMLElBQUk7SUFDSixRQUFRO0lBTGpCLFlBQ0UsT0FBZSxFQUNSLEtBQWMsRUFDZCxLQUFlLEVBQ2YsSUFBYSxFQUNiLFFBQWlCO1FBRXhCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztxQkFMUixLQUFLO3FCQUNMLEtBQUs7b0JBQ0wsSUFBSTt3QkFDSixRQUFRO1FBR2YsSUFBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztRQUM5QixLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxZQUFhLFNBQVEsS0FBSztJQUc1QixHQUFHO0lBQ0gsS0FBSztJQUNMLE9BQU87SUFDUCxXQUFXO0lBQ1gsZ0JBQWdCO0lBTnpCLFlBQ0UsT0FBZSxFQUNSLEdBQVksRUFDWixLQUFhLEVBQ2IsT0FBZ0IsRUFDaEIsV0FBVyxHQUFZLElBQUksRUFDM0IsZ0JBQWdCLEdBQVksS0FBSztRQUV4QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7bUJBTlIsR0FBRztxQkFDSCxLQUFLO3VCQUNMLE9BQU87MkJBQ1AsV0FBVztnQ0FDWCxnQkFBZ0I7UUFHdkIsSUFBSSxDQUFDLElBQUksR0FBRyxjQUFjLENBQUM7UUFDM0IsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBRUQsMEJBQTBCO0FBRTFCOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsZUFBZSxDQUFDLEdBQVksRUFBRSxRQUFtQjtJQUN4RCxJQUFJLEdBQUcsWUFBWSxlQUFlO1FBQUUsT0FBTyxXQUFXLENBQUMsVUFBVSxDQUFDO0lBQ2xFLElBQUksR0FBRyxZQUFZLFlBQVk7UUFBRSxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7SUFFaEcsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN0QixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQztRQUNwQyxJQUFJLE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxLQUFLLEdBQUc7WUFBRSxPQUFPLFdBQVcsQ0FBQyxVQUFVLENBQUM7UUFDcEUsSUFBSSxNQUFNLEtBQUssR0FBRztZQUFFLE9BQU8sV0FBVyxDQUFDLGNBQWMsQ0FBQztRQUN0RCxJQUFJLE1BQU0sS0FBSyxHQUFHO1lBQUUsT0FBTyxXQUFXLENBQUMsYUFBYSxDQUFDO1FBQ3JELElBQUksTUFBTSxLQUFLLEdBQUc7WUFBRSxPQUFPLFdBQVcsQ0FBQyxTQUFTLENBQUM7UUFDakQsSUFBSSxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sS0FBSyxHQUFHO1lBQUUsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDO1FBQ2pFLElBQUksTUFBTSxJQUFJLE1BQU0sSUFBSSxHQUFHO1lBQUUsT0FBTyxXQUFXLENBQUMsV0FBVyxDQUFDO1FBQzVELDhFQUE4RTtRQUM5RSxrRUFBa0U7UUFDbEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRO1lBQUUsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDO1FBQzlDLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCwyREFBMkQ7SUFDM0QsTUFBTSxPQUFPLEdBQUksR0FBaUMsRUFBRSxJQUFJLENBQUM7SUFDekQsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3ZHLE9BQU8sV0FBVyxDQUFDLFdBQVcsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsSUFBSSxPQUFPLEtBQUssV0FBVztZQUFFLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQztRQUN4RCxJQUFJLENBQUMsY0FBYyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdkgsT0FBTyxXQUFXLENBQUMsT0FBTyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsSUFBZTtJQUN2QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDL0UsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsTUFBYztJQUN2QyxNQUFNLFdBQVcsR0FBMkI7UUFDMUMsR0FBRyxFQUFFLGFBQWE7UUFDbEIsR0FBRyxFQUFFLGNBQWM7UUFDbkIsR0FBRyxFQUFFLFdBQVc7UUFDaEIsR0FBRyxFQUFFLFdBQVc7UUFDaEIsR0FBRyxFQUFFLGlCQUFpQjtRQUN0QixHQUFHLEVBQUUsVUFBVTtRQUNmLEdBQUcsRUFBRSxzQkFBc0I7UUFDM0IsR0FBRyxFQUFFLG1CQUFtQjtRQUN4QixHQUFHLEVBQUUsdUJBQXVCO1FBQzVCLEdBQUcsRUFBRSxhQUFhO1FBQ2xCLEdBQUcsRUFBRSxxQkFBcUI7UUFDMUIsR0FBRyxFQUFFLGlCQUFpQjtLQUN2QixDQUFDO0lBQ0YsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksU0FBUyxDQUFDO0FBQzFDLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLEdBQVksRUFBRSxJQUFlO0lBQ3ZELElBQUksSUFBSSxLQUFLLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4QyxPQUFPLGlFQUFpRSxDQUFDO0lBQzNFLENBQUM7SUFDRCxJQUFJLElBQUksS0FBSyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakMsT0FBTyxxREFBcUQsQ0FBQztJQUMvRCxDQUFDO0lBQ0QsSUFBSSxJQUFJLEtBQUssV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sMERBQTBELENBQUM7SUFDcEUsQ0FBQztJQUNELElBQUksSUFBSSxLQUFLLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQyxPQUFPLHlEQUF5RCxDQUFDO0lBQ25FLENBQUM7SUFDRCxJQUFJLEdBQUcsWUFBWSxLQUFLLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN4RCxPQUFPLHlGQUF5RixDQUFDO0lBQ25HLENBQUM7SUFDRCxJQUFJLEdBQUcsWUFBWSxlQUFlLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hELE9BQU8saUNBQWlDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQztJQUN2RCxDQUFDO0lBQ0QsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN0QixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQztRQUNwQyxJQUFJLE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxLQUFLLEdBQUc7WUFBRSxPQUFPLGlEQUFpRCxDQUFDO1FBQy9GLElBQUksTUFBTSxLQUFLLEdBQUc7WUFBRSxPQUFPLHFEQUFxRCxDQUFDO1FBQ2pGLElBQUksTUFBTSxJQUFJLE1BQU0sSUFBSSxHQUFHO1lBQUUsT0FBTyxtREFBbUQsQ0FBQztJQUMxRixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxJQUFhO0lBQ3RDLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQzFDLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUM5QyxNQUFNLFNBQVMsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUE2QixDQUFDO1FBQ3pELENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN4RyxJQUFJLEtBQUssSUFBSSxTQUFTO2dCQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxZQUFZLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEIsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLEdBQVc7SUFDOUIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQy9ELElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO2dCQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNuRixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsS0FBYztJQUNuQyxJQUFJLEtBQUssS0FBSyxJQUFJO1FBQUUsT0FBTyxNQUFNLENBQUM7SUFDbEMsSUFBSSxLQUFLLEtBQUssU0FBUztRQUFFLE9BQU8sV0FBVyxDQUFDO0lBQzVDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUIsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMzRCxPQUFPLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDckUsQ0FBQztJQUNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8saUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLE9BQU8sR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQy9ELENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLEtBQWE7SUFDdkMsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakcsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLEdBQVk7SUFDaEMsT0FBTyxDQUNMLE9BQU8sR0FBRyxLQUFLLFFBQVE7UUFDdkIsR0FBRyxLQUFLLElBQUk7UUFDWixjQUFjLElBQUksR0FBRztRQUNwQixHQUErQixDQUFDLFlBQVksS0FBSyxJQUFJLENBQ3ZELENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCBwaWNvIGZyb20gJ3BpY29jb2xvcnMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVFeGVjdXRpb25JZCB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7XG4gIEVSUk9SX0NPREVTLFxuICB0eXBlIEVycm9yQ29kZSxcbiAgdHlwZSBFcnJvckhhbmRsZXJPcHRpb25zLFxuICB0eXBlIEF4aW9zRXJyb3JMaWtlLFxufSBmcm9tICcuLi90eXBlcy9pbmRleC5qcyc7XG5cbmNvbnN0IHsgYm9sZCwgZGltLCByZWQsIHllbGxvdywgY3lhbiB9ID0gcGljbztcblxuLy8gUmUtZXhwb3J0IGZvciBjb252ZW5pZW5jZVxuZXhwb3J0IHsgRVJST1JfQ09ERVMgfTtcbmV4cG9ydCB0eXBlIHsgRXJyb3JDb2RlIH07XG5cbi8qKlxuICogRm9ybWF0IGFuZCBoYW5kbGUgZXJyb3JzIHdpdGggY29sb3JlZCBvdXRwdXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZUVycm9yKFxuICBlcnI6IHVua25vd24sXG4gIGNvZGU6IEVycm9yQ29kZSA9IEVSUk9SX0NPREVTLkdFTkVSQUwsXG4gIG9wdGlvbnM6IEVycm9ySGFuZGxlck9wdGlvbnMgPSB7fSxcbik6IG5ldmVyIHtcbiAgY29uc3Qge1xuICAgIGRlYnVnID0gZmFsc2UsXG4gICAgZXhpdCA9IHRydWUsXG4gICAgbG9nVG9Db25zb2xlID0gdHJ1ZSxcbiAgICBjb250ZXh0LFxuICAgIGNvcnJlbGF0aW9uSWQgPSBnZW5lcmF0ZUV4ZWN1dGlvbklkKCksXG4gIH0gPSBvcHRpb25zO1xuXG4gIC8vIERlcml2ZSB0aGUgY2Fub25pY2FsIGV4aXQgY29kZSBmcm9tIHRoZSBBQ1RVQUwgZXJyb3IgKHNlZSByZXNvbHZlRXhpdENvZGUpLFxuICAvLyBmYWxsaW5nIGJhY2sgdG8gdGhlIGNhbGxlcidzIGBjb2RlYCBmb3IgYW55dGhpbmcgdW5jbGFzc2lmaWFibGUuIFRoaXMgaXMgd2hhdFxuICAvLyBtYWtlcyBldmVyeSBjb21tYW5kIGVtaXQgdGhlIFNBTUUgZXhpdCBjb2RlIGZvciB0aGUgc2FtZSBjbGFzcyBvZiBmYWlsdXJlLFxuICAvLyByYXRoZXIgdGhhbiBhIGJsYW5rZXQgQVBJX1JFUVVFU1QvR0VORVJBTC4gVXNlZCBmb3IgZGlzcGxheSwgdGhlIHN1Z2dlc3Rpb24sXG4gIC8vIGFuZCB0aGUgcHJvY2VzcyBleGl0IGJlbG93LlxuICBjb25zdCByZXNvbHZlZENvZGUgPSByZXNvbHZlRXhpdENvZGUoZXJyLCBjb2RlKTtcblxuICBpZiAobG9nVG9Db25zb2xlKSB7XG4gICAgY29uc3QgZGl2aWRlciA9ICfilIAnLnJlcGVhdChwcm9jZXNzLnN0ZG91dC5jb2x1bW5zIHx8IDgwKTtcbiAgICBjb25zdCBlcnJvcklkID0gYEVSUi0ke2NvcnJlbGF0aW9uSWR9YDtcblxuICAgIGNvbnNvbGUuZXJyb3IoJ1xcbicgKyByZWQoYm9sZCgn4pyXIEVSUk9SJykpICsgZGltKGAgWyR7ZXJyb3JJZH1dYCkgKyAnXFxuJyk7XG4gICAgY29uc29sZS5lcnJvcihkaW0oZGl2aWRlcikpO1xuXG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKHJlZChib2xkKCdNZXNzYWdlOicpKSwgZXJyLm1lc3NhZ2UpO1xuXG4gICAgICBpZiAoZXJyLm5hbWUgIT09ICdFcnJvcicpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihyZWQoJ1R5cGU6JyksIGVyci5uYW1lKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2hvdyBWYWxpZGF0aW9uIGVycm9yIGRldGFpbHNcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBWYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgICAgaWYgKGVyci5maWVsZCkgY29uc29sZS5lcnJvcihyZWQoJ0ZpZWxkOicpLCBlcnIuZmllbGQpO1xuICAgICAgICBpZiAoZXJyLnZhbHVlICE9PSB1bmRlZmluZWQpIGNvbnNvbGUuZXJyb3IocmVkKCdWYWx1ZTonKSwgc2FuaXRpemVWYWx1ZShlcnIudmFsdWUpKTtcbiAgICAgICAgaWYgKGVyci5ydWxlKSBjb25zb2xlLmVycm9yKHJlZCgnUnVsZTonKSwgZXJyLnJ1bGUpO1xuICAgICAgICBpZiAoZXJyLmV4cGVjdGVkKSBjb25zb2xlLmVycm9yKHJlZCgnRXhwZWN0ZWQ6JyksIGVyci5leHBlY3RlZCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNob3cgTmV0d29yayBlcnJvciBkZXRhaWxzXG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgTmV0d29ya0Vycm9yKSB7XG4gICAgICAgIGlmIChlcnIudXJsKSBjb25zb2xlLmVycm9yKHJlZCgnVVJMOicpLCBzYW5pdGl6ZVVybChlcnIudXJsKSk7XG4gICAgICAgIGlmIChlcnIudGltZW91dCkgY29uc29sZS5lcnJvcihyZWQoJ1RpbWVvdXQ6JyksIGAke2Vyci50aW1lb3V0fW1zYCk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IocmVkKCdSZXF1ZXN0IE1hZGU6JyksIGVyci5yZXF1ZXN0TWFkZSA/ICdZZXMnIDogJ05vJyk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IocmVkKCdSZXNwb25zZSBSZWNlaXZlZDonKSwgZXJyLnJlc3BvbnNlUmVjZWl2ZWQgPyAnWWVzJyA6ICdObycpO1xuICAgICAgICBpZiAoZXJyLmNhdXNlKSBjb25zb2xlLmVycm9yKHJlZCgnQ2F1c2VkIGJ5OicpLCBlcnIuY2F1c2UubWVzc2FnZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNob3cgQXhpb3MgZXJyb3IgZGV0YWlsc1xuICAgICAgaWYgKGlzQXhpb3NFcnJvcihlcnIpKSB7XG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IGVyci5yZXNwb25zZT8uc3RhdHVzO1xuICAgICAgICBjb25zdCB1cmwgPSBlcnIuY29uZmlnPy51cmw7XG4gICAgICAgIGlmIChzdGF0dXMpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKHJlZCgnU3RhdHVzOicpLCBzdGF0dXMpO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IocmVkKCdTdGF0dXMgVGV4dDonKSwgZ2V0SHR0cFN0YXR1c1RleHQoc3RhdHVzKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVybCkgY29uc29sZS5lcnJvcihyZWQoJ1VSTDonKSwgc2FuaXRpemVVcmwodXJsKSk7XG4gICAgICAgIGlmIChlcnIucmVzcG9uc2U/LmRhdGEpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKHJlZCgnUmVzcG9uc2U6JykpO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZGltKHNhbml0aXplRXJyb3JEYXRhKGVyci5yZXNwb25zZS5kYXRhKSkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFNob3cgQ0RLL2V4ZWNTeW5jIGVycm9yIGRldGFpbHMgKHN0ZGVyciBjYXB0dXJlZCBmcm9tIGNoaWxkIHByb2Nlc3MpXG4gICAgICBpZiAoJ3N0ZGVycicgaW4gZXJyICYmIGVyci5zdGRlcnIpIHtcbiAgICAgICAgY29uc3Qgc3RkZXJyID0gKGVyci5zdGRlcnIgYXMgQnVmZmVyIHwgc3RyaW5nKS50b1N0cmluZygpLnRyaW0oKTtcbiAgICAgICAgaWYgKHN0ZGVycikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IocmVkKCdDREsgT3V0cHV0OicpKTtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGRpbShzdGRlcnIpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmVycm9yKHJlZCgnQ29kZTonKSwgZ2V0RXJyb3JDb2RlTmFtZShyZXNvbHZlZENvZGUpKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZGltKCdFcnJvciBJRDonKSwgZGltKGVycm9ySWQpKTtcblxuICAgICAgaWYgKGNvbnRleHQgJiYgT2JqZWN0LmtleXMoY29udGV4dCkubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCcnKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihyZWQoJ0NvbnRleHQ6JykpO1xuICAgICAgICBPYmplY3QuZW50cmllcyhjb250ZXh0KS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGAgICR7Y3lhbihrZXkpfTpgLCBkaW0oc2FuaXRpemVWYWx1ZSh2YWx1ZSkpKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkZWJ1ZyAmJiBlcnIuc3RhY2spIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignJyk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZGltKCdTdGFjayB0cmFjZTonKSk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZGltKHNhbml0aXplU3RhY2tUcmFjZShlcnIuc3RhY2spKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IocmVkKCdFcnJvcjonKSwgU3RyaW5nKGVycikpO1xuICAgICAgY29uc29sZS5lcnJvcihyZWQoJ0NvZGU6JyksIGdldEVycm9yQ29kZU5hbWUocmVzb2x2ZWRDb2RlKSk7XG4gICAgICBjb25zb2xlLmVycm9yKGRpbSgnRXJyb3IgSUQ6JyksIGRpbShlcnJvcklkKSk7XG4gICAgfVxuXG4gICAgY29uc29sZS5lcnJvcihkaW0oZGl2aWRlcikpO1xuXG4gICAgaWYgKCFkZWJ1Zykge1xuICAgICAgY29uc29sZS5lcnJvcih5ZWxsb3coJ/CfkqEgVGlwOicpLCBkaW0oJ1J1biB3aXRoIC0tZGVidWcgZmxhZyB0byBzZWUgZnVsbCBzdGFjayB0cmFjZScpKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdWdnZXN0aW9uID0gZ2V0RXJyb3JTdWdnZXN0aW9uKGVyciwgcmVzb2x2ZWRDb2RlKTtcbiAgICBpZiAoc3VnZ2VzdGlvbikge1xuICAgICAgY29uc29sZS5lcnJvcih5ZWxsb3coJ/CfkqEgU3VnZ2VzdGlvbjonKSwgZGltKHN1Z2dlc3Rpb24pKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmVycm9yKCcnKTtcbiAgfVxuXG4gIGlmIChleGl0KSB7XG4gICAgcHJvY2Vzcy5leGl0Q29kZSA9IHJlc29sdmVkQ29kZTtcbiAgICBwcm9jZXNzLmV4aXQocmVzb2x2ZWRDb2RlKTtcbiAgfVxuXG4gIHRocm93IGVycjtcbn1cblxuLy8gLS0tIEVycm9yIGNsYXNzZXMgKG9ubHkgdGhvc2UgYWN0dWFsbHkgdXNlZCkgLS0tXG5cbi8qKlxuICogVmFsaWRhdGlvbiBlcnJvciBjbGFzc1xuICovXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgcHVibGljIGZpZWxkPzogc3RyaW5nLFxuICAgIHB1YmxpYyB2YWx1ZT86IHVua25vd24sXG4gICAgcHVibGljIHJ1bGU/OiBzdHJpbmcsXG4gICAgcHVibGljIGV4cGVjdGVkPzogc3RyaW5nLFxuICApIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnVmFsaWRhdGlvbkVycm9yJztcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgfVxufVxuXG4vKipcbiAqIE5ldHdvcmsgZXJyb3IgY2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIE5ldHdvcmtFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIHB1YmxpYyB1cmw/OiBzdHJpbmcsXG4gICAgcHVibGljIGNhdXNlPzogRXJyb3IsXG4gICAgcHVibGljIHRpbWVvdXQ/OiBudW1iZXIsXG4gICAgcHVibGljIHJlcXVlc3RNYWRlOiBib29sZWFuID0gdHJ1ZSxcbiAgICBwdWJsaWMgcmVzcG9uc2VSZWNlaXZlZDogYm9vbGVhbiA9IGZhbHNlLFxuICApIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnTmV0d29ya0Vycm9yJztcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgfVxufVxuXG4vLyAtLS0gUHJpdmF0ZSBoZWxwZXJzIC0tLVxuXG4vKipcbiAqIE1hcCB0aGUgQUNUVUFMIGVycm9yIHRvIGEgY2Fub25pY2FsIGV4aXQgY29kZSBzbyBldmVyeSBjb21tYW5kIGV4aXRzIHdpdGggdGhlXG4gKiBTQU1FIGNvZGUgZm9yIHRoZSBzYW1lIGNsYXNzIG9mIGZhaWx1cmUuIFRoZSBjYWxsZXItc3VwcGxpZWQgYGZhbGxiYWNrYCAoZS5nLlxuICogQVBJX1JFUVVFU1QpIGlzIHVzZWQgb25seSBmb3IgZXJyb3JzIHRoaXMgY2FuJ3QgY2xhc3NpZnkuIENvZGVzIChzcmMvdHlwZXMvZXJyb3IudHMpOlxuICpcbiAqICAgMSBHRU5FUkFMIMK3IDIgVkFMSURBVElPTiDCtyAzIEFQSV9SRVFVRVNUIMK3IDQgQVVUSEVOVElDQVRJT04gwrcgNSBBVVRIT1JJWkFUSU9OXG4gKiAgIDYgTk9UX0ZPVU5EIMK3IDcgTkVUV09SSyDCtyA4IENPTkZJR1VSQVRJT04gwrcgOSBGSUxFX1NZU1RFTSDCtyAxMCBUSU1FT1VUXG4gKlxuICogUHJlY2VkZW5jZTogdHlwZWQgQ0xJIGVycm9ycyDihpIgSFRUUCBzdGF0dXMg4oaSIE5vZGUgc3lzdGVtIGVycm9yIGBjb2RlYCDihpIgZmFsbGJhY2suXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVFeGl0Q29kZShlcnI6IHVua25vd24sIGZhbGxiYWNrOiBFcnJvckNvZGUpOiBFcnJvckNvZGUge1xuICBpZiAoZXJyIGluc3RhbmNlb2YgVmFsaWRhdGlvbkVycm9yKSByZXR1cm4gRVJST1JfQ09ERVMuVkFMSURBVElPTjtcbiAgaWYgKGVyciBpbnN0YW5jZW9mIE5ldHdvcmtFcnJvcikgcmV0dXJuIGVyci50aW1lb3V0ID8gRVJST1JfQ09ERVMuVElNRU9VVCA6IEVSUk9SX0NPREVTLk5FVFdPUks7XG5cbiAgaWYgKGlzQXhpb3NFcnJvcihlcnIpKSB7XG4gICAgY29uc3Qgc3RhdHVzID0gZXJyLnJlc3BvbnNlPy5zdGF0dXM7XG4gICAgaWYgKHN0YXR1cyA9PT0gNDAwIHx8IHN0YXR1cyA9PT0gNDIyKSByZXR1cm4gRVJST1JfQ09ERVMuVkFMSURBVElPTjtcbiAgICBpZiAoc3RhdHVzID09PSA0MDEpIHJldHVybiBFUlJPUl9DT0RFUy5BVVRIRU5USUNBVElPTjtcbiAgICBpZiAoc3RhdHVzID09PSA0MDMpIHJldHVybiBFUlJPUl9DT0RFUy5BVVRIT1JJWkFUSU9OO1xuICAgIGlmIChzdGF0dXMgPT09IDQwNCkgcmV0dXJuIEVSUk9SX0NPREVTLk5PVF9GT1VORDtcbiAgICBpZiAoc3RhdHVzID09PSA0MDggfHwgc3RhdHVzID09PSA1MDQpIHJldHVybiBFUlJPUl9DT0RFUy5USU1FT1VUO1xuICAgIGlmIChzdGF0dXMgJiYgc3RhdHVzID49IDUwMCkgcmV0dXJuIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNUO1xuICAgIC8vIEEgcmVxdWVzdCB0aGF0IGdvdCBubyBIVFRQIHJlc3BvbnNlIG5ldmVyIHJlYWNoZWQgdGhlIHNlcnZlciAoRE5TIC8gcmVmdXNlZFxuICAgIC8vIC8gcmVzZXQpIOKAlCB0aGF0J3MgYSBuZXR3b3JrIGZhaWx1cmUsIG5vdCBhbiBBUEktcmVzcG9uc2UgZXJyb3IuXG4gICAgaWYgKCFlcnIucmVzcG9uc2UpIHJldHVybiBFUlJPUl9DT0RFUy5ORVRXT1JLO1xuICAgIHJldHVybiBmYWxsYmFjaztcbiAgfVxuXG4gIC8vIE5vZGUgc3lzdGVtIGVycm9ycyAoZnMgKyBzb2NrZXRzKSBjYXJyeSBhIHN0cmluZyBgY29kZWAuXG4gIGNvbnN0IHN5c0NvZGUgPSAoZXJyIGFzIHsgY29kZT86IHVua25vd24gfSB8IG51bGwpPy5jb2RlO1xuICBpZiAodHlwZW9mIHN5c0NvZGUgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKFsnRU5PRU5UJywgJ0VBQ0NFUycsICdFSVNESVInLCAnRU5PVERJUicsICdFRVhJU1QnLCAnRVBFUk0nLCAnRU5PU1BDJywgJ0VNRklMRSddLmluY2x1ZGVzKHN5c0NvZGUpKSB7XG4gICAgICByZXR1cm4gRVJST1JfQ09ERVMuRklMRV9TWVNURU07XG4gICAgfVxuICAgIGlmIChzeXNDb2RlID09PSAnRVRJTUVET1VUJykgcmV0dXJuIEVSUk9SX0NPREVTLlRJTUVPVVQ7XG4gICAgaWYgKFsnRUNPTk5SRUZVU0VEJywgJ0VOT1RGT1VORCcsICdFQ09OTlJFU0VUJywgJ0VIT1NUVU5SRUFDSCcsICdFTkVUVU5SRUFDSCcsICdFQUlfQUdBSU4nLCAnRVBJUEUnXS5pbmNsdWRlcyhzeXNDb2RlKSkge1xuICAgICAgcmV0dXJuIEVSUk9SX0NPREVTLk5FVFdPUks7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbGxiYWNrO1xufVxuXG5mdW5jdGlvbiBnZXRFcnJvckNvZGVOYW1lKGNvZGU6IEVycm9yQ29kZSk6IHN0cmluZyB7XG4gIGNvbnN0IGVudHJ5ID0gT2JqZWN0LmVudHJpZXMoRVJST1JfQ09ERVMpLmZpbmQoKFtfLCB2YWx1ZV0pID0+IHZhbHVlID09PSBjb2RlKTtcbiAgcmV0dXJuIGVudHJ5ID8gYCR7ZW50cnlbMF19ICgke2NvZGV9KWAgOiBTdHJpbmcoY29kZSk7XG59XG5cbmZ1bmN0aW9uIGdldEh0dHBTdGF0dXNUZXh0KHN0YXR1czogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3Qgc3RhdHVzVGV4dHM6IFJlY29yZDxudW1iZXIsIHN0cmluZz4gPSB7XG4gICAgNDAwOiAnQmFkIFJlcXVlc3QnLFxuICAgIDQwMTogJ1VuYXV0aG9yaXplZCcsXG4gICAgNDAzOiAnRm9yYmlkZGVuJyxcbiAgICA0MDQ6ICdOb3QgRm91bmQnLFxuICAgIDQwODogJ1JlcXVlc3QgVGltZW91dCcsXG4gICAgNDA5OiAnQ29uZmxpY3QnLFxuICAgIDQyMjogJ1VucHJvY2Vzc2FibGUgRW50aXR5JyxcbiAgICA0Mjk6ICdUb28gTWFueSBSZXF1ZXN0cycsXG4gICAgNTAwOiAnSW50ZXJuYWwgU2VydmVyIEVycm9yJyxcbiAgICA1MDI6ICdCYWQgR2F0ZXdheScsXG4gICAgNTAzOiAnU2VydmljZSBVbmF2YWlsYWJsZScsXG4gICAgNTA0OiAnR2F0ZXdheSBUaW1lb3V0JyxcbiAgfTtcbiAgcmV0dXJuIHN0YXR1c1RleHRzW3N0YXR1c10gfHwgJ1Vua25vd24nO1xufVxuXG5mdW5jdGlvbiBnZXRFcnJvclN1Z2dlc3Rpb24oZXJyOiB1bmtub3duLCBjb2RlOiBFcnJvckNvZGUpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKGNvZGUgPT09IEVSUk9SX0NPREVTLkFVVEhFTlRJQ0FUSU9OKSB7XG4gICAgcmV0dXJuICdDaGVjayB0aGF0IFBMQVRGT1JNX1RPS0VOIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCBjb3JyZWN0bHknO1xuICB9XG4gIGlmIChjb2RlID09PSBFUlJPUl9DT0RFUy5ORVRXT1JLKSB7XG4gICAgcmV0dXJuICdDaGVjayB5b3VyIGludGVybmV0IGNvbm5lY3Rpb24gYW5kIEFQSSBlbmRwb2ludCBVUkwnO1xuICB9XG4gIGlmIChjb2RlID09PSBFUlJPUl9DT0RFUy5DT05GSUdVUkFUSU9OKSB7XG4gICAgcmV0dXJuICdSdW4gXCJjbGkgdmVyc2lvbiAtLWNoZWNrLWNvbmZpZ1wiIHRvIHZlcmlmeSBjb25maWd1cmF0aW9uJztcbiAgfVxuICBpZiAoY29kZSA9PT0gRVJST1JfQ09ERVMuTk9UX0ZPVU5EKSB7XG4gICAgcmV0dXJuICdWZXJpZnkgdGhlIHJlc291cmNlIElEIGV4aXN0cyBhbmQgeW91IGhhdmUgYWNjZXNzIHRvIGl0JztcbiAgfVxuICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ2NkaycpKSB7XG4gICAgcmV0dXJuICdDaGVjayB0aGUgQ0RLIG91dHB1dCBhYm92ZSBmb3IgQ2xvdWRGb3JtYXRpb24gZXJyb3JzLiBSdW4gd2l0aCAtLWRlYnVnIGZvciBmdWxsIGRldGFpbHMnO1xuICB9XG4gIGlmIChlcnIgaW5zdGFuY2VvZiBWYWxpZGF0aW9uRXJyb3IgJiYgZXJyLmZpZWxkKSB7XG4gICAgcmV0dXJuIGBDaGVjayB0aGUgdmFsdWUgcHJvdmlkZWQgZm9yIFwiJHtlcnIuZmllbGR9XCJgO1xuICB9XG4gIGlmIChpc0F4aW9zRXJyb3IoZXJyKSkge1xuICAgIGNvbnN0IHN0YXR1cyA9IGVyci5yZXNwb25zZT8uc3RhdHVzO1xuICAgIGlmIChzdGF0dXMgPT09IDQwMSB8fCBzdGF0dXMgPT09IDQwMykgcmV0dXJuICdDaGVjayB5b3VyIGF1dGhlbnRpY2F0aW9uIHRva2VuIGFuZCBwZXJtaXNzaW9ucyc7XG4gICAgaWYgKHN0YXR1cyA9PT0gNDI5KSByZXR1cm4gJ1JhdGUgbGltaXQgZXhjZWVkZWQgLSB3YWl0IGEgbW9tZW50IGJlZm9yZSByZXRyeWluZyc7XG4gICAgaWYgKHN0YXR1cyAmJiBzdGF0dXMgPj0gNTAwKSByZXR1cm4gJ1NlcnZlciBlcnJvciAtIHRyeSBhZ2FpbiBsYXRlciBvciBjb250YWN0IHN1cHBvcnQnO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBzYW5pdGl6ZUVycm9yRGF0YShkYXRhOiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykgcmV0dXJuIGRhdGE7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiYgZGF0YSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHNhbml0aXplZCA9IHsgLi4uZGF0YSB9IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIFsndG9rZW4nLCAncGFzc3dvcmQnLCAnc2VjcmV0JywgJ2FwaUtleScsICdhdXRob3JpemF0aW9uJywgJ2p3dCcsICdjcmVkZW50aWFsJywgJ2JlYXJlciddLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgaWYgKGZpZWxkIGluIHNhbml0aXplZCkgc2FuaXRpemVkW2ZpZWxkXSA9ICdbUkVEQUNURURdJztcbiAgICB9KTtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoc2FuaXRpemVkLCBudWxsLCAyKTtcbiAgfVxuICByZXR1cm4gU3RyaW5nKGRhdGEpO1xufVxuXG5mdW5jdGlvbiBzYW5pdGl6ZVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgY29uc3QgdXJsT2JqID0gbmV3IFVSTCh1cmwpO1xuICAgIFsndG9rZW4nLCAna2V5JywgJ3NlY3JldCcsICdwYXNzd29yZCcsICdhcGlLZXknXS5mb3JFYWNoKHBhcmFtID0+IHtcbiAgICAgIGlmICh1cmxPYmouc2VhcmNoUGFyYW1zLmhhcyhwYXJhbSkpIHVybE9iai5zZWFyY2hQYXJhbXMuc2V0KHBhcmFtLCAnW1JFREFDVEVEXScpO1xuICAgIH0pO1xuICAgIHJldHVybiB1cmxPYmoudG9TdHJpbmcoKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxufVxuXG5mdW5jdGlvbiBzYW5pdGl6ZVZhbHVlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gJ251bGwnO1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuICd1bmRlZmluZWQnO1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIGlmICh2YWx1ZS5sZW5ndGggPiAyMCAmJiAvXltBLVphLXowLTkrLz1fLV0rJC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBgJHt2YWx1ZS5zdWJzdHJpbmcoMCwgOCl9Li4uW1JFREFDVEVEXWA7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPiAxMDAgPyB2YWx1ZS5zdWJzdHJpbmcoMCwgOTcpICsgJy4uLicgOiB2YWx1ZTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JykgcmV0dXJuIHNhbml0aXplRXJyb3JEYXRhKHZhbHVlKTtcbiAgY29uc3Qgc3RyID0gU3RyaW5nKHZhbHVlKTtcbiAgcmV0dXJuIHN0ci5sZW5ndGggPiAxMDAgPyBzdHIuc3Vic3RyaW5nKDAsIDk3KSArICcuLi4nIDogc3RyO1xufVxuXG5mdW5jdGlvbiBzYW5pdGl6ZVN0YWNrVHJhY2Uoc3RhY2s6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdGFjay5zcGxpdCgnXFxuJykuc2xpY2UoMCwgMTApLm1hcChsaW5lID0+IGxpbmUucmVwbGFjZSgvXFwvLio/XFwvL2csICcuLi4vJykpLmpvaW4oJ1xcbicpO1xufVxuXG5mdW5jdGlvbiBpc0F4aW9zRXJyb3IoZXJyOiB1bmtub3duKTogZXJyIGlzIEF4aW9zRXJyb3JMaWtlIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgZXJyID09PSAnb2JqZWN0JyAmJlxuICAgIGVyciAhPT0gbnVsbCAmJlxuICAgICdpc0F4aW9zRXJyb3InIGluIGVyciAmJlxuICAgIChlcnIgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLmlzQXhpb3NFcnJvciA9PT0gdHJ1ZVxuICApO1xufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"list-command-utils.d.ts","sourceRoot":"","sources":["../../src/utils/list-command-utils.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,kBAAkB,CAmBvF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAQ5E;AAGD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EAAE,EAChB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,kBAAkB,GAC/B,IAAI,CAgBN"}
1
+ {"version":3,"file":"list-command-utils.d.ts","sourceRoot":"","sources":["../../src/utils/list-command-utils.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,kBAAkB,CAmBvF;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAQ5E;AAGD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EAAE,EAChB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,kBAAkB,GAC/B,IAAI,CAgBN"}