@aws-cdk/toolkit-lib 1.30.0 → 1.31.0

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 (90) hide show
  1. package/build-info.json +2 -2
  2. package/lib/actions/bootstrap/index.js +35 -2
  3. package/lib/actions/diff/private/helpers.js +36 -3
  4. package/lib/api/aws-auth/account-cache.js +36 -3
  5. package/lib/api/aws-auth/sdk-provider.js +36 -3
  6. package/lib/api/aws-auth/sdk.d.ts +2 -1
  7. package/lib/api/aws-auth/sdk.js +2 -1
  8. package/lib/api/aws-auth/user-agent.js +35 -2
  9. package/lib/api/aws-auth/util.js +35 -2
  10. package/lib/api/bootstrap/bootstrap-environment.js +35 -2
  11. package/lib/api/bootstrap/deploy-bootstrap.js +37 -4
  12. package/lib/api/cloud-assembly/context-store.js +36 -3
  13. package/lib/api/cloud-assembly/environment.js +37 -4
  14. package/lib/api/cloud-assembly/private/context-aware-source.js +35 -2
  15. package/lib/api/cloud-assembly/private/exec.js +35 -2
  16. package/lib/api/cloud-assembly/private/prepare-source.js +39 -6
  17. package/lib/api/cloud-assembly/source-builder.js +37 -4
  18. package/lib/api/cloud-assembly/stack-assembly.js +8 -4
  19. package/lib/api/cloudformation/logical-id-map.js +35 -2
  20. package/lib/api/cloudformation/nested-stack-helpers.js +36 -3
  21. package/lib/api/cloudformation/template-body-parameter.js +42 -6
  22. package/lib/api/deployments/asset-manifest-builder.js +35 -2
  23. package/lib/api/deployments/assets.js +42 -6
  24. package/lib/api/deployments/cfn-api.d.ts +4 -2
  25. package/lib/api/deployments/cfn-api.js +47 -6
  26. package/lib/api/deployments/deploy-stack.js +8 -5
  27. package/lib/api/deployments/deployments.js +40 -4
  28. package/lib/api/diagnosing/format-utils.d.ts +29 -0
  29. package/lib/api/diagnosing/format-utils.js +141 -1
  30. package/lib/api/diagnosing/investigate-custom-resource.d.ts +17 -0
  31. package/lib/api/diagnosing/investigate-custom-resource.js +247 -0
  32. package/lib/api/diagnosing/investigate-ecs-service.d.ts +20 -0
  33. package/lib/api/diagnosing/investigate-ecs-service.js +242 -0
  34. package/lib/api/diagnosing/resource-identifiers.d.ts +39 -0
  35. package/lib/api/diagnosing/resource-identifiers.js +90 -0
  36. package/lib/api/diagnosing/resource-investigation.d.ts +2 -30
  37. package/lib/api/diagnosing/resource-investigation.js +9 -289
  38. package/lib/api/diff/diff-formatter.js +11 -8
  39. package/lib/api/drift/drift-formatter.js +20 -17
  40. package/lib/api/garbage-collection/garbage-collector.js +7 -4
  41. package/lib/api/garbage-collection/progress-printer.js +7 -4
  42. package/lib/api/hotswap/hotswap-deployments.js +46 -10
  43. package/lib/api/hotswap/hotswap-template-cache.js +36 -3
  44. package/lib/api/io/private/io-default-messages.js +35 -2
  45. package/lib/api/io/private/message-maker.d.ts +4 -0
  46. package/lib/api/io/private/message-maker.js +3 -1
  47. package/lib/api/io/private/messages.d.ts +2 -0
  48. package/lib/api/io/private/messages.js +43 -2
  49. package/lib/api/io/private/span.js +35 -2
  50. package/lib/api/logs-monitor/logs-monitor.js +40 -4
  51. package/lib/api/network-detector/network-detector.js +37 -4
  52. package/lib/api/notices/cached-data-source.js +35 -2
  53. package/lib/api/notices/filter.js +35 -2
  54. package/lib/api/notices/notices.js +35 -2
  55. package/lib/api/notices/web-data-source.js +35 -2
  56. package/lib/api/refactoring/digest.js +35 -2
  57. package/lib/api/refactoring/stack-definitions.js +40 -4
  58. package/lib/api/resource-import/importer.js +58 -15
  59. package/lib/api/resource-import/migrator.js +42 -6
  60. package/lib/api/rwlock.js +35 -2
  61. package/lib/api/settings.js +38 -5
  62. package/lib/api/source-tracing/private/stack-source-tracing.js +38 -5
  63. package/lib/api/stack-events/resource-errors.d.ts +12 -0
  64. package/lib/api/stack-events/resource-errors.js +2 -1
  65. package/lib/api/stack-events/stack-activity-monitor.js +35 -2
  66. package/lib/api/stack-events/stack-progress-monitor.js +35 -2
  67. package/lib/api/toolkit-info.js +7 -4
  68. package/lib/api/tree.js +36 -3
  69. package/lib/api/validate/validate-formatting.js +53 -17
  70. package/lib/api/work-graph/build-destroy-work-graph.js +35 -2
  71. package/lib/api/work-graph/work-graph-builder.js +35 -2
  72. package/lib/context-providers/index.js +35 -2
  73. package/lib/private/activity-printer/current.js +52 -16
  74. package/lib/private/activity-printer/history.js +50 -14
  75. package/lib/private/tools.js +38 -1
  76. package/lib/toolkit/non-interactive-io-host.js +11 -8
  77. package/lib/toolkit/private/collect-annotation-report.js +35 -2
  78. package/lib/toolkit/private/validation-report.js +36 -3
  79. package/lib/toolkit/toolkit-error.d.ts +20 -0
  80. package/lib/toolkit/toolkit-error.js +30 -2
  81. package/lib/toolkit/toolkit.d.ts +8 -0
  82. package/lib/toolkit/toolkit.js +81 -35
  83. package/lib/util/content-hash.js +35 -2
  84. package/lib/util/directories.js +38 -5
  85. package/lib/util/guess-language.js +36 -3
  86. package/lib/util/package-info.js +35 -2
  87. package/lib/util/serialize.js +36 -3
  88. package/lib/util/version-range.js +35 -2
  89. package/lib/util/yaml-cfn.js +36 -3
  90. package/package.json +2 -2
@@ -1,9 +1,45 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
2
38
  Object.defineProperty(exports, "__esModule", { value: true });
3
39
  exports.tryHotswapDeployment = tryHotswapDeployment;
4
40
  const util_1 = require("util");
5
- const cfn_diff = require("@aws-cdk/cloudformation-diff");
6
- const chalk = require("chalk");
41
+ const cfn_diff = __importStar(require("@aws-cdk/cloudformation-diff"));
42
+ const chalk_1 = __importDefault(require("chalk"));
7
43
  const payloads_1 = require("../../payloads");
8
44
  const util_2 = require("../../util");
9
45
  const cloudformation_1 = require("../cloudformation");
@@ -401,7 +437,7 @@ async function applyHotswapOperation(sdk, ioSpan, hotswapOperation) {
401
437
  const customUserAgent = `cdk-hotswap/success-${hotswapOperation.service}`;
402
438
  sdk.appendCustomUserAgent(customUserAgent);
403
439
  const resourceText = (r) => r.description ?? `${r.resourceType} '${r.physicalName ?? r.logicalId}'`;
404
- await ioSpan.notify(private_1.IO.CDK_TOOLKIT_I5402.msg(hotswapOperation.change.resources.map(r => (0, util_1.format)(` ${common_1.ICON} %s`, chalk.bold(resourceText(r)))).join('\n'), hotswapOperation.change));
440
+ await ioSpan.notify(private_1.IO.CDK_TOOLKIT_I5402.msg(hotswapOperation.change.resources.map(r => (0, util_1.format)(` ${common_1.ICON} %s`, chalk_1.default.bold(resourceText(r)))).join('\n'), hotswapOperation.change));
405
441
  // if the SDK call fails, an error will be thrown by the SDK
406
442
  // and will prevent the green 'hotswapped!' text from being displayed
407
443
  try {
@@ -416,7 +452,7 @@ async function applyHotswapOperation(sdk, ioSpan, hotswapOperation) {
416
452
  }
417
453
  throw e;
418
454
  }
419
- await ioSpan.notify(private_1.IO.CDK_TOOLKIT_I5403.msg(hotswapOperation.change.resources.map(r => (0, util_1.format)(` ${common_1.ICON} %s %s`, chalk.bold(resourceText(r)), chalk.green('hotswapped!'))).join('\n'), hotswapOperation.change));
455
+ await ioSpan.notify(private_1.IO.CDK_TOOLKIT_I5403.msg(hotswapOperation.change.resources.map(r => (0, util_1.format)(` ${common_1.ICON} %s %s`, chalk_1.default.bold(resourceText(r)), chalk_1.default.green('hotswapped!'))).join('\n'), hotswapOperation.change));
420
456
  sdk.removeCustomUserAgent(customUserAgent);
421
457
  }
