@pipeline-builder/pipeline-manager 4.1.7 → 4.1.9

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 (38) hide show
  1. package/dist/boilerplate.js +3 -2
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +5 -4
  4. package/dist/commands/audit-tokens.js +3 -3
  5. package/dist/commands/create-pipeline.d.ts.map +1 -1
  6. package/dist/commands/create-pipeline.js +4 -3
  7. package/dist/commands/instantiate-template.d.ts.map +1 -1
  8. package/dist/commands/instantiate-template.js +3 -2
  9. package/dist/commands/provision.d.ts +2 -4
  10. package/dist/commands/provision.d.ts.map +1 -1
  11. package/dist/commands/provision.js +3 -14
  12. package/dist/commands/register.d.ts.map +1 -1
  13. package/dist/commands/register.js +3 -2
  14. package/dist/commands/store-token.d.ts.map +1 -1
  15. package/dist/commands/store-token.js +3 -4
  16. package/dist/commands/upload-plugin.d.ts.map +1 -1
  17. package/dist/commands/upload-plugin.js +3 -2
  18. package/dist/commands/version.d.ts.map +1 -1
  19. package/dist/commands/version.js +3 -2
  20. package/dist/lambda/token-renew-handler.d.ts.map +1 -1
  21. package/dist/lambda/token-renew-handler.js +9 -7
  22. package/dist/templates/token-renew-stack.json +0 -5
  23. package/dist/utils/audit-log.d.ts.map +1 -1
  24. package/dist/utils/audit-log.js +3 -2
  25. package/dist/utils/config-loader.d.ts.map +1 -1
  26. package/dist/utils/config-loader.js +3 -2
  27. package/dist/utils/credential-store.d.ts.map +1 -1
  28. package/dist/utils/credential-store.js +3 -2
  29. package/dist/utils/deploy-runner.d.ts.map +1 -1
  30. package/dist/utils/deploy-runner.js +6 -5
  31. package/dist/utils/output-utils.d.ts.map +1 -1
  32. package/dist/utils/output-utils.js +4 -3
  33. package/dist/utils/plugin-resolver.d.ts.map +1 -1
  34. package/dist/utils/plugin-resolver.js +3 -2
  35. package/dist/utils/service-account.d.ts +0 -24
  36. package/dist/utils/service-account.d.ts.map +1 -1
  37. package/dist/utils/service-account.js +27 -2
  38. package/package.json +16 -4
@@ -2,6 +2,7 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  import * as fs from 'fs';
4
4
  import * as path from 'path';
5
+ import { errorMessage } from '@pipeline-builder/api-core';
5
6
  import { Command } from 'commander';
6
7
  import ora from 'ora';
7
8
  import pico from 'picocolors';
@@ -101,7 +102,7 @@ export function createPipeline(program) {
101
102
  }
102
103
  catch (error) {
103
104
  printError('Invalid JSON in properties file', {
104
- error: error instanceof Error ? error.message : String(error),
105
+ error: errorMessage(error),
105
106
  hint: 'Ensure the file contains valid JSON syntax',
106
107
  });
107
108
  throw new ValidationError('Properties file must contain valid JSON', 'file');
@@ -276,7 +277,7 @@ export function createPipeline(program) {
276
277
  catch (deployError) {
277
278
  printError('Pipeline was created but the deploy failed', {
278
279
  pipelineId: pipeline.id,
279
- error: deployError instanceof Error ? deployError.message : String(deployError),
280
+ error: errorMessage(deployError),
280
281
  retry: `pipeline-manager pipeline deploy --id ${pipeline.id}`,
281
282
  });
282
283
  // Re-throw so the process exits non-zero. The record is intentionally
@@ -312,4 +313,4 @@ export function createPipeline(program) {
312
313
  }
313
314
  });
314
315
  }
315
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXBpcGVsaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2NyZWF0ZS1waXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQ3RCLE9BQU8sSUFBSSxNQUFNLFlBQVksQ0FBQztBQUM5QixPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25ILE9BQU8sRUFBK0YsTUFBTSxtQkFBbUIsQ0FBQztBQUNoSSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLHlCQUF5QixFQUFFLDhCQUE4QixFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hNLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqSixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztBQUV4Qzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBZ0I7SUFDN0MsY0FBYyxDQUNaLGdCQUFnQixDQUNkLGlCQUFpQixDQUFDLE9BQU87U0FDdEIsT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUNqQixXQUFXLENBQUMsZ0VBQWdFLENBQUM7U0FDN0UsY0FBYyxDQUFDLG1CQUFtQixFQUFFLHVDQUF1QyxDQUFDO1NBQzVFLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSxrREFBa0QsQ0FBQztTQUNyRixNQUFNLENBQUMsbUNBQW1DLEVBQUUsdURBQXVELENBQUM7U0FDcEcsTUFBTSxDQUFDLG1CQUFtQixFQUFFLGVBQWUsQ0FBQztTQUM1QyxNQUFNLENBQUMseUJBQXlCLEVBQUUsb0dBQW9HLEVBQUUsS0FBSyxDQUFDO1NBQzlJLE1BQU0sQ0FBQyxXQUFXLEVBQUUseUJBQXlCLEVBQUUsS0FBSyxDQUFDO1NBQ3JELE1BQU0sQ0FBQyxVQUFVLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxDQUFDO1NBQ2xELE1BQU0sQ0FBQyxhQUFhLEVBQUUsaUNBQWlDLENBQUM7UUFDekQscUVBQXFFO1FBQ3JFLHVFQUF1RTtRQUN2RSxrQ0FBa0M7U0FDakMsTUFBTSxDQUFDLFVBQVUsRUFBRSxnRUFBZ0UsRUFBRSxLQUFLLENBQUM7U0FDM0YsTUFBTSxDQUFDLCtCQUErQixFQUFFLG9FQUFvRSxFQUFFLE9BQU8sQ0FBQztTQUN0SCxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsc0NBQXNDLEVBQUUsU0FBUyxDQUFDO1NBQzNFLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSwwRkFBMEYsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUNoSSxDQUNGO1NBQ0UsTUFBTSxDQUFDLFdBQVcsRUFBRSwyQ0FBMkMsRUFBRSxLQUFLLENBQUM7U0FDdkUsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN4QixNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxpQkFBaUIsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUU3QixJQUFJLENBQUM7WUFFSCxxQkFBcUI7WUFDckIsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzNCLGFBQWEsQ0FBQztnQkFDWixTQUFTLEVBQUUsT0FBTyxDQUFDLE9BQU8sSUFBSSxtQkFBbUI7Z0JBQ2pELGNBQWMsRUFBRSxPQUFPLENBQUMsWUFBWSxJQUFJLG1CQUFtQjtnQkFDM0QsTUFBTSxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksV0FBVztnQkFDbkMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxVQUFVO2dCQUNoQyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQ2xELFFBQVEsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQ3ZDLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixPQUFPLENBQUMsT0FBTyxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUMvRixpQkFBaUIsRUFBRSxPQUFPLENBQUMsSUFBSTtnQkFDL0Isa0JBQWtCLEVBQUUsT0FBTyxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDeEUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTthQUN6QyxDQUFDLENBQUM7WUFFSCxpREFBaUQ7WUFDakQsZUFBZSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUVuQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hCLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBRWhDLHVCQUF1QjtZQUN2QixJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDakMsVUFBVSxDQUFDLDJCQUEyQixFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRSxNQUFNLElBQUksZUFBZSxDQUFDLG1CQUFtQixPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDdkUsQ0FBQztZQUVELHVCQUF1QjtZQUN2QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN6RCxJQUFJLE9BQU8sS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDeEIsWUFBWSxDQUFDLDZCQUE2QixFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDdEUsQ0FBQztZQUVELE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRTVDLGtCQUFrQjtZQUNsQixJQUFJLFNBQVMsQ0FBQyxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3JELFVBQVUsQ0FBQyw4QkFBOEIsRUFBRTtvQkFDekMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO29CQUNwQyxLQUFLLEVBQUUsY0FBYyxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQztpQkFDdkQsQ0FBQyxDQUFDO2dCQUNILE1BQU0sSUFBSSxlQUFlLENBQUMsb0NBQW9DLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDMUUsQ0FBQztZQUVELFlBQVksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBQ3ZDLGFBQWEsQ0FBQztnQkFDWixXQUFXLEVBQUUsT0FBTyxDQUFDLElBQUk7Z0JBQ3pCLFdBQVcsRUFBRSxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDM0MsV0FBVyxFQUFFLE9BQU87YUFDckIsQ0FBQyxDQUFDO1lBRUgsaUNBQWlDO1lBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEIsU0FBUyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7WUFFNUMsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRTNELElBQUksS0FBOEIsQ0FBQztZQUNuQyxJQUFJLENBQUM7Z0JBQ0gsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbEMsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsVUFBVSxDQUFDLGlDQUFpQyxFQUFFO29CQUM1QyxLQUFLLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztvQkFDN0QsSUFBSSxFQUFFLDRDQUE0QztpQkFDbkQsQ0FBQyxDQUFDO2dCQUNILE1BQU0sSUFBSSxlQUFlLENBQUMseUNBQXlDLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDL0UsQ0FBQztZQUVELGdDQUFnQztZQUNoQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ2hELFVBQVUsQ0FBQywyQkFBMkIsRUFBRTtvQkFDdEMsSUFBSSxFQUFFLE9BQU8sS0FBSztvQkFDbEIsSUFBSSxFQUFFLGtDQUFrQztpQkFDekMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sSUFBSSxlQUFlLENBQUMsbUNBQW1DLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDekUsQ0FBQztZQUVELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBRTVDLFlBQVksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1lBQy9DLGFBQWEsQ0FBQztnQkFDWixZQUFZLEVBQUUsU0FBUyxDQUFDLFFBQVEsRUFBRTtnQkFDbEMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUN4RixDQUFDLENBQUM7WUFFSCw4QkFBOEI7WUFDOUIsSUFBSSxTQUFTLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3BCLFlBQVksQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO1lBQ25GLENBQUM7WUFFRCxpRUFBaUU7WUFDakUsd0RBQXdEO1lBQ3hELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxPQUFPLElBQUssS0FBSyxDQUFDLE9BQThCLENBQUM7WUFDakYsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsWUFBWSxJQUFLLEtBQUssQ0FBQyxZQUFtQyxDQUFDO1lBRWhHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDckIsVUFBVSxDQUFDLHFCQUFxQixFQUFFO29CQUNoQyxJQUFJLEVBQUUsa0VBQWtFO2lCQUN6RSxDQUFDLENBQUM7Z0JBQ0gsTUFBTSxJQUFJLGVBQWUsQ0FBQyxxQkFBcUIsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUM5RCxDQUFDO1lBQ0QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQzFCLFVBQVUsQ0FBQywwQkFBMEIsRUFBRTtvQkFDckMsSUFBSSxFQUFFLDRFQUE0RTtpQkFDbkYsQ0FBQyxDQUFDO2dCQUNILE1BQU0sSUFBSSxlQUFlLENBQUMsMEJBQTBCLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDeEUsQ0FBQztZQUVELHdFQUF3RTtZQUN4RSxtRUFBbUU7WUFDbkUsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsSUFBSTttQkFDbkMsS0FBSyxDQUFDLFlBQW1DO21CQUMxQyxtQkFBbUIsQ0FBQyxvQkFBb0IsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUVoRSxNQUFNLE9BQU8sR0FBMEI7Z0JBQ3JDLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixZQUFZLEVBQUUsb0JBQW9CO2dCQUNsQyxZQUFZLEVBQUUsb0JBQW9CO2dCQUNsQyxLQUFLO2FBQ04sQ0FBQztZQUVGLHVDQUF1QztZQUN2QyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1lBQzFDLENBQUM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ2xDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUN0QyxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNqQyxPQUFPLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDcEMsQ0FBQztZQUVELGVBQWU7WUFDZixJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDaEIsWUFBWSxDQUFDLDJCQUEyQixDQUFDLENBQUM7Z0JBQzFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzlDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2hCLFlBQVksQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO2dCQUMzRSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNoQixJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDbkIsU0FBUyxDQUFDLHNFQUFzRSxFQUFFO3dCQUNoRixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sSUFBSSxXQUFXO3dCQUN2QyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sSUFBSSxXQUFXO3dCQUNyQyxlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWU7cUJBQ3pDLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELFNBQVMsQ0FBQywyREFBMkQsQ0FBQyxDQUFDO2dCQUN2RSxPQUFPO1lBQ1QsQ0FBQztZQUVELGtDQUFrQztZQUNsQyxNQUFNLE1BQU0sR0FBRyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFbEMsa0JBQWtCO1lBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEIsWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFFbEMsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEQsSUFBSSxXQUE2QixDQUFDO1lBQ2xDLElBQUksZUFBdUIsQ0FBQztZQUM1QixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNoQyxXQUFXLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUM3QixNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFDdEIsT0FBTyxDQUNSLENBQUM7Z0JBQ0YsZUFBZSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxZQUFZLENBQUM7Z0JBQzVDLE9BQU8sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUN0QyxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixPQUFPLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7Z0JBQ3pDLE1BQU0sS0FBSyxDQUFDO1lBQ2QsQ0FBQztZQUVELE1BQU0sUUFBUSxHQUFHLHFCQUFxQixDQUFXLFdBQVcsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFaEYsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQztnQkFDbEIsVUFBVSxDQUFDLDJCQUEyQixFQUFFO29CQUN0QyxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRO2lCQUNoRSxDQUFDLENBQUM7Z0JBQ0gsTUFBTSxJQUFJLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO1lBQ2hGLENBQUM7WUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hCLFlBQVksQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1lBRWhELGdDQUFnQztZQUNoQyxhQUFhLENBQUM7Z0JBQ1osYUFBYSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN2QyxTQUFTLEVBQUUsUUFBUSxDQUFDLE9BQU87Z0JBQzNCLGNBQWMsRUFBRSxRQUFRLENBQUMsWUFBWTtnQkFDckMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxZQUFZLElBQUksV0FBVztnQkFDNUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxVQUFVLElBQUksS0FBSztnQkFDMUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtnQkFDNUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtnQkFDMUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxPQUFPLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjthQUMvRixDQUFDLENBQUM7WUFFSCxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDaEIsYUFBYSxDQUFDO29CQUNaLFlBQVksRUFBRSxRQUFRLENBQUMsU0FBUztpQkFDakMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELHNCQUFzQjtZQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hCLGFBQWEsQ0FBQztnQkFDWixjQUFjLEVBQUUsV0FBVztnQkFDM0Isa0JBQWtCLEVBQUUsY0FBYyxDQUFDLGVBQWUsQ0FBQztnQkFDbkQsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUM7YUFDekQsQ0FBQyxDQUFDO1lBRUgsNkJBQTZCO1lBQzdCLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQztZQUM3QixxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUVqQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxZQUFZLFFBQVEsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3hFLEVBQUUsQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWhFLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEIsWUFBWSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7WUFDL0MsYUFBYSxDQUFDO2dCQUNaLGFBQWEsRUFBRSxVQUFVO2dCQUN6QixXQUFXLEVBQUUsY0FBYyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDO2FBQzFELENBQUMsQ0FBQztZQUVILG1DQUFtQztZQUNuQywwRUFBMEU7WUFDMUUsK0VBQStFO1lBQy9FLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNuQixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNoQixZQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDO29CQUNILHVFQUF1RTtvQkFDdkUsb0VBQW9FO29CQUNwRSxjQUFjLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztvQkFDaEQscUVBQXFFO29CQUNyRSx3REFBd0Q7b0JBQ3hELE1BQU0sWUFBWSxHQUFHLE1BQU0sOEJBQThCLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ25FLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxTQUFTLEVBQTBCLENBQUM7b0JBQ3RFLHFFQUFxRTtvQkFDckUsbUVBQW1FO29CQUNuRSxNQUFNLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3BFLE1BQU0sU0FBUyxDQUFDO3dCQUNkLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTt3QkFDMUIsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZO3dCQUNsQyxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87d0JBQ3hCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTt3QkFDdEIsZUFBZSxFQUFFLE9BQU8sQ0FBQyxlQUFlO3dCQUN4QyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07d0JBQ3RCLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSzt3QkFDM0IsV0FBVzt3QkFDWCxjQUFjLEVBQUUsWUFBWTt3QkFDNUIsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxXQUFXO3dCQUNqRCxlQUFlLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPO3FCQUMxQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFBQyxPQUFPLFdBQVcsRUFBRSxDQUFDO29CQUNyQixVQUFVLENBQUMsNENBQTRDLEVBQUU7d0JBQ3ZELFVBQVUsRUFBRSxRQUFRLENBQUMsRUFBRTt3QkFDdkIsS0FBSyxFQUFFLFdBQVcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7d0JBQy9FLEtBQUssRUFBRSx5Q0FBeUMsUUFBUSxDQUFDLEVBQUUsRUFBRTtxQkFDOUQsQ0FBQyxDQUFDO29CQUNILHNFQUFzRTtvQkFDdEUsdURBQXVEO29CQUN2RCxNQUFNLFdBQVcsQ0FBQztnQkFDcEIsQ0FBQztZQUNILENBQUM7WUFFRCxhQUFhO1lBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQixZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDM0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLElBQUksQ0FBQyxlQUFlLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM5RSxDQUFDO1lBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLENBQUMscUJBQXFCLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoRixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2pHLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFbEIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztnQkFDM0IsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFdBQVc7b0JBQ1gsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO29CQUN4QixZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQVk7b0JBQ2xDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO29CQUM1QixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07aUJBQ3ZCO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgb3JhIGZyb20gJ29yYSc7XG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJztcbmltcG9ydCB7IGZvcm1hdER1cmF0aW9uLCBmb3JtYXRGaWxlU2l6ZSwgRklMRV9TSVpFX0xJTUlUUywgZGVmYXVsdFBpcGVsaW5lTmFtZSB9IGZyb20gJy4uL2NvbmZpZy9jbGkuY29uc3RhbnRzLmpzJztcbmltcG9ydCB7IHR5cGUgUGlwZWxpbmUsIHR5cGUgUGlwZWxpbmVSZXNwb25zZSwgdHlwZSBDcmVhdGVQaXBlbGluZVJlcXVlc3QsIHR5cGUgUGxhdGZvcm1EZXBsb3lDb25maWcgfSBmcm9tICcuLi90eXBlcy9pbmRleC5qcyc7XG5pbXBvcnQgeyBwcmludENvbW1hbmRIZWFkZXIsIHByaW50U3NsV2FybmluZywgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudCwgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudEFzeW5jLCB3aXRoU3NsT3B0aW9ucywgd2l0aFByb2ZpbGVPcHRpb24sIHdpdGhSZWdpb25PcHRpb24gfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IHJ1bkRlcGxveSB9IGZyb20gJy4uL3V0aWxzL2RlcGxveS1ydW5uZXIuanMnO1xuaW1wb3J0IHsgRVJST1JfQ09ERVMsIGhhbmRsZUVycm9yLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICcuLi91dGlscy9lcnJvci1oYW5kbGVyLmpzJztcbmltcG9ydCB7IGVuc3VyZU91dHB1dERpcmVjdG9yeSwgcHJpbnRFcnJvciwgcHJpbnRJbmZvLCBwcmludEtleVZhbHVlLCBwcmludFNlY3Rpb24sIHByaW50U3VjY2VzcywgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcbmltcG9ydCB7IGZldGNoUGlwZWxpbmVQcm9wcyB9IGZyb20gJy4uL3V0aWxzL3BpcGVsaW5lLWNvbmZpZy5qcyc7XG5pbXBvcnQgeyBleHRyYWN0U2luZ2xlUmVzcG9uc2UgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS11dGlscy5qcyc7XG5pbXBvcnQgeyByZWxheFRsc0ZvckNsaSB9IGZyb20gJy4uL3V0aWxzL3Rscy5qcyc7XG5cbmNvbnN0IHsgYm9sZCwgY3lhbiwgZGltLCBncmVlbiB9ID0gcGljbztcblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGBjcmVhdGUtcGlwZWxpbmVgIGNvbW1hbmQgd2l0aCB0aGUgQ0xJIHByb2dyYW0uXG4gKlxuICogQWNjZXB0cyBhIHBpcGVsaW5lIHByb3BlcnRpZXMgSlNPTiBmaWxlLCB2YWxpZGF0ZXMgaXQsIHJlc29sdmVzXG4gKiBwcm9qZWN0L29yZ2FuaXphdGlvbiBmcm9tIENMSSBmbGFncyBvciB0aGUgcHJvcHMgZmlsZSwgYW5kXG4gKiBjcmVhdGVzIHRoZSBwaXBlbGluZSB2aWEgdGhlIHBsYXRmb3JtIEFQSS5cbiAqXG4gKiBAcGFyYW0gcHJvZ3JhbSAtIFRoZSByb290IENvbW1hbmRlciBwcm9ncmFtIGluc3RhbmNlIHRvIGF0dGFjaCB0aGUgY29tbWFuZCB0by5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBpcGVsaW5lKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgd2l0aFNzbE9wdGlvbnMoXG4gICAgd2l0aFJlZ2lvbk9wdGlvbihcbiAgICAgIHdpdGhQcm9maWxlT3B0aW9uKHByb2dyYW1cbiAgICAgICAgLmNvbW1hbmQoJ2NyZWF0ZScpXG4gICAgICAgIC5kZXNjcmlwdGlvbignQ3JlYXRlIGEgbmV3IHBpcGVsaW5lIOKAlCBhbmQgb3B0aW9uYWxseSBkZXBsb3kgaXQgd2l0aCAtLWRlcGxveScpXG4gICAgICAgIC5yZXF1aXJlZE9wdGlvbignLWYsIC0tZmlsZSA8ZmlsZT4nLCAnUGF0aCB0byBwaXBlbGluZSBwcm9wZXJ0aWVzIEpTT04gZmlsZScpXG4gICAgICAgIC5vcHRpb24oJy1wLCAtLXByb2plY3QgPHByb2plY3Q+JywgJ1Byb2plY3QgbmFtZSAoZmFsbHMgYmFjayB0byB2YWx1ZSBpbiBwcm9wcyBmaWxlKScpXG4gICAgICAgIC5vcHRpb24oJy1vLCAtLW9yZ2FuaXphdGlvbiA8b3JnYW5pemF0aW9uPicsICdPcmdhbml6YXRpb24gbmFtZSAoZmFsbHMgYmFjayB0byB2YWx1ZSBpbiBwcm9wcyBmaWxlKScpXG4gICAgICAgIC5vcHRpb24oJy1uLCAtLW5hbWUgPG5hbWU+JywgJ1BpcGVsaW5lIG5hbWUnKVxuICAgICAgICAub3B0aW9uKCctYSwgLS12aXNpYmlsaXR5IDxydW5nPicsICdTaGFyaW5nIHJ1bmcgKHByaXZhdGV8b3JnfHB1YmxpYykuIFBpcGVsaW5lcyBkZWZhdWx0IHRvIG9yZyDigJQgYSB0ZWFtIGFzc2V0IGlzIHZpc2libGUgdG8gdGhlIHRlYW0uJywgJ29yZycpXG4gICAgICAgIC5vcHRpb24oJy0tZGVmYXVsdCcsICdTZXQgYXMgZGVmYXVsdCBwaXBlbGluZScsIGZhbHNlKVxuICAgICAgICAub3B0aW9uKCctLWFjdGl2ZScsICdTZXQgcGlwZWxpbmUgYXMgYWN0aXZlJywgdHJ1ZSlcbiAgICAgICAgLm9wdGlvbignLS1uby1hY3RpdmUnLCAnQ3JlYXRlIHRoZSBwaXBlbGluZSBhcyBpbmFjdGl2ZScpXG4gICAgICAgIC8vIC0tZGVwbG95OiBhZnRlciBjcmVhdGluZyB0aGUgcmVjb3JkLCBydW4gdGhlIHNhbWUgQ0RLIGRlcGxveSArIEFSTlxuICAgICAgICAvLyByZWdpc3RyYXRpb24gYXMgYHBpcGVsaW5lIGRlcGxveSAtLWlkYCAoc2hhcmVkIHJ1bkRlcGxveSkuIFRoZSBmbGFnc1xuICAgICAgICAvLyBiZWxvdyBhcHBseSBvbmx5IHdpdGggLS1kZXBsb3kuXG4gICAgICAgIC5vcHRpb24oJy0tZGVwbG95JywgJ0RlcGxveSB0aGUgcGlwZWxpbmUgd2l0aCBBV1MgQ0RLIGltbWVkaWF0ZWx5IGFmdGVyIGNyZWF0aW5nIGl0JywgZmFsc2UpXG4gICAgICAgIC5vcHRpb24oJy0tcmVxdWlyZS1hcHByb3ZhbCA8YXBwcm92YWw+JywgJ0RlcGxveSBhcHByb3ZhbCBsZXZlbDogbmV2ZXJ8YW55LWNoYW5nZXxicm9hZGVuaW5nICh3aXRoIC0tZGVwbG95KScsICduZXZlcicpXG4gICAgICAgIC5vcHRpb24oJy0tb3V0cHV0IDxkaXI+JywgJ0NESyBvdXRwdXQgZGlyZWN0b3J5ICh3aXRoIC0tZGVwbG95KScsICdjZGsub3V0JylcbiAgICAgICAgLm9wdGlvbignLS1zdG9yZS10b2tlbnMnLCAnRGVwbG95IGF1dGggdmlhIEFXUyBTZWNyZXRzIE1hbmFnZXIgdG9rZW4gKHdpdGggLS1kZXBsb3k7IHJlcXVpcmVzIFBMQVRGT1JNX1NFQ1JFVF9OQU1FKScsIGZhbHNlKSksXG4gICAgKSxcbiAgKVxuICAgIC5vcHRpb24oJy0tZHJ5LXJ1bicsICdWYWxpZGF0ZSBpbnB1dHMgd2l0aG91dCBjcmVhdGluZyBwaXBlbGluZScsIGZhbHNlKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdDcmVhdGUgUGlwZWxpbmUnLCAnQ3JlYXRpbmcgUGlwZWxpbmUnKTtcbiAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG5cbiAgICAgIHRyeSB7XG5cbiAgICAgICAgLy8gRGlzcGxheSBwYXJhbWV0ZXJzXG4gICAgICAgIHByaW50SW5mbygnQ29uZmlndXJhdGlvbicpO1xuICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAnUHJvamVjdCc6IG9wdGlvbnMucHJvamVjdCB8fCAnKGZyb20gcHJvcHMgZmlsZSknLFxuICAgICAgICAgICdPcmdhbml6YXRpb24nOiBvcHRpb25zLm9yZ2FuaXphdGlvbiB8fCAnKGZyb20gcHJvcHMgZmlsZSknLFxuICAgICAgICAgICdOYW1lJzogb3B0aW9ucy5uYW1lIHx8ICcobm90IHNldCknLFxuICAgICAgICAgICdWaXNpYmlsaXR5Jzogb3B0aW9ucy52aXNpYmlsaXR5LFxuICAgICAgICAgICdEZWZhdWx0IFBpcGVsaW5lJzogb3B0aW9ucy5kZWZhdWx0ID8gJ1llcycgOiAnTm8nLFxuICAgICAgICAgICdBY3RpdmUnOiBvcHRpb25zLmFjdGl2ZSA/ICdZZXMnIDogJ05vJyxcbiAgICAgICAgICAnRGVwbG95IEFmdGVyIENyZWF0ZSc6IG9wdGlvbnMuZGVwbG95ID8gYFllcyAocHJvZmlsZTogJHtvcHRpb25zLnByb2ZpbGUgfHwgJ2RlZmF1bHQnfSlgIDogJ05vJyxcbiAgICAgICAgICAnUHJvcGVydGllcyBGaWxlJzogb3B0aW9ucy5maWxlLFxuICAgICAgICAgICdTU0wgVmVyaWZpY2F0aW9uJzogb3B0aW9ucy52ZXJpZnlTc2wgPT09IGZhbHNlID8gJ0Rpc2FibGVkJyA6ICdFbmFibGVkJyxcbiAgICAgICAgICAnRHJ5IFJ1bic6IG9wdGlvbnMuZHJ5UnVuID8gJ1llcycgOiAnTm8nLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTZWN1cml0eSB3YXJuaW5nIGZvciBTU0wgdmVyaWZpY2F0aW9uIGRpc2FibGVkXG4gICAgICAgIHByaW50U3NsV2FybmluZyhvcHRpb25zLnZlcmlmeVNzbCk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludFNlY3Rpb24oJ0ZpbGUgVmFsaWRhdGlvbicpO1xuXG4gICAgICAgIC8vIFZhbGlkYXRlIGZpbGUgZXhpc3RzXG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhvcHRpb25zLmZpbGUpKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignUHJvcGVydGllcyBmaWxlIG5vdCBmb3VuZCcsIHsgcGF0aDogb3B0aW9ucy5maWxlIH0pO1xuICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoYEZpbGUgbm90IGZvdW5kOiAke29wdGlvbnMuZmlsZX1gLCAnZmlsZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgZmlsZSBleHRlbnNpb25cbiAgICAgICAgY29uc3QgZmlsZUV4dCA9IHBhdGguZXh0bmFtZShvcHRpb25zLmZpbGUpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChmaWxlRXh0ICE9PSAnLmpzb24nKSB7XG4gICAgICAgICAgcHJpbnRXYXJuaW5nKCdGaWxlIGV4dGVuc2lvbiBpcyBub3QgLmpzb24nLCB7IGV4dGVuc2lvbjogZmlsZUV4dCB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVTdGF0cyA9IGZzLnN0YXRTeW5jKG9wdGlvbnMuZmlsZSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgZmlsZSBzaXplXG4gICAgICAgIGlmIChmaWxlU3RhdHMuc2l6ZSA+IEZJTEVfU0laRV9MSU1JVFMuUElQRUxJTkVfUFJPUFMpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdQcm9wZXJ0aWVzIGZpbGUgaXMgdG9vIGxhcmdlJywge1xuICAgICAgICAgICAgc2l6ZTogZm9ybWF0RmlsZVNpemUoZmlsZVN0YXRzLnNpemUpLFxuICAgICAgICAgICAgbGltaXQ6IGZvcm1hdEZpbGVTaXplKEZJTEVfU0laRV9MSU1JVFMuUElQRUxJTkVfUFJPUFMpLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ1Byb3BlcnRpZXMgZmlsZSBleGNlZWRzIHNpemUgbGltaXQnLCAnZmlsZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJpbnRTdWNjZXNzKCdGaWxlIHZhbGlkYXRpb24gcGFzc2VkJyk7XG4gICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICdGaWxlIFBhdGgnOiBvcHRpb25zLmZpbGUsXG4gICAgICAgICAgJ0ZpbGUgU2l6ZSc6IGZvcm1hdEZpbGVTaXplKGZpbGVTdGF0cy5zaXplKSxcbiAgICAgICAgICAnRXh0ZW5zaW9uJzogZmlsZUV4dCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gUmVhZCBhbmQgcGFyc2UgcHJvcGVydGllcyBmaWxlXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRJbmZvKCdSZWFkaW5nIHBpcGVsaW5lIHByb3BlcnRpZXMuLi4nKTtcblxuICAgICAgICBjb25zdCBmaWxlQ29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhvcHRpb25zLmZpbGUsICd1dGYtOCcpO1xuXG4gICAgICAgIGxldCBwcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcHJvcHMgPSBKU09OLnBhcnNlKGZpbGVDb250ZW50KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdJbnZhbGlkIEpTT04gaW4gcHJvcGVydGllcyBmaWxlJywge1xuICAgICAgICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKSxcbiAgICAgICAgICAgIGhpbnQ6ICdFbnN1cmUgdGhlIGZpbGUgY29udGFpbnMgdmFsaWQgSlNPTiBzeW50YXgnLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ1Byb3BlcnRpZXMgZmlsZSBtdXN0IGNvbnRhaW4gdmFsaWQgSlNPTicsICdmaWxlJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBWYWxpZGF0ZSBwcm9wZXJ0aWVzIHN0cnVjdHVyZVxuICAgICAgICBpZiAodHlwZW9mIHByb3BzICE9PSAnb2JqZWN0JyB8fCBwcm9wcyA9PT0gbnVsbCkge1xuICAgICAgICAgIHByaW50RXJyb3IoJ0ludmFsaWQgcHJvcGVydGllcyBmb3JtYXQnLCB7XG4gICAgICAgICAgICB0eXBlOiB0eXBlb2YgcHJvcHMsXG4gICAgICAgICAgICBoaW50OiAnUHJvcGVydGllcyBtdXN0IGJlIGEgSlNPTiBvYmplY3QnLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ1Byb3BlcnRpZXMgbXVzdCBiZSBhIHZhbGlkIG9iamVjdCcsICdmaWxlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9wQ291bnQgPSBPYmplY3Qua2V5cyhwcm9wcykubGVuZ3RoO1xuXG4gICAgICAgIHByaW50U3VjY2VzcygnUHJvcGVydGllcyBwYXJzZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICdUb3RhbCBLZXlzJzogcHJvcENvdW50LnRvU3RyaW5nKCksXG4gICAgICAgICAgJ1NhbXBsZSBLZXlzJzogT2JqZWN0LmtleXMocHJvcHMpLnNsaWNlKDAsIDUpLmpvaW4oJywgJykgKyAocHJvcENvdW50ID4gNSA/ICcuLi4nIDogJycpLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBWYWxpZGF0ZSBwcm9wZXJ0aWVzIGNvbnRlbnRcbiAgICAgICAgaWYgKHByb3BDb3VudCA9PT0gMCkge1xuICAgICAgICAgIHByaW50V2FybmluZygnUHJvcGVydGllcyBvYmplY3QgaXMgZW1wdHkgLSBwaXBlbGluZSB3aWxsIGhhdmUgbm8gY29uZmlndXJhdGlvbicpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVzb2x2ZSBwcm9qZWN0ICYgb3JnYW5pemF0aW9uOiBwcmVmZXIgQ0xJIGZsYWdzLCBmYWxsIGJhY2sgdG9cbiAgICAgICAgLy8gdmFsdWVzIGVtYmVkZGVkIGluc2lkZSB0aGUgcHJvcHMgZmlsZSAoYnVpbGRlclByb3BzKS5cbiAgICAgICAgY29uc3QgcmVzb2x2ZWRQcm9qZWN0ID0gb3B0aW9ucy5wcm9qZWN0ID8/IChwcm9wcy5wcm9qZWN0IGFzIHN0cmluZyB8IHVuZGVmaW5lZCk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkT3JnYW5pemF0aW9uID0gb3B0aW9ucy5vcmdhbml6YXRpb24gPz8gKHByb3BzLm9yZ2FuaXphdGlvbiBhcyBzdHJpbmcgfCB1bmRlZmluZWQpO1xuXG4gICAgICAgIGlmICghcmVzb2x2ZWRQcm9qZWN0KSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignUHJvamVjdCBpcyByZXF1aXJlZCcsIHtcbiAgICAgICAgICAgIGhpbnQ6ICdQcm92aWRlIC1wLy0tcHJvamVjdCBmbGFnIG9yIGluY2x1ZGUgXCJwcm9qZWN0XCIgaW4gdGhlIHByb3BzIGZpbGUnLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ1Byb2plY3QgaXMgcmVxdWlyZWQnLCAncHJvamVjdCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmVzb2x2ZWRPcmdhbml6YXRpb24pIHtcbiAgICAgICAgICBwcmludEVycm9yKCdPcmdhbml6YXRpb24gaXMgcmVxdWlyZWQnLCB7XG4gICAgICAgICAgICBoaW50OiAnUHJvdmlkZSAtby8tLW9yZ2FuaXphdGlvbiBmbGFnIG9yIGluY2x1ZGUgXCJvcmdhbml6YXRpb25cIiBpbiB0aGUgcHJvcHMgZmlsZScsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignT3JnYW5pemF0aW9uIGlzIHJlcXVpcmVkJywgJ29yZ2FuaXphdGlvbicpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVzb2x2ZSBwaXBlbGluZU5hbWUgd2l0aCB0aGUgc2hhcmVkIGRlZmF1bHQgKG1pcnJvcnMgcGlwZWxpbmUtY29yZSdzXG4gICAgICAgIC8vIHBpcGVsaW5lLWNvbmZpZ3VyYXRpb24udHMpIHNvIGNyZWF0ZSArIHJlZ2lzdHJ5ICsgQ0RLIGFsbCBhZ3JlZS5cbiAgICAgICAgY29uc3QgcmVzb2x2ZWRQaXBlbGluZU5hbWUgPSBvcHRpb25zLm5hbWVcbiAgICAgICAgICA/PyAocHJvcHMucGlwZWxpbmVOYW1lIGFzIHN0cmluZyB8IHVuZGVmaW5lZClcbiAgICAgICAgICA/PyBkZWZhdWx0UGlwZWxpbmVOYW1lKHJlc29sdmVkT3JnYW5pemF0aW9uLCByZXNvbHZlZFByb2plY3QpO1xuXG4gICAgICAgIGNvbnN0IHBheWxvYWQ6IENyZWF0ZVBpcGVsaW5lUmVxdWVzdCA9IHtcbiAgICAgICAgICBwcm9qZWN0OiByZXNvbHZlZFByb2plY3QsXG4gICAgICAgICAgb3JnYW5pemF0aW9uOiByZXNvbHZlZE9yZ2FuaXphdGlvbixcbiAgICAgICAgICBwaXBlbGluZU5hbWU6IHJlc29sdmVkUGlwZWxpbmVOYW1lLFxuICAgICAgICAgIHByb3BzLFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIEFkZCBvcHRpb25hbCBmaWVsZHMgb25seSBpZiBwcm92aWRlZFxuICAgICAgICBpZiAob3B0aW9ucy52aXNpYmlsaXR5KSB7XG4gICAgICAgICAgcGF5bG9hZC52aXNpYmlsaXR5ID0gb3B0aW9ucy52aXNpYmlsaXR5O1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmRlZmF1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHBheWxvYWQuaXNEZWZhdWx0ID0gb3B0aW9ucy5kZWZhdWx0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmFjdGl2ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcGF5bG9hZC5pc0FjdGl2ZSA9IG9wdGlvbnMuYWN0aXZlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRHJ5IHJ1biBtb2RlXG4gICAgICAgIGlmIChvcHRpb25zLmRyeVJ1bikge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgICBwcmludFNlY3Rpb24oJ0RyeSBSdW4gLSBSZXF1ZXN0IFByZXZpZXcnKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShwYXlsb2FkLCBudWxsLCAyKSk7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50U3VjY2Vzcygn4pyTIFZhbGlkYXRpb24gY29tcGxldGUgLSBubyBwaXBlbGluZSBjcmVhdGVkIChkcnkgcnVuIG1vZGUpJyk7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIGlmIChvcHRpb25zLmRlcGxveSkge1xuICAgICAgICAgICAgcHJpbnRJbmZvKCdXaXRoIC0tZGVwbG95LCB0aGUgcGlwZWxpbmUgd291bGQgYmUgZGVwbG95ZWQgdmlhIENESyBhZnRlciBjcmVhdGlvbicsIHtcbiAgICAgICAgICAgICAgcHJvZmlsZTogb3B0aW9ucy5wcm9maWxlIHx8ICcoZGVmYXVsdCknLFxuICAgICAgICAgICAgICByZWdpb246IG9wdGlvbnMucmVnaW9uIHx8ICcoZGVmYXVsdCknLFxuICAgICAgICAgICAgICByZXF1aXJlQXBwcm92YWw6IG9wdGlvbnMucmVxdWlyZUFwcHJvdmFsLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHByaW50SW5mbygnVG8gY3JlYXRlIHRoZSBwaXBlbGluZSwgcnVuIHRoZSBjb21tYW5kIHdpdGhvdXQgLS1kcnktcnVuJyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIGF1dGhlbnRpY2F0ZWQgQVBJIGNsaWVudFxuICAgICAgICBjb25zdCBjbGllbnQgPSBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50KG9wdGlvbnMpO1xuICAgICAgICBjb25zdCBjb25maWcgPSBjbGllbnQuZ2V0Q29uZmlnKCk7XG5cbiAgICAgICAgLy8gQ3JlYXRlIHBpcGVsaW5lXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTZWN0aW9uKCdDcmVhdGluZyBQaXBlbGluZScpO1xuXG4gICAgICAgIGNvbnN0IHNwaW5uZXIgPSBvcmEoJ0NyZWF0aW5nIHBpcGVsaW5lLi4uJykuc3RhcnQoKTtcbiAgICAgICAgbGV0IHJhd1Jlc3BvbnNlOiBQaXBlbGluZVJlc3BvbnNlO1xuICAgICAgICBsZXQgcmVxdWVzdER1cmF0aW9uOiBudW1iZXI7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVxdWVzdFN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICByYXdSZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PFBpcGVsaW5lUmVzcG9uc2U+KFxuICAgICAgICAgICAgY29uZmlnLmFwaS5waXBlbGluZVVybCxcbiAgICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXF1ZXN0RHVyYXRpb24gPSBEYXRlLm5vdygpIC0gcmVxdWVzdFN0YXJ0O1xuICAgICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnUGlwZWxpbmUgY3JlYXRlZCcpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHNwaW5uZXIuZmFpbCgnUGlwZWxpbmUgY3JlYXRpb24gZmFpbGVkJyk7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwaXBlbGluZSA9IGV4dHJhY3RTaW5nbGVSZXNwb25zZTxQaXBlbGluZT4ocmF3UmVzcG9uc2UsICdwaXBlbGluZScsICdpZCcpO1xuXG4gICAgICAgIGlmICghcGlwZWxpbmU/LmlkKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignSW52YWxpZCBwaXBlbGluZSByZXNwb25zZScsIHtcbiAgICAgICAgICAgIHJlc3BvbnNlS2V5czogcmF3UmVzcG9uc2UgPyBPYmplY3Qua2V5cyhyYXdSZXNwb25zZSkgOiAnKG51bGwpJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BpcGVsaW5lIGNyZWF0aW9uIGZhaWxlZCAtIG5vIHZhbGlkIHBpcGVsaW5lIGRhdGEgcmVjZWl2ZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTZWN0aW9uKCfinJMgUGlwZWxpbmUgQ3JlYXRlZCBTdWNjZXNzZnVsbHknKTtcblxuICAgICAgICAvLyBEaXNwbGF5IGNyZWF0ZWQgcGlwZWxpbmUgaW5mb1xuICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAnUGlwZWxpbmUgSUQnOiBncmVlbihib2xkKHBpcGVsaW5lLmlkKSksXG4gICAgICAgICAgJ1Byb2plY3QnOiBwaXBlbGluZS5wcm9qZWN0LFxuICAgICAgICAgICdPcmdhbml6YXRpb24nOiBwaXBlbGluZS5vcmdhbml6YXRpb24sXG4gICAgICAgICAgJ05hbWUnOiBwaXBlbGluZS5waXBlbGluZU5hbWUgfHwgJyhub3Qgc2V0KScsXG4gICAgICAgICAgJ1Zpc2liaWxpdHknOiBwaXBlbGluZS52aXNpYmlsaXR5IHx8ICdvcmcnLFxuICAgICAgICAgICdEZWZhdWx0JzogcGlwZWxpbmUuaXNEZWZhdWx0ID8gJ1llcycgOiAnTm8nLFxuICAgICAgICAgICdBY3RpdmUnOiBwaXBlbGluZS5pc0FjdGl2ZSA/ICdZZXMnIDogJ05vJyxcbiAgICAgICAgICAnUHJvcGVydGllcyc6IHBpcGVsaW5lLnByb3BzID8gYCR7T2JqZWN0LmtleXMocGlwZWxpbmUucHJvcHMpLmxlbmd0aH0ga2V5c2AgOiAnKG5vdCByZXR1cm5lZCknLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocGlwZWxpbmUuY3JlYXRlZEF0KSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgJ0NyZWF0ZWQgQXQnOiBwaXBlbGluZS5jcmVhdGVkQXQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQZXJmb3JtYW5jZSBtZXRyaWNzXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgJ0V4ZWN1dGlvbiBJRCc6IGV4ZWN1dGlvbklkLFxuICAgICAgICAgICdSZXF1ZXN0IER1cmF0aW9uJzogZm9ybWF0RHVyYXRpb24ocmVxdWVzdER1cmF0aW9uKSxcbiAgICAgICAgICAnVG90YWwgRHVyYXRpb24nOiBmb3JtYXREdXJhdGlvbihEYXRlLm5vdygpIC0gc3RhcnRUaW1lKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU2F2ZSBwaXBlbGluZSBpbmZvIHRvIGZpbGVcbiAgICAgICAgY29uc3Qgb3V0cHV0RGlyID0gJy4vb3V0cHV0JztcbiAgICAgICAgZW5zdXJlT3V0cHV0RGlyZWN0b3J5KG91dHB1dERpcik7XG5cbiAgICAgICAgY29uc3Qgb3V0cHV0RmlsZSA9IHBhdGguam9pbihvdXRwdXREaXIsIGBwaXBlbGluZS0ke3BpcGVsaW5lLmlkfS5qc29uYCk7XG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMob3V0cHV0RmlsZSwgSlNPTi5zdHJpbmdpZnkocGlwZWxpbmUsIG51bGwsIDIpKTtcblxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U3VjY2VzcygnUGlwZWxpbmUgZGV0YWlscyBzYXZlZCB0byBmaWxlJyk7XG4gICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICdPdXRwdXQgRmlsZSc6IG91dHB1dEZpbGUsXG4gICAgICAgICAgJ0ZpbGUgU2l6ZSc6IGZvcm1hdEZpbGVTaXplKGZzLnN0YXRTeW5jKG91dHB1dEZpbGUpLnNpemUpLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyDilIDilIAgT3B0aW9uYWwgZGVwbG95ICgtLWRlcGxveSkg4pSA4pSAXG4gICAgICAgIC8vIFRoZSByZWNvcmQgbm93IGV4aXN0cyBhbmQgaXMgYXV0aG9yaXRhdGl2ZS4gSWYgdGhlIGRlcGxveSBmYWlscyB3ZSBLRUVQXG4gICAgICAgIC8vIGl0IGFuZCBzdXJmYWNlIHRoZSBleGFjdCByZXRyeSByYXRoZXIgdGhhbiByb2xsaW5nIGJhY2sgKG5ldmVyIGZhbHNlLWdyZWVuKS5cbiAgICAgICAgaWYgKG9wdGlvbnMuZGVwbG95KSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50U2VjdGlvbignRGVwbG95aW5nIFBpcGVsaW5lJyk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIERlcGxveSB0b3VjaGVzIHRoZSBBV1MgU0RLICsgdGhlIENESyBzeW50aCBzdWJwcm9jZXNzOyByZWxheCBUTFMgdGhlXG4gICAgICAgICAgICAvLyBzYW1lIHdheSBgZGVwbG95YCBkb2VzIChyZWZ1c2VkIGluIHByb2R1Y3Rpb24gYnkgcmVsYXhUbHNGb3JDbGkpLlxuICAgICAgICAgICAgcmVsYXhUbHNGb3JDbGkob3B0aW9ucy52ZXJpZnlTc2wsIHByaW50V2FybmluZyk7XG4gICAgICAgICAgICAvLyBUaGUgYXN5bmMgY2xpZW50IGFkZHMgLS1zdG9yZS10b2tlbnMgKFNlY3JldHMgTWFuYWdlcikgc3VwcG9ydCBhbmRcbiAgICAgICAgICAgIC8vIGJhY2tzIEJPVEggdGhlIHByb3BzIGZldGNoIGFuZCB0aGUgcmVnaXN0cnkgY2FsbGJhY2suXG4gICAgICAgICAgICBjb25zdCBkZXBsb3lDbGllbnQgPSBhd2FpdCBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50QXN5bmMob3B0aW9ucyk7XG4gICAgICAgICAgICBjb25zdCBkZXBsb3lDb25maWcgPSBkZXBsb3lDbGllbnQuZ2V0Q29uZmlnKCkgYXMgUGxhdGZvcm1EZXBsb3lDb25maWc7XG4gICAgICAgICAgICAvLyBSZS1mZXRjaCB0aGUganVzdC1jcmVhdGVkIHBpcGVsaW5lIHNvIHBsdWdpbnMgYXJlIHJlc29sdmVkIGFuZCB0aGVcbiAgICAgICAgICAgIC8vIHJlZ2lzdHJ5IGhvc3QgaXMgYmFrZWQgRVhBQ1RMWSBhcyBgZGVwbG95IC0taWRgIGRvZXMg4oCUIG5vIGRyaWZ0LlxuICAgICAgICAgICAgY29uc3QgZmV0Y2hlZCA9IGF3YWl0IGZldGNoUGlwZWxpbmVQcm9wcyhkZXBsb3lDbGllbnQsIHBpcGVsaW5lLmlkKTtcbiAgICAgICAgICAgIGF3YWl0IHJ1bkRlcGxveSh7XG4gICAgICAgICAgICAgIHBpcGVsaW5lOiBmZXRjaGVkLnBpcGVsaW5lLFxuICAgICAgICAgICAgICBwcm9wc1dpdGhJZHM6IGZldGNoZWQucHJvcHNXaXRoSWRzLFxuICAgICAgICAgICAgICBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUsXG4gICAgICAgICAgICAgIHJlZ2lvbjogb3B0aW9ucy5yZWdpb24sXG4gICAgICAgICAgICAgIHJlcXVpcmVBcHByb3ZhbDogb3B0aW9ucy5yZXF1aXJlQXBwcm92YWwsXG4gICAgICAgICAgICAgIG91dHB1dDogb3B0aW9ucy5vdXRwdXQsXG4gICAgICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICAgICAgZXhlY3V0aW9uSWQsXG4gICAgICAgICAgICAgIHBsYXRmb3JtQ2xpZW50OiBkZXBsb3lDbGllbnQsXG4gICAgICAgICAgICAgIHBsYXRmb3JtUGlwZWxpbmVVcmw6IGRlcGxveUNvbmZpZy5hcGkucGlwZWxpbmVVcmwsXG4gICAgICAgICAgICAgIHBsYXRmb3JtQmFzZVVybDogZGVwbG95Q29uZmlnLmFwaS5iYXNlVXJsLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZGVwbG95RXJyb3IpIHtcbiAgICAgICAgICAgIHByaW50RXJyb3IoJ1BpcGVsaW5lIHdhcyBjcmVhdGVkIGJ1dCB0aGUgZGVwbG95IGZhaWxlZCcsIHtcbiAgICAgICAgICAgICAgcGlwZWxpbmVJZDogcGlwZWxpbmUuaWQsXG4gICAgICAgICAgICAgIGVycm9yOiBkZXBsb3lFcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZGVwbG95RXJyb3IubWVzc2FnZSA6IFN0cmluZyhkZXBsb3lFcnJvciksXG4gICAgICAgICAgICAgIHJldHJ5OiBgcGlwZWxpbmUtbWFuYWdlciBwaXBlbGluZSBkZXBsb3kgLS1pZCAke3BpcGVsaW5lLmlkfWAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIFJlLXRocm93IHNvIHRoZSBwcm9jZXNzIGV4aXRzIG5vbi16ZXJvLiBUaGUgcmVjb3JkIGlzIGludGVudGlvbmFsbHlcbiAgICAgICAgICAgIC8vIHJldGFpbmVkIOKAlCByZS1ydW4gdGhlIGRlcGxveSB3aXRoIHRoZSBjb21tYW5kIGFib3ZlLlxuICAgICAgICAgICAgdGhyb3cgZGVwbG95RXJyb3I7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTmV4dCBzdGVwc1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbignTmV4dCBTdGVwcycpO1xuICAgICAgICBjb25zb2xlLmxvZyhkaW0oJ1lvdSBjYW4gbm93OicpKTtcbiAgICAgICAgaWYgKCFvcHRpb25zLmRlcGxveSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgICR7Y3lhbign4oCiJyl9IERlcGxveTogJHtib2xkKGBkZXBsb3kgLS1pZCAke3BpcGVsaW5lLmlkfWApfWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKGAgICR7Y3lhbign4oCiJyl9IFZpZXc6ICR7Ym9sZChgZ2V0LXBpcGVsaW5lIC0taWQgJHtwaXBlbGluZS5pZH1gKX1gKTtcbiAgICAgICAgY29uc29sZS5sb2coYCAgJHtjeWFuKCfigKInKX0gQVBJOiAke2NvbmZpZy5hcGkuYmFzZVVybH0ke2NvbmZpZy5hcGkucGlwZWxpbmVVcmx9LyR7cGlwZWxpbmUuaWR9YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgY29tbWFuZDogJ2NyZWF0ZS1waXBlbGluZScsXG4gICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICAgIHByb2plY3Q6IG9wdGlvbnMucHJvamVjdCxcbiAgICAgICAgICAgIG9yZ2FuaXphdGlvbjogb3B0aW9ucy5vcmdhbml6YXRpb24sXG4gICAgICAgICAgICBmaWxlOiBvcHRpb25zLmZpbGUsXG4gICAgICAgICAgICB2ZXJpZnlTc2w6IG9wdGlvbnMudmVyaWZ5U3NsLFxuICAgICAgICAgICAgZHJ5UnVuOiBvcHRpb25zLmRyeVJ1bixcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn0iXX0=
316
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXBpcGVsaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2NyZWF0ZS1waXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQztBQUN0QixPQUFPLElBQUksTUFBTSxZQUFZLENBQUM7QUFDOUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuSCxPQUFPLEVBQStGLE1BQU0sbUJBQW1CLENBQUM7QUFDaEksT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSx5QkFBeUIsRUFBRSw4QkFBOEIsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoTSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDakosT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7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QU8sRUFBRSxPQUFPLENBQUMsT0FBTztvQkFDeEIsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZO29CQUNsQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7b0JBQ2xCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztvQkFDNUIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2lCQUN2QjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGVycm9yTWVzc2FnZSB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IG9yYSBmcm9tICdvcmEnO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQgeyBmb3JtYXREdXJhdGlvbiwgZm9ybWF0RmlsZVNpemUsIEZJTEVfU0laRV9MSU1JVFMsIGRlZmF1bHRQaXBlbGluZU5hbWUgfSBmcm9tICcuLi9jb25maWcvY2xpLmNvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyB0eXBlIFBpcGVsaW5lLCB0eXBlIFBpcGVsaW5lUmVzcG9uc2UsIHR5cGUgQ3JlYXRlUGlwZWxpbmVSZXF1ZXN0LCB0eXBlIFBsYXRmb3JtRGVwbG95Q29uZmlnIH0gZnJvbSAnLi4vdHlwZXMvaW5kZXguanMnO1xuaW1wb3J0IHsgcHJpbnRDb21tYW5kSGVhZGVyLCBwcmludFNzbFdhcm5pbmcsIGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnQsIGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYywgd2l0aFNzbE9wdGlvbnMsIHdpdGhQcm9maWxlT3B0aW9uLCB3aXRoUmVnaW9uT3B0aW9uIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyBydW5EZXBsb3kgfSBmcm9tICcuLi91dGlscy9kZXBsb3ktcnVubmVyLmpzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciwgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBlbnN1cmVPdXRwdXREaXJlY3RvcnksIHByaW50RXJyb3IsIHByaW50SW5mbywgcHJpbnRLZXlWYWx1ZSwgcHJpbnRTZWN0aW9uLCBwcmludFN1Y2Nlc3MsIHByaW50V2FybmluZyB9IGZyb20gJy4uL3V0aWxzL291dHB1dC11dGlscy5qcyc7XG5pbXBvcnQgeyBmZXRjaFBpcGVsaW5lUHJvcHMgfSBmcm9tICcuLi91dGlscy9waXBlbGluZS1jb25maWcuanMnO1xuaW1wb3J0IHsgZXh0cmFjdFNpbmdsZVJlc3BvbnNlIH0gZnJvbSAnLi4vdXRpbHMvcmVzcG9uc2UtdXRpbHMuanMnO1xuaW1wb3J0IHsgcmVsYXhUbHNGb3JDbGkgfSBmcm9tICcuLi91dGlscy90bHMuanMnO1xuXG5jb25zdCB7IGJvbGQsIGN5YW4sIGRpbSwgZ3JlZW4gfSA9IHBpY287XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgY3JlYXRlLXBpcGVsaW5lYCBjb21tYW5kIHdpdGggdGhlIENMSSBwcm9ncmFtLlxuICpcbiAqIEFjY2VwdHMgYSBwaXBlbGluZSBwcm9wZXJ0aWVzIEpTT04gZmlsZSwgdmFsaWRhdGVzIGl0LCByZXNvbHZlc1xuICogcHJvamVjdC9vcmdhbml6YXRpb24gZnJvbSBDTEkgZmxhZ3Mgb3IgdGhlIHByb3BzIGZpbGUsIGFuZFxuICogY3JlYXRlcyB0aGUgcGlwZWxpbmUgdmlhIHRoZSBwbGF0Zm9ybSBBUEkuXG4gKlxuICogQHBhcmFtIHByb2dyYW0gLSBUaGUgcm9vdCBDb21tYW5kZXIgcHJvZ3JhbSBpbnN0YW5jZSB0byBhdHRhY2ggdGhlIGNvbW1hbmQgdG8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQaXBlbGluZShwcm9ncmFtOiBDb21tYW5kKTogdm9pZCB7XG4gIHdpdGhTc2xPcHRpb25zKFxuICAgIHdpdGhSZWdpb25PcHRpb24oXG4gICAgICB3aXRoUHJvZmlsZU9wdGlvbihwcm9ncmFtXG4gICAgICAgIC5jb21tYW5kKCdjcmVhdGUnKVxuICAgICAgICAuZGVzY3JpcHRpb24oJ0NyZWF0ZSBhIG5ldyBwaXBlbGluZSDigJQgYW5kIG9wdGlvbmFsbHkgZGVwbG95IGl0IHdpdGggLS1kZXBsb3knKVxuICAgICAgICAucmVxdWlyZWRPcHRpb24oJy1mLCAtLWZpbGUgPGZpbGU+JywgJ1BhdGggdG8gcGlwZWxpbmUgcHJvcGVydGllcyBKU09OIGZpbGUnKVxuICAgICAgICAub3B0aW9uKCctcCwgLS1wcm9qZWN0IDxwcm9qZWN0PicsICdQcm9qZWN0IG5hbWUgKGZhbGxzIGJhY2sgdG8gdmFsdWUgaW4gcHJvcHMgZmlsZSknKVxuICAgICAgICAub3B0aW9uKCctbywgLS1vcmdhbml6YXRpb24gPG9yZ2FuaXphdGlvbj4nLCAnT3JnYW5pemF0aW9uIG5hbWUgKGZhbGxzIGJhY2sgdG8gdmFsdWUgaW4gcHJvcHMgZmlsZSknKVxuICAgICAgICAub3B0aW9uKCctbiwgLS1uYW1lIDxuYW1lPicsICdQaXBlbGluZSBuYW1lJylcbiAgICAgICAgLm9wdGlvbignLWEsIC0tdmlzaWJpbGl0eSA8cnVuZz4nLCAnU2hhcmluZyBydW5nIChwcml2YXRlfG9yZ3xwdWJsaWMpLiBQaXBlbGluZXMgZGVmYXVsdCB0byBvcmcg4oCUIGEgdGVhbSBhc3NldCBpcyB2aXNpYmxlIHRvIHRoZSB0ZWFtLicsICdvcmcnKVxuICAgICAgICAub3B0aW9uKCctLWRlZmF1bHQnLCAnU2V0IGFzIGRlZmF1bHQgcGlwZWxpbmUnLCBmYWxzZSlcbiAgICAgICAgLm9wdGlvbignLS1hY3RpdmUnLCAnU2V0IHBpcGVsaW5lIGFzIGFjdGl2ZScsIHRydWUpXG4gICAgICAgIC5vcHRpb24oJy0tbm8tYWN0aXZlJywgJ0NyZWF0ZSB0aGUgcGlwZWxpbmUgYXMgaW5hY3RpdmUnKVxuICAgICAgICAvLyAtLWRlcGxveTogYWZ0ZXIgY3JlYXRpbmcgdGhlIHJlY29yZCwgcnVuIHRoZSBzYW1lIENESyBkZXBsb3kgKyBBUk5cbiAgICAgICAgLy8gcmVnaXN0cmF0aW9uIGFzIGBwaXBlbGluZSBkZXBsb3kgLS1pZGAgKHNoYXJlZCBydW5EZXBsb3kpLiBUaGUgZmxhZ3NcbiAgICAgICAgLy8gYmVsb3cgYXBwbHkgb25seSB3aXRoIC0tZGVwbG95LlxuICAgICAgICAub3B0aW9uKCctLWRlcGxveScsICdEZXBsb3kgdGhlIHBpcGVsaW5lIHdpdGggQVdTIENESyBpbW1lZGlhdGVseSBhZnRlciBjcmVhdGluZyBpdCcsIGZhbHNlKVxuICAgICAgICAub3B0aW9uKCctLXJlcXVpcmUtYXBwcm92YWwgPGFwcHJvdmFsPicsICdEZXBsb3kgYXBwcm92YWwgbGV2ZWw6IG5ldmVyfGFueS1jaGFuZ2V8YnJvYWRlbmluZyAod2l0aCAtLWRlcGxveSknLCAnbmV2ZXInKVxuICAgICAgICAub3B0aW9uKCctLW91dHB1dCA8ZGlyPicsICdDREsgb3V0cHV0IGRpcmVjdG9yeSAod2l0aCAtLWRlcGxveSknLCAnY2RrLm91dCcpXG4gICAgICAgIC5vcHRpb24oJy0tc3RvcmUtdG9rZW5zJywgJ0RlcGxveSBhdXRoIHZpYSBBV1MgU2VjcmV0cyBNYW5hZ2VyIHRva2VuICh3aXRoIC0tZGVwbG95OyByZXF1aXJlcyBQTEFURk9STV9TRUNSRVRfTkFNRSknLCBmYWxzZSkpLFxuICAgICksXG4gIClcbiAgICAub3B0aW9uKCctLWRyeS1ydW4nLCAnVmFsaWRhdGUgaW5wdXRzIHdpdGhvdXQgY3JlYXRpbmcgcGlwZWxpbmUnLCBmYWxzZSlcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignQ3JlYXRlIFBpcGVsaW5lJywgJ0NyZWF0aW5nIFBpcGVsaW5lJyk7XG4gICAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgICB0cnkge1xuXG4gICAgICAgIC8vIERpc3BsYXkgcGFyYW1ldGVyc1xuICAgICAgICBwcmludEluZm8oJ0NvbmZpZ3VyYXRpb24nKTtcbiAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgJ1Byb2plY3QnOiBvcHRpb25zLnByb2plY3QgfHwgJyhmcm9tIHByb3BzIGZpbGUpJyxcbiAgICAgICAgICAnT3JnYW5pemF0aW9uJzogb3B0aW9ucy5vcmdhbml6YXRpb24gfHwgJyhmcm9tIHByb3BzIGZpbGUpJyxcbiAgICAgICAgICAnTmFtZSc6IG9wdGlvbnMubmFtZSB8fCAnKG5vdCBzZXQpJyxcbiAgICAgICAgICAnVmlzaWJpbGl0eSc6IG9wdGlvbnMudmlzaWJpbGl0eSxcbiAgICAgICAgICAnRGVmYXVsdCBQaXBlbGluZSc6IG9wdGlvbnMuZGVmYXVsdCA/ICdZZXMnIDogJ05vJyxcbiAgICAgICAgICAnQWN0aXZlJzogb3B0aW9ucy5hY3RpdmUgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICAgJ0RlcGxveSBBZnRlciBDcmVhdGUnOiBvcHRpb25zLmRlcGxveSA/IGBZZXMgKHByb2ZpbGU6ICR7b3B0aW9ucy5wcm9maWxlIHx8ICdkZWZhdWx0J30pYCA6ICdObycsXG4gICAgICAgICAgJ1Byb3BlcnRpZXMgRmlsZSc6IG9wdGlvbnMuZmlsZSxcbiAgICAgICAgICAnU1NMIFZlcmlmaWNhdGlvbic6IG9wdGlvbnMudmVyaWZ5U3NsID09PSBmYWxzZSA/ICdEaXNhYmxlZCcgOiAnRW5hYmxlZCcsXG4gICAgICAgICAgJ0RyeSBSdW4nOiBvcHRpb25zLmRyeVJ1biA/ICdZZXMnIDogJ05vJyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU2VjdXJpdHkgd2FybmluZyBmb3IgU1NMIHZlcmlmaWNhdGlvbiBkaXNhYmxlZFxuICAgICAgICBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTZWN0aW9uKCdGaWxlIFZhbGlkYXRpb24nKTtcblxuICAgICAgICAvLyBWYWxpZGF0ZSBmaWxlIGV4aXN0c1xuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMob3B0aW9ucy5maWxlKSkge1xuICAgICAgICAgIHByaW50RXJyb3IoJ1Byb3BlcnRpZXMgZmlsZSBub3QgZm91bmQnLCB7IHBhdGg6IG9wdGlvbnMuZmlsZSB9KTtcbiAgICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtvcHRpb25zLmZpbGV9YCwgJ2ZpbGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGZpbGUgZXh0ZW5zaW9uXG4gICAgICAgIGNvbnN0IGZpbGVFeHQgPSBwYXRoLmV4dG5hbWUob3B0aW9ucy5maWxlKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoZmlsZUV4dCAhPT0gJy5qc29uJykge1xuICAgICAgICAgIHByaW50V2FybmluZygnRmlsZSBleHRlbnNpb24gaXMgbm90IC5qc29uJywgeyBleHRlbnNpb246IGZpbGVFeHQgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWxlU3RhdHMgPSBmcy5zdGF0U3luYyhvcHRpb25zLmZpbGUpO1xuXG4gICAgICAgIC8vIENoZWNrIGZpbGUgc2l6ZVxuICAgICAgICBpZiAoZmlsZVN0YXRzLnNpemUgPiBGSUxFX1NJWkVfTElNSVRTLlBJUEVMSU5FX1BST1BTKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignUHJvcGVydGllcyBmaWxlIGlzIHRvbyBsYXJnZScsIHtcbiAgICAgICAgICAgIHNpemU6IGZvcm1hdEZpbGVTaXplKGZpbGVTdGF0cy5zaXplKSxcbiAgICAgICAgICAgIGxpbWl0OiBmb3JtYXRGaWxlU2l6ZShGSUxFX1NJWkVfTElNSVRTLlBJUEVMSU5FX1BST1BTKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdQcm9wZXJ0aWVzIGZpbGUgZXhjZWVkcyBzaXplIGxpbWl0JywgJ2ZpbGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByaW50U3VjY2VzcygnRmlsZSB2YWxpZGF0aW9uIHBhc3NlZCcpO1xuICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAnRmlsZSBQYXRoJzogb3B0aW9ucy5maWxlLFxuICAgICAgICAgICdGaWxlIFNpemUnOiBmb3JtYXRGaWxlU2l6ZShmaWxlU3RhdHMuc2l6ZSksXG4gICAgICAgICAgJ0V4dGVuc2lvbic6IGZpbGVFeHQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFJlYWQgYW5kIHBhcnNlIHByb3BlcnRpZXMgZmlsZVxuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50SW5mbygnUmVhZGluZyBwaXBlbGluZSBwcm9wZXJ0aWVzLi4uJyk7XG5cbiAgICAgICAgY29uc3QgZmlsZUNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMob3B0aW9ucy5maWxlLCAndXRmLTgnKTtcblxuICAgICAgICBsZXQgcHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHByb3BzID0gSlNPTi5wYXJzZShmaWxlQ29udGVudCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignSW52YWxpZCBKU09OIGluIHByb3BlcnRpZXMgZmlsZScsIHtcbiAgICAgICAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyb3IpLFxuICAgICAgICAgICAgaGludDogJ0Vuc3VyZSB0aGUgZmlsZSBjb250YWlucyB2YWxpZCBKU09OIHN5bnRheCcsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignUHJvcGVydGllcyBmaWxlIG11c3QgY29udGFpbiB2YWxpZCBKU09OJywgJ2ZpbGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIHByb3BlcnRpZXMgc3RydWN0dXJlXG4gICAgICAgIGlmICh0eXBlb2YgcHJvcHMgIT09ICdvYmplY3QnIHx8IHByb3BzID09PSBudWxsKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignSW52YWxpZCBwcm9wZXJ0aWVzIGZvcm1hdCcsIHtcbiAgICAgICAgICAgIHR5cGU6IHR5cGVvZiBwcm9wcyxcbiAgICAgICAgICAgIGhpbnQ6ICdQcm9wZXJ0aWVzIG11c3QgYmUgYSBKU09OIG9iamVjdCcsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignUHJvcGVydGllcyBtdXN0IGJlIGEgdmFsaWQgb2JqZWN0JywgJ2ZpbGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb3BDb3VudCA9IE9iamVjdC5rZXlzKHByb3BzKS5sZW5ndGg7XG5cbiAgICAgICAgcHJpbnRTdWNjZXNzKCdQcm9wZXJ0aWVzIHBhcnNlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgJ1RvdGFsIEtleXMnOiBwcm9wQ291bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICAnU2FtcGxlIEtleXMnOiBPYmplY3Qua2V5cyhwcm9wcykuc2xpY2UoMCwgNSkuam9pbignLCAnKSArIChwcm9wQ291bnQgPiA1ID8gJy4uLicgOiAnJyksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFZhbGlkYXRlIHByb3BlcnRpZXMgY29udGVudFxuICAgICAgICBpZiAocHJvcENvdW50ID09PSAwKSB7XG4gICAgICAgICAgcHJpbnRXYXJuaW5nKCdQcm9wZXJ0aWVzIG9iamVjdCBpcyBlbXB0eSAtIHBpcGVsaW5lIHdpbGwgaGF2ZSBubyBjb25maWd1cmF0aW9uJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXNvbHZlIHByb2plY3QgJiBvcmdhbml6YXRpb246IHByZWZlciBDTEkgZmxhZ3MsIGZhbGwgYmFjayB0b1xuICAgICAgICAvLyB2YWx1ZXMgZW1iZWRkZWQgaW5zaWRlIHRoZSBwcm9wcyBmaWxlIChidWlsZGVyUHJvcHMpLlxuICAgICAgICBjb25zdCByZXNvbHZlZFByb2plY3QgPSBvcHRpb25zLnByb2plY3QgPz8gKHByb3BzLnByb2plY3QgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRPcmdhbml6YXRpb24gPSBvcHRpb25zLm9yZ2FuaXphdGlvbiA/PyAocHJvcHMub3JnYW5pemF0aW9uIGFzIHN0cmluZyB8IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgaWYgKCFyZXNvbHZlZFByb2plY3QpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdQcm9qZWN0IGlzIHJlcXVpcmVkJywge1xuICAgICAgICAgICAgaGludDogJ1Byb3ZpZGUgLXAvLS1wcm9qZWN0IGZsYWcgb3IgaW5jbHVkZSBcInByb2plY3RcIiBpbiB0aGUgcHJvcHMgZmlsZScsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignUHJvamVjdCBpcyByZXF1aXJlZCcsICdwcm9qZWN0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyZXNvbHZlZE9yZ2FuaXphdGlvbikge1xuICAgICAgICAgIHByaW50RXJyb3IoJ09yZ2FuaXphdGlvbiBpcyByZXF1aXJlZCcsIHtcbiAgICAgICAgICAgIGhpbnQ6ICdQcm92aWRlIC1vLy0tb3JnYW5pemF0aW9uIGZsYWcgb3IgaW5jbHVkZSBcIm9yZ2FuaXphdGlvblwiIGluIHRoZSBwcm9wcyBmaWxlJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdPcmdhbml6YXRpb24gaXMgcmVxdWlyZWQnLCAnb3JnYW5pemF0aW9uJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXNvbHZlIHBpcGVsaW5lTmFtZSB3aXRoIHRoZSBzaGFyZWQgZGVmYXVsdCAobWlycm9ycyBwaXBlbGluZS1jb3JlJ3NcbiAgICAgICAgLy8gcGlwZWxpbmUtY29uZmlndXJhdGlvbi50cykgc28gY3JlYXRlICsgcmVnaXN0cnkgKyBDREsgYWxsIGFncmVlLlxuICAgICAgICBjb25zdCByZXNvbHZlZFBpcGVsaW5lTmFtZSA9IG9wdGlvbnMubmFtZVxuICAgICAgICAgID8/IChwcm9wcy5waXBlbGluZU5hbWUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKVxuICAgICAgICAgID8/IGRlZmF1bHRQaXBlbGluZU5hbWUocmVzb2x2ZWRPcmdhbml6YXRpb24sIHJlc29sdmVkUHJvamVjdCk7XG5cbiAgICAgICAgY29uc3QgcGF5bG9hZDogQ3JlYXRlUGlwZWxpbmVSZXF1ZXN0ID0ge1xuICAgICAgICAgIHByb2plY3Q6IHJlc29sdmVkUHJvamVjdCxcbiAgICAgICAgICBvcmdhbml6YXRpb246IHJlc29sdmVkT3JnYW5pemF0aW9uLFxuICAgICAgICAgIHBpcGVsaW5lTmFtZTogcmVzb2x2ZWRQaXBlbGluZU5hbWUsXG4gICAgICAgICAgcHJvcHMsXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gQWRkIG9wdGlvbmFsIGZpZWxkcyBvbmx5IGlmIHByb3ZpZGVkXG4gICAgICAgIGlmIChvcHRpb25zLnZpc2liaWxpdHkpIHtcbiAgICAgICAgICBwYXlsb2FkLnZpc2liaWxpdHkgPSBvcHRpb25zLnZpc2liaWxpdHk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuZGVmYXVsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcGF5bG9hZC5pc0RlZmF1bHQgPSBvcHRpb25zLmRlZmF1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuYWN0aXZlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBwYXlsb2FkLmlzQWN0aXZlID0gb3B0aW9ucy5hY3RpdmU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEcnkgcnVuIG1vZGVcbiAgICAgICAgaWYgKG9wdGlvbnMuZHJ5UnVuKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50U2VjdGlvbignRHJ5IFJ1biAtIFJlcXVlc3QgUHJldmlldycpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHBheWxvYWQsIG51bGwsIDIpKTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRTdWNjZXNzKCfinJMgVmFsaWRhdGlvbiBjb21wbGV0ZSAtIG5vIHBpcGVsaW5lIGNyZWF0ZWQgKGRyeSBydW4gbW9kZSknKTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgaWYgKG9wdGlvbnMuZGVwbG95KSB7XG4gICAgICAgICAgICBwcmludEluZm8oJ1dpdGggLS1kZXBsb3ksIHRoZSBwaXBlbGluZSB3b3VsZCBiZSBkZXBsb3llZCB2aWEgQ0RLIGFmdGVyIGNyZWF0aW9uJywge1xuICAgICAgICAgICAgICBwcm9maWxlOiBvcHRpb25zLnByb2ZpbGUgfHwgJyhkZWZhdWx0KScsXG4gICAgICAgICAgICAgIHJlZ2lvbjogb3B0aW9ucy5yZWdpb24gfHwgJyhkZWZhdWx0KScsXG4gICAgICAgICAgICAgIHJlcXVpcmVBcHByb3ZhbDogb3B0aW9ucy5yZXF1aXJlQXBwcm92YWwsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJpbnRJbmZvKCdUbyBjcmVhdGUgdGhlIHBpcGVsaW5lLCBydW4gdGhlIGNvbW1hbmQgd2l0aG91dCAtLWRyeS1ydW4nKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDcmVhdGUgYXV0aGVudGljYXRlZCBBUEkgY2xpZW50XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnQob3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGNsaWVudC5nZXRDb25maWcoKTtcblxuICAgICAgICAvLyBDcmVhdGUgcGlwZWxpbmVcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludFNlY3Rpb24oJ0NyZWF0aW5nIFBpcGVsaW5lJyk7XG5cbiAgICAgICAgY29uc3Qgc3Bpbm5lciA9IG9yYSgnQ3JlYXRpbmcgcGlwZWxpbmUuLi4nKS5zdGFydCgpO1xuICAgICAgICBsZXQgcmF3UmVzcG9uc2U6IFBpcGVsaW5lUmVzcG9uc2U7XG4gICAgICAgIGxldCByZXF1ZXN0RHVyYXRpb246IG51bWJlcjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZXF1ZXN0U3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICAgIHJhd1Jlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3Q8UGlwZWxpbmVSZXNwb25zZT4oXG4gICAgICAgICAgICBjb25maWcuYXBpLnBpcGVsaW5lVXJsLFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICApO1xuICAgICAgICAgIHJlcXVlc3REdXJhdGlvbiA9IERhdGUubm93KCkgLSByZXF1ZXN0U3RhcnQ7XG4gICAgICAgICAgc3Bpbm5lci5zdWNjZWVkKCdQaXBlbGluZSBjcmVhdGVkJyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgc3Bpbm5lci5mYWlsKCdQaXBlbGluZSBjcmVhdGlvbiBmYWlsZWQnKTtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBpcGVsaW5lID0gZXh0cmFjdFNpbmdsZVJlc3BvbnNlPFBpcGVsaW5lPihyYXdSZXNwb25zZSwgJ3BpcGVsaW5lJywgJ2lkJyk7XG5cbiAgICAgICAgaWYgKCFwaXBlbGluZT8uaWQpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdJbnZhbGlkIHBpcGVsaW5lIHJlc3BvbnNlJywge1xuICAgICAgICAgICAgcmVzcG9uc2VLZXlzOiByYXdSZXNwb25zZSA/IE9iamVjdC5rZXlzKHJhd1Jlc3BvbnNlKSA6ICcobnVsbCknLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUGlwZWxpbmUgY3JlYXRpb24gZmFpbGVkIC0gbm8gdmFsaWQgcGlwZWxpbmUgZGF0YSByZWNlaXZlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludFNlY3Rpb24oJ+KckyBQaXBlbGluZSBDcmVhdGVkIFN1Y2Nlc3NmdWxseScpO1xuXG4gICAgICAgIC8vIERpc3BsYXkgY3JlYXRlZCBwaXBlbGluZSBpbmZvXG4gICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICdQaXBlbGluZSBJRCc6IGdyZWVuKGJvbGQocGlwZWxpbmUuaWQpKSxcbiAgICAgICAgICAnUHJvamVjdCc6IHBpcGVsaW5lLnByb2plY3QsXG4gICAgICAgICAgJ09yZ2FuaXphdGlvbic6IHBpcGVsaW5lLm9yZ2FuaXphdGlvbixcbiAgICAgICAgICAnTmFtZSc6IHBpcGVsaW5lLnBpcGVsaW5lTmFtZSB8fCAnKG5vdCBzZXQpJyxcbiAgICAgICAgICAnVmlzaWJpbGl0eSc6IHBpcGVsaW5lLnZpc2liaWxpdHkgfHwgJ29yZycsXG4gICAgICAgICAgJ0RlZmF1bHQnOiBwaXBlbGluZS5pc0RlZmF1bHQgPyAnWWVzJyA6ICdObycsXG4gICAgICAgICAgJ0FjdGl2ZSc6IHBpcGVsaW5lLmlzQWN0aXZlID8gJ1llcycgOiAnTm8nLFxuICAgICAgICAgICdQcm9wZXJ0aWVzJzogcGlwZWxpbmUucHJvcHMgPyBgJHtPYmplY3Qua2V5cyhwaXBlbGluZS5wcm9wcykubGVuZ3RofSBrZXlzYCA6ICcobm90IHJldHVybmVkKScsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChwaXBlbGluZS5jcmVhdGVkQXQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgICAnQ3JlYXRlZCBBdCc6IHBpcGVsaW5lLmNyZWF0ZWRBdCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBlcmZvcm1hbmNlIG1ldHJpY3NcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAnRXhlY3V0aW9uIElEJzogZXhlY3V0aW9uSWQsXG4gICAgICAgICAgJ1JlcXVlc3QgRHVyYXRpb24nOiBmb3JtYXREdXJhdGlvbihyZXF1ZXN0RHVyYXRpb24pLFxuICAgICAgICAgICdUb3RhbCBEdXJhdGlvbic6IGZvcm1hdER1cmF0aW9uKERhdGUubm93KCkgLSBzdGFydFRpbWUpLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTYXZlIHBpcGVsaW5lIGluZm8gdG8gZmlsZVxuICAgICAgICBjb25zdCBvdXRwdXREaXIgPSAnLi9vdXRwdXQnO1xuICAgICAgICBlbnN1cmVPdXRwdXREaXJlY3Rvcnkob3V0cHV0RGlyKTtcblxuICAgICAgICBjb25zdCBvdXRwdXRGaWxlID0gcGF0aC5qb2luKG91dHB1dERpciwgYHBpcGVsaW5lLSR7cGlwZWxpbmUuaWR9Lmpzb25gKTtcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhvdXRwdXRGaWxlLCBKU09OLnN0cmluZ2lmeShwaXBlbGluZSwgbnVsbCwgMikpO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgcHJpbnRTdWNjZXNzKCdQaXBlbGluZSBkZXRhaWxzIHNhdmVkIHRvIGZpbGUnKTtcbiAgICAgICAgcHJpbnRLZXlWYWx1ZSh7XG4gICAgICAgICAgJ091dHB1dCBGaWxlJzogb3V0cHV0RmlsZSxcbiAgICAgICAgICAnRmlsZSBTaXplJzogZm9ybWF0RmlsZVNpemUoZnMuc3RhdFN5bmMob3V0cHV0RmlsZSkuc2l6ZSksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIOKUgOKUgCBPcHRpb25hbCBkZXBsb3kgKC0tZGVwbG95KSDilIDilIBcbiAgICAgICAgLy8gVGhlIHJlY29yZCBub3cgZXhpc3RzIGFuZCBpcyBhdXRob3JpdGF0aXZlLiBJZiB0aGUgZGVwbG95IGZhaWxzIHdlIEtFRVBcbiAgICAgICAgLy8gaXQgYW5kIHN1cmZhY2UgdGhlIGV4YWN0IHJldHJ5IHJhdGhlciB0aGFuIHJvbGxpbmcgYmFjayAobmV2ZXIgZmFsc2UtZ3JlZW4pLlxuICAgICAgICBpZiAob3B0aW9ucy5kZXBsb3kpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRTZWN0aW9uKCdEZXBsb3lpbmcgUGlwZWxpbmUnKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gRGVwbG95IHRvdWNoZXMgdGhlIEFXUyBTREsgKyB0aGUgQ0RLIHN5bnRoIHN1YnByb2Nlc3M7IHJlbGF4IFRMUyB0aGVcbiAgICAgICAgICAgIC8vIHNhbWUgd2F5IGBkZXBsb3lgIGRvZXMgKHJlZnVzZWQgaW4gcHJvZHVjdGlvbiBieSByZWxheFRsc0ZvckNsaSkuXG4gICAgICAgICAgICByZWxheFRsc0ZvckNsaShvcHRpb25zLnZlcmlmeVNzbCwgcHJpbnRXYXJuaW5nKTtcbiAgICAgICAgICAgIC8vIFRoZSBhc3luYyBjbGllbnQgYWRkcyAtLXN0b3JlLXRva2VucyAoU2VjcmV0cyBNYW5hZ2VyKSBzdXBwb3J0IGFuZFxuICAgICAgICAgICAgLy8gYmFja3MgQk9USCB0aGUgcHJvcHMgZmV0Y2ggYW5kIHRoZSByZWdpc3RyeSBjYWxsYmFjay5cbiAgICAgICAgICAgIGNvbnN0IGRlcGxveUNsaWVudCA9IGF3YWl0IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnRBc3luYyhvcHRpb25zKTtcbiAgICAgICAgICAgIGNvbnN0IGRlcGxveUNvbmZpZyA9IGRlcGxveUNsaWVudC5nZXRDb25maWcoKSBhcyBQbGF0Zm9ybURlcGxveUNvbmZpZztcbiAgICAgICAgICAgIC8vIFJlLWZldGNoIHRoZSBqdXN0LWNyZWF0ZWQgcGlwZWxpbmUgc28gcGx1Z2lucyBhcmUgcmVzb2x2ZWQgYW5kIHRoZVxuICAgICAgICAgICAgLy8gcmVnaXN0cnkgaG9zdCBpcyBiYWtlZCBFWEFDVExZIGFzIGBkZXBsb3kgLS1pZGAgZG9lcyDigJQgbm8gZHJpZnQuXG4gICAgICAgICAgICBjb25zdCBmZXRjaGVkID0gYXdhaXQgZmV0Y2hQaXBlbGluZVByb3BzKGRlcGxveUNsaWVudCwgcGlwZWxpbmUuaWQpO1xuICAgICAgICAgICAgYXdhaXQgcnVuRGVwbG95KHtcbiAgICAgICAgICAgICAgcGlwZWxpbmU6IGZldGNoZWQucGlwZWxpbmUsXG4gICAgICAgICAgICAgIHByb3BzV2l0aElkczogZmV0Y2hlZC5wcm9wc1dpdGhJZHMsXG4gICAgICAgICAgICAgIHByb2ZpbGU6IG9wdGlvbnMucHJvZmlsZSxcbiAgICAgICAgICAgICAgcmVnaW9uOiBvcHRpb25zLnJlZ2lvbixcbiAgICAgICAgICAgICAgcmVxdWlyZUFwcHJvdmFsOiBvcHRpb25zLnJlcXVpcmVBcHByb3ZhbCxcbiAgICAgICAgICAgICAgb3V0cHV0OiBvcHRpb25zLm91dHB1dCxcbiAgICAgICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICAgICAgcGxhdGZvcm1DbGllbnQ6IGRlcGxveUNsaWVudCxcbiAgICAgICAgICAgICAgcGxhdGZvcm1QaXBlbGluZVVybDogZGVwbG95Q29uZmlnLmFwaS5waXBlbGluZVVybCxcbiAgICAgICAgICAgICAgcGxhdGZvcm1CYXNlVXJsOiBkZXBsb3lDb25maWcuYXBpLmJhc2VVcmwsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIChkZXBsb3lFcnJvcikge1xuICAgICAgICAgICAgcHJpbnRFcnJvcignUGlwZWxpbmUgd2FzIGNyZWF0ZWQgYnV0IHRoZSBkZXBsb3kgZmFpbGVkJywge1xuICAgICAgICAgICAgICBwaXBlbGluZUlkOiBwaXBlbGluZS5pZCxcbiAgICAgICAgICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZShkZXBsb3lFcnJvciksXG4gICAgICAgICAgICAgIHJldHJ5OiBgcGlwZWxpbmUtbWFuYWdlciBwaXBlbGluZSBkZXBsb3kgLS1pZCAke3BpcGVsaW5lLmlkfWAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIFJlLXRocm93IHNvIHRoZSBwcm9jZXNzIGV4aXRzIG5vbi16ZXJvLiBUaGUgcmVjb3JkIGlzIGludGVudGlvbmFsbHlcbiAgICAgICAgICAgIC8vIHJldGFpbmVkIOKAlCByZS1ydW4gdGhlIGRlcGxveSB3aXRoIHRoZSBjb21tYW5kIGFib3ZlLlxuICAgICAgICAgICAgdGhyb3cgZGVwbG95RXJyb3I7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTmV4dCBzdGVwc1xuICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIHByaW50U2VjdGlvbignTmV4dCBTdGVwcycpO1xuICAgICAgICBjb25zb2xlLmxvZyhkaW0oJ1lvdSBjYW4gbm93OicpKTtcbiAgICAgICAgaWYgKCFvcHRpb25zLmRlcGxveSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgICR7Y3lhbign4oCiJyl9IERlcGxveTogJHtib2xkKGBkZXBsb3kgLS1pZCAke3BpcGVsaW5lLmlkfWApfWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKGAgICR7Y3lhbign4oCiJyl9IFZpZXc6ICR7Ym9sZChgZ2V0LXBpcGVsaW5lIC0taWQgJHtwaXBlbGluZS5pZH1gKX1gKTtcbiAgICAgICAgY29uc29sZS5sb2coYCAgJHtjeWFuKCfigKInKX0gQVBJOiAke2NvbmZpZy5hcGkuYmFzZVVybH0ke2NvbmZpZy5hcGkucGlwZWxpbmVVcmx9LyR7cGlwZWxpbmUuaWR9YCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCcnKTtcblxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIEVSUk9SX0NPREVTLkFQSV9SRVFVRVNULCB7XG4gICAgICAgICAgZGVidWc6IHByb2dyYW0ub3B0cygpLmRlYnVnLFxuICAgICAgICAgIGV4aXQ6IHRydWUsXG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgY29tbWFuZDogJ2NyZWF0ZS1waXBlbGluZScsXG4gICAgICAgICAgICBleGVjdXRpb25JZCxcbiAgICAgICAgICAgIHByb2plY3Q6IG9wdGlvbnMucHJvamVjdCxcbiAgICAgICAgICAgIG9yZ2FuaXphdGlvbjogb3B0aW9ucy5vcmdhbml6YXRpb24sXG4gICAgICAgICAgICBmaWxlOiBvcHRpb25zLmZpbGUsXG4gICAgICAgICAgICB2ZXJpZnlTc2w6IG9wdGlvbnMudmVyaWZ5U3NsLFxuICAgICAgICAgICAgZHJ5UnVuOiBvcHRpb25zLmRyeVJ1bixcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn0iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"instantiate-template.d.ts","sourceRoot":"","sources":["../../src/commands/instantiate-template.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgHpC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2J1D"}
1
+ {"version":3,"file":"instantiate-template.d.ts","sourceRoot":"","sources":["../../src/commands/instantiate-template.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgHpC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2J1D"}
@@ -1,6 +1,7 @@
1
1
  // Copyright 2026 Pipeline Builder Contributors
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  import * as fs from 'fs';
4
+ import { errorMessage } from '@pipeline-builder/api-core';
4
5
  import { Command } from 'commander';
5
6
  import ora from 'ora';
6
7
  import pico from 'picocolors';
@@ -47,7 +48,7 @@ function readInputsFile(file) {
47
48
  parsed = JSON.parse(fs.readFileSync(file, 'utf-8'));
48
49
  }
49
50
  catch (error) {
50
- throw new ValidationError(`Inputs file is not valid JSON: ${error instanceof Error ? error.message : String(error)}`, 'inputs-file', file);
51
+ throw new ValidationError(`Inputs file is not valid JSON: ${errorMessage(error)}`, 'inputs-file', file);
51
52
  }
52
53
  if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
53
54
  throw new ValidationError('Inputs file must contain a JSON object of { "inputName": value }', 'inputs-file', file);
@@ -271,4 +272,4 @@ function unresolvedSelfVars(props) {
271
272
  scan(props.vars);
272
273
  return [...found];
273
274
  }
274
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFudGlhdGUtdGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvaW5zdGFudGlhdGUtdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQztBQUN0QixPQUFPLElBQUksTUFBTSxZQUFZLENBQUM7QUFDOUIsT0FBTyxFQUtOLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsSixPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RixPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEksT0FBTyxFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFeEYsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztBQUV4Qzs7Ozs7O0dBTUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxJQUFZLEVBQUUsUUFBa0I7SUFDcEQsT0FBTyxDQUFDLEdBQUcsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsZUFBZSxDQUFDLEtBQWU7SUFDdEMsTUFBTSxHQUFHLEdBQTJCLEVBQUUsQ0FB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QUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUU7YUFDaEcsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQVMsa0JBQWtCLENBQUMsS0FBb0I7SUFDOUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUNoQyxNQUFNLElBQUksR0FBRyxDQUFDLEtBQWMsRUFBUSxFQUFFO1FBQ3BDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUIsS0FBSyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLHdDQUF3QyxDQUFDO2dCQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLENBQUM7WUFDM0YsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JELElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7WUFBRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BGLENBQUMsQ0FBQztJQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gJ2NvbW1hbmRlcic7XG5pbXBvcnQgb3JhIGZyb20gJ29yYSc7XG5pbXBvcnQgcGljbyBmcm9tICdwaWNvY29sb3JzJztcbmltcG9ydCB7XG4gIHR5cGUgSW5zdGFudGlhdGVUZW1wbGF0ZVJlcXVlc3QsXG4gIHR5cGUgSW5zdGFudGlhdGVUZW1wbGF0ZVJlc3BvbnNlLFxuICB0eXBlIFBpcGVsaW5lVGVtcGxhdGUsXG4gIHR5cGUgUGlwZWxpbmVQcm9wcyxcbn0gZnJvbSAnLi4vdHlwZXMvaW5kZXguanMnO1xuaW1wb3J0IHsgY3JlYXRlQXV0aGVudGljYXRlZENsaWVudCwgcHJpbnRDb21tYW5kSGVhZGVyLCBwcmludEV4ZWN1dGlvblN1bW1hcnksIHByaW50U3NsV2FybmluZywgd2l0aFNzbE9wdGlvbnMgfSBmcm9tICcuLi91dGlscy9jb21tYW5kLXV0aWxzLmpzJztcbmltcG9ydCB7IEVSUk9SX0NPREVTLCBoYW5kbGVFcnJvciwgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi4vdXRpbHMvZXJyb3ItaGFuZGxlci5qcyc7XG5pbXBvcnQgeyBvdXRwdXREYXRhLCBwcmludEVycm9yLCBwcmludEluZm8sIHByaW50S2V5VmFsdWUsIHByaW50U2VjdGlvbiwgcHJpbnRTdWNjZXNzLCBwcmludFdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9vdXRwdXQtdXRpbHMuanMnO1xuaW1wb3J0IHsgZXh0cmFjdExpc3RSZXNwb25zZSwgZXh0cmFjdFNpbmdsZVJlc3BvbnNlIH0gZnJvbSAnLi4vdXRpbHMvcmVzcG9uc2UtdXRpbHMuanMnO1xuXG5jb25zdCB7IGJvbGQsIGN5YW4sIGRpbSwgZ3JlZW4gfSA9IHBpY287XG5cbi8qKlxuICogQWNjdW11bGF0ZSBhIHJlcGVhdGFibGUgYC0taW5wdXQgS0VZPVZBTFVFYCBmbGFnLiBUaGlzIG9ubHkgY29sbGVjdHMg4oCUIGl0IGRvZXNcbiAqIE5PVCB2YWxpZGF0ZSwgYmVjYXVzZSBDb21tYW5kZXIgcnVucyBgcGFyc2VBcmdgIGJlZm9yZSB0aGUgYWN0aW9uIGNhbGxiYWNrLCBzb1xuICogYSB0aHJvdyBoZXJlIHdvdWxkIGVzY2FwZSB0aGUgYWN0aW9uJ3MgYGhhbmRsZUVycm9yYCBhbmQgc3VyZmFjZSBhcyBhblxuICogdW5oYW5kbGVkIHN0YWNrIHRyYWNlIHdpdGggdGhlIHdyb25nIGV4aXQgY29kZSBpbnN0ZWFkIG9mIGEgY2xlYW4gdmFsaWRhdGlvblxuICogZmFpbHVyZS4gUGFyc2luZyBoYXBwZW5zIGluIHtAbGluayBwYXJzZUlucHV0UGFpcnN9LCBpbnNpZGUgdGhlIGFjdGlvbi5cbiAqL1xuZnVuY3Rpb24gY29sbGVjdElucHV0KHBhaXI6IHN0cmluZywgcHJldmlvdXM6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICByZXR1cm4gWy4uLnByZXZpb3VzLCBwYWlyXTtcbn1cblxuLyoqXG4gKiBTcGxpdCBjb2xsZWN0ZWQgYEtFWT1WQUxVRWAgcGFpcnMgaW50byBhIG1hcC4gVmFsdWVzIHN0YXkgc3RyaW5nczsgdGhlIHBsYXRmb3JtXG4gKiBjb2VyY2VzIGVhY2ggdG8gaXRzIGRlY2xhcmVkIGlucHV0IHR5cGUgKGFuZCByZWplY3RzIHdoYXQgZG9lc24ndCBmaXQpLCBzbyB0aGVcbiAqIENMSSBkb2VzIG5vdCBndWVzcyB0eXBlcyBsb2NhbGx5LiBPbmx5IHRoZSBGSVJTVCBgPWAgc3BsaXRzLCBzbyBhIHZhbHVlIG1heVxuICogaXRzZWxmIGNvbnRhaW4gYD1gLlxuICovXG5mdW5jdGlvbiBwYXJzZUlucHV0UGFpcnMocGFpcnM6IHN0cmluZ1tdKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gIGNvbnN0IG91dDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICBmb3IgKGNvbnN0IHBhaXIgb2YgcGFpcnMpIHtcbiAgICBjb25zdCBlcSA9IHBhaXIuaW5kZXhPZignPScpO1xuICAgIGlmIChlcSA8IDEpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgIGBJbnZhbGlkIC0taW5wdXQgXCIke3BhaXJ9XCIg4oCUIGV4cGVjdGVkIEtFWT1WQUxVRWAsXG4gICAgICAgICdpbnB1dCcsIHBhaXIsICdrZXk9dmFsdWUnLCAnZS5nLiAtLWlucHV0IG9yZ0lkPTEyMzRhYmNkLS4uLicsXG4gICAgICApO1xuICAgIH1cbiAgICBvdXRbcGFpci5zbGljZSgwLCBlcSldID0gcGFpci5zbGljZShlcSArIDEpO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG5cbi8qKiBSZWFkIGFuZCBwYXJzZSBgLS1pbnB1dHMtZmlsZWAsIHdoaWNoIGhvbGRzIGEgZmxhdCBgeyBuYW1lOiB2YWx1ZSB9YCBvYmplY3QuICovXG5mdW5jdGlvbiByZWFkSW5wdXRzRmlsZShmaWxlOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPiB7XG4gIGlmICghZnMuZXhpc3RzU3luYyhmaWxlKSkge1xuICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoYElucHV0cyBmaWxlIG5vdCBmb3VuZDogJHtmaWxlfWAsICdpbnB1dHMtZmlsZScsIGZpbGUpO1xuICB9XG4gIGxldCBwYXJzZWQ6IHVua25vd247XG4gIHRyeSB7XG4gICAgcGFyc2VkID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoZmlsZSwgJ3V0Zi04JykpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICBgSW5wdXRzIGZpbGUgaXMgbm90IHZhbGlkIEpTT046ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWAsXG4gICAgICAnaW5wdXRzLWZpbGUnLCBmaWxlLFxuICAgICk7XG4gIH1cbiAgaWYgKHR5cGVvZiBwYXJzZWQgIT09ICdvYmplY3QnIHx8IHBhcnNlZCA9PT0gbnVsbCB8fCBBcnJheS5pc0FycmF5KHBhcnNlZCkpIHtcbiAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdJbnB1dHMgZmlsZSBtdXN0IGNvbnRhaW4gYSBKU09OIG9iamVjdCBvZiB7IFwiaW5wdXROYW1lXCI6IHZhbHVlIH0nLCAnaW5wdXRzLWZpbGUnLCBmaWxlKTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhwYXJzZWQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pKSB7XG4gICAgY29uc3QgdCA9IHR5cGVvZiB2O1xuICAgIGlmICh0ICE9PSAnc3RyaW5nJyAmJiB0ICE9PSAnbnVtYmVyJyAmJiB0ICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoYElucHV0IFwiJHtrfVwiIG11c3QgYmUgYSBzdHJpbmcsIG51bWJlciwgb3IgYm9vbGVhbiAoZ290ICR7dH0pYCwgJ2lucHV0cy1maWxlJywgZmlsZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBwYXJzZWQgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj47XG59XG5cbi8qKlxuICogUmVzb2x2ZSBhIHRlbXBsYXRlIGBuYW1lYCB0byBpdHMgaWQgdGhyb3VnaCB0aGUgY2F0YWxvZyBsaXN0IGVuZHBvaW50LiBUaGUgbGlzdFxuICogaXMgdmlzaWJpbGl0eS1zY29wZWQgc2VydmVyLXNpZGUsIHNvIHRoaXMgb25seSBldmVyIHNlZXMgdGVtcGxhdGVzIHRoZSBjYWxsZXJcbiAqIG1heSByZWFkLiBNYXRjaGluZyBpcyBleGFjdCBvbiBgbmFtZWAg4oCUIHRoZSBgbmFtZWAgcXVlcnkgcGFyYW0gaXMgYSBmaWx0ZXIsIG5vdFxuICogYSB1bmlxdWUgbG9va3VwLCBzbyBhIGZ1enp5IGJhY2tlbmQgbWF0Y2ggbXVzdCBub3Qgc2lsZW50bHkgaW5zdGFudGlhdGUgYVxuICogRElGRkVSRU5UIHRlbXBsYXRlIHRoYW4gdGhlIG9uZSBhc2tlZCBmb3IuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVUZW1wbGF0ZUJ5TmFtZShcbiAgY2xpZW50OiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVBdXRoZW50aWNhdGVkQ2xpZW50PixcbiAgbmFtZTogc3RyaW5nLFxuKTogUHJvbWlzZTxQaXBlbGluZVRlbXBsYXRlPiB7XG4gIGNvbnN0IHVybCA9IGNsaWVudC5nZXRDb25maWcoKS5hcGkucGlwZWxpbmVUZW1wbGF0ZVVybDtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0KHVybCwgeyBuYW1lLCBsaW1pdDogMTAwIH0pO1xuICBjb25zdCB7IGl0ZW1zIH0gPSBleHRyYWN0TGlzdFJlc3BvbnNlPFBpcGVsaW5lVGVtcGxhdGU+KHJlc3BvbnNlLCAndGVtcGxhdGVzJyk7XG5cbiAgY29uc3QgZXhhY3QgPSBpdGVtcy5maWx0ZXIoKHQpID0+IHQubmFtZSA9PT0gbmFtZSk7XG4gIGlmIChleGFjdC5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgYE5vIHBpcGVsaW5lIHRlbXBsYXRlIG5hbWVkIFwiJHtuYW1lfVwiIGlzIHZpc2libGUgdG8geW91LmAsXG4gICAgICAnbmFtZScsIG5hbWUsIHVuZGVmaW5lZCxcbiAgICAgIGl0ZW1zLmxlbmd0aCA+IDBcbiAgICAgICAgPyBgRGlkIHlvdSBtZWFuIG9uZSBvZjogJHtpdGVtcy5zbGljZSgwLCAxMCkubWFwKCh0KSA9PiB0Lm5hbWUpLmpvaW4oJywgJyl9YFxuICAgICAgICA6ICdMb2FkIHRoZSBzYW1wbGUgY2F0YWxvZyB3aXRoIGRlcGxveS9iaW4vbG9hZC10ZW1wbGF0ZXMuc2gsIG9yIHBhc3MgLS1pZC4nLFxuICAgICk7XG4gIH1cbiAgLy8gQSBuYW1lIGlzIHVuaXF1ZSBwZXIgb3JnLCBidXQgdGhlIHZpc2libGUgc2V0IHNwYW5zIHlvdXIgb3JnICsgcGFyZW50ICsgdGhlXG4gIC8vIHN5c3RlbSBjYXRhbG9nLCBzbyB0aGUgc2FtZSBuYW1lIGNhbiBsZWdpdGltYXRlbHkgYXBwZWFyIG1vcmUgdGhhbiBvbmNlLlxuICAvLyBSZWZ1c2UgdG8gZ3Vlc3Mg4oCUIHRoZSB3cm9uZyBwaWNrIHdvdWxkIHNpbGVudGx5IHN5bnRoIHNvbWVvbmUgZWxzZSdzIGJvZHkuXG4gIGlmIChleGFjdC5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgIGBcIiR7bmFtZX1cIiBtYXRjaGVzICR7ZXhhY3QubGVuZ3RofSB2aXNpYmxlIHRlbXBsYXRlcyDigJQgcGFzcyAtLWlkIHRvIGNob29zZSBvbmUuYCxcbiAgICAgICduYW1lJywgbmFtZSwgdW5kZWZpbmVkLFxuICAgICAgYGlkczogJHtleGFjdC5tYXAoKHQpID0+IHQuaWQpLmpvaW4oJywgJyl9YCxcbiAgICApO1xuICB9XG4gIHJldHVybiBleGFjdFswXSE7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSBgdGVtcGxhdGUgaW5zdGFudGlhdGVgIGNvbW1hbmQuXG4gKlxuICogUmVuZGVycyBhIGdvbGRlbi1wYXRoIHRlbXBsYXRlIGludG8gYSBjb25jcmV0ZSBwaXBlbGluZSBgcHJvcHNgIGRvY3VtZW50IGJ5XG4gKiBzdXBwbHlpbmcgaXRzIGRlY2xhcmVkIGlucHV0cy4gSXQgKipjcmVhdGVzIG5vdGhpbmcqKiDigJQgdGhlIHJlbmRlcmVkIHByb3BzIGFyZVxuICogd3JpdHRlbiB0byBhIGZpbGUgKG9yIHN0ZG91dCkgYW5kIGdvIHRocm91Z2ggdGhlIG5vcm1hbCBgcGlwZWxpbmUgY3JlYXRlYCBwYXRoLFxuICogd2hlcmUgY29tcGxpYW5jZSBhbmQgcXVvdGEgc3RpbGwgYXBwbHkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGJhc2hcbiAqIHBpcGVsaW5lLW1hbmFnZXIgdGVtcGxhdGUgaW5zdGFudGlhdGUgLS1uYW1lIHJlYWN0LWphdmFzY3JpcHQgXFxcbiAqICAgLS1wcm9qZWN0IHJlYWN0IC0tb3JnYW5pemF0aW9uIEFjbWVDb3JwIFxcXG4gKiAgIC0taW5wdXQgb3JnSWQ9MTIzNGFiY2QtLi4uIC0tb3V0cHV0IHBpcGVsaW5lLXByb3BzLmpzb25cbiAqXG4gKiBwaXBlbGluZS1tYW5hZ2VyIHBpcGVsaW5lIGNyZWF0ZSAtLWZpbGUgcGlwZWxpbmUtcHJvcHMuanNvbiAtLWRlcGxveVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW50aWF0ZVRlbXBsYXRlKHByb2dyYW06IENvbW1hbmQpOiB2b2lkIHtcbiAgd2l0aFNzbE9wdGlvbnMoXG4gICAgcHJvZ3JhbVxuICAgICAgLmNvbW1hbmQoJ2luc3RhbnRpYXRlJylcbiAgICAgIC5kZXNjcmlwdGlvbignUmVuZGVyIGEgcGlwZWxpbmUgdGVtcGxhdGUgaW50byBjb25jcmV0ZSBwaXBlbGluZSBwcm9wcyAoY3JlYXRlcyBub3RoaW5nKScpXG4gICAgICAub3B0aW9uKCctbiwgLS1uYW1lIDxuYW1lPicsICdUZW1wbGF0ZSBuYW1lIChyZXNvbHZlZCBhZ2FpbnN0IHRoZSBjYXRhbG9nIHlvdSBjYW4gc2VlKScpXG4gICAgICAub3B0aW9uKCctaSwgLS1pZCA8aWQ+JywgJ1RlbXBsYXRlIElEIChza2lwcyB0aGUgbmFtZSBsb29rdXApJylcbiAgICAgIC5yZXF1aXJlZE9wdGlvbignLXAsIC0tcHJvamVjdCA8cHJvamVjdD4nLCAnUHJvamVjdCBuYW1lIGZvciB0aGUgcGlwZWxpbmUgdGhpcyB0ZW1wbGF0ZSB3aWxsIHByb2R1Y2UnKVxuICAgICAgLnJlcXVpcmVkT3B0aW9uKCctbywgLS1vcmdhbml6YXRpb24gPG9yZ2FuaXphdGlvbj4nLCAnT3JnYW5pemF0aW9uIG5hbWUgZm9yIHRoZSBwaXBlbGluZScpXG4gICAgICAub3B0aW9uKCctLXBpcGVsaW5lLW5hbWUgPG5hbWU+JywgJ1BpcGVsaW5lIG5hbWUgKGRlZmF1bHRzIHRvIDxvcmdhbml6YXRpb24+LTxwcm9qZWN0Pi1waXBlbGluZSBhdCBzeW50aCknKVxuICAgICAgLm9wdGlvbignLS1pbnB1dCA8a2V5PXZhbHVlPicsICdUZW1wbGF0ZSBpbnB1dCwgcmVwZWF0YWJsZSAoZS5nLiAtLWlucHV0IG9yZ0lkPTEyMzRhYmNkLS4uLiknLCBjb2xsZWN0SW5wdXQsIFtdKVxuICAgICAgLm9wdGlvbignLS1pbnB1dHMtZmlsZSA8ZmlsZT4nLCAnSlNPTiBmaWxlIG9mIHsgXCJpbnB1dE5hbWVcIjogdmFsdWUgfSDigJQgbWVyZ2VkIFVOREVSIGFueSAtLWlucHV0IGZsYWdzJylcbiAgICAgIC5vcHRpb24oJy0tb3V0cHV0IDxmaWxlPicsICdXcml0ZSB0aGUgcmVuZGVyZWQgcHJvcHMgdG8gYSBmaWxlIChkZWZhdWx0OiBzdGRvdXQpJylcbiAgICAgIC5vcHRpb24oJy1mLCAtLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0IChqc29uLCB5YW1sKScsICdqc29uJyksXG4gIClcbiAgICAub3B0aW9uKCctLWpzb24nLCAnUHJpbnQgT05MWSB0aGUgcmVuZGVyZWQgcHJvcHMgYXMgSlNPTiAoZm9yIHBpcGluZyk7IGltcGxpZXMgbm8gZGVjb3JhdGl2ZSBvdXRwdXQnLCBmYWxzZSlcbiAgICAuYWN0aW9uKGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICAvLyBXaXRoIC0tanNvbiAob3IgcHJvcHMgaGVhZGVkIGZvciBzdGRvdXQgaW4gYW55IGZvcm1hdCkgdGhlIHBheWxvYWQgSVMgdGhlXG4gICAgICAvLyBvdXRwdXQsIHNvIHRoZSBiYW5uZXIgbXVzdCBub3QgbGFuZCBvbiBzdGRvdXQgYWhlYWQgb2YgaXQgYW5kIGJyZWFrIHBpcGluZy5cbiAgICAgIGNvbnN0IHRvU3Rkb3V0ID0gIW9wdGlvbnMub3V0cHV0O1xuICAgICAgY29uc3QgcXVpZXQgPSBvcHRpb25zLmpzb24gfHwgdG9TdGRvdXQ7XG4gICAgICBjb25zdCBleGVjdXRpb25JZCA9IHByaW50Q29tbWFuZEhlYWRlcignSW5zdGFudGlhdGUgVGVtcGxhdGUnLCB1bmRlZmluZWQsIHsgcXVpZXQgfSk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghb3B0aW9ucy5uYW1lICYmICFvcHRpb25zLmlkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignUHJvdmlkZSAtLW5hbWUgb3IgLS1pZCB0byBzZWxlY3QgYSB0ZW1wbGF0ZScsICduYW1lJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMubmFtZSAmJiBvcHRpb25zLmlkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignUGFzcyBlaXRoZXIgLS1uYW1lIG9yIC0taWQsIG5vdCBib3RoJywgJ25hbWUnKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBPbmx5IHRoZSByb3VuZC10cmlwcGFibGUgZm9ybWF0czogdGhlIHJlbmRlcmVkIHByb3BzIGV4aXN0IHRvIGJlIGZlZFxuICAgICAgICAvLyBiYWNrIHRvIGBwaXBlbGluZSBjcmVhdGUgLS1maWxlYCwgYW5kIGB0YWJsZWAvYGNzdmAgd291bGQgZmxhdHRlbiB0aGVtXG4gICAgICAgIC8vIGludG8gc29tZXRoaW5nIHRoYXQgY2FuIG5vIGxvbmdlciBiZSBwYXJzZWQgYXMgcHJvcHMuXG4gICAgICAgIGlmICghWydqc29uJywgJ3lhbWwnXS5pbmNsdWRlcyhvcHRpb25zLmZvcm1hdCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgICAgYFVuc3VwcG9ydGVkIC0tZm9ybWF0IFwiJHtvcHRpb25zLmZvcm1hdH1cIiDigJQgcmVuZGVyZWQgcHJvcHMgbXVzdCBzdGF5IHBhcnNlYWJsZWAsXG4gICAgICAgICAgICAnZm9ybWF0Jywgb3B0aW9ucy5mb3JtYXQsICdqc29ufHlhbWwnLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFxdWlldCkgcHJpbnRTc2xXYXJuaW5nKG9wdGlvbnMudmVyaWZ5U3NsKTtcblxuICAgICAgICAvLyAtLWlucHV0IGZsYWdzIHdpbiBvdmVyIC0taW5wdXRzLWZpbGUgc28gYSBmaWxlIGNhbiBob2xkIHNoYXJlZCBkZWZhdWx0c1xuICAgICAgICAvLyB0aGF0IGEgc2luZ2xlIGZsYWcgb3ZlcnJpZGVzIG9uIHRoZSBjb21tYW5kIGxpbmUuXG4gICAgICAgIGNvbnN0IGlucHV0czogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4gPSB7XG4gICAgICAgICAgLi4uKG9wdGlvbnMuaW5wdXRzRmlsZSA/IHJlYWRJbnB1dHNGaWxlKG9wdGlvbnMuaW5wdXRzRmlsZSkgOiB7fSksXG4gICAgICAgICAgLi4ucGFyc2VJbnB1dFBhaXJzKG9wdGlvbnMuaW5wdXQgYXMgc3RyaW5nW10pLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICghcXVpZXQpIHtcbiAgICAgICAgICBwcmludEluZm8oJ1JlcXVlc3QgcGFyYW1ldGVycycsIHtcbiAgICAgICAgICAgIHRlbXBsYXRlOiBvcHRpb25zLm5hbWUgPz8gb3B0aW9ucy5pZCxcbiAgICAgICAgICAgIHByb2plY3Q6IG9wdGlvbnMucHJvamVjdCxcbiAgICAgICAgICAgIG9yZ2FuaXphdGlvbjogb3B0aW9ucy5vcmdhbml6YXRpb24sXG4gICAgICAgICAgICBwaXBlbGluZU5hbWU6IG9wdGlvbnMucGlwZWxpbmVOYW1lID8/ICcoZGVmYXVsdCknLFxuICAgICAgICAgICAgaW5wdXRzOiBPYmplY3Qua2V5cyhpbnB1dHMpLmxlbmd0aCA+IDAgPyBPYmplY3Qua2V5cyhpbnB1dHMpLmpvaW4oJywgJykgOiAnKG5vbmUpJyxcbiAgICAgICAgICAgIG91dHB1dDogb3B0aW9ucy5vdXRwdXQgPz8gJyhzdGRvdXQpJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRTZWN0aW9uKCdSZW5kZXJpbmcgVGVtcGxhdGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNsaWVudCA9IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnQob3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IHRlbXBsYXRlVXJsID0gY2xpZW50LmdldENvbmZpZygpLmFwaS5waXBlbGluZVRlbXBsYXRlVXJsO1xuXG4gICAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IHNwaW5uZXIgPSBxdWlldCA/IG51bGwgOiBvcmEoJ1Jlc29sdmluZyB0ZW1wbGF0ZS4uLicpLnN0YXJ0KCk7XG4gICAgICAgIGxldCB0ZW1wbGF0ZUlkOiBzdHJpbmc7XG4gICAgICAgIGxldCB0ZW1wbGF0ZU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAob3B0aW9ucy5pZCkge1xuICAgICAgICAgICAgdGVtcGxhdGVJZCA9IG9wdGlvbnMuaWQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHRlbXBsYXRlID0gYXdhaXQgcmVzb2x2ZVRlbXBsYXRlQnlOYW1lKGNsaWVudCwgb3B0aW9ucy5uYW1lKTtcbiAgICAgICAgICAgIHRlbXBsYXRlSWQgPSB0ZW1wbGF0ZS5pZDtcbiAgICAgICAgICAgIHRlbXBsYXRlTmFtZSA9IHRlbXBsYXRlLm5hbWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNwaW5uZXI/LnN1Y2NlZWQoYFRlbXBsYXRlIHJlc29sdmVkJHt0ZW1wbGF0ZU5hbWUgPyBgICgke3RlbXBsYXRlTmFtZX0pYCA6ICcnfWApO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHNwaW5uZXI/LmZhaWwoJ1RlbXBsYXRlIHJlc29sdXRpb24gZmFpbGVkJyk7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBib2R5OiBJbnN0YW50aWF0ZVRlbXBsYXRlUmVxdWVzdCA9IHtcbiAgICAgICAgICBwcm9qZWN0OiBvcHRpb25zLnByb2plY3QsXG4gICAgICAgICAgb3JnYW5pemF0aW9uOiBvcHRpb25zLm9yZ2FuaXphdGlvbixcbiAgICAgICAgICAuLi4ob3B0aW9ucy5waXBlbGluZU5hbWUgPyB7IHBpcGVsaW5lTmFtZTogb3B0aW9ucy5waXBlbGluZU5hbWUgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oT2JqZWN0LmtleXMoaW5wdXRzKS5sZW5ndGggPiAwID8geyBpbnB1dHMgfSA6IHt9KSxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCByZW5kZXJTcGlubmVyID0gcXVpZXQgPyBudWxsIDogb3JhKCdJbnN0YW50aWF0aW5nLi4uJykuc3RhcnQoKTtcbiAgICAgICAgbGV0IHJlbmRlcmVkOiBJbnN0YW50aWF0ZVRlbXBsYXRlUmVzcG9uc2UgfCB1bmRlZmluZWQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdChgJHt0ZW1wbGF0ZVVybH0vJHtlbmNvZGVVUklDb21wb25lbnQodGVtcGxhdGVJZCl9L2luc3RhbnRpYXRlYCwgYm9keSk7XG4gICAgICAgICAgLy8gYHByb3BzYCBpcyB0aGUgaWRlbnRpZmllciBrZXk6IHRoZSBlbnZlbG9wZSdzIGRhdGEgSVMgeyBwcm9wcywgLi4uIH0uXG4gICAgICAgICAgcmVuZGVyZWQgPSBleHRyYWN0U2luZ2xlUmVzcG9uc2U8SW5zdGFudGlhdGVUZW1wbGF0ZVJlc3BvbnNlPihyZXNwb25zZSwgJ3RlbXBsYXRlJywgJ3Byb3BzJyk7XG4gICAgICAgICAgcmVuZGVyU3Bpbm5lcj8uc3VjY2VlZCgnVGVtcGxhdGUgaW5zdGFudGlhdGVkJyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgcmVuZGVyU3Bpbm5lcj8uZmFpbCgnSW5zdGFudGlhdGUgZmFpbGVkJyk7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gc3RhcnRUaW1lO1xuXG4gICAgICAgIGlmICghcmVuZGVyZWQ/LnByb3BzKSB7XG4gICAgICAgICAgcHJpbnRFcnJvcignTm8gcHJvcHMgcmV0dXJuZWQgZnJvbSBBUEknLCB7IHRlbXBsYXRlSWQgfSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUZW1wbGF0ZSAke3RlbXBsYXRlSWR9IHJlbmRlcmVkIG5vIHByb3BzYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJvcHMgPSByZW5kZXJlZC5wcm9wcyBhcyBQaXBlbGluZVByb3BzO1xuXG4gICAgICAgIC8vIEEgbGVmdG92ZXIgYHt7IC4uLiB9fWAgaW4gYSAqc2VsZi1zY29wZSogZmllbGQgbWVhbnMgYW4gaW5wdXQgd2FzIG5ldmVyXG4gICAgICAgIC8vIHN1cHBsaWVkIGFuZCB0aGUgcGxhY2Vob2xkZXIgd291bGQgZmFpbCBvcGFxdWVseSBhdCBzeW50aC4gYHBpcGVsaW5lLipgXG4gICAgICAgIC8vIHRva2VucyBhcmUgZXhwZWN0ZWQgaGVyZSDigJQgdGhleSByZXNvbHZlIGF0IHN5bnRoLCBub3QgYXQgaW5zdGFudGlhdGUuXG4gICAgICAgIGNvbnN0IHVucmVzb2x2ZWQgPSB1bnJlc29sdmVkU2VsZlZhcnMocHJvcHMpO1xuICAgICAgICBpZiAodW5yZXNvbHZlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcHJpbnRXYXJuaW5nKCdSZW5kZXJlZCBwcm9wcyBzdGlsbCBjb250YWluIHVucmVzb2x2ZWQgcGxhY2Vob2xkZXJzJywge1xuICAgICAgICAgICAgdmFyczogdW5yZXNvbHZlZC5qb2luKCcsICcpLFxuICAgICAgICAgICAgaGludDogJ1N1cHBseSB0aGVtIHdpdGggLS1pbnB1dCA8bmFtZT49PHZhbHVlPicsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXF1aWV0KSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50U2VjdGlvbignUmVuZGVyZWQgUHJvcHMnKTtcbiAgICAgICAgICBwcmludEtleVZhbHVlKHtcbiAgICAgICAgICAgICdUZW1wbGF0ZSc6IGdyZWVuKGJvbGQodGVtcGxhdGVOYW1lID8/IHRlbXBsYXRlSWQpKSxcbiAgICAgICAgICAgICdQcm9qZWN0JzogcHJvcHMucHJvamVjdCBhcyBzdHJpbmcsXG4gICAgICAgICAgICAnT3JnYW5pemF0aW9uJzogcHJvcHMub3JnYW5pemF0aW9uIGFzIHN0cmluZyxcbiAgICAgICAgICAgICdQaXBlbGluZSBOYW1lJzogKHByb3BzLnBpcGVsaW5lTmFtZSBhcyBzdHJpbmcpID8/IGRpbSgnKGRlZmF1bHQgYXQgc3ludGgpJyksXG4gICAgICAgICAgICAnVmFycyc6IE9iamVjdC5rZXlzKChwcm9wcy52YXJzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA/PyB7fSkuam9pbignLCAnKSB8fCBkaW0oJyhub25lKScpLFxuICAgICAgICAgICAgJ1N0YWdlcyc6IFN0cmluZyhBcnJheS5pc0FycmF5KHByb3BzLnN0YWdlcykgPyBwcm9wcy5zdGFnZXMubGVuZ3RoIDogMCksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcHJpbnRFeGVjdXRpb25TdW1tYXJ5KGV4ZWN1dGlvbklkLCBkdXJhdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBvdXRwdXREYXRhKHByb3BzLCB7XG4gICAgICAgICAgZm9ybWF0OiBvcHRpb25zLmpzb24gPyAnanNvbicgOiBvcHRpb25zLmZvcm1hdCxcbiAgICAgICAgICBmaWxlOiBvcHRpb25zLm91dHB1dCxcbiAgICAgICAgICBzaWxlbnQ6IHF1aWV0LFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAob3B0aW9ucy5vdXRwdXQgJiYgIXF1aWV0KSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIHByaW50U3VjY2VzcygnUGlwZWxpbmUgcHJvcHMgc2F2ZWQnLCB7IHBhdGg6IG9wdGlvbnMub3V0cHV0IH0pO1xuICAgICAgICAgIHByaW50SW5mbygnTmV4dCBzdGVwJywge1xuICAgICAgICAgICAgY29tbWFuZDogYHBpcGVsaW5lLW1hbmFnZXIgcGlwZWxpbmUgY3JlYXRlIC0tZmlsZSAke29wdGlvbnMub3V0cHV0fSAtLWRlcGxveWAsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc29sZS5sb2coZGltKGAgICR7Y3lhbignVGlwOicpfSBpbnN0YW50aWF0ZSBvbmx5IHJlbmRlcnMg4oCUIG5vdGhpbmcgZXhpc3RzIG9uIHRoZSBwbGF0Zm9ybSB5ZXQuYCkpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVFcnJvcihlcnJvciwgRVJST1JfQ09ERVMuQVBJX1JFUVVFU1QsIHtcbiAgICAgICAgICBkZWJ1ZzogcHJvZ3JhbS5vcHRzKCkuZGVidWcsXG4gICAgICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgICAgICBjb250ZXh0OiB7IGNvbW1hbmQ6ICdpbnN0YW50aWF0ZS10ZW1wbGF0ZScsIGV4ZWN1dGlvbklkLCB0ZW1wbGF0ZTogb3B0aW9ucy5uYW1lID8/IG9wdGlvbnMuaWQgfSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG5cbi8qKlxuICogTmFtZXMgb2YgYHt7IHZhcnMuWCB9fWAgcGxhY2Vob2xkZXJzIHN0aWxsIHByZXNlbnQgaW4gdGhlIHJlbmRlcmVkIHByb3BzJyBvd25cbiAqIHNlbGYtc2NvcGUgZmllbGRzIChgcHJvamVjdGAsIGBtZXRhZGF0YS4qYCwgYHZhcnMuKmApIOKAlCBpLmUuIGlucHV0cyB0aGUgY2FsbGVyXG4gKiBuZXZlciBzdXBwbGllZC4gYHt7IHBpcGVsaW5lLiogfX1gIHRva2VucyBhcmUgZGVsaWJlcmF0ZWx5IGlnbm9yZWQ6IHRob3NlIGFyZVxuICogc3ludGgtdGltZSByZWZlcmVuY2VzIChlLmcuIHRoZSBHaXRIdWIgc291cmNlIHRva2VuKSBhbmQgYXJlIFNVUFBPU0VEIHRvXG4gKiBzdXJ2aXZlIGluc3RhbnRpYXRpb24uXG4gKi9cbmZ1bmN0aW9uIHVucmVzb2x2ZWRTZWxmVmFycyhwcm9wczogUGlwZWxpbmVQcm9wcyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgZm91bmQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3Qgc2NhbiA9ICh2YWx1ZTogdW5rbm93bik6IHZvaWQgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBmb3IgKGNvbnN0IG0gb2YgdmFsdWUubWF0Y2hBbGwoL1xce1xce1xccyp2YXJzXFwuKFtBLVphLXpfXVtBLVphLXowLTlfXSopL2cpKSBmb3VuZC5hZGQobVsxXSEpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZS5mb3JFYWNoKHNjYW4pO1xuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSByZXR1cm4gT2JqZWN0LnZhbHVlcyh2YWx1ZSkuZm9yRWFjaChzY2FuKTtcbiAgfTtcbiAgc2Nhbihwcm9wcy5wcm9qZWN0KTtcbiAgc2Nhbihwcm9wcy5tZXRhZGF0YSk7XG4gIHNjYW4ocHJvcHMudmFycyk7XG4gIHJldHVybiBbLi4uZm91bmRdO1xufVxuIl19
275
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFudGlhdGUtdGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvaW5zdGFudGlhdGUtdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUN6QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUM7QUFDdEIsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQzlCLE9BQU8sRUFLTixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEosT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RJLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXhGLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFeEM7Ozs7OztHQU1HO0FBQ0gsU0FBUyxZQUFZLENBQUMsSUFBWSxFQUFFLFFBQWtCO0lBQ3BELE9BQU8sQ0FBQyxHQUFHLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLGVB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RSxFQUFFO2FBQ2hHLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLGtCQUFrQixDQUFDLEtBQW9CO0lBQzlDLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFDaEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFjLEVBQVEsRUFBRTtRQUNwQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyx3Q0FBd0MsQ0FBQztnQkFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQyxDQUFDO1lBQzNGLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRCxJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQUUsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRixDQUFDLENBQUM7SUFDRixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCB7IGVycm9yTWVzc2FnZSB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjb21tYW5kZXInO1xuaW1wb3J0IG9yYSBmcm9tICdvcmEnO1xuaW1wb3J0IHBpY28gZnJvbSAncGljb2NvbG9ycyc7XG5pbXBvcnQge1xuICB0eXBlIEluc3RhbnRpYXRlVGVtcGxhdGVSZXF1ZXN0LFxuICB0eXBlIEluc3RhbnRpYXRlVGVtcGxhdGVSZXNwb25zZSxcbiAgdHlwZSBQaXBlbGluZVRlbXBsYXRlLFxuICB0eXBlIFBpcGVsaW5lUHJvcHMsXG59IGZyb20gJy4uL3R5cGVzL2luZGV4LmpzJztcbmltcG9ydCB7IGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnQsIHByaW50Q29tbWFuZEhlYWRlciwgcHJpbnRFeGVjdXRpb25TdW1tYXJ5LCBwcmludFNzbFdhcm5pbmcsIHdpdGhTc2xPcHRpb25zIH0gZnJvbSAnLi4vdXRpbHMvY29tbWFuZC11dGlscy5qcyc7XG5pbXBvcnQgeyBFUlJPUl9DT0RFUywgaGFuZGxlRXJyb3IsIFZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4uL3V0aWxzL2Vycm9yLWhhbmRsZXIuanMnO1xuaW1wb3J0IHsgb3V0cHV0RGF0YSwgcHJpbnRFcnJvciwgcHJpbnRJbmZvLCBwcmludEtleVZhbHVlLCBwcmludFNlY3Rpb24sIHByaW50U3VjY2VzcywgcHJpbnRXYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvb3V0cHV0LXV0aWxzLmpzJztcbmltcG9ydCB7IGV4dHJhY3RMaXN0UmVzcG9uc2UsIGV4dHJhY3RTaW5nbGVSZXNwb25zZSB9IGZyb20gJy4uL3V0aWxzL3Jlc3BvbnNlLXV0aWxzLmpzJztcblxuY29uc3QgeyBib2xkLCBjeWFuLCBkaW0sIGdyZWVuIH0gPSBwaWNvO1xuXG4vKipcbiAqIEFjY3VtdWxhdGUgYSByZXBlYXRhYmxlIGAtLWlucHV0IEtFWT1WQUxVRWAgZmxhZy4gVGhpcyBvbmx5IGNvbGxlY3RzIOKAlCBpdCBkb2VzXG4gKiBOT1QgdmFsaWRhdGUsIGJlY2F1c2UgQ29tbWFuZGVyIHJ1bnMgYHBhcnNlQXJnYCBiZWZvcmUgdGhlIGFjdGlvbiBjYWxsYmFjaywgc29cbiAqIGEgdGhyb3cgaGVyZSB3b3VsZCBlc2NhcGUgdGhlIGFjdGlvbidzIGBoYW5kbGVFcnJvcmAgYW5kIHN1cmZhY2UgYXMgYW5cbiAqIHVuaGFuZGxlZCBzdGFjayB0cmFjZSB3aXRoIHRoZSB3cm9uZyBleGl0IGNvZGUgaW5zdGVhZCBvZiBhIGNsZWFuIHZhbGlkYXRpb25cbiAqIGZhaWx1cmUuIFBhcnNpbmcgaGFwcGVucyBpbiB7QGxpbmsgcGFyc2VJbnB1dFBhaXJzfSwgaW5zaWRlIHRoZSBhY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNvbGxlY3RJbnB1dChwYWlyOiBzdHJpbmcsIHByZXZpb3VzOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIFsuLi5wcmV2aW91cywgcGFpcl07XG59XG5cbi8qKlxuICogU3BsaXQgY29sbGVjdGVkIGBLRVk9VkFMVUVgIHBhaXJzIGludG8gYSBtYXAuIFZhbHVlcyBzdGF5IHN0cmluZ3M7IHRoZSBwbGF0Zm9ybVxuICogY29lcmNlcyBlYWNoIHRvIGl0cyBkZWNsYXJlZCBpbnB1dCB0eXBlIChhbmQgcmVqZWN0cyB3aGF0IGRvZXNuJ3QgZml0KSwgc28gdGhlXG4gKiBDTEkgZG9lcyBub3QgZ3Vlc3MgdHlwZXMgbG9jYWxseS4gT25seSB0aGUgRklSU1QgYD1gIHNwbGl0cywgc28gYSB2YWx1ZSBtYXlcbiAqIGl0c2VsZiBjb250YWluIGA9YC5cbiAqL1xuZnVuY3Rpb24gcGFyc2VJbnB1dFBhaXJzKHBhaXJzOiBzdHJpbmdbXSk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCBvdXQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgZm9yIChjb25zdCBwYWlyIG9mIHBhaXJzKSB7XG4gICAgY29uc3QgZXEgPSBwYWlyLmluZGV4T2YoJz0nKTtcbiAgICBpZiAoZXEgPCAxKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBgSW52YWxpZCAtLWlucHV0IFwiJHtwYWlyfVwiIOKAlCBleHBlY3RlZCBLRVk9VkFMVUVgLFxuICAgICAgICAnaW5wdXQnLCBwYWlyLCAna2V5PXZhbHVlJywgJ2UuZy4gLS1pbnB1dCBvcmdJZD0xMjM0YWJjZC0uLi4nLFxuICAgICAgKTtcbiAgICB9XG4gICAgb3V0W3BhaXIuc2xpY2UoMCwgZXEpXSA9IHBhaXIuc2xpY2UoZXEgKyAxKTtcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuXG4vKiogUmVhZCBhbmQgcGFyc2UgYC0taW5wdXRzLWZpbGVgLCB3aGljaCBob2xkcyBhIGZsYXQgYHsgbmFtZTogdmFsdWUgfWAgb2JqZWN0LiAqL1xuZnVuY3Rpb24gcmVhZElucHV0c0ZpbGUoZmlsZTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4ge1xuICBpZiAoIWZzLmV4aXN0c1N5bmMoZmlsZSkpIHtcbiAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGBJbnB1dHMgZmlsZSBub3QgZm91bmQ6ICR7ZmlsZX1gLCAnaW5wdXRzLWZpbGUnLCBmaWxlKTtcbiAgfVxuICBsZXQgcGFyc2VkOiB1bmtub3duO1xuICB0cnkge1xuICAgIHBhcnNlZCA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGZpbGUsICd1dGYtOCcpKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgYElucHV0cyBmaWxlIGlzIG5vdCB2YWxpZCBKU09OOiAke2Vycm9yTWVzc2FnZShlcnJvcil9YCxcbiAgICAgICdpbnB1dHMtZmlsZScsIGZpbGUsXG4gICAgKTtcbiAgfVxuICBpZiAodHlwZW9mIHBhcnNlZCAhPT0gJ29iamVjdCcgfHwgcGFyc2VkID09PSBudWxsIHx8IEFycmF5LmlzQXJyYXkocGFyc2VkKSkge1xuICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0lucHV0cyBmaWxlIG11c3QgY29udGFpbiBhIEpTT04gb2JqZWN0IG9mIHsgXCJpbnB1dE5hbWVcIjogdmFsdWUgfScsICdpbnB1dHMtZmlsZScsIGZpbGUpO1xuICB9XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHBhcnNlZCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikpIHtcbiAgICBjb25zdCB0ID0gdHlwZW9mIHY7XG4gICAgaWYgKHQgIT09ICdzdHJpbmcnICYmIHQgIT09ICdudW1iZXInICYmIHQgIT09ICdib29sZWFuJykge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihgSW5wdXQgXCIke2t9XCIgbXVzdCBiZSBhIHN0cmluZywgbnVtYmVyLCBvciBib29sZWFuIChnb3QgJHt0fSlgLCAnaW5wdXRzLWZpbGUnLCBmaWxlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHBhcnNlZCBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPjtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGEgdGVtcGxhdGUgYG5hbWVgIHRvIGl0cyBpZCB0aHJvdWdoIHRoZSBjYXRhbG9nIGxpc3QgZW5kcG9pbnQuIFRoZSBsaXN0XG4gKiBpcyB2aXNpYmlsaXR5LXNjb3BlZCBzZXJ2ZXItc2lkZSwgc28gdGhpcyBvbmx5IGV2ZXIgc2VlcyB0ZW1wbGF0ZXMgdGhlIGNhbGxlclxuICogbWF5IHJlYWQuIE1hdGNoaW5nIGlzIGV4YWN0IG9uIGBuYW1lYCDigJQgdGhlIGBuYW1lYCBxdWVyeSBwYXJhbSBpcyBhIGZpbHRlciwgbm90XG4gKiBhIHVuaXF1ZSBsb29rdXAsIHNvIGEgZnV6enkgYmFja2VuZCBtYXRjaCBtdXN0IG5vdCBzaWxlbnRseSBpbnN0YW50aWF0ZSBhXG4gKiBESUZGRVJFTlQgdGVtcGxhdGUgdGhhbiB0aGUgb25lIGFza2VkIGZvci5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVRlbXBsYXRlQnlOYW1lKFxuICBjbGllbnQ6IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUF1dGhlbnRpY2F0ZWRDbGllbnQ+LFxuICBuYW1lOiBzdHJpbmcsXG4pOiBQcm9taXNlPFBpcGVsaW5lVGVtcGxhdGU+IHtcbiAgY29uc3QgdXJsID0gY2xpZW50LmdldENvbmZpZygpLmFwaS5waXBlbGluZVRlbXBsYXRlVXJsO1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQodXJsLCB7IG5hbWUsIGxpbWl0OiAxMDAgfSk7XG4gIGNvbnN0IHsgaXRlbXMgfSA9IGV4dHJhY3RMaXN0UmVzcG9uc2U8UGlwZWxpbmVUZW1wbGF0ZT4ocmVzcG9uc2UsICd0ZW1wbGF0ZXMnKTtcblxuICBjb25zdCBleGFjdCA9IGl0ZW1zLmZpbHRlcigodCkgPT4gdC5uYW1lID09PSBuYW1lKTtcbiAgaWYgKGV4YWN0Lmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICBgTm8gcGlwZWxpbmUgdGVtcGxhdGUgbmFtZWQgXCIke25hbWV9XCIgaXMgdmlzaWJsZSB0byB5b3UuYCxcbiAgICAgICduYW1lJywgbmFtZSwgdW5kZWZpbmVkLFxuICAgICAgaXRlbXMubGVuZ3RoID4gMFxuICAgICAgICA/IGBEaWQgeW91IG1lYW4gb25lIG9mOiAke2l0ZW1zLnNsaWNlKDAsIDEwKS5tYXAoKHQpID0+IHQubmFtZSkuam9pbignLCAnKX1gXG4gICAgICAgIDogJ0xvYWQgdGhlIHNhbXBsZSBjYXRhbG9nIHdpdGggZGVwbG95L2Jpbi9sb2FkLXRlbXBsYXRlcy5zaCwgb3IgcGFzcyAtLWlkLicsXG4gICAgKTtcbiAgfVxuICAvLyBBIG5hbWUgaXMgdW5pcXVlIHBlciBvcmcsIGJ1dCB0aGUgdmlzaWJsZSBzZXQgc3BhbnMgeW91ciBvcmcgKyBwYXJlbnQgKyB0aGVcbiAgLy8gc3lzdGVtIGNhdGFsb2csIHNvIHRoZSBzYW1lIG5hbWUgY2FuIGxlZ2l0aW1hdGVseSBhcHBlYXIgbW9yZSB0aGFuIG9uY2UuXG4gIC8vIFJlZnVzZSB0byBndWVzcyDigJQgdGhlIHdyb25nIHBpY2sgd291bGQgc2lsZW50bHkgc3ludGggc29tZW9uZSBlbHNlJ3MgYm9keS5cbiAgaWYgKGV4YWN0Lmxlbmd0aCA+IDEpIHtcbiAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKFxuICAgICAgYFwiJHtuYW1lfVwiIG1hdGNoZXMgJHtleGFjdC5sZW5ndGh9IHZpc2libGUgdGVtcGxhdGVzIOKAlCBwYXNzIC0taWQgdG8gY2hvb3NlIG9uZS5gLFxuICAgICAgJ25hbWUnLCBuYW1lLCB1bmRlZmluZWQsXG4gICAgICBgaWRzOiAke2V4YWN0Lm1hcCgodCkgPT4gdC5pZCkuam9pbignLCAnKX1gLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGV4YWN0WzBdITtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIGB0ZW1wbGF0ZSBpbnN0YW50aWF0ZWAgY29tbWFuZC5cbiAqXG4gKiBSZW5kZXJzIGEgZ29sZGVuLXBhdGggdGVtcGxhdGUgaW50byBhIGNvbmNyZXRlIHBpcGVsaW5lIGBwcm9wc2AgZG9jdW1lbnQgYnlcbiAqIHN1cHBseWluZyBpdHMgZGVjbGFyZWQgaW5wdXRzLiBJdCAqKmNyZWF0ZXMgbm90aGluZyoqIOKAlCB0aGUgcmVuZGVyZWQgcHJvcHMgYXJlXG4gKiB3cml0dGVuIHRvIGEgZmlsZSAob3Igc3Rkb3V0KSBhbmQgZ28gdGhyb3VnaCB0aGUgbm9ybWFsIGBwaXBlbGluZSBjcmVhdGVgIHBhdGgsXG4gKiB3aGVyZSBjb21wbGlhbmNlIGFuZCBxdW90YSBzdGlsbCBhcHBseS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgYmFzaFxuICogcGlwZWxpbmUtbWFuYWdlciB0ZW1wbGF0ZSBpbnN0YW50aWF0ZSAtLW5hbWUgcmVhY3QtamF2YXNjcmlwdCBcXFxuICogICAtLXByb2plY3QgcmVhY3QgLS1vcmdhbml6YXRpb24gQWNtZUNvcnAgXFxcbiAqICAgLS1pbnB1dCBvcmdJZD0xMjM0YWJjZC0uLi4gLS1vdXRwdXQgcGlwZWxpbmUtcHJvcHMuanNvblxuICpcbiAqIHBpcGVsaW5lLW1hbmFnZXIgcGlwZWxpbmUgY3JlYXRlIC0tZmlsZSBwaXBlbGluZS1wcm9wcy5qc29uIC0tZGVwbG95XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbnRpYXRlVGVtcGxhdGUocHJvZ3JhbTogQ29tbWFuZCk6IHZvaWQge1xuICB3aXRoU3NsT3B0aW9ucyhcbiAgICBwcm9ncmFtXG4gICAgICAuY29tbWFuZCgnaW5zdGFudGlhdGUnKVxuICAgICAgLmRlc2NyaXB0aW9uKCdSZW5kZXIgYSBwaXBlbGluZSB0ZW1wbGF0ZSBpbnRvIGNvbmNyZXRlIHBpcGVsaW5lIHByb3BzIChjcmVhdGVzIG5vdGhpbmcpJylcbiAgICAgIC5vcHRpb24oJy1uLCAtLW5hbWUgPG5hbWU+JywgJ1RlbXBsYXRlIG5hbWUgKHJlc29sdmVkIGFnYWluc3QgdGhlIGNhdGFsb2cgeW91IGNhbiBzZWUpJylcbiAgICAgIC5vcHRpb24oJy1pLCAtLWlkIDxpZD4nLCAnVGVtcGxhdGUgSUQgKHNraXBzIHRoZSBuYW1lIGxvb2t1cCknKVxuICAgICAgLnJlcXVpcmVkT3B0aW9uKCctcCwgLS1wcm9qZWN0IDxwcm9qZWN0PicsICdQcm9qZWN0IG5hbWUgZm9yIHRoZSBwaXBlbGluZSB0aGlzIHRlbXBsYXRlIHdpbGwgcHJvZHVjZScpXG4gICAgICAucmVxdWlyZWRPcHRpb24oJy1vLCAtLW9yZ2FuaXphdGlvbiA8b3JnYW5pemF0aW9uPicsICdPcmdhbml6YXRpb24gbmFtZSBmb3IgdGhlIHBpcGVsaW5lJylcbiAgICAgIC5vcHRpb24oJy0tcGlwZWxpbmUtbmFtZSA8bmFtZT4nLCAnUGlwZWxpbmUgbmFtZSAoZGVmYXVsdHMgdG8gPG9yZ2FuaXphdGlvbj4tPHByb2plY3Q+LXBpcGVsaW5lIGF0IHN5bnRoKScpXG4gICAgICAub3B0aW9uKCctLWlucHV0IDxrZXk9dmFsdWU+JywgJ1RlbXBsYXRlIGlucHV0LCByZXBlYXRhYmxlIChlLmcuIC0taW5wdXQgb3JnSWQ9MTIzNGFiY2QtLi4uKScsIGNvbGxlY3RJbnB1dCwgW10pXG4gICAgICAub3B0aW9uKCctLWlucHV0cy1maWxlIDxmaWxlPicsICdKU09OIGZpbGUgb2YgeyBcImlucHV0TmFtZVwiOiB2YWx1ZSB9IOKAlCBtZXJnZWQgVU5ERVIgYW55IC0taW5wdXQgZmxhZ3MnKVxuICAgICAgLm9wdGlvbignLS1vdXRwdXQgPGZpbGU+JywgJ1dyaXRlIHRoZSByZW5kZXJlZCBwcm9wcyB0byBhIGZpbGUgKGRlZmF1bHQ6IHN0ZG91dCknKVxuICAgICAgLm9wdGlvbignLWYsIC0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQgKGpzb24sIHlhbWwpJywgJ2pzb24nKSxcbiAgKVxuICAgIC5vcHRpb24oJy0tanNvbicsICdQcmludCBPTkxZIHRoZSByZW5kZXJlZCBwcm9wcyBhcyBKU09OIChmb3IgcGlwaW5nKTsgaW1wbGllcyBubyBkZWNvcmF0aXZlIG91dHB1dCcsIGZhbHNlKVxuICAgIC5hY3Rpb24oYXN5bmMgKG9wdGlvbnMpID0+IHtcbiAgICAgIC8vIFdpdGggLS1qc29uIChvciBwcm9wcyBoZWFkZWQgZm9yIHN0ZG91dCBpbiBhbnkgZm9ybWF0KSB0aGUgcGF5bG9hZCBJUyB0aGVcbiAgICAgIC8vIG91dHB1dCwgc28gdGhlIGJhbm5lciBtdXN0IG5vdCBsYW5kIG9uIHN0ZG91dCBhaGVhZCBvZiBpdCBhbmQgYnJlYWsgcGlwaW5nLlxuICAgICAgY29uc3QgdG9TdGRvdXQgPSAhb3B0aW9ucy5vdXRwdXQ7XG4gICAgICBjb25zdCBxdWlldCA9IG9wdGlvbnMuanNvbiB8fCB0b1N0ZG91dDtcbiAgICAgIGNvbnN0IGV4ZWN1dGlvbklkID0gcHJpbnRDb21tYW5kSGVhZGVyKCdJbnN0YW50aWF0ZSBUZW1wbGF0ZScsIHVuZGVmaW5lZCwgeyBxdWlldCB9KTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFvcHRpb25zLm5hbWUgJiYgIW9wdGlvbnMuaWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdQcm92aWRlIC0tbmFtZSBvciAtLWlkIHRvIHNlbGVjdCBhIHRlbXBsYXRlJywgJ25hbWUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5uYW1lICYmIG9wdGlvbnMuaWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdQYXNzIGVpdGhlciAtLW5hbWUgb3IgLS1pZCwgbm90IGJvdGgnLCAnbmFtZScpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE9ubHkgdGhlIHJvdW5kLXRyaXBwYWJsZSBmb3JtYXRzOiB0aGUgcmVuZGVyZWQgcHJvcHMgZXhpc3QgdG8gYmUgZmVkXG4gICAgICAgIC8vIGJhY2sgdG8gYHBpcGVsaW5lIGNyZWF0ZSAtLWZpbGVgLCBhbmQgYHRhYmxlYC9gY3N2YCB3b3VsZCBmbGF0dGVuIHRoZW1cbiAgICAgICAgLy8gaW50byBzb21ldGhpbmcgdGhhdCBjYW4gbm8gbG9uZ2VyIGJlIHBhcnNlZCBhcyBwcm9wcy5cbiAgICAgICAgaWYgKCFbJ2pzb24nLCAneWFtbCddLmluY2x1ZGVzKG9wdGlvbnMuZm9ybWF0KSkge1xuICAgICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgICBgVW5zdXBwb3J0ZWQgLS1mb3JtYXQgXCIke29wdGlvbnMuZm9ybWF0fVwiIOKAlCByZW5kZXJlZCBwcm9wcyBtdXN0IHN0YXkgcGFyc2VhYmxlYCxcbiAgICAgICAgICAgICdmb3JtYXQnLCBvcHRpb25zLmZvcm1hdCwgJ2pzb258eWFtbCcsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXF1aWV0KSBwcmludFNzbFdhcm5pbmcob3B0aW9ucy52ZXJpZnlTc2wpO1xuXG4gICAgICAgIC8vIC0taW5wdXQgZmxhZ3Mgd2luIG92ZXIgLS1pbnB1dHMtZmlsZSBzbyBhIGZpbGUgY2FuIGhvbGQgc2hhcmVkIGRlZmF1bHRzXG4gICAgICAgIC8vIHRoYXQgYSBzaW5nbGUgZmxhZyBvdmVycmlkZXMgb24gdGhlIGNvbW1hbmQgbGluZS5cbiAgICAgICAgY29uc3QgaW5wdXRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPiA9IHtcbiAgICAgICAgICAuLi4ob3B0aW9ucy5pbnB1dHNGaWxlID8gcmVhZElucHV0c0ZpbGUob3B0aW9ucy5pbnB1dHNGaWxlKSA6IHt9KSxcbiAgICAgICAgICAuLi5wYXJzZUlucHV0UGFpcnMob3B0aW9ucy5pbnB1dCBhcyBzdHJpbmdbXSksXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKCFxdWlldCkge1xuICAgICAgICAgIHByaW50SW5mbygnUmVxdWVzdCBwYXJhbWV0ZXJzJywge1xuICAgICAgICAgICAgdGVtcGxhdGU6IG9wdGlvbnMubmFtZSA/PyBvcHRpb25zLmlkLFxuICAgICAgICAgICAgcHJvamVjdDogb3B0aW9ucy5wcm9qZWN0LFxuICAgICAgICAgICAgb3JnYW5pemF0aW9uOiBvcHRpb25zLm9yZ2FuaXphdGlvbixcbiAgICAgICAgICAgIHBpcGVsaW5lTmFtZTogb3B0aW9ucy5waXBlbGluZU5hbWUgPz8gJyhkZWZhdWx0KScsXG4gICAgICAgICAgICBpbnB1dHM6IE9iamVjdC5rZXlzKGlucHV0cykubGVuZ3RoID4gMCA/IE9iamVjdC5rZXlzKGlucHV0cykuam9pbignLCAnKSA6ICcobm9uZSknLFxuICAgICAgICAgICAgb3V0cHV0OiBvcHRpb25zLm91dHB1dCA/PyAnKHN0ZG91dCknLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCcnKTtcbiAgICAgICAgICBwcmludFNlY3Rpb24oJ1JlbmRlcmluZyBUZW1wbGF0ZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2xpZW50ID0gY3JlYXRlQXV0aGVudGljYXRlZENsaWVudChvcHRpb25zKTtcbiAgICAgICAgY29uc3QgdGVtcGxhdGVVcmwgPSBjbGllbnQuZ2V0Q29uZmlnKCkuYXBpLnBpcGVsaW5lVGVtcGxhdGVVcmw7XG5cbiAgICAgICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3Qgc3Bpbm5lciA9IHF1aWV0ID8gbnVsbCA6IG9yYSgnUmVzb2x2aW5nIHRlbXBsYXRlLi4uJykuc3RhcnQoKTtcbiAgICAgICAgbGV0IHRlbXBsYXRlSWQ6IHN0cmluZztcbiAgICAgICAgbGV0IHRlbXBsYXRlTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmIChvcHRpb25zLmlkKSB7XG4gICAgICAgICAgICB0ZW1wbGF0ZUlkID0gb3B0aW9ucy5pZDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdGVtcGxhdGUgPSBhd2FpdCByZXNvbHZlVGVtcGxhdGVCeU5hbWUoY2xpZW50LCBvcHRpb25zLm5hbWUpO1xuICAgICAgICAgICAgdGVtcGxhdGVJZCA9IHRlbXBsYXRlLmlkO1xuICAgICAgICAgICAgdGVtcGxhdGVOYW1lID0gdGVtcGxhdGUubmFtZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3Bpbm5lcj8uc3VjY2VlZChgVGVtcGxhdGUgcmVzb2x2ZWQke3RlbXBsYXRlTmFtZSA/IGAgKCR7dGVtcGxhdGVOYW1lfSlgIDogJyd9YCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgc3Bpbm5lcj8uZmFpbCgnVGVtcGxhdGUgcmVzb2x1dGlvbiBmYWlsZWQnKTtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJvZHk6IEluc3RhbnRpYXRlVGVtcGxhdGVSZXF1ZXN0ID0ge1xuICAgICAgICAgIHByb2plY3Q6IG9wdGlvbnMucHJvamVjdCxcbiAgICAgICAgICBvcmdhbml6YXRpb246IG9wdGlvbnMub3JnYW5pemF0aW9uLFxuICAgICAgICAgIC4uLihvcHRpb25zLnBpcGVsaW5lTmFtZSA/IHsgcGlwZWxpbmVOYW1lOiBvcHRpb25zLnBpcGVsaW5lTmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLihPYmplY3Qua2V5cyhpbnB1dHMpLmxlbmd0aCA+IDAgPyB7IGlucHV0cyB9IDoge30pLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IHJlbmRlclNwaW5uZXIgPSBxdWlldCA/IG51bGwgOiBvcmEoJ0luc3RhbnRpYXRpbmcuLi4nKS5zdGFydCgpO1xuICAgICAgICBsZXQgcmVuZGVyZWQ6IEluc3RhbnRpYXRlVGVtcGxhdGVSZXNwb25zZSB8IHVuZGVmaW5lZDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0KGAke3RlbXBsYXRlVXJsfS8ke2VuY29kZVVSSUNvbXBvbmVudCh0ZW1wbGF0ZUlkKX0vaW5zdGFudGlhdGVgLCBib2R5KTtcbiAgICAgICAgICAvLyBgcHJvcHNgIGlzIHRoZSBpZGVudGlmaWVyIGtleTogdGhlIGVudmVsb3BlJ3MgZGF0YSBJUyB7IHByb3BzLCAuLi4gfS5cbiAgICAgICAgICByZW5kZXJlZCA9IGV4dHJhY3RTaW5nbGVSZXNwb25zZTxJbnN0YW50aWF0ZVRlbXBsYXRlUmVzcG9uc2U+KHJlc3BvbnNlLCAndGVtcGxhdGUnLCAncHJvcHMnKTtcbiAgICAgICAgICByZW5kZXJTcGlubmVyPy5zdWNjZWVkKCdUZW1wbGF0ZSBpbnN0YW50aWF0ZWQnKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICByZW5kZXJTcGlubmVyPy5mYWlsKCdJbnN0YW50aWF0ZSBmYWlsZWQnKTtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBzdGFydFRpbWU7XG5cbiAgICAgICAgaWYgKCFyZW5kZXJlZD8ucHJvcHMpIHtcbiAgICAgICAgICBwcmludEVycm9yKCdObyBwcm9wcyByZXR1cm5lZCBmcm9tIEFQSScsIHsgdGVtcGxhdGVJZCB9KTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRlbXBsYXRlICR7dGVtcGxhdGVJZH0gcmVuZGVyZWQgbm8gcHJvcHNgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9wcyA9IHJlbmRlcmVkLnByb3BzIGFzIFBpcGVsaW5lUHJvcHM7XG5cbiAgICAgICAgLy8gQSBsZWZ0b3ZlciBge3sgLi4uIH19YCBpbiBhICpzZWxmLXNjb3BlKiBmaWVsZCBtZWFucyBhbiBpbnB1dCB3YXMgbmV2ZXJcbiAgICAgICAgLy8gc3VwcGxpZWQgYW5kIHRoZSBwbGFjZWhvbGRlciB3b3VsZCBmYWlsIG9wYXF1ZWx5IGF0IHN5bnRoLiBgcGlwZWxpbmUuKmBcbiAgICAgICAgLy8gdG9rZW5zIGFyZSBleHBlY3RlZCBoZXJlIOKAlCB0aGV5IHJlc29sdmUgYXQgc3ludGgsIG5vdCBhdCBpbnN0YW50aWF0ZS5cbiAgICAgICAgY29uc3QgdW5yZXNvbHZlZCA9IHVucmVzb2x2ZWRTZWxmVmFycyhwcm9wcyk7XG4gICAgICAgIGlmICh1bnJlc29sdmVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBwcmludFdhcm5pbmcoJ1JlbmRlcmVkIHByb3BzIHN0aWxsIGNvbnRhaW4gdW5yZXNvbHZlZCBwbGFjZWhvbGRlcnMnLCB7XG4gICAgICAgICAgICB2YXJzOiB1bnJlc29sdmVkLmpvaW4oJywgJyksXG4gICAgICAgICAgICBoaW50OiAnU3VwcGx5IHRoZW0gd2l0aCAtLWlucHV0IDxuYW1lPj08dmFsdWU+JyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcXVpZXQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRTZWN0aW9uKCdSZW5kZXJlZCBQcm9wcycpO1xuICAgICAgICAgIHByaW50S2V5VmFsdWUoe1xuICAgICAgICAgICAgJ1RlbXBsYXRlJzogZ3JlZW4oYm9sZCh0ZW1wbGF0ZU5hbWUgPz8gdGVtcGxhdGVJZCkpLFxuICAgICAgICAgICAgJ1Byb2plY3QnOiBwcm9wcy5wcm9qZWN0IGFzIHN0cmluZyxcbiAgICAgICAgICAgICdPcmdhbml6YXRpb24nOiBwcm9wcy5vcmdhbml6YXRpb24gYXMgc3RyaW5nLFxuICAgICAgICAgICAgJ1BpcGVsaW5lIE5hbWUnOiAocHJvcHMucGlwZWxpbmVOYW1lIGFzIHN0cmluZykgPz8gZGltKCcoZGVmYXVsdCBhdCBzeW50aCknKSxcbiAgICAgICAgICAgICdWYXJzJzogT2JqZWN0LmtleXMoKHByb3BzLnZhcnMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID8/IHt9KS5qb2luKCcsICcpIHx8IGRpbSgnKG5vbmUpJyksXG4gICAgICAgICAgICAnU3RhZ2VzJzogU3RyaW5nKEFycmF5LmlzQXJyYXkocHJvcHMuc3RhZ2VzKSA/IHByb3BzLnN0YWdlcy5sZW5ndGggOiAwKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwcmludEV4ZWN1dGlvblN1bW1hcnkoZXhlY3V0aW9uSWQsIGR1cmF0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG91dHB1dERhdGEocHJvcHMsIHtcbiAgICAgICAgICBmb3JtYXQ6IG9wdGlvbnMuanNvbiA/ICdqc29uJyA6IG9wdGlvbnMuZm9ybWF0LFxuICAgICAgICAgIGZpbGU6IG9wdGlvbnMub3V0cHV0LFxuICAgICAgICAgIHNpbGVudDogcXVpZXQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChvcHRpb25zLm91dHB1dCAmJiAhcXVpZXQpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgICAgcHJpbnRTdWNjZXNzKCdQaXBlbGluZSBwcm9wcyBzYXZlZCcsIHsgcGF0aDogb3B0aW9ucy5vdXRwdXQgfSk7XG4gICAgICAgICAgcHJpbnRJbmZvKCdOZXh0IHN0ZXAnLCB7XG4gICAgICAgICAgICBjb21tYW5kOiBgcGlwZWxpbmUtbWFuYWdlciBwaXBlbGluZSBjcmVhdGUgLS1maWxlICR7b3B0aW9ucy5vdXRwdXR9IC0tZGVwbG95YCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhkaW0oYCAgJHtjeWFuKCdUaXA6Jyl9IGluc3RhbnRpYXRlIG9ubHkgcmVuZGVycyDigJQgbm90aGluZyBleGlzdHMgb24gdGhlIHBsYXRmb3JtIHlldC5gKSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCBFUlJPUl9DT0RFUy5BUElfUkVRVUVTVCwge1xuICAgICAgICAgIGRlYnVnOiBwcm9ncmFtLm9wdHMoKS5kZWJ1ZyxcbiAgICAgICAgICBleGl0OiB0cnVlLFxuICAgICAgICAgIGNvbnRleHQ6IHsgY29tbWFuZDogJ2luc3RhbnRpYXRlLXRlbXBsYXRlJywgZXhlY3V0aW9uSWQsIHRlbXBsYXRlOiBvcHRpb25zLm5hbWUgPz8gb3B0aW9ucy5pZCB9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbn1cblxuLyoqXG4gKiBOYW1lcyBvZiBge3sgdmFycy5YIH19YCBwbGFjZWhvbGRlcnMgc3RpbGwgcHJlc2VudCBpbiB0aGUgcmVuZGVyZWQgcHJvcHMnIG93blxuICogc2VsZi1zY29wZSBmaWVsZHMgKGBwcm9qZWN0YCwgYG1ldGFkYXRhLipgLCBgdmFycy4qYCkg4oCUIGkuZS4gaW5wdXRzIHRoZSBjYWxsZXJcbiAqIG5ldmVyIHN1cHBsaWVkLiBge3sgcGlwZWxpbmUuKiB9fWAgdG9rZW5zIGFyZSBkZWxpYmVyYXRlbHkgaWdub3JlZDogdGhvc2UgYXJlXG4gKiBzeW50aC10aW1lIHJlZmVyZW5jZXMgKGUuZy4gdGhlIEdpdEh1YiBzb3VyY2UgdG9rZW4pIGFuZCBhcmUgU1VQUE9TRUQgdG9cbiAqIHN1cnZpdmUgaW5zdGFudGlhdGlvbi5cbiAqL1xuZnVuY3Rpb24gdW5yZXNvbHZlZFNlbGZWYXJzKHByb3BzOiBQaXBlbGluZVByb3BzKTogc3RyaW5nW10ge1xuICBjb25zdCBmb3VuZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBzY2FuID0gKHZhbHVlOiB1bmtub3duKTogdm9pZCA9PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGZvciAoY29uc3QgbSBvZiB2YWx1ZS5tYXRjaEFsbCgvXFx7XFx7XFxzKnZhcnNcXC4oW0EtWmEtel9dW0EtWmEtejAtOV9dKikvZykpIGZvdW5kLmFkZChtWzFdISk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLmZvckVhY2goc2Nhbik7XG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHJldHVybiBPYmplY3QudmFsdWVzKHZhbHVlKS5mb3JFYWNoKHNjYW4pO1xuICB9O1xuICBzY2FuKHByb3BzLnByb2plY3QpO1xuICBzY2FuKHByb3BzLm1ldGFkYXRhKTtcbiAgc2Nhbihwcm9wcy52YXJzKTtcbiAgcmV0dXJuIFsuLi5mb3VuZF07XG59XG4iXX0=
@@ -12,13 +12,11 @@ import { type TargetId, type TargetSpec } from '../agent/targets.js';
12
12
  */
13
13
  export type InitMode = 'auto' | 'manual' | 'skip';
14
14
  /**
15
- * Resolve the init mode from the new `--init <mode>` flag, falling back to the DEPRECATED
16
- * aliases (`--no-init` → skip, `--auto-init` → auto, `--no-auto-init` → manual), then the
17
- * default (`auto`). Returns `null` when `--init` was given an invalid value (caller errors).
15
+ * Resolve the init mode from `--init <mode>`, defaulting to `auto` when the flag is absent.
16
+ * Returns `null` when `--init` was given an invalid value (caller errors).
18
17
  */
19
18
  export declare function resolveInitMode(options: {
20
19
  init?: unknown;
21
- autoInit?: unknown;
22
20
  }): InitMode | null;
23
21
  /**
24
22
  * Host-port pre-flight (local/minikube). Ports are DERIVED from the target's cloned
@@ -1 +1 @@
1
- {"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../../src/commands/provision.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../../src/commands/provision.ts"],"names":[],"mappings":"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"}