422
458
  function formatWaiterErrorResult(result) {
@@ -452,10 +488,10 @@ async function logRejectedChanges(ioSpan, rejectedChanges, hotswapMode) {
452
488
  }
453
489
  const messages = ['']; // start with empty line
454
490
  if (hotswapMode === 'hotswap-only') {
455
- messages.push((0, util_1.format)('%s %s', chalk.red('⚠️'), chalk.red('The following non-hotswappable changes were found. To reconcile these using CloudFormation, specify --hotswap-fallback')));
491
+ messages.push((0, util_1.format)('%s %s', chalk_1.default.red('⚠️'), chalk_1.default.red('The following non-hotswappable changes were found. To reconcile these using CloudFormation, specify --hotswap-fallback')));
456
492
  }
457
493
  else {
458
- messages.push((0, util_1.format)('%s %s', chalk.red('⚠️'), chalk.red('The following non-hotswappable changes were found:')));
494
+ messages.push((0, util_1.format)('%s %s', chalk_1.default.red('⚠️'), chalk_1.default.red('The following non-hotswappable changes were found:')));
459
495
  }
460
496
  for (const { change } of rejectedChanges) {
461
497
  messages.push(' ' + nonHotswappableChangeMessage(change));
@@ -471,7 +507,7 @@ function nonHotswappableChangeMessage(change) {
471
507
  const reason = change.description ?? change.reason;
472
508
  switch (subject.type) {
473
509
  case 'Output':
474
- return (0, util_1.format)('output: %s, reason: %s', chalk.bold(subject.logicalId), chalk.red(reason));
510
+ return (0, util_1.format)('output: %s, reason: %s', chalk_1.default.bold(subject.logicalId), chalk_1.default.red(reason));
475
511
  case 'Resource':
476
512
  return nonHotswappableResourceMessage(subject, reason);
477
513
  }
@@ -481,8 +517,8 @@ function nonHotswappableChangeMessage(change) {
481
517
  */
482
518
  function nonHotswappableResourceMessage(subject, reason) {
483
519
  if (subject.rejectedProperties?.length) {
484
- return (0, util_1.format)('resource: %s, type: %s, rejected changes: %s, reason: %s', chalk.bold(subject.logicalId), chalk.bold(subject.resourceType), chalk.bold(subject.rejectedProperties), chalk.red(reason));
520
+ return (0, util_1.format)('resource: %s, type: %s, rejected changes: %s, reason: %s', chalk_1.default.bold(subject.logicalId), chalk_1.default.bold(subject.resourceType), chalk_1.default.bold(subject.rejectedProperties), chalk_1.default.red(reason));
485
521
  }
486
- return (0, util_1.format)('resource: %s, type: %s, reason: %s', chalk.bold(subject.logicalId), chalk.bold(subject.resourceType), chalk.red(reason));
522
+ return (0, util_1.format)('resource: %s, type: %s, reason: %s', chalk_1.default.bold(subject.logicalId), chalk_1.default.bold(subject.resourceType), chalk_1.default.red(reason));
487
523
  }
488
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90c3dhcC1kZXBsb3ltZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhvdHN3YXAtZGVwbG95bWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUErR0Esb0RBMENDO0FBekpELCtCQUE4QjtBQUU5Qix5REFBeUQ7QUFFekQsK0JBQStCO0FBQy9CLDZDQUF1RDtBQUN2RCxxQ0FBZ0Q7QUFHaEQsc0RBQXdHO0FBQ3hHLDJFQUEwRTtBQUMxRSwrREFBNkU7QUFPN0UscUNBR2tCO0FBQ2xCLGlEQUFnRTtBQUNoRSxxRUFBK0Y7QUFDL0YseURBQXdFO0FBQ3hFLG1FQUdpQztBQUVqQywrREFBMkQ7QUFFM0QsMkNBQXlDO0FBRXpDLHNDQUFpQztBQUNqQyxxRUFBNEU7QUFFNUUsNkVBQTZFO0FBQzdFLDRHQUE0RztBQUM1RyxNQUFNLE1BQU0sR0FBNkIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBVzVELE1BQU0sa0JBQWtCLEdBQXVDO0lBQzdELFNBQVM7SUFDVCx1QkFBdUIsRUFBRSxxREFBa0M7SUFDM0Qsc0JBQXNCLEVBQUUscURBQWtDO0lBQzFELG9CQUFvQixFQUFFLHFEQUFrQztJQUV4RCxVQUFVO0lBQ1Ysd0JBQXdCLEVBQUUsdURBQTJCO0lBQ3JELHFDQUFxQyxFQUFFLHVEQUEyQjtJQUNsRSw2QkFBNkIsRUFBRSx1REFBMkI7SUFDMUQsc0JBQXNCLEVBQUUsdURBQTJCO0lBRW5ELDBCQUEwQixFQUFFLDZDQUE4QjtJQUMxRCx5QkFBeUIsRUFBRSwwREFBb0M7SUFDL0QsNkJBQTZCLEVBQUUsOERBQXNDO0lBQ3JFLGtCQUFrQixFQUFFLEtBQUssRUFDdkIsU0FBaUIsRUFDakIsTUFBc0IsRUFDdEIsbUJBQW1ELEVBQ3pCLEVBQUU7UUFDNUIsNEVBQTRFO1FBQzVFLElBQUksTUFBTSxJQUFBLGlFQUF5QyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1lBQzVGLE9BQU8sRUFBRSxD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Q0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUNoQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUNsQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0IHR5cGUgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGknO1xuaW1wb3J0ICogYXMgY2ZuX2RpZmYgZnJvbSAnQGF3cy1jZGsvY2xvdWRmb3JtYXRpb24tZGlmZic7XG5pbXBvcnQgdHlwZSB7IFdhaXRlclJlc3VsdCB9IGZyb20gJ0BzbWl0aHkvdXRpbC13YWl0ZXInO1xuaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHsgTm9uSG90c3dhcHBhYmxlUmVhc29uIH0gZnJvbSAnLi4vLi4vcGF5bG9hZHMnO1xuaW1wb3J0IHsgZm9ybWF0RXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgdHlwZSB7IFNESywgU2RrUHJvdmlkZXIgfSBmcm9tICcuLi9hd3MtYXV0aC9wcml2YXRlJztcbmltcG9ydCB0eXBlIHsgQ2xvdWRGb3JtYXRpb25TdGFjaywgTmVzdGVkU3RhY2tUZW1wbGF0ZXMgfSBmcm9tICcuLi9jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBsb2FkQ3VycmVudFRlbXBsYXRlV2l0aE5lc3RlZFN0YWNrcywgRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlIH0gZnJvbSAnLi4vY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgaXNIb3Rzd2FwcGFibGVBcHBTeW5jQ2hhbmdlIH0gZnJvbSAnLi9hcHBzeW5jLW1hcHBpbmctdGVtcGxhdGVzJztcbmltcG9ydCB7IGlzSG90c3dhcHBhYmxlQ29kZUJ1aWxkUHJvamVjdENoYW5nZSB9IGZyb20gJy4vY29kZS1idWlsZC1wcm9qZWN0cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEhvdHN3YXBDaGFuZ2UsXG4gIEhvdHN3YXBPcGVyYXRpb24sXG4gIFJlamVjdGVkQ2hhbmdlLFxuICBIb3Rzd2FwUHJvcGVydHlPdmVycmlkZXMsXG59IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7XG4gIElDT04sXG4gIG5vbkhvdHN3YXBwYWJsZVJlc291cmNlLFxufSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBpc0hvdHN3YXBwYWJsZUVjc1NlcnZpY2VDaGFuZ2UgfSBmcm9tICcuL2Vjcy1zZXJ2aWNlcyc7XG5pbXBvcnQgeyByZWFkSG90c3dhcFRlbXBsYXRlQ2FjaGUsIHdyaXRlSG90c3dhcFRlbXBsYXRlQ2FjaGUgfSBmcm9tICcuL2hvdHN3YXAtdGVtcGxhdGUtY2FjaGUnO1xuaW1wb3J0IHsgaXNIb3Rzd2FwcGFibGVMYW1iZGFGdW5jdGlvbkNoYW5nZSB9IGZyb20gJy4vbGFtYmRhLWZ1bmN0aW9ucyc7XG5pbXBvcnQge1xuICBza2lwQ2hhbmdlRm9yUzNEZXBsb3lDdXN0b21SZXNvdXJjZVBvbGljeSxcbiAgaXNIb3Rzd2FwcGFibGVTM0J1Y2tldERlcGxveW1lbnRDaGFuZ2UsXG59IGZyb20gJy4vczMtYnVja2V0LWRlcGxveW1lbnRzJztcbmltcG9ydCB0eXBlIHsgQWZmZWN0ZWRSZXNvdXJjZSwgSG90c3dhcFJlc3VsdCwgUmVzb3VyY2VTdWJqZWN0LCBSZXNvdXJjZUNoYW5nZSwgTm9uSG90c3dhcHBhYmxlQ2hhbmdlIH0gZnJvbSAnLi4vLi4vcGF5bG9hZHMnO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnLi4vLi4vdG9vbGtpdC90b29sa2l0LWVycm9yJztcbmltcG9ydCB0eXBlIHsgU3VjY2Vzc2Z1bERlcGxveVN0YWNrUmVzdWx0IH0gZnJvbSAnLi4vZGVwbG95bWVudHMnO1xuaW1wb3J0IHsgSU8sIFNQQU4gfSBmcm9tICcuLi9pby9wcml2YXRlJztcbmltcG9ydCB0eXBlIHsgSU1lc3NhZ2VTcGFuLCBJb0hlbHBlciB9IGZyb20gJy4uL2lvL3ByaXZhdGUnO1xuaW1wb3J0IHsgTW9kZSB9IGZyb20gJy4uL3BsdWdpbic7XG5pbXBvcnQgeyBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSB9IGZyb20gJy4vY2xvdWQtY29udHJvbC1yZXNvdXJjZSc7XG5cbi8vIE11c3QgdXNlIGEgcmVxdWlyZSgpIG90aGVyd2lzZSBlc2J1aWxkIGNvbXBsYWlucyBhYm91dCBjYWxsaW5nIGEgbmFtZXNwYWNlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0cyxAdHlwZXNjcmlwdC1lc2xpbnQvY29uc2lzdGVudC10eXBlLWltcG9ydHNcbmNvbnN0IHBMaW1pdDogdHlwZW9mIGltcG9ydCgncC1saW1pdCcpID0gcmVxdWlyZSgncC1saW1pdCcpO1xuXG50eXBlIEhvdHN3YXBEZXRlY3RvciA9IChcbiAgbG9naWNhbElkOiBzdHJpbmcsXG4gIGNoYW5nZTogUmVzb3VyY2VDaGFuZ2UsXG4gIGV2YWx1YXRlQ2ZuVGVtcGxhdGU6IEV2YWx1YXRlQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZSxcbiAgaG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzOiBIb3Rzd2FwUHJvcGVydHlPdmVycmlkZXMsXG4pID0+IFByb21pc2U8SG90c3dhcENoYW5nZVtdPjtcblxudHlwZSBIb3Rzd2FwTW9kZSA9ICdob3Rzd2FwLW9ubHknIHwgJ2ZhbGwtYmFjayc7XG5cbmNvbnN0IFJFU09VUkNFX0RFVEVDVE9SUzogeyBba2V5OiBzdHJpbmddOiBIb3Rzd2FwRGV0ZWN0b3IgfSA9IHtcbiAgLy8gTGFtYmRhXG4gICdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nOiBpc0hvdHN3YXBwYWJsZUxhbWJkYUZ1bmN0aW9uQ2hhbmdlLFxuICAnQVdTOjpMYW1iZGE6OlZlcnNpb24nOiBpc0hvdHN3YXBwYWJsZUxhbWJkYUZ1bmN0aW9uQ2hhbmdlLFxuICAnQVdTOjpMYW1iZGE6OkFsaWFzJzogaXNIb3Rzd2FwcGFibGVMYW1iZGFGdW5jdGlvbkNoYW5nZSxcblxuICAvLyBBcHBTeW5jXG4gICdBV1M6OkFwcFN5bmM6OlJlc29sdmVyJzogaXNIb3Rzd2FwcGFibGVBcHBTeW5jQ2hhbmdlLFxuICAnQVdTOjpBcHBTeW5jOjpGdW5jdGlvbkNvbmZpZ3VyYXRpb24nOiBpc0hvdHN3YXBwYWJsZUFwcFN5bmNDaGFuZ2UsXG4gICdBV1M6OkFwcFN5bmM6OkdyYXBoUUxTY2hlbWEnOiBpc0hvdHN3YXBwYWJsZUFwcFN5bmNDaGFuZ2UsXG4gICdBV1M6OkFwcFN5bmM6OkFwaUtleSc6IGlzSG90c3dhcHBhYmxlQXBwU3luY0NoYW5nZSxcblxuICAnQVdTOjpFQ1M6OlRhc2tEZWZpbml0aW9uJzogaXNIb3Rzd2FwcGFibGVFY3NTZXJ2aWNlQ2hhbmdlLFxuICAnQVdTOjpDb2RlQnVpbGQ6OlByb2plY3QnOiBpc0hvdHN3YXBwYWJsZUNvZGVCdWlsZFByb2plY3RDaGFuZ2UsXG4gICdDdXN0b206OkNES0J1Y2tldERlcGxveW1lbnQnOiBpc0hvdHN3YXBwYWJsZVMzQnVja2V0RGVwbG95bWVudENoYW5nZSxcbiAgJ0FXUzo6SUFNOjpQb2xpY3knOiBhc3luYyAoXG4gICAgbG9naWNhbElkOiBzdHJpbmcsXG4gICAgY2hhbmdlOiBSZXNvdXJjZUNoYW5nZSxcbiAgICBldmFsdWF0ZUNmblRlbXBsYXRlOiBFdmFsdWF0ZUNsb3VkRm9ybWF0aW9uVGVtcGxhdGUsXG4gICk6IFByb21pc2U8SG90c3dhcENoYW5nZVtdPiA9PiB7XG4gICAgLy8gSWYgdGhlIHBvbGljeSBpcyBmb3IgYSBTM0J1Y2tldERlcGxveW1lbnRDaGFuZ2UsIHdlIGNhbiBpZ25vcmUgdGhlIGNoYW5nZVxuICAgIGlmIChhd2FpdCBza2lwQ2hhbmdlRm9yUzNEZXBsb3lDdXN0b21SZXNvdXJjZVBvbGljeShsb2dpY2FsSWQsIGNoYW5nZSwgZXZhbHVhdGVDZm5UZW1wbGF0ZSkpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gW25vbkhvdHN3YXBwYWJsZVJlc291cmNlKGNoYW5nZSldO1xuICB9LFxuXG4gICdBV1M6OkNESzo6TWV0YWRhdGEnOiBhc3luYyAoKSA9PiBbXSxcblxuICAvLyBSZXNvdXJjZXMgdGhhdCB1c2UgQ0NBUElTXG4gICdBV1M6OkFwaUdhdGV3YXk6OlJlc3RBcGknOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6QXBpR2F0ZXdheTo6RGVwbG95bWVudCc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpBcGlHYXRld2F5OjpNZXRob2QnOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6QXBpR2F0ZXdheVYyOjpBcGknOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6QXBpR2F0ZXdheVYyOjpJbnRlZ3JhdGlvbic6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpCZWRyb2NrOjpBZ2VudCc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpFdmVudHM6OlJ1bGUnOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6RHluYW1vREI6OlRhYmxlJzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG4gICdBV1M6OkR5bmFtb0RCOjpHbG9iYWxUYWJsZSc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpTUVM6OlF1ZXVlJzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG4gICdBV1M6OkNsb3VkV2F0Y2g6OkFsYXJtJzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG4gICdBV1M6OkNsb3VkV2F0Y2g6OkNvbXBvc2l0ZUFsYXJtJzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG4gICdBV1M6OkNsb3VkV2F0Y2g6OkRhc2hib2FyZCc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpTdGVwRnVuY3Rpb25zOjpTdGF0ZU1hY2hpbmUnOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6QmVkcm9ja0FnZW50Q29yZTo6UnVudGltZSc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuXG4gIC8vIFF1aWNrU2lnaHRcbiAgJ0FXUzo6UXVpY2tTaWdodDo6RGFzaGJvYXJkJzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG4gICdBV1M6OlF1aWNrU2lnaHQ6OkFuYWx5c2lzJzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG4gICdBV1M6OlF1aWNrU2lnaHQ6OlRlbXBsYXRlJzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG4gICdBV1M6OlF1aWNrU2lnaHQ6OkRhdGFTZXQnOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6UXVpY2tTaWdodDo6RGF0YVNvdXJjZSc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxufTtcblxuLyoqXG4gKiBQZXJmb3JtIGEgaG90c3dhcCBkZXBsb3ltZW50LCBzaG9ydC1jaXJjdWl0aW5nIENsb3VkRm9ybWF0aW9uIGlmIHBvc3NpYmxlLlxuICogSWYgaXQncyBub3QgcG9zc2libGUgdG8gc2hvcnQtY2lyY3VpdCB0aGUgZGVwbG95bWVudFxuICogKGJlY2F1c2UgdGhlIENESyBTdGFjayBjb250YWlucyBjaGFuZ2VzIHRoYXQgY2Fubm90IGJlIGRlcGxveWVkIHdpdGhvdXQgQ2xvdWRGb3JtYXRpb24pLFxuICogcmV0dXJucyBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRyeUhvdHN3YXBEZXBsb3ltZW50KFxuICBzZGtQcm92aWRlcjogU2RrUHJvdmlkZXIsXG4gIGlvSGVscGVyOiBJb0hlbHBlcixcbiAgYXNzZXRQYXJhbXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sXG4gIGNsb3VkRm9ybWF0aW9uU3RhY2s6IENsb3VkRm9ybWF0aW9uU3RhY2ssXG4gIHN0YWNrQXJ0aWZhY3Q6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCxcbiAgaG90c3dhcE1vZGU6IEhvdHN3YXBNb2RlLFxuICBob3Rzd2FwUHJvcGVydHlPdmVycmlkZXM6IEhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlcyxcbik6IFByb21pc2U8U3VjY2Vzc2Z1bERlcGxveVN0YWNrUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IGhvdHN3YXBTcGFuID0gYXdhaXQgaW9IZWxwZXIuc3BhbihTUEFOLkhPVFNXQVApLmJlZ2luKHtcbiAgICBzdGFjazogc3RhY2tBcnRpZmFjdCxcbiAgICBtb2RlOiBob3Rzd2FwTW9kZSxcbiAgfSk7XG5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaG90c3dhcERlcGxveW1lbnQoXG4gICAgc2RrUHJvdmlkZXIsXG4gICAgaG90c3dhcFNwYW4sXG4gICAgYXNzZXRQYXJhbXMsXG4gICAgc3RhY2tBcnRpZmFjdCxcbiAgICBob3Rzd2FwTW9kZSxcbiAgICBob3Rzd2FwUHJvcGVydHlPdmVycmlkZXMsXG4gICk7XG5cbiAgYXdhaXQgaG90c3dhcFNwYW4uZW5kKHJlc3VsdCk7XG5cbiAgLy8gVGhpcyBpcyBhIGhvdHN3YXAgZXJyb3IgdGhhdCB3YXMgY2F1Z2h0IGR1cmluZyB0aGUgaG90c3dhcERlcGxveW1lbnQgZnVuY3Rpb25cbiAgLy8gSXQgaXMgdGhyb3duIGFmdGVyIHRoZSBob3Rzd2FwIHNwYW4gZW5kcyBzbyBpdCBjYW4gYmUgcmVwb3J0ZWQgdG8gdGVsZW1ldHJ5XG4gIGlmIChyZXN1bHQuZXJyb3IpIHtcbiAgICB0aHJvdyByZXN1bHQuZXJyb3I7XG4gIH1cblxuICBpZiAocmVzdWx0Py5ob3Rzd2FwcGVkID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdkaWQtZGVwbG95LXN0YWNrJyxcbiAgICAgIG5vT3A6IHJlc3VsdC5ob3Rzd2FwcGFibGVDaGFuZ2VzLmxlbmd0aCA9PT0gMCxcbiAgICAgIHN0YWNrQXJuOiBjbG91ZEZvcm1hdGlvblN0YWNrLnN0YWNrSWQsXG4gICAgICBvdXRwdXRzOiBjbG91ZEZvcm1hdGlvblN0YWNrLm91dHB1dHMsXG4gICAgICBkZWxldGVGYWlsdXJlczogW10sXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUGVyZm9ybSBhIGhvdHN3YXAgZGVwbG95bWVudCwgc2hvcnQtY2lyY3VpdGluZyBDbG91ZEZvcm1hdGlvbiBpZiBwb3NzaWJsZS5cbiAqIFJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGF0dGVtcHRlZCBob3Rzd2FwIGRlcGxveW1lbnRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gaG90c3dhcERlcGxveW1lbnQoXG4gIHNka1Byb3ZpZGVyOiBTZGtQcm92aWRlcixcbiAgaW9TcGFuOiBJTWVzc2FnZVNwYW48YW55PixcbiAgYXNzZXRQYXJhbXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sXG4gIHN0YWNrOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QsXG4gIGhvdHN3YXBNb2RlOiBIb3Rzd2FwTW9kZSxcbiAgaG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzOiBIb3Rzd2FwUHJvcGVydHlPdmVycmlkZXMsXG4pOiBQcm9taXNlPE9taXQ8SG90c3dhcFJlc3VsdCwgJ2R1cmF0aW9uJz4+IHtcbiAgLy8gcmVzb2x2ZSB0aGUgZW52aXJvbm1lbnQsIHNvIHdlIGNhbiBzdWJzdGl0dXRlIHRoaW5ncyBsaWtlIEFXUzo6UmVnaW9uIGluIENGTiBleHByZXNzaW9uc1xuICBjb25zdCByZXNvbHZlZEVudiA9IGF3YWl0IHNka1Byb3ZpZGVyLnJlc29sdmVFbnZpcm9ubWVudChzdGFjay5lbnZpcm9ubWVudCk7XG4gIC8vIGNyZWF0ZSBhIG5ldyBTREsgdXNpbmcgdGhlIENMSSBjcmVkZW50aWFscywgYmVjYXVzZSB0aGUgZGVmYXVsdCBvbmUgd2lsbCBub3Qgd29yayBmb3IgbmV3LXN0eWxlIHN5bnRoZXNpcyAtXG4gIC8vIGl0IGFzc3VtZXMgdGhlIGJvb3RzdHJhcCBkZXBsb3kgUm9sZSwgd2hpY2ggZG9lc24ndCBoYXZlIHBlcm1pc3Npb25zIHRvIHVwZGF0ZSBMYW1iZGEgZnVuY3Rpb25zXG4gIGNvbnN0IHNkayA9IChhd2FpdCBzZGtQcm92aWRlci5mb3JFbnZpcm9ubWVudChyZXNvbHZlZEVudiwgTW9kZS5Gb3JXcml0aW5nKSkuc2RrO1xuXG4gIC8vIENoZWNrIGZvciBhIGNhY2hlZCB0ZW1wbGF0ZSBmcm9tIGEgcHJldmlvdXMgaG90c3dhcCBkZXBsb3ltZW50LlxuICAvLyBVc2UgaWYgYXZhaWxhYmxlLCByZXByZXNlbnRzIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSByZXNvdXJjZXMgaW52b2x2ZWQgaW4gaG90c3dhcC5cbiAgY29uc3QgaG90c3dhcENhY2hlID0gYXdhaXQgcmVhZEhvdHN3YXBUZW1wbGF0ZUNhY2hlKHN0YWNrLmFzc2VtYmx5LmRpcmVjdG9yeSwgc3RhY2suc3RhY2tOYW1lLCBzdGFjay50ZW1wbGF0ZSk7XG4gIGNvbnN0IGN1cnJlbnRUZW1wbGF0ZSA9IGhvdHN3YXBDYWNoZSA/PyBhd2FpdCBsb2FkQ3VycmVudFRlbXBsYXRlV2l0aE5lc3RlZFN0YWNrcyhzdGFjaywgc2RrKTtcblxuICBjb25zdCBldmFsdWF0ZUNmblRlbXBsYXRlID0gbmV3IEV2YWx1YXRlQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZSh7XG4gICAgc3RhY2tBcnRpZmFjdDogc3RhY2ssXG4gICAgcGFyYW1ldGVyczogYXNzZXRQYXJhbXMsXG4gICAgYWNjb3VudDogcmVzb2x2ZWRFbnYuYWNjb3VudCxcbiAgICByZWdpb246IHJlc29sdmVkRW52LnJlZ2lvbixcbiAgICBwYXJ0aXRpb246IChhd2FpdCBzZGsuY3VycmVudEFjY291bnQoKSkucGFydGl0aW9uLFxuICAgIHNkayxcbiAgICBuZXN0ZWRTdGFja3M6IGN1cnJlbnRUZW1wbGF0ZS5uZXN0ZWRTdGFja3MsXG4gIH0pO1xuXG4gIGNvbnN0IHN0YWNrQ2hhbmdlcyA9IGNmbl9kaWZmLmZ1bGxEaWZmKGN1cnJlbnRUZW1wbGF0ZS5kZXBsb3llZFJvb3RUZW1wbGF0ZSwgc3RhY2sudGVtcGxhdGUpO1xuICBjb25zdCB7IGhvdHN3YXBwYWJsZSwgbm9uSG90c3dhcHBhYmxlIH0gPSBhd2FpdCBjbGFzc2lmeVJlc291cmNlQ2hhbmdlcyhcbiAgICBzdGFja0NoYW5nZXMsXG4gICAgZXZhbHVhdGVDZm5UZW1wbGF0ZSxcbiAgICBzZGssXG4gICAgY3VycmVudFRlbXBsYXRlLm5lc3RlZFN0YWNrcywgaG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzLFxuICApO1xuXG4gIGF3YWl0IGxvZ1JlamVjdGVkQ2hhbmdlcyhpb1NwYW4sIG5vbkhvdHN3YXBwYWJsZSwgaG90c3dhcE1vZGUpO1xuXG4gIGNvbnN0IGhvdHN3YXBwYWJsZUNoYW5nZXMgPSBob3Rzd2FwcGFibGUubWFwKG8gPT4gby5jaGFuZ2UpO1xuICBjb25zdCBub25Ib3Rzd2FwcGFibGVDaGFuZ2VzID0gbm9uSG90c3dhcHBhYmxlLm1hcChuID0+IG4uY2hhbmdlKTtcblxuICBhd2FpdCBpb1NwYW4ubm90aWZ5KElPLkNES19UT09MS0lUX0k1NDAxLm1zZygnSG90c3dhcCBwbGFuIGNyZWF0ZWQnLCB7XG4gICAgc3RhY2ssXG4gICAgbW9kZTogaG90c3dhcE1vZGUsXG4gICAgaG90c3dhcHBhYmxlQ2hhbmdlcyxcbiAgICBub25Ib3Rzd2FwcGFibGVDaGFuZ2VzLFxuICB9KSk7XG5cbiAgLy8gcHJlc2VydmUgY2xhc3NpYyBob3Rzd2FwIGJlaGF2aW9yXG4gIGlmIChob3Rzd2FwTW9kZSA9PT0gJ2ZhbGwtYmFjaycpIHtcbiAgICBpZiAobm9uSG90c3dhcHBhYmxlQ2hhbmdlcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGFjayxcbiAgICAgICAgbW9kZTogaG90c3dhcE1vZGUsXG4gICAgICAgIGhvdHN3YXBwZWQ6IGZhbHNlLFxuICAgICAgICBob3Rzd2FwRmFsbGJhY2s6IHRydWUsXG4gICAgICAgIGhvdHN3YXBwYWJsZUNoYW5nZXMsXG4gICAgICAgIG5vbkhvdHN3YXBwYWJsZUNoYW5nZXMsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8vIGFwcGx5IHRoZSBzaG9ydC1jaXJjdWl0YWJsZSBjaGFuZ2VzXG4gIGxldCBlcnJvcjogRXJyb3IgfCB1bmRlZmluZWQ7XG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwbHlBbGxIb3Rzd2FwT3BlcmF0aW9ucyhzZGssIGlvU3BhbiwgaG90c3dhcHBhYmxlKTtcbiAgICAvLyBDYWNoZSB0aGUgc3ludGhlc2l6ZWQgdGVtcGxhdGUgc28gdGhlIG5leHQgaG90c3dhcCBkaWZmcyBhZ2FpbnN0IGl0XG4gICAgYXdhaXQgd3JpdGVIb3Rzd2FwVGVtcGxhdGVDYWNoZShzdGFjay5hc3NlbWJseS5kaXJlY3RvcnksIHN0YWNrLnN0YWNrTmFtZSwgc3RhY2sudGVtcGxhdGUsIGN1cnJlbnRUZW1wbGF0ZS5uZXN0ZWRTdGFja3MpO1xuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICBlcnJvciA9IGU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHN0YWNrLFxuICAgIG1vZGU6IGhvdHN3YXBNb2RlLFxuICAgIGhvdHN3YXBwZWQ6ICFlcnJvcixcbiAgICBob3Rzd2FwRmFsbGJhY2s6IGZhbHNlLFxuICAgIGhvdHN3YXBwYWJsZUNoYW5nZXMsXG4gICAgbm9uSG90c3dhcHBhYmxlQ2hhbmdlcyxcbiAgICBlcnJvcixcbiAgfTtcbn1cblxuaW50ZXJmYWNlIENsYXNzaWZpZWRDaGFuZ2VzIHtcbiAgaG90c3dhcHBhYmxlOiBIb3Rzd2FwT3BlcmF0aW9uW107XG4gIG5vbkhvdHN3YXBwYWJsZTogUmVqZWN0ZWRDaGFuZ2VbXTtcbn1cblxuLyoqXG4gKiBDbGFzc2lmaWVzIGFsbCBjaGFuZ2VzIHRvIGFsbCByZXNvdXJjZXMgYXMgZWl0aGVyIGhvdHN3YXBwYWJsZSBvciBub3QuXG4gKiBNZXRhZGF0YSBjaGFuZ2VzIGFyZSBleGNsdWRlZCBmcm9tIHRoZSBsaXN0IG9mIChub24paG90c3dhcHBhYmxlIHJlc291cmNlcy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY2xhc3NpZnlSZXNvdXJjZUNoYW5nZXMoXG4gIHN0YWNrQ2hhbmdlczogY2ZuX2RpZmYuVGVtcGxhdGVEaWZmLFxuICBldmFsdWF0ZUNmblRlbXBsYXRlOiBFdmFsdWF0ZUNsb3VkRm9ybWF0aW9uVGVtcGxhdGUsXG4gIHNkazogU0RLLFxuICBuZXN0ZWRTdGFja05hbWVzOiB7IFtuZXN0ZWRTdGFja05hbWU6IHN0cmluZ106IE5lc3RlZFN0YWNrVGVtcGxhdGVzIH0sXG4gIGhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlczogSG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzLFxuKTogUHJvbWlzZTxDbGFzc2lmaWVkQ2hhbmdlcz4ge1xuICBjb25zdCByZXNvdXJjZURpZmZlcmVuY2VzID0gZ2V0U3RhY2tSZXNvdXJjZURpZmZlcmVuY2VzKHN0YWNrQ2hhbmdlcyk7XG5cbiAgY29uc3QgcHJvbWlzZXM6IEFycmF5PCgpID0+IFByb21pc2U8SG90c3dhcENoYW5nZVtdPj4gPSBbXTtcbiAgY29uc3QgaG90c3dhcHBhYmxlUmVzb3VyY2VzID0gbmV3IEFycmF5PEhvdHN3YXBPcGVyYXRpb24+KCk7XG4gIGNvbnN0IG5vbkhvdHN3YXBwYWJsZVJlc291cmNlcyA9IG5ldyBBcnJheTxSZWplY3RlZENoYW5nZT4oKTtcbiAgY29uc3QgbmVzdGVkU3RhY2tUYXNrczogQXJyYXk8UHJvbWlzZTxDbGFzc2lmaWVkQ2hhbmdlcz4+ID0gW107XG4gIGNvbnN0IGxpbWl0ID0gcExpbWl0KDEwKTtcblxuICBmb3IgKGNvbnN0IGxvZ2ljYWxJZCBvZiBPYmplY3Qua2V5cyhzdGFja0NoYW5nZXMub3V0cHV0cy5jaGFuZ2VzKSkge1xuICAgIG5vbkhvdHN3YXBwYWJsZVJlc291cmNlcy5wdXNoKHtcbiAgICAgIGhvdHN3YXBwYWJsZTogZmFsc2UsXG4gICAgICBjaGFuZ2U6IHtcbiAgICAgICAgcmVhc29uOiBOb25Ib3Rzd2FwcGFibGVSZWFzb24uT1VUUFVULFxuICAgICAgICBkZXNjcmlwdGlvbjogJ291dHB1dCB3YXMgY2hhbmdlZCcsXG4gICAgICAgIHN1YmplY3Q6IHtcbiAgICAgICAgICB0eXBlOiAnT3V0cHV0JyxcbiAgICAgICAgICBsb2dpY2FsSWQsXG4gICAgICAgICAgbWV0YWRhdGE6IGV2YWx1YXRlQ2ZuVGVtcGxhdGUubWV0YWRhdGFGb3IobG9naWNhbElkKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgLy8gZ2F0aGVyIHRoZSByZXN1bHRzIG9mIHRoZSBkZXRlY3RvciBmdW5jdGlvbnNcbiAgZm9yIChjb25zdCBbbG9naWNhbElkLCBjaGFuZ2VdIG9mIE9iamVjdC5lbnRyaWVzKHJlc291cmNlRGlmZmVyZW5jZXMpKSB7XG4gICAgaWYgKGNoYW5nZS5uZXdWYWx1ZT8uVHlwZSA9PT0gJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyAmJiBjaGFuZ2Uub2xkVmFsdWU/LlR5cGUgPT09ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycpIHtcbiAgICAgIG5lc3RlZFN0YWNrVGFza3MucHVzaChsaW1pdCgoKSA9PiBmaW5kTmVzdGVkSG90c3dhcHBhYmxlQ2hhbmdlcyhcbiAgICAgICAgbG9naWNhbElkLFxuICAgICAgICBjaGFuZ2UsXG4gICAgICAgIG5lc3RlZFN0YWNrTmFtZXMsXG4gICAgICAgIGV2YWx1YXRlQ2ZuVGVtcGxhdGUsXG4gICAgICAgIHNkayxcbiAgICAgICAgaG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzLFxuICAgICAgKSkpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgaG90c3dhcHBhYmxlQ2hhbmdlQ2FuZGlkYXRlID0gaXNDYW5kaWRhdGVGb3JIb3Rzd2FwcGluZyhsb2dpY2FsSWQsIGNoYW5nZSwgZXZhbHVhdGVDZm5UZW1wbGF0ZSk7XG4gICAgLy8gd2UgZG9uJ3QgbmVlZCB0byBydW4gdGhpcyB0aHJvdWdoIHRoZSBkZXRlY3RvciBmdW5jdGlvbnMsIHdlIGNhbiBhbHJlYWR5IGp1ZGdlIHRoaXNcbiAgICBpZiAoJ2hvdHN3YXBwYWJsZScgaW4gaG90c3dhcHBhYmxlQ2hhbmdlQ2FuZGlkYXRlKSB7XG4gICAgICBpZiAoIWhvdHN3YXBwYWJsZUNoYW5nZUNhbmRpZGF0ZS5ob3Rzd2FwcGFibGUpIHtcbiAgICAgICAgbm9uSG90c3dhcHBhYmxlUmVzb3VyY2VzLnB1c2goaG90c3dhcHBhYmxlQ2hhbmdlQ2FuZGlkYXRlKTtcbiAgICAgIH1cblxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzb3VyY2VUeXBlOiBzdHJpbmcgPSBob3Rzd2FwcGFibGVDaGFuZ2VDYW5kaWRhdGUubmV3VmFsdWUuVHlwZTtcbiAgICBpZiAocmVzb3VyY2VUeXBlIGluIFJFU09VUkNFX0RFVEVDVE9SUykge1xuICAgICAgLy8gcnVuIGRldGVjdG9yIGZ1bmN0aW9ucyBsYXppbHkgdG8gcHJldmVudCB1bmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb25zXG4gICAgICBwcm9taXNlcy5wdXNoKCgpID0+XG4gICAgICAgIFJFU09VUkNFX0RFVEVDVE9SU1tyZXNvdXJjZVR5cGVdKGxvZ2ljYWxJZCwgaG90c3dhcHBhYmxlQ2hhbmdlQ2FuZGlkYXRlLCBldmFsdWF0ZUNmblRlbXBsYXRlLCBob3Rzd2FwUHJvcGVydHlPdmVycmlkZXMpLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9uSG90c3dhcHBhYmxlUmVzb3VyY2VzLnB1c2gobm9uSG90c3dhcHBhYmxlUmVzb3VyY2UoaG90c3dhcHBhYmxlQ2hhbmdlQ2FuZGlkYXRlKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gcmVzb2x2ZSBhbGwgbmVzdGVkIHN0YWNrIGFuZCBkZXRlY3RvciByZXN1bHRzIGluIHBhcmFsbGVsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAY2RrbGFicy9wcm9taXNlYWxsLW5vLXVuYm91bmRlZC1wYXJhbGxlbGlzbVxuICBjb25zdCBuZXN0ZWRSZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwobmVzdGVkU3RhY2tUYXNrcyk7XG4gIGZvciAoY29uc3QgbmVzdGVkIG9mIG5lc3RlZFJlc3VsdHMpIHtcbiAgICBob3Rzd2FwcGFibGVSZXNvdXJjZXMucHVzaCguLi5uZXN0ZWQuaG90c3dhcHBhYmxlKTtcbiAgICBub25Ib3Rzd2FwcGFibGVSZXNvdXJjZXMucHVzaCguLi5uZXN0ZWQubm9uSG90c3dhcHBhYmxlKTtcbiAgfVxuXG4gIGNvbnN0IGNoYW5nZXNEZXRlY3Rpb25SZXN1bHRzOiBBcnJheTxIb3Rzd2FwQ2hhbmdlW10+ID0gW107XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAY2RrbGFicy9wcm9taXNlYWxsLW5vLXVuYm91bmRlZC1wYXJhbGxlbGlzbVxuICBjb25zdCBkZXRlY3RvclJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcy5tYXAoKGZuKSA9PiBsaW1pdChmbikpKTtcbiAgZm9yIChjb25zdCBob3Rzd2FwRGV0ZWN0aW9uUmVzdWx0cyBvZiBkZXRlY3RvclJlc3VsdHMpIHtcbiAgICBjaGFuZ2VzRGV0ZWN0aW9uUmVzdWx0cy5wdXNoKGhvdHN3YXBEZXRlY3Rpb25SZXN1bHRzKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgcmVzb3VyY2VEZXRlY3Rpb25SZXN1bHRzIG9mIGNoYW5nZXNEZXRlY3Rpb25SZXN1bHRzKSB7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eVJlc3VsdCBvZiByZXNvdXJjZURldGVjdGlvblJlc3VsdHMpIHtcbiAgICAgIHByb3BlcnR5UmVzdWx0LmhvdHN3YXBwYWJsZVxuICAgICAgICA/IGhvdHN3YXBwYWJsZVJlc291cmNlcy5wdXNoKHByb3BlcnR5UmVzdWx0KVxuICAgICAgICA6IG5vbkhvdHN3YXBwYWJsZVJlc291cmNlcy5wdXNoKHByb3BlcnR5UmVzdWx0KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGhvdHN3YXBwYWJsZTogaG90c3dhcHBhYmxlUmVzb3VyY2VzLFxuICAgIG5vbkhvdHN3YXBwYWJsZTogbm9uSG90c3dhcHBhYmxlUmVzb3VyY2VzLFxuICB9O1xufVxuXG4vKipcbiAqIFJldHVybnMgYWxsIGNoYW5nZXMgdG8gcmVzb3VyY2VzIGluIHRoZSBnaXZlbiBTdGFjay5cbiAqXG4gKiBAcGFyYW0gc3RhY2tDaGFuZ2VzIC0gdGhlIGNvbGxlY3Rpb24gb2YgYWxsIGNoYW5nZXMgdG8gYSBnaXZlbiBTdGFja1xuICovXG5mdW5jdGlvbiBnZXRTdGFja1Jlc291cmNlRGlmZmVyZW5jZXMoc3RhY2tDaGFuZ2VzOiBjZm5fZGlmZi5UZW1wbGF0ZURpZmYpOiB7XG4gIFtsb2dpY2FsSWQ6IHN0cmluZ106IGNmbl9kaWZmLlJlc291cmNlRGlmZmVyZW5jZTtcbn0ge1xuICAvLyB3ZSBuZWVkIHRvIGNvbGxhcHNlIGxvZ2ljYWwgSUQgcmVuYW1lIGNoYW5nZXMgaW50byBvbmUgY2hhbmdlLFxuICAvLyBhcyB0aGV5IGFyZSByZXByZXNlbnRlZCBpbiBzdGFja0NoYW5nZXMgYXMgYSBwYWlyIG9mIHR3byBjaGFuZ2VzOiBvbmUgYWRkaXRpb24gYW5kIG9uZSByZW1vdmFsXG4gIGNvbnN0IGFsbFJlc291cmNlQ2hhbmdlczogeyBbbG9nSWQ6IHN0cmluZ106IGNmbl9kaWZmLlJlc291cmNlRGlmZmVyZW5jZSB9ID0gc3RhY2tDaGFuZ2VzLnJlc291cmNlcy5jaGFuZ2VzO1xuICBjb25zdCBhbGxSZW1vdmFsQ2hhbmdlcyA9IGZpbHRlckRpY3QoYWxsUmVzb3VyY2VDaGFuZ2VzLCAocmVzQ2hhbmdlKSA9PiByZXNDaGFuZ2UuaXNSZW1vdmFsKTtcbiAgY29uc3QgYWxsTm9uUmVtb3ZhbENoYW5nZXMgPSBmaWx0ZXJEaWN0KGFsbFJlc291cmNlQ2hhbmdlcywgKHJlc0NoYW5nZSkgPT4gIXJlc0NoYW5nZS5pc1JlbW92YWwpO1xuICBmb3IgKGNvbnN0IFtsb2dJZCwgbm9uUmVtb3ZhbENoYW5nZV0gb2YgT2JqZWN0LmVudHJpZXMoYWxsTm9uUmVtb3ZhbENoYW5nZXMpKSB7XG4gICAgaWYgKG5vblJlbW92YWxDaGFuZ2UuaXNBZGRpdGlvbikge1xuICAgICAgY29uc3QgYWRkQ2hhbmdlID0gbm9uUmVtb3ZhbENoYW5nZTtcbiAgICAgIC8vIHNlYXJjaCBmb3IgYW4gaWRlbnRpY2FsIHJlbW92YWwgY2hhbmdlXG4gICAgICBjb25zdCBpZGVudGljYWxSZW1vdmFsQ2hhbmdlID0gT2JqZWN0LmVudHJpZXMoYWxsUmVtb3ZhbENoYW5nZXMpLmZpbmQoKFtfLCByZW1DaGFuZ2VdKSA9PiB7XG4gICAgICAgIHJldHVybiBjaGFuZ2VzQXJlRm9yU2FtZVJlc291cmNlKHJlbUNoYW5nZSwgYWRkQ2hhbmdlKTtcbiAgICAgIH0pO1xuICAgICAgLy8gaWYgd2UgZm91bmQgb25lLCB0aGVuIHRoaXMgbWVhbnMgdGhpcyBpcyBhIHJlbmFtZSBjaGFuZ2VcbiAgICAgIGlmIChpZGVudGljYWxSZW1vdmFsQ2hhbmdlKSB7XG4gICAgICAgIGNvbnN0IFtyZW1vdmVkTG9nSWQsIHJlbW92ZWRSZXNvdXJjZUNoYW5nZV0gPSBpZGVudGljYWxSZW1vdmFsQ2hhbmdlO1xuICAgICAgICBhbGxOb25SZW1vdmFsQ2hhbmdlc1tsb2dJZF0gPSBtYWtlUmVuYW1lRGlmZmVyZW5jZShyZW1vdmVkUmVzb3VyY2VDaGFuZ2UsIGFkZENoYW5nZSk7XG4gICAgICAgIC8vIGRlbGV0ZSB0aGUgcmVtb3ZhbCBjaGFuZ2UgdGhhdCBmb3JtcyB0aGUgcmVuYW1lIHBhaXJcbiAgICAgICAgZGVsZXRlIGFsbFJlbW92YWxDaGFuZ2VzW3JlbW92ZWRMb2dJZF07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIHRoZSBmaW5hbCByZXN1bHQgYXJlIGFsbCBvZiB0aGUgcmVtYWluaW5nIHJlbW92YWwgY2hhbmdlcyxcbiAgLy8gcGx1cyBhbGwgb2YgdGhlIG5vbi1yZW1vdmFsIGNoYW5nZXNcbiAgLy8gKHdlIHNhdmVkIHRoZSByZW5hbWUgY2hhbmdlcyBpbiB0aGF0IG9iamVjdCBhbHJlYWR5KVxuICByZXR1cm4ge1xuICAgIC4uLmFsbFJlbW92YWxDaGFuZ2VzLFxuICAgIC4uLmFsbE5vblJlbW92YWxDaGFuZ2VzLFxuICB9O1xufVxuXG4vKiogRmlsdGVycyBhbiBvYmplY3Qgd2l0aCBzdHJpbmcga2V5cyBiYXNlZCBvbiB3aGV0aGVyIHRoZSBjYWxsYmFjayByZXR1cm5zICd0cnVlJyBmb3IgdGhlIGdpdmVuIHZhbHVlIGluIHRoZSBvYmplY3QuICovXG5mdW5jdGlvbiBmaWx0ZXJEaWN0PFQ+KGRpY3Q6IHsgW2tleTogc3RyaW5nXTogVCB9LCBmdW5jOiAodDogVCkgPT4gYm9vbGVhbik6IHsgW2tleTogc3RyaW5nXTogVCB9IHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGRpY3QpLnJlZHVjZShcbiAgICAoYWNjLCBba2V5LCB0XSkgPT4ge1xuICAgICAgaWYgKGZ1bmModCkpIHtcbiAgICAgICAgYWNjW2tleV0gPSB0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LFxuICAgIHt9IGFzIHsgW2tleTogc3RyaW5nXTogVCB9LFxuICApO1xufVxuXG4vKiogRmluZHMgYW55IGhvdHN3YXBwYWJsZSBjaGFuZ2VzIGluIGFsbCBuZXN0ZWQgc3RhY2tzLiAqL1xuYXN5bmMgZnVuY3Rpb24gZmluZE5lc3RlZEhvdHN3YXBwYWJsZUNoYW5nZXMoXG4gIGxvZ2ljYWxJZDogc3RyaW5nLFxuICBjaGFuZ2U6IGNmbl9kaWZmLlJlc291cmNlRGlmZmVyZW5jZSxcbiAgbmVzdGVkU3RhY2tUZW1wbGF0ZXM6IHsgW25lc3RlZFN0YWNrTmFtZTogc3RyaW5nXTogTmVzdGVkU3RhY2tUZW1wbGF0ZXMgfSxcbiAgZXZhbHVhdGVDZm5UZW1wbGF0ZTogRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlLFxuICBzZGs6IFNESyxcbiAgaG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzOiBIb3Rzd2FwUHJvcGVydHlPdmVycmlkZXMsXG4pOiBQcm9taXNlPENsYXNzaWZpZWRDaGFuZ2VzPiB7XG4gIGNvbnN0IG5lc3RlZFN0YWNrID0gbmVzdGVkU3RhY2tUZW1wbGF0ZXNbbG9naWNhbElkXTtcbiAgaWYgKCFuZXN0ZWRTdGFjay5waHlzaWNhbE5hbWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaG90c3dhcHBhYmxlOiBbXSxcbiAgICAgIG5vbkhvdHN3YXBwYWJsZTogW1xuICAgICAgICB7XG4gICAgICAgICAgaG90c3dhcHBhYmxlOiBmYWxzZSxcbiAgICAgICAgICBjaGFuZ2U6IHtcbiAgICAgICAgICAgIHJlYXNvbjogTm9uSG90c3dhcHBhYmxlUmVhc29uLk5FU1RFRF9TVEFDS19DUkVBVElPTixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnbmV3bHkgY3JlYXRlZCBuZXN0ZWQgc3RhY2tzIGNhbm5vdCBiZSBob3Rzd2FwcGVkJyxcbiAgICAgICAgICAgIHN1YmplY3Q6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ1Jlc291cmNlJyxcbiAgICAgICAgICAgICAgbG9naWNhbElkLFxuICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycsXG4gICAgICAgICAgICAgIG1ldGFkYXRhOiBldmFsdWF0ZUNmblRlbXBsYXRlLm1ldGFkYXRhRm9yKGxvZ2ljYWxJZCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBldmFsdWF0ZU5lc3RlZENmblRlbXBsYXRlID0gYXdhaXQgZXZhbHVhdGVDZm5UZW1wbGF0ZS5jcmVhdGVOZXN0ZWRFdmFsdWF0ZUNsb3VkRm9ybWF0aW9uVGVtcGxhdGUoXG4gICAgbmVzdGVkU3RhY2sucGh5c2ljYWxOYW1lLFxuICAgIG5lc3RlZFN0YWNrLmdlbmVyYXRlZFRlbXBsYXRlLFxuICAgIGNoYW5nZS5uZXdWYWx1ZT8uUHJvcGVydGllcz8uUGFyYW1ldGVycyxcbiAgKTtcblxuICBjb25zdCBuZXN0ZWREaWZmID0gY2ZuX2RpZmYuZnVsbERpZmYoXG4gICAgbmVzdGVkU3RhY2tUZW1wbGF0ZXNbbG9naWNhbElkXS5kZXBsb3llZFRlbXBsYXRlLFxuICAgIG5lc3RlZFN0YWNrVGVtcGxhdGVzW2xvZ2ljYWxJZF0uZ2VuZXJhdGVkVGVtcGxhdGUsXG4gICk7XG5cbiAgcmV0dXJuIGNsYXNzaWZ5UmVzb3VyY2VDaGFuZ2VzKFxuICAgIG5lc3RlZERpZmYsXG4gICAgZXZhbHVhdGVOZXN0ZWRDZm5UZW1wbGF0ZSxcbiAgICBzZGssXG4gICAgbmVzdGVkU3RhY2tUZW1wbGF0ZXNbbG9naWNhbElkXS5uZXN0ZWRTdGFja1RlbXBsYXRlcyxcbiAgICBob3Rzd2FwUHJvcGVydHlPdmVycmlkZXMsXG4gICk7XG59XG5cbi8qKiBSZXR1cm5zICd0cnVlJyBpZiBhIHBhaXIgb2YgY2hhbmdlcyBpcyBmb3IgdGhlIHNhbWUgcmVzb3VyY2UuICovXG5mdW5jdGlvbiBjaGFuZ2VzQXJlRm9yU2FtZVJlc291cmNlKFxuICBvbGRDaGFuZ2U6IGNmbl9kaWZmLlJlc291cmNlRGlmZmVyZW5jZSxcbiAgbmV3Q2hhbmdlOiBjZm5fZGlmZi5SZXNvdXJjZURpZmZlcmVuY2UsXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBvbGRDaGFuZ2Uub2xkUmVzb3VyY2VUeXBlID09PSBuZXdDaGFuZ2UubmV3UmVzb3VyY2VUeXBlICYmXG4gICAgLy8gdGhpcyBpc24ndCBncmVhdCwgYnV0IEkgZG9uJ3Qgd2FudCB0byBicmluZyBpbiBzb21ldGhpbmcgbGlrZSB1bmRlcnNjb3JlIGp1c3QgZm9yIHRoaXMgY29tcGFyaXNvblxuICAgIEpTT04uc3RyaW5naWZ5KG9sZENoYW5nZS5vbGRQcm9wZXJ0aWVzKSA9PT0gSlNPTi5zdHJpbmdpZnkobmV3Q2hhbmdlLm5ld1Byb3BlcnRpZXMpXG4gICk7XG59XG5cbmZ1bmN0aW9uIG1ha2VSZW5hbWVEaWZmZXJlbmNlKFxuICByZW1DaGFuZ2U6IGNmbl9kaWZmLlJlc291cmNlRGlmZmVyZW5jZSxcbiAgYWRkQ2hhbmdlOiBjZm5fZGlmZi5SZXNvdXJjZURpZmZlcmVuY2UsXG4pOiBjZm5fZGlmZi5SZXNvdXJjZURpZmZlcmVuY2Uge1xuICByZXR1cm4gbmV3IGNmbl9kaWZmLlJlc291cmNlRGlmZmVyZW5jZShcbiAgICAvLyB3ZSBoYXZlIHRvIGZpbGwgaW4gdGhlIG9sZCB2YWx1ZSwgYmVjYXVzZSBvdGhlcndpc2UgdGhpcyB3aWxsIGJlIGNsYXNzaWZpZWQgYXMgYSBub24taG90c3dhcHBhYmxlIGNoYW5nZVxuICAgIHJlbUNoYW5nZS5vbGRWYWx1ZSxcbiAgICBhZGRDaGFuZ2UubmV3VmFsdWUsXG4gICAge1xuICAgICAgcmVzb3VyY2VUeXBlOiB7XG4gICAgICAgIG9sZFR5cGU6IHJlbUNoYW5nZS5vbGRSZXNvdXJjZVR5cGUsXG4gICAgICAgIG5ld1R5cGU6IGFkZENoYW5nZS5uZXdSZXNvdXJjZVR5cGUsXG4gICAgICB9LFxuICAgICAgcHJvcGVydHlEaWZmczogKGFkZENoYW5nZSBhcyBhbnkpLnByb3BlcnR5RGlmZnMsXG4gICAgICBvdGhlckRpZmZzOiAoYWRkQ2hhbmdlIGFzIGFueSkub3RoZXJEaWZmcyxcbiAgICB9LFxuICApO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBgSG90c3dhcHBhYmxlQ2hhbmdlQ2FuZGlkYXRlYCBpZiB0aGUgY2hhbmdlIGlzIGhvdHN3YXBwYWJsZVxuICogUmV0dXJucyBhbiBlbXB0eSBgSG90c3dhcHBhYmxlQ2hhbmdlYCBpZiB0aGUgY2hhbmdlIGlzIHRvIENESzo6TWV0YWRhdGFcbiAqIFJldHVybnMgYSBgTm9uSG90c3dhcHBhYmxlQ2hhbmdlYCBpZiB0aGUgY2hhbmdlIGlzIG5vdCBob3Rzd2FwcGFibGVcbiAqL1xuZnVuY3Rpb24gaXNDYW5kaWRhdGVGb3JIb3Rzd2FwcGluZyhcbiAgbG9naWNhbElkOiBzdHJpbmcsXG4gIGNoYW5nZTogY2ZuX2RpZmYuUmVzb3VyY2VEaWZmZXJlbmNlLFxuICBldmFsdWF0ZUNmblRlbXBsYXRlOiBFdmFsdWF0ZUNsb3VkRm9ybWF0aW9uVGVtcGxhdGUsXG4pOiBSZWplY3RlZENoYW5nZSB8IFJlc291cmNlQ2hhbmdlIHtcbiAgLy8gYSByZXNvdXJjZSBoYXMgYmVlbiByZW1vdmVkIE9SIGEgcmVzb3VyY2UgaGFzIGJlZW4gYWRkZWQ7IHdlIGNhbid0IHNob3J0LWNpcmN1aXQgdGhhdCBjaGFuZ2VcbiAgaWYgKCFjaGFuZ2Uub2xkVmFsdWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaG90c3dhcHBhYmxlOiBmYWxzZSxcbiAgICAgIGNoYW5nZToge1xuICAgICAgICByZWFzb246IE5vbkhvdHN3YXBwYWJsZVJlYXNvbi5SRVNPVVJDRV9DUkVBVElPTixcbiAgICAgICAgZGVzY3JpcHRpb246IGByZXNvdXJjZSAnJHtsb2dpY2FsSWR9JyB3YXMgY3JlYXRlZCBieSB0aGlzIGRlcGxveW1lbnRgLFxuICAgICAgICBzdWJqZWN0OiB7XG4gICAgICAgICAgdHlwZTogJ1Jlc291cmNlJyxcbiAgICAgICAgICBsb2dpY2FsSWQsXG4gICAgICAgICAgcmVzb3VyY2VUeXBlOiBjaGFuZ2UubmV3VmFsdWUhLlR5cGUsXG4gICAgICAgICAgbWV0YWRhdGE6IGV2YWx1YXRlQ2ZuVGVtcGxhdGUubWV0YWRhdGFGb3IobG9naWNhbElkKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSBlbHNlIGlmICghY2hhbmdlLm5ld1ZhbHVlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhvdHN3YXBwYWJsZTogZmFsc2UsXG4gICAgICBsb2dpY2FsSWQsXG4gICAgICBjaGFuZ2U6IHtcbiAgICAgICAgcmVhc29uOiBOb25Ib3Rzd2FwcGFibGVSZWFzb24uUkVTT1VSQ0VfREVMRVRJT04sXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgcmVzb3VyY2UgJyR7bG9naWNhbElkfScgd2FzIGRlc3Ryb3llZCBieSB0aGlzIGRlcGxveW1lbnRgLFxuICAgICAgICBzdWJqZWN0OiB7XG4gICAgICAgICAgdHlwZTogJ1Jlc291cmNlJyxcbiAgICAgICAgICBsb2dpY2FsSWQsXG4gICAgICAgICAgcmVzb3VyY2VUeXBlOiBjaGFuZ2Uub2xkVmFsdWUuVHlwZSxcbiAgICAgICAgICBtZXRhZGF0YTogZXZhbHVhdGVDZm5UZW1wbGF0ZS5tZXRhZGF0YUZvcihsb2dpY2FsSWQpLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLy8gYSByZXNvdXJjZSBoYXMgaGFkIGl0cyB0eXBlIGNoYW5nZWRcbiAgaWYgKGNoYW5nZS5uZXdWYWx1ZS5UeXBlICE9PSBjaGFuZ2Uub2xkVmFsdWUuVHlwZSkge1xuICAgIHJldHVybiB7XG4gICAgICBob3Rzd2FwcGFibGU6IGZhbHNlLFxuICAgICAgY2hhbmdlOiB7XG4gICAgICAgIHJlYXNvbjogTm9uSG90c3dhcHBhYmxlUmVhc29uLlJFU09VUkNFX1RZUEVfQ0hBTkdFRCxcbiAgICAgICAgZGVzY3JpcHRpb246IGByZXNvdXJjZSAnJHtsb2dpY2FsSWR9JyBoYWQgaXRzIHR5cGUgY2hhbmdlZCBmcm9tICcke2NoYW5nZS5vbGRWYWx1ZT8uVHlwZX0nIHRvICcke2NoYW5nZS5uZXdWYWx1ZT8uVHlwZX0nYCxcbiAgICAgICAgc3ViamVjdDoge1xuICAgICAgICAgIHR5cGU6ICdSZXNvdXJjZScsXG4gICAgICAgICAgbG9naWNhbElkLFxuICAgICAgICAgIHJlc291cmNlVHlwZTogY2hhbmdlLm5ld1ZhbHVlLlR5cGUsXG4gICAgICAgICAgbWV0YWRhdGE6IGV2YWx1YXRlQ2ZuVGVtcGxhdGUubWV0YWRhdGFGb3IobG9naWNhbElkKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbG9naWNhbElkLFxuICAgIG9sZFZhbHVlOiBjaGFuZ2Uub2xkVmFsdWUsXG4gICAgbmV3VmFsdWU6IGNoYW5nZS5uZXdWYWx1ZSxcbiAgICBwcm9wZXJ0eVVwZGF0ZXM6IGNoYW5nZS5wcm9wZXJ0eVVwZGF0ZXMsXG4gICAgbWV0YWRhdGE6IGV2YWx1YXRlQ2ZuVGVtcGxhdGUubWV0YWRhdGFGb3IobG9naWNhbElkKSxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXBwbHlBbGxIb3Rzd2FwT3BlcmF0aW9ucyhzZGs6IFNESywgaW9TcGFuOiBJTWVzc2FnZVNwYW48YW55PiwgaG90c3dhcHBhYmxlQ2hhbmdlczogSG90c3dhcE9wZXJhdGlvbltdKTogUHJvbWlzZTx2b2lkW10+IHtcbiAgaWYgKGhvdHN3YXBwYWJsZUNoYW5nZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gIH1cblxuICBhd2FpdCBpb1NwYW4uZGVmYXVsdHMuaW5mbyhgXFxuJHtJQ09OfSBob3Rzd2FwcGluZyByZXNvdXJjZXM6YCk7XG4gIGNvbnN0IGxpbWl0ID0gcExpbWl0KDEwKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBjZGtsYWJzL3Byb21pc2VhbGwtbm8tdW5ib3VuZGVkLXBhcmFsbGVsaXNtXG4gIHJldHVybiBQcm9taXNlLmFsbChob3Rzd2FwcGFibGVDaGFuZ2VzLm1hcChob3Rzd2FwT3BlcmF0aW9uID0+IGxpbWl0KCgpID0+IHtcbiAgICByZXR1cm4gYXBwbHlIb3Rzd2FwT3BlcmF0aW9uKHNkaywgaW9TcGFuLCBob3Rzd2FwT3BlcmF0aW9uKTtcbiAgfSkpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXBwbHlIb3Rzd2FwT3BlcmF0aW9uKHNkazogU0RLLCBpb1NwYW46IElNZXNzYWdlU3Bhbjxhbnk+LCBob3Rzd2FwT3BlcmF0aW9uOiBIb3Rzd2FwT3BlcmF0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vIG5vdGUgdGhlIHR5cGUgb2Ygc2VydmljZSB0aGF0IHdhcyBzdWNjZXNzZnVsbHkgaG90c3dhcHBlZCBpbiB0aGUgVXNlci1BZ2VudFxuICBjb25zdCBjdXN0b21Vc2VyQWdlbnQgPSBgY2RrLWhvdHN3YXAvc3VjY2Vzcy0ke2hvdHN3YXBPcGVyYXRpb24uc2VydmljZX1gO1xuICBzZGsuYXBwZW5kQ3VzdG9tVXNlckFnZW50KGN1c3RvbVVzZXJBZ2VudCk7XG4gIGNvbnN0IHJlc291cmNlVGV4dCA9IChyOiBBZmZlY3RlZFJlc291cmNlKSA9PiByLmRlc2NyaXB0aW9uID8/IGAke3IucmVzb3VyY2VUeXBlfSAnJHtyLnBoeXNpY2FsTmFtZSA/PyByLmxvZ2ljYWxJZH0nYDtcblxuICBhd2FpdCBpb1NwYW4ubm90aWZ5KElPLkNES19UT09MS0lUX0k1NDAyLm1zZyhcbiAgICBob3Rzd2FwT3BlcmF0aW9uLmNoYW5nZS5yZXNvdXJjZXMubWFwKHIgPT4gZm9ybWF0KGAgICAke0lDT059ICVzYCwgY2hhbGsuYm9sZChyZXNvdXJjZVRleHQocikpKSkuam9pbignXFxuJyksXG4gICAgaG90c3dhcE9wZXJhdGlvbi5jaGFuZ2UsXG4gICkpO1xuXG4gIC8vIGlmIHRoZSBTREsgY2FsbCBmYWlscywgYW4gZXJyb3Igd2lsbCBiZSB0aHJvd24gYnkgdGhlIFNES1xuICAvLyBhbmQgd2lsbCBwcmV2ZW50IHRoZSBncmVlbiAnaG90c3dhcHBlZCEnIHRleHQgZnJvbSBiZWluZyBkaXNwbGF5ZWRcbiAgdHJ5IHtcbiAgICBhd2FpdCBob3Rzd2FwT3BlcmF0aW9uLmFwcGx5KHNkayk7XG4gIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgIGlmIChlLm5hbWUgPT09ICdUaW1lb3V0RXJyb3InIHx8IGUubmFtZSA9PT0gJ0Fib3J0RXJyb3InKSB7XG4gICAgICBjb25zdCByZXN1bHQ6IFdhaXRlclJlc3VsdCA9IEpTT04ucGFyc2UoZm9ybWF0RXJyb3JNZXNzYWdlKGUpKTtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IFRvb2xraXRFcnJvcignSG90c3dhcFdhaXRlckZhaWxlZCcsIGZvcm1hdFdhaXRlckVycm9yUmVzdWx0KHJlc3VsdCkpO1xuICAgICAgZXJyb3IubmFtZSA9IGUubmFtZTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICB0aHJvdyBlO1xuICB9XG5cbiAgYXdhaXQgaW9TcGFuLm5vdGlmeShJTy5DREtfVE9PTEtJVF9JNTQwMy5tc2coXG4gICAgaG90c3dhcE9wZXJhdGlvbi5jaGFuZ2UucmVzb3VyY2VzLm1hcChyID0+IGZvcm1hdChgICAgJHtJQ09OfSAlcyAlc2AsIGNoYWxrLmJvbGQocmVzb3VyY2VUZXh0KHIpKSwgY2hhbGsuZ3JlZW4oJ2hvdHN3YXBwZWQhJykpKS5qb2luKCdcXG4nKSxcbiAgICBob3Rzd2FwT3BlcmF0aW9uLmNoYW5nZSxcbiAgKSk7XG5cbiAgc2RrLnJlbW92ZUN1c3RvbVVzZXJBZ2VudChjdXN0b21Vc2VyQWdlbnQpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRXYWl0ZXJFcnJvclJlc3VsdChyZXN1bHQ6IFdhaXRlclJlc3VsdCkge1xuICBjb25zdCBtYWluID0gW1xuICAgIGBSZXNvdXJjZSBpcyBub3QgaW4gdGhlIGV4cGVjdGVkIHN0YXRlIGR1ZSB0byB3YWl0ZXIgc3RhdHVzOiAke3Jlc3VsdC5zdGF0ZX1gLFxuICAgIHJlc3VsdC5yZWFzb24gPyBgJHtyZXN1bHQucmVhc29ufS5gIDogJycsXG4gIF0uam9pbignLiAnKTtcblxuICBpZiAocmVzdWx0Lm9ic2VydmVkUmVzcG9uc2VzICE9IG51bGwpIHtcbiAgICBjb25zdCBvYnNlcnZlZFJlc3BvbnNlcyA9IE9iamVjdFxuICAgICAgLmVudHJpZXMocmVzdWx0Lm9ic2VydmVkUmVzcG9uc2VzKVxuICAgICAgLm1hcCgoW21zZywgY291bnRdKSA9PiBgICAtICR7bXNnfSAoJHtjb3VudH0pYClcbiAgICAgIC5qb2luKCdcXG4nKTtcblxuICAgIHJldHVybiBgJHttYWlufSBPYnNlcnZlZCByZXNwb25zZXM6XFxuJHtvYnNlcnZlZFJlc3BvbnNlc31gO1xuICB9XG5cbiAgcmV0dXJuIG1haW47XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGxvZ1JlamVjdGVkQ2hhbmdlcyhcbiAgaW9TcGFuOiBJTWVzc2FnZVNwYW48YW55PixcbiAgcmVqZWN0ZWRDaGFuZ2VzOiBSZWplY3RlZENoYW5nZVtdLFxuICBob3Rzd2FwTW9kZTogSG90c3dhcE1vZGUsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKHJlamVjdGVkQ2hhbmdlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgLyoqXG4gICAqIEVLUyBTZXJ2aWNlcyBjYW4gaGF2ZSBhIHRhc2sgZGVmaW5pdGlvbiB0aGF0IGRvZXNuJ3QgcmVmZXIgdG8gdGhlIHRhc2sgZGVmaW5pdGlvbiBiZWluZyB1cGRhdGVkLlxuICAgKiBXZSBoYXZlIHRvIGxvZyB0aGlzIGFzIGEgbm9uLWhvdHN3YXBwYWJsZSBjaGFuZ2UgdG8gdGhlIHRhc2sgZGVmaW5pdGlvbiwgYnV0IHdoZW4gd2UgZG8sXG4gICAqIHdlIHdpbmQgdXAgaG90c3dhcHBpbmcgdGhlIHRhc2sgZGVmaW5pdGlvbiBhbmQgbG9nZ2luZyBpdCBhcyBhIG5vbi1ob3Rzd2FwcGFibGUgY2hhbmdlLlxuICAgKlxuICAgKiBUaGlzIGxvZ2ljIHByZXZlbnRzIHVzIGZyb20gbG9nZ2luZyB0aGF0IGNoYW5nZSBhcyBub24taG90c3dhcHBhYmxlIHdoZW4gd2UgaG90c3dhcCBpdC5cbiAgICovXG4gIGlmIChob3Rzd2FwTW9kZSA9PT0gJ2hvdHN3YXAtb25seScpIHtcbiAgICByZWplY3RlZENoYW5nZXMgPSByZWplY3RlZENoYW5nZXMuZmlsdGVyKChjaGFuZ2UpID0+IGNoYW5nZS5ob3Rzd2FwT25seVZpc2libGUgPT09IHRydWUpO1xuXG4gICAgaWYgKHJlamVjdGVkQ2hhbmdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBjb25zdCBtZXNzYWdlcyA9IFsnJ107IC8vIHN0YXJ0IHdpdGggZW1wdHkgbGluZVxuXG4gIGlmIChob3Rzd2FwTW9kZSA9PT0gJ2hvdHN3YXAtb25seScpIHtcbiAgICBtZXNzYWdlcy5wdXNoKGZvcm1hdCgnJXMgJXMnLCBjaGFsay5yZWQoJ+KaoO+4jycpLCBjaGFsay5yZWQoJ1RoZSBmb2xsb3dpbmcgbm9uLWhvdHN3YXBwYWJsZSBjaGFuZ2VzIHdlcmUgZm91bmQuIFRvIHJlY29uY2lsZSB0aGVzZSB1c2luZyBDbG91ZEZvcm1hdGlvbiwgc3BlY2lmeSAtLWhvdHN3YXAtZmFsbGJhY2snKSkpO1xuICB9IGVsc2Uge1xuICAgIG1lc3NhZ2VzLnB1c2goZm9ybWF0KCclcyAlcycsIGNoYWxrLnJlZCgn4pqg77iPJyksIGNoYWxrLnJlZCgnVGhlIGZvbGxvd2luZyBub24taG90c3dhcHBhYmxlIGNoYW5nZXMgd2VyZSBmb3VuZDonKSkpO1xuICB9XG5cbiAgZm9yIChjb25zdCB7IGNoYW5nZSB9IG9mIHJlamVjdGVkQ2hhbmdlcykge1xuICAgIG1lc3NhZ2VzLnB1c2goJyAgICAnICsgbm9uSG90c3dhcHBhYmxlQ2hhbmdlTWVzc2FnZShjaGFuZ2UpKTtcbiAgfVxuICBtZXNzYWdlcy5wdXNoKCcnKTsgLy8gbmV3bGluZVxuXG4gIGF3YWl0IGlvU3Bhbi5kZWZhdWx0cy5pbmZvKG1lc3NhZ2VzLmpvaW4oJ1xcbicpKTtcbn1cblxuLyoqXG4gKiBGb3JtYXRzIGEgTm9uSG90c3dhcHBhYmxlQ2hhbmdlXG4gKi9cbmZ1bmN0aW9uIG5vbkhvdHN3YXBwYWJsZUNoYW5nZU1lc3NhZ2UoY2hhbmdlOiBOb25Ib3Rzd2FwcGFibGVDaGFuZ2UpOiBzdHJpbmcge1xuICBjb25zdCBzdWJqZWN0ID0gY2hhbmdlLnN1YmplY3Q7XG4gIGNvbnN0IHJlYXNvbiA9IGNoYW5nZS5kZXNjcmlwdGlvbiA/PyBjaGFuZ2UucmVhc29uO1xuXG4gIHN3aXRjaCAoc3ViamVjdC50eXBlKSB7XG4gICAgY2FzZSAnT3V0cHV0JzpcbiAgICAgIHJldHVybiBmb3JtYXQoXG4gICAgICAgICdvdXRwdXQ6ICVzLCByZWFzb246ICVzJyxcbiAgICAgICAgY2hhbGsuYm9sZChzdWJqZWN0LmxvZ2ljYWxJZCksXG4gICAgICAgIGNoYWxrLnJlZChyZWFzb24pLFxuICAgICAgKTtcbiAgICBjYXNlICdSZXNvdXJjZSc6XG4gICAgICByZXR1cm4gbm9uSG90c3dhcHBhYmxlUmVzb3VyY2VNZXNzYWdlKHN1YmplY3QsIHJlYXNvbik7XG4gIH1cbn1cblxuLyoqXG4gKiBGb3JtYXRzIGEgbm9uLWhvdHN3YXBwYWJsZSByZXNvdXJjZSBzdWJqZWN0XG4gKi9cbmZ1bmN0aW9uIG5vbkhvdHN3YXBwYWJsZVJlc291cmNlTWVzc2FnZShzdWJqZWN0OiBSZXNvdXJjZVN1YmplY3QsIHJlYXNvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHN1YmplY3QucmVqZWN0ZWRQcm9wZXJ0aWVzPy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZm9ybWF0KFxuICAgICAgJ3Jlc291cmNlOiAlcywgdHlwZTogJXMsIHJlamVjdGVkIGNoYW5nZXM6ICVzLCByZWFzb246ICVzJyxcbiAgICAgIGNoYWxrLmJvbGQoc3ViamVjdC5sb2dpY2FsSWQpLFxuICAgICAgY2hhbGsuYm9sZChzdWJqZWN0LnJlc291cmNlVHlwZSksXG4gICAgICBjaGFsay5ib2xkKHN1YmplY3QucmVqZWN0ZWRQcm9wZXJ0aWVzKSxcbiAgICAgIGNoYWxrLnJlZChyZWFzb24pLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gZm9ybWF0KFxuICAgICdyZXNvdXJjZTogJXMsIHR5cGU6ICVzLCByZWFzb246ICVzJyxcbiAgICBjaGFsay5ib2xkKHN1YmplY3QubG9naWNhbElkKSxcbiAgICBjaGFsay5ib2xkKHN1YmplY3QucmVzb3VyY2VUeXBlKSxcbiAgICBjaGFsay5yZWQocmVhc29uKSxcbiAgKTtcbn1cbiJdfQ==
524
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90c3dhcC1kZXBsb3ltZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhvdHN3YXAtZGVwbG95bWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUErR0Esb0RBMENDO0FBekpELCtCQUE4QjtBQUU5Qix1RUFBeUQ7QUFFekQsa0RBQTBCO0FBQzFCLDZDQUF1RDtBQUN2RCxxQ0FBZ0Q7QUFHaEQsc0RBQXdHO0FBQ3hHLDJFQUEwRTtBQUMxRSwrREFBNkU7QUFPN0UscUNBR2tCO0FBQ2xCLGlEQUFnRTtBQUNoRSxxRUFBK0Y7QUFDL0YseURBQXdFO0FBQ3hFLG1FQUdpQztBQUVqQywrREFBMkQ7QUFFM0QsMkNBQXlDO0FBRXpDLHNDQUFpQztBQUNqQyxxRUFBNEU7QUFFNUUsNkVBQTZFO0FBQzdFLDRHQUE0RztBQUM1RyxNQUFNLE1BQU0sR0FBNkIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBVzVELE1BQU0sa0JBQWtCLEdBQXVDO0lBQzdELFNBQVM7SUFDVCx1QkFBdUIsRUFBRSxxREFBa0M7SUFDM0Qsc0JBQXNCLEVBQUUscURBQWtDO0lBQzFELG9CQUFvQixFQUFFLHFEQUFrQztJQUV4RCxVQUFVO0lBQ1Ysd0JBQXdCLEVBQUUsdURBQTJCO0lBQ3JELHFDQUFxQyxFQUFFLHVEQUEyQjtJQUNsRSw2QkFBNkIsRUFBRSx1REFBMkI7SUFDMUQsc0JBQXNCLEVBQUUsdURBQTJCO0lBRW5ELDBCQUEwQixFQUFFLDZDQUE4QjtJQUMxRCx5QkFBeUIsRUFBRSwwREFBb0M7SUFDL0QsNkJBQTZCLEVBQUUsOERBQXNDO0lBQ3JFLGtCQUFrQixFQUFFLEtBQUssRUFDdkIsU0FBaUIsRUFDakIsTUFBc0IsRUFDdEIsbUJBQW1ELEVBQ3pCLEVBQUU7UUFDNUIsNEVBQTRFO1FBQzVFLElBQUksTUFBTSxJQUFBLGlFQUF5QyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsbUJB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Q0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQzdCLGVBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUNoQyxlQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUNsQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0IHR5cGUgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGknO1xuaW1wb3J0ICogYXMgY2ZuX2RpZmYgZnJvbSAnQGF3cy1jZGsvY2xvdWRmb3JtYXRpb24tZGlmZic7XG5pbXBvcnQgdHlwZSB7IFdhaXRlclJlc3VsdCB9IGZyb20gJ0BzbWl0aHkvdXRpbC13YWl0ZXInO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7IE5vbkhvdHN3YXBwYWJsZVJlYXNvbiB9IGZyb20gJy4uLy4uL3BheWxvYWRzJztcbmltcG9ydCB7IGZvcm1hdEVycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uL3V0aWwnO1xuaW1wb3J0IHR5cGUgeyBTREssIFNka1Byb3ZpZGVyIH0gZnJvbSAnLi4vYXdzLWF1dGgvcHJpdmF0ZSc7XG5pbXBvcnQgdHlwZSB7IENsb3VkRm9ybWF0aW9uU3RhY2ssIE5lc3RlZFN0YWNrVGVtcGxhdGVzIH0gZnJvbSAnLi4vY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgbG9hZEN1cnJlbnRUZW1wbGF0ZVdpdGhOZXN0ZWRTdGFja3MsIEV2YWx1YXRlQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZSB9IGZyb20gJy4uL2Nsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IGlzSG90c3dhcHBhYmxlQXBwU3luY0NoYW5nZSB9IGZyb20gJy4vYXBwc3luYy1tYXBwaW5nLXRlbXBsYXRlcyc7XG5pbXBvcnQgeyBpc0hvdHN3YXBwYWJsZUNvZGVCdWlsZFByb2plY3RDaGFuZ2UgfSBmcm9tICcuL2NvZGUtYnVpbGQtcHJvamVjdHMnO1xuaW1wb3J0IHR5cGUge1xuICBIb3Rzd2FwQ2hhbmdlLFxuICBIb3Rzd2FwT3BlcmF0aW9uLFxuICBSZWplY3RlZENoYW5nZSxcbiAgSG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzLFxufSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQge1xuICBJQ09OLFxuICBub25Ib3Rzd2FwcGFibGVSZXNvdXJjZSxcbn0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgaXNIb3Rzd2FwcGFibGVFY3NTZXJ2aWNlQ2hhbmdlIH0gZnJvbSAnLi9lY3Mtc2VydmljZXMnO1xuaW1wb3J0IHsgcmVhZEhvdHN3YXBUZW1wbGF0ZUNhY2hlLCB3cml0ZUhvdHN3YXBUZW1wbGF0ZUNhY2hlIH0gZnJvbSAnLi9ob3Rzd2FwLXRlbXBsYXRlLWNhY2hlJztcbmltcG9ydCB7IGlzSG90c3dhcHBhYmxlTGFtYmRhRnVuY3Rpb25DaGFuZ2UgfSBmcm9tICcuL2xhbWJkYS1mdW5jdGlvbnMnO1xuaW1wb3J0IHtcbiAgc2tpcENoYW5nZUZvclMzRGVwbG95Q3VzdG9tUmVzb3VyY2VQb2xpY3ksXG4gIGlzSG90c3dhcHBhYmxlUzNCdWNrZXREZXBsb3ltZW50Q2hhbmdlLFxufSBmcm9tICcuL3MzLWJ1Y2tldC1kZXBsb3ltZW50cyc7XG5pbXBvcnQgdHlwZSB7IEFmZmVjdGVkUmVzb3VyY2UsIEhvdHN3YXBSZXN1bHQsIFJlc291cmNlU3ViamVjdCwgUmVzb3VyY2VDaGFuZ2UsIE5vbkhvdHN3YXBwYWJsZUNoYW5nZSB9IGZyb20gJy4uLy4uL3BheWxvYWRzJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uL3Rvb2xraXQvdG9vbGtpdC1lcnJvcic7XG5pbXBvcnQgdHlwZSB7IFN1Y2Nlc3NmdWxEZXBsb3lTdGFja1Jlc3VsdCB9IGZyb20gJy4uL2RlcGxveW1lbnRzJztcbmltcG9ydCB7IElPLCBTUEFOIH0gZnJvbSAnLi4vaW8vcHJpdmF0ZSc7XG5pbXBvcnQgdHlwZSB7IElNZXNzYWdlU3BhbiwgSW9IZWxwZXIgfSBmcm9tICcuLi9pby9wcml2YXRlJztcbmltcG9ydCB7IE1vZGUgfSBmcm9tICcuLi9wbHVnaW4nO1xuaW1wb3J0IHsgaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UgfSBmcm9tICcuL2Nsb3VkLWNvbnRyb2wtcmVzb3VyY2UnO1xuXG4vLyBNdXN0IHVzZSBhIHJlcXVpcmUoKSBvdGhlcndpc2UgZXNidWlsZCBjb21wbGFpbnMgYWJvdXQgY2FsbGluZyBhIG5hbWVzcGFjZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHMsQHR5cGVzY3JpcHQtZXNsaW50L2NvbnNpc3RlbnQtdHlwZS1pbXBvcnRzXG5jb25zdCBwTGltaXQ6IHR5cGVvZiBpbXBvcnQoJ3AtbGltaXQnKSA9IHJlcXVpcmUoJ3AtbGltaXQnKTtcblxudHlwZSBIb3Rzd2FwRGV0ZWN0b3IgPSAoXG4gIGxvZ2ljYWxJZDogc3RyaW5nLFxuICBjaGFuZ2U6IFJlc291cmNlQ2hhbmdlLFxuICBldmFsdWF0ZUNmblRlbXBsYXRlOiBFdmFsdWF0ZUNsb3VkRm9ybWF0aW9uVGVtcGxhdGUsXG4gIGhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlczogSG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzLFxuKSA9PiBQcm9taXNlPEhvdHN3YXBDaGFuZ2VbXT47XG5cbnR5cGUgSG90c3dhcE1vZGUgPSAnaG90c3dhcC1vbmx5JyB8ICdmYWxsLWJhY2snO1xuXG5jb25zdCBSRVNPVVJDRV9ERVRFQ1RPUlM6IHsgW2tleTogc3RyaW5nXTogSG90c3dhcERldGVjdG9yIH0gPSB7XG4gIC8vIExhbWJkYVxuICAnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJzogaXNIb3Rzd2FwcGFibGVMYW1iZGFGdW5jdGlvbkNoYW5nZSxcbiAgJ0FXUzo6TGFtYmRhOjpWZXJzaW9uJzogaXNIb3Rzd2FwcGFibGVMYW1iZGFGdW5jdGlvbkNoYW5nZSxcbiAgJ0FXUzo6TGFtYmRhOjpBbGlhcyc6IGlzSG90c3dhcHBhYmxlTGFtYmRhRnVuY3Rpb25DaGFuZ2UsXG5cbiAgLy8gQXBwU3luY1xuICAnQVdTOjpBcHBTeW5jOjpSZXNvbHZlcic6IGlzSG90c3dhcHBhYmxlQXBwU3luY0NoYW5nZSxcbiAgJ0FXUzo6QXBwU3luYzo6RnVuY3Rpb25Db25maWd1cmF0aW9uJzogaXNIb3Rzd2FwcGFibGVBcHBTeW5jQ2hhbmdlLFxuICAnQVdTOjpBcHBTeW5jOjpHcmFwaFFMU2NoZW1hJzogaXNIb3Rzd2FwcGFibGVBcHBTeW5jQ2hhbmdlLFxuICAnQVdTOjpBcHBTeW5jOjpBcGlLZXknOiBpc0hvdHN3YXBwYWJsZUFwcFN5bmNDaGFuZ2UsXG5cbiAgJ0FXUzo6RUNTOjpUYXNrRGVmaW5pdGlvbic6IGlzSG90c3dhcHBhYmxlRWNzU2VydmljZUNoYW5nZSxcbiAgJ0FXUzo6Q29kZUJ1aWxkOjpQcm9qZWN0JzogaXNIb3Rzd2FwcGFibGVDb2RlQnVpbGRQcm9qZWN0Q2hhbmdlLFxuICAnQ3VzdG9tOjpDREtCdWNrZXREZXBsb3ltZW50JzogaXNIb3Rzd2FwcGFibGVTM0J1Y2tldERlcGxveW1lbnRDaGFuZ2UsXG4gICdBV1M6OklBTTo6UG9saWN5JzogYXN5bmMgKFxuICAgIGxvZ2ljYWxJZDogc3RyaW5nLFxuICAgIGNoYW5nZTogUmVzb3VyY2VDaGFuZ2UsXG4gICAgZXZhbHVhdGVDZm5UZW1wbGF0ZTogRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlLFxuICApOiBQcm9taXNlPEhvdHN3YXBDaGFuZ2VbXT4gPT4ge1xuICAgIC8vIElmIHRoZSBwb2xpY3kgaXMgZm9yIGEgUzNCdWNrZXREZXBsb3ltZW50Q2hhbmdlLCB3ZSBjYW4gaWdub3JlIHRoZSBjaGFuZ2VcbiAgICBpZiAoYXdhaXQgc2tpcENoYW5nZUZvclMzRGVwbG95Q3VzdG9tUmVzb3VyY2VQb2xpY3kobG9naWNhbElkLCBjaGFuZ2UsIGV2YWx1YXRlQ2ZuVGVtcGxhdGUpKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIFtub25Ib3Rzd2FwcGFibGVSZXNvdXJjZShjaGFuZ2UpXTtcbiAgfSxcblxuICAnQVdTOjpDREs6Ok1ldGFkYXRhJzogYXN5bmMgKCkgPT4gW10sXG5cbiAgLy8gUmVzb3VyY2VzIHRoYXQgdXNlIENDQVBJU1xuICAnQVdTOjpBcGlHYXRld2F5OjpSZXN0QXBpJzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG4gICdBV1M6OkFwaUdhdGV3YXk6OkRlcGxveW1lbnQnOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6QXBpR2F0ZXdheTo6TWV0aG9kJzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG4gICdBV1M6OkFwaUdhdGV3YXlWMjo6QXBpJzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG4gICdBV1M6OkFwaUdhdGV3YXlWMjo6SW50ZWdyYXRpb24nOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6QmVkcm9jazo6QWdlbnQnOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6RXZlbnRzOjpSdWxlJzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG4gICdBV1M6OkR5bmFtb0RCOjpUYWJsZSc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpEeW5hbW9EQjo6R2xvYmFsVGFibGUnOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6U1FTOjpRdWV1ZSc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpDbG91ZFdhdGNoOjpBbGFybSc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpDbG91ZFdhdGNoOjpDb21wb3NpdGVBbGFybSc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpDbG91ZFdhdGNoOjpEYXNoYm9hcmQnOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6U3RlcEZ1bmN0aW9uczo6U3RhdGVNYWNoaW5lJzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG4gICdBV1M6OkJlZHJvY2tBZ2VudENvcmU6OlJ1bnRpbWUnOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcblxuICAvLyBRdWlja1NpZ2h0XG4gICdBV1M6OlF1aWNrU2lnaHQ6OkRhc2hib2FyZCc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpRdWlja1NpZ2h0OjpBbmFseXNpcyc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpRdWlja1NpZ2h0OjpUZW1wbGF0ZSc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpRdWlja1NpZ2h0OjpEYXRhU2V0JzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG4gICdBV1M6OlF1aWNrU2lnaHQ6OkRhdGFTb3VyY2UnOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbn07XG5cbi8qKlxuICogUGVyZm9ybSBhIGhvdHN3YXAgZGVwbG95bWVudCwgc2hvcnQtY2lyY3VpdGluZyBDbG91ZEZvcm1hdGlvbiBpZiBwb3NzaWJsZS5cbiAqIElmIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHNob3J0LWNpcmN1aXQgdGhlIGRlcGxveW1lbnRcbiAqIChiZWNhdXNlIHRoZSBDREsgU3RhY2sgY29udGFpbnMgY2hhbmdlcyB0aGF0IGNhbm5vdCBiZSBkZXBsb3llZCB3aXRob3V0IENsb3VkRm9ybWF0aW9uKSxcbiAqIHJldHVybnMgYHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cnlIb3Rzd2FwRGVwbG95bWVudChcbiAgc2RrUHJvdmlkZXI6IFNka1Byb3ZpZGVyLFxuICBpb0hlbHBlcjogSW9IZWxwZXIsXG4gIGFzc2V0UGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuICBjbG91ZEZvcm1hdGlvblN0YWNrOiBDbG91ZEZvcm1hdGlvblN0YWNrLFxuICBzdGFja0FydGlmYWN0OiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QsXG4gIGhvdHN3YXBNb2RlOiBIb3Rzd2FwTW9kZSxcbiAgaG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzOiBIb3Rzd2FwUHJvcGVydHlPdmVycmlkZXMsXG4pOiBQcm9taXNlPFN1Y2Nlc3NmdWxEZXBsb3lTdGFja1Jlc3VsdCB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCBob3Rzd2FwU3BhbiA9IGF3YWl0IGlvSGVscGVyLnNwYW4oU1BBTi5IT1RTV0FQKS5iZWdpbih7XG4gICAgc3RhY2s6IHN0YWNrQXJ0aWZhY3QsXG4gICAgbW9kZTogaG90c3dhcE1vZGUsXG4gIH0pO1xuXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGhvdHN3YXBEZXBsb3ltZW50KFxuICAgIHNka1Byb3ZpZGVyLFxuICAgIGhvdHN3YXBTcGFuLFxuICAgIGFzc2V0UGFyYW1zLFxuICAgIHN0YWNrQXJ0aWZhY3QsXG4gICAgaG90c3dhcE1vZGUsXG4gICAgaG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzLFxuICApO1xuXG4gIGF3YWl0IGhvdHN3YXBTcGFuLmVuZChyZXN1bHQpO1xuXG4gIC8vIFRoaXMgaXMgYSBob3Rzd2FwIGVycm9yIHRoYXQgd2FzIGNhdWdodCBkdXJpbmcgdGhlIGhvdHN3YXBEZXBsb3ltZW50IGZ1bmN0aW9uXG4gIC8vIEl0IGlzIHRocm93biBhZnRlciB0aGUgaG90c3dhcCBzcGFuIGVuZHMgc28gaXQgY2FuIGJlIHJlcG9ydGVkIHRvIHRlbGVtZXRyeVxuICBpZiAocmVzdWx0LmVycm9yKSB7XG4gICAgdGhyb3cgcmVzdWx0LmVycm9yO1xuICB9XG5cbiAgaWYgKHJlc3VsdD8uaG90c3dhcHBlZCA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnZGlkLWRlcGxveS1zdGFjaycsXG4gICAgICBub09wOiByZXN1bHQuaG90c3dhcHBhYmxlQ2hhbmdlcy5sZW5ndGggPT09IDAsXG4gICAgICBzdGFja0FybjogY2xvdWRGb3JtYXRpb25TdGFjay5zdGFja0lkLFxuICAgICAgb3V0cHV0czogY2xvdWRGb3JtYXRpb25TdGFjay5vdXRwdXRzLFxuICAgICAgZGVsZXRlRmFpbHVyZXM6IFtdLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFBlcmZvcm0gYSBob3Rzd2FwIGRlcGxveW1lbnQsIHNob3J0LWNpcmN1aXRpbmcgQ2xvdWRGb3JtYXRpb24gaWYgcG9zc2libGUuXG4gKiBSZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhdHRlbXB0ZWQgaG90c3dhcCBkZXBsb3ltZW50XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGhvdHN3YXBEZXBsb3ltZW50KFxuICBzZGtQcm92aWRlcjogU2RrUHJvdmlkZXIsXG4gIGlvU3BhbjogSU1lc3NhZ2VTcGFuPGFueT4sXG4gIGFzc2V0UGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuICBzdGFjazogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0LFxuICBob3Rzd2FwTW9kZTogSG90c3dhcE1vZGUsXG4gIGhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlczogSG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzLFxuKTogUHJvbWlzZTxPbWl0PEhvdHN3YXBSZXN1bHQsICdkdXJhdGlvbic+PiB7XG4gIC8vIHJlc29sdmUgdGhlIGVudmlyb25tZW50LCBzbyB3ZSBjYW4gc3Vic3RpdHV0ZSB0aGluZ3MgbGlrZSBBV1M6OlJlZ2lvbiBpbiBDRk4gZXhwcmVzc2lvbnNcbiAgY29uc3QgcmVzb2x2ZWRFbnYgPSBhd2FpdCBzZGtQcm92aWRlci5yZXNvbHZlRW52aXJvbm1lbnQoc3RhY2suZW52aXJvbm1lbnQpO1xuICAvLyBjcmVhdGUgYSBuZXcgU0RLIHVzaW5nIHRoZSBDTEkgY3JlZGVudGlhbHMsIGJlY2F1c2UgdGhlIGRlZmF1bHQgb25lIHdpbGwgbm90IHdvcmsgZm9yIG5ldy1zdHlsZSBzeW50aGVzaXMgLVxuICAvLyBpdCBhc3N1bWVzIHRoZSBib290c3RyYXAgZGVwbG95IFJvbGUsIHdoaWNoIGRvZXNuJ3QgaGF2ZSBwZXJtaXNzaW9ucyB0byB1cGRhdGUgTGFtYmRhIGZ1bmN0aW9uc1xuICBjb25zdCBzZGsgPSAoYXdhaXQgc2RrUHJvdmlkZXIuZm9yRW52aXJvbm1lbnQocmVzb2x2ZWRFbnYsIE1vZGUuRm9yV3JpdGluZykpLnNkaztcblxuICAvLyBDaGVjayBmb3IgYSBjYWNoZWQgdGVtcGxhdGUgZnJvbSBhIHByZXZpb3VzIGhvdHN3YXAgZGVwbG95bWVudC5cbiAgLy8gVXNlIGlmIGF2YWlsYWJsZSwgcmVwcmVzZW50cyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgcmVzb3VyY2VzIGludm9sdmVkIGluIGhvdHN3YXAuXG4gIGNvbnN0IGhvdHN3YXBDYWNoZSA9IGF3YWl0IHJlYWRIb3Rzd2FwVGVtcGxhdGVDYWNoZShzdGFjay5hc3NlbWJseS5kaXJlY3RvcnksIHN0YWNrLnN0YWNrTmFtZSwgc3RhY2sudGVtcGxhdGUpO1xuICBjb25zdCBjdXJyZW50VGVtcGxhdGUgPSBob3Rzd2FwQ2FjaGUgPz8gYXdhaXQgbG9hZEN1cnJlbnRUZW1wbGF0ZVdpdGhOZXN0ZWRTdGFja3Moc3RhY2ssIHNkayk7XG5cbiAgY29uc3QgZXZhbHVhdGVDZm5UZW1wbGF0ZSA9IG5ldyBFdmFsdWF0ZUNsb3VkRm9ybWF0aW9uVGVtcGxhdGUoe1xuICAgIHN0YWNrQXJ0aWZhY3Q6IHN0YWNrLFxuICAgIHBhcmFtZXRlcnM6IGFzc2V0UGFyYW1zLFxuICAgIGFjY291bnQ6IHJlc29sdmVkRW52LmFjY291bnQsXG4gICAgcmVnaW9uOiByZXNvbHZlZEVudi5yZWdpb24sXG4gICAgcGFydGl0aW9uOiAoYXdhaXQgc2RrLmN1cnJlbnRBY2NvdW50KCkpLnBhcnRpdGlvbixcbiAgICBzZGssXG4gICAgbmVzdGVkU3RhY2tzOiBjdXJyZW50VGVtcGxhdGUubmVzdGVkU3RhY2tzLFxuICB9KTtcblxuICBjb25zdCBzdGFja0NoYW5nZXMgPSBjZm5fZGlmZi5mdWxsRGlmZihjdXJyZW50VGVtcGxhdGUuZGVwbG95ZWRSb290VGVtcGxhdGUsIHN0YWNrLnRlbXBsYXRlKTtcbiAgY29uc3QgeyBob3Rzd2FwcGFibGUsIG5vbkhvdHN3YXBwYWJsZSB9ID0gYXdhaXQgY2xhc3NpZnlSZXNvdXJjZUNoYW5nZXMoXG4gICAgc3RhY2tDaGFuZ2VzLFxuICAgIGV2YWx1YXRlQ2ZuVGVtcGxhdGUsXG4gICAgc2RrLFxuICAgIGN1cnJlbnRUZW1wbGF0ZS5uZXN0ZWRTdGFja3MsIGhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlcyxcbiAgKTtcblxuICBhd2FpdCBsb2dSZWplY3RlZENoYW5nZXMoaW9TcGFuLCBub25Ib3Rzd2FwcGFibGUsIGhvdHN3YXBNb2RlKTtcblxuICBjb25zdCBob3Rzd2FwcGFibGVDaGFuZ2VzID0gaG90c3dhcHBhYmxlLm1hcChvID0+IG8uY2hhbmdlKTtcbiAgY29uc3Qgbm9uSG90c3dhcHBhYmxlQ2hhbmdlcyA9IG5vbkhvdHN3YXBwYWJsZS5tYXAobiA9PiBuLmNoYW5nZSk7XG5cbiAgYXdhaXQgaW9TcGFuLm5vdGlmeShJTy5DREtfVE9PTEtJVF9JNTQwMS5tc2coJ0hvdHN3YXAgcGxhbiBjcmVhdGVkJywge1xuICAgIHN0YWNrLFxuICAgIG1vZGU6IGhvdHN3YXBNb2RlLFxuICAgIGhvdHN3YXBwYWJsZUNoYW5nZXMsXG4gICAgbm9uSG90c3dhcHBhYmxlQ2hhbmdlcyxcbiAgfSkpO1xuXG4gIC8vIHByZXNlcnZlIGNsYXNzaWMgaG90c3dhcCBiZWhhdmlvclxuICBpZiAoaG90c3dhcE1vZGUgPT09ICdmYWxsLWJhY2snKSB7XG4gICAgaWYgKG5vbkhvdHN3YXBwYWJsZUNoYW5nZXMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhY2ssXG4gICAgICAgIG1vZGU6IGhvdHN3YXBNb2RlLFxuICAgICAgICBob3Rzd2FwcGVkOiBmYWxzZSxcbiAgICAgICAgaG90c3dhcEZhbGxiYWNrOiB0cnVlLFxuICAgICAgICBob3Rzd2FwcGFibGVDaGFuZ2VzLFxuICAgICAgICBub25Ib3Rzd2FwcGFibGVDaGFuZ2VzLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvLyBhcHBseSB0aGUgc2hvcnQtY2lyY3VpdGFibGUgY2hhbmdlc1xuICBsZXQgZXJyb3I6IEVycm9yIHwgdW5kZWZpbmVkO1xuICB0cnkge1xuICAgIGF3YWl0IGFwcGx5QWxsSG90c3dhcE9wZXJhdGlvbnMoc2RrLCBpb1NwYW4sIGhvdHN3YXBwYWJsZSk7XG4gICAgLy8gQ2FjaGUgdGhlIHN5bnRoZXNpemVkIHRlbXBsYXRlIHNvIHRoZSBuZXh0IGhvdHN3YXAgZGlmZnMgYWdhaW5zdCBpdFxuICAgIGF3YWl0IHdyaXRlSG90c3dhcFRlbXBsYXRlQ2FjaGUoc3RhY2suYXNzZW1ibHkuZGlyZWN0b3J5LCBzdGFjay5zdGFja05hbWUsIHN0YWNrLnRlbXBsYXRlLCBjdXJyZW50VGVtcGxhdGUubmVzdGVkU3RhY2tzKTtcbiAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgZXJyb3IgPSBlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFjayxcbiAgICBtb2RlOiBob3Rzd2FwTW9kZSxcbiAgICBob3Rzd2FwcGVkOiAhZXJyb3IsXG4gICAgaG90c3dhcEZhbGxiYWNrOiBmYWxzZSxcbiAgICBob3Rzd2FwcGFibGVDaGFuZ2VzLFxuICAgIG5vbkhvdHN3YXBwYWJsZUNoYW5nZXMsXG4gICAgZXJyb3IsXG4gIH07XG59XG5cbmludGVyZmFjZSBDbGFzc2lmaWVkQ2hhbmdlcyB7XG4gIGhvdHN3YXBwYWJsZTogSG90c3dhcE9wZXJhdGlvbltdO1xuICBub25Ib3Rzd2FwcGFibGU6IFJlamVjdGVkQ2hhbmdlW107XG59XG5cbi8qKlxuICogQ2xhc3NpZmllcyBhbGwgY2hhbmdlcyB0byBhbGwgcmVzb3VyY2VzIGFzIGVpdGhlciBob3Rzd2FwcGFibGUgb3Igbm90LlxuICogTWV0YWRhdGEgY2hhbmdlcyBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgbGlzdCBvZiAobm9uKWhvdHN3YXBwYWJsZSByZXNvdXJjZXMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNsYXNzaWZ5UmVzb3VyY2VDaGFuZ2VzKFxuICBzdGFja0NoYW5nZXM6IGNmbl9kaWZmLlRlbXBsYXRlRGlmZixcbiAgZXZhbHVhdGVDZm5UZW1wbGF0ZTogRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlLFxuICBzZGs6IFNESyxcbiAgbmVzdGVkU3RhY2tOYW1lczogeyBbbmVzdGVkU3RhY2tOYW1lOiBzdHJpbmddOiBOZXN0ZWRTdGFja1RlbXBsYXRlcyB9LFxuICBob3Rzd2FwUHJvcGVydHlPdmVycmlkZXM6IEhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlcyxcbik6IFByb21pc2U8Q2xhc3NpZmllZENoYW5nZXM+IHtcbiAgY29uc3QgcmVzb3VyY2VEaWZmZXJlbmNlcyA9IGdldFN0YWNrUmVzb3VyY2VEaWZmZXJlbmNlcyhzdGFja0NoYW5nZXMpO1xuXG4gIGNvbnN0IHByb21pc2VzOiBBcnJheTwoKSA9PiBQcm9taXNlPEhvdHN3YXBDaGFuZ2VbXT4+ID0gW107XG4gIGNvbnN0IGhvdHN3YXBwYWJsZVJlc291cmNlcyA9IG5ldyBBcnJheTxIb3Rzd2FwT3BlcmF0aW9uPigpO1xuICBjb25zdCBub25Ib3Rzd2FwcGFibGVSZXNvdXJjZXMgPSBuZXcgQXJyYXk8UmVqZWN0ZWRDaGFuZ2U+KCk7XG4gIGNvbnN0IG5lc3RlZFN0YWNrVGFza3M6IEFycmF5PFByb21pc2U8Q2xhc3NpZmllZENoYW5nZXM+PiA9IFtdO1xuICBjb25zdCBsaW1pdCA9IHBMaW1pdCgxMCk7XG5cbiAgZm9yIChjb25zdCBsb2dpY2FsSWQgb2YgT2JqZWN0LmtleXMoc3RhY2tDaGFuZ2VzLm91dHB1dHMuY2hhbmdlcykpIHtcbiAgICBub25Ib3Rzd2FwcGFibGVSZXNvdXJjZXMucHVzaCh7XG4gICAgICBob3Rzd2FwcGFibGU6IGZhbHNlLFxuICAgICAgY2hhbmdlOiB7XG4gICAgICAgIHJlYXNvbjogTm9uSG90c3dhcHBhYmxlUmVhc29uLk9VVFBVVCxcbiAgICAgICAgZGVzY3JpcHRpb246ICdvdXRwdXQgd2FzIGNoYW5nZWQnLFxuICAgICAgICBzdWJqZWN0OiB7XG4gICAgICAgICAgdHlwZTogJ091dHB1dCcsXG4gICAgICAgICAgbG9naWNhbElkLFxuICAgICAgICAgIG1ldGFkYXRhOiBldmFsdWF0ZUNmblRlbXBsYXRlLm1ldGFkYXRhRm9yKGxvZ2ljYWxJZCksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIC8vIGdhdGhlciB0aGUgcmVzdWx0cyBvZiB0aGUgZGV0ZWN0b3IgZnVuY3Rpb25zXG4gIGZvciAoY29uc3QgW2xvZ2ljYWxJZCwgY2hhbmdlXSBvZiBPYmplY3QuZW50cmllcyhyZXNvdXJjZURpZmZlcmVuY2VzKSkge1xuICAgIGlmIChjaGFuZ2UubmV3VmFsdWU/LlR5cGUgPT09ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycgJiYgY2hhbmdlLm9sZFZhbHVlPy5UeXBlID09PSAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snKSB7XG4gICAgICBuZXN0ZWRTdGFja1Rhc2tzLnB1c2gobGltaXQoKCkgPT4gZmluZE5lc3RlZEhvdHN3YXBwYWJsZUNoYW5nZXMoXG4gICAgICAgIGxvZ2ljYWxJZCxcbiAgICAgICAgY2hhbmdlLFxuICAgICAgICBuZXN0ZWRTdGFja05hbWVzLFxuICAgICAgICBldmFsdWF0ZUNmblRlbXBsYXRlLFxuICAgICAgICBzZGssXG4gICAgICAgIGhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlcyxcbiAgICAgICkpKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGhvdHN3YXBwYWJsZUNoYW5nZUNhbmRpZGF0ZSA9IGlzQ2FuZGlkYXRlRm9ySG90c3dhcHBpbmcobG9naWNhbElkLCBjaGFuZ2UsIGV2YWx1YXRlQ2ZuVGVtcGxhdGUpO1xuICAgIC8vIHdlIGRvbid0IG5lZWQgdG8gcnVuIHRoaXMgdGhyb3VnaCB0aGUgZGV0ZWN0b3IgZnVuY3Rpb25zLCB3ZSBjYW4gYWxyZWFkeSBqdWRnZSB0aGlzXG4gICAgaWYgKCdob3Rzd2FwcGFibGUnIGluIGhvdHN3YXBwYWJsZUNoYW5nZUNhbmRpZGF0ZSkge1xuICAgICAgaWYgKCFob3Rzd2FwcGFibGVDaGFuZ2VDYW5kaWRhdGUuaG90c3dhcHBhYmxlKSB7XG4gICAgICAgIG5vbkhvdHN3YXBwYWJsZVJlc291cmNlcy5wdXNoKGhvdHN3YXBwYWJsZUNoYW5nZUNhbmRpZGF0ZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc291cmNlVHlwZTogc3RyaW5nID0gaG90c3dhcHBhYmxlQ2hhbmdlQ2FuZGlkYXRlLm5ld1ZhbHVlLlR5cGU7XG4gICAgaWYgKHJlc291cmNlVHlwZSBpbiBSRVNPVVJDRV9ERVRFQ1RPUlMpIHtcbiAgICAgIC8vIHJ1biBkZXRlY3RvciBmdW5jdGlvbnMgbGF6aWx5IHRvIHByZXZlbnQgdW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uc1xuICAgICAgcHJvbWlzZXMucHVzaCgoKSA9PlxuICAgICAgICBSRVNPVVJDRV9ERVRFQ1RPUlNbcmVzb3VyY2VUeXBlXShsb2dpY2FsSWQsIGhvdHN3YXBwYWJsZUNoYW5nZUNhbmRpZGF0ZSwgZXZhbHVhdGVDZm5UZW1wbGF0ZSwgaG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vbkhvdHN3YXBwYWJsZVJlc291cmNlcy5wdXNoKG5vbkhvdHN3YXBwYWJsZVJlc291cmNlKGhvdHN3YXBwYWJsZUNoYW5nZUNhbmRpZGF0ZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHJlc29sdmUgYWxsIG5lc3RlZCBzdGFjayBhbmQgZGV0ZWN0b3IgcmVzdWx0cyBpbiBwYXJhbGxlbFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGNka2xhYnMvcHJvbWlzZWFsbC1uby11bmJvdW5kZWQtcGFyYWxsZWxpc21cbiAgY29uc3QgbmVzdGVkUmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKG5lc3RlZFN0YWNrVGFza3MpO1xuICBmb3IgKGNvbnN0IG5lc3RlZCBvZiBuZXN0ZWRSZXN1bHRzKSB7XG4gICAgaG90c3dhcHBhYmxlUmVzb3VyY2VzLnB1c2goLi4ubmVzdGVkLmhvdHN3YXBwYWJsZSk7XG4gICAgbm9uSG90c3dhcHBhYmxlUmVzb3VyY2VzLnB1c2goLi4ubmVzdGVkLm5vbkhvdHN3YXBwYWJsZSk7XG4gIH1cblxuICBjb25zdCBjaGFuZ2VzRGV0ZWN0aW9uUmVzdWx0czogQXJyYXk8SG90c3dhcENoYW5nZVtdPiA9IFtdO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGNka2xhYnMvcHJvbWlzZWFsbC1uby11bmJvdW5kZWQtcGFyYWxsZWxpc21cbiAgY29uc3QgZGV0ZWN0b3JSZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMubWFwKChmbikgPT4gbGltaXQoZm4pKSk7XG4gIGZvciAoY29uc3QgaG90c3dhcERldGVjdGlvblJlc3VsdHMgb2YgZGV0ZWN0b3JSZXN1bHRzKSB7XG4gICAgY2hhbmdlc0RldGVjdGlvblJlc3VsdHMucHVzaChob3Rzd2FwRGV0ZWN0aW9uUmVzdWx0cyk7XG4gIH1cblxuICBmb3IgKGNvbnN0IHJlc291cmNlRGV0ZWN0aW9uUmVzdWx0cyBvZiBjaGFuZ2VzRGV0ZWN0aW9uUmVzdWx0cykge1xuICAgIGZvciAoY29uc3QgcHJvcGVydHlSZXN1bHQgb2YgcmVzb3VyY2VEZXRlY3Rpb25SZXN1bHRzKSB7XG4gICAgICBwcm9wZXJ0eVJlc3VsdC5ob3Rzd2FwcGFibGVcbiAgICAgICAgPyBob3Rzd2FwcGFibGVSZXNvdXJjZXMucHVzaChwcm9wZXJ0eVJlc3VsdClcbiAgICAgICAgOiBub25Ib3Rzd2FwcGFibGVSZXNvdXJjZXMucHVzaChwcm9wZXJ0eVJlc3VsdCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBob3Rzd2FwcGFibGU6IGhvdHN3YXBwYWJsZVJlc291cmNlcyxcbiAgICBub25Ib3Rzd2FwcGFibGU6IG5vbkhvdHN3YXBwYWJsZVJlc291cmNlcyxcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFsbCBjaGFuZ2VzIHRvIHJlc291cmNlcyBpbiB0aGUgZ2l2ZW4gU3RhY2suXG4gKlxuICogQHBhcmFtIHN0YWNrQ2hhbmdlcyAtIHRoZSBjb2xsZWN0aW9uIG9mIGFsbCBjaGFuZ2VzIHRvIGEgZ2l2ZW4gU3RhY2tcbiAqL1xuZnVuY3Rpb24gZ2V0U3RhY2tSZXNvdXJjZURpZmZlcmVuY2VzKHN0YWNrQ2hhbmdlczogY2ZuX2RpZmYuVGVtcGxhdGVEaWZmKToge1xuICBbbG9naWNhbElkOiBzdHJpbmddOiBjZm5fZGlmZi5SZXNvdXJjZURpZmZlcmVuY2U7XG59IHtcbiAgLy8gd2UgbmVlZCB0byBjb2xsYXBzZSBsb2dpY2FsIElEIHJlbmFtZSBjaGFuZ2VzIGludG8gb25lIGNoYW5nZSxcbiAgLy8gYXMgdGhleSBhcmUgcmVwcmVzZW50ZWQgaW4gc3RhY2tDaGFuZ2VzIGFzIGEgcGFpciBvZiB0d28gY2hhbmdlczogb25lIGFkZGl0aW9uIGFuZCBvbmUgcmVtb3ZhbFxuICBjb25zdCBhbGxSZXNvdXJjZUNoYW5nZXM6IHsgW2xvZ0lkOiBzdHJpbmddOiBjZm5fZGlmZi5SZXNvdXJjZURpZmZlcmVuY2UgfSA9IHN0YWNrQ2hhbmdlcy5yZXNvdXJjZXMuY2hhbmdlcztcbiAgY29uc3QgYWxsUmVtb3ZhbENoYW5nZXMgPSBmaWx0ZXJEaWN0KGFsbFJlc291cmNlQ2hhbmdlcywgKHJlc0NoYW5nZSkgPT4gcmVzQ2hhbmdlLmlzUmVtb3ZhbCk7XG4gIGNvbnN0IGFsbE5vblJlbW92YWxDaGFuZ2VzID0gZmlsdGVyRGljdChhbGxSZXNvdXJjZUNoYW5nZXMsIChyZXNDaGFuZ2UpID0+ICFyZXNDaGFuZ2UuaXNSZW1vdmFsKTtcbiAgZm9yIChjb25zdCBbbG9nSWQsIG5vblJlbW92YWxDaGFuZ2VdIG9mIE9iamVjdC5lbnRyaWVzKGFsbE5vblJlbW92YWxDaGFuZ2VzKSkge1xuICAgIGlmIChub25SZW1vdmFsQ2hhbmdlLmlzQWRkaXRpb24pIHtcbiAgICAgIGNvbnN0IGFkZENoYW5nZSA9IG5vblJlbW92YWxDaGFuZ2U7XG4gICAgICAvLyBzZWFyY2ggZm9yIGFuIGlkZW50aWNhbCByZW1vdmFsIGNoYW5nZVxuICAgICAgY29uc3QgaWRlbnRpY2FsUmVtb3ZhbENoYW5nZSA9IE9iamVjdC5lbnRyaWVzKGFsbFJlbW92YWxDaGFuZ2VzKS5maW5kKChbXywgcmVtQ2hhbmdlXSkgPT4ge1xuICAgICAgICByZXR1cm4gY2hhbmdlc0FyZUZvclNhbWVSZXNvdXJjZShyZW1DaGFuZ2UsIGFkZENoYW5nZSk7XG4gICAgICB9KTtcbiAgICAgIC8vIGlmIHdlIGZvdW5kIG9uZSwgdGhlbiB0aGlzIG1lYW5zIHRoaXMgaXMgYSByZW5hbWUgY2hhbmdlXG4gICAgICBpZiAoaWRlbnRpY2FsUmVtb3ZhbENoYW5nZSkge1xuICAgICAgICBjb25zdCBbcmVtb3ZlZExvZ0lkLCByZW1vdmVkUmVzb3VyY2VDaGFuZ2VdID0gaWRlbnRpY2FsUmVtb3ZhbENoYW5nZTtcbiAgICAgICAgYWxsTm9uUmVtb3ZhbENoYW5nZXNbbG9nSWRdID0gbWFrZVJlbmFtZURpZmZlcmVuY2UocmVtb3ZlZFJlc291cmNlQ2hhbmdlLCBhZGRDaGFuZ2UpO1xuICAgICAgICAvLyBkZWxldGUgdGhlIHJlbW92YWwgY2hhbmdlIHRoYXQgZm9ybXMgdGhlIHJlbmFtZSBwYWlyXG4gICAgICAgIGRlbGV0ZSBhbGxSZW1vdmFsQ2hhbmdlc1tyZW1vdmVkTG9nSWRdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyB0aGUgZmluYWwgcmVzdWx0IGFyZSBhbGwgb2YgdGhlIHJlbWFpbmluZyByZW1vdmFsIGNoYW5nZXMsXG4gIC8vIHBsdXMgYWxsIG9mIHRoZSBub24tcmVtb3ZhbCBjaGFuZ2VzXG4gIC8vICh3ZSBzYXZlZCB0aGUgcmVuYW1lIGNoYW5nZXMgaW4gdGhhdCBvYmplY3QgYWxyZWFkeSlcbiAgcmV0dXJuIHtcbiAgICAuLi5hbGxSZW1vdmFsQ2hhbmdlcyxcbiAgICAuLi5hbGxOb25SZW1vdmFsQ2hhbmdlcyxcbiAgfTtcbn1cblxuLyoqIEZpbHRlcnMgYW4gb2JqZWN0IHdpdGggc3RyaW5nIGtleXMgYmFzZWQgb24gd2hldGhlciB0aGUgY2FsbGJhY2sgcmV0dXJucyAndHJ1ZScgZm9yIHRoZSBnaXZlbiB2YWx1ZSBpbiB0aGUgb2JqZWN0LiAqL1xuZnVuY3Rpb24gZmlsdGVyRGljdDxUPihkaWN0OiB7IFtrZXk6IHN0cmluZ106IFQgfSwgZnVuYzogKHQ6IFQpID0+IGJvb2xlYW4pOiB7IFtrZXk6IHN0cmluZ106IFQgfSB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhkaWN0KS5yZWR1Y2UoXG4gICAgKGFjYywgW2tleSwgdF0pID0+IHtcbiAgICAgIGlmIChmdW5jKHQpKSB7XG4gICAgICAgIGFjY1trZXldID0gdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSxcbiAgICB7fSBhcyB7IFtrZXk6IHN0cmluZ106IFQgfSxcbiAgKTtcbn1cblxuLyoqIEZpbmRzIGFueSBob3Rzd2FwcGFibGUgY2hhbmdlcyBpbiBhbGwgbmVzdGVkIHN0YWNrcy4gKi9cbmFzeW5jIGZ1bmN0aW9uIGZpbmROZXN0ZWRIb3Rzd2FwcGFibGVDaGFuZ2VzKFxuICBsb2dpY2FsSWQ6IHN0cmluZyxcbiAgY2hhbmdlOiBjZm5fZGlmZi5SZXNvdXJjZURpZmZlcmVuY2UsXG4gIG5lc3RlZFN0YWNrVGVtcGxhdGVzOiB7IFtuZXN0ZWRTdGFja05hbWU6IHN0cmluZ106IE5lc3RlZFN0YWNrVGVtcGxhdGVzIH0sXG4gIGV2YWx1YXRlQ2ZuVGVtcGxhdGU6IEV2YWx1YXRlQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZSxcbiAgc2RrOiBTREssXG4gIGhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlczogSG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzLFxuKTogUHJvbWlzZTxDbGFzc2lmaWVkQ2hhbmdlcz4ge1xuICBjb25zdCBuZXN0ZWRTdGFjayA9IG5lc3RlZFN0YWNrVGVtcGxhdGVzW2xvZ2ljYWxJZF07XG4gIGlmICghbmVzdGVkU3RhY2sucGh5c2ljYWxOYW1lKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhvdHN3YXBwYWJsZTogW10sXG4gICAgICBub25Ib3Rzd2FwcGFibGU6IFtcbiAgICAgICAge1xuICAgICAgICAgIGhvdHN3YXBwYWJsZTogZmFsc2UsXG4gICAgICAgICAgY2hhbmdlOiB7XG4gICAgICAgICAgICByZWFzb246IE5vbkhvdHN3YXBwYWJsZVJlYXNvbi5ORVNURURfU1RBQ0tfQ1JFQVRJT04sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ25ld2x5IGNyZWF0ZWQgbmVzdGVkIHN0YWNrcyBjYW5ub3QgYmUgaG90c3dhcHBlZCcsXG4gICAgICAgICAgICBzdWJqZWN0OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdSZXNvdXJjZScsXG4gICAgICAgICAgICAgIGxvZ2ljYWxJZCxcbiAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgICAgICAgICBtZXRhZGF0YTogZXZhbHVhdGVDZm5UZW1wbGF0ZS5tZXRhZGF0YUZvcihsb2dpY2FsSWQpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgZXZhbHVhdGVOZXN0ZWRDZm5UZW1wbGF0ZSA9IGF3YWl0IGV2YWx1YXRlQ2ZuVGVtcGxhdGUuY3JlYXRlTmVzdGVkRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlKFxuICAgIG5lc3RlZFN0YWNrLnBoeXNpY2FsTmFtZSxcbiAgICBuZXN0ZWRTdGFjay5nZW5lcmF0ZWRUZW1wbGF0ZSxcbiAgICBjaGFuZ2UubmV3VmFsdWU/LlByb3BlcnRpZXM/LlBhcmFtZXRlcnMsXG4gICk7XG5cbiAgY29uc3QgbmVzdGVkRGlmZiA9IGNmbl9kaWZmLmZ1bGxEaWZmKFxuICAgIG5lc3RlZFN0YWNrVGVtcGxhdGVzW2xvZ2ljYWxJZF0uZGVwbG95ZWRUZW1wbGF0ZSxcbiAgICBuZXN0ZWRTdGFja1RlbXBsYXRlc1tsb2dpY2FsSWRdLmdlbmVyYXRlZFRlbXBsYXRlLFxuICApO1xuXG4gIHJldHVybiBjbGFzc2lmeVJlc291cmNlQ2hhbmdlcyhcbiAgICBuZXN0ZWREaWZmLFxuICAgIGV2YWx1YXRlTmVzdGVkQ2ZuVGVtcGxhdGUsXG4gICAgc2RrLFxuICAgIG5lc3RlZFN0YWNrVGVtcGxhdGVzW2xvZ2ljYWxJZF0ubmVzdGVkU3RhY2tUZW1wbGF0ZXMsXG4gICAgaG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzLFxuICApO1xufVxuXG4vKiogUmV0dXJucyAndHJ1ZScgaWYgYSBwYWlyIG9mIGNoYW5nZXMgaXMgZm9yIHRoZSBzYW1lIHJlc291cmNlLiAqL1xuZnVuY3Rpb24gY2hhbmdlc0FyZUZvclNhbWVSZXNvdXJjZShcbiAgb2xkQ2hhbmdlOiBjZm5fZGlmZi5SZXNvdXJjZURpZmZlcmVuY2UsXG4gIG5ld0NoYW5nZTogY2ZuX2RpZmYuUmVzb3VyY2VEaWZmZXJlbmNlLFxuKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgb2xkQ2hhbmdlLm9sZFJlc291cmNlVHlwZSA9PT0gbmV3Q2hhbmdlLm5ld1Jlc291cmNlVHlwZSAmJlxuICAgIC8vIHRoaXMgaXNuJ3QgZ3JlYXQsIGJ1dCBJIGRvbid0IHdhbnQgdG8gYnJpbmcgaW4gc29tZXRoaW5nIGxpa2UgdW5kZXJzY29yZSBqdXN0IGZvciB0aGlzIGNvbXBhcmlzb25cbiAgICBKU09OLnN0cmluZ2lmeShvbGRDaGFuZ2Uub2xkUHJvcGVydGllcykgPT09IEpTT04uc3RyaW5naWZ5KG5ld0NoYW5nZS5uZXdQcm9wZXJ0aWVzKVxuICApO1xufVxuXG5mdW5jdGlvbiBtYWtlUmVuYW1lRGlmZmVyZW5jZShcbiAgcmVtQ2hhbmdlOiBjZm5fZGlmZi5SZXNvdXJjZURpZmZlcmVuY2UsXG4gIGFkZENoYW5nZTogY2ZuX2RpZmYuUmVzb3VyY2VEaWZmZXJlbmNlLFxuKTogY2ZuX2RpZmYuUmVzb3VyY2VEaWZmZXJlbmNlIHtcbiAgcmV0dXJuIG5ldyBjZm5fZGlmZi5SZXNvdXJjZURpZmZlcmVuY2UoXG4gICAgLy8gd2UgaGF2ZSB0byBmaWxsIGluIHRoZSBvbGQgdmFsdWUsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoaXMgd2lsbCBiZSBjbGFzc2lmaWVkIGFzIGEgbm9uLWhvdHN3YXBwYWJsZSBjaGFuZ2VcbiAgICByZW1DaGFuZ2Uub2xkVmFsdWUsXG4gICAgYWRkQ2hhbmdlLm5ld1ZhbHVlLFxuICAgIHtcbiAgICAgIHJlc291cmNlVHlwZToge1xuICAgICAgICBvbGRUeXBlOiByZW1DaGFuZ2Uub2xkUmVzb3VyY2VUeXBlLFxuICAgICAgICBuZXdUeXBlOiBhZGRDaGFuZ2UubmV3UmVzb3VyY2VUeXBlLFxuICAgICAgfSxcbiAgICAgIHByb3BlcnR5RGlmZnM6IChhZGRDaGFuZ2UgYXMgYW55KS5wcm9wZXJ0eURpZmZzLFxuICAgICAgb3RoZXJEaWZmczogKGFkZENoYW5nZSBhcyBhbnkpLm90aGVyRGlmZnMsXG4gICAgfSxcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgYEhvdHN3YXBwYWJsZUNoYW5nZUNhbmRpZGF0ZWAgaWYgdGhlIGNoYW5nZSBpcyBob3Rzd2FwcGFibGVcbiAqIFJldHVybnMgYW4gZW1wdHkgYEhvdHN3YXBwYWJsZUNoYW5nZWAgaWYgdGhlIGNoYW5nZSBpcyB0byBDREs6Ok1ldGFkYXRhXG4gKiBSZXR1cm5zIGEgYE5vbkhvdHN3YXBwYWJsZUNoYW5nZWAgaWYgdGhlIGNoYW5nZSBpcyBub3QgaG90c3dhcHBhYmxlXG4gKi9cbmZ1bmN0aW9uIGlzQ2FuZGlkYXRlRm9ySG90c3dhcHBpbmcoXG4gIGxvZ2ljYWxJZDogc3RyaW5nLFxuICBjaGFuZ2U6IGNmbl9kaWZmLlJlc291cmNlRGlmZmVyZW5jZSxcbiAgZXZhbHVhdGVDZm5UZW1wbGF0ZTogRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlLFxuKTogUmVqZWN0ZWRDaGFuZ2UgfCBSZXNvdXJjZUNoYW5nZSB7XG4gIC8vIGEgcmVzb3VyY2UgaGFzIGJlZW4gcmVtb3ZlZCBPUiBhIHJlc291cmNlIGhhcyBiZWVuIGFkZGVkOyB3ZSBjYW4ndCBzaG9ydC1jaXJjdWl0IHRoYXQgY2hhbmdlXG4gIGlmICghY2hhbmdlLm9sZFZhbHVlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhvdHN3YXBwYWJsZTogZmFsc2UsXG4gICAgICBjaGFuZ2U6IHtcbiAgICAgICAgcmVhc29uOiBOb25Ib3Rzd2FwcGFibGVSZWFzb24uUkVTT1VSQ0VfQ1JFQVRJT04sXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgcmVzb3VyY2UgJyR7bG9naWNhbElkfScgd2FzIGNyZWF0ZWQgYnkgdGhpcyBkZXBsb3ltZW50YCxcbiAgICAgICAgc3ViamVjdDoge1xuICAgICAgICAgIHR5cGU6ICdSZXNvdXJjZScsXG4gICAgICAgICAgbG9naWNhbElkLFxuICAgICAgICAgIHJlc291cmNlVHlwZTogY2hhbmdlLm5ld1ZhbHVlIS5UeXBlLFxuICAgICAgICAgIG1ldGFkYXRhOiBldmFsdWF0ZUNmblRlbXBsYXRlLm1ldGFkYXRhRm9yKGxvZ2ljYWxJZCksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH0gZWxzZSBpZiAoIWNoYW5nZS5uZXdWYWx1ZSkge1xuICAgIHJldHVybiB7XG4gICAgICBob3Rzd2FwcGFibGU6IGZhbHNlLFxuICAgICAgbG9naWNhbElkLFxuICAgICAgY2hhbmdlOiB7XG4gICAgICAgIHJlYXNvbjogTm9uSG90c3dhcHBhYmxlUmVhc29uLlJFU09VUkNFX0RFTEVUSU9OLFxuICAgICAgICBkZXNjcmlwdGlvbjogYHJlc291cmNlICcke2xvZ2ljYWxJZH0nIHdhcyBkZXN0cm95ZWQgYnkgdGhpcyBkZXBsb3ltZW50YCxcbiAgICAgICAgc3ViamVjdDoge1xuICAgICAgICAgIHR5cGU6ICdSZXNvdXJjZScsXG4gICAgICAgICAgbG9naWNhbElkLFxuICAgICAgICAgIHJlc291cmNlVHlwZTogY2hhbmdlLm9sZFZhbHVlLlR5cGUsXG4gICAgICAgICAgbWV0YWRhdGE6IGV2YWx1YXRlQ2ZuVGVtcGxhdGUubWV0YWRhdGFGb3IobG9naWNhbElkKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8vIGEgcmVzb3VyY2UgaGFzIGhhZCBpdHMgdHlwZSBjaGFuZ2VkXG4gIGlmIChjaGFuZ2UubmV3VmFsdWUuVHlwZSAhPT0gY2hhbmdlLm9sZFZhbHVlLlR5cGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaG90c3dhcHBhYmxlOiBmYWxzZSxcbiAgICAgIGNoYW5nZToge1xuICAgICAgICByZWFzb246IE5vbkhvdHN3YXBwYWJsZVJlYXNvbi5SRVNPVVJDRV9UWVBFX0NIQU5HRUQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgcmVzb3VyY2UgJyR7bG9naWNhbElkfScgaGFkIGl0cyB0eXBlIGNoYW5nZWQgZnJvbSAnJHtjaGFuZ2Uub2xkVmFsdWU/LlR5cGV9JyB0byAnJHtjaGFuZ2UubmV3VmFsdWU/LlR5cGV9J2AsXG4gICAgICAgIHN1YmplY3Q6IHtcbiAgICAgICAgICB0eXBlOiAnUmVzb3VyY2UnLFxuICAgICAgICAgIGxvZ2ljYWxJZCxcbiAgICAgICAgICByZXNvdXJjZVR5cGU6IGNoYW5nZS5uZXdWYWx1ZS5UeXBlLFxuICAgICAgICAgIG1ldGFkYXRhOiBldmFsdWF0ZUNmblRlbXBsYXRlLm1ldGFkYXRhRm9yKGxvZ2ljYWxJZCksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGxvZ2ljYWxJZCxcbiAgICBvbGRWYWx1ZTogY2hhbmdlLm9sZFZhbHVlLFxuICAgIG5ld1ZhbHVlOiBjaGFuZ2UubmV3VmFsdWUsXG4gICAgcHJvcGVydHlVcGRhdGVzOiBjaGFuZ2UucHJvcGVydHlVcGRhdGVzLFxuICAgIG1ldGFkYXRhOiBldmFsdWF0ZUNmblRlbXBsYXRlLm1ldGFkYXRhRm9yKGxvZ2ljYWxJZCksXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGFwcGx5QWxsSG90c3dhcE9wZXJhdGlvbnMoc2RrOiBTREssIGlvU3BhbjogSU1lc3NhZ2VTcGFuPGFueT4sIGhvdHN3YXBwYWJsZUNoYW5nZXM6IEhvdHN3YXBPcGVyYXRpb25bXSk6IFByb21pc2U8dm9pZFtdPiB7XG4gIGlmIChob3Rzd2FwcGFibGVDaGFuZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuICB9XG5cbiAgYXdhaXQgaW9TcGFuLmRlZmF1bHRzLmluZm8oYFxcbiR7SUNPTn0gaG90c3dhcHBpbmcgcmVzb3VyY2VzOmApO1xuICBjb25zdCBsaW1pdCA9IHBMaW1pdCgxMCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAY2RrbGFicy9wcm9taXNlYWxsLW5vLXVuYm91bmRlZC1wYXJhbGxlbGlzbVxuICByZXR1cm4gUHJvbWlzZS5hbGwoaG90c3dhcHBhYmxlQ2hhbmdlcy5tYXAoaG90c3dhcE9wZXJhdGlvbiA9PiBsaW1pdCgoKSA9PiB7XG4gICAgcmV0dXJuIGFwcGx5SG90c3dhcE9wZXJhdGlvbihzZGssIGlvU3BhbiwgaG90c3dhcE9wZXJhdGlvbik7XG4gIH0pKSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGFwcGx5SG90c3dhcE9wZXJhdGlvbihzZGs6IFNESywgaW9TcGFuOiBJTWVzc2FnZVNwYW48YW55PiwgaG90c3dhcE9wZXJhdGlvbjogSG90c3dhcE9wZXJhdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAvLyBub3RlIHRoZSB0eXBlIG9mIHNlcnZpY2UgdGhhdCB3YXMgc3VjY2Vzc2Z1bGx5IGhvdHN3YXBwZWQgaW4gdGhlIFVzZXItQWdlbnRcbiAgY29uc3QgY3VzdG9tVXNlckFnZW50ID0gYGNkay1ob3Rzd2FwL3N1Y2Nlc3MtJHtob3Rzd2FwT3BlcmF0aW9uLnNlcnZpY2V9YDtcbiAgc2RrLmFwcGVuZEN1c3RvbVVzZXJBZ2VudChjdXN0b21Vc2VyQWdlbnQpO1xuICBjb25zdCByZXNvdXJjZVRleHQgPSAocjogQWZmZWN0ZWRSZXNvdXJjZSkgPT4gci5kZXNjcmlwdGlvbiA/PyBgJHtyLnJlc291cmNlVHlwZX0gJyR7ci5waHlzaWNhbE5hbWUgPz8gci5sb2dpY2FsSWR9J2A7XG5cbiAgYXdhaXQgaW9TcGFuLm5vdGlmeShJTy5DREtfVE9PTEtJVF9JNTQwMi5tc2coXG4gICAgaG90c3dhcE9wZXJhdGlvbi5jaGFuZ2UucmVzb3VyY2VzLm1hcChyID0+IGZvcm1hdChgICAgJHtJQ09OfSAlc2AsIGNoYWxrLmJvbGQocmVzb3VyY2VUZXh0KHIpKSkpLmpvaW4oJ1xcbicpLFxuICAgIGhvdHN3YXBPcGVyYXRpb24uY2hhbmdlLFxuICApKTtcblxuICAvLyBpZiB0aGUgU0RLIGNhbGwgZmFpbHMsIGFuIGVycm9yIHdpbGwgYmUgdGhyb3duIGJ5IHRoZSBTREtcbiAgLy8gYW5kIHdpbGwgcHJldmVudCB0aGUgZ3JlZW4gJ2hvdHN3YXBwZWQhJyB0ZXh0IGZyb20gYmVpbmcgZGlzcGxheWVkXG4gIHRyeSB7XG4gICAgYXdhaXQgaG90c3dhcE9wZXJhdGlvbi5hcHBseShzZGspO1xuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICBpZiAoZS5uYW1lID09PSAnVGltZW91dEVycm9yJyB8fCBlLm5hbWUgPT09ICdBYm9ydEVycm9yJykge1xuICAgICAgY29uc3QgcmVzdWx0OiBXYWl0ZXJSZXN1bHQgPSBKU09OLnBhcnNlKGZvcm1hdEVycm9yTWVzc2FnZShlKSk7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBUb29sa2l0RXJyb3IoJ0hvdHN3YXBXYWl0ZXJGYWlsZWQnLCBmb3JtYXRXYWl0ZXJFcnJvclJlc3VsdChyZXN1bHQpKTtcbiAgICAgIGVycm9yLm5hbWUgPSBlLm5hbWU7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxuXG4gIGF3YWl0IGlvU3Bhbi5ub3RpZnkoSU8uQ0RLX1RPT0xLSVRfSTU0MDMubXNnKFxuICAgIGhvdHN3YXBPcGVyYXRpb24uY2hhbmdlLnJlc291cmNlcy5tYXAociA9PiBmb3JtYXQoYCAgICR7SUNPTn0gJXMgJXNgLCBjaGFsay5ib2xkKHJlc291cmNlVGV4dChyKSksIGNoYWxrLmdyZWVuKCdob3Rzd2FwcGVkIScpKSkuam9pbignXFxuJyksXG4gICAgaG90c3dhcE9wZXJhdGlvbi5jaGFuZ2UsXG4gICkpO1xuXG4gIHNkay5yZW1vdmVDdXN0b21Vc2VyQWdlbnQoY3VzdG9tVXNlckFnZW50KTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0V2FpdGVyRXJyb3JSZXN1bHQocmVzdWx0OiBXYWl0ZXJSZXN1bHQpIHtcbiAgY29uc3QgbWFpbiA9IFtcbiAgICBgUmVzb3VyY2UgaXMgbm90IGluIHRoZSBleHBlY3RlZCBzdGF0ZSBkdWUgdG8gd2FpdGVyIHN0YXR1czogJHtyZXN1bHQuc3RhdGV9YCxcbiAgICByZXN1bHQucmVhc29uID8gYCR7cmVzdWx0LnJlYXNvbn0uYCA6ICcnLFxuICBdLmpvaW4oJy4gJyk7XG5cbiAgaWYgKHJlc3VsdC5vYnNlcnZlZFJlc3BvbnNlcyAhPSBudWxsKSB7XG4gICAgY29uc3Qgb2JzZXJ2ZWRSZXNwb25zZXMgPSBPYmplY3RcbiAgICAgIC5lbnRyaWVzKHJlc3VsdC5vYnNlcnZlZFJlc3BvbnNlcylcbiAgICAgIC5tYXAoKFttc2csIGNvdW50XSkgPT4gYCAgLSAke21zZ30gKCR7Y291bnR9KWApXG4gICAgICAuam9pbignXFxuJyk7XG5cbiAgICByZXR1cm4gYCR7bWFpbn0gT2JzZXJ2ZWQgcmVzcG9uc2VzOlxcbiR7b2JzZXJ2ZWRSZXNwb25zZXN9YDtcbiAgfVxuXG4gIHJldHVybiBtYWluO1xufVxuXG5hc3luYyBmdW5jdGlvbiBsb2dSZWplY3RlZENoYW5nZXMoXG4gIGlvU3BhbjogSU1lc3NhZ2VTcGFuPGFueT4sXG4gIHJlamVjdGVkQ2hhbmdlczogUmVqZWN0ZWRDaGFuZ2VbXSxcbiAgaG90c3dhcE1vZGU6IEhvdHN3YXBNb2RlLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChyZWplY3RlZENoYW5nZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8qKlxuICAgKiBFS1MgU2VydmljZXMgY2FuIGhhdmUgYSB0YXNrIGRlZmluaXRpb24gdGhhdCBkb2Vzbid0IHJlZmVyIHRvIHRoZSB0YXNrIGRlZmluaXRpb24gYmVpbmcgdXBkYXRlZC5cbiAgICogV2UgaGF2ZSB0byBsb2cgdGhpcyBhcyBhIG5vbi1ob3Rzd2FwcGFibGUgY2hhbmdlIHRvIHRoZSB0YXNrIGRlZmluaXRpb24sIGJ1dCB3aGVuIHdlIGRvLFxuICAgKiB3ZSB3aW5kIHVwIGhvdHN3YXBwaW5nIHRoZSB0YXNrIGRlZmluaXRpb24gYW5kIGxvZ2dpbmcgaXQgYXMgYSBub24taG90c3dhcHBhYmxlIGNoYW5nZS5cbiAgICpcbiAgICogVGhpcyBsb2dpYyBwcmV2ZW50cyB1cyBmcm9tIGxvZ2dpbmcgdGhhdCBjaGFuZ2UgYXMgbm9uLWhvdHN3YXBwYWJsZSB3aGVuIHdlIGhvdHN3YXAgaXQuXG4gICAqL1xuICBpZiAoaG90c3dhcE1vZGUgPT09ICdob3Rzd2FwLW9ubHknKSB7XG4gICAgcmVqZWN0ZWRDaGFuZ2VzID0gcmVqZWN0ZWRDaGFuZ2VzLmZpbHRlcigoY2hhbmdlKSA9PiBjaGFuZ2UuaG90c3dhcE9ubHlWaXNpYmxlID09PSB0cnVlKTtcblxuICAgIGlmIChyZWplY3RlZENoYW5nZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbWVzc2FnZXMgPSBbJyddOyAvLyBzdGFydCB3aXRoIGVtcHR5IGxpbmVcblxuICBpZiAoaG90c3dhcE1vZGUgPT09ICdob3Rzd2FwLW9ubHknKSB7XG4gICAgbWVzc2FnZXMucHVzaChmb3JtYXQoJyVzICVzJywgY2hhbGsucmVkKCfimqDvuI8nKSwgY2hhbGsucmVkKCdUaGUgZm9sbG93aW5nIG5vbi1ob3Rzd2FwcGFibGUgY2hhbmdlcyB3ZXJlIGZvdW5kLiBUbyByZWNvbmNpbGUgdGhlc2UgdXNpbmcgQ2xvdWRGb3JtYXRpb24sIHNwZWNpZnkgLS1ob3Rzd2FwLWZhbGxiYWNrJykpKTtcbiAgfSBlbHNlIHtcbiAgICBtZXNzYWdlcy5wdXNoKGZvcm1hdCgnJXMgJXMnLCBjaGFsay5yZWQoJ+KaoO+4jycpLCBjaGFsay5yZWQoJ1RoZSBmb2xsb3dpbmcgbm9uLWhvdHN3YXBwYWJsZSBjaGFuZ2VzIHdlcmUgZm91bmQ6JykpKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgeyBjaGFuZ2UgfSBvZiByZWplY3RlZENoYW5nZXMpIHtcbiAgICBtZXNzYWdlcy5wdXNoKCcgICAgJyArIG5vbkhvdHN3YXBwYWJsZUNoYW5nZU1lc3NhZ2UoY2hhbmdlKSk7XG4gIH1cbiAgbWVzc2FnZXMucHVzaCgnJyk7IC8vIG5ld2xpbmVcblxuICBhd2FpdCBpb1NwYW4uZGVmYXVsdHMuaW5mbyhtZXNzYWdlcy5qb2luKCdcXG4nKSk7XG59XG5cbi8qKlxuICogRm9ybWF0cyBhIE5vbkhvdHN3YXBwYWJsZUNoYW5nZVxuICovXG5mdW5jdGlvbiBub25Ib3Rzd2FwcGFibGVDaGFuZ2VNZXNzYWdlKGNoYW5nZTogTm9uSG90c3dhcHBhYmxlQ2hhbmdlKTogc3RyaW5nIHtcbiAgY29uc3Qgc3ViamVjdCA9IGNoYW5nZS5zdWJqZWN0O1xuICBjb25zdCByZWFzb24gPSBjaGFuZ2UuZGVzY3JpcHRpb24gPz8gY2hhbmdlLnJlYXNvbjtcblxuICBzd2l0Y2ggKHN1YmplY3QudHlwZSkge1xuICAgIGNhc2UgJ091dHB1dCc6XG4gICAgICByZXR1cm4gZm9ybWF0KFxuICAgICAgICAnb3V0cHV0OiAlcywgcmVhc29uOiAlcycsXG4gICAgICAgIGNoYWxrLmJvbGQoc3ViamVjdC5sb2dpY2FsSWQpLFxuICAgICAgICBjaGFsay5yZWQocmVhc29uKSxcbiAgICAgICk7XG4gICAgY2FzZSAnUmVzb3VyY2UnOlxuICAgICAgcmV0dXJuIG5vbkhvdHN3YXBwYWJsZVJlc291cmNlTWVzc2FnZShzdWJqZWN0LCByZWFzb24pO1xuICB9XG59XG5cbi8qKlxuICogRm9ybWF0cyBhIG5vbi1ob3Rzd2FwcGFibGUgcmVzb3VyY2Ugc3ViamVjdFxuICovXG5mdW5jdGlvbiBub25Ib3Rzd2FwcGFibGVSZXNvdXJjZU1lc3NhZ2Uoc3ViamVjdDogUmVzb3VyY2VTdWJqZWN0LCByZWFzb246IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChzdWJqZWN0LnJlamVjdGVkUHJvcGVydGllcz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZvcm1hdChcbiAgICAgICdyZXNvdXJjZTogJXMsIHR5cGU6ICVzLCByZWplY3RlZCBjaGFuZ2VzOiAlcywgcmVhc29uOiAlcycsXG4gICAgICBjaGFsay5ib2xkKHN1YmplY3QubG9naWNhbElkKSxcbiAgICAgIGNoYWxrLmJvbGQoc3ViamVjdC5yZXNvdXJjZVR5cGUpLFxuICAgICAgY2hhbGsuYm9sZChzdWJqZWN0LnJlamVjdGVkUHJvcGVydGllcyksXG4gICAgICBjaGFsay5yZWQocmVhc29uKSxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGZvcm1hdChcbiAgICAncmVzb3VyY2U6ICVzLCB0eXBlOiAlcywgcmVhc29uOiAlcycsXG4gICAgY2hhbGsuYm9sZChzdWJqZWN0LmxvZ2ljYWxJZCksXG4gICAgY2hhbGsuYm9sZChzdWJqZWN0LnJlc291cmNlVHlwZSksXG4gICAgY2hhbGsucmVkKHJlYXNvbiksXG4gICk7XG59XG4iXX0=
@@ -1,10 +1,43 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.readHotswapTemplateCache = readHotswapTemplateCache;
4
37
  exports.writeHotswapTemplateCache = writeHotswapTemplateCache;
5
38
  exports.invalidateHotswapTemplateCache = invalidateHotswapTemplateCache;
6
- const path = require("path");
7
- const fs = require("fs-extra");
39
+ const path = __importStar(require("path"));
40
+ const fs = __importStar(require("fs-extra"));
8
41
  const CACHE_DIR = '.hotswap-cache';
9
42
  function cachePath(assemblyDir, stackName) {
10
43
  return path.join(assemblyDir, CACHE_DIR, `${stackName}.json`);
@@ -93,4 +126,4 @@ function hydrateNestedStacks(assemblyDir, parentTemplate, cachedNestedStacks) {
93
126
  }
94
127
  return result;
95
128
  }
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90c3dhcC10ZW1wbGF0ZS1jYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhvdHN3YXAtdGVtcGxhdGUtY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUErQkEsNERBZ0JDO0FBTUQsOERBYUM7QUFLRCx3RUFFQztBQXpFRCw2QkFBNkI7QUFDN0IsK0JBQStCO0FBRy9CLE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDO0FBa0JuQyxTQUFTLFNBQVMsQ0FBQyxXQUFtQixFQUFFLFNBQWlCO0lBQ3ZELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsU0FBUyxPQUFPLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSx3QkFBd0IsQ0FDNUMsV0FBbUIsRUFDbkIsU0FBaUIsRUFDakIsZUFBeUI7SUFFekIsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNyRCxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFN0MsT0FBTztZQUNMLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxvQkFBb0I7WUFDakQsWUFBWSxFQUFFLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQztTQUNyRixDQUFDO0lBQ0osQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7QUFDSCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0ksS0FBSyxVQUFVLHlCQUF5QixDQUM3QyxXQUFtQixFQUNuQixTQUFpQixFQUNqQixZQUFzQixFQUN0QixZQUEyRDtJQUUzRCxNQUFNLEtBQUssR0FBdUI7UUFDaEMsb0JBQW9CLEVBQUUsWUFBWTtRQUNsQyxZQUFZLEVBQUUsb0JBQW9CLENBQUMsWUFBWSxDQUFDO0tBQ2pELENBQUM7SUFDRixNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3JELE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDN0MsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQ7O0dBRUc7QUFDSSxLQUFLLFVBQVUsOEJBQThCLENBQUMsV0FBbUIsRUFBRSxTQUFpQjtJQUN6RixNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLG9CQUFvQixDQUMzQixZQUEyRDtJQUUzRCxNQUFNLE1BQU0sR0FBK0MsRUFBRSxDQUFDO0lBQzlELEtBQUssTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDM0QsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHO1lBQ2xCLFlBQVksRUFBRSxFQUFFLENBQUMsWUFBWTtZQUM3QixnQkFBZ0IsRUFBRSxFQUFFLENBQUMsaUJBQWlCO1lBQ3RDLFlBQVksRUFBRSxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUM7U0FDNUQsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQVMsbUJBQW1CLENBQzFCLFdBQW1CLEVBQ25CLGNBQXdCLEVBQ3hCLGtCQUE4RDtJQUU5RCxNQUFNLE1BQU0sR0FBa0QsRUFBRSxDQUFDO0lBRWpFLEtBQUssTUFBTSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNuRixNQUFNLEdBQUcsR0FBRyxRQUFlLENBQUM7UUFDNUIsTUFBTSxTQUFTLEdBQUcsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDcEQsd0VBQXdFO1FBQ3hFLElBQUksR0FBRyxFQUFFLElBQUksS0FBSyw0QkFBNEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzdELFNBQVM7UUFDWCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osaUVBQWlFO1lBQ2pFLFNBQVM7UUFDWCxDQUFDO1FBRUQsTUFBTSxpQkFBaUIsR0FBYSxJQUFJLENBQUMsS0FBSyxDQUM1QyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUM1RCxDQUFDO1FBRUYsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHO1lBQ2xCLFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWTtZQUNqQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsZ0JBQWdCO1lBQ3pDLGlCQUFpQjtZQUNqQixvQkFBb0IsRUFBRSxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7U0FDckcsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB0eXBlIHsgTmVzdGVkU3RhY2tUZW1wbGF0ZXMsIFJvb3RUZW1wbGF0ZVdpdGhOZXN0ZWRTdGFja3MsIFRlbXBsYXRlIH0gZnJvbSAnLi4vY2xvdWRmb3JtYXRpb24nO1xuXG5jb25zdCBDQUNIRV9ESVIgPSAnLmhvdHN3YXAtY2FjaGUnO1xuXG4vKipcbiAqIEhvdHN3YXAgc3RhdGUgd2UgcGVyc2lzdCB0byBkaXNrLlxuICogQ2FjaGUgZGVwbG95ZWQgdGVtcGxhdGVzIGFuZCBwaHlzaWNhbCBuYW1lcyAtIGluZm9ybWF0aW9uIENGTiB3b3VsZCBoYXZlIHByb3ZpZGVkLlxuICogVGhlIGdlbmVyYXRlZFRlbXBsYXRlIGlzIGFsd2F5cyByZWFkIGZyZXNoIGZyb20gdGhlIGNsb3VkIGFzc2VtYmx5LlxuICovXG5pbnRlcmZhY2UgQ2FjaGVkTmVzdGVkU3RhY2sge1xuICByZWFkb25seSBwaHlzaWNhbE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZGVwbG95ZWRUZW1wbGF0ZTogVGVtcGxhdGU7XG4gIHJlYWRvbmx5IG5lc3RlZFN0YWNrczogeyBbbG9naWNhbElkOiBzdHJpbmddOiBDYWNoZWROZXN0ZWRTdGFjayB9O1xufVxuXG5pbnRlcmZhY2UgQ2FjaGVkSG90c3dhcFN0YXRlIHtcbiAgcmVhZG9ubHkgZGVwbG95ZWRSb290VGVtcGxhdGU6IFRlbXBsYXRlO1xuICByZWFkb25seSBuZXN0ZWRTdGFja3M6IHsgW2xvZ2ljYWxJZDogc3RyaW5nXTogQ2FjaGVkTmVzdGVkU3RhY2sgfTtcbn1cblxuZnVuY3Rpb24gY2FjaGVQYXRoKGFzc2VtYmx5RGlyOiBzdHJpbmcsIHN0YWNrTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBhdGguam9pbihhc3NlbWJseURpciwgQ0FDSEVfRElSLCBgJHtzdGFja05hbWV9Lmpzb25gKTtcbn1cblxuLyoqXG4gKiBSZWFkIHRoZSBjYWNoZWQgaG90c3dhcCBzdGF0ZSBhbmQgaHlkcmF0ZSBpdCBpbnRvIGEgZnVsbFxuICogUm9vdFRlbXBsYXRlV2l0aE5lc3RlZFN0YWNrcyBieSByZWFkaW5nIGZyZXNoIGdlbmVyYXRlZFRlbXBsYXRlcyBmcm9tIGRpc2suXG4gKiBSZXR1cm5zIHVuZGVmaW5lZCBpZiBubyBjYWNoZSBleGlzdHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkSG90c3dhcFRlbXBsYXRlQ2FjaGUoXG4gIGFzc2VtYmx5RGlyOiBzdHJpbmcsXG4gIHN0YWNrTmFtZTogc3RyaW5nLFxuICBuZXdSb290VGVtcGxhdGU6IFRlbXBsYXRlLFxuKTogUHJvbWlzZTxSb290VGVtcGxhdGVXaXRoTmVzdGVkU3RhY2tzIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IGNhY2hlZFBhdGggPSBjYWNoZVBhdGgoYXNzZW1ibHlEaXIsIHN0YWNrTmFtZSk7XG4gIHRyeSB7XG4gICAgY29uc3QgY2FjaGVkID0gYXdhaXQgZnMucmVhZEpzb24oY2FjaGVkUGF0aCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGVwbG95ZWRSb290VGVtcGxhdGU6IGNhY2hlZC5kZXBsb3llZFJvb3RUZW1wbGF0ZSxcbiAgICAgIG5lc3RlZFN0YWNrczogaHlkcmF0ZU5lc3RlZFN0YWNrcyhhc3NlbWJseURpciwgbmV3Um9vdFRlbXBsYXRlLCBjYWNoZWQubmVzdGVkU3RhY2tzKSxcbiAgICB9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQ2FjaGUgdGhlIGN1cnJlbnQgaG90c3dhcCBzdGF0ZSBhZnRlciBhIHN1Y2Nlc3NmdWwgZGVwbG95bWVudC5cbiAqIFRoZSBzeW50aGVzaXplZCB0ZW1wbGF0ZXMgYmVjb21lIHRoZSBuZXcgXCJkZXBsb3llZFwiIGJhc2VsaW5lLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVIb3Rzd2FwVGVtcGxhdGVDYWNoZShcbiAgYXNzZW1ibHlEaXI6IHN0cmluZyxcbiAgc3RhY2tOYW1lOiBzdHJpbmcsXG4gIHJvb3RUZW1wbGF0ZTogVGVtcGxhdGUsXG4gIG5lc3RlZFN0YWNrczogeyBbbG9naWNhbElkOiBzdHJpbmddOiBOZXN0ZWRTdGFja1RlbXBsYXRlcyB9LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHN0YXRlOiBDYWNoZWRIb3Rzd2FwU3RhdGUgPSB7XG4gICAgZGVwbG95ZWRSb290VGVtcGxhdGU6IHJvb3RUZW1wbGF0ZSxcbiAgICBuZXN0ZWRTdGFja3M6IHRvQ2FjaGVkTmVzdGVkU3RhY2tzKG5lc3RlZFN0YWNrcyksXG4gIH07XG4gIGNvbnN0IGNhY2hlZFBhdGggPSBjYWNoZVBhdGgoYXNzZW1ibHlEaXIsIHN0YWNrTmFtZSk7XG4gIGF3YWl0IGZzLmVuc3VyZURpcihwYXRoLmRpcm5hbWUoY2FjaGVkUGF0aCkpO1xuICBhd2FpdCBmcy53cml0ZUpzb24oY2FjaGVkUGF0aCwgc3RhdGUsIHsgc3BhY2VzOiAyIH0pO1xufVxuXG4vKipcbiAqIEludmFsaWRhdGUgdGhlIGhvdHN3YXAgY2FjaGUgZm9yIGEgc3RhY2sgKGUuZy4gYWZ0ZXIgYSBmdWxsIENsb3VkRm9ybWF0aW9uIGRlcGxveSkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbnZhbGlkYXRlSG90c3dhcFRlbXBsYXRlQ2FjaGUoYXNzZW1ibHlEaXI6IHN0cmluZywgc3RhY2tOYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgZnMucm0oY2FjaGVQYXRoKGFzc2VtYmx5RGlyLCBzdGFja05hbWUpLCB7IGZvcmNlOiB0cnVlIH0pO1xufVxuXG4vKipcbiAqIENvbnZlcnQgTmVzdGVkU3RhY2tUZW1wbGF0ZXMgdG8gdGhlIG1pbmltYWwgY2FjaGVkIGZvcm0uXG4gKiBBZnRlciBhIHN1Y2Nlc3NmdWwgaG90c3dhcCwgZ2VuZXJhdGVkVGVtcGxhdGUgaXMgY29uc2lkZXJlZCB0aGUgZGVwbG95ZWQgc3RhdGUuXG4gKi9cbmZ1bmN0aW9uIHRvQ2FjaGVkTmVzdGVkU3RhY2tzKFxuICBuZXN0ZWRTdGFja3M6IHsgW2xvZ2ljYWxJZDogc3RyaW5nXTogTmVzdGVkU3RhY2tUZW1wbGF0ZXMgfSxcbik6IHsgW2xvZ2ljYWxJZDogc3RyaW5nXTogQ2FjaGVkTmVzdGVkU3RhY2sgfSB7XG4gIGNvbnN0IHJlc3VsdDogeyBbbG9naWNhbElkOiBzdHJpbmddOiBDYWNoZWROZXN0ZWRTdGFjayB9ID0ge307XG4gIGZvciAoY29uc3QgW2xvZ2ljYWxJZCwgbnNdIG9mIE9iamVjdC5lbnRyaWVzKG5lc3RlZFN0YWNrcykpIHtcbiAgICByZXN1bHRbbG9naWNhbElkXSA9IHtcbiAgICAgIHBoeXNpY2FsTmFtZTogbnMucGh5c2ljYWxOYW1lLFxuICAgICAgZGVwbG95ZWRUZW1wbGF0ZTogbnMuZ2VuZXJhdGVkVGVtcGxhdGUsXG4gICAgICBuZXN0ZWRTdGFja3M6IHRvQ2FjaGVkTmVzdGVkU3RhY2tzKG5zLm5lc3RlZFN0YWNrVGVtcGxhdGVzKSxcbiAgICB9O1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogSHlkcmF0ZSBjYWNoZWQgbmVzdGVkIHN0YWNrcyBpbnRvIGZ1bGwgTmVzdGVkU3RhY2tUZW1wbGF0ZXMgYnkgcmVhZGluZ1xuICogdGhlIGZyZXNobHkgc3ludGhlc2l6ZWQgZ2VuZXJhdGVkVGVtcGxhdGUgZnJvbSB0aGUgY2xvdWQgYXNzZW1ibHkgb24gZGlzay5cbiAqXG4gKiBPbmx5IG5lc3RlZCBzdGFja3MgcHJlc2VudCBpbiB0aGUgY2FjaGUgYXJlIGh5ZHJhdGVkLiBOZXcgbmVzdGVkIHN0YWNrc1xuICogKG5vdCBpbiBjYWNoZSkgYXJlIGxlZnQgb3V0IHNvIHRoZSByb290LWxldmVsIGRpZmYgc2VlcyB0aGVtIGFzIHJlc291cmNlXG4gKiBhZGRpdGlvbnMgYW5kIHJvdXRlcyB0aGVtIHRocm91Z2ggdGhlIG5vcm1hbCBub24taG90c3dhcHBhYmxlIHBhdGguXG4gKi9cbmZ1bmN0aW9uIGh5ZHJhdGVOZXN0ZWRTdGFja3MoXG4gIGFzc2VtYmx5RGlyOiBzdHJpbmcsXG4gIHBhcmVudFRlbXBsYXRlOiBUZW1wbGF0ZSxcbiAgY2FjaGVkTmVzdGVkU3RhY2tzOiB7IFtsb2dpY2FsSWQ6IHN0cmluZ106IENhY2hlZE5lc3RlZFN0YWNrIH0sXG4pOiB7IFtsb2dpY2FsSWQ6IHN0cmluZ106IE5lc3RlZFN0YWNrVGVtcGxhdGVzIH0ge1xuICBjb25zdCByZXN1bHQ6IHsgW2xvZ2ljYWxJZDogc3RyaW5nXTogTmVzdGVkU3RhY2tUZW1wbGF0ZXMgfSA9IHt9O1xuXG4gIGZvciAoY29uc3QgW2xvZ2ljYWxJZCwgcmVzb3VyY2VdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmVudFRlbXBsYXRlLlJlc291cmNlcyA/PyB7fSkpIHtcbiAgICBjb25zdCByZXMgPSByZXNvdXJjZSBhcyBhbnk7XG4gICAgY29uc3QgYXNzZXRQYXRoID0gcmVzPy5NZXRhZGF0YT8uWydhd3M6YXNzZXQ6cGF0aCddO1xuICAgIC8vIHdlIG9ubHkgY2FyZSBhYm91dCBzdXJmYWNpbmcgbmVzdGVkIHN0YWNrcywgc2tpcCBvdGhlciByZXNvdXJjZSB0eXBlc1xuICAgIGlmIChyZXM/LlR5cGUgIT09ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycgfHwgIWFzc2V0UGF0aCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgY2FjaGVkID0gY2FjaGVkTmVzdGVkU3RhY2tzW2xvZ2ljYWxJZF07XG4gICAgaWYgKCFjYWNoZWQpIHtcbiAgICAgIC8vIE5ldyBuZXN0ZWQgc3RhY2sg4oCUIHNraXAgc28gaXQncyB0cmVhdGVkIGFzIGEgcmVzb3VyY2UgYWRkaXRpb25cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGdlbmVyYXRlZFRlbXBsYXRlOiBUZW1wbGF0ZSA9IEpTT04ucGFyc2UoXG4gICAgICBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKGFzc2VtYmx5RGlyLCBhc3NldFBhdGgpLCAndXRmLTgnKSxcbiAgICApO1xuXG4gICAgcmVzdWx0W2xvZ2ljYWxJZF0gPSB7XG4gICAgICBwaHlzaWNhbE5hbWU6IGNhY2hlZC5waHlzaWNhbE5hbWUsXG4gICAgICBkZXBsb3llZFRlbXBsYXRlOiBjYWNoZWQuZGVwbG95ZWRUZW1wbGF0ZSxcbiAgICAgIGdlbmVyYXRlZFRlbXBsYXRlLFxuICAgICAgbmVzdGVkU3RhY2tUZW1wbGF0ZXM6IGh5ZHJhdGVOZXN0ZWRTdGFja3MoYXNzZW1ibHlEaXIsIGdlbmVyYXRlZFRlbXBsYXRlLCBjYWNoZWQubmVzdGVkU3RhY2tzID8/IHt9KSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90c3dhcC10ZW1wbGF0ZS1jYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhvdHN3YXAtdGVtcGxhdGUtY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUErQkEsNERBZ0JDO0FBTUQsOERBYUM7QUFLRCx3RUFFQztBQXpFRCwyQ0FBNkI7QUFDN0IsNkNBQStCO0FBRy9CLE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDO0FBa0JuQyxTQUFTLFNBQVMsQ0FBQyxXQUFtQixFQUFFLFNBQWlCO0lBQ3ZELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsU0FBUyxPQUFPLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSx3QkFBd0IsQ0FDNUMsV0FBbUIsRUFDbkIsU0FBaUIsRUFDakIsZUFBeUI7SUFFekIsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNyRCxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFN0MsT0FBTztZQUNMLG9CQUFvQixFQUFFLE1BQU0sQ0FBQyxvQkFBb0I7WUFDakQsWUFBWSxFQUFFLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQztTQUNyRixDQUFDO0lBQ0osQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7QUFDSCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0ksS0FBSyxVQUFVLHlCQUF5QixDQUM3QyxXQUFtQixFQUNuQixTQUFpQixFQUNqQixZQUFzQixFQUN0QixZQUEyRDtJQUUzRCxNQUFNLEtBQUssR0FBdUI7UUFDaEMsb0JBQW9CLEVBQUUsWUFBWTtRQUNsQyxZQUFZLEVBQUUsb0JBQW9CLENBQUMsWUFBWSxDQUFDO0tBQ2pELENBQUM7SUFDRixNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3JELE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDN0MsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQ7O0dBRUc7QUFDSSxLQUFLLFVBQVUsOEJBQThCLENBQUMsV0FBbUIsRUFBRSxTQUFpQjtJQUN6RixNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLG9CQUFvQixDQUMzQixZQUEyRDtJQUUzRCxNQUFNLE1BQU0sR0FBK0MsRUFBRSxDQUFDO0lBQzlELEtBQUssTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDM0QsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHO1lBQ2xCLFlBQVksRUFBRSxFQUFFLENBQUMsWUFBWTtZQUM3QixnQkFBZ0IsRUFBRSxFQUFFLENBQUMsaUJBQWlCO1lBQ3RDLFlBQVksRUFBRSxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUM7U0FDNUQsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQVMsbUJBQW1CLENBQzFCLFdBQW1CLEVBQ25CLGNBQXdCLEVBQ3hCLGtCQUE4RDtJQUU5RCxNQUFNLE1BQU0sR0FBa0QsRUFBRSxDQUFDO0lBRWpFLEtBQUssTUFBTSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNuRixNQUFNLEdBQUcsR0FBRyxRQUFlLENBQUM7UUFDNUIsTUFBTSxTQUFTLEdBQUcsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDcEQsd0VBQXdFO1FBQ3hFLElBQUksR0FBRyxFQUFFLElBQUksS0FBSyw0QkFBNEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzdELFNBQVM7UUFDWCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osaUVBQWlFO1lBQ2pFLFNBQVM7UUFDWCxDQUFDO1FBRUQsTUFBTSxpQkFBaUIsR0FBYSxJQUFJLENBQUMsS0FBSyxDQUM1QyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUM1RCxDQUFDO1FBRUYsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHO1lBQ2xCLFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWTtZQUNqQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsZ0JBQWdCO1lBQ3pDLGlCQUFpQjtZQUNqQixvQkFBb0IsRUFBRSxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7U0FDckcsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB0eXBlIHsgTmVzdGVkU3RhY2tUZW1wbGF0ZXMsIFJvb3RUZW1wbGF0ZVdpdGhOZXN0ZWRTdGFja3MsIFRlbXBsYXRlIH0gZnJvbSAnLi4vY2xvdWRmb3JtYXRpb24nO1xuXG5jb25zdCBDQUNIRV9ESVIgPSAnLmhvdHN3YXAtY2FjaGUnO1xuXG4vKipcbiAqIEhvdHN3YXAgc3RhdGUgd2UgcGVyc2lzdCB0byBkaXNrLlxuICogQ2FjaGUgZGVwbG95ZWQgdGVtcGxhdGVzIGFuZCBwaHlzaWNhbCBuYW1lcyAtIGluZm9ybWF0aW9uIENGTiB3b3VsZCBoYXZlIHByb3ZpZGVkLlxuICogVGhlIGdlbmVyYXRlZFRlbXBsYXRlIGlzIGFsd2F5cyByZWFkIGZyZXNoIGZyb20gdGhlIGNsb3VkIGFzc2VtYmx5LlxuICovXG5pbnRlcmZhY2UgQ2FjaGVkTmVzdGVkU3RhY2sge1xuICByZWFkb25seSBwaHlzaWNhbE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZGVwbG95ZWRUZW1wbGF0ZTogVGVtcGxhdGU7XG4gIHJlYWRvbmx5IG5lc3RlZFN0YWNrczogeyBbbG9naWNhbElkOiBzdHJpbmddOiBDYWNoZWROZXN0ZWRTdGFjayB9O1xufVxuXG5pbnRlcmZhY2UgQ2FjaGVkSG90c3dhcFN0YXRlIHtcbiAgcmVhZG9ubHkgZGVwbG95ZWRSb290VGVtcGxhdGU6IFRlbXBsYXRlO1xuICByZWFkb25seSBuZXN0ZWRTdGFja3M6IHsgW2xvZ2ljYWxJZDogc3RyaW5nXTogQ2FjaGVkTmVzdGVkU3RhY2sgfTtcbn1cblxuZnVuY3Rpb24gY2FjaGVQYXRoKGFzc2VtYmx5RGlyOiBzdHJpbmcsIHN0YWNrTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBhdGguam9pbihhc3NlbWJseURpciwgQ0FDSEVfRElSLCBgJHtzdGFja05hbWV9Lmpzb25gKTtcbn1cblxuLyoqXG4gKiBSZWFkIHRoZSBjYWNoZWQgaG90c3dhcCBzdGF0ZSBhbmQgaHlkcmF0ZSBpdCBpbnRvIGEgZnVsbFxuICogUm9vdFRlbXBsYXRlV2l0aE5lc3RlZFN0YWNrcyBieSByZWFkaW5nIGZyZXNoIGdlbmVyYXRlZFRlbXBsYXRlcyBmcm9tIGRpc2suXG4gKiBSZXR1cm5zIHVuZGVmaW5lZCBpZiBubyBjYWNoZSBleGlzdHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkSG90c3dhcFRlbXBsYXRlQ2FjaGUoXG4gIGFzc2VtYmx5RGlyOiBzdHJpbmcsXG4gIHN0YWNrTmFtZTogc3RyaW5nLFxuICBuZXdSb290VGVtcGxhdGU6IFRlbXBsYXRlLFxuKTogUHJvbWlzZTxSb290VGVtcGxhdGVXaXRoTmVzdGVkU3RhY2tzIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IGNhY2hlZFBhdGggPSBjYWNoZVBhdGgoYXNzZW1ibHlEaXIsIHN0YWNrTmFtZSk7XG4gIHRyeSB7XG4gICAgY29uc3QgY2FjaGVkID0gYXdhaXQgZnMucmVhZEpzb24oY2FjaGVkUGF0aCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGVwbG95ZWRSb290VGVtcGxhdGU6IGNhY2hlZC5kZXBsb3llZFJvb3RUZW1wbGF0ZSxcbiAgICAgIG5lc3RlZFN0YWNrczogaHlkcmF0ZU5lc3RlZFN0YWNrcyhhc3NlbWJseURpciwgbmV3Um9vdFRlbXBsYXRlLCBjYWNoZWQubmVzdGVkU3RhY2tzKSxcbiAgICB9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQ2FjaGUgdGhlIGN1cnJlbnQgaG90c3dhcCBzdGF0ZSBhZnRlciBhIHN1Y2Nlc3NmdWwgZGVwbG95bWVudC5cbiAqIFRoZSBzeW50aGVzaXplZCB0ZW1wbGF0ZXMgYmVjb21lIHRoZSBuZXcgXCJkZXBsb3llZFwiIGJhc2VsaW5lLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVIb3Rzd2FwVGVtcGxhdGVDYWNoZShcbiAgYXNzZW1ibHlEaXI6IHN0cmluZyxcbiAgc3RhY2tOYW1lOiBzdHJpbmcsXG4gIHJvb3RUZW1wbGF0ZTogVGVtcGxhdGUsXG4gIG5lc3RlZFN0YWNrczogeyBbbG9naWNhbElkOiBzdHJpbmddOiBOZXN0ZWRTdGFja1RlbXBsYXRlcyB9LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHN0YXRlOiBDYWNoZWRIb3Rzd2FwU3RhdGUgPSB7XG4gICAgZGVwbG95ZWRSb290VGVtcGxhdGU6IHJvb3RUZW1wbGF0ZSxcbiAgICBuZXN0ZWRTdGFja3M6IHRvQ2FjaGVkTmVzdGVkU3RhY2tzKG5lc3RlZFN0YWNrcyksXG4gIH07XG4gIGNvbnN0IGNhY2hlZFBhdGggPSBjYWNoZVBhdGgoYXNzZW1ibHlEaXIsIHN0YWNrTmFtZSk7XG4gIGF3YWl0IGZzLmVuc3VyZURpcihwYXRoLmRpcm5hbWUoY2FjaGVkUGF0aCkpO1xuICBhd2FpdCBmcy53cml0ZUpzb24oY2FjaGVkUGF0aCwgc3RhdGUsIHsgc3BhY2VzOiAyIH0pO1xufVxuXG4vKipcbiAqIEludmFsaWRhdGUgdGhlIGhvdHN3YXAgY2FjaGUgZm9yIGEgc3RhY2sgKGUuZy4gYWZ0ZXIgYSBmdWxsIENsb3VkRm9ybWF0aW9uIGRlcGxveSkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbnZhbGlkYXRlSG90c3dhcFRlbXBsYXRlQ2FjaGUoYXNzZW1ibHlEaXI6IHN0cmluZywgc3RhY2tOYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgZnMucm0oY2FjaGVQYXRoKGFzc2VtYmx5RGlyLCBzdGFja05hbWUpLCB7IGZvcmNlOiB0cnVlIH0pO1xufVxuXG4vKipcbiAqIENvbnZlcnQgTmVzdGVkU3RhY2tUZW1wbGF0ZXMgdG8gdGhlIG1pbmltYWwgY2FjaGVkIGZvcm0uXG4gKiBBZnRlciBhIHN1Y2Nlc3NmdWwgaG90c3dhcCwgZ2VuZXJhdGVkVGVtcGxhdGUgaXMgY29uc2lkZXJlZCB0aGUgZGVwbG95ZWQgc3RhdGUuXG4gKi9cbmZ1bmN0aW9uIHRvQ2FjaGVkTmVzdGVkU3RhY2tzKFxuICBuZXN0ZWRTdGFja3M6IHsgW2xvZ2ljYWxJZDogc3RyaW5nXTogTmVzdGVkU3RhY2tUZW1wbGF0ZXMgfSxcbik6IHsgW2xvZ2ljYWxJZDogc3RyaW5nXTogQ2FjaGVkTmVzdGVkU3RhY2sgfSB7XG4gIGNvbnN0IHJlc3VsdDogeyBbbG9naWNhbElkOiBzdHJpbmddOiBDYWNoZWROZXN0ZWRTdGFjayB9ID0ge307XG4gIGZvciAoY29uc3QgW2xvZ2ljYWxJZCwgbnNdIG9mIE9iamVjdC5lbnRyaWVzKG5lc3RlZFN0YWNrcykpIHtcbiAgICByZXN1bHRbbG9naWNhbElkXSA9IHtcbiAgICAgIHBoeXNpY2FsTmFtZTogbnMucGh5c2ljYWxOYW1lLFxuICAgICAgZGVwbG95ZWRUZW1wbGF0ZTogbnMuZ2VuZXJhdGVkVGVtcGxhdGUsXG4gICAgICBuZXN0ZWRTdGFja3M6IHRvQ2FjaGVkTmVzdGVkU3RhY2tzKG5zLm5lc3RlZFN0YWNrVGVtcGxhdGVzKSxcbiAgICB9O1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogSHlkcmF0ZSBjYWNoZWQgbmVzdGVkIHN0YWNrcyBpbnRvIGZ1bGwgTmVzdGVkU3RhY2tUZW1wbGF0ZXMgYnkgcmVhZGluZ1xuICogdGhlIGZyZXNobHkgc3ludGhlc2l6ZWQgZ2VuZXJhdGVkVGVtcGxhdGUgZnJvbSB0aGUgY2xvdWQgYXNzZW1ibHkgb24gZGlzay5cbiAqXG4gKiBPbmx5IG5lc3RlZCBzdGFja3MgcHJlc2VudCBpbiB0aGUgY2FjaGUgYXJlIGh5ZHJhdGVkLiBOZXcgbmVzdGVkIHN0YWNrc1xuICogKG5vdCBpbiBjYWNoZSkgYXJlIGxlZnQgb3V0IHNvIHRoZSByb290LWxldmVsIGRpZmYgc2VlcyB0aGVtIGFzIHJlc291cmNlXG4gKiBhZGRpdGlvbnMgYW5kIHJvdXRlcyB0aGVtIHRocm91Z2ggdGhlIG5vcm1hbCBub24taG90c3dhcHBhYmxlIHBhdGguXG4gKi9cbmZ1bmN0aW9uIGh5ZHJhdGVOZXN0ZWRTdGFja3MoXG4gIGFzc2VtYmx5RGlyOiBzdHJpbmcsXG4gIHBhcmVudFRlbXBsYXRlOiBUZW1wbGF0ZSxcbiAgY2FjaGVkTmVzdGVkU3RhY2tzOiB7IFtsb2dpY2FsSWQ6IHN0cmluZ106IENhY2hlZE5lc3RlZFN0YWNrIH0sXG4pOiB7IFtsb2dpY2FsSWQ6IHN0cmluZ106IE5lc3RlZFN0YWNrVGVtcGxhdGVzIH0ge1xuICBjb25zdCByZXN1bHQ6IHsgW2xvZ2ljYWxJZDogc3RyaW5nXTogTmVzdGVkU3RhY2tUZW1wbGF0ZXMgfSA9IHt9O1xuXG4gIGZvciAoY29uc3QgW2xvZ2ljYWxJZCwgcmVzb3VyY2VdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmVudFRlbXBsYXRlLlJlc291cmNlcyA/PyB7fSkpIHtcbiAgICBjb25zdCByZXMgPSByZXNvdXJjZSBhcyBhbnk7XG4gICAgY29uc3QgYXNzZXRQYXRoID0gcmVzPy5NZXRhZGF0YT8uWydhd3M6YXNzZXQ6cGF0aCddO1xuICAgIC8vIHdlIG9ubHkgY2FyZSBhYm91dCBzdXJmYWNpbmcgbmVzdGVkIHN0YWNrcywgc2tpcCBvdGhlciByZXNvdXJjZSB0eXBlc1xuICAgIGlmIChyZXM/LlR5cGUgIT09ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycgfHwgIWFzc2V0UGF0aCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgY2FjaGVkID0gY2FjaGVkTmVzdGVkU3RhY2tzW2xvZ2ljYWxJZF07XG4gICAgaWYgKCFjYWNoZWQpIHtcbiAgICAgIC8vIE5ldyBuZXN0ZWQgc3RhY2sg4oCUIHNraXAgc28gaXQncyB0cmVhdGVkIGFzIGEgcmVzb3VyY2UgYWRkaXRpb25cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGdlbmVyYXRlZFRlbXBsYXRlOiBUZW1wbGF0ZSA9IEpTT04ucGFyc2UoXG4gICAgICBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKGFzc2VtYmx5RGlyLCBhc3NldFBhdGgpLCAndXRmLTgnKSxcbiAgICApO1xuXG4gICAgcmVzdWx0W2xvZ2ljYWxJZF0gPSB7XG4gICAgICBwaHlzaWNhbE5hbWU6IGNhY2hlZC5waHlzaWNhbE5hbWUsXG4gICAgICBkZXBsb3llZFRlbXBsYXRlOiBjYWNoZWQuZGVwbG95ZWRUZW1wbGF0ZSxcbiAgICAgIGdlbmVyYXRlZFRlbXBsYXRlLFxuICAgICAgbmVzdGVkU3RhY2tUZW1wbGF0ZXM6IGh5ZHJhdGVOZXN0ZWRTdGFja3MoYXNzZW1ibHlEaXIsIGdlbmVyYXRlZFRlbXBsYXRlLCBjYWNoZWQubmVzdGVkU3RhY2tzID8/IHt9KSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==
@@ -1,7 +1,40 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.IoDefaultMessages = void 0;
4
- const util = require("util");
37
+ const util = __importStar(require("util"));
5
38
  /**
6
39
  * Helper class to emit standard log messages to an IoHost
7
40
  *
@@ -58,4 +91,4 @@ class IoDefaultMessages {
58
91
  }
59
92
  }
60
93
  exports.IoDefaultMessages = IoDefaultMessages;
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW8tZGVmYXVsdC1tZXNzYWdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImlvLWRlZmF1bHQtbWVzc2FnZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQTZCO0FBSTdCOzs7OztHQUtHO0FBQ0gsTUFBYSxpQkFBaUI7SUFDWCxRQUFRLENBQVc7SUFFcEMsWUFBWSxRQUFrQjtRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUE2QztRQUMvRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQzFCLEdBQUcsR0FBRztZQUNOLElBQUksRUFBRSxTQUFTO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQWEsRUFBRSxHQUFHLElBQWU7UUFDbEQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFhLEVBQUUsR0FBRyxJQUFlO1FBQ2pELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBYSxFQUFFLEdBQUcsSUFBZTtRQUNwRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQWEsRUFBRSxHQUFHLElBQWU7UUFDakQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFhLEVBQUUsR0FBRyxJQUFlO1FBQ2xELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBYSxFQUFFLEdBQUcsSUFBZTtRQUNsRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQWEsRUFBRSxHQUFHLElBQWU7UUFDbkQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxHQUFHLENBQUMsS0FBcUIsRUFBRSxLQUFhLEVBQUUsR0FBRyxJQUFlO1FBQ2pFLHNDQUFzQztRQUN0QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBRXRFLE9BQU87WUFDTCxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDaEIsS0FBSztZQUNMLE9BQU87WUFDUCxJQUFJLEVBQUUsU0FBUztTQUNoQixDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBcUIsRUFBRSxLQUFhLEVBQUUsR0FBRyxJQUFlO1FBQ2hGLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0NBQ0Y7QUE1REQsOENBNERDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tICd1dGlsJztcbmltcG9ydCB0eXBlIHsgQWN0aW9uTGVzc01lc3NhZ2UsIElvSGVscGVyIH0gZnJvbSAnLi9pby1oZWxwZXInO1xuaW1wb3J0IHR5cGUgeyBJb01lc3NhZ2VMZXZlbCB9IGZyb20gJy4uL2lvLW1lc3NhZ2UnO1xuXG4vKipcbiAqIEhlbHBlciBjbGFzcyB0byBlbWl0IHN0YW5kYXJkIGxvZyBtZXNzYWdlcyB0byBhbiBJb0hvc3RcbiAqXG4gKiBJdCB3cmFwcyBhbiBgSW9IZWxwZXJgLCBhbmQgYWRkcyBjb252ZW5pZW5jZSBtZXRob2RzIHRvIGVtaXQgZGVmYXVsdCBtZXNzYWdlc1xuICogZm9yIHRoZSB2YXJpb3VzIGxvZyBsZXZlbHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBJb0RlZmF1bHRNZXNzYWdlcyB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW9IZWxwZXI6IElvSGVscGVyO1xuXG4gIGNvbnN0cnVjdG9yKGlvSGVscGVyOiBJb0hlbHBlcikge1xuICAgIHRoaXMuaW9IZWxwZXIgPSBpb0hlbHBlcjtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBub3RpZnkobXNnOiBPbWl0PEFjdGlvbkxlc3NNZXNzYWdlPHVua25vd24+LCAnY29kZSc+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaW9IZWxwZXIubm90aWZ5KHtcbiAgICAgIC4uLm1zZyxcbiAgICAgIGNvZGU6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlcnJvcihpbnB1dDogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5lbWl0TWVzc2FnZSgnZXJyb3InLCBpbnB1dCwgLi4uYXJncyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgd2FybihpbnB1dDogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5lbWl0TWVzc2FnZSgnd2FybicsIGlucHV0LCAuLi5hcmdzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB3YXJuaW5nKGlucHV0OiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmVtaXRNZXNzYWdlKCd3YXJuJywgaW5wdXQsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGluZm8oaW5wdXQ6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW1pdE1lc3NhZ2UoJ2luZm8nLCBpbnB1dCwgLi4uYXJncyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVidWcoaW5wdXQ6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW1pdE1lc3NhZ2UoJ2RlYnVnJywgaW5wdXQsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHRyYWNlKGlucHV0OiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmVtaXRNZXNzYWdlKCd0cmFjZScsIGlucHV0LCAuLi5hcmdzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZXN1bHQoaW5wdXQ6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW1pdE1lc3NhZ2UoJ3Jlc3VsdCcsIGlucHV0LCAuLi5hcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlcyBhIGRlZmF1bHQgbWVzc2FnZSBvYmplY3QgZnJvbSBhIGxldmVsIGFuZCBhIG1lc3NhZ2VcbiAgICovXG4gIHB1YmxpYyBtc2cobGV2ZWw6IElvTWVzc2FnZUxldmVsLCBpbnB1dDogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiBBY3Rpb25MZXNzTWVzc2FnZTx1bmRlZmluZWQ+IHtcbiAgICAvLyBGb3JtYXQgbWVzc2FnZSBpZiBhcmdzIGFyZSBwcm92aWRlZFxuICAgIGNvbnN0IG1lc3NhZ2UgPSBhcmdzLmxlbmd0aCA+IDAgPyB1dGlsLmZvcm1hdChpbnB1dCwgLi4uYXJncykgOiBpbnB1dDtcblxuICAgIHJldHVybiB7XG4gICAgICB0aW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgbGV2ZWwsXG4gICAgICBtZXNzYWdlLFxuICAgICAgZGF0YTogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGVtaXRNZXNzYWdlKGxldmVsOiBJb01lc3NhZ2VMZXZlbCwgaW5wdXQ6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaW9IZWxwZXIubm90aWZ5KHRoaXMubXNnKGxldmVsLCBpbnB1dCwgLi4uYXJncykpO1xuICB9XG59XG4iXX0=
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW8tZGVmYXVsdC1tZXNzYWdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImlvLWRlZmF1bHQtbWVzc2FnZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTZCO0FBSTdCOzs7OztHQUtHO0FBQ0gsTUFBYSxpQkFBaUI7SUFDWCxRQUFRLENBQVc7SUFFcEMsWUFBWSxRQUFrQjtRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUE2QztRQUMvRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQzFCLEdBQUcsR0FBRztZQUNOLElBQUksRUFBRSxTQUFTO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQWEsRUFBRSxHQUFHLElBQWU7UUFDbEQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFhLEVBQUUsR0FBRyxJQUFlO1FBQ2pELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBYSxFQUFFLEdBQUcsSUFBZTtRQUNwRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQWEsRUFBRSxHQUFHLElBQWU7UUFDakQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFhLEVBQUUsR0FBRyxJQUFlO1FBQ2xELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBYSxFQUFFLEdBQUcsSUFBZTtRQUNsRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQWEsRUFBRSxHQUFHLElBQWU7UUFDbkQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxHQUFHLENBQUMsS0FBcUIsRUFBRSxLQUFhLEVBQUUsR0FBRyxJQUFlO1FBQ2pFLHNDQUFzQztRQUN0QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBRXRFLE9BQU87WUFDTCxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDaEIsS0FBSztZQUNMLE9BQU87WUFDUCxJQUFJLEVBQUUsU0FBUztTQUNoQixDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBcUIsRUFBRSxLQUFhLEVBQUUsR0FBRyxJQUFlO1FBQ2hGLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0NBQ0Y7QUE1REQsOENBNERDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tICd1dGlsJztcbmltcG9ydCB0eXBlIHsgQWN0aW9uTGVzc01lc3NhZ2UsIElvSGVscGVyIH0gZnJvbSAnLi9pby1oZWxwZXInO1xuaW1wb3J0IHR5cGUgeyBJb01lc3NhZ2VMZXZlbCB9IGZyb20gJy4uL2lvLW1lc3NhZ2UnO1xuXG4vKipcbiAqIEhlbHBlciBjbGFzcyB0byBlbWl0IHN0YW5kYXJkIGxvZyBtZXNzYWdlcyB0byBhbiBJb0hvc3RcbiAqXG4gKiBJdCB3cmFwcyBhbiBgSW9IZWxwZXJgLCBhbmQgYWRkcyBjb252ZW5pZW5jZSBtZXRob2RzIHRvIGVtaXQgZGVmYXVsdCBtZXNzYWdlc1xuICogZm9yIHRoZSB2YXJpb3VzIGxvZyBsZXZlbHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBJb0RlZmF1bHRNZXNzYWdlcyB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW9IZWxwZXI6IElvSGVscGVyO1xuXG4gIGNvbnN0cnVjdG9yKGlvSGVscGVyOiBJb0hlbHBlcikge1xuICAgIHRoaXMuaW9IZWxwZXIgPSBpb0hlbHBlcjtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBub3RpZnkobXNnOiBPbWl0PEFjdGlvbkxlc3NNZXNzYWdlPHVua25vd24+LCAnY29kZSc+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaW9IZWxwZXIubm90aWZ5KHtcbiAgICAgIC4uLm1zZyxcbiAgICAgIGNvZGU6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBlcnJvcihpbnB1dDogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5lbWl0TWVzc2FnZSgnZXJyb3InLCBpbnB1dCwgLi4uYXJncyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgd2FybihpbnB1dDogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5lbWl0TWVzc2FnZSgnd2FybicsIGlucHV0LCAuLi5hcmdzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB3YXJuaW5nKGlucHV0OiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmVtaXRNZXNzYWdlKCd3YXJuJywgaW5wdXQsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGluZm8oaW5wdXQ6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW1pdE1lc3NhZ2UoJ2luZm8nLCBpbnB1dCwgLi4uYXJncyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVidWcoaW5wdXQ6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW1pdE1lc3NhZ2UoJ2RlYnVnJywgaW5wdXQsIC4uLmFyZ3MpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHRyYWNlKGlucHV0OiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmVtaXRNZXNzYWdlKCd0cmFjZScsIGlucHV0LCAuLi5hcmdzKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZXN1bHQoaW5wdXQ6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZW1pdE1lc3NhZ2UoJ3Jlc3VsdCcsIGlucHV0LCAuLi5hcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlcyBhIGRlZmF1bHQgbWVzc2FnZSBvYmplY3QgZnJvbSBhIGxldmVsIGFuZCBhIG1lc3NhZ2VcbiAgICovXG4gIHB1YmxpYyBtc2cobGV2ZWw6IElvTWVzc2FnZUxldmVsLCBpbnB1dDogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiBBY3Rpb25MZXNzTWVzc2FnZTx1bmRlZmluZWQ+IHtcbiAgICAvLyBGb3JtYXQgbWVzc2FnZSBpZiBhcmdzIGFyZSBwcm92aWRlZFxuICAgIGNvbnN0IG1lc3NhZ2UgPSBhcmdzLmxlbmd0aCA+IDAgPyB1dGlsLmZvcm1hdChpbnB1dCwgLi4uYXJncykgOiBpbnB1dDtcblxuICAgIHJldHVybiB7XG4gICAgICB0aW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgbGV2ZWwsXG4gICAgICBtZXNzYWdlLFxuICAgICAgZGF0YTogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGVtaXRNZXNzYWdlKGxldmVsOiBJb01lc3NhZ2VMZXZlbCwgaW5wdXQ6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaW9IZWxwZXIubm90aWZ5KHRoaXMubXNnKGxldmVsLCBpbnB1dCwgLi4uYXJncykpO1xuICB9XG59XG4iXX0=
@@ -81,6 +81,10 @@ export interface IoRequestMaker<T, U> extends MessageInfo {
81
81
  * Create a message for this code, with or without payload.
82
82
  */
83
83
  req: [T] extends [AbsentData] ? (message: string) => ActionLessMessage<AbsentData> : [U] extends [boolean] ? (message: string, data: T) => ActionLessRequest<T, U> : (message: string, data: T, defaultResponse: U) => ActionLessRequest<T, U>;
84
+ /**
85
+ * Returns whether the given `IoMessage` instance matches this request definition
86
+ */
87
+ is(x: IoMessage<unknown>): x is IoMessage<T>;
84
88
  }
85
89
  /**
86
90
  * A request that is a simple yes/no question, with the expectation that 'yes' is the default.
@@ -48,6 +48,7 @@ function request(level, details) {
48
48
  ...details,
49
49
  level,
50
50
  req: maker,
51
+ is: (m) => m.code === details.code,
51
52
  };
52
53
  }
53
54
  /**
@@ -75,6 +76,7 @@ function question(details) {
75
76
  ...details,
76
77
  level,
77
78
  req: maker,
79
+ is: (m) => m.code === details.code,
78
80
  };
79
81
  }
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1tYWtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1lc3NhZ2UtbWFrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBeUpBLDRCQWdCQztBQW5IRDs7R0FFRztBQUNILFNBQVMsT0FBTyxDQUFpQixLQUFxQixFQUFFLE9BQWlCO0lBQ3ZFLE1BQU0sS0FBSyxHQUFHLENBQUMsSUFBWSxFQUFFLElBQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4QyxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUU7UUFDaEIsS0FBSztRQUNMLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtRQUNsQixPQUFPLEVBQUUsSUFBSTtRQUNiLElBQUk7S0FDb0IsQ0FBQSxDQUFDO0lBRTNCLE9BQU87UUFDTCxHQUFHLE9BQU87UUFDVixLQUFLO1FBQ0wsR0FBRyxFQUFFLEtBQVk7UUFDakIsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsSUFBSTtLQUN0RCxDQUFDO0FBQ0osQ0FBQztBQXlCTSxNQUFNLEtBQUssR0FBRyxDQUFpQixPQUFrQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUksT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQTdGLFFBQUEsS0FBSyxTQUF3RjtBQUNuRyxNQUFNLEtBQUssR0FBRyxDQUFpQixPQUFrQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUksT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQTdGLFFBQUEsS0FBSyxTQUF3RjtBQUNuRyxNQUFNLElBQUksR0FBRyxDQUFpQixPQUFrQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUksTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQTNGLFFBQUEsSUFBSSxRQUF1RjtBQUNqRyxNQUFNLElBQUksR0FBRyxDQUFpQixPQUFrQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUksTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQTNGLFFBQUEsSUFBSSxRQUF1RjtBQUNqRyxNQUFNLEtBQUssR0FBRyxDQUFpQixPQUFrQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUksT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQTdGLFFBQUEsS0FBSyxTQUF3RjtBQUNuRyxNQUFNLE1BQU0sR0FBRyxDQUFvQyxPQUEyQixFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUksUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQTNHLFFBQUEsTUFBTSxVQUFxRztBQW9CeEg7O0dBRUc7QUFDSCxTQUFTLE9BQU8sQ0FBcUMsS0FBcUIsRUFBRSxPQUF1QjtJQUNqRyxNQUFNLEtBQUssR0FBRyxDQUFDLElBQVksRUFBRSxJQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEMsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFO1FBQ2hCLEtBQUs7UUFDTCxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7UUFDbEIsT0FBTyxFQUFFLElBQUk7UUFDYixJQUFJO1FBQ0osZUFBZSxFQUFFLE9BQU8sQ0FBQyxlQUFlO0tBQ2IsQ0FBQSxDQUFDO0lBRTlCLE9BQU87UUFDTCxHQUFHLE9BQU87UUFDVixLQUFLO1FBQ0wsR0FBRyxFQUFFLEtBQVk7S0FDbEIsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNJLE1BQU0sT0FBTyxHQUFHLENBQW9DLE9BQWdFLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBYSxNQUFNLEVBQUU7SUFDMUosR0FBRyxPQUFPO0lBQ1YsZUFBZSxFQUFFLElBQUk7Q0FDdEIsQ0FBQyxDQUFDO0FBSFUsUUFBQSxPQUFPLFdBR2pCO0FBRUg7O0dBRUc7QUFDSCxTQUFnQixRQUFRLENBQUksT0FBaUI7SUFDM0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDO0lBQ3JCLE1BQU0sS0FBSyxHQUFHLENBQUMsSUFBWSxFQUFFLElBQU8sRUFBRSxlQUF1QixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtRQUNoQixLQUFLO1FBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1FBQ2xCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsSUFBSTtRQUNKLGVBQWU7S0FDaUIsQ0FBQSxDQUFDO0lBRW5DLE9BQU87UUFDTCxHQUFHLE9BQU87UUFDVixLQUFLO1FBQ0wsR0FBRyxFQUFFLEtBQVk7S0FDbEIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IElvTWVzc2FnZSwgSW9NZXNzYWdlQ29kZSwgSW9NZXNzYWdlTGV2ZWwgfSBmcm9tICcuLi9pby1tZXNzYWdlJztcbmltcG9ydCB0eXBlIHsgQWN0aW9uTGVzc01lc3NhZ2UsIEFjdGlvbkxlc3NSZXF1ZXN0IH0gZnJvbSAnLi9pby1oZWxwZXInO1xuXG4vKipcbiAqIEluZm9ybWF0aW9uIGZvciBlYWNoIElPIE1lc3NhZ2UgQ29kZS5cbiAqL1xuaW50ZXJmYWNlIENvZGVJbmZvIHtcbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIGNvZGUuXG4gICAqL1xuICByZWFkb25seSBjb2RlOiBJb01lc3NhZ2VDb2RlO1xuXG4gIC8qKlxuICAgKiBBIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBtZWFuaW5nIG9mIHRoaXMgSU8gTWVzc2FnZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBwYXlsb2FkIGludGVyZmFjZSwgaWYgYXBwbGljYWJsZS5cbiAgICogU29tZSBJbyBNZXNzYWdlcyBpbmNsdWRlIGEgcGF5bG9hZCwgd2l0aCBhIHNwZWNpZmljIGludGVyZmFjZS4gVGhlIG5hbWUgb2ZcbiAgICogdGhlIGludGVyZmFjZSBpcyBzcGVjaWZpZWQgaGVyZSBzbyB0aGF0IGl0IGNhbiBiZSBsaW5rZWQgd2l0aCB0aGUgbWVzc2FnZVxuICAgKiB3aGVuIGRvY3VtZW50YXRpb24gaXMgZ2VuZXJhdGVkLlxuICAgKlxuICAgKiBUaGUgaW50ZXJmYWNlIF9tdXN0XyBiZSBleHBvc2VkIGRpcmVjdGx5IGZyb20gdG9vbGtpdC1saWIsIHNvIHRoYXQgaXQgd2lsbFxuICAgKiBoYXZlIGEgZG9jdW1lbnRhdGlvbiBwYWdlIGdlbmVyYXRlZCAodGhhdCBjYW4gYmUgbGlua2VkIHRvKS5cbiAgICovXG4gIHJlYWRvbmx5IGludGVyZmFjZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBmb3IgZWFjaCBJTyBNZXNzYWdlXG4gKi9cbmludGVyZmFjZSBNZXNzYWdlSW5mbyBleHRlbmRzIENvZGVJbmZvIHtcbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIGxldmVsXG4gICAqL1xuICByZWFkb25seSBsZXZlbDogSW9NZXNzYWdlTGV2ZWw7XG59XG5cbi8qKlxuICogQW4gaW50ZXJmYWNlIHRoYXQgY2FuIHByb2R1Y2UgbWVzc2FnZXMgZm9yIGEgc3BlY2lmaWMgY29kZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJb01lc3NhZ2VNYWtlcjxUPiBleHRlbmRzIE1lc3NhZ2VJbmZvIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIG1lc3NhZ2UgZm9yIHRoaXMgY29kZSwgd2l0aCBvciB3aXRob3V0IHBheWxvYWQuXG4gICAqL1xuICBtc2c6IFtUXSBleHRlbmRzIFtBYnNlbnREYXRhXSA/IChtZXNzYWdlOiBzdHJpbmcpID0+IEFjdGlvbkxlc3NNZXNzYWdlPEFic2VudERhdGE+IDogKG1lc3NhZ2U6IHN0cmluZywgZGF0YTogVCkgPT4gQWN0aW9uTGVzc01lc3NhZ2U8VD47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciB0aGUgZ2l2ZW4gYElvTWVzc2FnZWAgaW5zdGFuY2UgbWF0Y2hlcyB0aGUgY3VycmVudCBtZXNzYWdlIGRlZmluaXRpb25cbiAgICovXG4gIGlzKHg6IElvTWVzc2FnZTx1bmtub3duPik6IHggaXMgSW9NZXNzYWdlPFQ+O1xufVxuXG4vKipcbiAqIFByb2R1Y2UgYW4gSW9NZXNzYWdlTWFrZXIgZm9yIHRoZSBwcm92aWRlZCBsZXZlbCBhbmQgY29kZSBpbmZvLlxuICovXG5mdW5jdGlvbiBtZXNzYWdlPFQgPSBBYnNlbnREYXRhPihsZXZlbDogSW9NZXNzYWdlTGV2ZWwsIGRldGFpbHM6IENvZGVJbmZvKTogSW9NZXNzYWdlTWFrZXI8VD4ge1xuICBjb25zdCBtYWtlciA9ICh0ZXh0OiBzdHJpbmcsIGRhdGE6IFQpID0+ICh7XG4gICAgdGltZTogbmV3IERhdGUoKSxcbiAgICBsZXZlbCxcbiAgICBjb2RlOiBkZXRhaWxzLmNvZGUsXG4gICAgbWVzc2FnZTogdGV4dCxcbiAgICBkYXRhLFxuICB9IGFzIEFjdGlvbkxlc3NNZXNzYWdlPFQ+KTtcblxuICByZXR1cm4ge1xuICAgIC4uLmRldGFpbHMsXG4gICAgbGV2ZWwsXG4gICAgbXNnOiBtYWtlciBhcyBhbnksXG4gICAgaXM6IChtKTogbSBpcyBJb01lc3NhZ2U8VD4gPT4gbS5jb2RlID09PSBkZXRhaWxzLmNvZGUsXG4gIH07XG59XG5cbi8qKlxuICogQSB0eXBlIHRoYXQgaXMgaW1wb3NzaWJsZSBmb3IgYSB1c2VyIHRvIHJlcGxpY2F0ZVxuICogVGhpcyBpcyB1c2VkIHRvIGVuc3VyZSB0aGF0IHJlc3VsdHMgYWx3YXlzIGhhdmUgYSBwcm9wZXIgdHlwZSBnZW5lcmljIGRlY2xhcmVkLlxuICovXG5kZWNsYXJlIGNvbnN0IHByaXZhdGVLZXk6IHVuaXF1ZSBzeW1ib2w7XG5leHBvcnQgdHlwZSBJbXBvc3NpYmxlVHlwZSA9IHtcbiAgcmVhZG9ubHkgW3ByaXZhdGVLZXldOiB0eXBlb2YgcHJpdmF0ZUtleTtcbn07XG5cbi8vIENyZWF0ZSBgSW9NZXNzYWdlTWFrZXJgcyBmb3IgYSBnaXZlbiBsZXZlbCBhbmQgdHlwZSBjaGVjayB0aGF0IGNhbGxzIHdpdGggcGF5bG9hZCBhcmUgdXNpbmcgdGhlIGNvcnJlY3QgaW50ZXJmYWNlXG50eXBlIENvZGVJbmZvTWF5YmVJbnRlcmZhY2U8VD4gPSBbVF0gZXh0ZW5kcyBbQWJzZW50RGF0YV0gPyBPbWl0PENvZGVJbmZvLCAnaW50ZXJmYWNlJz4gOiBSZXF1aXJlZDxDb2RlSW5mbz47XG5cbi8qKlxuICogVGhlIHR5cGUgd2UgdXNlIHRvIHJlcHJlc2VudCBhbiBhYnNlbnQgZGF0YSBmaWVsZFxuICpcbiAqIFRoaXMgaXMgaGVyZSB0byBtYWtlIGl0IGVhc3kgdG8gY2hhbmdlIGJldHdlZW4gYHVuZGVmaW5lZGAsIGB2b2lkYFxuICogYW5kIGBuZXZlcmAuXG4gKlxuICogTm90IGEgbG90IG9mIGRpZmZlcmVuY2UgYmV0d2VlbiBgdW5kZWZpbmVkYCBhbmQgYHZvaWRgLCBidXQgYHZvaWRgXG4gKiByZWFkcyBiZXR0ZXIuXG4gKi9cbnR5cGUgQWJzZW50RGF0YSA9IHZvaWQ7XG5cbmV4cG9ydCBjb25zdCB0cmFjZSA9IDxUID0gQWJzZW50RGF0YT4oZGV0YWlsczogQ29kZUluZm9NYXliZUludGVyZmFjZTxUPikgPT4gbWVzc2FnZTxUPigndHJhY2UnLCBkZXRhaWxzKTtcbmV4cG9ydCBjb25zdCBkZWJ1ZyA9IDxUID0gQWJzZW50RGF0YT4oZGV0YWlsczogQ29kZUluZm9NYXliZUludGVyZmFjZTxUPikgPT4gbWVzc2FnZTxUPignZGVidWcnLCBkZXRhaWxzKTtcbmV4cG9ydCBjb25zdCBpbmZvID0gPFQgPSBBYnNlbnREYXRhPihkZXRhaWxzOiBDb2RlSW5mb01heWJlSW50ZXJmYWNlPFQ+KSA9PiBtZXNzYWdlPFQ+KCdpbmZvJywgZGV0YWlscyk7XG5leHBvcnQgY29uc3Qgd2FybiA9IDxUID0gQWJzZW50RGF0YT4oZGV0YWlsczogQ29kZUluZm9NYXliZUludGVyZmFjZTxUPikgPT4gbWVzc2FnZTxUPignd2FybicsIGRldGFpbHMpO1xuZXhwb3J0IGNvbnN0IGVycm9yID0gPFQgPSBBYnNlbnREYXRhPihkZXRhaWxzOiBDb2RlSW5mb01heWJlSW50ZXJmYWNlPFQ+KSA9PiBtZXNzYWdlPFQ+KCdlcnJvcicsIGRldGFpbHMpO1xuZXhwb3J0IGNvbnN0IHJlc3VsdCA9IDxUIGV4dGVuZHMgb2JqZWN0ID0gSW1wb3NzaWJsZVR5cGU+KGRldGFpbHM6IFJlcXVpcmVkPENvZGVJbmZvPikgPT4gbWVzc2FnZTxUPigncmVzdWx0JywgZGV0YWlscyk7XG5cbmludGVyZmFjZSBSZXF1ZXN0SW5mbzxVPiBleHRlbmRzIENvZGVJbmZvIHtcbiAgcmVhZG9ubHkgZGVmYXVsdFJlc3BvbnNlOiBVO1xufVxuXG4vKipcbiAqIEFuIGludGVyZmFjZSB0aGF0IGNhbiBwcm9kdWNlIHJlcXVlc3RzIGZvciBhIHNwZWNpZmljIGNvZGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW9SZXF1ZXN0TWFrZXI8VCwgVT4gZXh0ZW5kcyBNZXNzYWdlSW5mbyB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBtZXNzYWdlIGZvciB0aGlzIGNvZGUsIHdpdGggb3Igd2l0aG91dCBwYXlsb2FkLlxuICAgKi9cbiAgcmVxOiBbVF0gZXh0ZW5kcyBbQWJzZW50RGF0YV1cbiAgICA/IChtZXNzYWdlOiBzdHJpbmcpID0+IEFjdGlvbkxlc3NNZXNzYWdlPEFic2VudERhdGE+XG4gICAgOiBbVV0gZXh0ZW5kcyBbYm9vbGVhbl1cbiAgICAgID8gKG1lc3NhZ2U6IHN0cmluZywgZGF0YTogVCkgPT4gQWN0aW9uTGVzc1JlcXVlc3Q8VCwgVT5cbiAgICAgIDogKG1lc3NhZ2U6IHN0cmluZywgZGF0YTogVCwgZGVmYXVsdFJlc3BvbnNlOiBVKSA9PiBBY3Rpb25MZXNzUmVxdWVzdDxULCBVPjtcbn1cblxuLyoqXG4gKiBQcm9kdWNlIGFuIElvUmVxdWVzdE1ha2VyIGZvciB0aGUgcHJvdmlkZWQgbGV2ZWwgYW5kIHJlcXVlc3QgaW5mby5cbiAqL1xuZnVuY3Rpb24gcmVxdWVzdDxUID0gQWJzZW50RGF0YSwgVSA9IEltcG9zc2libGVUeXBlPihsZXZlbDogSW9NZXNzYWdlTGV2ZWwsIGRldGFpbHM6IFJlcXVlc3RJbmZvPFU+KTogSW9SZXF1ZXN0TWFrZXI8VCwgVT4ge1xuICBjb25zdCBtYWtlciA9ICh0ZXh0OiBzdHJpbmcsIGRhdGE6IFQpID0+ICh7XG4gICAgdGltZTogbmV3IERhdGUoKSxcbiAgICBsZXZlbCxcbiAgICBjb2RlOiBkZXRhaWxzLmNvZGUsXG4gICAgbWVzc2FnZTogdGV4dCxcbiAgICBkYXRhLFxuICAgIGRlZmF1bHRSZXNwb25zZTogZGV0YWlscy5kZWZhdWx0UmVzcG9uc2UsXG4gIH0gYXMgQWN0aW9uTGVzc1JlcXVlc3Q8VCwgVT4pO1xuXG4gIHJldHVybiB7XG4gICAgLi4uZGV0YWlscyxcbiAgICBsZXZlbCxcbiAgICByZXE6IG1ha2VyIGFzIGFueSxcbiAgfTtcbn1cblxuLyoqXG4gKiBBIHJlcXVlc3QgdGhhdCBpcyBhIHNpbXBsZSB5ZXMvbm8gcXVlc3Rpb24sIHdpdGggdGhlIGV4cGVjdGF0aW9uIHRoYXQgJ3llcycgaXMgdGhlIGRlZmF1bHQuXG4gKi9cbmV4cG9ydCBjb25zdCBjb25maXJtID0gPFQgZXh0ZW5kcyBvYmplY3QgPSBJbXBvc3NpYmxlVHlwZT4oZGV0YWlsczogUmVxdWlyZWQ8T21pdDxSZXF1ZXN0SW5mbzxib29sZWFuPiwgJ2RlZmF1bHRSZXNwb25zZSc+PikgPT4gcmVxdWVzdDxULCBib29sZWFuPignaW5mbycsIHtcbiAgLi4uZGV0YWlscyxcbiAgZGVmYXVsdFJlc3BvbnNlOiB0cnVlLFxufSk7XG5cbi8qKlxuICogQW4gb3BlbiBlbmRlZCBxdWVzdGlvbiB3aXRoIGEgc3RyaW5nIGFuc3dlciwgdHlwaWNhbGx5IHByb3ZpZGVkIG9uLWRlbWFuZCBieSBhIHVzZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBxdWVzdGlvbjxUPihkZXRhaWxzOiBDb2RlSW5mbyk6IElvUmVxdWVzdE1ha2VyPFQsIHN0cmluZz4ge1xuICBjb25zdCBsZXZlbCA9ICdpbmZvJztcbiAgY29uc3QgbWFrZXIgPSAodGV4dDogc3RyaW5nLCBkYXRhOiBULCBkZWZhdWx0UmVzcG9uc2U6IHN0cmluZykgPT4gKHtcbiAgICB0aW1lOiBuZXcgRGF0ZSgpLFxuICAgIGxldmVsLFxuICAgIGNvZGU6IGRldGFpbHMuY29kZSxcbiAgICBtZXNzYWdlOiB0ZXh0LFxuICAgIGRhdGEsXG4gICAgZGVmYXVsdFJlc3BvbnNlLFxuICB9IGFzIEFjdGlvbkxlc3NSZXF1ZXN0PFQsIHN0cmluZz4pO1xuXG4gIHJldHVybiB7XG4gICAgLi4uZGV0YWlscyxcbiAgICBsZXZlbCxcbiAgICByZXE6IG1ha2VyIGFzIGFueSxcbiAgfTtcbn1cbiJdfQ==
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1tYWtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1lc3NhZ2UtbWFrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBK0pBLDRCQWlCQztBQTFIRDs7R0FFRztBQUNILFNBQVMsT0FBTyxDQUFpQixLQUFxQixFQUFFLE9BQWlCO0lBQ3ZFLE1BQU0sS0FBSyxHQUFHLENBQUMsSUFBWSxFQUFFLElBQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4QyxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUU7UUFDaEIsS0FBSztRQUNMLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtRQUNsQixPQUFPLEVBQUUsSUFBSTtRQUNiLElBQUk7S0FDb0IsQ0FBQSxDQUFDO0lBRTNCLE9BQU87UUFDTCxHQUFHLE9BQU87UUFDVixLQUFLO1FBQ0wsR0FBRyxFQUFFLEtBQVk7UUFDakIsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsSUFBSTtLQUN0RCxDQUFDO0FBQ0osQ0FBQztBQXlCTSxNQUFNLEtBQUssR0FBRyxDQUFpQixPQUFrQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUksT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQTdGLFFBQUEsS0FBSyxTQUF3RjtBQUNuRyxNQUFNLEtBQUssR0FBRyxDQUFpQixPQUFrQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUksT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQTdGLFFBQUEsS0FBSyxTQUF3RjtBQUNuRyxNQUFNLElBQUksR0FBRyxDQUFpQixPQUFrQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUksTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQTNGLFFBQUEsSUFBSSxRQUF1RjtBQUNqRyxNQUFNLElBQUksR0FBRyxDQUFpQixPQUFrQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUksTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQTNGLFFBQUEsSUFBSSxRQUF1RjtBQUNqRyxNQUFNLEtBQUssR0FBRyxDQUFpQixPQUFrQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUksT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQTdGLFFBQUEsS0FBSyxTQUF3RjtBQUNuRyxNQUFNLE1BQU0sR0FBRyxDQUFvQyxPQUEyQixFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUksUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQTNHLFFBQUEsTUFBTSxVQUFxRztBQXlCeEg7O0dBRUc7QUFDSCxTQUFTLE9BQU8sQ0FBcUMsS0FBcUIsRUFBRSxPQUF1QjtJQUNqRyxNQUFNLEtBQUssR0FBRyxDQUFDLElBQVksRUFBRSxJQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEMsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFO1FBQ2hCLEtBQUs7UUFDTCxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7UUFDbEIsT0FBTyxFQUFFLElBQUk7UUFDYixJQUFJO1FBQ0osZUFBZSxFQUFFLE9BQU8sQ0FBQyxlQUFlO0tBQ2IsQ0FBQSxDQUFDO0lBRTlCLE9BQU87UUFDTCxHQUFHLE9BQU87UUFDVixLQUFLO1FBQ0wsR0FBRyxFQUFFLEtBQVk7UUFDakIsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsSUFBSTtLQUN0RCxDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0ksTUFBTSxPQUFPLEdBQUcsQ0FBb0MsT0FBZ0UsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFhLE1BQU0sRUFBRTtJQUMxSixHQUFHLE9BQU87SUFDVixlQUFlLEVBQUUsSUFBSTtDQUN0QixDQUFDLENBQUM7QUFIVSxRQUFBLE9BQU8sV0FHakI7QUFFSDs7R0FFRztBQUNILFNBQWdCLFFBQVEsQ0FBSSxPQUFpQjtJQUMzQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUM7SUFDckIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFZLEVBQUUsSUFBTyxFQUFFLGVBQXVCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakUsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFO1FBQ2hCLEtBQUs7UUFDTCxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7UUFDbEIsT0FBTyxFQUFFLElBQUk7UUFDYixJQUFJO1FBQ0osZUFBZTtLQUNpQixDQUFBLENBQUM7SUFFbkMsT0FBTztRQUNMLEdBQUcsT0FBTztRQUNWLEtBQUs7UUFDTCxHQUFHLEVBQUUsS0FBWTtRQUNqQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxJQUFJO0tBQ3RELENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJb01lc3NhZ2UsIElvTWVzc2FnZUNvZGUsIElvTWVzc2FnZUxldmVsIH0gZnJvbSAnLi4vaW8tbWVzc2FnZSc7XG5pbXBvcnQgdHlwZSB7IEFjdGlvbkxlc3NNZXNzYWdlLCBBY3Rpb25MZXNzUmVxdWVzdCB9IGZyb20gJy4vaW8taGVscGVyJztcblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBmb3IgZWFjaCBJTyBNZXNzYWdlIENvZGUuXG4gKi9cbmludGVyZmFjZSBDb2RlSW5mbyB7XG4gIC8qKlxuICAgKiBUaGUgbWVzc2FnZSBjb2RlLlxuICAgKi9cbiAgcmVhZG9ubHkgY29kZTogSW9NZXNzYWdlQ29kZTtcblxuICAvKipcbiAgICogQSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgbWVhbmluZyBvZiB0aGlzIElPIE1lc3NhZ2UuXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcGF5bG9hZCBpbnRlcmZhY2UsIGlmIGFwcGxpY2FibGUuXG4gICAqIFNvbWUgSW8gTWVzc2FnZXMgaW5jbHVkZSBhIHBheWxvYWQsIHdpdGggYSBzcGVjaWZpYyBpbnRlcmZhY2UuIFRoZSBuYW1lIG9mXG4gICAqIHRoZSBpbnRlcmZhY2UgaXMgc3BlY2lmaWVkIGhlcmUgc28gdGhhdCBpdCBjYW4gYmUgbGlua2VkIHdpdGggdGhlIG1lc3NhZ2VcbiAgICogd2hlbiBkb2N1bWVudGF0aW9uIGlzIGdlbmVyYXRlZC5cbiAgICpcbiAgICogVGhlIGludGVyZmFjZSBfbXVzdF8gYmUgZXhwb3NlZCBkaXJlY3RseSBmcm9tIHRvb2xraXQtbGliLCBzbyB0aGF0IGl0IHdpbGxcbiAgICogaGF2ZSBhIGRvY3VtZW50YXRpb24gcGFnZSBnZW5lcmF0ZWQgKHRoYXQgY2FuIGJlIGxpbmtlZCB0bykuXG4gICAqL1xuICByZWFkb25seSBpbnRlcmZhY2U/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW5mb3JtYXRpb24gZm9yIGVhY2ggSU8gTWVzc2FnZVxuICovXG5pbnRlcmZhY2UgTWVzc2FnZUluZm8gZXh0ZW5kcyBDb2RlSW5mbyB7XG4gIC8qKlxuICAgKiBUaGUgbWVzc2FnZSBsZXZlbFxuICAgKi9cbiAgcmVhZG9ubHkgbGV2ZWw6IElvTWVzc2FnZUxldmVsO1xufVxuXG4vKipcbiAqIEFuIGludGVyZmFjZSB0aGF0IGNhbiBwcm9kdWNlIG1lc3NhZ2VzIGZvciBhIHNwZWNpZmljIGNvZGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW9NZXNzYWdlTWFrZXI8VD4gZXh0ZW5kcyBNZXNzYWdlSW5mbyB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBtZXNzYWdlIGZvciB0aGlzIGNvZGUsIHdpdGggb3Igd2l0aG91dCBwYXlsb2FkLlxuICAgKi9cbiAgbXNnOiBbVF0gZXh0ZW5kcyBbQWJzZW50RGF0YV0gPyAobWVzc2FnZTogc3RyaW5nKSA9PiBBY3Rpb25MZXNzTWVzc2FnZTxBYnNlbnREYXRhPiA6IChtZXNzYWdlOiBzdHJpbmcsIGRhdGE6IFQpID0+IEFjdGlvbkxlc3NNZXNzYWdlPFQ+O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIGBJb01lc3NhZ2VgIGluc3RhbmNlIG1hdGNoZXMgdGhlIGN1cnJlbnQgbWVzc2FnZSBkZWZpbml0aW9uXG4gICAqL1xuICBpcyh4OiBJb01lc3NhZ2U8dW5rbm93bj4pOiB4IGlzIElvTWVzc2FnZTxUPjtcbn1cblxuLyoqXG4gKiBQcm9kdWNlIGFuIElvTWVzc2FnZU1ha2VyIGZvciB0aGUgcHJvdmlkZWQgbGV2ZWwgYW5kIGNvZGUgaW5mby5cbiAqL1xuZnVuY3Rpb24gbWVzc2FnZTxUID0gQWJzZW50RGF0YT4obGV2ZWw6IElvTWVzc2FnZUxldmVsLCBkZXRhaWxzOiBDb2RlSW5mbyk6IElvTWVzc2FnZU1ha2VyPFQ+IHtcbiAgY29uc3QgbWFrZXIgPSAodGV4dDogc3RyaW5nLCBkYXRhOiBUKSA9PiAoe1xuICAgIHRpbWU6IG5ldyBEYXRlKCksXG4gICAgbGV2ZWwsXG4gICAgY29kZTogZGV0YWlscy5jb2RlLFxuICAgIG1lc3NhZ2U6IHRleHQsXG4gICAgZGF0YSxcbiAgfSBhcyBBY3Rpb25MZXNzTWVzc2FnZTxUPik7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5kZXRhaWxzLFxuICAgIGxldmVsLFxuICAgIG1zZzogbWFrZXIgYXMgYW55LFxuICAgIGlzOiAobSk6IG0gaXMgSW9NZXNzYWdlPFQ+ID0+IG0uY29kZSA9PT0gZGV0YWlscy5jb2RlLFxuICB9O1xufVxuXG4vKipcbiAqIEEgdHlwZSB0aGF0IGlzIGltcG9zc2libGUgZm9yIGEgdXNlciB0byByZXBsaWNhdGVcbiAqIFRoaXMgaXMgdXNlZCB0byBlbnN1cmUgdGhhdCByZXN1bHRzIGFsd2F5cyBoYXZlIGEgcHJvcGVyIHR5cGUgZ2VuZXJpYyBkZWNsYXJlZC5cbiAqL1xuZGVjbGFyZSBjb25zdCBwcml2YXRlS2V5OiB1bmlxdWUgc3ltYm9sO1xuZXhwb3J0IHR5cGUgSW1wb3NzaWJsZVR5cGUgPSB7XG4gIHJlYWRvbmx5IFtwcml2YXRlS2V5XTogdHlwZW9mIHByaXZhdGVLZXk7XG59O1xuXG4vLyBDcmVhdGUgYElvTWVzc2FnZU1ha2VyYHMgZm9yIGEgZ2l2ZW4gbGV2ZWwgYW5kIHR5cGUgY2hlY2sgdGhhdCBjYWxscyB3aXRoIHBheWxvYWQgYXJlIHVzaW5nIHRoZSBjb3JyZWN0IGludGVyZmFjZVxudHlwZSBDb2RlSW5mb01heWJlSW50ZXJmYWNlPFQ+ID0gW1RdIGV4dGVuZHMgW0Fic2VudERhdGFdID8gT21pdDxDb2RlSW5mbywgJ2ludGVyZmFjZSc+IDogUmVxdWlyZWQ8Q29kZUluZm8+O1xuXG4vKipcbiAqIFRoZSB0eXBlIHdlIHVzZSB0byByZXByZXNlbnQgYW4gYWJzZW50IGRhdGEgZmllbGRcbiAqXG4gKiBUaGlzIGlzIGhlcmUgdG8gbWFrZSBpdCBlYXN5IHRvIGNoYW5nZSBiZXR3ZWVuIGB1bmRlZmluZWRgLCBgdm9pZGBcbiAqIGFuZCBgbmV2ZXJgLlxuICpcbiAqIE5vdCBhIGxvdCBvZiBkaWZmZXJlbmNlIGJldHdlZW4gYHVuZGVmaW5lZGAgYW5kIGB2b2lkYCwgYnV0IGB2b2lkYFxuICogcmVhZHMgYmV0dGVyLlxuICovXG50eXBlIEFic2VudERhdGEgPSB2b2lkO1xuXG5leHBvcnQgY29uc3QgdHJhY2UgPSA8VCA9IEFic2VudERhdGE+KGRldGFpbHM6IENvZGVJbmZvTWF5YmVJbnRlcmZhY2U8VD4pID0+IG1lc3NhZ2U8VD4oJ3RyYWNlJywgZGV0YWlscyk7XG5leHBvcnQgY29uc3QgZGVidWcgPSA8VCA9IEFic2VudERhdGE+KGRldGFpbHM6IENvZGVJbmZvTWF5YmVJbnRlcmZhY2U8VD4pID0+IG1lc3NhZ2U8VD4oJ2RlYnVnJywgZGV0YWlscyk7XG5leHBvcnQgY29uc3QgaW5mbyA9IDxUID0gQWJzZW50RGF0YT4oZGV0YWlsczogQ29kZUluZm9NYXliZUludGVyZmFjZTxUPikgPT4gbWVzc2FnZTxUPignaW5mbycsIGRldGFpbHMpO1xuZXhwb3J0IGNvbnN0IHdhcm4gPSA8VCA9IEFic2VudERhdGE+KGRldGFpbHM6IENvZGVJbmZvTWF5YmVJbnRlcmZhY2U8VD4pID0+IG1lc3NhZ2U8VD4oJ3dhcm4nLCBkZXRhaWxzKTtcbmV4cG9ydCBjb25zdCBlcnJvciA9IDxUID0gQWJzZW50RGF0YT4oZGV0YWlsczogQ29kZUluZm9NYXliZUludGVyZmFjZTxUPikgPT4gbWVzc2FnZTxUPignZXJyb3InLCBkZXRhaWxzKTtcbmV4cG9ydCBjb25zdCByZXN1bHQgPSA8VCBleHRlbmRzIG9iamVjdCA9IEltcG9zc2libGVUeXBlPihkZXRhaWxzOiBSZXF1aXJlZDxDb2RlSW5mbz4pID0+IG1lc3NhZ2U8VD4oJ3Jlc3VsdCcsIGRldGFpbHMpO1xuXG5pbnRlcmZhY2UgUmVxdWVzdEluZm88VT4gZXh0ZW5kcyBDb2RlSW5mbyB7XG4gIHJlYWRvbmx5IGRlZmF1bHRSZXNwb25zZTogVTtcbn1cblxuLyoqXG4gKiBBbiBpbnRlcmZhY2UgdGhhdCBjYW4gcHJvZHVjZSByZXF1ZXN0cyBmb3IgYSBzcGVjaWZpYyBjb2RlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElvUmVxdWVzdE1ha2VyPFQsIFU+IGV4dGVuZHMgTWVzc2FnZUluZm8ge1xuICAvKipcbiAgICogQ3JlYXRlIGEgbWVzc2FnZSBmb3IgdGhpcyBjb2RlLCB3aXRoIG9yIHdpdGhvdXQgcGF5bG9hZC5cbiAgICovXG4gIHJlcTogW1RdIGV4dGVuZHMgW0Fic2VudERhdGFdXG4gICAgPyAobWVzc2FnZTogc3RyaW5nKSA9PiBBY3Rpb25MZXNzTWVzc2FnZTxBYnNlbnREYXRhPlxuICAgIDogW1VdIGV4dGVuZHMgW2Jvb2xlYW5dXG4gICAgICA/IChtZXNzYWdlOiBzdHJpbmcsIGRhdGE6IFQpID0+IEFjdGlvbkxlc3NSZXF1ZXN0PFQsIFU+XG4gICAgICA6IChtZXNzYWdlOiBzdHJpbmcsIGRhdGE6IFQsIGRlZmF1bHRSZXNwb25zZTogVSkgPT4gQWN0aW9uTGVzc1JlcXVlc3Q8VCwgVT47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciB0aGUgZ2l2ZW4gYElvTWVzc2FnZWAgaW5zdGFuY2UgbWF0Y2hlcyB0aGlzIHJlcXVlc3QgZGVmaW5pdGlvblxuICAgKi9cbiAgaXMoeDogSW9NZXNzYWdlPHVua25vd24+KTogeCBpcyBJb01lc3NhZ2U8VD47XG59XG5cbi8qKlxuICogUHJvZHVjZSBhbiBJb1JlcXVlc3RNYWtlciBmb3IgdGhlIHByb3ZpZGVkIGxldmVsIGFuZCByZXF1ZXN0IGluZm8uXG4gKi9cbmZ1bmN0aW9uIHJlcXVlc3Q8VCA9IEFic2VudERhdGEsIFUgPSBJbXBvc3NpYmxlVHlwZT4obGV2ZWw6IElvTWVzc2FnZUxldmVsLCBkZXRhaWxzOiBSZXF1ZXN0SW5mbzxVPik6IElvUmVxdWVzdE1ha2VyPFQsIFU+IHtcbiAgY29uc3QgbWFrZXIgPSAodGV4dDogc3RyaW5nLCBkYXRhOiBUKSA9PiAoe1xuICAgIHRpbWU6IG5ldyBEYXRlKCksXG4gICAgbGV2ZWwsXG4gICAgY29kZTogZGV0YWlscy5jb2RlLFxuICAgIG1lc3NhZ2U6IHRleHQsXG4gICAgZGF0YSxcbiAgICBkZWZhdWx0UmVzcG9uc2U6IGRldGFpbHMuZGVmYXVsdFJlc3BvbnNlLFxuICB9IGFzIEFjdGlvbkxlc3NSZXF1ZXN0PFQsIFU+KTtcblxuICByZXR1cm4ge1xuICAgIC4uLmRldGFpbHMsXG4gICAgbGV2ZWwsXG4gICAgcmVxOiBtYWtlciBhcyBhbnksXG4gICAgaXM6IChtKTogbSBpcyBJb01lc3NhZ2U8VD4gPT4gbS5jb2RlID09PSBkZXRhaWxzLmNvZGUsXG4gIH07XG59XG5cbi8qKlxuICogQSByZXF1ZXN0IHRoYXQgaXMgYSBzaW1wbGUgeWVzL25vIHF1ZXN0aW9uLCB3aXRoIHRoZSBleHBlY3RhdGlvbiB0aGF0ICd5ZXMnIGlzIHRoZSBkZWZhdWx0LlxuICovXG5leHBvcnQgY29uc3QgY29uZmlybSA9IDxUIGV4dGVuZHMgb2JqZWN0ID0gSW1wb3NzaWJsZVR5cGU+KGRldGFpbHM6IFJlcXVpcmVkPE9taXQ8UmVxdWVzdEluZm88Ym9vbGVhbj4sICdkZWZhdWx0UmVzcG9uc2UnPj4pID0+IHJlcXVlc3Q8VCwgYm9vbGVhbj4oJ2luZm8nLCB7XG4gIC4uLmRldGFpbHMsXG4gIGRlZmF1bHRSZXNwb25zZTogdHJ1ZSxcbn0pO1xuXG4vKipcbiAqIEFuIG9wZW4gZW5kZWQgcXVlc3Rpb24gd2l0aCBhIHN0cmluZyBhbnN3ZXIsIHR5cGljYWxseSBwcm92aWRlZCBvbi1kZW1hbmQgYnkgYSB1c2VyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcXVlc3Rpb248VD4oZGV0YWlsczogQ29kZUluZm8pOiBJb1JlcXVlc3RNYWtlcjxULCBzdHJpbmc+IHtcbiAgY29uc3QgbGV2ZWwgPSAnaW5mbyc7XG4gIGNvbnN0IG1ha2VyID0gKHRleHQ6IHN0cmluZywgZGF0YTogVCwgZGVmYXVsdFJlc3BvbnNlOiBzdHJpbmcpID0+ICh7XG4gICAgdGltZTogbmV3IERhdGUoKSxcbiAgICBsZXZlbCxcbiAgICBjb2RlOiBkZXRhaWxzLmNvZGUsXG4gICAgbWVzc2FnZTogdGV4dCxcbiAgICBkYXRhLFxuICAgIGRlZmF1bHRSZXNwb25zZSxcbiAgfSBhcyBBY3Rpb25MZXNzUmVxdWVzdDxULCBzdHJpbmc+KTtcblxuICByZXR1cm4ge1xuICAgIC4uLmRldGFpbHMsXG4gICAgbGV2ZWwsXG4gICAgcmVxOiBtYWtlciBhcyBhbnksXG4gICAgaXM6IChtKTogbSBpcyBJb01lc3NhZ2U8VD4gPT4gbS5jb2RlID09PSBkZXRhaWxzLmNvZGUsXG4gIH07XG59XG4iXX0=
@@ -32,6 +32,8 @@ export declare const IO: {
32
32
  CDK_TOOLKIT_W0100: make.IoMessageMaker<void>;
33
33
  CDK_TOOLKIT_I1000: make.IoMessageMaker<Operation>;
34
34
  CDK_TOOLKIT_I1001: make.IoMessageMaker<StackSelectionDetails>;
35
+ CDK_TOOLKIT_I1002: make.IoMessageMaker<void>;
36
+ CDK_TOOLKIT_I1003: make.IoMessageMaker<void>;
35
37
  CDK_TOOLKIT_I1901: make.IoMessageMaker<StackAndAssemblyData>;
36
38
  CDK_TOOLKIT_I1902: make.IoMessageMaker<AssemblyData>;
37
39
  CDK_TOOLKIT_I2901: make.IoMessageMaker<StackDetailsPayload>;